16265 lines
4.1 MiB
16265 lines
4.1 MiB
/**
|
||
* @license
|
||
* Cesium - https://github.com/CesiumGS/cesium
|
||
* Version 1.132
|
||
*
|
||
* Copyright 2011-2022 Cesium Contributors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*
|
||
* Columbus View (Pat. Pend.)
|
||
*
|
||
* Portions licensed separately.
|
||
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
||
*/
|
||
|
||
var VSe=Object.create;var u$=Object.defineProperty;var HSe=Object.getOwnPropertyDescriptor;var WSe=Object.getOwnPropertyNames;var jSe=Object.getPrototypeOf,YSe=Object.prototype.hasOwnProperty;var yR=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Rd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var qSe=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of WSe(t))!YSe.call(e,o)&&o!==n&&u$(e,o,{get:()=>t[o],enumerable:!(i=HSe(t,o))||i.enumerable});return e};var Es=(e,t,n)=>(n=e!=null?VSe(jSe(e)):{},qSe(t||!e||!e.__esModule?u$(n,"default",{value:e,enumerable:!0}):n,e));var CR=Rd((wvt,f$)=>{var BA=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};BA.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};BA.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};BA.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};BA.prototype.random_int31=function(){return this.random_int()>>>1};BA.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};BA.prototype.random=function(){return this.random_int()*(1/4294967296)};BA.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};BA.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};f$.exports=BA});var b$=Rd((H0,W0)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof H0=="object"&&H0&&!H0.nodeType&&H0,n=typeof W0=="object"&&W0&&!W0.nodeType&&W0,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,A=128,g="-",m=/^xn--/,_=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,C={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=s-a,I=Math.floor,b=String.fromCharCode,S;function B(Q){throw new RangeError(C[Q])}function v(Q,z){for(var F=Q.length,H=[];F--;)H[F]=z(Q[F]);return H}function P(Q,z){var F=Q.split("@"),H="";F.length>1&&(H=F[0]+"@",Q=F[1]),Q=Q.replace(y,".");var W=Q.split("."),Z=v(W,z).join(".");return H+Z}function N(Q){for(var z=[],F=0,H=Q.length,W,Z;F<H;)W=Q.charCodeAt(F++),W>=55296&&W<=56319&&F<H?(Z=Q.charCodeAt(F++),(Z&64512)==56320?z.push(((W&1023)<<10)+(Z&1023)+65536):(z.push(W),F--)):z.push(W);return z}function L(Q){return v(Q,function(z){var F="";return z>65535&&(z-=65536,F+=b(z>>>10&1023|55296),z=56320|z&1023),F+=b(z),F}).join("")}function p(Q){return Q-48<10?Q-22:Q-65<26?Q-65:Q-97<26?Q-97:s}function x(Q,z){return Q+22+75*(Q<26)-((z!=0)<<5)}function T(Q,z,F){var H=0;for(Q=F?I(Q/f):Q>>1,Q+=I(Q/z);Q>E*c>>1;H+=s)Q=I(Q/E);return I(H+(E+1)*Q/(Q+u))}function w(Q){var z=[],F=Q.length,H,W=0,Z=A,Y=h,$,X,he,ge,fe,ye,Ie,ve,Te;for($=Q.lastIndexOf(g),$<0&&($=0),X=0;X<$;++X)Q.charCodeAt(X)>=128&&B("not-basic"),z.push(Q.charCodeAt(X));for(he=$>0?$+1:0;he<F;){for(ge=W,fe=1,ye=s;he>=F&&B("invalid-input"),Ie=p(Q.charCodeAt(he++)),(Ie>=s||Ie>I((r-W)/fe))&&B("overflow"),W+=Ie*fe,ve=ye<=Y?a:ye>=Y+c?c:ye-Y,!(Ie<ve);ye+=s)Te=s-ve,fe>I(r/Te)&&B("overflow"),fe*=Te;H=z.length+1,Y=T(W-ge,H,ge==0),I(W/H)>r-Z&&B("overflow"),Z+=I(W/H),W%=H,z.splice(W++,0,Z)}return L(z)}function M(Q){var z,F,H,W,Z,Y,$,X,he,ge,fe,ye=[],Ie,ve,Te,ke;for(Q=N(Q),Ie=Q.length,z=A,F=0,Z=h,Y=0;Y<Ie;++Y)fe=Q[Y],fe<128&&ye.push(b(fe));for(H=W=ye.length,W&&ye.push(g);H<Ie;){for($=r,Y=0;Y<Ie;++Y)fe=Q[Y],fe>=z&&fe<$&&($=fe);for(ve=H+1,$-z>I((r-F)/ve)&&B("overflow"),F+=($-z)*ve,z=$,Y=0;Y<Ie;++Y)if(fe=Q[Y],fe<z&&++F>r&&B("overflow"),fe==z){for(X=F,he=s;ge=he<=Z?a:he>=Z+c?c:he-Z,!(X<ge);he+=s)ke=X-ge,Te=s-ge,ye.push(b(x(ge+ke%Te,0))),X=I(ke/Te);ye.push(b(x(X,0))),Z=T(F,ve,H==W),F=0,++H}++F,++z}return ye.join("")}function O(Q){return P(Q,function(z){return m.test(z)?w(z.slice(4).toLowerCase()):z})}function U(Q){return P(Q,function(z){return _.test(z)?"xn--"+M(z):z})}if(o={version:"1.3.2",ucs2:{decode:N,encode:L},decode:w,encode:M,toASCII:U,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(W0.exports==t)n.exports=o;else for(S in o)o.hasOwnProperty(S)&&(t[S]=o[S]);else e.punycode=o})(H0)});var S$=Rd((T$,DR)=>{/*!
|
||
* URI.js - Mutating URLs
|
||
* IPv6 Support
|
||
*
|
||
* Version: 1.19.11
|
||
*
|
||
* Author: Rodney Rehm
|
||
* Web: http://medialize.github.io/URI.js/
|
||
*
|
||
* Licensed under
|
||
* MIT License http://www.opensource.org/licenses/mit-license
|
||
*
|
||
*/(function(e,t){"use strict";typeof DR=="object"&&DR.exports?DR.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(T$,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var A=0;A<3&&(f[0]==="0"&&f.length>1);A++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,_=0,y=-1,C=!1;for(h=0;h<c;h++)C?s[h]==="0"?_+=1:(C=!1,_>m&&(g=y,m=_)):s[h]==="0"&&(C=!0,y=h,_=1);_>m&&(g=y,m=_),m>1&&s.splice(g,m,""),a=s.length;var E="";for(s[0]===""&&(E=":"),h=0;h<a&&(E+=s[h],h!==a-1);h++)E+=":";return s[a-1]===""&&(E+=":"),E}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var B$=Rd((w$,vR)=>{/*!
|
||
* URI.js - Mutating URLs
|
||
* Second Level Domain (SLD) Support
|
||
*
|
||
* Version: 1.19.11
|
||
*
|
||
* Author: Rodney Rehm
|
||
* Web: http://medialize.github.io/URI.js/
|
||
*
|
||
* Licensed under
|
||
* MIT License http://www.opensource.org/licenses/mit-license
|
||
*
|
||
*/(function(e,t){"use strict";typeof vR=="object"&&vR.exports?vR.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(w$,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var _u=Rd((D$,PR)=>{/*!
|
||
* URI.js - Mutating URLs
|
||
*
|
||
* Version: 1.19.11
|
||
*
|
||
* Author: Rodney Rehm
|
||
* Web: http://medialize.github.io/URI.js/
|
||
*
|
||
* Licensed under
|
||
* MIT License http://www.opensource.org/licenses/mit-license
|
||
*
|
||
*/(function(e,t){"use strict";typeof PR=="object"&&PR.exports?PR.exports=t(b$(),S$(),B$()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(D$,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(x,T){var w=arguments.length>=1,M=arguments.length>=2;if(!(this instanceof r))return w?M?new r(x,T):new r(x):new r;if(x===void 0){if(w)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?x=location.href+"":x=""}if(x===null&&w)throw new TypeError("null is not a valid argument for URI");return this.href(x),T!==void 0?this.absoluteTo(T):this}function s(x){return/^[0-9]+$/.test(x)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(x){return x.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(x){return x===void 0?"Undefined":String(Object.prototype.toString.call(x)).slice(8,-1)}function h(x){return f(x)==="Array"}function A(x,T){var w={},M,O;if(f(T)==="RegExp")w=null;else if(h(T))for(M=0,O=T.length;M<O;M++)w[T[M]]=!0;else w[T]=!0;for(M=0,O=x.length;M<O;M++){var U=w&&w[x[M]]!==void 0||!w&&T.test(x[M]);U&&(x.splice(M,1),O--,M--)}return x}function g(x,T){var w,M;if(h(T)){for(w=0,M=T.length;w<M;w++)if(!g(x,T[w]))return!1;return!0}var O=f(T);for(w=0,M=x.length;w<M;w++)if(O==="RegExp"){if(typeof x[w]=="string"&&x[w].match(T))return!0}else if(x[w]===T)return!0;return!1}function m(x,T){if(!h(x)||!h(T)||x.length!==T.length)return!1;x.sort(),T.sort();for(var w=0,M=x.length;w<M;w++)if(x[w]!==T[w])return!1;return!0}function _(x){var T=/^\/+|\/+$/g;return x.replace(T,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(x){if(!(!x||!x.nodeName)){var T=x.nodeName.toLowerCase();if(!(T==="input"&&x.type!=="image"))return r.domAttributes[T]}};function y(x){return escape(x)}function C(x){return encodeURIComponent(x).replace(/[!'()*]/g,y).replace(/\*/g,"%2A")}r.encode=C,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=C,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(x,T){var w=r.encode(x+"");return T===void 0&&(T=r.escapeQuerySpace),T?w.replace(/%20/g,"+"):w},r.decodeQuery=function(x,T){x+="",T===void 0&&(T=r.escapeQuerySpace);try{return r.decode(T?x.replace(/\+/g,"%20"):x)}catch{return x}};var E={encode:"encode",decode:"decode"},I,b=function(x,T){return function(w){try{return r[T](w+"").replace(r.characters[x][T].expression,function(M){return r.characters[x][T].map[M]})}catch{return w}}};for(I in E)r[I+"PathSegment"]=b("pathname",E[I]),r[I+"UrnPathSegment"]=b("urnpath",E[I]);var S=function(x,T,w){return function(M){var O;w?O=function(F){return r[T](r[w](F))}:O=r[T];for(var U=(M+"").split(x),Q=0,z=U.length;Q<z;Q++)U[Q]=O(U[Q]);return U.join(x)}};r.decodePath=S("/","decodePathSegment"),r.decodeUrnPath=S(":","decodeUrnPathSegment"),r.recodePath=S("/","encodePathSegment","decode"),r.recodeUrnPath=S(":","encodeUrnPathSegment","decode"),r.encodeReserved=b("reserved","encode"),r.parse=function(x,T){var w;return T||(T={preventInvalidHostname:r.preventInvalidHostname}),x=x.replace(r.leading_whitespace_expression,""),x=x.replace(r.ascii_tab_whitespace,""),w=x.indexOf("#"),w>-1&&(T.fragment=x.substring(w+1)||null,x=x.substring(0,w)),w=x.indexOf("?"),w>-1&&(T.query=x.substring(w+1)||null,x=x.substring(0,w)),x=x.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),x=x.replace(/^[/\\]{2,}/i,"//"),x.substring(0,2)==="//"?(T.protocol=null,x=x.substring(2),x=r.parseAuthority(x,T)):(w=x.indexOf(":"),w>-1&&(T.protocol=x.substring(0,w)||null,T.protocol&&!T.protocol.match(r.protocol_expression)?T.protocol=void 0:x.substring(w+1,w+3).replace(/\\/g,"/")==="//"?(x=x.substring(w+3),x=r.parseAuthority(x,T)):(x=x.substring(w+1),T.urn=!0))),T.path=x,T},r.parseHost=function(x,T){x||(x=""),x=x.replace(/\\/g,"/");var w=x.indexOf("/"),M,O;if(w===-1&&(w=x.length),x.charAt(0)==="[")M=x.indexOf("]"),T.hostname=x.substring(1,M)||null,T.port=x.substring(M+2,w)||null,T.port==="/"&&(T.port=null);else{var U=x.indexOf(":"),Q=x.indexOf("/"),z=x.indexOf(":",U+1);z!==-1&&(Q===-1||z<Q)?(T.hostname=x.substring(0,w)||null,T.port=null):(O=x.substring(0,w).split(":"),T.hostname=O[0]||null,T.port=O[1]||null)}return T.hostname&&x.substring(w).charAt(0)!=="/"&&(w++,x="/"+x),T.preventInvalidHostname&&r.ensureValidHostname(T.hostname,T.protocol),T.port&&r.ensureValidPort(T.port),x.substring(w)||"/"},r.parseAuthority=function(x,T){return x=r.parseUserinfo(x,T),r.parseHost(x,T)},r.parseUserinfo=function(x,T){var w=x,M=x.indexOf("\\");M!==-1&&(x=x.replace(/\\/g,"/"));var O=x.indexOf("/"),U=x.lastIndexOf("@",O>-1?O:x.length-1),Q;return U>-1&&(O===-1||U<O)?(Q=x.substring(0,U).split(":"),T.username=Q[0]?r.decode(Q[0]):null,Q.shift(),T.password=Q[0]?r.decode(Q.join(":")):null,x=w.substring(U+1)):(T.username=null,T.password=null),x},r.parseQuery=function(x,T){if(!x)return{};if(x=x.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!x)return{};for(var w={},M=x.split("&"),O=M.length,U,Q,z,F=0;F<O;F++)U=M[F].split("="),Q=r.decodeQuery(U.shift(),T),z=U.length?r.decodeQuery(U.join("="),T):null,Q!=="__proto__"&&(c.call(w,Q)?((typeof w[Q]=="string"||w[Q]===null)&&(w[Q]=[w[Q]]),w[Q].push(z)):w[Q]=z);return w},r.build=function(x){var T="",w=!1;return x.protocol&&(T+=x.protocol+":"),!x.urn&&(T||x.hostname)&&(T+="//",w=!0),T+=r.buildAuthority(x)||"",typeof x.path=="string"&&(x.path.charAt(0)!=="/"&&w&&(T+="/"),T+=x.path),typeof x.query=="string"&&x.query&&(T+="?"+x.query),typeof x.fragment=="string"&&x.fragment&&(T+="#"+x.fragment),T},r.buildHost=function(x){var T="";if(x.hostname)r.ip6_expression.test(x.hostname)?T+="["+x.hostname+"]":T+=x.hostname;else return"";return x.port&&(T+=":"+x.port),T},r.buildAuthority=function(x){return r.buildUserinfo(x)+r.buildHost(x)},r.buildUserinfo=function(x){var T="";return x.username&&(T+=r.encode(x.username)),x.password&&(T+=":"+r.encode(x.password)),T&&(T+="@"),T},r.buildQuery=function(x,T,w){var M="",O,U,Q,z;for(U in x)if(U!=="__proto__"&&c.call(x,U))if(h(x[U]))for(O={},Q=0,z=x[U].length;Q<z;Q++)x[U][Q]!==void 0&&O[x[U][Q]+""]===void 0&&(M+="&"+r.buildQueryParameter(U,x[U][Q],w),T!==!0&&(O[x[U][Q]+""]=!0));else x[U]!==void 0&&(M+="&"+r.buildQueryParameter(U,x[U],w));return M.substring(1)},r.buildQueryParameter=function(x,T,w){return r.encodeQuery(x,w)+(T!==null?"="+r.encodeQuery(T,w):"")},r.addQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.addQuery(x,M,T[M]);else if(typeof T=="string"){if(x[T]===void 0){x[T]=w;return}else typeof x[T]=="string"&&(x[T]=[x[T]]);h(w)||(w=[w]),x[T]=(x[T]||[]).concat(w)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.setQuery(x,M,T[M]);else if(typeof T=="string")x[T]=w===void 0?null:w;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(x,T,w){var M,O,U;if(h(T))for(M=0,O=T.length;M<O;M++)x[T[M]]=void 0;else if(f(T)==="RegExp")for(U in x)T.test(U)&&(x[U]=void 0);else if(typeof T=="object")for(U in T)c.call(T,U)&&r.removeQuery(x,U,T[U]);else if(typeof T=="string")w!==void 0?f(w)==="RegExp"?!h(x[T])&&w.test(x[T])?x[T]=void 0:x[T]=A(x[T],w):x[T]===String(w)&&(!h(w)||w.length===1)?x[T]=void 0:h(x[T])&&(x[T]=A(x[T],w)):x[T]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(x,T,w,M){switch(f(T)){case"String":break;case"RegExp":for(var O in x)if(c.call(x,O)&&T.test(O)&&(w===void 0||r.hasQuery(x,O,w)))return!0;return!1;case"Object":for(var U in T)if(c.call(T,U)&&!r.hasQuery(x,U,T[U]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(w)){case"Undefined":return T in x;case"Boolean":var Q=!!(h(x[T])?x[T].length:x[T]);return w===Q;case"Function":return!!w(x[T],T,x);case"Array":if(!h(x[T]))return!1;var z=M?g:m;return z(x[T],w);case"RegExp":return h(x[T])?M?g(x[T],w):!1:!!(x[T]&&x[T].match(w));case"Number":w=String(w);case"String":return h(x[T])?M?g(x[T],w):!1:x[T]===w;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var x=[],T=[],w=0,M=0;M<arguments.length;M++){var O=new r(arguments[M]);x.push(O);for(var U=O.segment(),Q=0;Q<U.length;Q++)typeof U[Q]=="string"&&T.push(U[Q]),U[Q]&&w++}if(!T.length||!w)return new r("");var z=new r("").segment(T);return(x[0].path()===""||x[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(x,T){var w=Math.min(x.length,T.length),M;for(M=0;M<w;M++)if(x.charAt(M)!==T.charAt(M)){M--;break}return M<1?x.charAt(0)===T.charAt(0)&&x.charAt(0)==="/"?"/":"":((x.charAt(M)!=="/"||T.charAt(M)!=="/")&&(M=x.substring(0,M).lastIndexOf("/")),x.substring(0,M+1))},r.withinString=function(x,T,w){w||(w={});var M=w.start||r.findUri.start,O=w.end||r.findUri.end,U=w.trim||r.findUri.trim,Q=w.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(M.lastIndex=0;;){var F=M.exec(x);if(!F)break;var H=F.index;if(w.ignoreHtml){var W=x.slice(Math.max(H-3,0),H);if(W&&z.test(W))continue}for(var Z=H+x.slice(H).search(O),Y=x.slice(H,Z),$=-1;;){var X=Q.exec(Y);if(!X)break;var he=X.index+X[0].length;$=Math.max($,he)}if($>-1?Y=Y.slice(0,$)+Y.slice($).replace(U,""):Y=Y.replace(U,""),!(Y.length<=F[0].length)&&!(w.ignore&&w.ignore.test(Y))){Z=H+Y.length;var ge=T(Y,H,Z,x);if(ge===void 0){M.lastIndex=Z;continue}ge=String(ge),x=x.slice(0,H)+ge+x.slice(Z),M.lastIndex=H+ge.length}}return M.lastIndex=0,x},r.ensureValidHostname=function(x,T){var w=!!x,M=!!T,O=!1;if(M&&(O=g(r.hostProtocols,T)),O&&!w)throw new TypeError("Hostname cannot be empty, if protocol is "+T);if(x&&x.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(x).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(x){if(x){var T=Number(x);if(!(s(T)&&T>0&&T<65536))throw new TypeError('Port "'+x+'" is not a valid port')}},r.noConflict=function(x){if(x){var T={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(T.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(T.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(T.SecondLevelDomains=i.SecondLevelDomains.noConflict()),T}else i.URI===this&&(i.URI=o);return this},a.build=function(x){return x===!0?this._deferred_build=!0:(x===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function B(x){return function(T,w){return T===void 0?this._parts[x]||"":(this._parts[x]=T||null,this.build(!w),this)}}function v(x,T){return function(w,M){return w===void 0?this._parts[x]||"":(w!==null&&(w=w+"",w.charAt(0)===T&&(w=w.substring(1))),this._parts[x]=w,this.build(!M),this)}}a.protocol=B("protocol"),a.username=B("username"),a.password=B("password"),a.hostname=B("hostname"),a.port=B("port"),a.query=v("query","?"),a.fragment=v("fragment","#"),a.search=function(x,T){var w=this.query(x,T);return typeof w=="string"&&w.length?"?"+w:w},a.hash=function(x,T){var w=this.fragment(x,T);return typeof w=="string"&&w.length?"#"+w:w},a.pathname=function(x,T){if(x===void 0||x===!0){var w=this._parts.path||(this._parts.hostname?"/":"");return x?(this._parts.urn?r.decodeUrnPath:r.decodePath)(w):w}else return this._parts.urn?this._parts.path=x?r.recodeUrnPath(x):"":this._parts.path=x?r.recodePath(x):"/",this.build(!T),this},a.path=a.pathname,a.href=function(x,T){var w;if(x===void 0)return this.toString();this._string="",this._parts=r._parts();var M=x instanceof r,O=typeof x=="object"&&(x.hostname||x.path||x.pathname);if(x.nodeName){var U=r.getDomAttribute(x);x=x[U]||"",O=!1}if(!M&&O&&x.pathname!==void 0&&(x=x.toString()),typeof x=="string"||x instanceof String)this._parts=r.parse(String(x),this._parts);else if(M||O){var Q=M?x._parts:x;for(w in Q)w!=="query"&&c.call(this._parts,w)&&(this._parts[w]=Q[w]);Q.query&&this.query(Q.query,!1)}else throw new TypeError("invalid input");return this.build(!T),this},a.is=function(x){var T=!1,w=!1,M=!1,O=!1,U=!1,Q=!1,z=!1,F=!this._parts.urn;switch(this._parts.hostname&&(F=!1,w=r.ip4_expression.test(this._parts.hostname),M=r.ip6_expression.test(this._parts.hostname),T=w||M,O=!T,U=O&&n&&n.has(this._parts.hostname),Q=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),x.toLowerCase()){case"relative":return F;case"absolute":return!F;case"domain":case"name":return O;case"sld":return U;case"ip":return T;case"ip4":case"ipv4":case"inet4":return w;case"ip6":case"ipv6":case"inet6":return M;case"idn":return Q;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var P=a.protocol,N=a.port,L=a.hostname;a.protocol=function(x,T){if(x&&(x=x.replace(/:(\/\/)?$/,""),!x.match(r.protocol_expression)))throw new TypeError('Protocol "'+x+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return P.call(this,x,T)},a.scheme=a.protocol,a.port=function(x,T){return this._parts.urn?x===void 0?"":this:(x!==void 0&&(x===0&&(x=null),x&&(x+="",x.charAt(0)===":"&&(x=x.substring(1)),r.ensureValidPort(x))),N.call(this,x,T))},a.hostname=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x!==void 0){var w={preventInvalidHostname:this._parts.preventInvalidHostname},M=r.parseHost(x,w);if(M!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');x=w.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(x,this._parts.protocol)}return L.call(this,x,T)},a.origin=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=this.protocol(),M=this.authority();return M?(w?w+"://":"")+this.authority():""}else{var O=r(x);return this.protocol(O.protocol()).authority(O.authority()).build(!T),this}},a.host=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var w=r.parseHost(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.authority=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var w=r.parseAuthority(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.userinfo=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=r.buildUserinfo(this._parts);return w&&w.substring(0,w.length-1)}else return x[x.length-1]!=="@"&&(x+="@"),r.parseUserinfo(x,this._parts),this.build(!T),this},a.resource=function(x,T){var w;return x===void 0?this.path()+this.search()+this.hash():(w=r.parse(x),this._parts.path=w.path,this._parts.query=w.query,this._parts.fragment=w.fragment,this.build(!T),this)},a.subdomain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,w)||""}else{var M=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,M),U=new RegExp("^"+u(O));if(x&&x.charAt(x.length-1)!=="."&&(x+="."),x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return x&&r.ensureValidHostname(x,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(U,x),this.build(!T),this}},a.domain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.match(/\./g);if(w&&w.length<2)return this._parts.hostname;var M=this._parts.hostname.length-this.tld(T).length-1;return M=this._parts.hostname.lastIndexOf(".",M-1)+1,this._parts.hostname.substring(M)||""}else{if(!x)throw new TypeError("cannot set domain empty");if(x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(x,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=x;else{var O=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,x)}return this.build(!T),this}},a.tld=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.lastIndexOf("."),M=this._parts.hostname.substring(w+1);return T!==!0&&n&&n.list[M.toLowerCase()]&&n.get(this._parts.hostname)||M}else{var O;if(x)if(x.match(/[^a-zA-Z0-9-]/))if(n&&n.is(x))O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x);else throw new TypeError('TLD "'+x+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x)}else throw new TypeError("cannot set TLD empty");return this.build(!T),this}},a.directory=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var w=this._parts.path.length-this.filename().length-1,M=this._parts.path.substring(0,w)||(this._parts.hostname?"/":"");return x?r.decodePath(M):M}else{var O=this._parts.path.length-this.filename().length,U=this._parts.path.substring(0,O),Q=new RegExp("^"+u(U));return this.is("relative")||(x||(x="/"),x.charAt(0)!=="/"&&(x="/"+x)),x&&x.charAt(x.length-1)!=="/"&&(x+="/"),x=r.recodePath(x),this._parts.path=this._parts.path.replace(Q,x),this.build(!T),this}},a.filename=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x!="string"){if(!this._parts.path||this._parts.path==="/")return"";var w=this._parts.path.lastIndexOf("/"),M=this._parts.path.substring(w+1);return x?r.decodePathSegment(M):M}else{var O=!1;x.charAt(0)==="/"&&(x=x.substring(1)),x.match(/\.?\//)&&(O=!0);var U=new RegExp(u(this.filename())+"$");return x=r.recodePath(x),this._parts.path=this._parts.path.replace(U,x),O?this.normalizePath(T):this.build(!T),this}},a.suffix=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path||this._parts.path==="/")return"";var w=this.filename(),M=w.lastIndexOf("."),O,U;return M===-1?"":(O=w.substring(M+1),U=/^[a-z0-9%]+$/i.test(O)?O:"",x?r.decodePathSegment(U):U)}else{x.charAt(0)==="."&&(x=x.substring(1));var Q=this.suffix(),z;if(Q)x?z=new RegExp(u(Q)+"$"):z=new RegExp(u("."+Q)+"$");else{if(!x)return this;this._parts.path+="."+r.recodePath(x)}return z&&(x=r.recodePath(x),this._parts.path=this._parts.path.replace(z,x)),this.build(!T),this}},a.segment=function(x,T,w){var M=this._parts.urn?":":"/",O=this.path(),U=O.substring(0,1)==="/",Q=O.split(M);if(x!==void 0&&typeof x!="number"&&(w=T,T=x,x=void 0),x!==void 0&&typeof x!="number")throw new Error('Bad segment "'+x+'", must be 0-based integer');if(U&&Q.shift(),x<0&&(x=Math.max(Q.length+x,0)),T===void 0)return x===void 0?Q:Q[x];if(x===null||Q[x]===void 0)if(h(T)){Q=[];for(var z=0,F=T.length;z<F;z++)!T[z].length&&(!Q.length||!Q[Q.length-1].length)||(Q.length&&!Q[Q.length-1].length&&Q.pop(),Q.push(_(T[z])))}else(T||typeof T=="string")&&(T=_(T),Q[Q.length-1]===""?Q[Q.length-1]=T:Q.push(T));else T?Q[x]=_(T):Q.splice(x,1);return U&&Q.unshift(""),this.path(Q.join(M),w)},a.segmentCoded=function(x,T,w){var M,O,U;if(typeof x!="number"&&(w=T,T=x,x=void 0),T===void 0){if(M=this.segment(x,T,w),!h(M))M=M!==void 0?r.decode(M):void 0;else for(O=0,U=M.length;O<U;O++)M[O]=r.decode(M[O]);return M}if(!h(T))T=typeof T=="string"||T instanceof String?r.encode(T):T;else for(O=0,U=T.length;O<U;O++)T[O]=r.encode(T[O]);return this.segment(x,T,w)};var p=a.query;return a.query=function(x,T){if(x===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="function"){var w=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),M=x.call(this,w);return this._parts.query=r.buildQuery(M||w,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this}else return x!==void 0&&typeof x!="string"?(this._parts.query=r.buildQuery(x,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this):p.call(this,x,T)},a.setQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="string"||x instanceof String)M[x]=T!==void 0?T:null;else if(typeof x=="object")for(var O in x)c.call(x,O)&&(M[O]=x[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.addQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(M,x,T===void 0?null:T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.removeQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(M,x,T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.hasQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(M,x,T,w)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(x){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!x)),this},a.normalizeHostname=function(x){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!x)),this},a.normalizePort=function(x){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!x)),this},a.normalizePath=function(x){var T=this._parts.path;if(!T)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!x),this;if(this._parts.path==="/")return this;T=r.recodePath(T);var w,M="",O,U;for(T.charAt(0)!=="/"&&(w=!0,T="/"+T),(T.slice(-3)==="/.."||T.slice(-2)==="/.")&&(T+="/"),T=T.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),w&&(M=T.substring(1).match(/^(\.\.\/)+/)||"",M&&(M=M[0]));O=T.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){T=T.substring(3);continue}U=T.substring(0,O).lastIndexOf("/"),U===-1&&(U=O),T=T.substring(0,U)+T.substring(O+3)}return w&&this.is("relative")&&(T=M+T.substring(1)),this._parts.path=T,this.build(!x),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(x){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!x)),this},a.normalizeFragment=function(x){return this._parts.fragment||(this._parts.fragment=null,this.build(!x)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var x=r.encode,T=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.unicode=function(){var x=r.encode,T=r.decode;r.encode=C,r.decode=unescape;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.readable=function(){var x=this.clone();x.username("").password("").normalize();var T="";if(x._parts.protocol&&(T+=x._parts.protocol+"://"),x._parts.hostname&&(x.is("punycode")&&e?(T+=e.toUnicode(x._parts.hostname),x._parts.port&&(T+=":"+x._parts.port)):T+=x.host()),x._parts.hostname&&x._parts.path&&x._parts.path.charAt(0)!=="/"&&(T+="/"),T+=x.path(!0),x._parts.query){for(var w="",M=0,O=x._parts.query.split("&"),U=O.length;M<U;M++){var Q=(O[M]||"").split("=");w+="&"+r.decodeQuery(Q[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),Q[1]!==void 0&&(w+="="+r.decodeQuery(Q[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}T+="?"+w.substring(1)}return T+=r.decodeQuery(x.hash(),!0),T},a.absoluteTo=function(x){var T=this.clone(),w=["protocol","username","password","hostname","port"],M,O,U;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x instanceof r||(x=new r(x)),T._parts.protocol||(T._parts.protocol=x._parts.protocol,this._parts.hostname))return T;for(O=0;U=w[O];O++)T._parts[U]=x._parts[U];return T._parts.path?(T._parts.path.substring(-2)===".."&&(T._parts.path+="/"),T.path().charAt(0)!=="/"&&(M=x.directory(),M=M||(x.path().indexOf("/")===0?"/":""),T._parts.path=(M?M+"/":"")+T._parts.path,T.normalizePath())):(T._parts.path=x._parts.path,T._parts.query||(T._parts.query=x._parts.query)),T.build(),T},a.relativeTo=function(x){var T=this.clone().normalize(),w,M,O,U,Q;if(T._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x=new r(x).normalize(),w=T._parts,M=x._parts,U=T.path(),Q=x.path(),U.charAt(0)!=="/")throw new Error("URI is already relative");if(Q.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(w.protocol===M.protocol&&(w.protocol=null),w.username!==M.username||w.password!==M.password||w.protocol!==null||w.username!==null||w.password!==null)return T.build();if(w.hostname===M.hostname&&w.port===M.port)w.hostname=null,w.port=null;else return T.build();if(U===Q)return w.path="",T.build();if(O=r.commonPath(U,Q),!O)return T.build();var z=M.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return w.path=z+w.path.substring(O.length)||"./",T.build()},a.equals=function(x){var T=this.clone(),w=new r(x),M={},O={},U={},Q,z,F;if(T.normalize(),w.normalize(),T.toString()===w.toString())return!0;if(Q=T.query(),z=w.query(),T.query(""),w.query(""),T.toString()!==w.toString()||Q.length!==z.length)return!1;M=r.parseQuery(Q,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(F in M)if(c.call(M,F)){if(h(M[F])){if(!m(M[F],O[F]))return!1}else if(M[F]!==O[F])return!1;U[F]=!0}for(F in O)if(c.call(O,F)&&!U[F])return!1;return!0},a.preventInvalidHostname=function(x){return this._parts.preventInvalidHostname=!!x,this},a.duplicateQueryParameters=function(x){return this._parts.duplicateQueryParameters=!!x,this},a.escapeQuerySpace=function(x){return this._parts.escapeQuerySpace=!!x,this},r})});var Zle=Rd((QMn,Jle)=>{"use strict";Jle.exports=FYe;var ZB=1e20;function FYe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,A,g,m,_;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(A=e,h=A.getContext("2d"),r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(A=e.canvas,h=e,r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,_=Math.floor(u.length/f);m<_;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var y=Array(r*s),C=Array(r*s),E=Array(a),I=Array(a),b=Array(a+1),S=Array(a);for(m=0,_=r*s;m<_;m++){var B=c[m];y[m]=B===1?0:B===0?ZB:Math.pow(Math.max(0,.5-B),2),C[m]=B===1?ZB:B===0?0:Math.pow(Math.max(0,B-.5),2)}Kle(y,r,s,E,I,S,b),Kle(C,r,s,E,I,S,b);var v=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,_=r*s;m<_;m++)v[m]=Math.min(Math.max(1-((y[m]-C[m])/i+n),0),1);return v}function Kle(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(Xle(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(Xle(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function Xle(e,t,n,i,o){n[0]=0,i[0]=-ZB,i[1]=+ZB;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+ZB}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var iue=Rd((t1n,rk)=>{function qYe(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,A=12,g=13,m=14,_=15,y=16,C=17,E=0,I=1,b=2,S=3,B=4;function v(p,x){return 55296<=p.charCodeAt(x)&&p.charCodeAt(x)<=56319&&56320<=p.charCodeAt(x+1)&&p.charCodeAt(x+1)<=57343}function P(p,x){x===void 0&&(x=0);var T=p.charCodeAt(x);if(55296<=T&&T<=56319&&x<p.length-1){var w=T,M=p.charCodeAt(x+1);return 56320<=M&&M<=57343?(w-55296)*1024+(M-56320)+65536:w}if(56320<=T&&T<=57343&&x>=1){var w=p.charCodeAt(x-1),M=T;return 55296<=w&&w<=56319?(w-55296)*1024+(M-56320)+65536:M}return T}function N(p,x,T){var w=[p].concat(x).concat([T]),M=w[w.length-2],O=T,U=w.lastIndexOf(m);if(U>1&&w.slice(1,U).every(function(F){return F==i})&&[i,g,C].indexOf(p)==-1)return b;var Q=w.lastIndexOf(o);if(Q>0&&w.slice(1,Q).every(function(F){return F==o})&&[A,o].indexOf(M)==-1)return w.filter(function(F){return F==o}).length%2==1?S:B;if(M==e&&O==t)return E;if(M==n||M==e||M==t)return O==m&&x.every(function(F){return F==i})?b:I;if(O==n||O==e||O==t)return I;if(M==s&&(O==s||O==a||O==u||O==f))return E;if((M==u||M==a)&&(O==a||O==c))return E;if((M==f||M==c)&&O==c)return E;if(O==i||O==_)return E;if(O==r)return E;if(M==A)return E;var z=w.indexOf(i)!=-1?w.lastIndexOf(i)-1:w.length-2;return[g,C].indexOf(w[z])!=-1&&w.slice(z+1,-1).every(function(F){return F==i})&&O==m||M==_&&[y,C].indexOf(O)!=-1?E:x.indexOf(o)!=-1?b:M==o&&O==o?E:I}this.nextBreak=function(p,x){if(x===void 0&&(x=0),x<0)return 0;if(x>=p.length-1)return p.length;for(var T=L(P(p,x)),w=[],M=x+1;M<p.length;M++)if(!v(p,M-1)){var O=L(P(p,M));if(N(T,w,O))return M;w.push(O)}return p.length},this.splitGraphemes=function(p){for(var x=[],T=0,w;(w=this.nextBreak(p,T))<p.length;)x.push(p.slice(T,w)),T=w;return T<p.length&&x.push(p.slice(T)),x},this.iterateGraphemes=function(p){var x=0,T={next:function(){var w,M;return(M=this.nextBreak(p,x))<p.length?(w=p.slice(x,M),x=M,{value:w,done:!1}):x<p.length?(w=p.slice(x),x=p.length,{value:w,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(T[Symbol.iterator]=function(){return T}),T},this.countGraphemes=function(p){for(var x=0,T=0,w;(w=this.nextBreak(p,T))<p.length;)T=w,x++;return T<p.length&&x++,x};function L(p){return 1536<=p&&p<=1541||p==1757||p==1807||p==2274||p==3406||p==69821||70082<=p&&p<=70083||p==72250||72326<=p&&p<=72329||p==73030?A:p==13?e:p==10?t:0<=p&&p<=9||11<=p&&p<=12||14<=p&&p<=31||127<=p&&p<=159||p==173||p==1564||p==6158||p==8203||8206<=p&&p<=8207||p==8232||p==8233||8234<=p&&p<=8238||8288<=p&&p<=8292||p==8293||8294<=p&&p<=8303||55296<=p&&p<=57343||p==65279||65520<=p&&p<=65528||65529<=p&&p<=65531||113824<=p&&p<=113827||119155<=p&&p<=119162||p==917504||p==917505||917506<=p&&p<=917535||917632<=p&&p<=917759||918e3<=p&&p<=921599?n:768<=p&&p<=879||1155<=p&&p<=1159||1160<=p&&p<=1161||1425<=p&&p<=1469||p==1471||1473<=p&&p<=1474||1476<=p&&p<=1477||p==1479||1552<=p&&p<=1562||1611<=p&&p<=1631||p==1648||1750<=p&&p<=1756||1759<=p&&p<=1764||1767<=p&&p<=1768||1770<=p&&p<=1773||p==1809||1840<=p&&p<=1866||1958<=p&&p<=1968||2027<=p&&p<=2035||2070<=p&&p<=2073||2075<=p&&p<=2083||2085<=p&&p<=2087||2089<=p&&p<=2093||2137<=p&&p<=2139||2260<=p&&p<=2273||2275<=p&&p<=2306||p==2362||p==2364||2369<=p&&p<=2376||p==2381||2385<=p&&p<=2391||2402<=p&&p<=2403||p==2433||p==2492||p==2494||2497<=p&&p<=2500||p==2509||p==2519||2530<=p&&p<=2531||2561<=p&&p<=2562||p==2620||2625<=p&&p<=2626||2631<=p&&p<=2632||2635<=p&&p<=2637||p==2641||2672<=p&&p<=2673||p==2677||2689<=p&&p<=2690||p==2748||2753<=p&&p<=2757||2759<=p&&p<=2760||p==2765||2786<=p&&p<=2787||2810<=p&&p<=2815||p==2817||p==2876||p==2878||p==2879||2881<=p&&p<=2884||p==2893||p==2902||p==2903||2914<=p&&p<=2915||p==2946||p==3006||p==3008||p==3021||p==3031||p==3072||3134<=p&&p<=3136||3142<=p&&p<=3144||3146<=p&&p<=3149||3157<=p&&p<=3158||3170<=p&&p<=3171||p==3201||p==3260||p==3263||p==3266||p==3270||3276<=p&&p<=3277||3285<=p&&p<=3286||3298<=p&&p<=3299||3328<=p&&p<=3329||3387<=p&&p<=3388||p==3390||3393<=p&&p<=3396||p==3405||p==3415||3426<=p&&p<=3427||p==3530||p==3535||3538<=p&&p<=3540||p==3542||p==3551||p==3633||3636<=p&&p<=3642||3655<=p&&p<=3662||p==3761||3764<=p&&p<=3769||3771<=p&&p<=3772||3784<=p&&p<=3789||3864<=p&&p<=3865||p==3893||p==3895||p==3897||3953<=p&&p<=3966||3968<=p&&p<=3972||3974<=p&&p<=3975||3981<=p&&p<=3991||3993<=p&&p<=4028||p==4038||4141<=p&&p<=4144||4146<=p&&p<=4151||4153<=p&&p<=4154||4157<=p&&p<=4158||4184<=p&&p<=4185||4190<=p&&p<=4192||4209<=p&&p<=4212||p==4226||4229<=p&&p<=4230||p==4237||p==4253||4957<=p&&p<=4959||5906<=p&&p<=5908||5938<=p&&p<=5940||5970<=p&&p<=5971||6002<=p&&p<=6003||6068<=p&&p<=6069||6071<=p&&p<=6077||p==6086||6089<=p&&p<=6099||p==6109||6155<=p&&p<=6157||6277<=p&&p<=6278||p==6313||6432<=p&&p<=6434||6439<=p&&p<=6440||p==6450||6457<=p&&p<=6459||6679<=p&&p<=6680||p==6683||p==6742||6744<=p&&p<=6750||p==6752||p==6754||6757<=p&&p<=6764||6771<=p&&p<=6780||p==6783||6832<=p&&p<=6845||p==6846||6912<=p&&p<=6915||p==6964||6966<=p&&p<=6970||p==6972||p==6978||7019<=p&&p<=7027||7040<=p&&p<=7041||7074<=p&&p<=7077||7080<=p&&p<=7081||7083<=p&&p<=7085||p==7142||7144<=p&&p<=7145||p==7149||7151<=p&&p<=7153||7212<=p&&p<=7219||7222<=p&&p<=7223||7376<=p&&p<=7378||7380<=p&&p<=7392||7394<=p&&p<=7400||p==7405||p==7412||7416<=p&&p<=7417||7616<=p&&p<=7673||7675<=p&&p<=7679||p==8204||8400<=p&&p<=8412||8413<=p&&p<=8416||p==8417||8418<=p&&p<=8420||8421<=p&&p<=8432||11503<=p&&p<=11505||p==11647||11744<=p&&p<=11775||12330<=p&&p<=12333||12334<=p&&p<=12335||12441<=p&&p<=12442||p==42607||42608<=p&&p<=42610||42612<=p&&p<=42621||42654<=p&&p<=42655||42736<=p&&p<=42737||p==43010||p==43014||p==43019||43045<=p&&p<=43046||43204<=p&&p<=43205||43232<=p&&p<=43249||43302<=p&&p<=43309||43335<=p&&p<=43345||43392<=p&&p<=43394||p==43443||43446<=p&&p<=43449||p==43452||p==43493||43561<=p&&p<=43566||43569<=p&&p<=43570||43573<=p&&p<=43574||p==43587||p==43596||p==43644||p==43696||43698<=p&&p<=43700||43703<=p&&p<=43704||43710<=p&&p<=43711||p==43713||43756<=p&&p<=43757||p==43766||p==44005||p==44008||p==44013||p==64286||65024<=p&&p<=65039||65056<=p&&p<=65071||65438<=p&&p<=65439||p==66045||p==66272||66422<=p&&p<=66426||68097<=p&&p<=68099||68101<=p&&p<=68102||68108<=p&&p<=68111||68152<=p&&p<=68154||p==68159||68325<=p&&p<=68326||p==69633||69688<=p&&p<=69702||69759<=p&&p<=69761||69811<=p&&p<=69814||69817<=p&&p<=69818||69888<=p&&p<=69890||69927<=p&&p<=69931||69933<=p&&p<=69940||p==70003||70016<=p&&p<=70017||70070<=p&&p<=70078||70090<=p&&p<=70092||70191<=p&&p<=70193||p==70196||70198<=p&&p<=70199||p==70206||p==70367||70371<=p&&p<=70378||70400<=p&&p<=70401||p==70460||p==70462||p==70464||p==70487||70502<=p&&p<=70508||70512<=p&&p<=70516||70712<=p&&p<=70719||70722<=p&&p<=70724||p==70726||p==70832||70835<=p&&p<=70840||p==70842||p==70845||70847<=p&&p<=70848||70850<=p&&p<=70851||p==71087||71090<=p&&p<=71093||71100<=p&&p<=71101||71103<=p&&p<=71104||71132<=p&&p<=71133||71219<=p&&p<=71226||p==71229||71231<=p&&p<=71232||p==71339||p==71341||71344<=p&&p<=71349||p==71351||71453<=p&&p<=71455||71458<=p&&p<=71461||71463<=p&&p<=71467||72193<=p&&p<=72198||72201<=p&&p<=72202||72243<=p&&p<=72248||72251<=p&&p<=72254||p==72263||72273<=p&&p<=72278||72281<=p&&p<=72283||72330<=p&&p<=72342||72344<=p&&p<=72345||72752<=p&&p<=72758||72760<=p&&p<=72765||p==72767||72850<=p&&p<=72871||72874<=p&&p<=72880||72882<=p&&p<=72883||72885<=p&&p<=72886||73009<=p&&p<=73014||p==73018||73020<=p&&p<=73021||73023<=p&&p<=73029||p==73031||92912<=p&&p<=92916||92976<=p&&p<=92982||94095<=p&&p<=94098||113821<=p&&p<=113822||p==119141||119143<=p&&p<=119145||119150<=p&&p<=119154||119163<=p&&p<=119170||119173<=p&&p<=119179||119210<=p&&p<=119213||119362<=p&&p<=119364||121344<=p&&p<=121398||121403<=p&&p<=121452||p==121461||p==121476||121499<=p&&p<=121503||121505<=p&&p<=121519||122880<=p&&p<=122886||122888<=p&&p<=122904||122907<=p&&p<=122913||122915<=p&&p<=122916||122918<=p&&p<=122922||125136<=p&&p<=125142||125252<=p&&p<=125258||917536<=p&&p<=917631||917760<=p&&p<=917999?i:127462<=p&&p<=127487?o:p==2307||p==2363||2366<=p&&p<=2368||2377<=p&&p<=2380||2382<=p&&p<=2383||2434<=p&&p<=2435||2495<=p&&p<=2496||2503<=p&&p<=2504||2507<=p&&p<=2508||p==2563||2622<=p&&p<=2624||p==2691||2750<=p&&p<=2752||p==2761||2763<=p&&p<=2764||2818<=p&&p<=2819||p==2880||2887<=p&&p<=2888||2891<=p&&p<=2892||p==3007||3009<=p&&p<=3010||3014<=p&&p<=3016||3018<=p&&p<=3020||3073<=p&&p<=3075||3137<=p&&p<=3140||3202<=p&&p<=3203||p==3262||3264<=p&&p<=3265||3267<=p&&p<=3268||3271<=p&&p<=3272||3274<=p&&p<=3275||3330<=p&&p<=3331||3391<=p&&p<=3392||3398<=p&&p<=3400||3402<=p&&p<=3404||3458<=p&&p<=3459||3536<=p&&p<=3537||3544<=p&&p<=3550||3570<=p&&p<=3571||p==3635||p==3763||3902<=p&&p<=3903||p==3967||p==4145||4155<=p&&p<=4156||4182<=p&&p<=4183||p==4228||p==6070||6078<=p&&p<=6085||6087<=p&&p<=6088||6435<=p&&p<=6438||6441<=p&&p<=6443||6448<=p&&p<=6449||6451<=p&&p<=6456||6681<=p&&p<=6682||p==6741||p==6743||6765<=p&&p<=6770||p==6916||p==6965||p==6971||6973<=p&&p<=6977||6979<=p&&p<=6980||p==7042||p==7073||7078<=p&&p<=7079||p==7082||p==7143||7146<=p&&p<=7148||p==7150||7154<=p&&p<=7155||7204<=p&&p<=7211||7220<=p&&p<=7221||p==7393||7410<=p&&p<=7411||p==7415||43043<=p&&p<=43044||p==43047||43136<=p&&p<=43137||43188<=p&&p<=43203||43346<=p&&p<=43347||p==43395||43444<=p&&p<=43445||43450<=p&&p<=43451||43453<=p&&p<=43456||43567<=p&&p<=43568||43571<=p&&p<=43572||p==43597||p==43755||43758<=p&&p<=43759||p==43765||44003<=p&&p<=44004||44006<=p&&p<=44007||44009<=p&&p<=44010||p==44012||p==69632||p==69634||p==69762||69808<=p&&p<=69810||69815<=p&&p<=69816||p==69932||p==70018||70067<=p&&p<=70069||70079<=p&&p<=70080||70188<=p&&p<=70190||70194<=p&&p<=70195||p==70197||70368<=p&&p<=70370||70402<=p&&p<=70403||p==70463||70465<=p&&p<=70468||70471<=p&&p<=70472||70475<=p&&p<=70477||70498<=p&&p<=70499||70709<=p&&p<=70711||70720<=p&&p<=70721||p==70725||70833<=p&&p<=70834||p==70841||70843<=p&&p<=70844||p==70846||p==70849||71088<=p&&p<=71089||71096<=p&&p<=71099||p==71102||71216<=p&&p<=71218||71227<=p&&p<=71228||p==71230||p==71340||71342<=p&&p<=71343||p==71350||71456<=p&&p<=71457||p==71462||72199<=p&&p<=72200||p==72249||72279<=p&&p<=72280||p==72343||p==72751||p==72766||p==72873||p==72881||p==72884||94033<=p&&p<=94078||p==119142||p==119149?r:4352<=p&&p<=4447||43360<=p&&p<=43388?s:4448<=p&&p<=4519||55216<=p&&p<=55238?a:4520<=p&&p<=4607||55243<=p&&p<=55291?c:p==44032||p==44060||p==44088||p==44116||p==44144||p==44172||p==44200||p==44228||p==44256||p==44284||p==44312||p==44340||p==44368||p==44396||p==44424||p==44452||p==44480||p==44508||p==44536||p==44564||p==44592||p==44620||p==44648||p==44676||p==44704||p==44732||p==44760||p==44788||p==44816||p==44844||p==44872||p==44900||p==44928||p==44956||p==44984||p==45012||p==45040||p==45068||p==45096||p==45124||p==45152||p==45180||p==45208||p==45236||p==45264||p==45292||p==45320||p==45348||p==45376||p==45404||p==45432||p==45460||p==45488||p==45516||p==45544||p==45572||p==45600||p==45628||p==45656||p==45684||p==45712||p==45740||p==45768||p==45796||p==45824||p==45852||p==45880||p==45908||p==45936||p==45964||p==45992||p==46020||p==46048||p==46076||p==46104||p==46132||p==46160||p==46188||p==46216||p==46244||p==46272||p==46300||p==46328||p==46356||p==46384||p==46412||p==46440||p==46468||p==46496||p==46524||p==46552||p==46580||p==46608||p==46636||p==46664||p==46692||p==46720||p==46748||p==46776||p==46804||p==46832||p==46860||p==46888||p==46916||p==46944||p==46972||p==47e3||p==47028||p==47056||p==47084||p==47112||p==47140||p==47168||p==47196||p==47224||p==47252||p==47280||p==47308||p==47336||p==47364||p==47392||p==47420||p==47448||p==47476||p==47504||p==47532||p==47560||p==47588||p==47616||p==47644||p==47672||p==47700||p==47728||p==47756||p==47784||p==47812||p==47840||p==47868||p==47896||p==47924||p==47952||p==47980||p==48008||p==48036||p==48064||p==48092||p==48120||p==48148||p==48176||p==48204||p==48232||p==48260||p==48288||p==48316||p==48344||p==48372||p==48400||p==48428||p==48456||p==48484||p==48512||p==48540||p==48568||p==48596||p==48624||p==48652||p==48680||p==48708||p==48736||p==48764||p==48792||p==48820||p==48848||p==48876||p==48904||p==48932||p==48960||p==48988||p==49016||p==49044||p==49072||p==49100||p==49128||p==49156||p==49184||p==49212||p==49240||p==49268||p==49296||p==49324||p==49352||p==49380||p==49408||p==49436||p==49464||p==49492||p==49520||p==49548||p==49576||p==49604||p==49632||p==49660||p==49688||p==49716||p==49744||p==49772||p==49800||p==49828||p==49856||p==49884||p==49912||p==49940||p==49968||p==49996||p==50024||p==50052||p==50080||p==50108||p==50136||p==50164||p==50192||p==50220||p==50248||p==50276||p==50304||p==50332||p==50360||p==50388||p==50416||p==50444||p==50472||p==50500||p==50528||p==50556||p==50584||p==50612||p==50640||p==50668||p==50696||p==50724||p==50752||p==50780||p==50808||p==50836||p==50864||p==50892||p==50920||p==50948||p==50976||p==51004||p==51032||p==51060||p==51088||p==51116||p==51144||p==51172||p==51200||p==51228||p==51256||p==51284||p==51312||p==51340||p==51368||p==51396||p==51424||p==51452||p==51480||p==51508||p==51536||p==51564||p==51592||p==51620||p==51648||p==51676||p==51704||p==51732||p==51760||p==51788||p==51816||p==51844||p==51872||p==51900||p==51928||p==51956||p==51984||p==52012||p==52040||p==52068||p==52096||p==52124||p==52152||p==52180||p==52208||p==52236||p==52264||p==52292||p==52320||p==52348||p==52376||p==52404||p==52432||p==52460||p==52488||p==52516||p==52544||p==52572||p==52600||p==52628||p==52656||p==52684||p==52712||p==52740||p==52768||p==52796||p==52824||p==52852||p==52880||p==52908||p==52936||p==52964||p==52992||p==53020||p==53048||p==53076||p==53104||p==53132||p==53160||p==53188||p==53216||p==53244||p==53272||p==53300||p==53328||p==53356||p==53384||p==53412||p==53440||p==53468||p==53496||p==53524||p==53552||p==53580||p==53608||p==53636||p==53664||p==53692||p==53720||p==53748||p==53776||p==53804||p==53832||p==53860||p==53888||p==53916||p==53944||p==53972||p==54e3||p==54028||p==54056||p==54084||p==54112||p==54140||p==54168||p==54196||p==54224||p==54252||p==54280||p==54308||p==54336||p==54364||p==54392||p==54420||p==54448||p==54476||p==54504||p==54532||p==54560||p==54588||p==54616||p==54644||p==54672||p==54700||p==54728||p==54756||p==54784||p==54812||p==54840||p==54868||p==54896||p==54924||p==54952||p==54980||p==55008||p==55036||p==55064||p==55092||p==55120||p==55148||p==55176?u:44033<=p&&p<=44059||44061<=p&&p<=44087||44089<=p&&p<=44115||44117<=p&&p<=44143||44145<=p&&p<=44171||44173<=p&&p<=44199||44201<=p&&p<=44227||44229<=p&&p<=44255||44257<=p&&p<=44283||44285<=p&&p<=44311||44313<=p&&p<=44339||44341<=p&&p<=44367||44369<=p&&p<=44395||44397<=p&&p<=44423||44425<=p&&p<=44451||44453<=p&&p<=44479||44481<=p&&p<=44507||44509<=p&&p<=44535||44537<=p&&p<=44563||44565<=p&&p<=44591||44593<=p&&p<=44619||44621<=p&&p<=44647||44649<=p&&p<=44675||44677<=p&&p<=44703||44705<=p&&p<=44731||44733<=p&&p<=44759||44761<=p&&p<=44787||44789<=p&&p<=44815||44817<=p&&p<=44843||44845<=p&&p<=44871||44873<=p&&p<=44899||44901<=p&&p<=44927||44929<=p&&p<=44955||44957<=p&&p<=44983||44985<=p&&p<=45011||45013<=p&&p<=45039||45041<=p&&p<=45067||45069<=p&&p<=45095||45097<=p&&p<=45123||45125<=p&&p<=45151||45153<=p&&p<=45179||45181<=p&&p<=45207||45209<=p&&p<=45235||45237<=p&&p<=45263||45265<=p&&p<=45291||45293<=p&&p<=45319||45321<=p&&p<=45347||45349<=p&&p<=45375||45377<=p&&p<=45403||45405<=p&&p<=45431||45433<=p&&p<=45459||45461<=p&&p<=45487||45489<=p&&p<=45515||45517<=p&&p<=45543||45545<=p&&p<=45571||45573<=p&&p<=45599||45601<=p&&p<=45627||45629<=p&&p<=45655||45657<=p&&p<=45683||45685<=p&&p<=45711||45713<=p&&p<=45739||45741<=p&&p<=45767||45769<=p&&p<=45795||45797<=p&&p<=45823||45825<=p&&p<=45851||45853<=p&&p<=45879||45881<=p&&p<=45907||45909<=p&&p<=45935||45937<=p&&p<=45963||45965<=p&&p<=45991||45993<=p&&p<=46019||46021<=p&&p<=46047||46049<=p&&p<=46075||46077<=p&&p<=46103||46105<=p&&p<=46131||46133<=p&&p<=46159||46161<=p&&p<=46187||46189<=p&&p<=46215||46217<=p&&p<=46243||46245<=p&&p<=46271||46273<=p&&p<=46299||46301<=p&&p<=46327||46329<=p&&p<=46355||46357<=p&&p<=46383||46385<=p&&p<=46411||46413<=p&&p<=46439||46441<=p&&p<=46467||46469<=p&&p<=46495||46497<=p&&p<=46523||46525<=p&&p<=46551||46553<=p&&p<=46579||46581<=p&&p<=46607||46609<=p&&p<=46635||46637<=p&&p<=46663||46665<=p&&p<=46691||46693<=p&&p<=46719||46721<=p&&p<=46747||46749<=p&&p<=46775||46777<=p&&p<=46803||46805<=p&&p<=46831||46833<=p&&p<=46859||46861<=p&&p<=46887||46889<=p&&p<=46915||46917<=p&&p<=46943||46945<=p&&p<=46971||46973<=p&&p<=46999||47001<=p&&p<=47027||47029<=p&&p<=47055||47057<=p&&p<=47083||47085<=p&&p<=47111||47113<=p&&p<=47139||47141<=p&&p<=47167||47169<=p&&p<=47195||47197<=p&&p<=47223||47225<=p&&p<=47251||47253<=p&&p<=47279||47281<=p&&p<=47307||47309<=p&&p<=47335||47337<=p&&p<=47363||47365<=p&&p<=47391||47393<=p&&p<=47419||47421<=p&&p<=47447||47449<=p&&p<=47475||47477<=p&&p<=47503||47505<=p&&p<=47531||47533<=p&&p<=47559||47561<=p&&p<=47587||47589<=p&&p<=47615||47617<=p&&p<=47643||47645<=p&&p<=47671||47673<=p&&p<=47699||47701<=p&&p<=47727||47729<=p&&p<=47755||47757<=p&&p<=47783||47785<=p&&p<=47811||47813<=p&&p<=47839||47841<=p&&p<=47867||47869<=p&&p<=47895||47897<=p&&p<=47923||47925<=p&&p<=47951||47953<=p&&p<=47979||47981<=p&&p<=48007||48009<=p&&p<=48035||48037<=p&&p<=48063||48065<=p&&p<=48091||48093<=p&&p<=48119||48121<=p&&p<=48147||48149<=p&&p<=48175||48177<=p&&p<=48203||48205<=p&&p<=48231||48233<=p&&p<=48259||48261<=p&&p<=48287||48289<=p&&p<=48315||48317<=p&&p<=48343||48345<=p&&p<=48371||48373<=p&&p<=48399||48401<=p&&p<=48427||48429<=p&&p<=48455||48457<=p&&p<=48483||48485<=p&&p<=48511||48513<=p&&p<=48539||48541<=p&&p<=48567||48569<=p&&p<=48595||48597<=p&&p<=48623||48625<=p&&p<=48651||48653<=p&&p<=48679||48681<=p&&p<=48707||48709<=p&&p<=48735||48737<=p&&p<=48763||48765<=p&&p<=48791||48793<=p&&p<=48819||48821<=p&&p<=48847||48849<=p&&p<=48875||48877<=p&&p<=48903||48905<=p&&p<=48931||48933<=p&&p<=48959||48961<=p&&p<=48987||48989<=p&&p<=49015||49017<=p&&p<=49043||49045<=p&&p<=49071||49073<=p&&p<=49099||49101<=p&&p<=49127||49129<=p&&p<=49155||49157<=p&&p<=49183||49185<=p&&p<=49211||49213<=p&&p<=49239||49241<=p&&p<=49267||49269<=p&&p<=49295||49297<=p&&p<=49323||49325<=p&&p<=49351||49353<=p&&p<=49379||49381<=p&&p<=49407||49409<=p&&p<=49435||49437<=p&&p<=49463||49465<=p&&p<=49491||49493<=p&&p<=49519||49521<=p&&p<=49547||49549<=p&&p<=49575||49577<=p&&p<=49603||49605<=p&&p<=49631||49633<=p&&p<=49659||49661<=p&&p<=49687||49689<=p&&p<=49715||49717<=p&&p<=49743||49745<=p&&p<=49771||49773<=p&&p<=49799||49801<=p&&p<=49827||49829<=p&&p<=49855||49857<=p&&p<=49883||49885<=p&&p<=49911||49913<=p&&p<=49939||49941<=p&&p<=49967||49969<=p&&p<=49995||49997<=p&&p<=50023||50025<=p&&p<=50051||50053<=p&&p<=50079||50081<=p&&p<=50107||50109<=p&&p<=50135||50137<=p&&p<=50163||50165<=p&&p<=50191||50193<=p&&p<=50219||50221<=p&&p<=50247||50249<=p&&p<=50275||50277<=p&&p<=50303||50305<=p&&p<=50331||50333<=p&&p<=50359||50361<=p&&p<=50387||50389<=p&&p<=50415||50417<=p&&p<=50443||50445<=p&&p<=50471||50473<=p&&p<=50499||50501<=p&&p<=50527||50529<=p&&p<=50555||50557<=p&&p<=50583||50585<=p&&p<=50611||50613<=p&&p<=50639||50641<=p&&p<=50667||50669<=p&&p<=50695||50697<=p&&p<=50723||50725<=p&&p<=50751||50753<=p&&p<=50779||50781<=p&&p<=50807||50809<=p&&p<=50835||50837<=p&&p<=50863||50865<=p&&p<=50891||50893<=p&&p<=50919||50921<=p&&p<=50947||50949<=p&&p<=50975||50977<=p&&p<=51003||51005<=p&&p<=51031||51033<=p&&p<=51059||51061<=p&&p<=51087||51089<=p&&p<=51115||51117<=p&&p<=51143||51145<=p&&p<=51171||51173<=p&&p<=51199||51201<=p&&p<=51227||51229<=p&&p<=51255||51257<=p&&p<=51283||51285<=p&&p<=51311||51313<=p&&p<=51339||51341<=p&&p<=51367||51369<=p&&p<=51395||51397<=p&&p<=51423||51425<=p&&p<=51451||51453<=p&&p<=51479||51481<=p&&p<=51507||51509<=p&&p<=51535||51537<=p&&p<=51563||51565<=p&&p<=51591||51593<=p&&p<=51619||51621<=p&&p<=51647||51649<=p&&p<=51675||51677<=p&&p<=51703||51705<=p&&p<=51731||51733<=p&&p<=51759||51761<=p&&p<=51787||51789<=p&&p<=51815||51817<=p&&p<=51843||51845<=p&&p<=51871||51873<=p&&p<=51899||51901<=p&&p<=51927||51929<=p&&p<=51955||51957<=p&&p<=51983||51985<=p&&p<=52011||52013<=p&&p<=52039||52041<=p&&p<=52067||52069<=p&&p<=52095||52097<=p&&p<=52123||52125<=p&&p<=52151||52153<=p&&p<=52179||52181<=p&&p<=52207||52209<=p&&p<=52235||52237<=p&&p<=52263||52265<=p&&p<=52291||52293<=p&&p<=52319||52321<=p&&p<=52347||52349<=p&&p<=52375||52377<=p&&p<=52403||52405<=p&&p<=52431||52433<=p&&p<=52459||52461<=p&&p<=52487||52489<=p&&p<=52515||52517<=p&&p<=52543||52545<=p&&p<=52571||52573<=p&&p<=52599||52601<=p&&p<=52627||52629<=p&&p<=52655||52657<=p&&p<=52683||52685<=p&&p<=52711||52713<=p&&p<=52739||52741<=p&&p<=52767||52769<=p&&p<=52795||52797<=p&&p<=52823||52825<=p&&p<=52851||52853<=p&&p<=52879||52881<=p&&p<=52907||52909<=p&&p<=52935||52937<=p&&p<=52963||52965<=p&&p<=52991||52993<=p&&p<=53019||53021<=p&&p<=53047||53049<=p&&p<=53075||53077<=p&&p<=53103||53105<=p&&p<=53131||53133<=p&&p<=53159||53161<=p&&p<=53187||53189<=p&&p<=53215||53217<=p&&p<=53243||53245<=p&&p<=53271||53273<=p&&p<=53299||53301<=p&&p<=53327||53329<=p&&p<=53355||53357<=p&&p<=53383||53385<=p&&p<=53411||53413<=p&&p<=53439||53441<=p&&p<=53467||53469<=p&&p<=53495||53497<=p&&p<=53523||53525<=p&&p<=53551||53553<=p&&p<=53579||53581<=p&&p<=53607||53609<=p&&p<=53635||53637<=p&&p<=53663||53665<=p&&p<=53691||53693<=p&&p<=53719||53721<=p&&p<=53747||53749<=p&&p<=53775||53777<=p&&p<=53803||53805<=p&&p<=53831||53833<=p&&p<=53859||53861<=p&&p<=53887||53889<=p&&p<=53915||53917<=p&&p<=53943||53945<=p&&p<=53971||53973<=p&&p<=53999||54001<=p&&p<=54027||54029<=p&&p<=54055||54057<=p&&p<=54083||54085<=p&&p<=54111||54113<=p&&p<=54139||54141<=p&&p<=54167||54169<=p&&p<=54195||54197<=p&&p<=54223||54225<=p&&p<=54251||54253<=p&&p<=54279||54281<=p&&p<=54307||54309<=p&&p<=54335||54337<=p&&p<=54363||54365<=p&&p<=54391||54393<=p&&p<=54419||54421<=p&&p<=54447||54449<=p&&p<=54475||54477<=p&&p<=54503||54505<=p&&p<=54531||54533<=p&&p<=54559||54561<=p&&p<=54587||54589<=p&&p<=54615||54617<=p&&p<=54643||54645<=p&&p<=54671||54673<=p&&p<=54699||54701<=p&&p<=54727||54729<=p&&p<=54755||54757<=p&&p<=54783||54785<=p&&p<=54811||54813<=p&&p<=54839||54841<=p&&p<=54867||54869<=p&&p<=54895||54897<=p&&p<=54923||54925<=p&&p<=54951||54953<=p&&p<=54979||54981<=p&&p<=55007||55009<=p&&p<=55035||55037<=p&&p<=55063||55065<=p&&p<=55091||55093<=p&&p<=55119||55121<=p&&p<=55147||55149<=p&&p<=55175||55177<=p&&p<=55203?f:p==9757||p==9977||9994<=p&&p<=9997||p==127877||127938<=p&&p<=127940||p==127943||127946<=p&&p<=127948||128066<=p&&p<=128067||128070<=p&&p<=128080||p==128110||128112<=p&&p<=128120||p==128124||128129<=p&&p<=128131||128133<=p&&p<=128135||p==128170||128372<=p&&p<=128373||p==128378||p==128400||128405<=p&&p<=128406||128581<=p&&p<=128583||128587<=p&&p<=128591||p==128675||128692<=p&&p<=128694||p==128704||p==128716||129304<=p&&p<=129308||129310<=p&&p<=129311||p==129318||129328<=p&&p<=129337||129341<=p&&p<=129342||129489<=p&&p<=129501?g:127995<=p&&p<=127999?m:p==8205?_:p==9792||p==9794||9877<=p&&p<=9878||p==9992||p==10084||p==127752||p==127806||p==127859||p==127891||p==127908||p==127912||p==127979||p==127981||p==128139||128187<=p&&p<=128188||p==128295||p==128300||p==128488||p==128640||p==128658?y:128102<=p&&p<=128105?C:h}return this}typeof rk<"u"&&rk.exports&&(rk.exports=qYe)});var hZ=Rd((exports,module)=>{/*!
|
||
* protobuf.js v7.5.3 (c) 2016, daniel wirtz
|
||
* compiled wed, 28 may 2025 22:23:47 utc
|
||
* licensed under the bsd-3-clause license
|
||
* see: https://github.com/dcodeio/protobuf.js for details
|
||
*/(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,A){s[a]=function(m){if(u)if(u=!1,m)A(m);else{for(var _=new Array(arguments.length-1),y=0;y<_.length;)_[y++]=arguments[y];h.apply(null,_)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,A(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var A=null,g=[],m=0,_=0,y;f<h;){var C=u[f++];switch(_){case 0:g[m++]=o[C>>2],y=(C&3)<<4,_=1;break;case 1:g[m++]=o[y|C>>4],y=(C&15)<<2,_=2;break;case 2:g[m++]=o[y|C>>6],g[m++]=o[C&63],_=0;break}m>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,g)),m=0)}return _&&(g[m++]=o[y],g[m++]=61,_===1&&(g[m++]=61)),A?(m&&A.push(String.fromCharCode.apply(String,g.slice(0,m))),A.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var A=h,g=0,m,_=0;_<u.length;){var y=u.charCodeAt(_++);if(y===61&&g>1)break;if((y=r[y])===undefined)throw Error(a);switch(g){case 0:m=y,g=1;break;case 1:f[h++]=m<<2|(y&48)>>4,m=y,g=2;break;case 2:f[h++]=(m&15)<<4|(y&60)>>2,m=y,g=3;break;case 3:f[h++]=(m&3)<<6|y,g=0;break}}if(g===1)throw Error(a);return h-A},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3]}function g(y,C,E){u[0]=y,C[E]=f[3],C[E+1]=f[2],C[E+2]=f[1],C[E+3]=f[0]}c.writeFloatLE=h?A:g,c.writeFloatBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],u[0]}function _(y,C){return f[3]=y[C],f[2]=y[C+1],f[1]=y[C+2],f[0]=y[C+3],u[0]}c.readFloatLE=h?m:_,c.readFloatBE=h?_:m}():function(){function u(h,A,g,m){var _=A<0?1:0;if(_&&(A=-A),A===0)h(1/A>0?0:2147483648,g,m);else if(isNaN(A))h(2143289344,g,m);else if(A>34028234663852886e22)h((_<<31|2139095040)>>>0,g,m);else if(A<11754943508222875e-54)h((_<<31|Math.round(A/1401298464324817e-60))>>>0,g,m);else{var y=Math.floor(Math.log(A)/Math.LN2),C=Math.round(A*Math.pow(2,-y)*8388608)&8388607;h((_<<31|y+127<<23|C)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,A,g){var m=h(A,g),_=(m>>31)*2+1,y=m>>>23&255,C=m&8388607;return y===255?C?NaN:_*(1/0):y===0?_*1401298464324817e-60*C:_*Math.pow(2,y-150)*(C+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3],C[E+4]=f[4],C[E+5]=f[5],C[E+6]=f[6],C[E+7]=f[7]}function g(y,C,E){u[0]=y,C[E]=f[7],C[E+1]=f[6],C[E+2]=f[5],C[E+3]=f[4],C[E+4]=f[3],C[E+5]=f[2],C[E+6]=f[1],C[E+7]=f[0]}c.writeDoubleLE=h?A:g,c.writeDoubleBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],f[4]=y[C+4],f[5]=y[C+5],f[6]=y[C+6],f[7]=y[C+7],u[0]}function _(y,C){return f[7]=y[C],f[6]=y[C+1],f[5]=y[C+2],f[4]=y[C+3],f[3]=y[C+4],f[2]=y[C+5],f[1]=y[C+6],f[0]=y[C+7],u[0]}c.readDoubleLE=h?m:_,c.readDoubleBE=h?_:m}():function(){function u(h,A,g,m,_,y){var C=m<0?1:0;if(C&&(m=-m),m===0)h(0,_,y+A),h(1/m>0?0:2147483648,_,y+g);else if(isNaN(m))h(0,_,y+A),h(2146959360,_,y+g);else if(m>17976931348623157e292)h(0,_,y+A),h((C<<31|2146435072)>>>0,_,y+g);else{var E;if(m<22250738585072014e-324)E=m/5e-324,h(E>>>0,_,y+A),h((C<<31|E/4294967296)>>>0,_,y+g);else{var I=Math.floor(Math.log(m)/Math.LN2);I===1024&&(I=1023),E=m*Math.pow(2,-I),h(E*4503599627370496>>>0,_,y+A),h((C<<31|I+1023<<20|E*1048576&1048575)>>>0,_,y+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,A,g,m,_){var y=h(m,_+A),C=h(m,_+g),E=(C>>31)*2+1,I=C>>>20&2047,b=4294967296*(C&1048575)+y;return I===2047?b?NaN:E*(1/0):I===0?E*5e-324*b:E*Math.pow(2,I-1075)*(b+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(A){if(A<1||A>c)return o(A);f+A>a&&(u=o(a),f=0);var g=r.call(u,f,f+=A);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,A;s<a;)A=r[s++],A<128?f[h++]=A:A>191&&A<224?f[h++]=(A&31)<<6|r[s++]&63:A>239&&A<365?(A=((A&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(A>>10),f[h++]=56320+(A&1023)):f[h++]=(A&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,_){return RangeError("index out of range: "+m.pos+" + "+(_||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(_){if(_ instanceof Uint8Array||Array.isArray(_))return new c(_);throw Error("illegal buffer")}:function(_){if(Array.isArray(_))return new c(_);throw Error("illegal buffer")},f=function(){return i.Buffer?function(y){return(c.create=function(E){return i.Buffer.isBuffer(E)?new o(E):u(E)})(y)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var _=4294967295;return function(){if(_=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(_=(_|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return _;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return _}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var _=this.uint32();return _>>>1^-(_&1)|0};function h(){var m=new r(0,0),_=0;if(this.len-this.pos>4){for(;_<4;++_)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;_=0}else{for(;_<3;++_){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<_*7)>>>0,m}if(this.len-this.pos>4){for(;_<5;++_)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;_<5;++_){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function A(m,_){return(m[_-4]|m[_-3]<<8|m[_-2]<<16|m[_-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(A(this.buf,this.pos+=4),A(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var _=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,_},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var _=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,_},c.prototype.bytes=function(){var _=this.uint32(),y=this.pos,C=this.pos+_;if(C>this.len)throw a(this,_);if(this.pos+=_,Array.isArray(this.buf))return this.buf.slice(y,C);if(y===C){var E=i.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,y,C)},c.prototype.string=function(){var _=this.bytes();return s.read(_,0,_.length)},c.prototype.skip=function(_){if(typeof _=="number"){if(this.pos+_>this.len)throw a(this,_);this.pos+=_}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var _=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[_](!1)},uint64:function(){return h.call(this)[_](!0)},sint64:function(){return h.call(this).zzDecode()[_](!1)},fixed64:function(){return g.call(this)[_](!0)},sfixed64:function(){return g.call(this)[_](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(_){return h.emit("error",_,s),f(_)}return h.emit("data",m,s),f(null,m)})}catch(A){return h.emit("error",A,s),setTimeout(function(){f(A)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,A=(u-h)/4294967296>>>0;return f&&(A=~A>>>0,h=~h>>>0,++h>4294967295&&(h=0,++A>4294967295&&(A=0))),new o(h,A)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(I,b,S){this.fn=I,this.len=b,this.next=undefined,this.val=S}function u(){}function f(I){this.head=I.head,this.tail=I.tail,this.len=I.len,this.next=I.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var A=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=A(),h.alloc=function(b){return new i.Array(b)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(b,S,B){return this.tail=this.tail.next=new c(b,S,B),this.len+=S,this};function g(I,b,S){b[S]=I&255}function m(I,b,S){for(;I>127;)b[S++]=I&127|128,I>>>=7;b[S]=I}function _(I,b){this.len=I,this.next=undefined,this.val=b}_.prototype=Object.create(c.prototype),_.prototype.fn=m,h.prototype.uint32=function(b){return this.len+=(this.tail=this.tail.next=new _((b=b>>>0)<128?1:b<16384?2:b<2097152?3:b<268435456?4:5,b)).len,this},h.prototype.int32=function(b){return b<0?this._push(y,10,r.fromNumber(b)):this.uint32(b)},h.prototype.sint32=function(b){return this.uint32((b<<1^b>>31)>>>0)};function y(I,b,S){for(;I.hi;)b[S++]=I.lo&127|128,I.lo=(I.lo>>>7|I.hi<<25)>>>0,I.hi>>>=7;for(;I.lo>127;)b[S++]=I.lo&127|128,I.lo=I.lo>>>7;b[S++]=I.lo}h.prototype.uint64=function(b){var S=r.from(b);return this._push(y,S.length(),S)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(b){var S=r.from(b).zzEncode();return this._push(y,S.length(),S)},h.prototype.bool=function(b){return this._push(g,1,b?1:0)};function C(I,b,S){b[S]=I&255,b[S+1]=I>>>8&255,b[S+2]=I>>>16&255,b[S+3]=I>>>24}h.prototype.fixed32=function(b){return this._push(C,4,b>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(b){var S=r.from(b);return this._push(C,4,S.lo)._push(C,4,S.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(b){return this._push(i.float.writeFloatLE,4,b)},h.prototype.double=function(b){return this._push(i.float.writeDoubleLE,8,b)};var E=i.Array.prototype.set?function(b,S,B){S.set(b,B)}:function(b,S,B){for(var v=0;v<b.length;++v)S[B+v]=b[v]};h.prototype.bytes=function(b){var S=b.length>>>0;if(!S)return this._push(g,1,0);if(i.isString(b)){var B=h.alloc(S=s.length(b));s.decode(b,B,0),b=B}return this.uint32(S)._push(E,S,b)},h.prototype.string=function(b){var S=a.length(b);return S?this.uint32(S)._push(a.write,S,b):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var b=this.head,S=this.tail,B=this.len;return this.reset().uint32(B),B&&(this.tail.next=b.next,this.tail=S,this.len+=B),this},h.prototype.finish=function(){for(var b=this.head.next,S=this.constructor.alloc(this.len),B=0;b;)b.fn(b.val,S,B),B+=b.len,b=b.next;return S},h._configure=function(I){o=I,h.create=A(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var aTe=Rd((n4i,aH)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var A=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,A),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,_=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),y={width:g.width,height:g.height,pixelData:_.resultPixels,minValue:_.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return _.resultMask&&(y.maskData=_.resultMask),h.returnEncodedMask&&g.mask&&(y.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(y.fileInfo=s(g),h.computeUsedBitDepths&&(y.fileInfo.bitDepths=a(g))),y};var r=function(f,h,A,g,m){var _=0,y=f.pixels.numBlocksX,C=f.pixels.numBlocksY,E=Math.floor(f.width/y),I=Math.floor(f.height/C),b=2*f.maxZError,S=Number.MAX_VALUE,B;A=A||(f.mask?f.mask.bitset:null);var v,P;v=new h(f.width*f.height),m&&A&&(P=new Uint8Array(f.width*f.height));for(var N=new Float32Array(E*I),L,p,x=0;x<=C;x++){var T=x!==C?I:f.height%C;if(T!==0)for(var w=0;w<=y;w++){var M=w!==y?E:f.width%y;if(M!==0){var O=x*f.width*I+w*E,U=f.width-M,Q=f.pixels.blocks[_],z,F,H;Q.encoding<2?(Q.encoding===0?z=Q.rawData:(u(Q.stuffedData,Q.bitsPerPixel,Q.numValidPixels,Q.offset,b,N,f.pixels.maxValue),z=N),F=0):Q.encoding===2?H=0:H=Q.offset;var W;if(A)for(p=0;p<T;p++){for(O&7&&(W=A[O>>3],W<<=O&7),L=0;L<M;L++)O&7||(W=A[O>>3]),W&128?(P&&(P[O]=1),B=Q.encoding<2?z[F++]:H,S=S>B?B:S,v[O++]=B):(P&&(P[O]=0),v[O++]=g),W<<=1;O+=U}else if(Q.encoding<2)for(p=0;p<T;p++){for(L=0;L<M;L++)B=z[F++],S=S>B?B:S,v[O++]=B;O+=U}else for(S=S>H?H:S,p=0;p<T;p++){for(L=0;L<M;L++)v[O++]=H;O+=U}if(Q.encoding===1&&F!==Q.numValidPixels)throw"Block and Mask do not match";_++}}}return{resultPixels:v,resultMask:P,minValue:S}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,A={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?A.float32=!0:m.encoding===1?A[m.bitsPerPixel]=!0:A[0]=!0}return Object.keys(A)},c=function(f,h,A){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var _=new DataView(f,h,24);if(g.fileVersion=_.getInt32(0,!0),g.imageType=_.getInt32(4,!0),g.height=_.getUint32(8,!0),g.width=_.getUint32(12,!0),g.maxZError=_.getFloat64(16,!0),h+=24,!A)if(_=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=_.getUint32(0,!0),g.mask.numBlocksX=_.getUint32(4,!0),g.mask.numBytes=_.getUint32(8,!0),g.mask.maxValue=_.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var y=new Uint8Array(Math.ceil(g.width*g.height/8));_=new DataView(f,h,g.mask.numBytes);var C=_.getInt16(0,!0),E=2,I=0;do{if(C>0)for(;C--;)y[I++]=_.getUint8(E++);else{var b=_.getUint8(E++);for(C=-C;C--;)y[I++]=b}C=_.getInt16(E,!0),E+=2}while(E<g.mask.numBytes);if(C!==-32768||I<y.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=y,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));_=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=_.getUint32(0,!0),g.pixels.numBlocksX=_.getUint32(4,!0),g.pixels.numBytes=_.getUint32(8,!0),g.pixels.maxValue=_.getFloat32(12,!0),h+=16;var S=g.pixels.numBlocksX,B=g.pixels.numBlocksY,v=S+(g.width%S>0?1:0),P=B+(g.height%B>0?1:0);g.pixels.blocks=new Array(v*P);for(var N=0,L=0;L<P;L++)for(var p=0;p<v;p++){var x=0,T=f.byteLength-h;_=new DataView(f,h,Math.min(10,T));var w={};g.pixels.blocks[N++]=w;var M=_.getUint8(0);if(x++,w.encoding=M&63,w.encoding>3)throw"Invalid block encoding ("+w.encoding+")";if(w.encoding===2){h++;continue}if(M!==0&&M!==2){if(M>>=6,w.offsetType=M,M===2)w.offset=_.getInt8(1),x++;else if(M===1)w.offset=_.getInt16(1,!0),x+=2;else if(M===0)w.offset=_.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(w.encoding===1)if(M=_.getUint8(x),x++,w.bitsPerPixel=M&63,M>>=6,w.numValidPixelsType=M,M===2)w.numValidPixels=_.getUint8(x),x++;else if(M===1)w.numValidPixels=_.getUint16(x,!0),x+=2;else if(M===0)w.numValidPixels=_.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(h+=x,w.encoding!==3){var O,U;if(w.encoding===0){var Q=(g.pixels.numBytes-1)/4;if(Q!==Math.floor(Q))throw"uncompressed block has invalid length";O=new ArrayBuffer(Q*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,Q*4));var z=new Float32Array(O);w.rawData=z,h+=Q*4}else if(w.encoding===1){var F=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),H=Math.ceil(F/4);O=new ArrayBuffer(H*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,F)),w.stuffedData=new Uint32Array(O),h+=F}}}return g.eofOffset=h,g},u=function(f,h,A,g,m,_,y){var C=(1<<h)-1,E=0,I,b=0,S,B,v=Math.ceil((y-g)/m),P=f.length*4-Math.ceil(h*A/8);for(f[f.length-1]<<=8*P,I=0;I<A;I++){if(b===0&&(B=f[E++],b=32),b>=h)S=B>>>b-h&C,b-=h;else{var N=h-b;S=(B&C)<<N&C,B=f[E++],b=32-N,S+=B>>>b}_[I]=S<v?g+S*m:y}return _};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b,S,B,v,P=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*P,A)for(E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=A[b];else for(v=Math.ceil((_-g)/m),E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=b<v?g+b*m:_},unstuffLUT:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b,S=[],B=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*B;var v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(b=c[_++],E=32),E>=u?(I=b>>>E-u&m,E-=u):(C=u-E,I=(b&m)<<C&m,b=c[_++],E=32-C,I+=b>>>E),S[y]=I<v?h+I*A:g;return S.unshift(h),S},unstuff2:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b=0,S,B,v;if(A)for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=A[S];else{var P=Math.ceil((_-g)/m);for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=S<P?g+S*m:_}return u},unstuffLUT2:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b=0,S,B=[],v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(S=c[_++],E=32,b=0),E>=u?(I=S>>>b&m,E-=u,b+=u):(C=u-E,I=S>>>b&m,S=c[_++],E=32-C,I|=(S&(1<<C)-1)<<u-C,b=C),B[y]=I<v?h+I*A:g;return B.unshift(h),B},originalUnstuff:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y,C,E,I=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*I,m=0;m<h;m++)_===0&&(C=c[g++],_=32),_>=f?(y=C>>>_-f&A,_-=f):(E=f-_,y=(C&A)<<E&A,C=c[g++],_=32-E,y+=C>>>_),u[m]=y;return u},originalUnstuff2:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y=0,C,E,I;for(m=0;m<h;m++)_===0&&(E=c[g++],_=32,y=0),_>=f?(C=E>>>y&A,_-=f,y+=f):(I=f-_,C=E>>>y&A,E=c[g++],_=32-I,C|=(E&(1<<I)-1)<<f-I,y=I),u[m]=C;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,A=Math.floor(h/2),g=0;A;){var m=A>=359?359:A;A-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),A={};if(A.fileIdentifierString=String.fromCharCode.apply(null,h),A.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+A.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);A.fileVersion=m,f+=4,m>=3&&(A.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),A.height=g.getUint32(0,!0),A.width=g.getUint32(4,!0),f+=8,m>=4?(A.numDims=g.getUint32(8,!0),f+=4):A.numDims=1,g=new DataView(c,f,40),A.numValidPixel=g.getUint32(0,!0),A.microBlockSize=g.getInt32(4,!0),A.blobSize=g.getInt32(8,!0),A.imageType=g.getInt32(12,!0),A.maxZError=g.getFloat64(16,!0),A.zMin=g.getFloat64(24,!0),A.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=A,u.ptr=f;var _,y;if(m>=3&&(y=m>=4?52:48,_=this.computeChecksumFletcher32(new Uint8Array(c,f-y,A.blobSize-14)),_!==A.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),A=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,A),m=this.readSubArray(c,u.ptr+A,h,A);u.ptr+=2*A;var _,y=!0;for(_=0;_<f.numDims;_++)if(g[_]!==m[_]){y=!1;break}return f.minValues=g,f.maxValues=m,y},readSubArray:function(c,u,f,h){var A;if(f===Uint8Array)A=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),A=new f(g)}return A},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,A=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),_={};if(_.numBytes=m.getUint32(0,!0),f+=4,(g===0||A===g)&&_.numBytes!==0)throw"invalid mask";var y,C;if(g===0)y=new Uint8Array(Math.ceil(A/8)),_.bitset=y,C=new Uint8Array(A),u.pixels.resultMask=C,f+=_.numBytes;else if(_.numBytes>0){y=new Uint8Array(Math.ceil(A/8)),m=new DataView(c,f,_.numBytes);var E=m.getInt16(0,!0),I=2,b=0,S=0;do{if(E>0)for(;E--;)y[b++]=m.getUint8(I++);else for(S=m.getUint8(I++),E=-E;E--;)y[b++]=S;E=m.getInt16(I,!0),I+=2}while(I<_.numBytes);if(E!==-32768||b<y.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(A);var B=0,v=0;for(v=0;v<A;v++)v&7?(B=y[v>>3],B<<=v&7):B=y[v>>3],B&128&&(C[v]=1);u.pixels.resultMask=C,_.bitset=y,f+=_.numBytes}return u.ptr=f,u.mask=_,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,A=u.headerInfo,g=A.numDims,m=A.width*A.height,_=A.imageType,y=A.numValidPixel*r.getDataTypeSize(_)*g,C,E=u.pixels.resultMask;if(f===Uint8Array)C=new Uint8Array(c,h,y);else{var I=new ArrayBuffer(y),b=new Uint8Array(I);b.set(new Uint8Array(c,h,y)),C=new f(I)}if(C.length===m*g)u.pixels.resultPixels=C;else{u.pixels.resultPixels=new f(m*g);var S=0,B=0,v=0,P=0;if(g>1)for(v=0;v<g;v++)for(P=v*m,B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[P+B]=C[S++]);else for(B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[B]=C[S++])}return h+=y,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var A=h.getInt32(0,!0);if(A<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),_=h.getInt32(12,!0);if(m>=_)return!1;var y=new Uint32Array(_-m);r.decodeBits(c,u,y);var C=[],E,I,b,S;for(E=m;E<_;E++)I=E-(E<g?0:g),C[I]={first:y[E-m],second:null};var B=c.byteLength-u.ptr,v=Math.ceil(B/4),P=new ArrayBuffer(v*4),N=new Uint8Array(P);N.set(new Uint8Array(c,u.ptr,B));var L=new Uint32Array(P),p=0,x,T=0;for(x=L[0],E=m;E<_;E++)I=E-(E<g?0:g),S=C[I].first,S>0&&(C[I].second=x<<p>>>32-S,32-p>=S?(p+=S,p===32&&(p=0,T++,x=L[T])):(p+=S-32,T++,x=L[T],C[I].second|=x>>>32-p));var w=0,M=0,O=new s;for(E=0;E<C.length;E++)C[E]!==void 0&&(w=Math.max(w,C[E].first));w>=f?M=f:M=w,w>=30&&console.log("WARning, large NUM LUT BITS IS "+w);var U=[],Q,z,F,H,W,Z;for(E=m;E<_;E++)if(I=E-(E<g?0:g),S=C[I].first,S>0)if(Q=[S,I],S<=M)for(z=C[I].second<<M-S,F=1<<M-S,b=0;b<F;b++)U[z|b]=Q;else for(z=C[I].second,Z=O,H=S-1;H>=0;H--)W=z>>>H&1,W?(Z.right||(Z.right=new s),Z=Z.right):(Z.left||(Z.left=new s),Z=Z.left),H===0&&!Z.val&&(Z.val=Q[1]);return{decodeLut:U,numBitsLUTQick:M,numBitsLUT:w,tree:O,stuffedData:L,srcPtr:T,bitPos:p}},readHuffman:function(c,u,f){var h=u.headerInfo,A=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,_=m*g,y=this.readHuffmanTree(c,u),C=y.decodeLut,E=y.tree,I=y.stuffedData,b=y.srcPtr,S=y.bitPos,B=y.numBitsLUTQick,v=y.numBitsLUT,P=u.headerInfo.imageType===0?128:0,N,L,p,x=u.pixels.resultMask,T,w,M,O,U,Q,z,F=0;S>0&&(b++,S=0);var H=I[b],W=u.encodeMode===1,Z=new f(_*A),Y=Z,$;for($=0;$<h.numDims;$++){if(A>1&&(Y=new f(Z.buffer,_*$,_),F=0),u.headerInfo.numValidPixel===m*g)for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0?p+=F:O>0?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}else for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++)if(x[Q]){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0&&x[Q-1]?p+=F:O>0&&x[Q-m]?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}u.ptr=u.ptr+(b+1)*4+(S>0?4:0)}u.pixels.resultPixels=Z},decodeBits:function(c,u,f,h,A){{var g=u.headerInfo,m=g.fileVersion,_=0,y=new DataView(c,u.ptr,5),C=y.getUint8(0);_++;var E=C>>6,I=E===0?4:3-E,b=(C&32)>0,S=C&31,B=0;if(I===1)B=y.getUint8(_),_++;else if(I===2)B=y.getUint16(_,!0),_+=2;else if(I===4)B=y.getUint32(_,!0),_+=4;else throw"Invalid valid pixel count type";var v=2*g.maxZError,P,N,L,p,x,T,w,M,O,U,Q=g.numDims>1?g.maxValues[A]:g.zMax;if(b){for(u.counter.lut++,M=y.getUint8(_),O=S,_++,p=Math.ceil((M-1)*S/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),u.ptr+=_,L.set(new Uint8Array(c,u.ptr,p)),w=new Uint32Array(N),u.ptr+=p,U=0;M-1>>>U;)U++;p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?T=o.unstuffLUT2(w,S,M-1,h,v,Q):T=o.unstuffLUT(w,S,M-1,h,v,Q),m>=3?o.unstuff2(P,f,U,B,T):o.unstuff(P,f,U,B,T)}else u.counter.bitstuffer++,U=S,u.ptr+=_,U>0&&(p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?h==null?o.originalUnstuff2(P,f,U,B):o.unstuff2(P,f,U,B,!1,h,v,Q):h==null?o.originalUnstuff(P,f,U,B):o.unstuff(P,f,U,B,!1,h,v,Q))}},readTiles:function(c,u,f){var h=u.headerInfo,A=h.width,g=h.height,m=h.microBlockSize,_=h.imageType,y=r.getDataTypeSize(_),C=Math.ceil(A/m),E=Math.ceil(g/m);u.pixels.numBlocksY=E,u.pixels.numBlocksX=C,u.pixels.ptr=0;var I=0,b=0,S=0,B=0,v=0,P=0,N=0,L=0,p=0,x=0,T=0,w=0,M=0,O=0,U=0,Q=0,z,F,H,W,Z,Y,$=new f(m*m),X=g%m||m,he=A%m||m,ge,fe,ye=h.numDims,Ie,ve=u.pixels.resultMask,Te=u.pixels.resultPixels;for(S=0;S<E;S++)for(v=S!==E-1?m:X,B=0;B<C;B++)for(P=B!==C-1?m:he,T=S*A*m+B*m,w=A-P,Ie=0;Ie<ye;Ie++){if(ye>1&&(Te=new f(u.pixels.resultPixels.buffer,A*g*Ie*y,A*g)),N=c.byteLength-u.ptr,z=new DataView(c,u.ptr,Math.min(10,N)),F={},Q=0,L=z.getUint8(0),Q++,p=L>>6&255,x=L>>2&15,x!==(B*m>>3&15))throw"integrity issue";if(Y=L&3,Y>3)throw u.ptr+=Q,"Invalid block encoding ("+Y+")";if(Y===2){u.counter.constant++,u.ptr+=Q;continue}else if(Y===0){if(u.counter.uncompressed++,u.ptr+=Q,M=v*P*y,O=c.byteLength-u.ptr,M=M<O?M:O,H=new ArrayBuffer(M%y===0?M:M+y-M%y),W=new Uint8Array(H),W.set(new Uint8Array(c,u.ptr,M)),Z=new f(H),U=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=Z[U++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=Z[U++];T+=w}u.ptr+=U*y}else if(ge=r.getDataTypeUsed(_,p),fe=r.getOnePixel(F,Q,ge,z),Q+=r.getDataTypeSize(ge),Y===3)if(u.ptr+=Q,u.counter.constantoffset++,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=fe),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=fe;T+=w}else if(u.ptr+=Q,r.decodeBits(c,u,$,fe,Ie),Q=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=$[Q++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=$[Q++];T+=w}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,A=h*f,g=0,m=0,_=0,y=c.pixels.resultMask;if(y)if(f>1)for(g=0;g<f;g++)for(_=g*h,m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[_+m]=u);else for(m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<A;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var A=0;switch(f){case 0:A=h.getInt8(u);break;case 1:A=h.getUint8(u);break;case 2:A=h.getInt16(u,!0);break;case 3:A=h.getUint16(u,!0);break;case 4:A=h.getInt32(u,!0);break;case 5:A=h.getUInt32(u,!0);break;case 6:A=h.getFloat32(u,!0);break;case 7:A=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return A}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,A={};if(A.ptr=u.inputOffset||0,A.pixels={},!!r.readHeaderInfo(c,A)){var g=A.headerInfo,m=g.fileVersion,_=r.getDataTypeArray(g.imageType);r.readMask(c,A),g.numValidPixel!==g.width*g.height&&!A.pixels.resultMask&&(A.pixels.resultMask=u.maskData);var y=g.width*g.height;if(A.pixels.resultPixels=new _(y*g.numDims),A.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(A);else if(m>=4&&r.checkMinMaxRanges(c,A))r.constructConstantSurface(A);else{var C=new DataView(c,A.ptr,2),E=C.getUint8(0);if(A.ptr++,E)r.readDataOneSweep(c,A,_);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var I=C.getUint8(1);if(A.ptr++,A.encodeMode=I,I>2||m<4&&I>1)throw"Invalid Huffman flag "+I;I?r.readHuffman(c,A,_):r.readTiles(c,A,_)}else r.readTiles(c,A,_)}A.eofOffset=A.ptr;var b;u.inputOffset?(b=A.headerInfo.blobSize+u.inputOffset-A.ptr,Math.abs(b)>=1&&(A.eofOffset=u.inputOffset+A.headerInfo.blobSize)):(b=A.headerInfo.blobSize-A.ptr,Math.abs(b)>=1&&(A.eofOffset=A.headerInfo.blobSize));var S={width:g.width,height:g.height,pixelData:A.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:A.pixels.resultMask};if(A.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var B=A.pixels.resultMask;for(h=0;h<y;h++)B[h]||(S.pixelData[h]=f);S.noDataValue=f}return A.noDataValue=f,u.returnFileInfo&&(S.fileInfo=r.formatFileInfo(A)),S}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,A=o.byteLength-10,g,m=[],_,y,C={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<A;){var E=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:y,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=E.fileInfo.eofOffset,h===0&&(g=E.encodedMaskData,y=E.maskData,C.width=E.width,C.height=E.height,C.dimCount=E.dimCount||1,C.pixelType=E.pixelType||E.fileInfo.pixelType,C.mask=E.maskData),f>1&&E.fileInfo.mask&&E.fileInfo.mask.numBytes>0&&m.push(E.maskData),h++,C.pixels.push(E.pixelData),C.statistics.push({minValue:E.minValue,maxValue:E.maxValue,noDataValue:E.noDataValue,dimStats:E.dimStats})}var I,b,S;if(f>1&&m.length>1){for(S=C.width*C.height,C.bandMasks=m,y=new Uint8Array(S),y.set(m[0]),I=1;I<m.length;I++)for(_=m[I],b=0;b<S;b++)y[b]=y[b]&_[b];C.maskData=y}return C}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof aH<"u"&&aH.exports?aH.exports=i:this.Lerc=i})()});var xSe=Rd((Who,ISe)=>{ISe.exports={webm:"data:video/webm;base64,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",mp4:"data:video/mp4;base64,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"}});var TSe=Rd((jho,bSe)=>{var{webm:LDt,mp4:ODt}=xSe(),t$=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,n$=()=>"wakeLock"in navigator,i$=class{constructor(){if(this.enabled=!1,n$()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else t$()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",LDt),this._addSourceToVideo(this.noSleepVideo,"mp4",ODt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return n$()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):t$()?(this.disable(),console.warn(`
|
||
NoSleep enabled for older iOS devices. This can interrupt
|
||
active or long-running network requests from completing successfully.
|
||
See https://github.com/richtr/NoSleep.js/issues/15 for more details.
|
||
`),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){n$()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):t$()?this.noSleepTimer&&(console.warn(`
|
||
NoSleep now disabled for older iOS devices.
|
||
`),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};bSe.exports=i$});var D5={};D5.EMPTY_OBJECT=Object.freeze({});D5.EMPTY_ARRAY=Object.freeze([]);var V=D5;function KSe(e){return e!=null}var l=KSe;function oC(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(oC.prototype=Object.create(Error.prototype),oC.prototype.constructor=oC);oC.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=`
|
||
${this.stack.toString()}`),e};oC.throwInstantiationError=function(){throw new oC("This function defines an interface and should not be called directly.")};var me=oC;var ks={};ks.typeOf={};function XSe(e){return`${e} is required, actual value was undefined`}function U0(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}ks.defined=function(e,t){if(!l(t))throw new me(XSe(e))};ks.typeOf.func=function(e,t){if(typeof t!="function")throw new me(U0(typeof t,"function",e))};ks.typeOf.string=function(e,t){if(typeof t!="string")throw new me(U0(typeof t,"string",e))};ks.typeOf.number=function(e,t){if(typeof t!="number")throw new me(U0(typeof t,"number",e))};ks.typeOf.number.lessThan=function(e,t,n){if(ks.typeOf.number(e,t),t>=n)throw new me(`Expected ${e} to be less than ${n}, actual value was ${t}`)};ks.typeOf.number.lessThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t>n)throw new me(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThan=function(e,t,n){if(ks.typeOf.number(e,t),t<=n)throw new me(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t<n)throw new me(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};ks.typeOf.object=function(e,t){if(typeof t!="object")throw new me(U0(typeof t,"object",e))};ks.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new me(U0(typeof t,"boolean",e))};ks.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new me(U0(typeof t,"bigint",e))};ks.typeOf.number.equals=function(e,t,n,i){if(ks.typeOf.number(e,n),ks.typeOf.number(t,i),n!==i)throw new me(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var Mo=ks;function QS(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(QS.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});QS.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};QS.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function JSe(e,t){return t-e}QS.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(JSe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var _e=QS;function fg(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new _e,this.setValue(e)}Object.defineProperties(fg.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});fg.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};fg.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};fg.prototype.equals=function(e){return this===e||e instanceof fg&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};fg.prototype.valueOf=function(){return this._value};fg.prototype.toString=function(){return String(this._value)};var ci=fg;function ZSe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function $Se(e){return new ci(e)}function ewe(e,t,n){return ZSe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,t??!1,n??$Se)}var de=ewe;function kS(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(kS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),image:de("image"),scale:de("scale"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),color:de("color"),rotation:de("rotation"),alignedAxis:de("alignedAxis"),sizeInMeters:de("sizeInMeters"),width:de("width"),height:de("height"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),imageSubRegion:de("imageSubRegion"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});kS.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new kS(this)};kS.prototype.merge=function(e){this.show=this._show??e.show,this.image=this._image??e.image,this.scale=this._scale??e.scale,this.pixelOffset=this._pixelOffset??e.pixelOffset,this.eyeOffset=this._eyeOffset??e.eyeOffset,this.horizontalOrigin=this._horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this._verticalOrigin??e.verticalOrigin,this.heightReference=this._heightReference??e.heightReference,this.color=this._color??e.color,this.rotation=this._rotation??e.rotation,this.alignedAxis=this._alignedAxis??e.alignedAxis,this.sizeInMeters=this._sizeInMeters??e.sizeInMeters,this.width=this._width??e.width,this.height=this._height??e.height,this.scaleByDistance=this._scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.imageSubRegion=this._imageSubRegion??e.imageSubRegion,this.distanceDisplayCondition=this._distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this._disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var jc=kS;function rC(){this._array=[],this._hash={}}Object.defineProperties(rC.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});rC.prototype.contains=function(e){return l(this._hash[e])};rC.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};rC.prototype.get=function(e){return this._hash[e]};rC.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};rC.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var Pt=rC;var v5=Es(CR(),1);var ft={};ft.EPSILON1=.1;ft.EPSILON2=.01;ft.EPSILON3=.001;ft.EPSILON4=1e-4;ft.EPSILON5=1e-5;ft.EPSILON6=1e-6;ft.EPSILON7=1e-7;ft.EPSILON8=1e-8;ft.EPSILON9=1e-9;ft.EPSILON10=1e-10;ft.EPSILON11=1e-11;ft.EPSILON12=1e-12;ft.EPSILON13=1e-13;ft.EPSILON14=1e-14;ft.EPSILON15=1e-15;ft.EPSILON16=1e-16;ft.EPSILON17=1e-17;ft.EPSILON18=1e-18;ft.EPSILON19=1e-19;ft.EPSILON20=1e-20;ft.EPSILON21=1e-21;ft.GRAVITATIONALPARAMETER=3986004418e5;ft.SOLAR_RADIUS=6955e5;ft.LUNAR_RADIUS=1737400;ft.SIXTY_FOUR_KILOBYTES=64*1024;ft.FOUR_GIGABYTES=4*1024*1024*1024;ft.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ft.signNotZero=function(e){return e<0?-1:1};ft.toSNorm=function(e,t){return t=t??255,Math.round((ft.clamp(e,-1,1)*.5+.5)*t)};ft.fromSNorm=function(e,t){return t=t??255,ft.clamp(e,0,t)/t*2-1};ft.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ft.clamp((e-t)/n,0,1)};ft.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ft.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ft.lerp=function(e,t,n){return(1-n)*e+n*t};ft.PI=Math.PI;ft.ONE_OVER_PI=1/Math.PI;ft.PI_OVER_TWO=Math.PI/2;ft.PI_OVER_THREE=Math.PI/3;ft.PI_OVER_FOUR=Math.PI/4;ft.PI_OVER_SIX=Math.PI/6;ft.THREE_PI_OVER_TWO=3*Math.PI/2;ft.TWO_PI=2*Math.PI;ft.ONE_OVER_TWO_PI=1/(2*Math.PI);ft.RADIANS_PER_DEGREE=Math.PI/180;ft.DEGREES_PER_RADIAN=180/Math.PI;ft.RADIANS_PER_ARCSECOND=ft.RADIANS_PER_DEGREE/3600;ft.toRadians=function(e){return e*ft.RADIANS_PER_DEGREE};ft.toDegrees=function(e){return e*ft.DEGREES_PER_RADIAN};ft.convertLongitudeRange=function(e){let t=ft.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ft.clampToLatitudeRange=function(e){return ft.clamp(e,-1*ft.PI_OVER_TWO,ft.PI_OVER_TWO)};ft.negativePiToPi=function(e){return e>=-ft.PI&&e<=ft.PI?e:ft.zeroToTwoPi(e+ft.PI)-ft.PI};ft.zeroToTwoPi=function(e){if(e>=0&&e<=ft.TWO_PI)return e;let t=ft.mod(e,ft.TWO_PI);return Math.abs(t)<ft.EPSILON14&&Math.abs(e)>ft.EPSILON14?ft.TWO_PI:t};ft.mod=function(e,t){return ft.sign(e)===ft.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};ft.equalsEpsilon=function(e,t,n,i){n=n??0,i=i??n;let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};ft.lessThan=function(e,t,n){return e-t<-n};ft.lessThanOrEquals=function(e,t,n){return e-t<n};ft.greaterThan=function(e,t,n){return e-t>n};ft.greaterThanOrEquals=function(e,t,n){return e-t>-n};var ER=[1];ft.factorial=function(e){let t=ER.length;if(e>=t){let n=ER[t-1];for(let i=t;i<=e;i++){let o=n*i;ER.push(o),n=o}}return ER[e]};ft.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ft.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ft.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ft.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ft.clamp=function(e,t,n){return e<t?t:e>n?n:e};var d$=new v5.default;ft.setRandomNumberSeed=function(e){d$=new v5.default(e)};ft.nextRandomNumber=function(){return d$.random()};ft.randomBetween=function(e,t){return ft.nextRandomNumber()*(t-e)+e};ft.acosClamped=function(e){return Math.acos(ft.clamp(e,-1,1))};ft.asinClamped=function(e){return Math.asin(ft.clamp(e,-1,1))};ft.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ft.logBase=function(e,t){return Math.log(e)/Math.log(t)};ft.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ft.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ft.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ft.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ft.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ft.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ft.PI_OVER_TWO-i:i,i=e<0?ft.PI-i:i,i=t<0?-i:i,i};var D=ft;function Vt(e,t){this.x=e??0,this.y=t??0}Vt.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Vt(e,t)};Vt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Vt(e.x,e.y)};Vt.fromCartesian3=Vt.clone;Vt.fromCartesian4=Vt.clone;Vt.packedLength=2;Vt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Vt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Vt),n.x=e[t++],n.y=e[t],n};Vt.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Vt.pack(e[o],t,o*2);return t};Vt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Vt.unpack(e,i,t[o])}return t};Vt.fromArray=Vt.unpack;Vt.maximumComponent=function(e){return Math.max(e.x,e.y)};Vt.minimumComponent=function(e){return Math.min(e.x,e.y)};Vt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Vt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Vt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Vt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Vt.magnitude=function(e){return Math.sqrt(Vt.magnitudeSquared(e))};var IR=new Vt;Vt.distance=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitude(IR)};Vt.distanceSquared=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitudeSquared(IR)};Vt.normalize=function(e,t){let n=Vt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Vt.dot=function(e,t){return e.x*t.x+e.y*t.y};Vt.cross=function(e,t){return e.x*t.y-e.y*t.x};Vt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Vt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Vt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Vt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Vt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Vt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Vt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Vt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var h$=new Vt;Vt.lerp=function(e,t,n,i){return Vt.multiplyByScalar(t,n,h$),i=Vt.multiplyByScalar(e,1-n,i),Vt.add(h$,i,i)};var m$=new Vt,A$=new Vt;Vt.angleBetween=function(e,t){return Vt.normalize(e,m$),Vt.normalize(t,A$),D.acosClamped(Vt.dot(m$,A$))};var twe=new Vt;Vt.mostOrthogonalAxis=function(e,t){let n=Vt.normalize(e,twe);return Vt.abs(n,n),n.x<=n.y?t=Vt.clone(Vt.UNIT_X,t):t=Vt.clone(Vt.UNIT_Y,t),t};Vt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Vt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Vt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)};Vt.ZERO=Object.freeze(new Vt(0,0));Vt.ONE=Object.freeze(new Vt(1,1));Vt.UNIT_X=Object.freeze(new Vt(1,0));Vt.UNIT_Y=Object.freeze(new Vt(0,1));Vt.prototype.clone=function(e){return Vt.clone(this,e)};Vt.prototype.equals=function(e){return Vt.equals(this,e)};Vt.prototype.equalsEpsilon=function(e,t,n){return Vt.equalsEpsilon(this,e,t,n)};Vt.prototype.toString=function(){return`(${this.x}, ${this.y})`};var k=Vt;function ot(e,t,n){this.x=e??0,this.y=t??0,this.z=n??0}ot.fromSpherical=function(e,t){l(t)||(t=new ot);let n=e.clock,i=e.cone,o=e.magnitude??1,r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};ot.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new ot(e,t,n)};ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new ot(e.x,e.y,e.z)};ot.fromCartesian4=ot.clone;ot.packedLength=3;ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ot),n.x=e[t++],n.y=e[t++],n.z=e[t],n};ot.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)ot.pack(e[o],t,o*3);return t};ot.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=ot.unpack(e,i,t[o])}return t};ot.fromArray=ot.unpack;ot.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};ot.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};ot.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};ot.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};ot.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};ot.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};ot.magnitude=function(e){return Math.sqrt(ot.magnitudeSquared(e))};var bR=new ot;ot.distance=function(e,t){return ot.subtract(e,t,bR),ot.magnitude(bR)};ot.distanceSquared=function(e,t){return ot.subtract(e,t,bR),ot.magnitudeSquared(bR)};ot.normalize=function(e,t){let n=ot.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};ot.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};ot.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};ot.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};ot.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};ot.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};ot.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};ot.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};ot.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};ot.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var p$=new ot;ot.lerp=function(e,t,n,i){return ot.multiplyByScalar(t,n,p$),i=ot.multiplyByScalar(e,1-n,i),ot.add(p$,i,i)};var xR=new ot,P5=new ot;ot.angleBetween=function(e,t){ot.normalize(e,xR),ot.normalize(t,P5);let n=ot.dot(xR,P5),i=ot.magnitude(ot.cross(xR,P5,xR));return Math.atan2(i,n)};var nwe=new ot;ot.mostOrthogonalAxis=function(e,t){let n=ot.normalize(e,nwe);return ot.abs(n,n),n.x<=n.y?n.x<=n.z?t=ot.clone(ot.UNIT_X,t):t=ot.clone(ot.UNIT_Z,t):n.y<=n.z?t=ot.clone(ot.UNIT_Y,t):t=ot.clone(ot.UNIT_Z,t),t};ot.projectVector=function(e,t,n){let i=ot.dot(e,t)/ot.dot(t,t);return ot.multiplyByScalar(t,i,n)};ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};ot.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};ot.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)};ot.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};ot.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};ot.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e),t=D.toRadians(t),ot.fromRadians(e,t,n,i,o)};var mf=new ot,G0=new ot;ot._ellipsoidRadiiSquared=new ot(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);ot.fromRadians=function(e,t,n,i,o){n=n??0;let r=l(i)?i.radiiSquared:ot._ellipsoidRadiiSquared,s=Math.cos(t);mf.x=s*Math.cos(e),mf.y=s*Math.sin(e),mf.z=Math.sin(t),mf=ot.normalize(mf,mf),ot.multiplyComponents(r,mf,G0);let a=Math.sqrt(ot.dot(mf,G0));return G0=ot.divideByScalar(G0,a,G0),mf=ot.multiplyByScalar(mf,n,mf),l(o)||(o=new ot),ot.add(G0,mf,o)};ot.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromDegrees(r,s,0,t,n[a])}return n};ot.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromRadians(r,s,0,t,n[a])}return n};ot.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromDegrees(r,s,a,t,n[c])}return n};ot.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromRadians(r,s,a,t,n[c])}return n};ot.ZERO=Object.freeze(new ot(0,0,0));ot.ONE=Object.freeze(new ot(1,1,1));ot.UNIT_X=Object.freeze(new ot(1,0,0));ot.UNIT_Y=Object.freeze(new ot(0,1,0));ot.UNIT_Z=Object.freeze(new ot(0,0,1));ot.prototype.clone=function(e){return ot.clone(this,e)};ot.prototype.equals=function(e){return ot.equals(this,e)};ot.prototype.equalsEpsilon=function(e,t,n){return ot.equalsEpsilon(this,e,t,n)};ot.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=ot;var iwe=new d,owe=new d;function rwe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,A=s*s*u*u,g=a*a*f*f,m=h+A+g,_=Math.sqrt(1/m),y=d.multiplyByScalar(e,_,iwe);if(m<i)return isFinite(_)?d.clone(y,o):void 0;let C=n.x,E=n.y,I=n.z,b=owe;b.x=y.x*C*2,b.y=y.y*E*2,b.z=y.z*I*2;let S=(1-_)*d.magnitude(e)/(.5*d.magnitude(b)),B=0,v,P,N,L,p,x,T,w,M,O,U;do{S-=B,N=1/(1+S*C),L=1/(1+S*E),p=1/(1+S*I),x=N*N,T=L*L,w=p*p,M=x*N,O=T*L,U=w*p,v=h*x+A*T+g*w-1,P=h*M*C+A*O*E+g*U*I;let Q=-2*P;B=v/Q}while(Math.abs(v)>D.EPSILON12);return l(o)?(o.x=r*N,o.y=s*L,o.z=a*p,o):new d(r*N,s*L,a*p)}var z0=rwe;function Yo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}Yo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Yo(e,t,n)};Yo.fromDegrees=function(e,t,n,i){return e=D.toRadians(e),t=D.toRadians(t),Yo.fromRadians(e,t,n,i)};var swe=new d,awe=new d,cwe=new d;Yo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Yo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Yo._ellipsoidCenterToleranceSquared=D.EPSILON1;Yo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Yo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Yo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Yo._ellipsoidCenterToleranceSquared,s=z0(e,i,o,r,awe);if(!l(s))return;let a=d.multiplyComponents(s,o,swe);a=d.normalize(a,a);let c=d.subtract(e,s,cwe),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=D.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Yo(u,f,h)};Yo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Yo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Yo(e.longitude,e.latitude,e.height)};Yo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Yo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Yo.ZERO=Object.freeze(new Yo(0,0,0));Yo.prototype.clone=function(e){return Yo.clone(this,e)};Yo.prototype.equals=function(e){return Yo.equals(this,e)};Yo.prototype.equalsEpsilon=function(e,t){return Yo.equalsEpsilon(this,e,t)};Yo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var Ae=Yo;function _$(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=D.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Di(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,_$(this,e,t,n)}Object.defineProperties(Di.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Di.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Di(n.x,n.y,n.z)};Di.fromCartesian3=function(e,t){return l(t)||(t=new Di),l(e)&&_$(t,e.x,e.y,e.z),t};Di.WGS84=Object.freeze(new Di(6378137,6378137,6356752314245179e-9));Di.UNIT_SPHERE=Object.freeze(new Di(1,1,1));Di.MOON=Object.freeze(new Di(D.LUNAR_RADIUS,D.LUNAR_RADIUS,D.LUNAR_RADIUS));Di._default=Di.WGS84;Object.defineProperties(Di,{default:{get:function(){return Di._default},set:function(e){Di._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,Ae._ellipsoidOneOverRadii=e.oneOverRadii,Ae._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,Ae._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Di.prototype.clone=function(e){return Di.clone(this,e)};Di.packedLength=d.packedLength;Di.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),t};Di.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t);return Di.fromCartesian3(i,n)};Di.prototype.geocentricSurfaceNormal=d.normalize;Di.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};Di.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,D.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var lwe=new d,uwe=new d;Di.prototype.cartographicToCartesian=function(e,t){let n=lwe,i=uwe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};Di.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var fwe=new d,dwe=new d,hwe=new d;Di.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,dwe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,fwe),o=d.subtract(e,n,hwe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=D.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new Ae(r,s,a)};Di.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};Di.prototype.scaleToGeodeticSurface=function(e,t){return z0(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};Di.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};Di.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};Di.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};Di.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};Di.prototype.toString=function(){return this._radii.toString()};Di.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=t??0;let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var mwe=new d;Di.prototype.getLocalCurvature=function(e,t){l(t)||(t=new k);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,mwe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return k.fromElements(1/i,1/r,t)};var Awe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],pwe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function g$(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*Awe[s];r+=pwe[s]*(n(i+a)+n(i-a))}return r*=o,r}Di.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=D.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return g$(i,o,function(f){let h=Math.cos(f),A=Math.sin(f);return Math.cos(f)*g$(t,n,function(g){let m=Math.cos(g),_=Math.sin(g);return Math.sqrt(u*A*A+c*(a*m*m+s*_*_)*h*h)})})};var te=Di;function TR(e){this._ellipsoid=e??te.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(TR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});TR.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};TR.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Hi=TR;var gwe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},nn=Object.freeze(gwe);function bt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z),a=D.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var SR=new bt;bt.distance=function(e,t){return bt.subtract(e,t,SR),bt.magnitude(SR)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,SR),bt.magnitudeSquared(SR)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var y$=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,y$),i=bt.multiplyByScalar(e,1-n,i),bt.add(y$,i,i)};var _we=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,_we);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)&&D.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var R5=new Float32Array(1),hc=new Uint8Array(R5.buffer),ywe=new Uint32Array([287454020]),Cwe=new Uint8Array(ywe.buffer),C$=Cwe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),R5[0]=e,C$?(t.x=hc[0],t.y=hc[1],t.z=hc[2],t.w=hc[3]):(t.x=hc[3],t.y=hc[2],t.z=hc[1],t.w=hc[0]),t};bt.unpackFloat=function(e){return C$?(hc[0]=e.x,hc[1]=e.y,hc[2]=e.z,hc[3]=e.w):(hc[0]=e.w,hc[1]=e.z,hc[2]=e.y,hc[3]=e.x),R5[0]};var se=bt;function Ewe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var qo=Ewe;function Iwe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var sC=Iwe;function xwe(e){return e%4===0&&e%100!==0||e%400===0}var Yh=xwe;var E$=[31,28,31,30,31,30,31,31,30,31,30,31];function bwe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function _(){Mo.typeOf.number.greaterThanOrEquals("Year",e,1),Mo.typeOf.number.lessThanOrEquals("Year",e,9999),Mo.typeOf.number.greaterThanOrEquals("Month",t,1),Mo.typeOf.number.lessThanOrEquals("Month",t,12),Mo.typeOf.number.greaterThanOrEquals("Day",n,1),Mo.typeOf.number.lessThanOrEquals("Day",n,31),Mo.typeOf.number.greaterThanOrEquals("Hour",i,0),Mo.typeOf.number.lessThanOrEquals("Hour",i,23),Mo.typeOf.number.greaterThanOrEquals("Minute",o,0),Mo.typeOf.number.lessThanOrEquals("Minute",o,59),Mo.typeOf.bool("IsLeapSecond",a),Mo.typeOf.number.greaterThanOrEquals("Second",r,0),Mo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Mo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Mo.typeOf.number.lessThan("Millisecond",s,1e3)}function y(){let C=t===2&&Yh(e)?E$[t-1]+1:E$[t-1];if(n>C)throw new me("Month and Day represents invalid date")}}var dg=bwe;function Twe(e,t){this.julianDate=e,this.offset=t}var so=Twe;var Swe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ri=Object.freeze(Swe);var wwe={UTC:0,TAI:1},oi=Object.freeze(wwe);var x$=new dg,M5=[31,28,31,30,31,30,31,31,30,31,30,31],N5=29;function L5(e,t){return Ft.compare(e.julianDate,t.julianDate)}var V0=new so;function BR(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Ft.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Ft.addSeconds(e,i,e)}function I$(e,t){V0.julianDate=e;let n=Ft.leapSeconds,i=qo(n,V0,L5);if(i<0&&(i=~i),i===0)return Ft.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Ft.addSeconds(e,-n[i-1].offset,t);let o=Ft.secondsDifference(n[i].julianDate,e);if(o===0)return Ft.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Ft.addSeconds(e,-n[--i].offset,t)}function hg(e,t,n){let i=t/ri.SECONDS_PER_DAY|0;return e+=i,t-=ri.SECONDS_PER_DAY*i,t<0&&(e--,t+=ri.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function O5(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*ri.SECONDS_PER_HOUR+o*ri.SECONDS_PER_MINUTE+s*ri.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var Bwe=/^(\d{4})$/,Dwe=/^(\d{4})-(\d{2})$/,vwe=/^(\d{4})-?(\d{3})$/,Pwe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,Rwe=/^(\d{4})-?(\d{2})-?(\d{2})$/,F5=/([Z+\-])?(\d{2})?:?(\d{2})?$/,Mwe=/^(\d{2})(\.\d+)?/.source+F5.source,Nwe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source,Lwe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source;function Ft(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??oi.UTC;let i=e|0;t=t+(e-i)*ri.SECONDS_PER_DAY,hg(i,t,this),n===oi.UTC&&BR(this)}Ft.fromGregorianDate=function(e,t){let n=O5(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromDate=function(e,t){let n=O5(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],A,g;if(n=f.match(Rwe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(Dwe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(Bwe),n!==null)i=+n[1];else{let C;if(n=f.match(vwe),n!==null)i=+n[1],C=+n[2],g=Yh(i);else if(n=f.match(Pwe),n!==null){i=+n[1];let E=+n[2],I=+n[3]||0,b=new Date(Date.UTC(i,0,4));C=E*7+I-b.getUTCDay()-3}A=new Date(Date.UTC(i,0,1)),A.setUTCDate(C),o=A.getUTCMonth()+1,r=A.getUTCDate()}g=Yh(i);let m;if(l(h)){n=h.match(Lwe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(Nwe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(Mwe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let C=n[m],E=+n[m+1],I=+(n[m+2]||0);switch(C){case"+":s=s-E,a=a-I;break;case"-":s=s+E,a=a+I;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let _=c===60;for(_&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(A=g&&o===2?N5:M5[o-1];r>A;)r-=A,o++,o>12&&(o-=12,i++),A=g&&o===2?N5:M5[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),A=g&&o===2?N5:M5[o-1],r+=A;let y=O5(i,o,r,s,a,c,u);return l(t)?(hg(y[0],y[1],t),BR(t)):t=new Ft(y[0],y[1],oi.UTC),_&&Ft.addSeconds(t,1,t),t};Ft.now=function(e){return Ft.fromDate(new Date,e)};var wR=new Ft(0,0,oi.TAI);Ft.toGregorianDate=function(e,t){let n=!1,i=I$(e,wR);l(i)||(Ft.addSeconds(e,-1,wR),i=I$(wR,wR),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,A=100*(a-49)+c+s|0,g=r/ri.SECONDS_PER_HOUR|0,m=r-g*ri.SECONDS_PER_HOUR,_=m/ri.SECONDS_PER_MINUTE|0;m=m-_*ri.SECONDS_PER_MINUTE;let y=m|0,C=(m-y)/ri.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(y+=1),l(t)?(t.year=A,t.month=h,t.day=f,t.hour=g,t.minute=_,t.second=y,t.millisecond=C,t.isLeapSecond=n,t):new dg(A,h,f,g,_,y,C,n)};Ft.toDate=function(e){let t=Ft.toGregorianDate(e,x$),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Ft.toIso8601=function(e,t){let n=Ft.toGregorianDate(e,x$),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Ft.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Ft(e.dayNumber,e.secondsOfDay,oi.TAI)};Ft.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Ft.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Ft.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Ft.secondsDifference(e,t))<=n};Ft.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ri.SECONDS_PER_DAY};Ft.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ri.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Ft.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ri.SECONDS_PER_DAY;return n+i};Ft.computeTaiMinusUtc=function(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Ft.addSeconds=function(e,t,n){return hg(e.dayNumber,e.secondsOfDay+t,n)};Ft.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_MINUTE;return hg(e.dayNumber,i,n)};Ft.addHours=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_HOUR;return hg(e.dayNumber,i,n)};Ft.addDays=function(e,t,n){let i=e.dayNumber+t;return hg(i,e.secondsOfDay,n)};Ft.lessThan=function(e,t){return Ft.compare(e,t)<0};Ft.lessThanOrEquals=function(e,t){return Ft.compare(e,t)<=0};Ft.greaterThan=function(e,t){return Ft.compare(e,t)>0};Ft.greaterThanOrEquals=function(e,t){return Ft.compare(e,t)>=0};Ft.prototype.clone=function(e){return Ft.clone(this,e)};Ft.prototype.equals=function(e){return Ft.equals(this,e)};Ft.prototype.equalsEpsilon=function(e,t){return Ft.equalsEpsilon(this,e,t)};Ft.prototype.toString=function(){return Ft.toIso8601(this)};Ft.leapSeconds=[new so(new Ft(2441317,43210,oi.TAI),10),new so(new Ft(2441499,43211,oi.TAI),11),new so(new Ft(2441683,43212,oi.TAI),12),new so(new Ft(2442048,43213,oi.TAI),13),new so(new Ft(2442413,43214,oi.TAI),14),new so(new Ft(2442778,43215,oi.TAI),15),new so(new Ft(2443144,43216,oi.TAI),16),new so(new Ft(2443509,43217,oi.TAI),17),new so(new Ft(2443874,43218,oi.TAI),18),new so(new Ft(2444239,43219,oi.TAI),19),new so(new Ft(2444786,43220,oi.TAI),20),new so(new Ft(2445151,43221,oi.TAI),21),new so(new Ft(2445516,43222,oi.TAI),22),new so(new Ft(2446247,43223,oi.TAI),23),new so(new Ft(2447161,43224,oi.TAI),24),new so(new Ft(2447892,43225,oi.TAI),25),new so(new Ft(2448257,43226,oi.TAI),26),new so(new Ft(2448804,43227,oi.TAI),27),new so(new Ft(2449169,43228,oi.TAI),28),new so(new Ft(2449534,43229,oi.TAI),29),new so(new Ft(2450083,43230,oi.TAI),30),new so(new Ft(2450630,43231,oi.TAI),31),new so(new Ft(2451179,43232,oi.TAI),32),new so(new Ft(2453736,43233,oi.TAI),33),new so(new Ft(2454832,43234,oi.TAI),34),new so(new Ft(2456109,43235,oi.TAI),35),new so(new Ft(2457204,43236,oi.TAI),36),new so(new Ft(2457754,43237,oi.TAI),37)];var K=Ft;var z$=Es(_u(),1);function Owe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var RR=Owe;function v$(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=v$(o,t)),n[i]=o}return n}var ze=v$;function P$(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=P$(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var wt=P$;function Fwe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var yu=Fwe;var R$=Es(_u(),1);function Q5(e,t){let n;return typeof document<"u"&&(n=document),Q5._implementation(e,t,n)}Q5._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new R$.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var DA=Q5;var M$=Es(_u(),1);function Qwe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new M$.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var MR=Qwe;var N$=Es(_u(),1);function kwe(e){let t=new N$.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var j0=kwe;var L$={};function Uwe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=L$[t];l(i)||(i={},L$[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var qh=Uwe;var Gwe=/^blob:/i;function zwe(e){return Gwe.test(e)}var Y0=zwe;var Kh;function Vwe(e){l(Kh)||(Kh=document.createElement("a")),Kh.href=window.location.href;let t=Kh.host,n=Kh.protocol;return Kh.href=e,Kh.href=Kh.href,n!==Kh.protocol||t!==Kh.host}var aC=Vwe;var Hwe=/^data:/i;function Wwe(e){return Hwe.test(e)}var mg=Wwe;function jwe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var q0=jwe;function Ywe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var K0=Ywe;function qwe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Af=qwe;var Kwe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},hi=Object.freeze(Kwe);var Xwe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Us=Object.freeze(Xwe);function NR(e){e=e??V.EMPTY_OBJECT;let t=e.throttleByServer??!1,n=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=n,this.throttleByServer=t,this.type=e.type??Us.OTHER,this.serverKey=e.serverKey,this.state=hi.UNISSUED,this.deferred=void 0,this.cancelled=!1}NR.prototype.cancel=function(){this.cancelled=!0};NR.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=hi.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new NR(this)};var pr=NR;function Jwe(e){let t={};if(!e)return t;let n=e.split(`\r
|
||
`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var LR=Jwe;function O$(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=LR(this.responseHeaders))}O$.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var vA=O$;var FR=Es(_u(),1);function cC(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(cC.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function k5(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}cC.prototype.reserve=function(e){e=e??this._length,this._array.length=e};cC.prototype.heapify=function(e){e=e??0;let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(k5(i,o,e),e=o):r=!1}};cC.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};cC.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)k5(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};cC.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return k5(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var OR=cC;function Zwe(e,t){return e.priority-t.priority}var fo={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},X0=20,mc=new OR({comparator:Zwe});mc.maximumLength=X0;mc.reserve(X0);var Xh=[],PA={},$we=typeof document<"u"?new FR.default(document.location.href):new FR.default,QR=new _e;function tr(){}tr.maximumRequests=50;tr.maximumRequestsPerServer=18;tr.requestsByServer={};tr.throttleRequests=!0;tr.debugShowStatistics=!1;tr.requestCompletedEvent=QR;Object.defineProperties(tr,{statistics:{get:function(){return fo}},priorityHeapLength:{get:function(){return X0},set:function(e){if(e<X0)for(;mc.length>e;){let t=mc.pop();lC(t)}X0=e,mc.maximumLength=e,mc.reserve(e)}}});function F$(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}tr.serverHasOpenSlots=function(e,t){t=t??1;let n=tr.requestsByServer[e]??tr.maximumRequestsPerServer;return PA[e]+t<=n};tr.heapHasOpenSlots=function(e){return mc.length+e<=X0};function Q$(e){return e.state===hi.UNISSUED&&(e.state=hi.ISSUED,e.deferred=yu()),e.deferred.promise}function eBe(e){return function(t){if(e.state===hi.CANCELLED)return;let n=e.deferred;--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(),e.state=hi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function tBe(e){return function(t){e.state!==hi.CANCELLED&&(++fo.numberOfFailedRequests,--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(t),e.state=hi.FAILED,e.deferred.reject(t))}}function k$(e){let t=Q$(e);return e.state=hi.ACTIVE,Xh.push(e),++fo.numberOfActiveRequests,++fo.numberOfActiveRequestsEver,++PA[e.serverKey],e.requestFunction().then(eBe(e)).catch(tBe(e)),t}function lC(e){let t=e.state===hi.ACTIVE;if(e.state=hi.CANCELLED,++fo.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--fo.numberOfActiveRequests,--PA[e.serverKey],++fo.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}tr.update=function(){let e,t,n=0,i=Xh.length;for(e=0;e<i;++e){if(t=Xh[e],t.cancelled&&lC(t),t.state!==hi.ACTIVE){++n;continue}n>0&&(Xh[e-n]=t)}Xh.length-=n;let o=mc.internalArray,r=mc.length;for(e=0;e<r;++e)F$(o[e]);mc.resort();let s=Math.max(tr.maximumRequests-Xh.length,0),a=0;for(;a<s&&mc.length>0;){if(t=mc.pop(),t.cancelled){lC(t);continue}if(t.throttleByServer&&!tr.serverHasOpenSlots(t.serverKey)){lC(t);continue}k$(t),++a}nBe()};tr.getServerKey=function(e){let t=new FR.default(e);t.scheme()===""&&(t=t.absoluteTo($we),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=PA[n];return l(i)||(PA[n]=0),n};tr.request=function(e){if(mg(e.url)||Y0(e.url))return QR.raiseEvent(),e.state=hi.RECEIVED,e.requestFunction();if(++fo.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=tr.getServerKey(e.url)),tr.throttleRequests&&e.throttleByServer&&!tr.serverHasOpenSlots(e.serverKey))return;if(!tr.throttleRequests||!e.throttle)return k$(e);if(Xh.length>=tr.maximumRequests)return;F$(e);let t=mc.insert(e);if(l(t)){if(t===e)return;lC(t)}return Q$(e)};function nBe(){tr.debugShowStatistics&&(fo.numberOfActiveRequests===0&&fo.lastNumberOfActiveRequests>0&&(fo.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${fo.numberOfAttemptedRequests}`),fo.numberOfAttemptedRequests=0),fo.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${fo.numberOfCancelledRequests}`),fo.numberOfCancelledRequests=0),fo.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${fo.numberOfCancelledActiveRequests}`),fo.numberOfCancelledActiveRequests=0),fo.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${fo.numberOfFailedRequests}`),fo.numberOfFailedRequests=0)),fo.lastNumberOfActiveRequests=fo.numberOfActiveRequests)}tr.clearForSpecs=function(){for(;mc.length>0;){let t=mc.pop();lC(t)}let e=Xh.length;for(let t=0;t<e;++t)lC(Xh[t]);Xh.length=0,PA={},fo.numberOfAttemptedRequests=0,fo.numberOfActiveRequests=0,fo.numberOfCancelledRequests=0,fo.numberOfCancelledActiveRequests=0,fo.numberOfFailedRequests=0,fo.numberOfActiveRequestsEver=0,fo.lastNumberOfActiveRequests=0};tr.numberOfActiveRequestsByServer=function(e){return PA[e]};tr.requestHeap=mc;var Yc=tr;function US(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(US.prototype=Object.create(Error.prototype),US.prototype.constructor=US);US.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=`
|
||
${this.stack.toString()}`),e};var ce=US;var U$=Es(_u(),1);var GS={},J0={};GS.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])||(J0[n]=!0)};GS.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])&&delete J0[n]};function iBe(e){let t=new U$.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}GS.contains=function(e){let t=iBe(e);return!!(l(t)&&l(J0[t]))};GS.clear=function(){J0={}};var zS=GS;var V$=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function Mt(e){e=e??V.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Jh(e.templateValues,{}),this._queryParameters=Jh(e.queryParameters,{}),this.headers=Jh(e.headers,{}),this.request=e.request??new pr,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Jh(e,t){return l(e)?ze(e):t}Mt.createIfNeeded=function(e){return e instanceof Mt?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new Mt({url:e})};var Z0;Mt.supportsImageBitmapOptions=function(){return l(Z0)?Z0:typeof createImageBitmap!="function"?(Z0=Promise.resolve(!1),Z0):(Z0=Mt.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=qh(t[0]),i=qh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),Z0)};Object.defineProperties(Mt,{isBlobSupported:{get:function(){return V$}}});Object.defineProperties(Mt.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return j0(this._url)}},isDataUri:{get:function(){return mg(this._url)}},isBlobUri:{get:function(){return Y0(this._url)}},isCrossOriginUrl:{get:function(){return aC(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});Mt.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Mt.prototype.parseUrl=function(e,t,n,i){let o=new z$.default(e),r=oBe(o.query());this._queryParameters=t?UR(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(DA(i))),this._url=o.toString()};function oBe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Af(e)}function UR(e,t,n){if(!n)return wt(e,t);let i=ze(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Mt.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${rBe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function rBe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${K0(e)}`}Mt.prototype.setQueryParameters=function(e,t){t?this._queryParameters=UR(this._queryParameters,e,!1):this._queryParameters=UR(e,this._queryParameters,!1)};Mt.prototype.appendQueryParameters=function(e){this._queryParameters=UR(e,this._queryParameters,!0)};Mt.prototype.setTemplateValues=function(e,t){t?this._templateValues=wt(this._templateValues,e):this._templateValues=wt(e,this._templateValues)};Mt.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=wt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=wt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=wt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Mt.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Mt.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ze(this._queryParameters),e._templateValues=ze(this._templateValues),e.headers=ze(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Mt({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Mt.prototype.getBaseUri=function(e){return MR(this.getUrlComponent(e),e)};Mt.prototype.appendForwardSlash=function(){this._url=RR(this._url)};Mt.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Mt.fetchArrayBuffer=function(e){return new Mt(e).fetchArrayBuffer()};Mt.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Mt.fetchBlob=function(e){return new Mt(e).fetchBlob()};Mt.prototype.fetchImage=function(e){e=e??V.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(G5(this.request),!V$||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return U5({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return Mt.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return Mt.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new Mt({url:h}),U5({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function U5(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=yu();return Mt._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Yc.request(r);if(l(s))return s.catch(function(a){return r.state!==hi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=hi.UNISSUED,r.deferred=void 0,U5({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Mt.fetchImage=function(e){return new Mt(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Mt.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Mt.fetchText=function(e){return new Mt(e).fetchText()};Mt.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Mt.fetchJson=function(e){return new Mt(e).fetchJson()};Mt.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Mt.fetchXML=function(e){return new Mt(e).fetchXML()};Mt.prototype.fetchJsonp=function(e){e=e??"callback",G5(this.request);let t;do t=`loadJsonp${D.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return H$(this,e,t)};function H$(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=yu();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Mt._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Yc.request(o);if(l(s))return s.catch(function(a){return o.state!==hi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=hi.UNISSUED,o.deferred=void 0,H$(e,t,n)):Promise.reject(a)})})}Mt.fetchJsonp=function(e){return new Mt(e).fetchJsonp(e.callbackParameterName)};Mt.prototype._makeRequest=function(e){let t=this;G5(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=wt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=yu(),h=Mt._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Yc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==hi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=hi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function G5(e){if(e.state===hi.ISSUED||e.state===hi.ACTIVE)throw new ce("The Resource is already being fetched.");e.state=hi.UNISSUED,e.deferred=void 0}var sBe=/^data:(.*?)(;base64)?,(.*)$/;function kR(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function G$(e,t){let n=kR(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function aBe(e,t){t=t??"";let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return kR(i,o);case"arraybuffer":return G$(i,o);case"blob":return r=G$(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(kR(i,o),n);case"json":return JSON.parse(kR(i,o));default:}}Mt.prototype.fetch=function(e){return e=Jh(e,{}),e.method="GET",this._makeRequest(e)};Mt.fetch=function(e){return new Mt(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.delete=function(e){return e=Jh(e,{}),e.method="DELETE",this._makeRequest(e)};Mt.delete=function(e){return new Mt(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};Mt.prototype.head=function(e){return e=Jh(e,{}),e.method="HEAD",this._makeRequest(e)};Mt.head=function(e){return new Mt(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.options=function(e){return e=Jh(e,{}),e.method="OPTIONS",this._makeRequest(e)};Mt.options=function(e){return new Mt(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.post=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};Mt.post=function(e){return new Mt(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.put=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};Mt.put=function(e){return new Mt(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.patch=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};Mt.patch=function(e){return new Mt(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt._Implementations={};Mt._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(zS.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};Mt._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;Mt.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){Mt._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=yu(),h=Mt._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(A){if(!l(A)){n.reject(new ce(`Successfully retrieved ${s} but it contained no content.`));return}return Mt.createImageBitmapFromBlob(A,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(A){n.resolve(A)})}).catch(function(a){n.reject(a)})};Mt.createImageBitmapFromBlob=function(e,t){return Mo.defined("options",t),Mo.typeOf.bool("options.flipY",t.flipY),Mo.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),Mo.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"from-image",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function cBe(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new vA(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new vA)})}var lBe=typeof XMLHttpRequest>"u";Mt._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=sBe.exec(e);if(a!==null){r.resolve(aBe(a,t));return}if(lBe){cBe(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(zS.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new vA(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(_){let y=_.split(": "),C=y.shift();m[C]=y.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(A){r.reject(A)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new ce("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new vA)},c.send(i),c};Mt._Implementations.loadAndExecuteScript=function(e,t,n){return q0(e,t).catch(function(i){n.reject(i)})};Mt._DefaultImplementations={};Mt._DefaultImplementations.createImage=Mt._Implementations.createImage;Mt._DefaultImplementations.loadWithXhr=Mt._Implementations.loadWithXhr;Mt._DefaultImplementations.loadAndExecuteScript=Mt._Implementations.loadAndExecuteScript;Mt.DEFAULT=Object.freeze(new Mt({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var we=Mt;function HS(e){e=e??V.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?W$(this,e.data):W$(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}HS.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new ce(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new HS({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};HS.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new sC(0,0,0,0,0),t}});HS.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new sC(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=K.lessThanOrEquals(a,e),f=!l(c),h=f||K.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,Y$(this,n,this._samples,e,o,r,t),t}let s=qo(n,e,K.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,Y$(this,n,this._samples,e,o,r,t),t};function uBe(e,t){return K.compare(e.julianDate,t)}function W$(e,t){if(!l(t.columnNames))throw new ce("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new ce("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new ce("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,A=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let _=u[g+n],y=u[g+c],C=_+ri.MODIFIED_JULIAN_DATE_DIFFERENCE,E=new K(C,y,oi.TAI);if(f.push(E),A){if(y!==h&&l(h)){let I=K.leapSeconds,b=qo(I,E,uBe);if(b<0){let S=new so(E,y);I.splice(~b,0,S)}}h=y}}}function j$(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function VS(e,t,n){return t+e*(n-t)}function Y$(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return j$(e,n,o,a,s),s;if(i.equals(u))return j$(e,n,r,a,s),s;let f=K.secondsDifference(i,c)/K.secondsDifference(u,c),h=o*a,A=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[A+e._ut1MinusUtcSecondsColumn],_=m-g;if(_>.5||_<-.5){let y=n[h+e._taiMinusUtcSecondsColumn],C=n[A+e._taiMinusUtcSecondsColumn];y!==C&&(u.equals(i)?g=m:m-=C-y)}return s.xPoleWander=VS(f,n[h+e._xPoleWanderRadiansColumn],n[A+e._xPoleWanderRadiansColumn]),s.yPoleWander=VS(f,n[h+e._yPoleWanderRadiansColumn],n[A+e._yPoleWanderRadiansColumn]),s.xPoleOffset=VS(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[A+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=VS(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[A+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=VS(f,g,m),s}var GR=HS;function Ac(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Ac.fromQuaternion=function(e,t){l(t)||(t=new Ac);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-D.asinClamped(n),t};Ac.fromDegrees=function(e,t,n,i){return l(i)||(i=new Ac),i.heading=e*D.RADIANS_PER_DEGREE,i.pitch=t*D.RADIANS_PER_DEGREE,i.roll=n*D.RADIANS_PER_DEGREE,i};Ac.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Ac(e.heading,e.pitch,e.roll)};Ac.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Ac.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.heading,t.heading,n,i)&&D.equalsEpsilon(e.pitch,t.pitch,n,i)&&D.equalsEpsilon(e.roll,t.roll,n,i)};Ac.prototype.clone=function(e){return Ac.clone(this,e)};Ac.prototype.equals=function(e){return Ac.equals(this,e)};Ac.prototype.equalsEpsilon=function(e,t,n){return Ac.equalsEpsilon(this,e,t,n)};Ac.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var pc=Ac;var q$=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function fBe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=q$.exec(i);if(o!==null)return o[1]}}var zR;function K$(e){return typeof document>"u"?e:(l(zR)||(zR=document.createElement("a")),zR.href=e,zR.href)}var uC;function X$(){if(l(uC))return uC;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(import.meta?.url)?e=DA(".",import.meta.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?e=DA("..",fC("Core/buildModuleUrl.js")):e=fBe(),uC=new we({url:K$(e)}),uC.appendForwardSlash(),uC}function dBe(e){return K$(yR.toUrl(`../${e}`))}function J$(e){return X$().getDerivedResource({url:e}).url}var VR;function fC(e){return l(VR)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?VR=dBe:VR=J$),VR(e)}fC._cesiumScriptRegex=q$;fC._buildModuleUrlFromBaseUrl=J$;fC._clearBaseResource=function(){uC=void 0};fC.setBaseUrl=function(e){uC=we.DEFAULT.getDerivedResource({url:e})};fC.getCesiumBaseUrl=X$;var fn=fC;function hBe(e,t,n){this.x=e,this.y=t,this.s=n}var $0=hBe;function H5(e){e=e??V.EMPTY_OBJECT,this._xysFileUrlTemplate=we.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new K(this._sampleZeroJulianEphemerisDate,0,oi.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var mBe=new K(0,0,oi.TAI);function z5(e,t,n){let i=mBe;return i.dayNumber=t,i.secondsOfDay=n,K.daysDifference(i,e._sampleZeroDateTT)}H5.prototype.preload=function(e,t,n,i){let o=z5(this,e,t),r=z5(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(V5(this,h));return Promise.all(f)};H5.prototype.computeXysRadians=function(e,t,n){let i=z5(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(V5(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(V5(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new $0(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,A=this._denominators,g=this._coef,m=this._xTable,_,y;for(_=0;_<=r;++_)h[_]=f-m[_];for(_=0;_<=r;++_){for(g[_]=1,y=0;y<=r;++y)y!==_&&(g[_]*=h[y]);g[_]*=A[_];let C=(s+_)*3;n.x+=g[_]*u[C++],n.y+=g[_]*u[C++],n.s+=g[_]*u[C]}return n};function V5(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new we({url:fn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var HR=H5;function st(e,t,n,i,o,r,s,a,c){this[0]=e??0,this[1]=i??0,this[2]=s??0,this[3]=t??0,this[4]=o??0,this[5]=a??0,this[6]=n??0,this[7]=r??0,this[8]=c??0}st.packedLength=9;st.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};st.unpack=function(e,t,n){return t=t??0,l(n)||(n=new st),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};st.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)st.pack(e[o],t,o*9);return t};st.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=st.unpack(e,i,t[o])}return t};st.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new st(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};st.fromArray=st.unpack;st.fromColumnMajorArray=function(e,t){return st.clone(e,t)};st.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new st(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};st.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,A=n-s-u+h,g=2*(i-f),m=2*(o+c),_=2*(i+f),y=-n+s-u+h,C=2*(a-r),E=2*(o-c),I=2*(a+r),b=-n-s+u+h;return l(t)?(t[0]=A,t[1]=_,t[2]=E,t[3]=g,t[4]=y,t[5]=I,t[6]=m,t[7]=C,t[8]=b,t):new st(A,g,m,_,y,C,E,I,b)};st.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,A=o*i+a*r*s,g=-a*i+o*r*s,m=-r,_=a*n,y=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=A,t[5]=_,t[6]=f,t[7]=g,t[8]=y,t):new st(c,u,f,h,A,g,m,_,y)};st.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new st(e.x,0,0,0,e.y,0,0,0,e.z)};st.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new st(e,0,0,0,e,0,0,0,e)};st.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new st(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};st.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new st(1,0,0,0,n,-i,0,i,n)};st.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new st(n,0,i,0,1,0,-i,0,n)};st.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new st(n,-i,0,i,n,0,0,0,1)};st.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};st.getElementIndex=function(e,t){return e*3+t};st.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};st.setColumn=function(e,t,n,i){i=st.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};st.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};st.setRow=function(e,t,n,i){return i=st.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var ABe=new d;st.setScale=function(e,t,n){let i=st.getScale(e,ABe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var pBe=new d;st.setUniformScale=function(e,t,n){let i=st.getScale(e,pBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var W5=new d;st.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],W5)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],W5)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],W5)),t};var Z$=new d;st.getMaximumScale=function(e){return st.getScale(e,Z$),d.maximumComponent(Z$)};var gBe=new d;st.setRotation=function(e,t,n){let i=st.getScale(e,gBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var _Be=new d;st.getRotation=function(e,t){let n=st.getScale(e,_Be);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};st.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};st.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};st.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};st.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};st.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};st.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t};st.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function yBe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var j5=[1,0,0],Y5=[2,2,1];function CBe(e){let t=0;for(let n=0;n<3;++n){let i=e[st.getElementIndex(Y5[n],j5[n])];t+=2*i*i}return Math.sqrt(t)}function EBe(e,t){let n=D.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[st.getElementIndex(Y5[u],j5[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=j5[o],c=Y5[o];if(Math.abs(e[st.getElementIndex(c,a)])>n){let u=e[st.getElementIndex(c,c)],f=e[st.getElementIndex(a,a)],h=e[st.getElementIndex(c,a)],A=(u-f)/2/h,g;A<0?g=-1/(-A+Math.sqrt(1+A*A)):g=1/(A+Math.sqrt(1+A*A)),r=1/Math.sqrt(1+g*g),s=g*r}return t=st.clone(st.IDENTITY,t),t[st.getElementIndex(a,a)]=t[st.getElementIndex(c,c)]=r,t[st.getElementIndex(c,a)]=s,t[st.getElementIndex(a,c)]=-s,t}var WR=new st,$$=new st;st.computeEigenDecomposition=function(e,t){let n=D.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=st.clone(st.IDENTITY,t.unitary),a=t.diagonal=st.clone(e,t.diagonal),c=n*yBe(a);for(;r<i&&CBe(a)>c;)EBe(a,WR),st.transpose(WR,$$),st.multiply(a,WR,a),st.multiply($$,a,a),st.multiply(s,WR,s),++o>2&&(++r,o=0);return t};st.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};st.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};st.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=st.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let A=1/h;return st.multiplyByScalar(t,A,t)};var IBe=new st;st.inverseTranspose=function(e,t){return st.inverse(st.transpose(e,IBe),t)};st.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};st.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};st.IDENTITY=Object.freeze(new st(1,0,0,0,1,0,0,0,1));st.ZERO=Object.freeze(new st(0,0,0,0,0,0,0,0,0));st.COLUMN0ROW0=0;st.COLUMN0ROW1=1;st.COLUMN0ROW2=2;st.COLUMN1ROW0=3;st.COLUMN1ROW1=4;st.COLUMN1ROW2=5;st.COLUMN2ROW0=6;st.COLUMN2ROW1=7;st.COLUMN2ROW2=8;Object.defineProperties(st.prototype,{length:{get:function(){return st.packedLength}}});st.prototype.clone=function(e){return st.clone(this,e)};st.prototype.equals=function(e){return st.equals(this,e)};st.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};st.prototype.equalsEpsilon=function(e,t){return st.equalsEpsilon(this,e,t)};st.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]})
|
||
(${this[1]}, ${this[4]}, ${this[7]})
|
||
(${this[2]}, ${this[5]}, ${this[8]})`};var J=st;function rt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=A??0,this[4]=t??0,this[5]=r??0,this[6]=u??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=f??0,this[11]=m??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=_??0}rt.packedLength=16;rt.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};rt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new rt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};rt.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)rt.pack(e[o],t,o*16);return t};rt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=rt.unpack(e,i,t[o])}return t};rt.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new rt(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};rt.fromArray=rt.unpack;rt.fromColumnMajorArray=function(e,t){return rt.clone(e,t)};rt.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new rt(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};rt.fromRotationTranslation=function(e,t,n){return t=t??d.ZERO,l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new rt(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};rt.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new rt);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,A=t.y*t.z,g=t.y*t.w,m=t.z*t.z,_=t.z*t.w,y=t.w*t.w,C=a-h-m+y,E=2*(c-_),I=2*(u+g),b=2*(c+_),S=-a+h-m+y,B=2*(A-f),v=2*(u-g),P=2*(A+f),N=-a-h+m+y;return i[0]=C*o,i[1]=b*o,i[2]=v*o,i[3]=0,i[4]=E*r,i[5]=S*r,i[6]=P*r,i[7]=0,i[8]=I*s,i[9]=B*s,i[10]=N*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};rt.fromTranslationRotationScale=function(e,t){return rt.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};rt.fromTranslation=function(e,t){return rt.fromRotationTranslation(J.IDENTITY,e,t)};rt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};rt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};rt.fromRotation=function(e,t){return l(t)||(t=new rt),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var eI=new d,tI=new d,WS=new d;rt.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,eI),d.normalize(d.cross(eI,o,tI),tI),d.normalize(d.cross(tI,eI,WS),WS);let r=tI.x,s=tI.y,a=tI.z,c=eI.x,u=eI.y,f=eI.z,h=WS.x,A=WS.y,g=WS.z,m=n.x,_=n.y,y=n.z,C=r*-m+s*-_+a*-y,E=h*-m+A*-_+g*-y,I=c*m+u*_+f*y;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=A,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=C,t[13]=E,t[14]=I,t[15]=1,t):new rt(r,s,a,C,h,A,g,E,-c,-u,-f,I,0,0,0,1)};rt.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};rt.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,A=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=A,s[15]=1,s};rt.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),A=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=A,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};rt.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,A=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=A,r[15]=0,r};rt.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new rt),e=e??V.EMPTY_OBJECT;let o=e.x??0,r=e.y??0,s=e.width??0,a=e.height??0;t=t??0,n=n??1;let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,A=u,g=f,m=o+c,_=r+u,y=t+f,C=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=A,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=_,i[14]=y,i[15]=C,i};rt.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};rt.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};rt.getElementIndex=function(e,t){return e*4+t};rt.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};rt.setColumn=function(e,t,n,i){i=rt.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};rt.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};rt.setRow=function(e,t,n,i){return i=rt.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};rt.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var xBe=new d;rt.setScale=function(e,t,n){let i=rt.getScale(e,xBe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var bBe=new d;rt.setUniformScale=function(e,t,n){let i=rt.getScale(e,bBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var q5=new d;rt.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],q5)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],q5)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],q5)),t};var eee=new d;rt.getMaximumScale=function(e){return rt.getScale(e,eee),d.maximumComponent(eee)};var TBe=new d;rt.setRotation=function(e,t,n){let i=rt.getScale(e,TBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var SBe=new d;rt.getRotation=function(e,t){let n=rt.getScale(e,SBe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};rt.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],A=e[9],g=e[10],m=e[11],_=e[12],y=e[13],C=e[14],E=e[15],I=t[0],b=t[1],S=t[2],B=t[3],v=t[4],P=t[5],N=t[6],L=t[7],p=t[8],x=t[9],T=t[10],w=t[11],M=t[12],O=t[13],U=t[14],Q=t[15],z=i*I+a*b+h*S+_*B,F=o*I+c*b+A*S+y*B,H=r*I+u*b+g*S+C*B,W=s*I+f*b+m*S+E*B,Z=i*v+a*P+h*N+_*L,Y=o*v+c*P+A*N+y*L,$=r*v+u*P+g*N+C*L,X=s*v+f*P+m*N+E*L,he=i*p+a*x+h*T+_*w,ge=o*p+c*x+A*T+y*w,fe=r*p+u*x+g*T+C*w,ye=s*p+f*x+m*T+E*w,Ie=i*M+a*O+h*U+_*Q,ve=o*M+c*O+A*U+y*Q,Te=r*M+u*O+g*U+C*Q,ke=s*M+f*O+m*U+E*Q;return n[0]=z,n[1]=F,n[2]=H,n[3]=W,n[4]=Z,n[5]=Y,n[6]=$,n[7]=X,n[8]=he,n[9]=ge,n[10]=fe,n[11]=ye,n[12]=Ie,n[13]=ve,n[14]=Te,n[15]=ke,n};rt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};rt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};rt.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=e[12],g=e[13],m=e[14],_=t[0],y=t[1],C=t[2],E=t[4],I=t[5],b=t[6],S=t[8],B=t[9],v=t[10],P=t[12],N=t[13],L=t[14],p=i*_+s*y+u*C,x=o*_+a*y+f*C,T=r*_+c*y+h*C,w=i*E+s*I+u*b,M=o*E+a*I+f*b,O=r*E+c*I+h*b,U=i*S+s*B+u*v,Q=o*S+a*B+f*v,z=r*S+c*B+h*v,F=i*P+s*N+u*L+A,H=o*P+a*N+f*L+g,W=r*P+c*N+h*L+m;return n[0]=p,n[1]=x,n[2]=T,n[3]=0,n[4]=w,n[5]=M,n[6]=O,n[7]=0,n[8]=U,n[9]=Q,n[10]=z,n[11]=0,n[12]=F,n[13]=H,n[14]=W,n[15]=1,n};rt.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=t[0],g=t[1],m=t[2],_=t[3],y=t[4],C=t[5],E=t[6],I=t[7],b=t[8],S=i*A+s*g+u*m,B=o*A+a*g+f*m,v=r*A+c*g+h*m,P=i*_+s*y+u*C,N=o*_+a*y+f*C,L=r*_+c*y+h*C,p=i*E+s*I+u*b,x=o*E+a*I+f*b,T=r*E+c*I+h*b;return n[0]=S,n[1]=B,n[2]=v,n[3]=0,n[4]=P,n[5]=N,n[6]=L,n[7]=0,n[8]=p,n[9]=x,n[10]=T,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};rt.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?rt.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};rt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};rt.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};rt.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};rt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};rt.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t};rt.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};rt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};rt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};rt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};rt.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};rt.getMatrix3=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var wBe=new J,BBe=new J,DBe=new se,vBe=new se(0,0,0,1);rt.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],A=e[10],g=e[14],m=e[3],_=e[7],y=e[11],C=e[15],E=A*C,I=g*y,b=h*C,S=g*_,B=h*y,v=A*_,P=f*C,N=g*m,L=f*y,p=A*m,x=f*_,T=h*m,w=E*a+S*c+B*u-(I*a+b*c+v*u),M=I*s+P*c+p*u-(E*s+N*c+L*u),O=b*s+N*a+x*u-(S*s+P*a+T*u),U=v*s+L*a+T*c-(B*s+p*a+x*c),Q=I*i+b*o+v*r-(E*i+S*o+B*r),z=E*n+N*o+L*r-(I*n+P*o+p*r),F=S*n+P*i+T*r-(b*n+N*i+x*r),H=B*n+p*i+x*o-(v*n+L*i+T*o);E=o*u,I=r*c,b=i*u,S=r*a,B=i*c,v=o*a,P=n*u,N=r*s,L=n*c,p=o*s,x=n*a,T=i*s;let W=E*_+S*y+B*C-(I*_+b*y+v*C),Z=I*m+P*y+p*C-(E*m+N*y+L*C),Y=b*m+N*_+x*C-(S*m+P*_+T*C),$=v*m+L*_+T*y-(B*m+p*_+x*y),X=b*A+v*g+I*h-(B*g+E*h+S*A),he=L*g+E*f+N*A-(P*A+p*g+I*f),ge=P*h+T*g+S*f-(x*g+b*f+N*h),fe=x*A+B*f+p*h-(L*h+T*A+v*f),ye=n*w+i*M+o*O+r*U;if(Math.abs(ye)<D.EPSILON21){if(J.equalsEpsilon(rt.getMatrix3(e,wBe),BBe,D.EPSILON7)&&se.equals(rt.getRow(e,3,DBe),vBe))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new ce("matrix is not invertible because its determinate is zero.")}return ye=1/ye,t[0]=w*ye,t[1]=M*ye,t[2]=O*ye,t[3]=U*ye,t[4]=Q*ye,t[5]=z*ye,t[6]=F*ye,t[7]=H*ye,t[8]=W*ye,t[9]=Z*ye,t[10]=Y*ye,t[11]=$*ye,t[12]=X*ye,t[13]=he*ye,t[14]=ge*ye,t[15]=fe*ye,t};rt.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],A=e[13],g=e[14],m=-n*h-i*A-o*g,_=-r*h-s*A-a*g,y=-c*h-u*A-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=_,t[14]=y,t[15]=1,t};var PBe=new rt;rt.inverseTranspose=function(e,t){return rt.inverse(rt.transpose(e,PBe),t)};rt.IDENTITY=Object.freeze(new rt(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));rt.ZERO=Object.freeze(new rt(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));rt.COLUMN0ROW0=0;rt.COLUMN0ROW1=1;rt.COLUMN0ROW2=2;rt.COLUMN0ROW3=3;rt.COLUMN1ROW0=4;rt.COLUMN1ROW1=5;rt.COLUMN1ROW2=6;rt.COLUMN1ROW3=7;rt.COLUMN2ROW0=8;rt.COLUMN2ROW1=9;rt.COLUMN2ROW2=10;rt.COLUMN2ROW3=11;rt.COLUMN3ROW0=12;rt.COLUMN3ROW1=13;rt.COLUMN3ROW2=14;rt.COLUMN3ROW3=15;Object.defineProperties(rt.prototype,{length:{get:function(){return rt.packedLength}}});rt.prototype.clone=function(e){return rt.clone(this,e)};rt.prototype.equals=function(e){return rt.equals(this,e)};rt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};rt.prototype.equalsEpsilon=function(e,t){return rt.equalsEpsilon(this,e,t)};rt.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]})
|
||
(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]})
|
||
(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]})
|
||
(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var R=rt;var Ag,Vr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},vl={};Object.defineProperties(vl,{element:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenElement]}},changeEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenchange}},errorEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenerror}},enabled:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenEnabled]}},fullscreen:{get:function(){if(vl.supportsFullscreen())return vl.element!==null}}});vl.supportsFullscreen=function(){if(l(Ag))return Ag;Ag=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Vr.requestFullscreen="requestFullscreen",Vr.exitFullscreen="exitFullscreen",Vr.fullscreenEnabled="fullscreenEnabled",Vr.fullscreenElement="fullscreenElement",Vr.fullscreenchange="fullscreenchange",Vr.fullscreenerror="fullscreenerror",Ag=!0,Ag;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Vr.requestFullscreen=n,Ag=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Vr.requestFullscreen=n,Ag=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Vr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Vr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Vr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Vr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Vr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Vr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Vr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Vr.fullscreenerror=n)}return Ag};vl.requestFullscreen=function(e,t){vl.supportsFullscreen()&&e[Vr.requestFullscreen]({vrDisplay:t})};vl.exitFullscreen=function(){vl.supportsFullscreen()&&document[Vr.exitFullscreen]()};vl._names=Vr;var Hr=vl;var gc;typeof navigator<"u"?gc=navigator:gc={};function dC(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var jR,tee;function e9(){if(!l(jR)&&(jR=!1,!ZR())){let e=/ Chrome\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(jR=!0,tee=dC(e[1]))}return jR}function RBe(){return e9()&&tee}var YR,nee;function iee(){if(!l(YR)&&(YR=!1,!e9()&&!ZR()&&/ Safari\/[\.0-9]+/.test(gc.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(YR=!0,nee=dC(e[1]))}return YR}function MBe(){return iee()&&nee}var qR,Z5;function oee(){if(!l(qR)){qR=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(gc.userAgent);e!==null&&(qR=!0,Z5=dC(e[1]),Z5.isNightly=!!e[2])}return qR}function NBe(){return oee()&&Z5}var jS,$5;function ree(){if(!l(jS)){jS=!1;let e;gc.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1]))):gc.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1])))}return jS}function LBe(){return ree()&&$5}var KR,see;function ZR(){if(!l(KR)){KR=!1;let e=/ Edg\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(KR=!0,see=dC(e[1]))}return KR}function OBe(){return ZR()&&see}var XR,t9;function $R(){if(!l(XR)){XR=!1;let e=/Firefox\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(XR=!0,t9=dC(e[1]))}return XR}var K5;function FBe(){return l(K5)||(K5=/Windows/i.test(gc.appVersion)),K5}var X5;function QBe(){return l(X5)||(X5=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),X5}function kBe(){return $R()&&t9}var J5;function UBe(){return l(J5)||(J5=!$R()&&typeof PointerEvent<"u"&&(!l(gc.pointerEnabled)||gc.pointerEnabled)),J5}var aee,JR;function cee(){if(!l(JR)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;JR=l(t)&&t!=="",JR&&(aee=t)}return JR}function GBe(){return cee()?aee:void 0}function qc(){return qc._result}qc._promise=void 0;qc._result=void 0;qc.initialize=function(){return l(qc._promise)||(qc._promise=new Promise(e=>{let t=new Image;t.onload=function(){qc._result=t.width>0&&t.height>0,e(qc._result)},t.onerror=function(){qc._result=!1,e(qc._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),qc._promise};Object.defineProperties(qc,{initialized:{get:function(){return l(qc._result)}}});var nI=[];typeof ArrayBuffer<"u"&&(nI.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&nI.push(BigInt64Array),typeof BigUint64Array<"u"&&nI.push(BigUint64Array));var pf={isChrome:e9,chromeVersion:RBe,isSafari:iee,safariVersion:MBe,isWebkit:oee,webkitVersion:NBe,isInternetExplorer:ree,internetExplorerVersion:LBe,isEdge:ZR,edgeVersion:OBe,isFirefox:$R,firefoxVersion:kBe,isWindows:FBe,isIPadOrIOS:QBe,hardwareConcurrency:gc.hardwareConcurrency??3,supportsPointerEvents:UBe,supportsImageRenderingPixelated:cee,supportsWebP:qc,imageRenderingValue:GBe,typedArrayTypes:nI};pf.supportsBasis=function(e){return pf.supportsWebAssembly()&&e.context.supportsBasis};pf.supportsFullscreen=function(){return Hr.supportsFullscreen()};pf.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};pf.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};pf.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};pf.supportsBigInt=function(){return typeof BigInt<"u"};pf.supportsWebWorkers=function(){return typeof Worker<"u"};pf.supportsWebAssembly=function(){return typeof WebAssembly<"u"};pf.supportsWebgl2=function(e){return e.context.webgl2};pf.supportsEsmWebWorkers=function(){return!$R()||parseInt(t9)>=114};var jt=pf;function at(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var YS=new d;at.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);YS=d.normalize(e,YS);let r=YS.x*o,s=YS.y*o,a=YS.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new at(r,s,a,c)};var zBe=[1,2,0],VBe=new Array(3);at.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[J.COLUMN0ROW0],c=e[J.COLUMN1ROW1],u=e[J.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[J.COLUMN1ROW2]-e[J.COLUMN2ROW1])*n,o=(e[J.COLUMN2ROW0]-e[J.COLUMN0ROW2])*n,r=(e[J.COLUMN0ROW1]-e[J.COLUMN1ROW0])*n;else{let h=zBe,A=0;c>a&&(A=1),u>a&&u>c&&(A=2);let g=h[A],m=h[g];n=Math.sqrt(e[J.getElementIndex(A,A)]-e[J.getElementIndex(g,g)]-e[J.getElementIndex(m,m)]+1);let _=VBe;_[A]=.5*n,n=.5/n,s=(e[J.getElementIndex(m,g)]-e[J.getElementIndex(g,m)])*n,_[g]=(e[J.getElementIndex(g,A)]+e[J.getElementIndex(A,g)])*n,_[m]=(e[J.getElementIndex(m,A)]+e[J.getElementIndex(A,m)])*n,i=-_[0],o=-_[1],r=-_[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new at(i,o,r,s)};var lee=new at,uee=new at,n9=new at,fee=new at;at.fromHeadingPitchRoll=function(e,t){return fee=at.fromAxisAngle(d.UNIT_X,e.roll,lee),n9=at.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=at.multiply(n9,fee,n9),uee=at.fromAxisAngle(d.UNIT_Z,-e.heading,lee),at.multiply(uee,t,t)};var eM=new d,i9=new d,Md=new at,dee=new at,tM=new at;at.packedLength=4;at.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};at.unpack=function(e,t,n){return t=t??0,l(n)||(n=new at),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};at.packedInterpolationLength=3;at.convertPackedArrayForInterpolation=function(e,t,n,i){at.unpack(e,n*4,tM),at.conjugate(tM,tM);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;at.unpack(e,(t+o)*4,Md),at.multiply(Md,tM,Md),Md.w<0&&at.negate(Md,Md),at.computeAxis(Md,eM);let a=at.computeAngle(Md);l(i)||(i=[]),i[s]=eM.x*a,i[s+1]=eM.y*a,i[s+2]=eM.z*a}};at.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new at),d.fromArray(e,0,i9);let r=d.magnitude(i9);return at.unpack(t,i*4,dee),r===0?at.clone(at.IDENTITY,Md):at.fromAxisAngle(i9,r,Md),at.multiply(Md,dee,o)};at.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new at(e.x,e.y,e.z,e.w)};at.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};at.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};at.magnitude=function(e){return Math.sqrt(at.magnitudeSquared(e))};at.normalize=function(e,t){let n=1/at.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};at.inverse=function(e,t){let n=at.magnitudeSquared(e);return t=at.conjugate(e,t),at.multiplyByScalar(t,1/n,t)};at.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};at.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};at.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};at.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};at.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,A=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=A,n.z=g,n.w=m,n};at.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};at.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};at.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<D.EPSILON6||Math.abs(n+1)<D.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};at.computeAngle=function(e){return Math.abs(e.w-1)<D.EPSILON6?0:2*Math.acos(e.w)};var o9=new at;at.lerp=function(e,t,n,i){return o9=at.multiplyByScalar(t,n,o9),i=at.multiplyByScalar(e,1-n,i),at.add(o9,i,i)};var hee=new at,r9=new at,s9=new at;at.slerp=function(e,t,n,i){let o=at.dot(e,t),r=t;if(o<0&&(o=-o,r=hee=at.negate(t,hee)),1-o<D.EPSILON6)return at.lerp(e,r,n,i);let s=Math.acos(o);return r9=at.multiplyByScalar(e,Math.sin((1-n)*s),r9),s9=at.multiplyByScalar(r,Math.sin(n*s),s9),i=at.add(r9,s9,i),at.multiplyByScalar(i,1/Math.sin(s),i)};at.log=function(e,t){let n=D.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};at.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var HBe=new d,WBe=new d,qS=new at,iI=new at;at.computeInnerQuadrangle=function(e,t,n,i){let o=at.conjugate(t,qS);at.multiply(o,n,iI);let r=at.log(iI,HBe);at.multiply(o,e,iI);let s=at.log(iI,WBe);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),at.exp(r,qS),at.multiply(t,qS,i)};at.squad=function(e,t,n,i,o,r){let s=at.slerp(e,t,o,qS),a=at.slerp(n,i,o,iI);return at.slerp(s,a,2*o*(1-o),r)};var jBe=new at,mee=1.9011074535173003,nM=jt.supportsTypedArrays()?new Float32Array(8):[],iM=jt.supportsTypedArrays()?new Float32Array(8):[],RA=jt.supportsTypedArrays()?new Float32Array(8):[],MA=jt.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;nM[e]=1/(t*n),iM[e]=t/n}nM[7]=mee/136;iM[7]=mee*8/17;at.fastSlerp=function(e,t,n,i){let o=at.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)RA[g]=(nM[g]*c-iM[g])*s,MA[g]=(nM[g]*u-iM[g])*s;let f=r*n*(1+RA[0]*(1+RA[1]*(1+RA[2]*(1+RA[3]*(1+RA[4]*(1+RA[5]*(1+RA[6]*(1+RA[7])))))))),h=a*(1+MA[0]*(1+MA[1]*(1+MA[2]*(1+MA[3]*(1+MA[4]*(1+MA[5]*(1+MA[6]*(1+MA[7])))))))),A=at.multiplyByScalar(e,h,jBe);return at.multiplyByScalar(t,f,i),at.add(A,i,i)};at.fastSquad=function(e,t,n,i,o,r){let s=at.fastSlerp(e,t,o,qS),a=at.fastSlerp(n,i,o,iI);return at.fastSlerp(s,a,2*o*(1-o),r)};at.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};at.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};at.ZERO=Object.freeze(new at(0,0,0,0));at.IDENTITY=Object.freeze(new at(0,0,0,1));at.prototype.clone=function(e){return at.clone(this,e)};at.prototype.equals=function(e){return at.equals(this,e)};at.prototype.equalsEpsilon=function(e,t){return at.equalsEpsilon(this,e,t)};at.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=at;var Ti={},a9={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},oI={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},c9={},Pl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},pg=new d,gg=new d,_g=new d;Ti.localFrameToFixedFrameGenerator=function(e,t){if(!a9.hasOwnProperty(e)||!a9[e].hasOwnProperty(t))throw new me("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=a9[e][t],i,o=e+t;return l(c9[o])?i=c9[o]:(i=function(r,s,a){if(l(a)||(a=new R),d.equalsEpsilon(r,d.ZERO,D.EPSILON14))d.unpack(oI[e],0,pg),d.unpack(oI[t],0,gg),d.unpack(oI[n],0,_g);else if(D.equalsEpsilon(r.x,0,D.EPSILON14)&&D.equalsEpsilon(r.y,0,D.EPSILON14)){let c=D.sign(r.z);d.unpack(oI[e],0,pg),e!=="east"&&e!=="west"&&d.multiplyByScalar(pg,c,pg),d.unpack(oI[t],0,gg),t!=="east"&&t!=="west"&&d.multiplyByScalar(gg,c,gg),d.unpack(oI[n],0,_g),n!=="east"&&n!=="west"&&d.multiplyByScalar(_g,c,_g)}else{s=s??te.default,s.geodeticSurfaceNormal(r,Pl.up);let c=Pl.up,u=Pl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,Pl.east),d.cross(c,u,Pl.north),d.multiplyByScalar(Pl.up,-1,Pl.down),d.multiplyByScalar(Pl.east,-1,Pl.west),d.multiplyByScalar(Pl.north,-1,Pl.south),pg=Pl[e],gg=Pl[t],_g=Pl[n]}return a[0]=pg.x,a[1]=pg.y,a[2]=pg.z,a[3]=0,a[4]=gg.x,a[5]=gg.y,a[6]=gg.z,a[7]=0,a[8]=_g.x,a[9]=_g.y,a[10]=_g.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},c9[o]=i),i};Ti.eastNorthUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("east","north");Ti.northEastDownToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","east");Ti.northUpEastToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","up");Ti.northWestUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","west");var YBe=new Le,qBe=new d(1,1,1),KBe=new R;Ti.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??Ti.eastNorthUpToFixedFrame;let r=Le.fromHeadingPitchRoll(t,YBe),s=R.fromTranslationQuaternionRotationScale(d.ZERO,r,qBe,KBe);return o=i(e,n,o),R.multiply(o,s,o)};var XBe=new R,JBe=new J;Ti.headingPitchRollQuaternion=function(e,t,n,i,o){let r=Ti.headingPitchRollToFixedFrame(e,t,n,i,XBe),s=R.getMatrix3(r,JBe);return Le.fromRotationMatrix(s,o)};var ZBe=new d(1,1,1),$Be=new d,Aee=new R,eDe=new R,tDe=new J,nDe=new Le;Ti.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??te.default,n=n??Ti.eastNorthUpToFixedFrame,l(i)||(i=new pc);let o=R.getTranslation(e,$Be);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=R.inverseTransformation(n(o,t,Aee),Aee),s=R.setScale(e,ZBe,eDe);s=R.setTranslation(s,d.ZERO,s),r=R.multiply(r,s,r);let a=Le.fromRotationMatrix(R.getMatrix3(r,tDe),nDe);return a=Le.normalize(a,a),pc.fromQuaternion(a,i)};var iDe=6*3600+2460+50.54841,oDe=8640184812866e-6,rDe=.093104,sDe=-62e-7,aDe=11772758384668e-32,cDe=72921158553e-15,lDe=D.TWO_PI/86400,oM=new K;Ti.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=Ti.computeIcrfToFixedMatrix(e,t);return l(n)||(n=Ti.computeTemeToPseudoFixedMatrix(e,t)),n};Ti.computeTemeToPseudoFixedMatrix=function(e,t){oM=K.addSeconds(e,-K.computeTaiMinusUtc(e),oM);let n=oM.dayNumber,i=oM.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ri.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ri.DAYS_PER_JULIAN_CENTURY;let a=(iDe+o*(oDe+o*(rDe+o*sDe)))*lDe%D.TWO_PI,c=cDe+aDe*(n-24515455e-1),u=(i+ri.SECONDS_PER_DAY*.5)%ri.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),A=Math.sin(f);return l(t)?(t[0]=h,t[1]=-A,t[2]=0,t[3]=A,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new J(h,A,0,-A,h,0,0,0,1)};Ti.iau2006XysData=new HR;Ti.earthOrientationParameters=GR.NONE;var f9=32.184,uDe=2451545;Ti.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+f9,i=e.stop.dayNumber,o=e.stop.secondsOfDay+f9;return Ti.iau2006XysData.preload(t,n,i,o)};Ti.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var fDe=32.184,dDe=2451545,rM=new pc,hDe=new J,mDe=new K;Ti.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=K.addSeconds(e,fDe,mDe),i=K.totalDays(n)-dDe,o=D.toRadians(12.112)-D.toRadians(.052992)*i,r=D.toRadians(24.224)-D.toRadians(.105984)*i,s=D.toRadians(227.645)+D.toRadians(13.012)*i,a=D.toRadians(261.105)+D.toRadians(13.340716)*i,c=D.toRadians(358)+D.toRadians(.9856)*i;return rM.pitch=D.toRadians(180)-D.toRadians(3.878)*Math.sin(o)-D.toRadians(.12)*Math.sin(r)+D.toRadians(.07)*Math.sin(s)-D.toRadians(.017)*Math.sin(a),rM.roll=D.toRadians(66.53-90)+D.toRadians(1.543)*Math.cos(o)+D.toRadians(.24)*Math.cos(r)-D.toRadians(.028)*Math.cos(s)+D.toRadians(.007)*Math.cos(a),rM.heading=D.toRadians(244.375-90)+D.toRadians(13.17635831)*i+D.toRadians(3.558)*Math.sin(o)+D.toRadians(.121)*Math.sin(r)-D.toRadians(.064)*Math.sin(s)+D.toRadians(.016)*Math.sin(a)+D.toRadians(.025)*Math.sin(c),J.fromHeadingPitchRoll(rM,hDe)};Ti.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var ADe=new $0(0,0,0),pDe=new sC(0,0,0,0,0,0),l9=new J,u9=new J;Ti.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=Ti.earthOrientationParameters.compute(e,pDe);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+f9,r=Ti.iau2006XysData.computeXysRadians(i,o,ADe);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=l9;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=J.fromRotationZ(-r.s,u9),h=J.multiply(u,f,l9),A=e.dayNumber,g=e.secondsOfDay-K.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=A-2451545,_=g/ri.SECONDS_PER_DAY,y=.779057273264+_+.00273781191135448*(m+_);y=y%1*D.TWO_PI;let C=J.fromRotationZ(y,u9),E=J.multiply(h,C,l9),I=Math.cos(n.xPoleWander),b=Math.cos(n.yPoleWander),S=Math.sin(n.xPoleWander),B=Math.sin(n.yPoleWander),v=i-uDe+o/ri.SECONDS_PER_DAY;v/=36525;let P=-47e-6*v*D.RADIANS_PER_DEGREE/3600,N=Math.cos(P),L=Math.sin(P),p=u9;return p[0]=I*N,p[1]=I*L,p[2]=S,p[3]=-b*L+B*S*N,p[4]=b*N+B*S*L,p[5]=-B*I,p[6]=-B*L-b*S*N,p[7]=B*N-b*S*L,p[8]=b*I,J.multiply(E,p,t)};var gDe=new se;Ti.pointToWindowCoordinates=function(e,t,n,i){return i=Ti.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};Ti.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new k);let o=gDe;return R.multiplyByVector(e,se.fromElements(n.x,n.y,n.z,1,o),o),se.multiplyByScalar(o,1/o.w,o),R.multiplyByVector(t,o,o),k.fromCartesian4(o,i)};var _De=new d,yDe=new d,CDe=new d;Ti.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??te.default).geodeticSurfaceNormal(e,_De),r=d.cross(t,o,yDe);d.equalsEpsilon(r,d.ZERO,D.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,CDe);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new J),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var pee=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),gee=new Ae,d9=new d,EDe=new d,IDe=new J,h9=new R,_ee=new R;Ti.basisTo2D=function(e,t,n){let i=R.getTranslation(t,EDe),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,d9);else{let f=o.cartesianToCartographic(i,gee);r=e.project(f,d9),d.fromElements(r.z,r.x,r.y,r)}let s=Ti.eastNorthUpToFixedFrame(i,o,h9),a=R.inverseTransformation(s,_ee),c=R.getMatrix3(t,IDe),u=R.multiplyByMatrix3(a,c,n);return R.multiply(pee,u,n),R.setTranslation(n,r,n),n};Ti.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=Ti.eastNorthUpToFixedFrame(t,i,h9),r=R.inverseTransformation(o,_ee),s=i.cartesianToCartographic(t,gee),a=e.project(s,d9);d.fromElements(a.z,a.x,a.y,a);let c=R.fromTranslation(a,h9);return R.multiply(pee,r,n),R.multiply(c,n,n),n};var kt=Ti;function Ln(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Ln.prototype,{width:{get:function(){return Ln.computeWidth(this)}},height:{get:function(){return Ln.computeHeight(this)}}});Ln.packedLength=4;Ln.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Ln.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ln),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Ln.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=D.TWO_PI),t-n};Ln.computeHeight=function(e){return e.north-e.south};Ln.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e??0),t=D.toRadians(t??0),n=D.toRadians(n??0),i=D.toRadians(i??0),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new Ln(e,t,n,i)};Ln.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=e??0,o.south=t??0,o.east=n??0,o.north=i??0,o):new Ln(e,t,n,i)};Ln.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+D.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>D.PI&&(i=i-D.TWO_PI),n>D.PI&&(n=n-D.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Ln(n,s,i,a)};Ln.fromCartesianArray=function(e,t,n){t=t??te.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let A=h.longitude>=0?h.longitude:h.longitude+D.TWO_PI;r=Math.min(r,A),s=Math.max(s,A)}return o-i>s-r&&(i=r,o=s,o>D.PI&&(o=o-D.TWO_PI),i>D.PI&&(i=i-D.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Ln(i,a,o,c)};var xDe=new d,bDe=new d,TDe=new d,SDe=new d,wDe=new d,m9=new Array(5);for(let e=0;e<m9.length;++e)m9[e]=new d;Ln.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=te.default),l(n)||(n=new Ln),d.equals(i,d.ZERO))return Ln.clone(Ln.MAX_VALUE,n),n;let r=kt.eastNorthUpToFixedFrame(i,t,xDe),s=R.multiplyByPointAsVector(r,d.UNIT_X,bDe);d.normalize(s,s);let a=R.multiplyByPointAsVector(r,d.UNIT_Y,TDe);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,wDe),u=d.negate(s,SDe),f=m9,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,Ln.fromCartesianArray(f,t,n)};Ln.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new Ln(e.west,e.south,e.east,e.north)};Ln.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};Ln.prototype.clone=function(e){return Ln.clone(this,e)};Ln.prototype.equals=function(e){return Ln.equals(this,e)};Ln.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};Ln.prototype.equalsEpsilon=function(e,t){return Ln.equalsEpsilon(this,e,t)};Ln._validate=function(e){};Ln.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new Ae(e.west,e.south)};Ln.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new Ae(e.west,e.north)};Ln.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new Ae(e.east,e.north)};Ln.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new Ae(e.east,e.south)};Ln.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=D.TWO_PI);let o=D.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new Ae(o,r)};Ln.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.max(o,s)),c=D.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new Ln(a,u,c,f)};Ln.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Ln(i,o,r,s)};Ln.union=function(e,t,n){l(n)||(n=new Ln);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.min(o,s)),c=D.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};Ln.expand=function(e,t,n){return l(n)||(n=new Ln),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};Ln.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=D.TWO_PI,n<0&&(n+=D.TWO_PI)),(n>o||D.equalsEpsilon(n,o,D.EPSILON14))&&(n<r||D.equalsEpsilon(n,r,D.EPSILON14))&&i>=e.south&&i<=e.north};var BDe=new Ae;Ln.subsample=function(e,t,n,i){t=t??te.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=BDe;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*D.PI_OVER_TWO,Ln.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};Ln.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Ln),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=D.TWO_PI+e.east-e.west;r.west=D.negativePiToPi(e.west+t*a),r.east=D.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Ln.MAX_VALUE=Object.freeze(new Ln(-Math.PI,-D.PI_OVER_TWO,Math.PI,D.PI_OVER_TWO));var ae=Ln;function Wr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Wr.packedLength=4;Wr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Wr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Wr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Wr.fromPoints=function(e,t){if(l(t)||(t=new Wr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var yee=new Hi,DDe=new Ae,vDe=new Ae;Wr.fromRectangle=function(e,t,n){if(l(n)||(n=new Wr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;yee._ellipsoid=te.default,t=t??yee;let i=t.project(ae.southwest(e,DDe)),o=t.project(ae.northeast(e,vDe));return k.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Wr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Wr(e.x,e.y,e.width,e.height)};Wr.union=function(e,t,n){l(n)||(n=new Wr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Wr.expand=function(e,t,n){n=Wr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Wr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?nn.OUTSIDE:nn.INTERSECTING};Wr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Wr.prototype.clone=function(e){return Wr.clone(this,e)};Wr.prototype.intersect=function(e){return Wr.intersect(this,e)};Wr.prototype.equals=function(e){return Wr.equals(this,e)};var Xe=Wr;function A9(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function re(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}re.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new re(e.x,e.y,e.z,e.w)};re.fromBytes=function(e,t,n,i,o){return e=re.byteToFloat(e??255),t=re.byteToFloat(t??255),n=re.byteToFloat(n??255),i=re.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new re(e,t,n,i)};re.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new re(e.red,e.green,e.blue,t)};var p9,g9,NA;jt.supportsTypedArrays()&&(p9=new ArrayBuffer(4),g9=new Uint32Array(p9),NA=new Uint8Array(p9));re.fromRgba=function(e,t){return g9[0]=e,re.fromBytes(NA[0],NA[1],NA[2],NA[3],t)};re.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=A9(u,c,e+1/3),s=A9(u,c,e),a=A9(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new re(r,s,a,i)};re.fromRandom=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+D.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+D.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+D.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+D.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new re(n,i,o,r)};var PDe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,RDe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,MDe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,NDe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;re.fromCssColorString=function(e,t){l(t)||(t=new re),e=e.trim();let n=re[e.toUpperCase()];if(l(n))return re.clone(n,t),t;let i=PDe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=RDe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=MDe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=NDe.exec(e),i!==null?re.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};re.packedLength=4;re.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};re.unpack=function(e,t,n){return t=t??0,l(n)||(n=new re),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};re.byteToFloat=function(e){return e/255};re.floatToByte=function(e){return e===1?255:e*256|0};re.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new re(e.red,e.green,e.blue,e.alpha)};re.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};re.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};re.prototype.clone=function(e){return re.clone(this,e)};re.prototype.equals=function(e){return re.equals(this,e)};re.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};re.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};re.prototype.toCssColorString=function(){let e=re.floatToByte(this.red),t=re.floatToByte(this.green),n=re.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};re.prototype.toCssHexString=function(){let e=re.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=re.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=re.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=re.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};re.prototype.toBytes=function(e){let t=re.floatToByte(this.red),n=re.floatToByte(this.green),i=re.floatToByte(this.blue),o=re.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};re.prototype.toRgba=function(){return NA[0]=re.floatToByte(this.red),NA[1]=re.floatToByte(this.green),NA[2]=re.floatToByte(this.blue),NA[3]=re.floatToByte(this.alpha),g9[0]};re.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};re.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};re.prototype.withAlpha=function(e,t){return re.fromAlpha(this,e,t)};re.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};re.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};re.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};re.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};re.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};re.lerp=function(e,t,n,i){return i.red=D.lerp(e.red,t.red,n),i.green=D.lerp(e.green,t.green,n),i.blue=D.lerp(e.blue,t.blue,n),i.alpha=D.lerp(e.alpha,t.alpha,n),i};re.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};re.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};re.ALICEBLUE=Object.freeze(re.fromCssColorString("#F0F8FF"));re.ANTIQUEWHITE=Object.freeze(re.fromCssColorString("#FAEBD7"));re.AQUA=Object.freeze(re.fromCssColorString("#00FFFF"));re.AQUAMARINE=Object.freeze(re.fromCssColorString("#7FFFD4"));re.AZURE=Object.freeze(re.fromCssColorString("#F0FFFF"));re.BEIGE=Object.freeze(re.fromCssColorString("#F5F5DC"));re.BISQUE=Object.freeze(re.fromCssColorString("#FFE4C4"));re.BLACK=Object.freeze(re.fromCssColorString("#000000"));re.BLANCHEDALMOND=Object.freeze(re.fromCssColorString("#FFEBCD"));re.BLUE=Object.freeze(re.fromCssColorString("#0000FF"));re.BLUEVIOLET=Object.freeze(re.fromCssColorString("#8A2BE2"));re.BROWN=Object.freeze(re.fromCssColorString("#A52A2A"));re.BURLYWOOD=Object.freeze(re.fromCssColorString("#DEB887"));re.CADETBLUE=Object.freeze(re.fromCssColorString("#5F9EA0"));re.CHARTREUSE=Object.freeze(re.fromCssColorString("#7FFF00"));re.CHOCOLATE=Object.freeze(re.fromCssColorString("#D2691E"));re.CORAL=Object.freeze(re.fromCssColorString("#FF7F50"));re.CORNFLOWERBLUE=Object.freeze(re.fromCssColorString("#6495ED"));re.CORNSILK=Object.freeze(re.fromCssColorString("#FFF8DC"));re.CRIMSON=Object.freeze(re.fromCssColorString("#DC143C"));re.CYAN=Object.freeze(re.fromCssColorString("#00FFFF"));re.DARKBLUE=Object.freeze(re.fromCssColorString("#00008B"));re.DARKCYAN=Object.freeze(re.fromCssColorString("#008B8B"));re.DARKGOLDENROD=Object.freeze(re.fromCssColorString("#B8860B"));re.DARKGRAY=Object.freeze(re.fromCssColorString("#A9A9A9"));re.DARKGREEN=Object.freeze(re.fromCssColorString("#006400"));re.DARKGREY=re.DARKGRAY;re.DARKKHAKI=Object.freeze(re.fromCssColorString("#BDB76B"));re.DARKMAGENTA=Object.freeze(re.fromCssColorString("#8B008B"));re.DARKOLIVEGREEN=Object.freeze(re.fromCssColorString("#556B2F"));re.DARKORANGE=Object.freeze(re.fromCssColorString("#FF8C00"));re.DARKORCHID=Object.freeze(re.fromCssColorString("#9932CC"));re.DARKRED=Object.freeze(re.fromCssColorString("#8B0000"));re.DARKSALMON=Object.freeze(re.fromCssColorString("#E9967A"));re.DARKSEAGREEN=Object.freeze(re.fromCssColorString("#8FBC8F"));re.DARKSLATEBLUE=Object.freeze(re.fromCssColorString("#483D8B"));re.DARKSLATEGRAY=Object.freeze(re.fromCssColorString("#2F4F4F"));re.DARKSLATEGREY=re.DARKSLATEGRAY;re.DARKTURQUOISE=Object.freeze(re.fromCssColorString("#00CED1"));re.DARKVIOLET=Object.freeze(re.fromCssColorString("#9400D3"));re.DEEPPINK=Object.freeze(re.fromCssColorString("#FF1493"));re.DEEPSKYBLUE=Object.freeze(re.fromCssColorString("#00BFFF"));re.DIMGRAY=Object.freeze(re.fromCssColorString("#696969"));re.DIMGREY=re.DIMGRAY;re.DODGERBLUE=Object.freeze(re.fromCssColorString("#1E90FF"));re.FIREBRICK=Object.freeze(re.fromCssColorString("#B22222"));re.FLORALWHITE=Object.freeze(re.fromCssColorString("#FFFAF0"));re.FORESTGREEN=Object.freeze(re.fromCssColorString("#228B22"));re.FUCHSIA=Object.freeze(re.fromCssColorString("#FF00FF"));re.GAINSBORO=Object.freeze(re.fromCssColorString("#DCDCDC"));re.GHOSTWHITE=Object.freeze(re.fromCssColorString("#F8F8FF"));re.GOLD=Object.freeze(re.fromCssColorString("#FFD700"));re.GOLDENROD=Object.freeze(re.fromCssColorString("#DAA520"));re.GRAY=Object.freeze(re.fromCssColorString("#808080"));re.GREEN=Object.freeze(re.fromCssColorString("#008000"));re.GREENYELLOW=Object.freeze(re.fromCssColorString("#ADFF2F"));re.GREY=re.GRAY;re.HONEYDEW=Object.freeze(re.fromCssColorString("#F0FFF0"));re.HOTPINK=Object.freeze(re.fromCssColorString("#FF69B4"));re.INDIANRED=Object.freeze(re.fromCssColorString("#CD5C5C"));re.INDIGO=Object.freeze(re.fromCssColorString("#4B0082"));re.IVORY=Object.freeze(re.fromCssColorString("#FFFFF0"));re.KHAKI=Object.freeze(re.fromCssColorString("#F0E68C"));re.LAVENDER=Object.freeze(re.fromCssColorString("#E6E6FA"));re.LAVENDAR_BLUSH=Object.freeze(re.fromCssColorString("#FFF0F5"));re.LAWNGREEN=Object.freeze(re.fromCssColorString("#7CFC00"));re.LEMONCHIFFON=Object.freeze(re.fromCssColorString("#FFFACD"));re.LIGHTBLUE=Object.freeze(re.fromCssColorString("#ADD8E6"));re.LIGHTCORAL=Object.freeze(re.fromCssColorString("#F08080"));re.LIGHTCYAN=Object.freeze(re.fromCssColorString("#E0FFFF"));re.LIGHTGOLDENRODYELLOW=Object.freeze(re.fromCssColorString("#FAFAD2"));re.LIGHTGRAY=Object.freeze(re.fromCssColorString("#D3D3D3"));re.LIGHTGREEN=Object.freeze(re.fromCssColorString("#90EE90"));re.LIGHTGREY=re.LIGHTGRAY;re.LIGHTPINK=Object.freeze(re.fromCssColorString("#FFB6C1"));re.LIGHTSEAGREEN=Object.freeze(re.fromCssColorString("#20B2AA"));re.LIGHTSKYBLUE=Object.freeze(re.fromCssColorString("#87CEFA"));re.LIGHTSLATEGRAY=Object.freeze(re.fromCssColorString("#778899"));re.LIGHTSLATEGREY=re.LIGHTSLATEGRAY;re.LIGHTSTEELBLUE=Object.freeze(re.fromCssColorString("#B0C4DE"));re.LIGHTYELLOW=Object.freeze(re.fromCssColorString("#FFFFE0"));re.LIME=Object.freeze(re.fromCssColorString("#00FF00"));re.LIMEGREEN=Object.freeze(re.fromCssColorString("#32CD32"));re.LINEN=Object.freeze(re.fromCssColorString("#FAF0E6"));re.MAGENTA=Object.freeze(re.fromCssColorString("#FF00FF"));re.MAROON=Object.freeze(re.fromCssColorString("#800000"));re.MEDIUMAQUAMARINE=Object.freeze(re.fromCssColorString("#66CDAA"));re.MEDIUMBLUE=Object.freeze(re.fromCssColorString("#0000CD"));re.MEDIUMORCHID=Object.freeze(re.fromCssColorString("#BA55D3"));re.MEDIUMPURPLE=Object.freeze(re.fromCssColorString("#9370DB"));re.MEDIUMSEAGREEN=Object.freeze(re.fromCssColorString("#3CB371"));re.MEDIUMSLATEBLUE=Object.freeze(re.fromCssColorString("#7B68EE"));re.MEDIUMSPRINGGREEN=Object.freeze(re.fromCssColorString("#00FA9A"));re.MEDIUMTURQUOISE=Object.freeze(re.fromCssColorString("#48D1CC"));re.MEDIUMVIOLETRED=Object.freeze(re.fromCssColorString("#C71585"));re.MIDNIGHTBLUE=Object.freeze(re.fromCssColorString("#191970"));re.MINTCREAM=Object.freeze(re.fromCssColorString("#F5FFFA"));re.MISTYROSE=Object.freeze(re.fromCssColorString("#FFE4E1"));re.MOCCASIN=Object.freeze(re.fromCssColorString("#FFE4B5"));re.NAVAJOWHITE=Object.freeze(re.fromCssColorString("#FFDEAD"));re.NAVY=Object.freeze(re.fromCssColorString("#000080"));re.OLDLACE=Object.freeze(re.fromCssColorString("#FDF5E6"));re.OLIVE=Object.freeze(re.fromCssColorString("#808000"));re.OLIVEDRAB=Object.freeze(re.fromCssColorString("#6B8E23"));re.ORANGE=Object.freeze(re.fromCssColorString("#FFA500"));re.ORANGERED=Object.freeze(re.fromCssColorString("#FF4500"));re.ORCHID=Object.freeze(re.fromCssColorString("#DA70D6"));re.PALEGOLDENROD=Object.freeze(re.fromCssColorString("#EEE8AA"));re.PALEGREEN=Object.freeze(re.fromCssColorString("#98FB98"));re.PALETURQUOISE=Object.freeze(re.fromCssColorString("#AFEEEE"));re.PALEVIOLETRED=Object.freeze(re.fromCssColorString("#DB7093"));re.PAPAYAWHIP=Object.freeze(re.fromCssColorString("#FFEFD5"));re.PEACHPUFF=Object.freeze(re.fromCssColorString("#FFDAB9"));re.PERU=Object.freeze(re.fromCssColorString("#CD853F"));re.PINK=Object.freeze(re.fromCssColorString("#FFC0CB"));re.PLUM=Object.freeze(re.fromCssColorString("#DDA0DD"));re.POWDERBLUE=Object.freeze(re.fromCssColorString("#B0E0E6"));re.PURPLE=Object.freeze(re.fromCssColorString("#800080"));re.RED=Object.freeze(re.fromCssColorString("#FF0000"));re.ROSYBROWN=Object.freeze(re.fromCssColorString("#BC8F8F"));re.ROYALBLUE=Object.freeze(re.fromCssColorString("#4169E1"));re.SADDLEBROWN=Object.freeze(re.fromCssColorString("#8B4513"));re.SALMON=Object.freeze(re.fromCssColorString("#FA8072"));re.SANDYBROWN=Object.freeze(re.fromCssColorString("#F4A460"));re.SEAGREEN=Object.freeze(re.fromCssColorString("#2E8B57"));re.SEASHELL=Object.freeze(re.fromCssColorString("#FFF5EE"));re.SIENNA=Object.freeze(re.fromCssColorString("#A0522D"));re.SILVER=Object.freeze(re.fromCssColorString("#C0C0C0"));re.SKYBLUE=Object.freeze(re.fromCssColorString("#87CEEB"));re.SLATEBLUE=Object.freeze(re.fromCssColorString("#6A5ACD"));re.SLATEGRAY=Object.freeze(re.fromCssColorString("#708090"));re.SLATEGREY=re.SLATEGRAY;re.SNOW=Object.freeze(re.fromCssColorString("#FFFAFA"));re.SPRINGGREEN=Object.freeze(re.fromCssColorString("#00FF7F"));re.STEELBLUE=Object.freeze(re.fromCssColorString("#4682B4"));re.TAN=Object.freeze(re.fromCssColorString("#D2B48C"));re.TEAL=Object.freeze(re.fromCssColorString("#008080"));re.THISTLE=Object.freeze(re.fromCssColorString("#D8BFD8"));re.TOMATO=Object.freeze(re.fromCssColorString("#FF6347"));re.TURQUOISE=Object.freeze(re.fromCssColorString("#40E0D0"));re.VIOLET=Object.freeze(re.fromCssColorString("#EE82EE"));re.WHEAT=Object.freeze(re.fromCssColorString("#F5DEB3"));re.WHITE=Object.freeze(re.fromCssColorString("#FFFFFF"));re.WHITESMOKE=Object.freeze(re.fromCssColorString("#F5F5F5"));re.YELLOW=Object.freeze(re.fromCssColorString("#FFFF00"));re.YELLOWGREEN=Object.freeze(re.fromCssColorString("#9ACD32"));re.TRANSPARENT=Object.freeze(new re(0,0,0,0));var G=re;function LDe(){return!0}function ODe(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=LDe}var ue=ODe;function Cu(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Cu.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Cu.packedLength=2;Cu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Cu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Cu),n.near=e[t++],n.far=e[t],n};Cu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Cu.clone=function(e,t){if(l(e))return l(t)||(t=new Cu),t.near=e.near,t.far=e.far,t};Cu.prototype.clone=function(e){return Cu.clone(this,e)};Cu.prototype.equals=function(e){return Cu.equals(this,e)};var Ut=Cu;function gf(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}gf.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new gf(e.near,e.nearValue,e.far,e.farValue)};gf.packedLength=4;gf.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};gf.unpack=function(e,t,n){return t=t??0,l(n)||(n=new gf),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};gf.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};gf.prototype.clone=function(e){return gf.clone(this,e)};gf.prototype.equals=function(e){return gf.equals(this,e)};var Yt=gf;var hC={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ze=Object.freeze(hC);function _f(e){return e===hC.CLAMP_TO_GROUND||e===hC.CLAMP_TO_3D_TILE||e===hC.CLAMP_TO_TERRAIN}function rI(e){return e===hC.RELATIVE_TO_GROUND||e===hC.RELATIVE_TO_3D_TILE||e===hC.RELATIVE_TO_TERRAIN}var FDe={CENTER:0,LEFT:1,RIGHT:-1},Ri=Object.freeze(FDe);var QDe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},Wn=Object.freeze(QDe);var kDe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),mt=kDe;function Nd(){me.throwInstantiationError()}Object.defineProperties(Nd.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});Nd.prototype.getValue=me.throwInstantiationError;Nd.prototype.equals=me.throwInstantiationError;Nd.equals=function(e,t){return e===t||l(e)&&e.equals(t)};Nd.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!Nd.equals(e[i],t[i]))return!1;return!0};Nd.isConstant=function(e){return!l(e)||e.isConstant};Nd.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};Nd.getValueOrDefault=function(e,t,n,i){return l(e)?e.getValue(t,i)??n:n};Nd.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var j=Nd;var UDe={LEFT:-1,NONE:0,RIGHT:1},wr=Object.freeze(UDe);var GDe=G.WHITE,zDe=d.ZERO,VDe=Ze.NONE,HDe=k.ZERO,WDe=1,jDe=0,YDe=d.ZERO,qDe=Ri.CENTER,KDe=Wn.CENTER,XDe=!1,JDe=wr.NONE,ZDe=new d,$De=new G,eve=new d,tve=new k,nve=new Yt,ive=new Yt,ove=new Yt,rve=new Xe,sve=new Ut;function Cee(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function yg(e,t){t.collectionChanged.addEventListener(yg.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}yg.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,ZDe),c=j.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){_9(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=j.getValueOrDefault(a._color,e,GDe,$De),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,zDe,eve),u.heightReference=j.getValueOrDefault(a._heightReference,e,VDe),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,HDe,tve),u.scale=j.getValueOrDefault(a._scale,e,WDe),u.rotation=j.getValueOrDefault(a._rotation,e,jDe),u.alignedAxis=j.getValueOrDefault(a._alignedAxis,e,YDe),u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,qDe),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,KDe),u.width=j.getValueOrUndefined(a._width,e),u.height=j.getValueOrUndefined(a._height,e),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,nve),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,ive),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,ove),u.sizeInMeters=j.getValueOrDefault(a._sizeInMeters,e,XDe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,sve),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,JDe);let A=j.getValueOrUndefined(a._imageSubRegion,e,rve);l(A)&&u.setImageSubRegion(u.image,A)}return!0};yg.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return mt.FAILED;let i=n.billboard;if(i.heightReference===Ze.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};yg.prototype.isDestroyed=function(){return!1};yg.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(yg.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};yg.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new Cee(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Cee(r)):(_9(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],_9(s.get(r.id),r,a),s.remove(r.id)};function _9(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var sM=yg;function ave(e,t){this.start=e??0,this.stop=t??0}var _c=ave;function Cn(e,t){this.center=d.clone(e??d.ZERO),this.radius=t??0}var E9=new d,I9=new d,x9=new d,b9=new d,T9=new d,S9=new d,w9=new d,xa=new d,B9=new d,D9=new d,v9=new d,P9=new d,cve=4/3*D.PI;Cn.fromPoints=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],w9),i=d.clone(n,E9),o=d.clone(n,I9),r=d.clone(n,x9),s=d.clone(n,b9),a=d.clone(n,T9),c=d.clone(n,S9),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let P=n.x,N=n.y,L=n.z;P<i.x&&d.clone(n,i),P>s.x&&d.clone(n,s),N<o.y&&d.clone(n,o),N>a.y&&d.clone(n,a),L<r.z&&d.clone(n,r),L>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,xa)),A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=i,_=s,y=h;A>y&&(y=A,m=o,_=a),g>y&&(y=g,m=r,_=c);let C=B9;C.x=(m.x+_.x)*.5,C.y=(m.y+_.y)*.5,C.z=(m.z+_.z)*.5;let E=d.magnitudeSquared(d.subtract(_,C,xa)),I=Math.sqrt(E),b=D9;b.x=i.x,b.y=o.y,b.z=r.z;let S=v9;S.x=s.x,S.y=a.y,S.z=c.z;let B=d.midpoint(b,S,P9),v=0;for(f=0;f<u;f++){d.clone(e[f],n);let P=d.magnitude(d.subtract(n,B,xa));P>v&&(v=P);let N=d.magnitudeSquared(d.subtract(n,C,xa));if(N>E){let L=Math.sqrt(N);I=(I+L)*.5,E=I*I;let p=L-I;C.x=(I*C.x+p*n.x)/L,C.y=(I*C.y+p*n.y)/L,C.z=(I*C.z+p*n.z)/L}}return I<v?(d.clone(C,t.center),t.radius=I):(d.clone(B,t.center),t.radius=v),t};var Eee=new Hi,lve=new d,uve=new d,y9=new Ae,C9=new Ae;Cn.fromRectangle2D=function(e,t,n){return Cn.fromRectangleWithHeights2D(e,t,0,0,n)};Cn.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new Cn),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;Eee._ellipsoid=te.default,t=t??Eee,ae.southwest(e,y9),y9.height=n,ae.northeast(e,C9),C9.height=i;let r=t.project(y9,lve),s=t.project(C9,uve),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var fve=[];Cn.fromRectangle3D=function(e,t,n,i){if(t=t??te.default,n=n??0,l(i)||(i=new Cn),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,fve);return Cn.fromPoints(o,i)};Cn.fromVertices=function(e,t,n,i){if(l(i)||(i=new Cn),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=t??d.ZERO,n=n??3;let o=w9;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,E9),s=d.clone(o,I9),a=d.clone(o,x9),c=d.clone(o,b9),u=d.clone(o,T9),f=d.clone(o,S9),h=e.length,A;for(A=0;A<h;A+=n){let L=e[A]+t.x,p=e[A+1]+t.y,x=e[A+2]+t.z;o.x=L,o.y=p,o.z=x,L<r.x&&d.clone(o,r),L>c.x&&d.clone(o,c),p<s.y&&d.clone(o,s),p>u.y&&d.clone(o,u),x<a.z&&d.clone(o,a),x>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=d.magnitudeSquared(d.subtract(f,a,xa)),y=r,C=c,E=g;m>E&&(E=m,y=s,C=u),_>E&&(E=_,y=a,C=f);let I=B9;I.x=(y.x+C.x)*.5,I.y=(y.y+C.y)*.5,I.z=(y.z+C.z)*.5;let b=d.magnitudeSquared(d.subtract(C,I,xa)),S=Math.sqrt(b),B=D9;B.x=r.x,B.y=s.y,B.z=a.z;let v=v9;v.x=c.x,v.y=u.y,v.z=f.z;let P=d.midpoint(B,v,P9),N=0;for(A=0;A<h;A+=n){o.x=e[A]+t.x,o.y=e[A+1]+t.y,o.z=e[A+2]+t.z;let L=d.magnitude(d.subtract(o,P,xa));L>N&&(N=L);let p=d.magnitudeSquared(d.subtract(o,I,xa));if(p>b){let x=Math.sqrt(p);S=(S+x)*.5,b=S*S;let T=x-S;I.x=(S*I.x+T*o.x)/x,I.y=(S*I.y+T*o.y)/x,I.z=(S*I.z+T*o.z)/x}}return S<N?(d.clone(I,i.center),i.radius=S):(d.clone(P,i.center),i.radius=N),i};Cn.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new Cn),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=w9;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,E9),r=d.clone(i,I9),s=d.clone(i,x9),a=d.clone(i,b9),c=d.clone(i,T9),u=d.clone(i,S9),f=e.length,h;for(h=0;h<f;h+=3){let N=e[h]+t[h],L=e[h+1]+t[h+1],p=e[h+2]+t[h+2];i.x=N,i.y=L,i.z=p,N<o.x&&d.clone(i,o),N>a.x&&d.clone(i,a),L<r.y&&d.clone(i,r),L>c.y&&d.clone(i,c),p<s.z&&d.clone(i,s),p>u.z&&d.clone(i,u)}let A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=o,y=a,C=A;g>C&&(C=g,_=r,y=c),m>C&&(C=m,_=s,y=u);let E=B9;E.x=(_.x+y.x)*.5,E.y=(_.y+y.y)*.5,E.z=(_.z+y.z)*.5;let I=d.magnitudeSquared(d.subtract(y,E,xa)),b=Math.sqrt(I),S=D9;S.x=o.x,S.y=r.y,S.z=s.z;let B=v9;B.x=a.x,B.y=c.y,B.z=u.z;let v=d.midpoint(S,B,P9),P=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let N=d.magnitude(d.subtract(i,v,xa));N>P&&(P=N);let L=d.magnitudeSquared(d.subtract(i,E,xa));if(L>I){let p=Math.sqrt(L);b=(b+p)*.5,I=b*b;let x=p-b;E.x=(b*E.x+x*i.x)/p,E.y=(b*E.y+x*i.y)/p,E.z=(b*E.z+x*i.z)/p}}return b<P?(d.clone(E,n.center),n.radius=b):(d.clone(v,n.center),n.radius=P),n};Cn.fromCornerPoints=function(e,t,n){l(n)||(n=new Cn);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};Cn.fromEllipsoid=function(e,t){return l(t)||(t=new Cn),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var dve=new d;Cn.fromBoundingSpheres=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return Cn.clone(e[0],t);if(n===2)return Cn.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=Cn.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,dve)+a.radius)}return t.radius=s,t};var hve=new d,mve=new d,Ave=new d;Cn.fromOrientedBoundingBox=function(e,t){l(t)||(t=new Cn);let n=e.halfAxes,i=J.getColumn(n,0,hve),o=J.getColumn(n,1,mve),r=J.getColumn(n,2,Ave);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var pve=new d,gve=new d;Cn.fromTransformation=function(e,t){l(t)||(t=new Cn);let n=R.getTranslation(e,pve),i=R.getScale(e,gve),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};Cn.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new Cn(e.center,e.radius)};Cn.packedLength=4;Cn.pack=function(e,t,n){n=n??0;let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};Cn.unpack=function(e,t,n){t=t??0,l(n)||(n=new Cn);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var _ve=new d,yve=new d;Cn.union=function(e,t,n){l(n)||(n=new Cn);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,_ve),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,yve);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var Cve=new d;Cn.expand=function(e,t,n){n=Cn.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,Cve));return i>n.radius&&(n.radius=i),n};Cn.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?nn.OUTSIDE:r<i?nn.INTERSECTING:nn.INSIDE};Cn.transform=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=R.getMaximumScale(t)*e.radius,n};var Eve=new d;Cn.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,Eve),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};Cn.transformWithoutScale=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var Ive=new d;Cn.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=d.subtract(e.center,t,Ive),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var Iee=new d,xve=new d,bve=new d,Tve=new d,Sve=new d,wve=new Ae,bee=new Array(8);for(let e=0;e<8;++e)bee[e]=new d;var xee=new Hi;Cn.projectTo2D=function(e,t,n){xee._ellipsoid=te.default,t=t??xee;let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,Iee):s=i.geodeticSurfaceNormal(o,Iee);let a=d.cross(d.UNIT_Z,s,xve);d.normalize(a,a);let c=d.cross(s,a,bve);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,Sve),f=d.negate(a,Tve),h=bee,A=h[0];d.add(s,c,A),d.add(A,a,A),A=h[1],d.add(s,c,A),d.add(A,f,A),A=h[2],d.add(s,u,A),d.add(A,f,A),A=h[3],d.add(s,u,A),d.add(A,a,A),d.negate(s,s),A=h[4],d.add(s,c,A),d.add(A,a,A),A=h[5],d.add(s,c,A),d.add(A,f,A),A=h[6],d.add(s,u,A),d.add(A,f,A),A=h[7],d.add(s,u,A),d.add(A,a,A);let g=h.length;for(let C=0;C<g;++C){let E=h[C];d.add(o,E,E);let I=i.cartesianToCartographic(E,wve);t.project(I,E)}n=Cn.fromPoints(h,n),o=n.center;let m=o.x,_=o.y,y=o.z;return o.x=y,o.y=m,o.z=_,n};Cn.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};Cn.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};Cn.prototype.intersectPlane=function(e){return Cn.intersectPlane(this,e)};Cn.prototype.distanceSquaredTo=function(e){return Cn.distanceSquaredTo(this,e)};Cn.prototype.computePlaneDistances=function(e,t,n){return Cn.computePlaneDistances(this,e,t,n)};Cn.prototype.isOccluded=function(e){return Cn.isOccluded(this,e)};Cn.prototype.equals=function(e){return Cn.equals(this,e)};Cn.prototype.clone=function(e){return Cn.clone(this,e)};Cn.prototype.volume=function(){let e=this.radius;return cve*e*e*e};var le=Cn;var Bve={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},ee=Object.freeze(Bve);var Pn={BYTE:ee.BYTE,UNSIGNED_BYTE:ee.UNSIGNED_BYTE,SHORT:ee.SHORT,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,INT:ee.INT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,DOUBLE:ee.DOUBLE};Pn.getSizeInBytes=function(e){switch(e){case Pn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Pn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Pn.INT:return Int32Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Pn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Pn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Pn.fromTypedArray=function(e){if(e instanceof Int8Array)return Pn.BYTE;if(e instanceof Uint8Array)return Pn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Pn.SHORT;if(e instanceof Uint16Array)return Pn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Pn.INT;if(e instanceof Uint32Array)return Pn.UNSIGNED_INT;if(e instanceof Float32Array)return Pn.FLOAT;if(e instanceof Float64Array)return Pn.DOUBLE};Pn.validate=function(e){return l(e)&&(e===Pn.BYTE||e===Pn.UNSIGNED_BYTE||e===Pn.SHORT||e===Pn.UNSIGNED_SHORT||e===Pn.INT||e===Pn.UNSIGNED_INT||e===Pn.FLOAT||e===Pn.DOUBLE)};Pn.createTypedArray=function(e,t){switch(e){case Pn.BYTE:return new Int8Array(t);case Pn.UNSIGNED_BYTE:return new Uint8Array(t);case Pn.SHORT:return new Int16Array(t);case Pn.UNSIGNED_SHORT:return new Uint16Array(t);case Pn.INT:return new Int32Array(t);case Pn.UNSIGNED_INT:return new Uint32Array(t);case Pn.FLOAT:return new Float32Array(t);case Pn.DOUBLE:return new Float64Array(t)}};Pn.createArrayBufferView=function(e,t,n,i){switch(n=n??0,i=i??(t.byteLength-n)/Pn.getSizeInBytes(e),e){case Pn.BYTE:return new Int8Array(t,n,i);case Pn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Pn.SHORT:return new Int16Array(t,n,i);case Pn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Pn.INT:return new Int32Array(t,n,i);case Pn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Pn.FLOAT:return new Float32Array(t,n,i);case Pn.DOUBLE:return new Float64Array(t,n,i)}};Pn.fromName=function(e){switch(e){case"BYTE":return Pn.BYTE;case"UNSIGNED_BYTE":return Pn.UNSIGNED_BYTE;case"SHORT":return Pn.SHORT;case"UNSIGNED_SHORT":return Pn.UNSIGNED_SHORT;case"INT":return Pn.INT;case"UNSIGNED_INT":return Pn.UNSIGNED_INT;case"FLOAT":return Pn.FLOAT;case"DOUBLE":return Pn.DOUBLE}};var q=Object.freeze(Pn);var Dve={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},Ld=Object.freeze(Dve);function sn(e,t,n,i){this[0]=e??0,this[1]=n??0,this[2]=t??0,this[3]=i??0}sn.packedLength=4;sn.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};sn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new sn),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};sn.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)sn.pack(e[o],t,o*4);return t};sn.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=sn.unpack(e,i,t[o])}return t};sn.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new sn(e[0],e[2],e[1],e[3])};sn.fromArray=sn.unpack;sn.fromColumnMajorArray=function(e,t){return sn.clone(e,t)};sn.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new sn(e[0],e[1],e[2],e[3])};sn.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new sn(e.x,0,0,e.y)};sn.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new sn(e,0,0,e)};sn.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new sn(n,-i,i,n)};sn.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};sn.getElementIndex=function(e,t){return e*2+t};sn.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};sn.setColumn=function(e,t,n,i){i=sn.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};sn.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};sn.setRow=function(e,t,n,i){return i=sn.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var vve=new k;sn.setScale=function(e,t,n){let i=sn.getScale(e,vve),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Pve=new k;sn.setUniformScale=function(e,t,n){let i=sn.getScale(e,Pve),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Tee=new k;sn.getScale=function(e,t){return t.x=k.magnitude(k.fromElements(e[0],e[1],Tee)),t.y=k.magnitude(k.fromElements(e[2],e[3],Tee)),t};var See=new k;sn.getMaximumScale=function(e){return sn.getScale(e,See),k.maximumComponent(See)};var Rve=new k;sn.setRotation=function(e,t,n){let i=sn.getScale(e,Rve);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var Mve=new k;sn.getRotation=function(e,t){let n=sn.getScale(e,Mve);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};sn.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};sn.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};sn.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};sn.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};sn.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};sn.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};sn.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};sn.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};sn.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};sn.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};sn.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};sn.IDENTITY=Object.freeze(new sn(1,0,0,1));sn.ZERO=Object.freeze(new sn(0,0,0,0));sn.COLUMN0ROW0=0;sn.COLUMN0ROW1=1;sn.COLUMN1ROW0=2;sn.COLUMN1ROW1=3;Object.defineProperties(sn.prototype,{length:{get:function(){return sn.packedLength}}});sn.prototype.clone=function(e){return sn.clone(this,e)};sn.prototype.equals=function(e){return sn.equals(this,e)};sn.prototype.equalsEpsilon=function(e,t){return sn.equalsEpsilon(this,e,t)};sn.prototype.toString=function(){return`(${this[0]}, ${this[2]})
|
||
(${this[1]}, ${this[3]})`};var Wi=sn;var Xa={POINTS:ee.POINTS,LINES:ee.LINES,LINE_LOOP:ee.LINE_LOOP,LINE_STRIP:ee.LINE_STRIP,TRIANGLES:ee.TRIANGLES,TRIANGLE_STRIP:ee.TRIANGLE_STRIP,TRIANGLE_FAN:ee.TRIANGLE_FAN};Xa.isLines=function(e){return e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP};Xa.isTriangles=function(e){return e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};Xa.validate=function(e){return e===Xa.POINTS||e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP||e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};var Me=Object.freeze(Xa);function R9(e){e=e??V.EMPTY_OBJECT,this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=e.primitiveType??Me.TRIANGLES,this.boundingSphere=e.boundingSphere,this.geometryType=e.geometryType??Ld.NONE,this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}R9.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var Nve=new Ae,Lve=new d,wee=new R,Ove=[new Ae,new Ae,new Ae],Fve=[new k,new k,new k],Qve=[new k,new k,new k],kve=new d,Uve=new Le,Gve=new R,zve=new Wi;R9._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,Nve),s=Ae.toCartesian(r,n,Lve),a=kt.eastNorthUpToFixedFrame(s,n,wee),c=R.inverse(a,wee),u=Fve,f=Ove;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=kve;for(o=0;o<3;o++)Ae.toCartesian(f[o],n,h),h=R.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let A=Le.fromAxisAngle(d.UNIT_Z,-t,Uve),g=J.fromQuaternion(A,Gve),m=e.length,_=Number.POSITIVE_INFINITY,y=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=R.multiplyByPointAsVector(c,e[o],h),h=J.multiplyByVector(g,h,h),_=Math.min(_,h.x),y=Math.min(y,h.y),C=Math.max(C,h.x),E=Math.max(E,h.y);let I=Wi.fromRotation(t,zve),b=Qve;b[0].x=_,b[0].y=y,b[1].x=_,b[1].y=E,b[2].x=C,b[2].y=y;let S=u[0],B=u[2].x-S.x,v=u[1].y-S.y;for(o=0;o<3;o++){let x=b[o];Wi.multiplyByVector(I,x,x),x.x=(x.x-S.x)/B,x.y=(x.y-S.y)/v}let P=b[0],N=b[1],L=b[2],p=new Array(6);return k.pack(P,p),k.pack(N,p,2),k.pack(L,p,4),p};var ht=R9;function Vve(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.values=e.values}var De=Vve;function Hve(e){e=e??V.EMPTY_OBJECT,this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var En=Hve;var Wve={NONE:0,TOP:1,ALL:2},hn=Object.freeze(Wve);function Is(e){e=e??V.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}Is.POSITION_ONLY=Object.freeze(new Is({position:!0}));Is.POSITION_AND_NORMAL=Object.freeze(new Is({position:!0,normal:!0}));Is.POSITION_NORMAL_AND_ST=Object.freeze(new Is({position:!0,normal:!0,st:!0}));Is.POSITION_AND_ST=Object.freeze(new Is({position:!0,st:!0}));Is.POSITION_AND_COLOR=Object.freeze(new Is({position:!0,color:!0}));Is.ALL=Object.freeze(new Is({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));Is.DEFAULT=Is.POSITION_NORMAL_AND_ST;Is.packedLength=6;Is.pack=function(e,t,n){return n=n??0,t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};Is.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Is),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};Is.clone=function(e,t){if(l(e))return l(t)||(t=new Is),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Pe=Is;var jve=new d;function Eu(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum,i=e.vertexFormat??Pe.DEFAULT;this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}Eu.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Eu({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};Eu.fromAxisAlignedBoundingBox=function(e){return new Eu({minimum:e.minimum,maximum:e.maximum})};Eu.packedLength=2*d.packedLength+Pe.packedLength+1;Eu.pack=function(e,t,n){return n=n??0,d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Pe.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Pe.packedLength]=e._offsetAttribute??-1,t};var Dee=new d,vee=new d,Pee=new Pe,Bee={minimum:Dee,maximum:vee,vertexFormat:Pee,offsetAttribute:void 0};Eu.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Dee),o=d.unpack(e,t+d.packedLength,vee),r=Pe.unpack(e,t+2*d.packedLength,Pee),s=e[t+2*d.packedLength+Pe.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(Bee.offsetAttribute=s===-1?void 0:s,new Eu(Bee))};Eu.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new En,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(72),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(36),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(24),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(36),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,jve),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===hn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ht({attributes:o,indices:r,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var M9;Eu.getUnitBox=function(){return l(M9)||(M9=Eu.createGeometry(Eu.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),M9};var yc=Eu;var Yve=new d;function Zh(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Zh.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Zh({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Zh.fromAxisAlignedBoundingBox=function(e){return new Zh({minimum:e.minimum,maximum:e.maximum})};Zh.packedLength=2*d.packedLength+1;Zh.pack=function(e,t,n){return n=n??0,d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=e._offsetAttribute??-1,t};var Mee=new d,Nee=new d,Ree={minimum:Mee,maximum:Nee,offsetAttribute:void 0};Zh.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Mee),o=d.unpack(e,t+d.packedLength,Nee),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(Ree.offsetAttribute=r===-1?void 0:r,new Zh(Ree))};Zh.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new En,o=new Uint16Array(24),r=new Float64Array(24);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,Yve),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===hn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ht({attributes:i,indices:o,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var $h=Zh;function sI(e,t,n,i){e=e??1,t=t??1,n=n??1,i=i??1,this.value=new Uint8Array([G.floatToByte(e),G.floatToByte(t),G.floatToByte(n),G.floatToByte(i)])}Object.defineProperties(sI.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});sI.fromColor=function(e){return new sI(e.red,e.green,e.blue,e.alpha)};sI.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};sI.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var en=sI;function KS(e,t){e=e??0,t=t??Number.MAX_VALUE,this.value=new Float32Array([e,t])}Object.defineProperties(KS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});KS.fromDistanceDisplayCondition=function(e){return new KS(e.near,e.far)};KS.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Kn=KS;function qve(e){e=e??V.EMPTY_OBJECT,this.geometry=e.geometry,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Rt=qve;function nr(e){e=e??V.EMPTY_OBJECT,this.start=l(e.start)?K.clone(e.start):new K,this.stop=l(e.stop)?K.clone(e.stop):new K,this.data=e.data,this.isStartIncluded=e.isStartIncluded??!0,this.isStopIncluded=e.isStopIncluded??!0}Object.defineProperties(nr.prototype,{isEmpty:{get:function(){let e=K.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var aI={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};nr.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new me("options.iso8601 is an invalid ISO 8601 interval.");let i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(aI.start=i,aI.stop=o,aI.isStartIncluded=r,aI.isStopIncluded=s,aI.data=a,new nr(aI))};nr.toIso8601=function(e,t){return`${K.toIso8601(e.start,t)}/${K.toIso8601(e.stop,t)}`};nr.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new nr(e)};nr.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equals(e.start,t.start)&&K.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};nr.equalsEpsilon=function(e,t,n,i){return n=n??0,e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equalsEpsilon(e.start,t.start,n)&&K.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};nr.intersect=function(e,t,n,i){if(!l(t))return nr.clone(nr.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=K.greaterThanOrEquals(s,o)&&K.greaterThanOrEquals(r,s),u=!c&&K.lessThanOrEquals(s,o)&&K.lessThanOrEquals(o,a);if(!c&&!u)return nr.clone(nr.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,A=t.isStartIncluded,g=t.isStopIncluded,m=K.lessThan(r,a);return l(n)||(n=new nr),n.start=c?s:o,n.isStartIncluded=f&&A||!K.equals(s,o)&&(c&&A||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!K.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};nr.contains=function(e,t){if(e.isEmpty)return!1;let n=K.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=K.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};nr.prototype.clone=function(e){return nr.clone(this,e)};nr.prototype.equals=function(e,t){return nr.equals(this,e,t)};nr.prototype.equalsEpsilon=function(e,t,n){return nr.equalsEpsilon(this,e,t,n)};nr.prototype.toString=function(){return nr.toIso8601(this)};nr.EMPTY=Object.freeze(new nr({start:new K,stop:new K,isStartIncluded:!1,isStopIncluded:!1}));var Rn=nr;var Lee=Object.freeze(K.fromIso8601("0000-01-01T00:00:00Z")),Oee=Object.freeze(K.fromIso8601("9999-12-31T24:00:00Z")),Kve=Object.freeze(new Rn({start:Lee,stop:Oee})),Xve={MINIMUM_VALUE:Lee,MAXIMUM_VALUE:Oee,MAXIMUM_INTERVAL:Kve},je=Xve;function XS(e,t,n){e=e??0,t=t??0,n=n??0,this.value=new Float32Array([e,t,n])}Object.defineProperties(XS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});XS.fromCartesian3=function(e){return new XS(e.x,e.y,e.z)};XS.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var ho=XS;function aM(e){e=e??!0,this.value=aM.toValue(e)}Object.defineProperties(aM.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});aM.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var Bn=aM;var cM=`in vec3 v_positionEC;
|
||
in vec3 v_normalEC;
|
||
in vec3 v_tangentEC;
|
||
in vec3 v_bitangentEC;
|
||
in vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
vec3 positionToEyeEC = -v_positionEC;
|
||
mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC);
|
||
|
||
vec3 normalEC = normalize(v_normalEC);
|
||
#ifdef FACE_FORWARD
|
||
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
|
||
#endif
|
||
|
||
czm_materialInput materialInput;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.tangentToEyeMatrix = tangentToEyeMatrix;
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
materialInput.st = v_st;
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef FLAT
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#else
|
||
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
#endif
|
||
}
|
||
`;var lM=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 normal;
|
||
in vec3 tangent;
|
||
in vec3 bitangent;
|
||
in vec2 st;
|
||
in float batchId;
|
||
|
||
out vec3 v_positionEC;
|
||
out vec3 v_normalEC;
|
||
out vec3 v_tangentEC;
|
||
out vec3 v_bitangentEC;
|
||
out vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
|
||
v_normalEC = czm_normal * normal; // normal in eye coordinates
|
||
v_tangentEC = czm_normal * tangent; // tangent in eye coordinates
|
||
v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates
|
||
v_st = st;
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;var uM=`in vec3 v_positionEC;
|
||
in vec3 v_normalEC;
|
||
|
||
void main()
|
||
{
|
||
vec3 positionToEyeEC = -v_positionEC;
|
||
|
||
vec3 normalEC = normalize(v_normalEC);
|
||
#ifdef FACE_FORWARD
|
||
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
|
||
#endif
|
||
|
||
czm_materialInput materialInput;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef FLAT
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#else
|
||
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
#endif
|
||
}
|
||
`;var fM=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 normal;
|
||
in float batchId;
|
||
|
||
out vec3 v_positionEC;
|
||
out vec3 v_normalEC;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
|
||
v_normalEC = czm_normal * normal; // normal in eye coordinates
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;var dM=`in vec3 v_positionEC;
|
||
in vec3 v_normalEC;
|
||
in vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
vec3 positionToEyeEC = -v_positionEC;
|
||
|
||
vec3 normalEC = normalize(v_normalEC);
|
||
#ifdef FACE_FORWARD
|
||
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
|
||
#endif
|
||
|
||
czm_materialInput materialInput;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
materialInput.st = v_st;
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef FLAT
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#else
|
||
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
#endif
|
||
}
|
||
`;var hM=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 normal;
|
||
in vec2 st;
|
||
in float batchId;
|
||
|
||
out vec3 v_positionEC;
|
||
out vec3 v_normalEC;
|
||
out vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
|
||
v_normalEC = czm_normal * normal; // normal in eye coordinates
|
||
v_st = st;
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;var Jve={ADD:ee.FUNC_ADD,SUBTRACT:ee.FUNC_SUBTRACT,REVERSE_SUBTRACT:ee.FUNC_REVERSE_SUBTRACT,MIN:ee.MIN,MAX:ee.MAX},Cc=Object.freeze(Jve);var Zve={ZERO:ee.ZERO,ONE:ee.ONE,SOURCE_COLOR:ee.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:ee.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:ee.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:ee.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:ee.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:ee.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:ee.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:ee.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:ee.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:ee.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:ee.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:ee.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:ee.SRC_ALPHA_SATURATE},Uo=Object.freeze(Zve);var $ve={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE,functionDestinationAlpha:Uo.ONE})},pn=Object.freeze($ve);var ePe={FRONT:ee.FRONT,BACK:ee.BACK,FRONT_AND_BACK:ee.FRONT_AND_BACK},Mi=Object.freeze(ePe);function cI(e){e=e??V.EMPTY_OBJECT,this.material=e.material,this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=e.closed??!1}Object.defineProperties(cI.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});cI.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(`
|
||
`)};cI.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};cI.prototype.getRenderState=function(){let e=this.isTranslucent(),t=ze(this.renderState,!1);return e?(t.depthMask=!1,t.blending=pn.ALPHA_BLEND):t.depthMask=!0,t};cI.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=pn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:Mi.BACK}),l(n)&&(i=wt(n,i,!0)),i};var go=cI;function tPe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Xn=tPe;function lI(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties(lI.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});lI.clone=function(e){if(l(e))return new lI(e._format,e._datatype,e._width,e._height,e._buffer)};lI.prototype.clone=function(){return lI.clone(this)};var mM=lI;var Fee=Es(_u(),1);function Qee(){if(!l(ba._canTransferArrayBuffer)){let e=O9("transferTypedArrayTest");e.postMessage=e.webkitPostMessage??e.postMessage;let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return ba._canTransferArrayBuffer=!1,ba._canTransferArrayBuffer}ba._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),ba._canTransferArrayBuffer=s}})}return ba._canTransferArrayBuffer}var L9=new _e;function N9(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function O9(e){let t=new Fee.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(aC(e))s=e;else if(!n){let a=fn(`${ba._workerModulePrefix}/${i}.js`);aC(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=N9(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=`
|
||
importScripts("${N9(CESIUM_WORKERS)}");
|
||
CesiumWorkers["${i}"]();
|
||
`;return r=N9(a),new Worker(r,o)}if(r=e,n||(r=fn(`${ba._workerModulePrefix+i}.js`)),!jt.supportsEsmWebWorkers())throw new ce("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function nPe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!jt.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new ce(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=fn(t.fallbackModulePath),n}n.wasmBinaryFile=fn(t.wasmBinaryFile);let i=await we.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function ba(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var iPe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new ce(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new me(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),L9.raiseEvent(s),i(s)}else L9.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},oPe=[];async function rPe(e,t,n){let i=await Promise.resolve(Qee());l(n)?i||(n.length=0):n=oPe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",iPe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:fn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function sPe(e,t,n){++e._activeTasks;try{let i=await rPe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}ba.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=O9(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return sPe(this,e,t)};ba.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=O9(this._workerPath),i=await nPe(this,e),o=await Promise.resolve(Qee()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new ce("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};ba.prototype.isDestroyed=function(){return!1};ba.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};ba.taskCompletedEvent=L9;ba._defaultWorkerModulePrefix="Workers/";ba._workerModulePrefix=ba._defaultWorkerModulePrefix;ba._canTransferArrayBuffer=void 0;var mi=ba;function LA(){}LA._transcodeTaskProcessor=new mi("transcodeKTX2",Number.POSITIVE_INFINITY);LA._readyPromise=void 0;function aPe(){let e=LA._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return LA._transcodeTaskProcessor;throw new ce("KTX2 transcoder could not be initialized.")});LA._readyPromise=e}LA.transcode=function(e,t){return l(LA._readyPromise)||aPe(),LA._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new mM(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var AM=LA;var kee;Uee.setKTX2SupportedFormats=function(e,t,n,i,o,r){kee={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function Uee(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=we.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return AM.transcode(n,kee)})}var Iu=Uee;var mo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};mo.getMathType=function(e){switch(e){case mo.SCALAR:return Number;case mo.VEC2:return k;case mo.VEC3:return d;case mo.VEC4:return se;case mo.MAT2:return Wi;case mo.MAT3:return J;case mo.MAT4:return R}};mo.getNumberOfComponents=function(e){switch(e){case mo.SCALAR:return 1;case mo.VEC2:return 2;case mo.VEC3:return 3;case mo.VEC4:case mo.MAT2:return 4;case mo.MAT3:return 9;case mo.MAT4:return 16}};mo.getAttributeLocationCount=function(e){switch(e){case mo.SCALAR:case mo.VEC2:case mo.VEC3:case mo.VEC4:return 1;case mo.MAT2:return 2;case mo.MAT3:return 3;case mo.MAT4:return 4}};mo.getGlslType=function(e){switch(e){case mo.SCALAR:return"float";case mo.VEC2:return"vec2";case mo.VEC3:return"vec3";case mo.VEC4:return"vec4";case mo.MAT2:return"mat2";case mo.MAT3:return"mat3";case mo.MAT4:return"mat4"}};var Ht=Object.freeze(mo);var Gee=1/256,zee=256,Bo={};Bo.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*D.signNotZero(i),n.y=(1-Math.abs(i))*D.signNotZero(o)}return n.x=D.toSNorm(n.x,t),n.y=D.toSNorm(n.y,t),n};Bo.octEncode=function(e,t){return Bo.octEncodeInRange(e,255,t)};var JS=new k,Vee=new Uint8Array(1);function pM(e){return Vee[0]=e,Vee[0]}Bo.octEncodeToCartesian4=function(e,t){return Bo.octEncodeInRange(e,65535,JS),t.x=pM(JS.x*Gee),t.y=pM(JS.x),t.z=pM(JS.y*Gee),t.w=pM(JS.y),t};Bo.octDecodeInRange=function(e,t,n,i){if(i.x=D.fromSNorm(e,n),i.y=D.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*D.signNotZero(o),i.y=(1-Math.abs(o))*D.signNotZero(i.y)}return d.normalize(i,i)};Bo.octDecode=function(e,t,n){return Bo.octDecodeInRange(e,t,255,n)};Bo.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*zee+i,a=o*zee+r;return Bo.octDecodeInRange(s,a,65535,t)};Bo.octPackFloat=function(e){return 256*e.x+e.y};var Q9=new k;Bo.octEncodeFloat=function(e){return Bo.octEncode(e,Q9),Bo.octPackFloat(Q9)};Bo.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return Bo.octDecode(i,o,t)};Bo.octPack=function(e,t,n,i){let o=Bo.octEncodeFloat(e),r=Bo.octEncodeFloat(t),s=Bo.octEncode(n,Q9);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};Bo.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;Bo.octDecodeFloat(s,t),Bo.octDecodeFloat(c,n),Bo.octDecode(r,a,i)};Bo.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};Bo.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function F9(e){return e>>1^-(e&1)}Bo.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=F9(e[a]),r+=F9(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=F9(n[a]),n[a]=s)};Bo.dequantize=function(e,t,n,i){let o=Ht.getNumberOfComponents(n),r;switch(t){case q.BYTE:r=127;break;case q.UNSIGNED_BYTE:r=255;break;case q.SHORT:r=32767;break;case q.UNSIGNED_SHORT:r=65535;break;case q.INT:r=2147483647;break;case q.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};Bo.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,A=3*a;t[A]=u*r,t[A+1]=f*s,t[A+2]=h*r}return t};var Fn=Bo;var Hee=new d,Wee=new d,jee=new d;function cPe(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,A;if(l(t.z)){if(d.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,Hee),s=d.subtract(i,t,Wee),a=d.subtract(e,t,jee),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),A=d.dot(s,a)}else{if(k.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(k.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(k.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=k.subtract(n,t,Hee),s=k.subtract(i,t,Wee),a=k.subtract(e,t,jee),c=k.dot(r,r),u=k.dot(r,s),f=k.dot(r,a),h=k.dot(s,s),A=k.dot(s,a)}o.y=h*f-u*A,o.z=c*A-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var uI=cPe;function em(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}em.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var OA={high:0,low:0};em.fromCartesian=function(e,t){l(t)||(t=new em);let n=t.high,i=t.low;return em.encode(e.x,OA),n.x=OA.high,i.x=OA.low,em.encode(e.y,OA),n.y=OA.high,i.y=OA.low,em.encode(e.z,OA),n.z=OA.high,i.z=OA.low,t};var k9=new em;em.writeElements=function(e,t,n){em.fromCartesian(e,k9);let i=k9.high,o=k9.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ei=em;var na={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT};na.getSizeInBytes=function(e){switch(e){case na.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case na.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case na.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};na.fromSizeInBytes=function(e){switch(e){case 2:return na.UNSIGNED_SHORT;case 4:return na.UNSIGNED_INT;case 1:return na.UNSIGNED_BYTE}};na.validate=function(e){return l(e)&&(e===na.UNSIGNED_BYTE||e===na.UNSIGNED_SHORT||e===na.UNSIGNED_INT)};na.createTypedArray=function(e,t){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};na.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};na.fromTypedArray=function(e){if(e instanceof Uint8Array)return na.UNSIGNED_BYTE;if(e instanceof Uint16Array)return na.UNSIGNED_SHORT;if(e instanceof Uint32Array)return na.UNSIGNED_INT};var Fe=Object.freeze(na);var U9={};U9.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function Yee(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}U9.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<D.EPSILON14)return[0,0];if(c>u&&u/c<D.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=Yee(o,-r,D.EPSILON14);if(s<0)return[];let a=-.5*Yee(t,D.sign(t)*Math.sqrt(s),D.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var Rl=U9;var z9={};z9.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function G9(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,A=o*s-f,g=o*a-r*s,m=r*a-h,_=4*A*m-g*g,y,C;if(_<0){let H,W,Z;f*u>=c*h?(H=o,W=A,Z=-2*r*A+o*g):(H=a,W=m,Z=-a*g+2*s*m);let $=-(Z<0?-1:1)*Math.abs(H)*Math.sqrt(-_);C=-Z+$;let X=C/2,he=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),ge=C===$?-he:-W/he;return y=W<=0?he+ge:-Z/(he*he+ge*ge+W),f*u>=c*h?[(y-r)/o]:[-a/(y+s)]}let E=A,I=-2*r*A+o*g,b=m,S=-a*g+2*s*m,B=Math.sqrt(_),v=Math.sqrt(3)/2,P=Math.abs(Math.atan2(o*B,-I)/3);y=2*Math.sqrt(-E);let N=Math.cos(P);C=y*N;let L=y*(-N/2-v*Math.sin(P)),p=C+L>2*r?C-r:L-r,x=o,T=p/x;P=Math.abs(Math.atan2(a*B,-S)/3),y=2*Math.sqrt(-b),N=Math.cos(P),C=y*N,L=y*(-N/2-v*Math.sin(P));let w=-a,M=C+L<2*s?C+s:L+s,O=w/M,U=x*M,Q=-p*M-x*w,z=p*w,F=(s*Q-r*z)/(-r*Q+s*U);return T<=F?T<=O?F<=O?[T,F,O]:[T,O,F]:[O,T,F]:T<=O?[F,T,O]:F<=O?[F,O,T]:[O,F,T]}z9.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return Rl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=Rl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return G9(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):G9(e,t,0,i);if(i===0)return o=Rl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return G9(e,t,n,i)};var fI=z9;var V9={};V9.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,A=h*i,g=o*o,m=g*o;return a*u*h-4*c*A-4*e*f*h+18*e*t*n*A-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function Od(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=fI.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<D.EPSILON14){let h=Rl.computeRealRoots(1,r,a);if(h.length===2){let A=h[0],g=h[1],m;if(A>=0&&g>=0){let _=Math.sqrt(A),y=Math.sqrt(g);return[u-y,u-_,u+_,u+y]}else{if(A>=0&&g<0)return m=Math.sqrt(A),[u-m,u+m];if(A<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),A=(r+f-s/h)/2,g=(r+f+s/h)/2,m=Rl.computeRealRoots(1,h,A),_=Rl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,_.length!==0?(_[0]+=u,_[1]+=u,m[1]<=_[0]?[m[0],m[1],_[0],_[1]]:_[1]<=m[0]?[_[0],_[1],m[0],m[1]]:m[0]>=_[0]&&m[1]<=_[1]?[_[0],m[0],m[1],_[1]]:_[0]>=m[0]&&_[1]<=m[1]?[m[0],_[0],_[1],m[1]]:m[0]>_[0]&&m[0]<_[1]?[_[0],m[0],_[1],m[1]]:[m[0],_[0],m[1],_[1]]):m):_.length!==0?(_[0]+=u,_[1]+=u,_):[]}}return[]}function ZS(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=fI.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],A=t-h,g=A*A,m=e/2,_=A/2,y=g-4*i,C=g+4*Math.abs(i),E=s-4*h,I=s+4*Math.abs(h),b,S;if(h<0||y*I<E*C){let x=Math.sqrt(E);b=x/2,S=x===0?0:(e*_-n)/x}else{let x=Math.sqrt(y);b=x===0?0:(e*_-n)/x,S=x/2}let B,v;m===0&&b===0?(B=0,v=0):D.sign(m)===D.sign(b)?(B=m+b,v=h/B):(v=m-b,B=h/v);let P,N;_===0&&S===0?(P=0,N=0):D.sign(_)===D.sign(S)?(P=_+S,N=i/P):(N=_-S,P=i/N);let L=Rl.computeRealRoots(1,B,P),p=Rl.computeRealRoots(1,v,N);if(L.length!==0)return p.length!==0?L[1]<=p[0]?[L[0],L[1],p[0],p[1]]:p[1]<=L[0]?[p[0],p[1],L[0],L[1]]:L[0]>=p[0]&&L[1]<=p[1]?[p[0],L[0],L[1],p[1]]:p[0]>=L[0]&&p[1]<=L[1]?[L[0],p[0],p[1],L[1]]:L[0]>p[0]&&L[0]<p[1]?[p[0],L[0],p[1],L[1]]:[L[0],p[0],L[1],p[1]]:L;if(p.length!==0)return p}return[]}V9.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<D.EPSILON15)return fI.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return Od(r,s,a,c);case 1:return ZS(r,s,a,c);case 2:return ZS(r,s,a,c);case 3:return Od(r,s,a,c);case 4:return Od(r,s,a,c);case 5:return ZS(r,s,a,c);case 6:return Od(r,s,a,c);case 7:return Od(r,s,a,c);case 8:return ZS(r,s,a,c);case 9:return Od(r,s,a,c);case 10:return Od(r,s,a,c);case 11:return ZS(r,s,a,c);case 12:return Od(r,s,a,c);case 13:return Od(r,s,a,c);case 14:return Od(r,s,a,c);case 15:return Od(r,s,a,c);default:return}};var gM=V9;function _M(e,t){t=d.clone(t??d.ZERO),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(e??d.ZERO),this.direction=t}_M.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new _M(e.origin,e.direction)};_M.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var In=_M;var Ko={};Ko.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var lPe=new d,uPe=new d,tte=new d,qee=new d,Kee=new d;Ko.rayTriangleParametric=function(e,t,n,i,o){o=o??!1;let r=e.origin,s=e.direction,a=d.subtract(n,t,lPe),c=d.subtract(i,t,uPe),u=d.cross(s,c,tte),f=d.dot(a,u),h,A,g,m,_;if(o){if(f<D.EPSILON6||(h=d.subtract(r,t,qee),g=d.dot(h,u),g<0||g>f)||(A=d.cross(h,a,Kee),m=d.dot(s,A),m<0||g+m>f))return;_=d.dot(c,A)/f}else{if(Math.abs(f)<D.EPSILON6)return;let y=1/f;if(h=d.subtract(r,t,qee),g=d.dot(h,u)*y,g<0||g>1||(A=d.cross(h,a,Kee),m=d.dot(s,A)*y,m<0||g+m>1))return;_=d.dot(c,A)*y}return _};Ko.rayTriangle=function(e,t,n,i,o,r){let s=Ko.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var fPe=new In;Ko.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=fPe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=Ko.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function dPe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var hPe={root0:0,root1:0};function nte(e,t,n){l(n)||(n=new _c);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,tte),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=dPe(c,u,f,hPe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}Ko.raySphere=function(e,t,n){if(n=nte(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var mPe=new In;Ko.lineSegmentSphere=function(e,t,n,i){let o=mPe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=nte(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var APe=new d,pPe=new d;Ko.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,APe),o=d.multiplyComponents(n,e.direction,pPe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let A=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,A<u)return;if(A>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,_=a/h;return m<_?new _c(m,_):{start:_,stop:m}}let g=Math.sqrt(a/c);return new _c(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new _c(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new _c(0,-s/c)};function mC(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}Ko.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[J.COLUMN1ROW1]-e[J.COLUMN2ROW2])*s,c=o*(i*mC(e[J.COLUMN1ROW0],e[J.COLUMN0ROW1],D.EPSILON15)+t.y),u=e[J.COLUMN0ROW0]*r+e[J.COLUMN2ROW2]*s+i*t.x+n,f=s*mC(e[J.COLUMN2ROW1],e[J.COLUMN1ROW2],D.EPSILON15),h=o*(i*mC(e[J.COLUMN2ROW0],e[J.COLUMN0ROW2])+t.z),A,g=[];if(h===0&&f===0){if(A=Rl.computeRealRoots(a,c,u),A.length===0)return g;let P=A[0],N=Math.sqrt(Math.max(1-P*P,0));if(g.push(new d(i,o*P,o*-N)),g.push(new d(i,o*P,o*N)),A.length===2){let L=A[1],p=Math.sqrt(Math.max(1-L*L,0));g.push(new d(i,o*L,o*-p)),g.push(new d(i,o*L,o*p))}return g}let m=h*h,_=f*f,y=a*a,C=h*f,E=y+_,I=2*(c*a+C),b=2*u*a+c*c-_+m,S=2*(u*c-C),B=u*u-m;if(E===0&&I===0&&b===0&&S===0)return g;A=gM.computeRealRoots(E,I,b,S,B);let v=A.length;if(v===0)return g;for(let P=0;P<v;++P){let N=A[P],L=N*N,p=Math.max(1-L,0),x=Math.sqrt(p),T;D.sign(a)===D.sign(u)?T=mC(a*L+u,c*N,D.EPSILON12):D.sign(u)===D.sign(c*N)?T=mC(a*L,c*N+u,D.EPSILON12):T=mC(a*L+c*N,u,D.EPSILON12);let w=mC(f*N,h,D.EPSILON15),M=T*w;M<0?g.push(new d(i,o*N,o*x)):M>0?g.push(new d(i,o*N,o*-x)):x!==0?(g.push(new d(i,o*N,o*-x)),g.push(new d(i,o*N,o*x)),++P):g.push(new d(i,o*N,o*x))}return g};var H9=new d,Xee=new d,Jee=new d,yM=new d,gPe=new d,_Pe=new J,yPe=new J,CPe=new J,EPe=new J,IPe=new J,Zee=new J,$ee=new J,ete=new d,xPe=new d,bPe=new Ae;Ko.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let B=t.geodeticSurfaceNormal(n,H9);if(d.dot(i,B)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,H9),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,yM),c=d.normalize(d.cross(a,s,Xee),Xee),u=d.normalize(d.cross(s,c,Jee),Jee),f=_Pe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=J.transpose(f,yPe),A=J.fromScale(t.radii,CPe),g=J.fromScale(t.oneOverRadii,EPe),m=IPe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let _=J.multiply(J.multiply(h,g,Zee),m,Zee),y=J.multiply(J.multiply(_,A,$ee),f,$ee),C=J.multiplyByVector(_,n,gPe),E=Ko.quadraticVectorExpression(y,d.negate(C,H9),0,0,1),I,b,S=E.length;if(S>0){let B=d.clone(d.ZERO,xPe),v=Number.NEGATIVE_INFINITY;for(let N=0;N<S;++N){I=J.multiplyByVector(A,J.multiplyByVector(f,E[N],ete),ete);let L=d.normalize(d.subtract(I,n,yM),yM),p=d.dot(L,i);p>v&&(v=p,B=d.clone(I,B))}let P=t.cartesianToCartographic(B,bPe);return v=D.clamp(v,0,1),b=d.magnitude(d.subtract(B,n,yM))*Math.sqrt(1-v*v),b=o?-b:b,P.height=b,t.cartographicToCartesian(P,new d)}};var TPe=new d;Ko.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,TPe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};Ko.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return Ko.lineSegmentPlane(e,t,i,f),Ko.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return Ko.lineSegmentPlane(t,n,i,f),Ko.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return Ko.lineSegmentPlane(n,e,i,f),Ko.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return Ko.lineSegmentPlane(e,n,i,f),Ko.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return Ko.lineSegmentPlane(n,t,i,f),Ko.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return Ko.lineSegmentPlane(t,e,i,f),Ko.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var Ai=Ko;function ia(e,t){this.normal=d.clone(e),this.distance=t}ia.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new ia(t,i)};var SPe=new d;ia.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,SPe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new ia(n,i)};ia.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var wPe=new d;ia.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=ia.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,wPe);return d.subtract(t,o,n)};var BPe=new R,DPe=new se,vPe=new d;ia.transform=function(e,t,n){let i=e.normal,o=e.distance,r=R.inverseTranspose(t,BPe),s=se.fromElements(i.x,i.y,i.z,o,DPe);s=R.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,vPe);return s=se.divideByScalar(s,d.magnitude(a),s),ia.fromCartesian4(s,n)};ia.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new ia(e.normal,e.distance)};ia.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};ia.ORIGIN_XY_PLANE=Object.freeze(new ia(d.UNIT_Z,0));ia.ORIGIN_YZ_PLANE=Object.freeze(new ia(d.UNIT_X,0));ia.ORIGIN_ZX_PLANE=Object.freeze(new ia(d.UNIT_Y,0));var mn=ia;var W9={};W9.calculateACMR=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};W9.tipsify=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(p,x,T,w){for(;x.length>=1;){let M=x[x.length-1];if(x.splice(x.length-1,1),p[M].numLiveTriangles>0)return M}for(;o<w;){if(p[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(p,x,T,w,M,O,U){let Q=-1,z,F=-1,H=0;for(;H<T.length;){let W=T[H];w[W].numLiveTriangles&&(z=0,M-w[W].timeStamp+2*w[W].numLiveTriangles<=x&&(z=M-w[W].timeStamp),(z>F||F===-1)&&(F=z,Q=W)),++H}return Q===-1?r(w,O,p,U):Q}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let A=[],g;for(g=0;g<c;g++)A[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)A[t[u]].vertexTriangles.push(m),++A[t[u]].numLiveTriangles,A[t[u+1]].vertexTriangles.push(m),++A[t[u+1]].numLiveTriangles,A[t[u+2]].vertexTriangles.push(m),++A[t[u+2]].numLiveTriangles,++m,u+=3;let _=0,y=i+1;o=1;let C=[],E=[],I,b,S=0,B=[],v=a/3,P=[];for(g=0;g<v;g++)P[g]=!1;let N,L;for(;_!==-1;){C=[],b=A[_],L=b.vertexTriangles.length;for(let p=0;p<L;++p)if(m=b.vertexTriangles[p],!P[m]){P[m]=!0,u=m+m+m;for(let x=0;x<3;++x)N=t[u],C.push(N),E.push(N),B[S]=N,++S,I=A[N],--I.numLiveTriangles,y-I.timeStamp>i&&(I.timeStamp=y,++y),++u}_=s(t,i,C,A,y,E,c)}return B};var CM=W9;var Kc={};function wM(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function PPe(e){let t=e.length,n=t/3*6,i=Fe.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)wM(i,o,e[r],e[r+1],e[r+2]);return i}function RPe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Fe.createTypedArray(t,n);wM(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)wM(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function MPe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Fe.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)wM(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}Kc.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Me.TRIANGLES:e.indices=PPe(t);break;case Me.TRIANGLE_STRIP:e.indices=RPe(t);break;case Me.TRIANGLE_FAN:e.indices=MPe(t);break}e.primitiveType=Me.LINES}return e};Kc.createLineSegmentsForVectors=function(e,t,n){t=t??"normal",n=n??1e4;let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new le(u.center,u.radius+n)),new ht({attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Me.LINES,boundingSphere:c})};Kc.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};Kc.reorderForPreVertexCache=function(e){let t=ht.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let A=0;A<t;A++)i[A]=-1;let o=n,r=o.length,s=Fe.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let A in h)if(h.hasOwnProperty(A)&&l(h[A])&&l(h[A].values)){let g=h[A],m=g.values,_=0,y=g.componentsPerAttribute,C=q.createTypedArray(g.componentDatatype,u*y);for(;_<t;){let E=i[_];if(E!==-1)for(let I=0;I<y;I++)C[y*E+I]=m[y*_+I];++_}g.values=C}}return e};Kc.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Me.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=CM.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function ite(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new De({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function NPe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}Kc.fitToUnsignedShortIndices=function(e){let t=[],n=ht.computeNumberOfVertices(e);if(l(e.indices)&&n>=D.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=ite(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Me.TRIANGLES?u=3:e.primitiveType===Me.LINES?u=2:e.primitiveType===Me.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let A=a[f+h],g=i[A];l(g)||(g=r++,i[A]=g,NPe(s,e.attributes,A)),o.push(g)}r+u>=D.SIXTY_FOUR_KILOBYTES&&(t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=ite(e.attributes))}o.length!==0&&t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var ote=new d,LPe=new Ae;Kc.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Hi;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,ote),A=s.cartesianToCartographic(h,LPe),g=o.project(A,ote);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var j9={high:0,low:0};Kc.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)ei.encode(r[f],j9),a[f]=j9.high,c[f]=j9.low;let u=o.componentsPerAttribute;return e.attributes[n]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var Qd=new d;function Y9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),R.multiplyByPoint(e,Qd,Qd),d.pack(Qd,n,o)}}function q9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),J.multiplyByVector(e,Qd,Qd),Qd=d.normalize(Qd,Qd),d.pack(Qd,n,o)}}var EM=new R,IM=new J;Kc.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(R.equals(t,R.IDENTITY))return e;let n=e.geometry.attributes;Y9(t,n.position),Y9(t,n.prevPosition),Y9(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(R.inverse(t,EM),R.transpose(EM,EM),R.getMatrix3(EM,IM),q9(IM,n.normal),q9(IM,n.tangent),q9(IM,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=le.transform(i,t,i)),e.modelMatrix=R.clone(R.IDENTITY),e};function OPe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new De({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:q.createTypedArray(s.componentDatatype,a)}))}return i}var FPe=new d;function K9(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=OPe(e,t),h,A,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(A=e[o][t].attributes[i].values,g=A.length,r=0;r<g;++r)h[s++]=A[r];let m;if(c){let E=0;for(o=0;o<n;++o)E+=e[o][t].indices.length;let I=ht.computeNumberOfVertices(new ht({attributes:f,primitiveType:Me.POINTS})),b=Fe.createTypedArray(I,E),S=0,B=0;for(o=0;o<n;++o){let v=e[o][t].indices,P=v.length;for(s=0;s<P;++s)b[S++]=B+v[s];B+=ht.computeNumberOfVertices(e[o][t])}m=b}let _=new d,y=0,C;for(o=0;o<n;++o){if(C=e[o][t].boundingSphere,!l(C)){_=void 0;break}d.add(C.center,_,_)}if(l(_))for(d.divideByScalar(_,n,_),o=0;o<n;++o){C=e[o][t].boundingSphere;let E=d.magnitude(d.subtract(C.center,_,FPe))+C.radius;E>y&&(y=E)}return new ht({attributes:f,indices:m,primitiveType:u,boundingSphere:l(_)?new le(_,y):void 0})}Kc.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(K9(t,"geometry")),n.length>0&&(o.push(K9(n,"westHemisphereGeometry")),o.push(K9(n,"eastHemisphereGeometry"))),o};var yf=new d,$S=new d,dI=new d,hI=new d;Kc.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],_=t[u+1],y=t[u+2],C=m*3,E=_*3,I=y*3;$S.x=i[C],$S.y=i[C+1],$S.z=i[C+2],dI.x=i[E],dI.y=i[E+1],dI.z=i[E+2],hI.x=i[I],hI.y=i[I+1],hI.z=i[I+2],s[m].count++,s[_].count++,s[y].count++,d.subtract(dI,$S,dI),d.subtract(hI,$S,hI),a[f]=d.cross(dI,hI,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let A;for(u=0;u<r;u+=3){A=s[t[u]];let m=A.indexOffset+A.currentCount;c[m]=f,A.currentCount++,A=s[t[u+1]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,A=s[t[u+2]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(A=s[u],d.clone(d.ZERO,yf),A.count>0){for(f=0;f<A.count;f++)d.add(yf,a[c[A.indexOffset+f]],yf);d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&d.clone(a[c[A.indexOffset]],yf)}d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&(yf.z=1),d.normalize(yf,yf),g[m]=yf.x,g[m+1]=yf.y,g[m+2]=yf.z}return e.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e};var QPe=new d,rte=new d,kPe=new d;Kc.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,A;for(u=0;u<a;u+=3){let _=n[u],y=n[u+1],C=n[u+2];f=_*3,h=y*3,A=C*3;let E=_*2,I=y*2,b=C*2,S=i[f],B=i[f+1],v=i[f+2],P=r[E],N=r[E+1],L=r[I+1]-N,p=r[b+1]-N,x=1/((r[I]-P)*p-(r[b]-P)*L),T=(p*(i[h]-S)-L*(i[A]-S))*x,w=(p*(i[h+1]-B)-L*(i[A+1]-B))*x,M=(p*(i[h+2]-v)-L*(i[A+2]-v))*x;c[f]+=T,c[f+1]+=w,c[f+2]+=M,c[h]+=T,c[h+1]+=w,c[h+2]+=M,c[A]+=T,c[A+1]+=w,c[A+2]+=M}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,A=f+2;let _=d.fromArray(o,f,QPe),y=d.fromArray(c,f,kPe),C=d.dot(_,y);d.multiplyByScalar(_,C,rte),d.normalize(d.subtract(y,rte,y),y),g[f]=y.x,g[h]=y.y,g[A]=y.z,d.normalize(d.cross(_,y,y),y),m[f]=y.x,m[h]=y.y,m[A]=y.z}return e.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m}),e};var ew=new k,Fd=new d,ste=new d,ate=new d,xM=new k;Kc.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let B=t.values;i=B.length/3;let v=new Float32Array(i*2),P=0;for(n=0;n<i;++n){if(d.fromArray(B,n*3,Fd),d.equals(Fd,d.ZERO)){P+=2;continue}xM=Fn.octEncodeInRange(Fd,65535,xM),v[P++]=xM.x,v[P++]=xM.y}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:v}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),A,g,m,_;s&&(A=o.values),a&&(g=r.values),f&&(m=c.values),h&&(_=u.values),i=(s?A.length:g.length)/(s?3:2);let E=i,I=a&&s?2:1;I+=f||h?1:0,E*=I;let b=new Float32Array(E),S=0;for(n=0;n<i;++n){a&&(k.fromArray(g,n*2,ew),b[S++]=Fn.compressTextureCoordinates(ew));let B=n*3;s&&l(m)&&l(_)?(d.fromArray(A,B,Fd),d.fromArray(m,B,ste),d.fromArray(_,B,ate),Fn.octPack(Fd,ste,ate,ew),b[S++]=ew.x,b[S++]=ew.y):(s&&(d.fromArray(A,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),f&&(d.fromArray(m,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),h&&(d.fromArray(_,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)))}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:I,values:b}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function UPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function GPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function zPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function VPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function HPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Me.LINES,e}function WPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Me.LINES,e}function jPe(e){switch(e.primitiveType){case Me.TRIANGLE_FAN:return GPe(e);case Me.TRIANGLE_STRIP:return zPe(e);case Me.TRIANGLES:return UPe(e);case Me.LINE_STRIP:return HPe(e);case Me.LINE_LOOP:return WPe(e);case Me.LINES:return VPe(e)}return e}function Cg(e,t){Math.abs(e.y)<D.EPSILON6&&(t?e.y=-D.EPSILON6:e.y=D.EPSILON6)}function YPe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){Cg(e,e.y<0),Cg(t,t.y<0),Cg(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=D.sign(e.y):s=D.sign(n.y):o>r?s=D.sign(t.y):s=D.sign(n.y);let a=s<0;Cg(e,a),Cg(t,a),Cg(n,a)}var cte=new d;function Cf(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,cte),e.y/(e.y-t.y),cte),n),d.clone(n,i),Cg(n,!0),Cg(i,!1)}var AC=new d,pC=new d,gC=new d,_C=new d,X9={positions:new Array(7),indices:new Array(9)};function qPe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;YPe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=X9.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=X9.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=AC,c[4]=pC,c[5]=gC,c[6]=_C,c.length=7),X9}function lte(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=q.createTypedArray(r.componentDatatype,r.values)}let i=ht.computeNumberOfVertices(e);return e.indices=Fe.createTypedArray(i,e.indices),t&&(e.boundingSphere=le.fromVertices(n.position.values)),e}function AI(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new De({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ht({attributes:n,indices:[],primitiveType:e.primitiveType})}function e6(e,t,n){let i=l(e.geometry.boundingSphere);t=lte(t,i),n=lte(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function t6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,A){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),_=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(_,c.z,_);let y=e.add(g,m,g);e.add(y,_,y),A&&e.normalize(y,y),e.pack(y,f,h*t)}}var KPe=t6(se,4),SM=t6(d,3),Ate=t6(k,2),XPe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>D.EPSILON6?1:0},tw=new d,J9=new d,Z9=new d,JPe=new d;function bM(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let y=d.fromArray(o,e*3,tw),C=d.fromArray(o,t*3,J9),E=d.fromArray(o,n*3,Z9),I=uI(i,y,C,E,JPe);if(l(I)){if(l(r)&&SM(e,t,n,I,r,h.normal.values,_,!0),l(u)){let b=d.fromArray(u,e*3,tw),S=d.fromArray(u,t*3,J9),B=d.fromArray(u,n*3,Z9);d.multiplyByScalar(b,I.x,b),d.multiplyByScalar(S,I.y,S),d.multiplyByScalar(B,I.z,B);let v;!d.equals(b,d.ZERO)||!d.equals(S,d.ZERO)||!d.equals(B,d.ZERO)?(v=d.add(b,S,b),d.add(v,B,v),d.normalize(v,v)):(v=tw,v.x=0,v.y=0,v.z=0),d.pack(v,h.extrudeDirection.values,_*3)}if(l(f)&&XPe(e,t,n,I,f,h.applyOffset.values,_),l(s)&&SM(e,t,n,I,s,h.tangent.values,_,!0),l(a)&&SM(e,t,n,I,a,h.bitangent.values,_,!0),l(c)&&Ate(e,t,n,I,c,h.st.values,_),g>0)for(let b=0;b<g;b++){let S=A[b];ZPe(e,t,n,I,_,m[S],h[S])}}}function ZPe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:KPe(e,t,n,i,c,u,o,!1);break;case 3:SM(e,t,n,i,c,u,o,!1);break;case 2:Ate(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function tm(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var $Pe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function ute(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let v in n)n.hasOwnProperty(v)&&!$Pe[v]&&l(n[v])&&h.push(v);let A=h.length,g=AI(t),m=AI(t),_,y,C,E,I,b=[];b.length=i.length/3;let S=[];for(S.length=i.length/3,I=0;I<b.length;++I)b[I]=-1,S[I]=-1;let B=f.length;for(I=0;I<B;I+=3){let v=f[I],P=f[I+1],N=f[I+2],L=d.fromArray(i,v*3),p=d.fromArray(i,P*3),x=d.fromArray(i,N*3),T=qPe(L,p,x);if(l(T)&&T.positions.length>3){let w=T.positions,M=T.indices,O=M.length;for(let U=0;U<O;++U){let Q=M[U],z=w[Q];z.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,Q<3?I+Q:-1,z),bM(v,P,N,z,i,o,s,r,a,c,u,_,h,A,n,E)}}else l(T)&&(L=T.positions[0],p=T.positions[1],x=T.positions[2]),L.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,I,L),bM(v,P,N,L,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+1,p),bM(v,P,N,p,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+2,x),bM(v,P,N,x,i,o,s,r,a,c,u,_,h,A,n,E)}e6(e,m,g)}var pte=mn.fromPointNormal(d.ZERO,d.UNIT_Y),eRe=new d,tRe=new d;function mI(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,tw);d.equalsEpsilon(a,n,D.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function fte(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=AI(t),a=AI(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let A=r[c],g=r[c+1],m=d.fromArray(i,A*3,tw),_=d.fromArray(i,g*3,J9),y;Math.abs(m.y)<D.EPSILON6&&(m.y<0?m.y=-D.EPSILON6:m.y=D.EPSILON6),Math.abs(_.y)<D.EPSILON6&&(_.y<0?_.y=-D.EPSILON6:_.y=D.EPSILON6);let C=s.attributes,E=s.indices,I=h,b=a.attributes,S=a.indices,B=f,v=Ai.lineSegmentPlane(m,_,pte,Z9);if(l(v)){let P=d.multiplyByScalar(d.UNIT_Y,5*D.EPSILON9,eRe);m.y<0&&(d.negate(P,P),C=a.attributes,E=a.indices,I=f,b=s.attributes,S=s.indices,B=h);let N=d.add(v,P,tRe);y=tm(C,E,I,r,c,m),mI(A,g,m,i,y,C,o),y=tm(C,E,I,r,-1,N),mI(A,g,N,i,y,C,o),d.negate(P,P),d.add(v,P,N),y=tm(b,S,B,r,-1,N),mI(A,g,N,i,y,b,o),y=tm(b,S,B,r,c+1,_),mI(A,g,_,i,y,b,o)}else{let P,N,L;m.y<0?(P=a.attributes,N=a.indices,L=f):(P=s.attributes,N=s.indices,L=h),y=tm(P,N,L,r,c,m),mI(A,g,m,i,y,P,o),y=tm(P,N,L,r,c+1,_),mI(A,g,_,i,y,P,o)}}e6(e,a,s)}var dte=new k,nRe=new k,gte=new d,_te=new d,$9=new d,iRe=new d,oRe=new d,rRe=new d,hte=new se;function mte(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,gte);if(a.x>0)continue;let c=d.unpack(i,s,_te);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,$9);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var sRe=5*D.EPSILON9,TM=D.EPSILON6;function aRe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=AI(t),f=AI(t),h,A,g,m=!1,_=i.length/3;for(h=0;h<_;h+=4){let y=h,C=h+2,E=d.fromArray(i,y*3,gte),I=d.fromArray(i,C*3,_te);if(Math.abs(E.y)<TM)for(E.y=TM*(I.y<0?-1:1),i[h*3+1]=E.y,i[(h+1)*3+1]=E.y,A=y*3;A<y*3+12;A+=3)o[A]=i[h*3],o[A+1]=i[h*3+1],o[A+2]=i[h*3+2];if(Math.abs(I.y)<TM)for(I.y=TM*(E.y<0?-1:1),i[(h+2)*3+1]=I.y,i[(h+3)*3+1]=I.y,A=y*3;A<y*3+12;A+=3)r[A]=i[(h+2)*3],r[A+1]=i[(h+2)*3+1],r[A+2]=i[(h+2)*3+2];let b=u.attributes,S=u.indices,B=f.attributes,v=f.indices,P=Ai.lineSegmentPlane(E,I,pte,iRe);if(l(P)){m=!0;let N=d.multiplyByScalar(d.UNIT_Y,sRe,oRe);E.y<0&&(d.negate(N,N),b=f.attributes,S=f.indices,B=u.attributes,v=u.indices);let L=d.add(P,N,rRe);b.position.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.position.values.push(L.x,L.y,L.z),b.position.values.push(L.x,L.y,L.z),b.prevPosition.values.push(o[y*3],o[y*3+1],o[y*3+2]),b.prevPosition.values.push(o[y*3+3],o[y*3+4],o[y*3+5]),b.prevPosition.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),d.negate(N,N),d.add(P,N,L),B.position.values.push(L.x,L.y,L.z),B.position.values.push(L.x,L.y,L.z),B.position.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.nextPosition.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.nextPosition.values.push(r[C*3],r[C*3+1],r[C*3+2]),B.nextPosition.values.push(r[C*3+3],r[C*3+4],r[C*3+5]);let p=k.fromArray(s,y*2,dte),x=Math.abs(p.y);b.expandAndWidth.values.push(-1,x,1,x),b.expandAndWidth.values.push(-1,-x,1,-x),B.expandAndWidth.values.push(-1,x,1,x),B.expandAndWidth.values.push(-1,-x,1,-x);let T=d.magnitudeSquared(d.subtract(P,E,$9));if(T/=d.magnitudeSquared(d.subtract(I,E,$9)),l(c)){let w=se.fromArray(c,y*4,hte),M=se.fromArray(c,C*4,hte),O=D.lerp(w.x,M.x,T),U=D.lerp(w.y,M.y,T),Q=D.lerp(w.z,M.z,T),z=D.lerp(w.w,M.w,T);for(A=y*4;A<y*4+8;++A)b.color.values.push(c[A]);for(b.color.values.push(O,U,Q,z),b.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),A=C*4;A<C*4+8;++A)B.color.values.push(c[A])}if(l(a)){let w=k.fromArray(a,y*2,dte),M=k.fromArray(a,(h+3)*2,nRe),O=D.lerp(w.x,M.x,T);for(A=y*2;A<y*2+4;++A)b.st.values.push(a[A]);for(b.st.values.push(O,w.y),b.st.values.push(O,M.y),B.st.values.push(O,w.y),B.st.values.push(O,M.y),A=C*2;A<C*2+4;++A)B.st.values.push(a[A])}g=b.position.values.length/3-4,S.push(g,g+2,g+1),S.push(g+1,g+2,g+3),g=B.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3)}else{let N,L;for(E.y<0?(N=f.attributes,L=f.indices):(N=u.attributes,L=u.indices),N.position.values.push(E.x,E.y,E.z),N.position.values.push(E.x,E.y,E.z),N.position.values.push(I.x,I.y,I.z),N.position.values.push(I.x,I.y,I.z),A=h*3;A<h*3+12;++A)N.prevPosition.values.push(o[A]),N.nextPosition.values.push(r[A]);for(A=h*2;A<h*2+8;++A)N.expandAndWidth.values.push(s[A]),l(a)&&N.st.values.push(a[A]);if(l(c))for(A=h*4;A<h*4+16;++A)N.color.values.push(c[A]);g=N.position.values.length/3-4,L.push(g,g+2,g+1),L.push(g+1,g+2,g+3)}}m&&(mte(f),mte(u)),e6(e,f,u)}Kc.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||le.intersectPlane(n,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING))return e;if(t.geometryType!==Ld.NONE)switch(t.geometryType){case Ld.POLYLINES:aRe(e);break;case Ld.TRIANGLES:ute(e);break;case Ld.LINES:fte(e);break}else jPe(t),t.primitiveType===Me.TRIANGLES?ute(e):t.primitiveType===Me.LINES&&fte(e);return e};var jn=Kc;var Si={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,HALF_FLOAT:ee.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ee.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ee.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ee.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ee.UNSIGNED_SHORT_5_6_5};Si.toWebGLConstant=function(e,t){switch(e){case Si.UNSIGNED_BYTE:return ee.UNSIGNED_BYTE;case Si.UNSIGNED_SHORT:return ee.UNSIGNED_SHORT;case Si.UNSIGNED_INT:return ee.UNSIGNED_INT;case Si.FLOAT:return ee.FLOAT;case Si.HALF_FLOAT:return t.webgl2?ee.HALF_FLOAT:ee.HALF_FLOAT_OES;case Si.UNSIGNED_INT_24_8:return ee.UNSIGNED_INT_24_8;case Si.UNSIGNED_SHORT_4_4_4_4:return ee.UNSIGNED_SHORT_4_4_4_4;case Si.UNSIGNED_SHORT_5_5_5_1:return ee.UNSIGNED_SHORT_5_5_5_1;case Si.UNSIGNED_SHORT_5_6_5:return Si.UNSIGNED_SHORT_5_6_5}};Si.isPacked=function(e){return e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.sizeInBytes=function(e){switch(e){case Si.UNSIGNED_BYTE:return 1;case Si.UNSIGNED_SHORT:case Si.UNSIGNED_SHORT_4_4_4_4:case Si.UNSIGNED_SHORT_5_5_5_1:case Si.UNSIGNED_SHORT_5_6_5:case Si.HALF_FLOAT:return 2;case Si.UNSIGNED_INT:case Si.FLOAT:case Si.UNSIGNED_INT_24_8:return 4}};Si.validate=function(e){return e===Si.UNSIGNED_BYTE||e===Si.UNSIGNED_SHORT||e===Si.UNSIGNED_INT||e===Si.FLOAT||e===Si.HALF_FLOAT||e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.getTypedArrayConstructor=function(e){let t=Si.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Si.FLOAT?Float32Array:Uint32Array};var He=Object.freeze(Si);var Je={DEPTH_COMPONENT:ee.DEPTH_COMPONENT,DEPTH_STENCIL:ee.DEPTH_STENCIL,ALPHA:ee.ALPHA,RED:ee.RED,RG:ee.RG,RGB:ee.RGB,RGBA:ee.RGBA,RED_INTEGER:ee.RED_INTEGER,RG_INTEGER:ee.RG_INTEGER,RGB_INTEGER:ee.RGB_INTEGER,RGBA_INTEGER:ee.RGBA_INTEGER,LUMINANCE:ee.LUMINANCE,LUMINANCE_ALPHA:ee.LUMINANCE_ALPHA,RGB_DXT1:ee.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ee.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ee.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ee.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ee.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ee.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ee.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ee.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ee.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ee.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ee.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ee.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ee.COMPRESSED_RGBA_BPTC_UNORM};Je.componentsLength=function(e){switch(e){case Je.RGB:case Je.RGB_INTEGER:return 3;case Je.RGBA:case Je.RGBA_INTEGER:return 4;case Je.LUMINANCE_ALPHA:case Je.RG:case Je.RG_INTEGER:return 2;case Je.ALPHA:case Je.RED:case Je.RED_INTEGER:case Je.LUMINANCE:return 1;default:return 1}};Je.validate=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL||e===Je.ALPHA||e===Je.RED||e===Je.RG||e===Je.RGB||e===Je.RGBA||e===Je.RED_INTEGER||e===Je.RG_INTEGER||e===Je.RGB_INTEGER||e===Je.RGBA_INTEGER||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA||e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isColorFormat=function(e){return e===Je.RED||e===Je.ALPHA||e===Je.RGB||e===Je.RGBA||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA};Je.isDepthFormat=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL};Je.isCompressedFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isDXTFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5};Je.isPVRTCFormat=function(e){return e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1};Je.isASTCFormat=function(e){return e===Je.RGBA_ASTC};Je.isETC1Format=function(e){return e===Je.RGB_ETC1};Je.isETC2Format=function(e){return e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC};Je.isBC7Format=function(e){return e===Je.RGBA_BC7};Je.compressedTextureSizeInBytes=function(e,t,n){switch(e){case Je.RGB_DXT1:case Je.RGBA_DXT1:case Je.RGB_ETC1:case Je.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case Je.RGBA_DXT3:case Je.RGBA_DXT5:case Je.RGBA_ASTC:case Je.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case Je.RGB_PVRTC_4BPPV1:case Je.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case Je.RGB_PVRTC_2BPPV1:case Je.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case Je.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};Je.textureSizeInBytes=function(e,t,n,i){let o=Je.componentsLength(e);return He.isPacked(t)&&(o=1),o*He.sizeInBytes(t)*n*i};Je.texture3DSizeInBytes=function(e,t,n,i,o){let r=Je.componentsLength(e);return He.isPacked(t)&&(r=1),r*He.sizeInBytes(t)*n*i*o};Je.alignmentInBytes=function(e,t,n){let i=Je.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};Je.createTypedArray=function(e,t,n,i){let o=He.getTypedArrayConstructor(t),r=Je.componentsLength(e)*n*i;return new o(r)};Je.flipY=function(e,t,n,i,o){if(o===1)return e;let r=Je.createTypedArray(t,n,i,o),s=Je.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};Je.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===Je.DEPTH_STENCIL)return ee.DEPTH24_STENCIL8;if(e===Je.DEPTH_COMPONENT){if(t===He.UNSIGNED_SHORT)return ee.DEPTH_COMPONENT16;if(t===He.UNSIGNED_INT)return ee.DEPTH_COMPONENT24}if(t===He.FLOAT)switch(e){case Je.RGBA:return ee.RGBA32F;case Je.RGB:return ee.RGB32F;case Je.RG:return ee.RG32F;case Je.RED:return ee.R32F}if(t===He.HALF_FLOAT)switch(e){case Je.RGBA:return ee.RGBA16F;case Je.RGB:return ee.RGB16F;case Je.RG:return ee.RG16F;case Je.RED:return ee.R16F}if(t===He.UNSIGNED_BYTE)switch(e){case Je.RGBA:return ee.RGBA8;case Je.RGB:return ee.RGB8;case Je.RG:return ee.RG8;case Je.RED:return ee.R8}if(t===He.INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32I;case Je.RGB_INTEGER:return ee.RGB32I;case Je.RG_INTEGER:return ee.RG32I;case Je.RED_INTEGER:return ee.R32I}if(t===He.UNSIGNED_INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32UI;case Je.RGB_INTEGER:return ee.RGB32UI;case Je.RG_INTEGER:return ee.RG32UI;case Je.RED_INTEGER:return ee.R32UI}return e};var et=Object.freeze(Je);var BM={STREAM_DRAW:ee.STREAM_DRAW,STATIC_DRAW:ee.STATIC_DRAW,DYNAMIC_DRAW:ee.DYNAMIC_DRAW,validate:function(e){return e===BM.STREAM_DRAW||e===BM.STATIC_DRAW||e===BM.DYNAMIC_DRAW}},Qe=Object.freeze(BM);var Br={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(Br,{maximumCombinedTextureImageUnits:{get:function(){return Br._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return Br._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return Br._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return Br._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return Br._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return Br._maximumTextureSize}},maximumVaryingVectors:{get:function(){return Br._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return Br._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return Br._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return Br._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return Br._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return Br._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return Br._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return Br._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return Br._maximumViewportWidth}},maximumViewportHeight:{get:function(){return Br._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return Br._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return Br._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return Br._maximumColorAttachments}},maximumSamples:{get:function(){return Br._maximumSamples}},highpFloatSupported:{get:function(){return Br._highpFloatSupported}},highpIntSupported:{get:function(){return Br._highpIntSupported}}});var qt=Br;function nw(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(nw.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});nw.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,A=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,_=this._preMultiplyAlpha,y=this._flipY,C=4;l(f)&&(C=et.alignmentInBytes(A,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,C),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let E=!1;if(!this._initialized){let I;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,h,h)),I=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),I=i),E=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),I=et.createTypedArray(A,m,h,h)),a.texImage2D(u,0,g,h,h,0,A,He.toWebGLConstant(m,this._context),I),this._initialized=!0}E||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,A,He.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),a.texSubImage2D(u,0,t,n,A,He.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};nw.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._size,r=r??this._size;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};nw.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=e??0,t=t??0,n=n??this._size,i=i??this._size,o=o??0;let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var DM=nw;function n6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function vM(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function kd(e){e=e??V.EMPTY_OBJECT;let n=e.context._gl,i=qt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e.destroyAttachments??!0,this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;n6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;vM(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;n6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;vM(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;vM(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;n6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;vM(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(kd.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});kd.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};kd.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};kd.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};kd.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};kd.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};kd.prototype.getColorTexture=function(e){return this._colorTextures[e]};kd.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};kd.prototype.isDestroyed=function(){return!1};kd.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var as=kd;var PM={DONT_CARE:ee.DONT_CARE,FASTEST:ee.FASTEST,NICEST:ee.NICEST,validate:function(e){return e===PM.DONT_CARE||e===PM.FASTEST||e===PM.NICEST}},Ud=Object.freeze(PM);var RM={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR};RM.validate=function(e){return e===RM.NEAREST||e===RM.LINEAR};var pi=Object.freeze(RM);var Eg={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR,NEAREST_MIPMAP_NEAREST:ee.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:ee.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:ee.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:ee.LINEAR_MIPMAP_LINEAR};Eg.validate=function(e){return e===Eg.NEAREST||e===Eg.LINEAR||e===Eg.NEAREST_MIPMAP_NEAREST||e===Eg.LINEAR_MIPMAP_NEAREST||e===Eg.NEAREST_MIPMAP_LINEAR||e===Eg.LINEAR_MIPMAP_LINEAR};var Zt=Object.freeze(Eg);var MM={CLAMP_TO_EDGE:ee.CLAMP_TO_EDGE,REPEAT:ee.REPEAT,MIRRORED_REPEAT:ee.MIRRORED_REPEAT,validate:function(e){return e===MM.CLAMP_TO_EDGE||e===MM.REPEAT||e===MM.MIRRORED_REPEAT}},Tn=Object.freeze(MM);function iw(e){e=e??V.EMPTY_OBJECT;let{wrapR:t=Tn.CLAMP_TO_EDGE,wrapS:n=Tn.CLAMP_TO_EDGE,wrapT:i=Tn.CLAMP_TO_EDGE,minificationFilter:o=Zt.LINEAR,magnificationFilter:r=pi.LINEAR,maximumAnisotropy:s=1}=e;this._wrapR=t,this._wrapS=n,this._wrapT=i,this._minificationFilter=o,this._magnificationFilter=r,this._maximumAnisotropy=s}Object.defineProperties(iw.prototype,{wrapR:{get:function(){return this._wrapR}},wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});iw.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapR===t._wrapR&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};iw.NEAREST=Object.freeze(new iw({wrapR:Tn.CLAMP_TO_EDGE,wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST}));var on=iw;function Ef(e){e=e??V.EMPTY_OBJECT;let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Xn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}Ef.createVertexBuffer=function(e){return new Ef({context:e.context,bufferTarget:ee.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};Ef.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Fe.getSizeInBytes(n),o=new Ef({context:t,bufferTarget:ee.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(Ef.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Ef.prototype._getBuffer=function(){return this._buffer};Ef.prototype.copyFromArrayView=function(e,t){t=t??0;let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};Ef.prototype.copyFromBuffer=function(e,t,n,i){let o=ee.COPY_READ_BUFFER,r=ee.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};Ef.prototype.getBufferData=function(e,t,n,i){t=t??0,n=n??0;let o=this._gl,r=ee.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};Ef.prototype.isDestroyed=function(){return!1};Ef.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Et=Ef;function cRe(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:t.index??n,enabled:t.enabled??!0,vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:t.componentDatatype??q.FLOAT,normalize:t.normalize??!1,offsetInBytes:t.offsetInBytes??0,strideInBytes:t.strideInBytes??0,instanceDivisor:t.instanceDivisor??0};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function Cte(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function FA(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)cRe(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let A=s[r];if(l(A.vertexBuffer)&&A.instanceDivisor===0){let g=A.strideInBytes||A.componentsPerAttribute*q.getSizeInBytes(A.componentDatatype);a=A.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),Cte(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function yte(e){return e.values.length/e.componentsPerAttribute}function lRe(e){return q.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function uRe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===q.DOUBLE&&(e[n].componentDatatype=q.FLOAT,e[n].values=q.createTypedArray(q.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=yte(e[o[0]]),t=1;t<s;++t){let u=yte(e[o[t]]);if(u!==r)throw new ce(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return q.getSizeInBytes(e[f].componentDatatype)-q.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=lRe(i);if(a>0){let u=q.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,A=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=q.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:q.createTypedArray(e[n].componentDatatype,A),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let _=i.values,y=g[n],C=y.pointer,E=i.componentsPerAttribute;for(let I=0;I<E;++I)C[y.index+I]=_[t*E+I];y.index+=y.strideInComponentType}return{buffer:A,offsetsInBytes:c,vertexSizeInBytes:a}}}FA.fromGeometry=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=e.geometry??V.EMPTY_OBJECT,i=e.bufferUsage??Qe.DYNAMIC_DRAW,o=e.attributeLocations??V.EMPTY_OBJECT,r=e.interleave??!1,s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=uRe(h);if(l(m)){u=Et.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let _=m.offsetsInBytes,y=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:_[a],strideInBytes:y}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===q.DOUBLE&&(m=q.FLOAT);let _={};u=void 0,l(c.values)&&(u=Et.createVertexBuffer({context:t,typedArray:q.createTypedArray(m,c.values),usage:i}),_={index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize}),l(c.typedArray)&&(u=Et.createVertexBuffer({context:t,typedArray:c.typedArray,usage:i}),_={index:o[a],vertexBuffer:u,value:void 0,componentDatatype:m,componentsPerAttribute:Ht.getNumberOfComponents(c.type),normalize:c.normalized,instanceDivisor:c.instanceDivisor}),f.push(_)}let A,g=n.indices;return l(g)&&(ht.computeNumberOfVertices(n)>=D.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?A=Et.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Fe.UNSIGNED_INT}):A=Et.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Fe.UNSIGNED_SHORT})),new FA({context:t,attributes:f,indexBuffer:A})};Object.defineProperties(FA.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});FA.prototype.getAttribute=function(e){return this._attributes[e]};function fRe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=qt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function dRe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}FA.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&fRe(this),this._hasConstantAttributes&&dRe(this,this._gl)):Cte(this._gl,this._attributes,this._indexBuffer)};FA.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};FA.prototype.isDestroyed=function(){return!1};FA.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var li=FA;function ir(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,c=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,A=et.textureSizeInBytes(i,o,h,h)*6,g=et.toInternalFormat(i,o,t),m=t._gl,_=m.TEXTURE_CUBE_MAP,y=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=_,this._texture=y,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=A,this._preMultiplyAlpha=c,this._flipY=r;let C=l(n);function E(I){return new DM(t,y,_,I,g,i,o,h,c,r,C)}this._positiveX=E(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=E(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=E(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=E(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,Ete(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(_,y),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let I of ir.faceNames())i6(this[I],n?.[I],0);m.bindTexture(_,null)}ir.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new as({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,i??0),r._unBind(),r.destroy()};ir.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*hRe(){yield ir.FaceName.POSITIVEX,yield ir.FaceName.NEGATIVEX,yield ir.FaceName.POSITIVEY,yield ir.FaceName.NEGATIVEY,yield ir.FaceName.POSITIVEZ,yield ir.FaceName.NEGATIVEZ}ir.faceNames=function(){return hRe()};function i6(e,t,n){n=n??0;let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),null);return}let{arrayBufferView:A}=t,g=4;l(A)&&(g=et.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(A)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(A=et.flipY(A,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),A)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,He.toWebGLConstant(s,f),t))}ir.loadFace=i6;Object.defineProperties(ir.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){Ete(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});ir.getDirection=function(e,t){switch(e){case ir.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case ir.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case ir.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case ir.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case ir.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case ir.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function Ete(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===He.FLOAT&&!r.textureFloatLinear||s===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}ir.prototype.loadMipmaps=function(e,t){t=t??!1;let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of ir.faceNames())i6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};ir.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};ir.createVertexArray=function(e){let t=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),n=this._attributeLocations=jn.createAttributeLocations(t);return li.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW})};ir.prototype.isDestroyed=function(){return!1};ir.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var jr=ir;function Gd(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=n.videoWidth??n.naturalWidth??n.width),l(u)||(u=n.videoHeight??n.naturalHeight??n.height));let f=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,h=et.toInternalFormat(i,o,t),A=et.isCompressedFormat(h),g=t._gl,m=A?et.compressedTextureSizeInBytes(i,c,u):et.textureSizeInBytes(i,o,c,u);this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new k(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Tte(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?et.isCompressedFormat(h)?mRe(this,n):Ite(this,n):l(n.framebuffer)?pRe(this,n):xte(this,n),this._initialized=!0):bte(this),g.bindTexture(this._textureTarget,null)}function mRe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=NM(c),u=NM(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function Ite(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=et.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:A}=t;if(f&&(A=et.flipY(A,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,He.toWebGLConstant(u,n),A),l(t.mipLevels)){let g=s,m=a;for(let _=0;_<t.mipLevels.length;++_)g=NM(g),m=NM(m),i.texImage2D(o,_+1,r,g,m,0,c,He.toWebGLConstant(u,n),t.mipLevels[_])}}function ARe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=et.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=et.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,He.toWebGLConstant(u,s),t)}function pRe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function xte(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,n),t)}function gRe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,o),t)}function NM(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function bte(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}Gd.create=function(e){return new Gd(e)};Gd.fromFramebuffer=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,{pixelFormat:n=et.RGB,framebufferXOffset:i=0,framebufferYOffset:o=0,width:r=t.drawingBufferWidth,height:s=t.drawingBufferHeight,framebuffer:a}=e;return new Gd({context:t,width:r,height:s,pixelFormat:n,source:{framebuffer:l(a)?a:t.defaultFramebuffer,xOffset:i,yOffset:o,width:r,height:s}})};Object.defineProperties(Gd.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Tte(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Tte(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),r.webgl2&&et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}Gd.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?Ite(this,i):xte(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),bte(this)),this._initialized=!0),f||(l(i.arrayBufferView)?ARe(this,i.arrayBufferView,t,n,c,u):gRe(this,i,t,n)),s.bindTexture(a,null)};Gd.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._width,r=r??this._height;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};Gd.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};Gd.prototype.isDestroyed=function(){return!1};Gd.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Nt=Gd;var LM=`uniform sampler2D image;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5));
|
||
rampColor = czm_gammaCorrect(rampColor);
|
||
material.diffuse = rampColor.rgb;
|
||
material.alpha = rampColor.a;
|
||
return material;
|
||
}
|
||
`;var OM=`uniform sampler2D image;
|
||
uniform float strength;
|
||
uniform vec2 repeat;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
|
||
vec2 centerPixel = fract(repeat * st);
|
||
float centerBump = texture(image, centerPixel).channel;
|
||
|
||
float imageWidth = float(imageDimensions.x);
|
||
vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0)));
|
||
float rightBump = texture(image, rightPixel).channel;
|
||
|
||
float imageHeight = float(imageDimensions.y);
|
||
vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight)));
|
||
float topBump = texture(image, leftPixel).channel;
|
||
|
||
vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0)));
|
||
vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;
|
||
|
||
material.normal = normalEC;
|
||
material.diffuse = vec3(0.01);
|
||
|
||
return material;
|
||
}
|
||
`;var FM=`uniform vec4 lightColor;
|
||
uniform vec4 darkColor;
|
||
uniform vec2 repeat;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
|
||
// From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
|
||
float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0
|
||
|
||
// Find the distance from the closest separator (region between two colors)
|
||
float scaledWidth = fract(repeat.s * st.s);
|
||
scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));
|
||
float scaledHeight = fract(repeat.t * st.t);
|
||
scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));
|
||
float value = min(scaledWidth, scaledHeight);
|
||
|
||
vec4 currentColor = mix(lightColor, darkColor, b);
|
||
vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03);
|
||
|
||
color = czm_gammaCorrect(color);
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
return material;
|
||
}
|
||
`;var QM=`uniform vec4 lightColor;
|
||
uniform vec4 darkColor;
|
||
uniform vec2 repeat;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
// From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights
|
||
float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0
|
||
|
||
vec4 color = mix(lightColor, darkColor, b);
|
||
color = czm_gammaCorrect(color);
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
return material;
|
||
}
|
||
`;var kM=`uniform sampler2D heights;
|
||
uniform sampler2D colors;
|
||
|
||
// This material expects heights to be sorted from lowest to highest.
|
||
|
||
float getHeight(int idx, float invTexSize)
|
||
{
|
||
vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5);
|
||
#ifdef OES_texture_float
|
||
return texture(heights, uv).x;
|
||
#else
|
||
return czm_unpackFloat(texture(heights, uv));
|
||
#endif
|
||
}
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
float height = materialInput.height;
|
||
float invTexSize = 1.0 / float(heightsDimensions.x);
|
||
|
||
float minHeight = getHeight(0, invTexSize);
|
||
float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize);
|
||
|
||
// early-out when outside the height range
|
||
if (height < minHeight || height > maxHeight) {
|
||
material.diffuse = vec3(0.0);
|
||
material.alpha = 0.0;
|
||
return material;
|
||
}
|
||
|
||
// Binary search to find heights above and below.
|
||
int idxBelow = 0;
|
||
int idxAbove = heightsDimensions.x;
|
||
float heightBelow = minHeight;
|
||
float heightAbove = maxHeight;
|
||
|
||
// while loop not allowed, so use for loop with max iterations.
|
||
// maxIterations of 16 supports a texture size up to 65536 (2^16).
|
||
const int maxIterations = 16;
|
||
for (int i = 0; i < maxIterations; i++) {
|
||
if (idxBelow >= idxAbove - 1) {
|
||
break;
|
||
}
|
||
|
||
int idxMid = (idxBelow + idxAbove) / 2;
|
||
float heightTex = getHeight(idxMid, invTexSize);
|
||
|
||
if (height > heightTex) {
|
||
idxBelow = idxMid;
|
||
heightBelow = heightTex;
|
||
} else {
|
||
idxAbove = idxMid;
|
||
heightAbove = heightTex;
|
||
}
|
||
}
|
||
|
||
float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow);
|
||
vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5);
|
||
vec4 color = texture(colors, colorUv);
|
||
|
||
// undo preumultiplied alpha
|
||
if (color.a > 0.0)
|
||
{
|
||
color.rgb /= color.a;
|
||
}
|
||
|
||
color.rgb = czm_gammaCorrect(color.rgb);
|
||
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
return material;
|
||
}
|
||
`;var UM=`uniform vec4 color;
|
||
uniform float spacing;
|
||
uniform float width;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
float distanceToContour = mod(materialInput.height, spacing);
|
||
|
||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||
float dxc = abs(dFdx(materialInput.height));
|
||
float dyc = abs(dFdy(materialInput.height));
|
||
float dF = max(dxc, dyc) * czm_pixelRatio * width;
|
||
float alpha = (distanceToContour < dF) ? 1.0 : 0.0;
|
||
#else
|
||
// If no derivatives available (IE 10?), use pixel ratio
|
||
float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0;
|
||
#endif
|
||
|
||
vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a));
|
||
material.diffuse = outColor.rgb;
|
||
material.alpha = outColor.a;
|
||
|
||
return material;
|
||
}
|
||
`;var GM=`uniform sampler2D image;
|
||
uniform float minimumHeight;
|
||
uniform float maximumHeight;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0);
|
||
vec4 rampColor = texture(image, vec2(scaledHeight, 0.5));
|
||
rampColor = czm_gammaCorrect(rampColor);
|
||
material.diffuse = rampColor.rgb;
|
||
material.alpha = rampColor.a;
|
||
return material;
|
||
}
|
||
`;var zM=`uniform vec4 fadeInColor;
|
||
uniform vec4 fadeOutColor;
|
||
uniform float maximumDistance;
|
||
uniform bool repeat;
|
||
uniform vec2 fadeDirection;
|
||
uniform vec2 time;
|
||
|
||
float getTime(float t, float coord)
|
||
{
|
||
float scalar = 1.0 / maximumDistance;
|
||
float q = distance(t, coord) * scalar;
|
||
if (repeat)
|
||
{
|
||
float r = distance(t, coord + 1.0) * scalar;
|
||
float s = distance(t, coord - 1.0) * scalar;
|
||
q = min(min(r, s), q);
|
||
}
|
||
return clamp(q, 0.0, 1.0);
|
||
}
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
float s = getTime(time.x, st.s) * fadeDirection.s;
|
||
float t = getTime(time.y, st.t) * fadeDirection.t;
|
||
|
||
float u = length(vec2(s, t));
|
||
vec4 color = mix(fadeInColor, fadeOutColor, u);
|
||
|
||
color = czm_gammaCorrect(color);
|
||
material.emission = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
return material;
|
||
}
|
||
`;var VM=`uniform vec4 color;
|
||
uniform float cellAlpha;
|
||
uniform vec2 lineCount;
|
||
uniform vec2 lineThickness;
|
||
uniform vec2 lineOffset;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
|
||
float scaledWidth = fract(lineCount.s * st.s - lineOffset.s);
|
||
scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5));
|
||
float scaledHeight = fract(lineCount.t * st.t - lineOffset.t);
|
||
scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5));
|
||
|
||
float value;
|
||
|
||
// Fuzz Factor - Controls blurriness of lines
|
||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||
const float fuzz = 1.2;
|
||
vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0;
|
||
|
||
// From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13.
|
||
vec2 dx = abs(dFdx(st));
|
||
vec2 dy = abs(dFdy(st));
|
||
vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount;
|
||
value = min(
|
||
smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth),
|
||
smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight));
|
||
#else
|
||
// If no derivatives available (IE 10?), revert to view-dependent fuzz
|
||
const float fuzz = 0.05;
|
||
|
||
vec2 range = 0.5 - (lineThickness * 0.05);
|
||
value = min(
|
||
1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth),
|
||
1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight));
|
||
#endif
|
||
|
||
// Edges taken from RimLightingMaterial.glsl
|
||
// See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html
|
||
float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)));
|
||
float sRim = smoothstep(0.8, 1.0, dRim);
|
||
value *= (1.0 - sRim);
|
||
|
||
vec4 halfColor;
|
||
halfColor.rgb = color.rgb * 0.5;
|
||
halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value));
|
||
halfColor = czm_gammaCorrect(halfColor);
|
||
material.diffuse = halfColor.rgb;
|
||
material.emission = halfColor.rgb;
|
||
material.alpha = halfColor.a;
|
||
|
||
return material;
|
||
}
|
||
`;var HM=`uniform sampler2D image;
|
||
uniform float strength;
|
||
uniform vec2 repeat;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec4 textureValue = texture(image, fract(repeat * materialInput.st));
|
||
vec3 normalTangentSpace = textureValue.channels;
|
||
normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0;
|
||
normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0);
|
||
normalTangentSpace = normalize(normalTangentSpace);
|
||
vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace;
|
||
|
||
material.normal = normalEC;
|
||
|
||
return material;
|
||
}
|
||
`;var WM=`uniform vec4 color;
|
||
|
||
float getPointOnLine(vec2 p0, vec2 p1, float x)
|
||
{
|
||
float slope = (p0.y - p1.y) / (p0.x - p1.x);
|
||
return slope * (x - p0.x) + p0.y;
|
||
}
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
|
||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||
float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio;
|
||
#else
|
||
// If no derivatives available (IE 10?), 2.5% of the line will be the arrow head
|
||
float base = 0.975;
|
||
#endif
|
||
|
||
vec2 center = vec2(1.0, 0.5);
|
||
float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s);
|
||
float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s);
|
||
|
||
float halfWidth = 0.15;
|
||
float s = step(0.5 - halfWidth, st.t);
|
||
s *= 1.0 - step(0.5 + halfWidth, st.t);
|
||
s *= 1.0 - step(base, st.s);
|
||
|
||
float t = step(base, materialInput.st.s);
|
||
t *= 1.0 - step(ptOnUpperLine, st.t);
|
||
t *= step(ptOnLowerLine, st.t);
|
||
|
||
// Find the distance from the closest separator (region between two colors)
|
||
float dist;
|
||
if (st.s < base)
|
||
{
|
||
float d1 = abs(st.t - (0.5 - halfWidth));
|
||
float d2 = abs(st.t - (0.5 + halfWidth));
|
||
dist = min(d1, d2);
|
||
}
|
||
else
|
||
{
|
||
float d1 = czm_infinity;
|
||
if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth)
|
||
{
|
||
d1 = abs(st.s - base);
|
||
}
|
||
float d2 = abs(st.t - ptOnUpperLine);
|
||
float d3 = abs(st.t - ptOnLowerLine);
|
||
dist = min(min(d1, d2), d3);
|
||
}
|
||
|
||
vec4 outsideColor = vec4(0.0);
|
||
vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0));
|
||
vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist);
|
||
|
||
outColor = czm_gammaCorrect(outColor);
|
||
material.diffuse = outColor.rgb;
|
||
material.alpha = outColor.a;
|
||
return material;
|
||
}
|
||
`;var jM=`uniform vec4 color;
|
||
uniform vec4 gapColor;
|
||
uniform float dashLength;
|
||
uniform float dashPattern;
|
||
in float v_polylineAngle;
|
||
|
||
const float maskLength = 16.0;
|
||
|
||
mat2 rotate(float rad) {
|
||
float c = cos(rad);
|
||
float s = sin(rad);
|
||
return mat2(
|
||
c, s,
|
||
-s, c
|
||
);
|
||
}
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy;
|
||
|
||
// Get the relative position within the dash from 0 to 1
|
||
float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio));
|
||
// Figure out the mask index.
|
||
float maskIndex = floor(dashPosition * maskLength);
|
||
// Test the bit mask.
|
||
float maskTest = floor(dashPattern / pow(2.0, maskIndex));
|
||
vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color;
|
||
if (fragColor.a < 0.005) { // matches 0/255 and 1/255
|
||
discard;
|
||
}
|
||
|
||
fragColor = czm_gammaCorrect(fragColor);
|
||
material.emission = fragColor.rgb;
|
||
material.alpha = fragColor.a;
|
||
return material;
|
||
}
|
||
`;var YM=`uniform vec4 color;
|
||
uniform float glowPower;
|
||
uniform float taperPower;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5);
|
||
|
||
if (taperPower <= 0.99999) {
|
||
glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5));
|
||
}
|
||
|
||
vec4 fragColor;
|
||
fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb);
|
||
fragColor.a = clamp(0.0, 1.0, glow) * color.a;
|
||
fragColor = czm_gammaCorrect(fragColor);
|
||
|
||
material.emission = fragColor.rgb;
|
||
material.alpha = fragColor.a;
|
||
|
||
return material;
|
||
}
|
||
`;var qM=`uniform vec4 color;
|
||
uniform vec4 outlineColor;
|
||
uniform float outlineWidth;
|
||
|
||
in float v_width;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec2 st = materialInput.st;
|
||
float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width;
|
||
float b = step(0.5 - halfInteriorWidth, st.t);
|
||
b *= 1.0 - step(0.5 + halfInteriorWidth, st.t);
|
||
|
||
// Find the distance from the closest separator (region between two colors)
|
||
float d1 = abs(st.t - (0.5 - halfInteriorWidth));
|
||
float d2 = abs(st.t - (0.5 + halfInteriorWidth));
|
||
float dist = min(d1, d2);
|
||
|
||
vec4 currentColor = mix(outlineColor, color, b);
|
||
vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist);
|
||
outColor = czm_gammaCorrect(outColor);
|
||
|
||
material.diffuse = outColor.rgb;
|
||
material.alpha = outColor.a;
|
||
|
||
return material;
|
||
}
|
||
`;var KM=`uniform vec4 color;
|
||
uniform vec4 rimColor;
|
||
uniform float width;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
// See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html
|
||
float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC));
|
||
float s = smoothstep(1.0 - width, 1.0, d);
|
||
|
||
vec4 outColor = czm_gammaCorrect(color);
|
||
vec4 outRimColor = czm_gammaCorrect(rimColor);
|
||
|
||
material.diffuse = outColor.rgb;
|
||
material.emission = outRimColor.rgb * s;
|
||
material.alpha = mix(outColor.a, outRimColor.a, s);
|
||
|
||
return material;
|
||
}
|
||
`;var XM=`uniform sampler2D image;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5));
|
||
rampColor = czm_gammaCorrect(rampColor);
|
||
material.diffuse = rampColor.rgb;
|
||
material.alpha = rampColor.a;
|
||
return material;
|
||
}
|
||
`;var JM=`uniform vec4 evenColor;
|
||
uniform vec4 oddColor;
|
||
uniform float offset;
|
||
uniform float repeat;
|
||
uniform bool horizontal;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
// Based on the Stripes Fragment Shader in the Orange Book (11.1.2)
|
||
float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal));
|
||
float value = fract((coord - offset) * (repeat * 0.5));
|
||
float dist = min(value, min(abs(value - 0.5), 1.0 - value));
|
||
|
||
vec4 currentColor = mix(evenColor, oddColor, step(0.5, value));
|
||
vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist);
|
||
color = czm_gammaCorrect(color);
|
||
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
return material;
|
||
}
|
||
`;var ZM=`uniform vec4 waterColor;
|
||
uniform vec4 landColor;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
vec4 outColor = mix(landColor, waterColor, materialInput.waterMask);
|
||
outColor = czm_gammaCorrect(outColor);
|
||
|
||
material.diffuse = outColor.rgb;
|
||
material.alpha = outColor.a;
|
||
|
||
return material;
|
||
}
|
||
`;var $M=`// Thanks for the contribution Jonas
|
||
// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog
|
||
|
||
uniform sampler2D specularMap;
|
||
uniform sampler2D normalMap;
|
||
uniform vec4 baseWaterColor;
|
||
uniform vec4 blendColor;
|
||
uniform float frequency;
|
||
uniform float animationSpeed;
|
||
uniform float amplitude;
|
||
uniform float specularIntensity;
|
||
uniform float fadeFactor;
|
||
|
||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
|
||
float time = czm_frameNumber * animationSpeed;
|
||
|
||
// fade is a function of the distance from the fragment and the frequency of the waves
|
||
float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor);
|
||
|
||
float specularMapValue = texture(specularMap, materialInput.st).r;
|
||
|
||
// note: not using directional motion at this time, just set the angle to 0.0;
|
||
vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0);
|
||
vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude));
|
||
|
||
// fade out the normal perturbation as we move further from the water surface
|
||
normalTangentSpace.xy /= fade;
|
||
|
||
// attempt to fade out the normal perturbation as we approach non water areas (low specular map value)
|
||
normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue);
|
||
|
||
normalTangentSpace = normalize(normalTangentSpace);
|
||
|
||
// get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane
|
||
float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0);
|
||
|
||
// fade out water effect as specular map value decreases
|
||
material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue;
|
||
|
||
// base color is a blend of the water and non-water color based on the value from the specular map
|
||
// may need a uniform blend factor to better control this
|
||
material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue);
|
||
|
||
// diffuse highlights are based on how perturbed the normal is
|
||
material.diffuse += (0.1 * tsPerturbationRatio);
|
||
|
||
material.diffuse = material.diffuse;
|
||
|
||
material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace);
|
||
|
||
material.specular = specularIntensity;
|
||
material.shininess = 10.0;
|
||
|
||
return material;
|
||
}
|
||
`;function Ye(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??Zt.LINEAR,this._magnificationFilter=e.magnificationFilter??pi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,_Re(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Ye._uniformList[this.type])||(Ye._uniformList[this.type]=Object.keys(this._uniforms))}Ye._uniformList={};Ye.fromType=function(e,t){let n=new Ye({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Ye.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};Ye.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(_){return _.bufferView}),u=u[0]);let h=new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),A;l(u.internalFormat)?A=new Nt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):A=new Nt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=A;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let _=this.uniforms[m];_.x=A._width,_.y=A._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new jr({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};Ye.prototype.isDestroyed=function(){return!1};Ye.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function _Re(e,t){e=e??V.EMPTY_OBJECT,t._strict=e.strict??!1,t._count=e.count??0,t._template=ze(e.fabric??V.EMPTY_OBJECT),t._template.uniforms=ze(t._template.uniforms??V.EMPTY_OBJECT),t._template.materials=ze(t._template.materials??V.EMPTY_OBJECT),t.type=l(t._template.type)?t._template.type:Xn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=Ye._materialCache.getMaterial(t.type);if(l(i)){let r=ze(i.fabric,!0);t._template=wt(t._template,r,!0),n=i.translucent}IRe(t),l(i)||Ye._materialCache.addMaterial(t.type,t),bRe(t),BRe(t),vRe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=n??o,n=e.translucent??n,l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function o6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function Ste(e,t){}function yRe(e,t){}var CRe=["type","materials","uniforms","components","source"],ERe=["diffuse","specular","shininess","normal","emission","alpha"];function IRe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;o6(t,CRe,Ste,!0),o6(o,ERe,Ste,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);o6(n,r,yRe,!1)}function xRe(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function bRe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n}
|
||
`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput)
|
||
{
|
||
`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput);
|
||
`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&xRe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s};
|
||
`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha};
|
||
`:e.shaderSource+=`material.${o} = ${t[o]};
|
||
`}e.shaderSource+=`return material;
|
||
}
|
||
`}}var wte={mat2:Wi,mat3:J,mat4:R},TRe=/\.ktx2$/i;function SRe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Ye.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let A=new on({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Nt({context:i,source:r,sampler:A}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Nt&&r!==c){n._texturePaths[e]=void 0;let A=n._textures[e];l(A)&&A!==n._defaultTexture&&A.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof we;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let A=h?r:we.createIfNeeded(r),g;TRe.test(A.url)?g=Iu(A.url):g=A.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function wRe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof jr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Ye.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[we.createIfNeeded(i.positiveX).fetchImage(),we.createIfNeeded(i.negativeX).fetchImage(),we.createIfNeeded(i.positiveY).fetchImage(),we.createIfNeeded(i.negativeY).fetchImage(),we.createIfNeeded(i.positiveZ).fetchImage(),we.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function BRe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&Bte(e,n)}function Bte(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=DRe(o),s;if(r==="channels")s=ow(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;PRe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},Bte(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=ow(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(SRe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(wRe(t));else if(r.indexOf("mat")!==-1){let u=new wte[r];e._uniforms[c]=function(){return wte[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function DRe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Ye.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function vRe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ye({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=wt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;ow(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=ow(e,i,a)}}function ow(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function PRe(e,t,n){return ow(e,t,t,n)}Ye._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Ye.DefaultImageId="czm_defaultImage";Ye.DefaultCubeMapId="czm_defaultCubeMap";Ye.ColorType="Color";Ye._materialCache.addMaterial(Ye.ColorType,{fabric:{type:Ye.ColorType,uniforms:{color:new G(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.ImageType="Image";Ye._materialCache.addMaterial(Ye.ImageType,{fabric:{type:Ye.ImageType,uniforms:{image:Ye.DefaultImageId,repeat:new k(1,1),color:new G(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.DiffuseMapType="DiffuseMap";Ye._materialCache.addMaterial(Ye.DiffuseMapType,{fabric:{type:Ye.DiffuseMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.AlphaMapType="AlphaMap";Ye._materialCache.addMaterial(Ye.AlphaMapType,{fabric:{type:Ye.AlphaMapType,uniforms:{image:Ye.DefaultImageId,channel:"a",repeat:new k(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ye.SpecularMapType="SpecularMap";Ye._materialCache.addMaterial(Ye.SpecularMapType,{fabric:{type:Ye.SpecularMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",repeat:new k(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ye.EmissionMapType="EmissionMap";Ye._materialCache.addMaterial(Ye.EmissionMapType,{fabric:{type:Ye.EmissionMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.BumpMapType="BumpMap";Ye._materialCache.addMaterial(Ye.BumpMapType,{fabric:{type:Ye.BumpMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",strength:.8,repeat:new k(1,1)},source:OM},translucent:!1});Ye.NormalMapType="NormalMap";Ye._materialCache.addMaterial(Ye.NormalMapType,{fabric:{type:Ye.NormalMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",strength:.8,repeat:new k(1,1)},source:HM},translucent:!1});Ye.GridType="Grid";Ye._materialCache.addMaterial(Ye.GridType,{fabric:{type:Ye.GridType,uniforms:{color:new G(0,1,0,1),cellAlpha:.1,lineCount:new k(8,8),lineThickness:new k(1,1),lineOffset:new k(0,0)},source:VM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Ye.StripeType="Stripe";Ye._materialCache.addMaterial(Ye.StripeType,{fabric:{type:Ye.StripeType,uniforms:{horizontal:!0,evenColor:new G(1,1,1,.5),oddColor:new G(0,0,1,.5),offset:0,repeat:5},source:JM},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Ye.CheckerboardType="Checkerboard";Ye._materialCache.addMaterial(Ye.CheckerboardType,{fabric:{type:Ye.CheckerboardType,uniforms:{lightColor:new G(1,1,1,.5),darkColor:new G(0,0,0,.5),repeat:new k(5,5)},source:FM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.DotType="Dot";Ye._materialCache.addMaterial(Ye.DotType,{fabric:{type:Ye.DotType,uniforms:{lightColor:new G(1,1,0,.75),darkColor:new G(0,1,1,.75),repeat:new k(5,5)},source:QM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.WaterType="Water";Ye._materialCache.addMaterial(Ye.WaterType,{fabric:{type:Ye.WaterType,uniforms:{baseWaterColor:new G(.2,.3,.6,1),blendColor:new G(0,1,.699,1),specularMap:Ye.DefaultImageId,normalMap:Ye.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:$M},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Ye.RimLightingType="RimLighting";Ye._materialCache.addMaterial(Ye.RimLightingType,{fabric:{type:Ye.RimLightingType,uniforms:{color:new G(1,0,0,.7),rimColor:new G(1,1,1,.4),width:.3},source:KM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Ye.FadeType="Fade";Ye._materialCache.addMaterial(Ye.FadeType,{fabric:{type:Ye.FadeType,uniforms:{fadeInColor:new G(1,0,0,1),fadeOutColor:new G(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new k(.5,.5)},source:zM},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Ye.PolylineArrowType="PolylineArrow";Ye._materialCache.addMaterial(Ye.PolylineArrowType,{fabric:{type:Ye.PolylineArrowType,uniforms:{color:new G(1,1,1,1)},source:WM},translucent:!0});Ye.PolylineDashType="PolylineDash";Ye._materialCache.addMaterial(Ye.PolylineDashType,{fabric:{type:Ye.PolylineDashType,uniforms:{color:new G(1,0,1,1),gapColor:new G(0,0,0,0),dashLength:16,dashPattern:255},source:jM},translucent:!0});Ye.PolylineGlowType="PolylineGlow";Ye._materialCache.addMaterial(Ye.PolylineGlowType,{fabric:{type:Ye.PolylineGlowType,uniforms:{color:new G(0,.5,1,1),glowPower:.25,taperPower:1},source:YM},translucent:!0});Ye.PolylineOutlineType="PolylineOutline";Ye._materialCache.addMaterial(Ye.PolylineOutlineType,{fabric:{type:Ye.PolylineOutlineType,uniforms:{color:new G(1,1,1,1),outlineColor:new G(1,0,0,1),outlineWidth:1},source:qM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Ye.ElevationContourType="ElevationContour";Ye._materialCache.addMaterial(Ye.ElevationContourType,{fabric:{type:Ye.ElevationContourType,uniforms:{spacing:100,color:new G(1,0,0,1),width:1},source:UM},translucent:!1});Ye.ElevationRampType="ElevationRamp";Ye._materialCache.addMaterial(Ye.ElevationRampType,{fabric:{type:Ye.ElevationRampType,uniforms:{image:Ye.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:GM},translucent:!1});Ye.SlopeRampMaterialType="SlopeRamp";Ye._materialCache.addMaterial(Ye.SlopeRampMaterialType,{fabric:{type:Ye.SlopeRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:XM},translucent:!1});Ye.AspectRampMaterialType="AspectRamp";Ye._materialCache.addMaterial(Ye.AspectRampMaterialType,{fabric:{type:Ye.AspectRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:LM},translucent:!1});Ye.ElevationBandType="ElevationBand";Ye._materialCache.addMaterial(Ye.ElevationBandType,{fabric:{type:Ye.ElevationBandType,uniforms:{heights:Ye.DefaultImageId,colors:Ye.DefaultImageId},source:kM},translucent:!0});Ye.WaterMaskType="WaterMask";Ye._materialCache.addMaterial(Ye.WaterMaskType,{fabric:{type:Ye.WaterMaskType,source:ZM,uniforms:{waterColor:new G(1,1,1,1),landColor:new G(0,0,0,0)}},translucent:!1});var ao=Ye;function yC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??yC.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(yC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});yC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;yC.prototype.isTranslucent=go.prototype.isTranslucent;yC.prototype.getRenderState=go.prototype.getRenderState;yC.MaterialSupport={BASIC:Object.freeze({vertexFormat:Pe.POSITION_AND_NORMAL,vertexShaderSource:fM,fragmentShaderSource:uM}),TEXTURED:Object.freeze({vertexFormat:Pe.POSITION_NORMAL_AND_ST,vertexShaderSource:hM,fragmentShaderSource:dM}),ALL:Object.freeze({vertexFormat:Pe.ALL,vertexShaderSource:lM,fragmentShaderSource:cM})};var Io=yC;var e1=`in vec3 v_positionEC;
|
||
in vec3 v_normalEC;
|
||
in vec4 v_color;
|
||
|
||
void main()
|
||
{
|
||
vec3 positionToEyeEC = -v_positionEC;
|
||
|
||
vec3 normalEC = normalize(v_normalEC);
|
||
#ifdef FACE_FORWARD
|
||
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
|
||
#endif
|
||
|
||
vec4 color = czm_gammaCorrect(v_color);
|
||
|
||
czm_materialInput materialInput;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
}
|
||
`;var t1=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 normal;
|
||
in vec4 color;
|
||
in float batchId;
|
||
|
||
out vec3 v_positionEC;
|
||
out vec3 v_normalEC;
|
||
out vec4 v_color;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
|
||
v_normalEC = czm_normal * normal; // normal in eye coordinates
|
||
v_color = color;
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;var pI=`in vec4 v_color;
|
||
|
||
void main()
|
||
{
|
||
out_FragColor = czm_gammaCorrect(v_color);
|
||
}
|
||
`;var n1=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec4 color;
|
||
in float batchId;
|
||
|
||
out vec4 v_color;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_color = color;
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;function QA(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?n1:t1,r=i?pI:e1,s=i?QA.FLAT_VERTEX_FORMAT:QA.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(QA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});QA.VERTEX_FORMAT=Pe.POSITION_AND_NORMAL;QA.FLAT_VERTEX_FORMAT=Pe.POSITION_ONLY;QA.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;QA.prototype.isTranslucent=go.prototype.isTranslucent;QA.prototype.getRenderState=go.prototype.getRenderState;var gn=QA;function gI(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(gI.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});gI.prototype.getType=function(e){return"Color"};var RRe=new K;gI.prototype.getValue=function(e,t){return l(e)||(e=K.now(RRe)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};gI.prototype.equals=function(e){return this===e||e instanceof gI&&j.equals(this._color,e._color)};var Jt=gI;function Ig(e){e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._rectangle=e.rectangle??ae.MAX_VALUE,this._projection=new Hi(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(Ig.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});Ig.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};Ig.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};Ig.prototype.rectangleToNativeRectangle=function(e,t){let n=D.toDegrees(e.west),i=D.toDegrees(e.south),o=D.toDegrees(e.east),r=D.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};Ig.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=D.toDegrees(o.west),o.south=D.toDegrees(o.south),o.east=D.toDegrees(o.east),o.north=D.toDegrees(o.north),o};Ig.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,A=o.north-(t+1)*f;return l(i)||(i=new ae(c,A,u,h)),i.west=c,i.south=A,i.east=u,i.north=h,i};Ig.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=D.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new k(u,f)};var co=Ig;var Dte=new d,vte=new d,Pte=new Ae,r6=new d,MRe=new d,Rte=new le,NRe=new co,rw=[new Ae,new Ae,new Ae,new Ae],sw=new k,cs={};cs.initialize=function(){let e=cs._initPromise;return l(e)||(e=we.fetchJson(fn("Assets/approximateTerrainHeights.json")).then(function(t){cs._terrainHeights=t}),cs._initPromise=e),e};cs.getMinimumMaximumHeights=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMinTerrainHeight,o=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,Pte),Dte),t.cartographicToCartesian(ae.southwest(e,Pte),vte),d.midpoint(vte,Dte,r6);let a=t.scaleToGeodeticSurface(r6,MRe);if(l(a)){let c=d.distance(r6,a);i=Math.min(i,-c)}else i=cs._defaultMinTerrainHeight}return i=Math.max(cs._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};cs.getBoundingSphere=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[1])}let o=le.fromRectangle3D(e,t,0);return le.fromRectangle3D(e,t,i,Rte),le.union(o,Rte,o)};function Mte(e){Ae.fromRadians(e.east,e.north,0,rw[0]),Ae.fromRadians(e.west,e.north,0,rw[1]),Ae.fromRadians(e.east,e.south,0,rw[2]),Ae.fromRadians(e.west,e.south,0,rw[3]);let t=0,n=0,i=0,o=0,r=cs._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=rw[c];if(NRe.positionToTileXY(u,s,sw),c===0)i=sw.x,o=sw.y;else if(i!==sw.x||o!==sw.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}cs._terrainHeightsMaxLevel=6;cs._defaultMaxTerrainHeight=9e3;cs._defaultMinTerrainHeight=-1e5;cs._terrainHeights=void 0;cs._initPromise=void 0;Object.defineProperties(cs,{initialized:{get:function(){return l(cs._terrainHeights)}}});var wi=cs;function Xc(e,t,n){this.minimum=d.clone(e??d.ZERO),this.maximum=d.clone(t??d.ZERO),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}Xc.fromCorners=function(e,t,n){return l(n)||(n=new Xc),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};Xc.fromPoints=function(e,t){if(l(t)||(t=new Xc),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let A=e[h],g=A.x,m=A.y,_=A.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(_,o),a=Math.max(_,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};Xc.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new Xc(e.minimum,e.maximum,e.center)};Xc.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var i1=new d;Xc.intersectPlane=function(e,t){i1=d.subtract(e.maximum,e.minimum,i1);let n=d.multiplyByScalar(i1,.5,i1),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?nn.INSIDE:r+o<0?nn.OUTSIDE:nn.INTERSECTING};Xc.prototype.clone=function(e){return Xc.clone(this,e)};Xc.prototype.intersectPlane=function(e){return Xc.intersectPlane(this,e)};Xc.prototype.equals=function(e){return Xc.equals(this,e)};var CC=Xc;var s6=new se;function nm(e,t){t=t??te.default,e=t.scaleToGeodeticSurface(e);let n=kt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(R.getColumn(n,0,s6)),this._yAxis=d.fromCartesian4(R.getColumn(n,1,s6));let i=d.fromCartesian4(R.getColumn(n,2,s6));this._plane=mn.fromPointNormal(e,i)}Object.defineProperties(nm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var LRe=new CC;nm.fromPoints=function(e,t){let n=CC.fromPoints(e,LRe);return new nm(n.center,t)};var Nte=new In,o1=new d;nm.prototype.projectPointOntoPlane=function(e,t){let n=Nte;n.origin=e,d.normalize(e,n.direction);let i=Ai.rayPlane(n,this._plane,o1);if(l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new k(r,s)}};nm.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};nm.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new k);let n=Nte;n.origin=e,d.clone(this._plane.normal,n.direction);let i=Ai.rayPlane(n,this._plane,o1);l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};nm.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var ORe=new d;nm.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=ORe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};nm.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var xs=nm;function ji(e,t){this.center=d.clone(e??d.ZERO),this.halfAxes=J.clone(t??J.ZERO)}ji.packedLength=d.packedLength+J.packedLength;ji.pack=function(e,t,n){return n=n??0,d.pack(e.center,t,n),J.pack(e.halfAxes,t,n+d.packedLength),t};ji.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ji),d.unpack(e,t,n.center),J.unpack(e,t+d.packedLength,n.halfAxes),n};var FRe=new d,QRe=new d,kRe=new d,URe=new d,GRe=new d,zRe=new d,VRe=new J,HRe={unitary:new J,diagonal:new J};ji.fromPoints=function(e,t){if(l(t)||(t=new ji),!l(e)||e.length===0)return t.halfAxes=J.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],FRe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,A;for(n=0;n<i;n++)A=d.subtract(e[n],o,QRe),s+=A.x*A.x,a+=A.x*A.y,c+=A.x*A.z,u+=A.y*A.y,f+=A.y*A.z,h+=A.z*A.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=VRe;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=J.computeEigenDecomposition(g,HRe),_=J.clone(m.unitary,t.halfAxes),y=J.getColumn(_,0,URe),C=J.getColumn(_,1,GRe),E=J.getColumn(_,2,zRe),I=-Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE,B=Number.MAX_VALUE,v=Number.MAX_VALUE,P=Number.MAX_VALUE;for(n=0;n<i;n++)A=e[n],I=Math.max(d.dot(y,A),I),b=Math.max(d.dot(C,A),b),S=Math.max(d.dot(E,A),S),B=Math.min(d.dot(y,A),B),v=Math.min(d.dot(C,A),v),P=Math.min(d.dot(E,A),P);y=d.multiplyByScalar(y,.5*(B+I),y),C=d.multiplyByScalar(C,.5*(v+b),C),E=d.multiplyByScalar(E,.5*(P+S),E);let N=d.add(y,C,t.center);d.add(N,E,N);let L=kRe;return L.x=I-B,L.y=b-v,L.z=S-P,d.multiplyByScalar(L,.5,L),J.multiplyByScale(t.halfAxes,L,t.halfAxes),t};var Ute=new d,WRe=new d;function Lte(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new ji);let h=f.halfAxes;J.setColumn(h,0,t,h),J.setColumn(h,1,n,h),J.setColumn(h,2,i,h);let A=Ute;A.x=(o+r)/2,A.y=(s+a)/2,A.z=(c+u)/2;let g=WRe;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return A=J.multiplyByVector(h,A,A),d.add(e,A,m),J.multiplyByScale(h,g,h),f}var Ote=new Ae,jRe=new d,YRe=new Ae,qRe=new Ae,KRe=new Ae,XRe=new Ae,JRe=new Ae,ZRe=new d,Fte=new d,$Re=new d,Qte=new d,eMe=new d,tMe=new k,nMe=new k,iMe=new k,oMe=new k,rMe=new k,sMe=new d,aMe=new d,cMe=new d,lMe=new d,uMe=new k,fMe=new d,dMe=new d,hMe=new d,mMe=new mn(d.UNIT_X,0);ji.fromRectangle=function(e,t,n,i,o){t=t??0,n=n??0,i=i??te.default;let r,s,a,c,u,f,h;if(e.width<=D.PI){let v=ae.center(e,Ote),P=i.cartographicToCartesian(v,jRe),N=new xs(P,i);h=N.plane;let L=v.longitude,p=e.south<0&&e.north>0?0:v.latitude,x=Ae.fromRadians(L,e.north,n,YRe),T=Ae.fromRadians(e.west,e.north,n,qRe),w=Ae.fromRadians(e.west,p,n,KRe),M=Ae.fromRadians(e.west,e.south,n,XRe),O=Ae.fromRadians(L,e.south,n,JRe),U=i.cartographicToCartesian(x,ZRe),Q=i.cartographicToCartesian(T,Fte),z=i.cartographicToCartesian(w,$Re),F=i.cartographicToCartesian(M,Qte),H=i.cartographicToCartesian(O,eMe),W=N.projectPointToNearestOnPlane(U,tMe),Z=N.projectPointToNearestOnPlane(Q,nMe),Y=N.projectPointToNearestOnPlane(z,iMe),$=N.projectPointToNearestOnPlane(F,oMe),X=N.projectPointToNearestOnPlane(H,rMe);return r=Math.min(Z.x,Y.x,$.x),s=-r,c=Math.max(Z.y,W.y),a=Math.min($.y,X.y),T.height=M.height=t,Q=i.cartographicToCartesian(T,Fte),F=i.cartographicToCartesian(M,Qte),u=Math.min(mn.getPointDistance(h,Q),mn.getPointDistance(h,F)),f=n,Lte(N.origin,N.xAxis,N.yAxis,N.zAxis,r,s,a,c,u,f,o)}let A=e.south>0,g=e.north<0,m=A?e.south:g?e.north:0,_=ae.center(e,Ote).longitude,y=d.fromRadians(_,m,n,i,sMe);y.z=0;let E=Math.abs(y.x)<D.EPSILON10&&Math.abs(y.y)<D.EPSILON10?d.UNIT_X:d.normalize(y,aMe),I=d.UNIT_Z,b=d.cross(E,I,cMe);h=mn.fromPointNormal(y,E,mMe);let S=d.fromRadians(_+D.PI_OVER_TWO,m,n,i,lMe);s=d.dot(mn.projectPointOntoPlane(h,S,uMe),b),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,fMe).z,a=d.fromRadians(0,e.south,A?t:n,i,dMe).z;let B=d.fromRadians(e.east,m,n,i,hMe);return u=mn.getPointDistance(h,B),f=0,Lte(y,b,I,E,r,s,a,c,u,f,o)};ji.fromTransformation=function(e,t){return l(t)||(t=new ji),t.center=R.getTranslation(e,t.center),t.halfAxes=R.getMatrix3(e,t.halfAxes),t.halfAxes=J.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};ji.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),J.clone(e.halfAxes,t.halfAxes),t):new ji(e.center,e.halfAxes)};ji.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[J.COLUMN0ROW0]+s*o[J.COLUMN0ROW1]+a*o[J.COLUMN0ROW2])+Math.abs(r*o[J.COLUMN1ROW0]+s*o[J.COLUMN1ROW1]+a*o[J.COLUMN1ROW2])+Math.abs(r*o[J.COLUMN2ROW0]+s*o[J.COLUMN2ROW1]+a*o[J.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?nn.OUTSIDE:u>=c?nn.INSIDE:nn.INTERSECTING};var Gte=new d,zte=new d,Vte=new d,AMe=new d,kte=new d,pMe=new d;ji.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,Ute),i=e.halfAxes,o=J.getColumn(i,0,Gte),r=J.getColumn(i,1,zte),s=J.getColumn(i,2,Vte),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,A=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):A=!1;let g=!f+!h+!A,m,_,y;if(g===1){let b=o;m=r,_=s,h?A||(b=s,_=o):(b=r,m=o),y=d.cross(m,_,kte),b===o?o=y:b===r?r=y:b===s&&(s=y)}else if(g===2){m=o,h?m=r:A&&(m=s);let b=d.UNIT_Y;b.equalsEpsilon(m,D.EPSILON3)&&(b=d.UNIT_X),_=d.cross(m,b,AMe),d.normalize(_,_),y=d.cross(m,_,kte),d.normalize(y,y),m===o?(r=_,s=y):m===r?(s=_,o=y):m===s&&(o=_,r=y)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let C=pMe;C.x=d.dot(n,o),C.y=d.dot(n,r),C.z=d.dot(n,s);let E=0,I;return C.x<-a?(I=C.x+a,E+=I*I):C.x>a&&(I=C.x-a,E+=I*I),C.y<-c?(I=C.y+c,E+=I*I):C.y>c&&(I=C.y-c,E+=I*I),C.z<-u?(I=C.z+u,E+=I*I):C.z>u&&(I=C.z-u,E+=I*I),E};var gMe=new d,_Me=new d;ji.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=J.getColumn(a,0,Gte),u=J.getColumn(a,1,zte),f=J.getColumn(a,2,Vte),h=d.add(c,u,gMe);d.add(h,f,h),d.add(h,s,h);let A=d.subtract(h,t,_Me),g=d.dot(n,A);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var yMe=new d,CMe=new d,EMe=new d;ji.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=J.getColumn(i,0,yMe),r=J.getColumn(i,1,CMe),s=J.getColumn(i,2,EMe);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var IMe=new J;ji.computeTransformation=function(e,t){l(t)||(t=new R);let n=e.center,i=J.multiplyByUniformScale(e.halfAxes,2,IMe);return R.fromRotationTranslation(i,n,t)};var xMe=new le;ji.isOccluded=function(e,t){let n=le.fromOrientedBoundingBox(e,xMe);return!t.isBoundingSphereVisible(n)};ji.prototype.intersectPlane=function(e){return ji.intersectPlane(this,e)};ji.prototype.distanceSquaredTo=function(e){return ji.distanceSquaredTo(this,e)};ji.prototype.computePlaneDistances=function(e,t,n){return ji.computePlaneDistances(this,e,t,n)};ji.prototype.computeCorners=function(e){return ji.computeCorners(this,e)};ji.prototype.computeTransformation=function(e){return ji.computeTransformation(this,e)};ji.prototype.isOccluded=function(e){return ji.isOccluded(this,e)};ji.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&J.equals(e.halfAxes,t.halfAxes)};ji.prototype.clone=function(e){return ji.clone(this,e)};ji.prototype.equals=function(e){return ji.equals(this,e)};var Qn=ji;var r1={};r1.getHeight=function(e,t,n){return(e-n)*t+n};var bMe=new Ae;r1.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,bMe);if(!l(r))return d.clone(e,o);let s=r1.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Yr=r1;var Dr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function aw(e){e=e??V.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??Me.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Ec(e,t){return(e._flags&t)===t}function xg(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(aw.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Ec(this,Dr.CULL)},set:function(e){Ec(this,Dr.CULL)!==e&&(xg(this,Dr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Ec(this,Dr.OCCLUDE)},set:function(e){Ec(this,Dr.OCCLUDE)!==e&&(xg(this,Dr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Ec(this,Dr.CAST_SHADOWS)},set:function(e){Ec(this,Dr.CAST_SHADOWS)!==e&&(xg(this,Dr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Ec(this,Dr.RECEIVE_SHADOWS)},set:function(e){Ec(this,Dr.RECEIVE_SHADOWS)!==e&&(xg(this,Dr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(xg(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(xg(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Ec(this,Dr.PICK_ONLY)},set:function(e){Ec(this,Dr.PICK_ONLY)!==e&&(xg(this,Dr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(xg(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});aw.shallowClone=function(e,t){if(l(e))return l(t)||(t=new aw),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};aw.prototype.execute=function(e,t){e.draw(this,t)};var nt=aw;var TMe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Be=Object.freeze(TMe);var s1={CLOCKWISE:ee.CW,COUNTER_CLOCKWISE:ee.CCW};s1.validate=function(e){return e===s1.CLOCKWISE||e===s1.COUNTER_CLOCKWISE};var Gs=Object.freeze(s1);function Hte(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=Hte(e[t]));return Object.freeze(e)}var Wte=Hte;function om(e){let t=e??V.EMPTY_OBJECT,n=t.cull??V.EMPTY_OBJECT,i=t.polygonOffset??V.EMPTY_OBJECT,o=t.scissorTest??V.EMPTY_OBJECT,r=o.rectangle??V.EMPTY_OBJECT,s=t.depthRange??V.EMPTY_OBJECT,a=t.depthTest??V.EMPTY_OBJECT,c=t.colorMask??V.EMPTY_OBJECT,u=t.blending??V.EMPTY_OBJECT,f=u.color??V.EMPTY_OBJECT,h=t.stencilTest??V.EMPTY_OBJECT,A=h.frontOperation??V.EMPTY_OBJECT,g=h.backOperation??V.EMPTY_OBJECT,m=t.sampleCoverage??V.EMPTY_OBJECT,_=t.viewport;this.frontFace=t.frontFace??Gs.COUNTER_CLOCKWISE,this.cull={enabled:n.enabled??!1,face:n.face??ee.BACK},this.lineWidth=t.lineWidth??1,this.polygonOffset={enabled:i.enabled??!1,factor:i.factor??0,units:i.units??0},this.scissorTest={enabled:o.enabled??!1,rectangle:Xe.clone(r)},this.depthRange={near:s.near??0,far:s.far??1},this.depthTest={enabled:a.enabled??!1,func:a.func??ee.LESS},this.colorMask={red:c.red??!0,green:c.green??!0,blue:c.blue??!0,alpha:c.alpha??!0},this.depthMask=t.depthMask??!0,this.stencilMask=t.stencilMask??-1,this.blending={enabled:u.enabled??!1,color:new G(f.red??0,f.green??0,f.blue??0,f.alpha??0),equationRgb:u.equationRgb??ee.FUNC_ADD,equationAlpha:u.equationAlpha??ee.FUNC_ADD,functionSourceRgb:u.functionSourceRgb??ee.ONE,functionSourceAlpha:u.functionSourceAlpha??ee.ONE,functionDestinationRgb:u.functionDestinationRgb??ee.ZERO,functionDestinationAlpha:u.functionDestinationAlpha??ee.ZERO},this.stencilTest={enabled:h.enabled??!1,frontFunction:h.frontFunction??ee.ALWAYS,backFunction:h.backFunction??ee.ALWAYS,reference:h.reference??0,mask:h.mask??-1,frontOperation:{fail:A.fail??ee.KEEP,zFail:A.zFail??ee.KEEP,zPass:A.zPass??ee.KEEP},backOperation:{fail:g.fail??ee.KEEP,zFail:g.zFail??ee.KEEP,zPass:g.zPass??ee.KEEP}},this.sampleCoverage={enabled:m.enabled??!1,value:m.value??1,invert:m.invert??!1},this.viewport=l(_)?new Xe(_.x,_.y,_.width,_.height):void 0,this.id=0,this._applyFunctions=[]}var SMe=0,im={};om.fromCache=function(e){let t=JSON.stringify(e),n=im[t];if(l(n))return++n.referenceCount,n.state;let i=new om(e),o=JSON.stringify(i);return n=im[o],l(n)||(i.id=SMe++,n={referenceCount:0,state:i},im[o]=n),++n.referenceCount,im[t]={referenceCount:1,state:n.state},n.state};om.removeFromCache=function(e){let t=new om(e),n=JSON.stringify(t),i=im[n],o=JSON.stringify(e),r=im[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete im[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete im[n]};om.getCache=function(){return im};om.clearCache=function(){im={}};function EC(e,t,n){n?e.enable(t):e.disable(t)}function jte(e,t){e.frontFace(t.frontFace)}function Yte(e,t){let n=t.cull,i=n.enabled;EC(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function qte(e,t){e.lineWidth(t.lineWidth)}function Kte(e,t){let n=t.polygonOffset,i=n.enabled;EC(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function Xte(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if(EC(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function Jte(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function Zte(e,t){let n=t.depthTest,i=n.enabled;EC(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function $te(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function ene(e,t){e.depthMask(t.depthMask)}function tne(e,t){e.stencilMask(t.stencilMask)}function wMe(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function nne(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;EC(e,e.BLEND,o),o&&(wMe(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function ine(e,t){let n=t.stencilTest,i=n.enabled;if(EC(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let A=n.backOperation,g=A.fail,m=A.zFail,_=A.zPass;e.stencilOpSeparate(e.BACK,g,m,_)}}function one(e,t){let n=t.sampleCoverage,i=n.enabled;EC(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var BMe=new Xe;function rne(e,t,n){let i=t.viewport??n.viewport;l(i)||(i=BMe,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}om.apply=function(e,t,n){jte(e,t),Yte(e,t),qte(e,t),Kte(e,t),Jte(e,t),Zte(e,t),$te(e,t),ene(e,t),tne(e,t),ine(e,t),one(e,t),Xte(e,t,n),nne(e,t,n),rne(e,t,n)};function DMe(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(jte),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(Yte),e.lineWidth!==t.lineWidth&&n.push(qte),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push(Kte),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(Jte),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(Zte),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push($te),e.depthMask!==t.depthMask&&n.push(ene),e.stencilMask!==t.stencilMask&&n.push(tne),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(ine),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(one),n}om.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=DMe(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let A=0;A<h;++A)f[A](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&Xte(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&nne(e,n,o),(t!==n||i!==o||i.context!==o.context)&&rne(e,n,o)};om.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:Xe.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:G.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?Xe.clone(e.viewport):void 0}};var Ue=om;var vMe=new d;function Lt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var Ta={};Ta[ee.FLOAT]="float";Ta[ee.FLOAT_VEC2]="vec2";Ta[ee.FLOAT_VEC3]="vec3";Ta[ee.FLOAT_VEC4]="vec4";Ta[ee.INT]="int";Ta[ee.INT_VEC2]="ivec2";Ta[ee.INT_VEC3]="ivec3";Ta[ee.INT_VEC4]="ivec4";Ta[ee.BOOL]="bool";Ta[ee.BOOL_VEC2]="bvec2";Ta[ee.BOOL_VEC3]="bvec3";Ta[ee.BOOL_VEC4]="bvec4";Ta[ee.FLOAT_MAT2]="mat2";Ta[ee.FLOAT_MAT3]="mat3";Ta[ee.FLOAT_MAT4]="mat4";Ta[ee.SAMPLER_2D]="sampler2D";Ta[ee.SAMPLER_CUBE]="samplerCube";Lt.prototype.getDeclaration=function(e){let t=`uniform ${Ta[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var PMe={czm_viewport:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return R.getTranslation(e.inverseView,vMe)}}),czm_frameNumber:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Lt({size:9,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},bg=PMe;function RMe(e,t,n,i){switch(t.type){case e.FLOAT:return new sne(e,t,n,i);case e.FLOAT_VEC2:return new ane(e,t,n,i);case e.FLOAT_VEC3:return new cne(e,t,n,i);case e.FLOAT_VEC4:return new lne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a1(e,t,n,i);case e.UNSIGNED_INT_SAMPLER_2D:return new a1(e,t,n,i);case e.INT:case e.BOOL:return new une(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new fne(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new dne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new hne(e,t,n,i);case e.FLOAT_MAT2:return new mne(e,t,n,i);case e.FLOAT_MAT3:return new Ane(e,t,n,i);case e.FLOAT_MAT4:return new pne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function sne(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}sne.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}ane.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function cne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}cne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z)))};function lne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}lne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(se.equals(e,this._value)||(this._value=se.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function a1(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}a1.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;e.bindTexture(t._target,t._texture)};a1.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function une(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}une.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function fne(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}fne.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function dne(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}dne.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function hne(e,t,n,i){this.name=n,this.value=void 0,this._value=new se,this._gl=e,this._location=i}hne.prototype.set=function(){let e=this.value;se.equals(e,this._value)||(se.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var MMe=new Float32Array(4);function mne(e,t,n,i){this.name=n,this.value=void 0,this._value=new Wi,this._gl=e,this._location=i}mne.prototype.set=function(){if(!Wi.equalsArray(this.value,this._value,0)){Wi.clone(this.value,this._value);let e=Wi.toArray(this.value,MMe);this._gl.uniformMatrix2fv(this._location,!1,e)}};var NMe=new Float32Array(9);function Ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new J,this._gl=e,this._location=i}Ane.prototype.set=function(){if(!J.equalsArray(this.value,this._value,0)){J.clone(this.value,this._value);let e=J.toArray(this.value,NMe);this._gl.uniformMatrix3fv(this._location,!1,e)}};var LMe=new Float32Array(16);function pne(e,t,n,i){this.name=n,this.value=void 0,this._value=new R,this._gl=e,this._location=i}pne.prototype.set=function(){if(!R.equalsArray(this.value,this._value,0)){R.clone(this.value,this._value);let e=R.toArray(this.value,LMe);this._gl.uniformMatrix4fv(this._location,!1,e)}};var c1=RMe;function OMe(e,t,n,i){switch(t.type){case e.FLOAT:return new gne(e,t,n,i);case e.FLOAT_VEC2:return new _ne(e,t,n,i);case e.FLOAT_VEC3:return new yne(e,t,n,i);case e.FLOAT_VEC4:return new Cne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a6(e,t,n,i);case e.INT:case e.BOOL:return new Ene(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Ine(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new xne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new bne(e,t,n,i);case e.FLOAT_MAT2:return new Tne(e,t,n,i);case e.FLOAT_MAT3:return new Sne(e,t,n,i);case e.FLOAT_MAT4:return new wne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function gne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}gne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function _ne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}_ne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function yne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}yne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Cne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Cne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?G.equalsArray(s,n,o)||(G.pack(s,n,o),i=!0):l(s.x)&&(se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function a6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}a6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];e.activeTexture(t+o),e.bindTexture(r._target,r._texture)}};a6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Ene(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Ene.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Ine(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Ine.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function xne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}xne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function bne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}bne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function Tne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Tne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Wi.equalsArray(s,n,o)||(Wi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function Sne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}Sne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];J.equalsArray(s,n,o)||(J.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function wne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}wne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];R.equalsArray(s,n,o)||(R.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var l1=OMe;var FMe=0;function kA(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=QMe(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=FMe++}kA.fromCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.getShaderProgram(e)};kA.replaceCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(kA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return u1(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return u1(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return u1(this),this._uniformsByName}}});function Bne(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function QMe(e,t){let n={};if(!qt.highpFloatSupported||!qt.highpIntSupported){let i,o,r,s,a=Bne(e),c=Bne(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var rm="[Cesium WebGL] ";function kMe(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let A in a)a.hasOwnProperty(A)&&e.bindAttribLocation(s,a[A],A);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${rm}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${rm}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${rm}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${rm}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${rm}Vertex shader compile log: ${c}`),console.error(`${rm} Vertex shader source:
|
||
${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${rm}Fragment shader compile log: ${c}`),console.error(`${rm} Fragment shader source:
|
||
${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new ce(u);function h(A,g){if(!l(f))return;let m=f.getTranslatedShaderSource(A);if(m===""){console.error(`${rm}${g} shader translation failed.`);return}console.error(`${rm}Translated ${g} shaderSource:
|
||
${m}`)}}function UMe(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function GMe(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=c1(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,A,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(A=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),A.push(e.getUniform(t,g))))}else{h=[];for(let _=0;_<a.size;++_)g=e.getUniformLocation(t,`${u}[${_}]`),g!==null&&h.push(g);f=l1(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function zMe(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=bg[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function VMe(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function u1(e){l(e._program)||Dne(e)}function Dne(e){let t=e._program,n=e._gl,i=kMe(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=GMe(n,i),s=zMe(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=UMe(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=VMe(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,A=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Dne(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=A;let y=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(y?y[1]:m.message)}})}kA.prototype._bind=function(){u1(this),this._gl.useProgram(this._program)};kA.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};kA.prototype.isDestroyed=function(){return!1};kA.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};kA.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var ln=kA;var f1=`/**
|
||
* A built-in GLSL floating-point constant for converting radians to degrees.
|
||
*
|
||
* @alias czm_degreesPerRadian
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.DEGREES_PER_RADIAN
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_degreesPerRadian = ...;
|
||
*
|
||
* // Example
|
||
* float deg = czm_degreesPerRadian * rad;
|
||
*/
|
||
const float czm_degreesPerRadian = 57.29577951308232;
|
||
`;var d1=`/**
|
||
* A built-in GLSL vec2 constant for defining the depth range.
|
||
* This is a workaround to a bug where IE11 does not implement gl_DepthRange.
|
||
*
|
||
* @alias czm_depthRange
|
||
* @glslConstant
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* float depthRangeNear = czm_depthRange.near;
|
||
* float depthRangeFar = czm_depthRange.far;
|
||
*
|
||
*/
|
||
const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0);
|
||
`;var h1=`/**
|
||
* 0.1
|
||
*
|
||
* @name czm_epsilon1
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon1 = 0.1;
|
||
`;var m1=`/**
|
||
* 0.01
|
||
*
|
||
* @name czm_epsilon2
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon2 = 0.01;
|
||
`;var A1=`/**
|
||
* 0.001
|
||
*
|
||
* @name czm_epsilon3
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon3 = 0.001;
|
||
`;var p1=`/**
|
||
* 0.0001
|
||
*
|
||
* @name czm_epsilon4
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon4 = 0.0001;
|
||
`;var g1=`/**
|
||
* 0.00001
|
||
*
|
||
* @name czm_epsilon5
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon5 = 0.00001;
|
||
`;var _1=`/**
|
||
* 0.000001
|
||
*
|
||
* @name czm_epsilon6
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon6 = 0.000001;
|
||
`;var y1=`/**
|
||
* 0.0000001
|
||
*
|
||
* @name czm_epsilon7
|
||
* @glslConstant
|
||
*/
|
||
const float czm_epsilon7 = 0.0000001;
|
||
`;var C1=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_infinity
|
||
* @glslConstant
|
||
*/
|
||
const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp?
|
||
`;var E1=`/**
|
||
* A built-in GLSL floating-point constant for <code>1/pi</code>.
|
||
*
|
||
* @alias czm_oneOverPi
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.ONE_OVER_PI
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_oneOverPi = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 1.0 / czm_oneOverPi;
|
||
*/
|
||
const float czm_oneOverPi = 0.3183098861837907;
|
||
`;var I1=`/**
|
||
* A built-in GLSL floating-point constant for <code>1/2pi</code>.
|
||
*
|
||
* @alias czm_oneOverTwoPi
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.ONE_OVER_TWO_PI
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_oneOverTwoPi = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 2.0 * czm_oneOverTwoPi;
|
||
*/
|
||
const float czm_oneOverTwoPi = 0.15915494309189535;
|
||
`;var x1=`/**
|
||
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE}
|
||
*
|
||
* @name czm_passCesium3DTile
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passCesium3DTile = 4.0;
|
||
`;var b1=`/**
|
||
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION}
|
||
*
|
||
* @name czm_passCesium3DTileClassification
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passCesium3DTileClassification = 5.0;
|
||
`;var T1=`/**
|
||
* The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW}
|
||
*
|
||
* @name czm_passCesium3DTileClassificationIgnoreShow
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passCesium3DTileClassificationIgnoreShow = 6.0;
|
||
`;var S1=`/**
|
||
* The automatic GLSL constant for {@link Pass#CLASSIFICATION}
|
||
*
|
||
* @name czm_passClassification
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passClassification = 7.0;
|
||
`;var w1=`/**
|
||
* The automatic GLSL constant for {@link Pass#COMPUTE}
|
||
*
|
||
* @name czm_passCompute
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passCompute = 1.0;
|
||
`;var B1=`/**
|
||
* The automatic GLSL constant for {@link Pass#ENVIRONMENT}
|
||
*
|
||
* @name czm_passEnvironment
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passEnvironment = 0.0;
|
||
`;var D1=`/**
|
||
* The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS}
|
||
*
|
||
* @name czm_passGaussianSplats
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passGaussianSplats = 10.0;
|
||
`;var v1=`/**
|
||
* The automatic GLSL constant for {@link Pass#GLOBE}
|
||
*
|
||
* @name czm_passGlobe
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passGlobe = 2.0;
|
||
`;var P1=`/**
|
||
* The automatic GLSL constant for {@link Pass#OPAQUE}
|
||
*
|
||
* @name czm_passOpaque
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passOpaque = 7.0;
|
||
`;var R1=`/**
|
||
* The automatic GLSL constant for {@link Pass#OVERLAY}
|
||
*
|
||
* @name czm_passOverlay
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passOverlay = 11.0;
|
||
`;var M1=`/**
|
||
* The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION}
|
||
*
|
||
* @name czm_passTerrainClassification
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passTerrainClassification = 3.0;
|
||
`;var N1=`/**
|
||
* The automatic GLSL constant for {@link Pass#TRANSLUCENT}
|
||
*
|
||
* @name czm_passTranslucent
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passTranslucent = 8.0;
|
||
`;var L1=`/**
|
||
* The automatic GLSL constant for {@link Pass#VOXELS}
|
||
*
|
||
* @name czm_passVoxels
|
||
* @glslConstant
|
||
*
|
||
* @see czm_pass
|
||
*/
|
||
const float czm_passVoxels = 9.0;
|
||
`;var O1=`/**
|
||
* A built-in GLSL floating-point constant for <code>Math.PI</code>.
|
||
*
|
||
* @alias czm_pi
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.PI
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_pi = ...;
|
||
*
|
||
* // Example
|
||
* float twoPi = 2.0 * czm_pi;
|
||
*/
|
||
const float czm_pi = 3.141592653589793;
|
||
`;var F1=`/**
|
||
* A built-in GLSL floating-point constant for <code>pi/4</code>.
|
||
*
|
||
* @alias czm_piOverFour
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.PI_OVER_FOUR
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_piOverFour = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 4.0 * czm_piOverFour;
|
||
*/
|
||
const float czm_piOverFour = 0.7853981633974483;
|
||
`;var Q1=`/**
|
||
* A built-in GLSL floating-point constant for <code>pi/6</code>.
|
||
*
|
||
* @alias czm_piOverSix
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.PI_OVER_SIX
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_piOverSix = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 6.0 * czm_piOverSix;
|
||
*/
|
||
const float czm_piOverSix = 0.5235987755982988;
|
||
`;var k1=`/**
|
||
* A built-in GLSL floating-point constant for <code>pi/3</code>.
|
||
*
|
||
* @alias czm_piOverThree
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.PI_OVER_THREE
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_piOverThree = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 3.0 * czm_piOverThree;
|
||
*/
|
||
const float czm_piOverThree = 1.0471975511965976;
|
||
`;var U1=`/**
|
||
* A built-in GLSL floating-point constant for <code>pi/2</code>.
|
||
*
|
||
* @alias czm_piOverTwo
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.PI_OVER_TWO
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_piOverTwo = ...;
|
||
*
|
||
* // Example
|
||
* float pi = 2.0 * czm_piOverTwo;
|
||
*/
|
||
const float czm_piOverTwo = 1.5707963267948966;
|
||
`;var G1=`/**
|
||
* A built-in GLSL floating-point constant for converting degrees to radians.
|
||
*
|
||
* @alias czm_radiansPerDegree
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.RADIANS_PER_DEGREE
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_radiansPerDegree = ...;
|
||
*
|
||
* // Example
|
||
* float rad = czm_radiansPerDegree * deg;
|
||
*/
|
||
const float czm_radiansPerDegree = 0.017453292519943295;
|
||
`;var z1=`/**
|
||
* The constant identifier for the 2D {@link SceneMode}
|
||
*
|
||
* @name czm_sceneMode2D
|
||
* @glslConstant
|
||
* @see czm_sceneMode
|
||
* @see czm_sceneModeColumbusView
|
||
* @see czm_sceneMode3D
|
||
* @see czm_sceneModeMorphing
|
||
*/
|
||
const float czm_sceneMode2D = 2.0;
|
||
`;var V1=`/**
|
||
* The constant identifier for the 3D {@link SceneMode}
|
||
*
|
||
* @name czm_sceneMode3D
|
||
* @glslConstant
|
||
* @see czm_sceneMode
|
||
* @see czm_sceneMode2D
|
||
* @see czm_sceneModeColumbusView
|
||
* @see czm_sceneModeMorphing
|
||
*/
|
||
const float czm_sceneMode3D = 3.0;
|
||
`;var H1=`/**
|
||
* The constant identifier for the Columbus View {@link SceneMode}
|
||
*
|
||
* @name czm_sceneModeColumbusView
|
||
* @glslConstant
|
||
* @see czm_sceneMode
|
||
* @see czm_sceneMode2D
|
||
* @see czm_sceneMode3D
|
||
* @see czm_sceneModeMorphing
|
||
*/
|
||
const float czm_sceneModeColumbusView = 1.0;
|
||
`;var W1=`/**
|
||
* The constant identifier for the Morphing {@link SceneMode}
|
||
*
|
||
* @name czm_sceneModeMorphing
|
||
* @glslConstant
|
||
* @see czm_sceneMode
|
||
* @see czm_sceneMode2D
|
||
* @see czm_sceneModeColumbusView
|
||
* @see czm_sceneMode3D
|
||
*/
|
||
const float czm_sceneModeMorphing = 0.0;
|
||
`;var j1=`/**
|
||
* A built-in GLSL floating-point constant for one solar radius.
|
||
*
|
||
* @alias czm_solarRadius
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.SOLAR_RADIUS
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_solarRadius = ...;
|
||
*/
|
||
const float czm_solarRadius = 695500000.0;
|
||
`;var Y1=`/**
|
||
* A built-in GLSL floating-point constant for <code>3pi/2</code>.
|
||
*
|
||
* @alias czm_threePiOver2
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.THREE_PI_OVER_TWO
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_threePiOver2 = ...;
|
||
*
|
||
* // Example
|
||
* float pi = (2.0 / 3.0) * czm_threePiOver2;
|
||
*/
|
||
const float czm_threePiOver2 = 4.71238898038469;
|
||
`;var q1=`/**
|
||
* A built-in GLSL floating-point constant for <code>2pi</code>.
|
||
*
|
||
* @alias czm_twoPi
|
||
* @glslConstant
|
||
*
|
||
* @see CesiumMath.TWO_PI
|
||
*
|
||
* @example
|
||
* // GLSL declaration
|
||
* const float czm_twoPi = ...;
|
||
*
|
||
* // Example
|
||
* float pi = czm_twoPi / 2.0;
|
||
*/
|
||
const float czm_twoPi = 6.283185307179586;
|
||
`;var K1=`/**
|
||
* The maximum latitude, in radians, both North and South, supported by a Web Mercator
|
||
* (EPSG:3857) projection. Technically, the Mercator projection is defined
|
||
* for any latitude up to (but not including) 90 degrees, but it makes sense
|
||
* to cut it off sooner because it grows exponentially with increasing latitude.
|
||
* The logic behind this particular cutoff value, which is the one used by
|
||
* Google Maps, Bing Maps, and Esri, is that it makes the projection
|
||
* square. That is, the rectangle is equal in the X and Y directions.
|
||
*
|
||
* The constant value is computed as follows:
|
||
* czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi)))
|
||
*
|
||
* @name czm_webMercatorMaxLatitude
|
||
* @glslConstant
|
||
*/
|
||
const float czm_webMercatorMaxLatitude = 1.4844222297453324;
|
||
`;var X1=`/**
|
||
* @name czm_depthRangeStruct
|
||
* @glslStruct
|
||
*/
|
||
struct czm_depthRangeStruct
|
||
{
|
||
float near;
|
||
float far;
|
||
};
|
||
`;var J1=`/**
|
||
* Holds material information that can be used for lighting. Returned by all czm_getMaterial functions.
|
||
*
|
||
* @name czm_material
|
||
* @glslStruct
|
||
*
|
||
* @property {vec3} diffuse Incoming light that scatters evenly in all directions.
|
||
* @property {float} specular Intensity of incoming light reflecting in a single direction.
|
||
* @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight.
|
||
* @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal.
|
||
* @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light.
|
||
* @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque.
|
||
*/
|
||
struct czm_material
|
||
{
|
||
vec3 diffuse;
|
||
float specular;
|
||
float shininess;
|
||
vec3 normal;
|
||
vec3 emission;
|
||
float alpha;
|
||
};
|
||
`;var Z1=`/**
|
||
* Used as input to every material's czm_getMaterial function.
|
||
*
|
||
* @name czm_materialInput
|
||
* @glslStruct
|
||
*
|
||
* @property {float} s 1D texture coordinates.
|
||
* @property {vec2} st 2D texture coordinates.
|
||
* @property {vec3} str 3D texture coordinates.
|
||
* @property {vec3} normalEC Unperturbed surface normal in eye coordinates.
|
||
* @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space.
|
||
* @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye.
|
||
* @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials.
|
||
* @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials.
|
||
* @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials.
|
||
* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials.
|
||
*/
|
||
struct czm_materialInput
|
||
{
|
||
float s;
|
||
vec2 st;
|
||
vec3 str;
|
||
vec3 normalEC;
|
||
mat3 tangentToEyeMatrix;
|
||
vec3 positionToEyeEC;
|
||
float height;
|
||
float slope;
|
||
float aspect;
|
||
float waterMask;
|
||
};
|
||
`;var $1=`/**
|
||
* Struct for representing a material for a {@link Model}. The model
|
||
* rendering pipeline will pass this struct between material, custom shaders,
|
||
* and lighting stages. This is not to be confused with {@link czm_material}
|
||
* which is used by the older Fabric materials system, although they are similar.
|
||
* <p>
|
||
* All color values (diffuse, specular, emissive) are in linear color space.
|
||
* </p>
|
||
*
|
||
* @name czm_modelMaterial
|
||
* @glslStruct
|
||
*
|
||
* @property {vec4} baseColor The base color of the material.
|
||
* @property {vec3} diffuse Incoming light that scatters evenly in all directions.
|
||
* @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque.
|
||
* @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature.
|
||
* @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces.
|
||
* @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal.
|
||
* @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded.
|
||
* @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light.
|
||
*/
|
||
struct czm_modelMaterial {
|
||
vec4 baseColor;
|
||
vec3 diffuse;
|
||
float alpha;
|
||
vec3 specular;
|
||
float roughness;
|
||
vec3 normalEC;
|
||
float occlusion;
|
||
vec3 emissive;
|
||
#ifdef USE_SPECULAR
|
||
float specularWeight;
|
||
#endif
|
||
#ifdef USE_ANISOTROPY
|
||
vec3 anisotropicT;
|
||
vec3 anisotropicB;
|
||
float anisotropyStrength;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
float clearcoatFactor;
|
||
float clearcoatRoughness;
|
||
vec3 clearcoatNormal;
|
||
// Add clearcoatF0 when KHR_materials_ior is implemented
|
||
#endif
|
||
};
|
||
`;var eN=`/**
|
||
* Struct for representing the output of a custom vertex shader.
|
||
*
|
||
* @name czm_modelVertexOutput
|
||
* @glslStruct
|
||
*
|
||
* @see {@link CustomShader}
|
||
* @see {@link Model}
|
||
*
|
||
* @property {vec3} positionMC The position of the vertex in model coordinates
|
||
* @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives.
|
||
*/
|
||
struct czm_modelVertexOutput {
|
||
vec3 positionMC;
|
||
float pointSize;
|
||
};
|
||
`;var tN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_ray
|
||
* @glslStruct
|
||
*/
|
||
struct czm_ray
|
||
{
|
||
vec3 origin;
|
||
vec3 direction;
|
||
};
|
||
`;var nN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_raySegment
|
||
* @glslStruct
|
||
*/
|
||
struct czm_raySegment
|
||
{
|
||
float start;
|
||
float stop;
|
||
};
|
||
|
||
/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_emptyRaySegment
|
||
* @glslConstant
|
||
*/
|
||
const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity);
|
||
|
||
/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_fullRaySegment
|
||
* @glslConstant
|
||
*/
|
||
const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity);
|
||
`;var iN=`struct czm_shadowParameters
|
||
{
|
||
#ifdef USE_CUBE_MAP_SHADOW
|
||
vec3 texCoords;
|
||
#else
|
||
vec2 texCoords;
|
||
#endif
|
||
|
||
float depthBias;
|
||
float depth;
|
||
float nDotL;
|
||
vec2 texelStepSize;
|
||
float normalShadingSmooth;
|
||
float darkness;
|
||
};
|
||
`;var oN=`/**
|
||
* Converts an HSB color (hue, saturation, brightness) to RGB
|
||
* HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl}
|
||
*
|
||
* @name czm_HSBToRGB
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} hsb The color in HSB.
|
||
*
|
||
* @returns {vec3} The color in RGB.
|
||
*
|
||
* @example
|
||
* vec3 hsb = czm_RGBToHSB(rgb);
|
||
* hsb.z *= 0.1;
|
||
* rgb = czm_HSBToRGB(hsb);
|
||
*/
|
||
|
||
const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||
|
||
vec3 czm_HSBToRGB(vec3 hsb)
|
||
{
|
||
vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www);
|
||
return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y);
|
||
}
|
||
`;var rN=`/**
|
||
* Converts an HSL color (hue, saturation, lightness) to RGB
|
||
* HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
|
||
*
|
||
* @name czm_HSLToRGB
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color in HSL.
|
||
*
|
||
* @returns {vec3} The color in RGB.
|
||
*
|
||
* @example
|
||
* vec3 hsl = czm_RGBToHSL(rgb);
|
||
* hsl.z *= 0.1;
|
||
* rgb = czm_HSLToRGB(hsl);
|
||
*/
|
||
|
||
vec3 hueToRGB(float hue)
|
||
{
|
||
float r = abs(hue * 6.0 - 3.0) - 1.0;
|
||
float g = 2.0 - abs(hue * 6.0 - 2.0);
|
||
float b = 2.0 - abs(hue * 6.0 - 4.0);
|
||
return clamp(vec3(r, g, b), 0.0, 1.0);
|
||
}
|
||
|
||
vec3 czm_HSLToRGB(vec3 hsl)
|
||
{
|
||
vec3 rgb = hueToRGB(hsl.x);
|
||
float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;
|
||
return (rgb - 0.5) * c + hsl.z;
|
||
}
|
||
`;var sN=`/**
|
||
* Converts an RGB color to HSB (hue, saturation, brightness)
|
||
* HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl}
|
||
*
|
||
* @name czm_RGBToHSB
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color in RGB.
|
||
*
|
||
* @returns {vec3} The color in HSB.
|
||
*
|
||
* @example
|
||
* vec3 hsb = czm_RGBToHSB(rgb);
|
||
* hsb.z *= 0.1;
|
||
* rgb = czm_HSBToRGB(hsb);
|
||
*/
|
||
|
||
const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||
|
||
vec3 czm_RGBToHSB(vec3 rgb)
|
||
{
|
||
vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g));
|
||
vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r));
|
||
|
||
float d = q.x - min(q.w, q.y);
|
||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x);
|
||
}
|
||
`;var aN=`/**
|
||
* Converts an RGB color to HSL (hue, saturation, lightness)
|
||
* HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
|
||
*
|
||
* @name czm_RGBToHSL
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color in RGB.
|
||
*
|
||
* @returns {vec3} The color in HSL.
|
||
*
|
||
* @example
|
||
* vec3 hsl = czm_RGBToHSL(rgb);
|
||
* hsl.z *= 0.1;
|
||
* rgb = czm_HSLToRGB(hsl);
|
||
*/
|
||
|
||
vec3 RGBtoHCV(vec3 rgb)
|
||
{
|
||
// Based on work by Sam Hocevar and Emil Persson
|
||
vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0);
|
||
vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx);
|
||
float c = q.x - min(q.w, q.y);
|
||
float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z);
|
||
return vec3(h, c, q.x);
|
||
}
|
||
|
||
vec3 czm_RGBToHSL(vec3 rgb)
|
||
{
|
||
vec3 hcv = RGBtoHCV(rgb);
|
||
float l = hcv.z - hcv.y * 0.5;
|
||
float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7);
|
||
return vec3(hcv.x, s, l);
|
||
}
|
||
`;var cN=`/**
|
||
* Converts an RGB color to CIE Yxy.
|
||
* <p>The conversion is described in
|
||
* {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform}
|
||
* </p>
|
||
*
|
||
* @name czm_RGBToXYZ
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color in RGB.
|
||
*
|
||
* @returns {vec3} The color in CIE Yxy.
|
||
*
|
||
* @example
|
||
* vec3 xyz = czm_RGBToXYZ(rgb);
|
||
* xyz.x = max(xyz.x - luminanceThreshold, 0.0);
|
||
* rgb = czm_XYZToRGB(xyz);
|
||
*/
|
||
vec3 czm_RGBToXYZ(vec3 rgb)
|
||
{
|
||
const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193,
|
||
0.3576, 0.7152, 0.1192,
|
||
0.1805, 0.0722, 0.9505);
|
||
vec3 xyz = RGB2XYZ * rgb;
|
||
vec3 Yxy;
|
||
Yxy.r = xyz.g;
|
||
float temp = dot(vec3(1.0), xyz);
|
||
Yxy.gb = xyz.rg / temp;
|
||
return Yxy;
|
||
}
|
||
`;var lN=`/**
|
||
* Converts a CIE Yxy color to RGB.
|
||
* <p>The conversion is described in
|
||
* {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform}
|
||
* </p>
|
||
*
|
||
* @name czm_XYZToRGB
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} Yxy The color in CIE Yxy.
|
||
*
|
||
* @returns {vec3} The color in RGB.
|
||
*
|
||
* @example
|
||
* vec3 xyz = czm_RGBToXYZ(rgb);
|
||
* xyz.x = max(xyz.x - luminanceThreshold, 0.0);
|
||
* rgb = czm_XYZToRGB(xyz);
|
||
*/
|
||
vec3 czm_XYZToRGB(vec3 Yxy)
|
||
{
|
||
const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556,
|
||
-1.5371, 1.8760, -0.2040,
|
||
-0.4985, 0.0416, 1.0572);
|
||
vec3 xyz;
|
||
xyz.r = Yxy.r * Yxy.g / Yxy.b;
|
||
xyz.g = Yxy.r;
|
||
xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b;
|
||
|
||
return XYZ2RGB * xyz;
|
||
}
|
||
`;var uN=`// See:
|
||
// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
|
||
|
||
vec3 czm_acesTonemapping(vec3 color) {
|
||
float g = 0.985;
|
||
float a = 0.065;
|
||
float b = 0.0001;
|
||
float c = 0.433;
|
||
float d = 0.238;
|
||
|
||
color = (color * (color + a) - b) / (color * (g * color + c) + d);
|
||
|
||
color = clamp(color, 0.0, 1.0);
|
||
|
||
return color;
|
||
}
|
||
`;var fN=`/**
|
||
* @private
|
||
*/
|
||
float czm_alphaWeight(float a)
|
||
{
|
||
float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];
|
||
|
||
// See Weighted Blended Order-Independent Transparency for examples of different weighting functions:
|
||
// http://jcgt.org/published/0002/02/09/
|
||
return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0))));
|
||
}
|
||
`;var dN=`/**
|
||
* Procedural anti-aliasing by blurring two colors that meet at a sharp edge.
|
||
*
|
||
* @name czm_antialias
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} color1 The color on one side of the edge.
|
||
* @param {vec4} color2 The color on the other side of the edge.
|
||
* @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>.
|
||
* @param {float} dist The distance to the edge in texture coordinates.
|
||
* @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors.
|
||
* @returns {vec4} The anti-aliased color.
|
||
*
|
||
* @example
|
||
* // GLSL declarations
|
||
* vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor);
|
||
* vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist);
|
||
*
|
||
* // get the color for a material that has a sharp edge at the line y = 0.5 in texture space
|
||
* float dist = abs(textureCoordinates.t - 0.5);
|
||
* vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t));
|
||
* vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1);
|
||
*/
|
||
vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor)
|
||
{
|
||
float val1 = clamp(dist / fuzzFactor, 0.0, 1.0);
|
||
float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0);
|
||
val1 = val1 * (1.0 - val2);
|
||
val1 = val1 * val1 * (3.0 - (2.0 * val1));
|
||
val1 = pow(val1, 0.5); //makes the transition nicer
|
||
|
||
vec4 midColor = (color1 + color2) * 0.5;
|
||
return mix(midColor, currentColor, val1);
|
||
}
|
||
|
||
vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist)
|
||
{
|
||
return czm_antialias(color1, color2, currentColor, dist, 0.1);
|
||
}
|
||
`;var hN=`/**
|
||
* Apply a HSB color shift to an RGB color.
|
||
*
|
||
* @param {vec3} rgb The color in RGB space.
|
||
* @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment
|
||
* @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects.
|
||
*
|
||
* @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range.
|
||
*/
|
||
vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) {
|
||
// Convert rgb color to hsb
|
||
vec3 hsb = czm_RGBToHSB(rgb);
|
||
|
||
// Perform hsb shift
|
||
// Hue cycles around so no clamp is needed.
|
||
hsb.x += hsbShift.x; // hue
|
||
hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation
|
||
|
||
// brightness
|
||
//
|
||
// Some shaders such as atmosphere-related effects need to leave black
|
||
// pixels unchanged
|
||
if (ignoreBlackPixels) {
|
||
hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0;
|
||
} else {
|
||
hsb.z = hsb.z + hsbShift.z;
|
||
}
|
||
hsb.z = clamp(hsb.z, 0.0, 1.0);
|
||
|
||
// Convert shifted hsb back to rgb
|
||
return czm_HSBToRGB(hsb);
|
||
}
|
||
`;var mN=`/**
|
||
* Approximately computes spherical coordinates given a normal.
|
||
* Uses approximate inverse trigonometry for speed and consistency,
|
||
* since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU.
|
||
*
|
||
* @name czm_approximateSphericalCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} normal arbitrary-length normal.
|
||
*
|
||
* @returns {vec2} Approximate latitude and longitude spherical coordinates.
|
||
*/
|
||
vec2 czm_approximateSphericalCoordinates(vec3 normal) {
|
||
// Project into plane with vertical for latitude
|
||
float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z);
|
||
float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y);
|
||
return vec2(latitudeApproximation, longitudeApproximation);
|
||
}
|
||
`;var AN=`/**
|
||
* Compute a rational approximation to tanh(x)
|
||
*
|
||
* @param {float} x A real number input
|
||
* @returns {float} An approximation for tanh(x)
|
||
*/
|
||
float czm_approximateTanh(float x) {
|
||
float x2 = x * x;
|
||
return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2)));
|
||
}
|
||
`;var pN=`/**
|
||
* Determines if the fragment is back facing
|
||
*
|
||
* @name czm_backFacing
|
||
* @glslFunction
|
||
*
|
||
* @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>.
|
||
*/
|
||
bool czm_backFacing()
|
||
{
|
||
// !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494.
|
||
return gl_FrontFacing == false;
|
||
}
|
||
`;var gN=`/**
|
||
* Branchless ternary operator to be used when it's inexpensive to explicitly
|
||
* evaluate both possibilities for a float expression.
|
||
*
|
||
* @name czm_branchFreeTernary
|
||
* @glslFunction
|
||
*
|
||
* @param {bool} comparison A comparison statement
|
||
* @param {float} a Value to return if the comparison is true.
|
||
* @param {float} b Value to return if the comparison is false.
|
||
*
|
||
* @returns {float} equivalent of comparison ? a : b
|
||
*/
|
||
float czm_branchFreeTernary(bool comparison, float a, float b) {
|
||
float useA = float(comparison);
|
||
return a * useA + b * (1.0 - useA);
|
||
}
|
||
|
||
/**
|
||
* Branchless ternary operator to be used when it's inexpensive to explicitly
|
||
* evaluate both possibilities for a vec2 expression.
|
||
*
|
||
* @name czm_branchFreeTernary
|
||
* @glslFunction
|
||
*
|
||
* @param {bool} comparison A comparison statement
|
||
* @param {vec2} a Value to return if the comparison is true.
|
||
* @param {vec2} b Value to return if the comparison is false.
|
||
*
|
||
* @returns {vec2} equivalent of comparison ? a : b
|
||
*/
|
||
vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) {
|
||
float useA = float(comparison);
|
||
return a * useA + b * (1.0 - useA);
|
||
}
|
||
|
||
/**
|
||
* Branchless ternary operator to be used when it's inexpensive to explicitly
|
||
* evaluate both possibilities for a vec3 expression.
|
||
*
|
||
* @name czm_branchFreeTernary
|
||
* @glslFunction
|
||
*
|
||
* @param {bool} comparison A comparison statement
|
||
* @param {vec3} a Value to return if the comparison is true.
|
||
* @param {vec3} b Value to return if the comparison is false.
|
||
*
|
||
* @returns {vec3} equivalent of comparison ? a : b
|
||
*/
|
||
vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) {
|
||
float useA = float(comparison);
|
||
return a * useA + b * (1.0 - useA);
|
||
}
|
||
|
||
/**
|
||
* Branchless ternary operator to be used when it's inexpensive to explicitly
|
||
* evaluate both possibilities for a vec4 expression.
|
||
*
|
||
* @name czm_branchFreeTernary
|
||
* @glslFunction
|
||
*
|
||
* @param {bool} comparison A comparison statement
|
||
* @param {vec3} a Value to return if the comparison is true.
|
||
* @param {vec3} b Value to return if the comparison is false.
|
||
*
|
||
* @returns {vec3} equivalent of comparison ? a : b
|
||
*/
|
||
vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) {
|
||
float useA = float(comparison);
|
||
return a * useA + b * (1.0 - useA);
|
||
}
|
||
`;var _N=`
|
||
vec4 czm_cascadeColor(vec4 weights)
|
||
{
|
||
return vec4(1.0, 0.0, 0.0, 1.0) * weights.x +
|
||
vec4(0.0, 1.0, 0.0, 1.0) * weights.y +
|
||
vec4(0.0, 0.0, 1.0, 1.0) * weights.z +
|
||
vec4(1.0, 0.0, 1.0, 1.0) * weights.w;
|
||
}
|
||
`;var yN=`
|
||
uniform vec4 shadowMap_cascadeDistances;
|
||
|
||
float czm_cascadeDistance(vec4 weights)
|
||
{
|
||
return dot(shadowMap_cascadeDistances, weights);
|
||
}
|
||
`;var CN=`
|
||
uniform mat4 shadowMap_cascadeMatrices[4];
|
||
|
||
mat4 czm_cascadeMatrix(vec4 weights)
|
||
{
|
||
return shadowMap_cascadeMatrices[0] * weights.x +
|
||
shadowMap_cascadeMatrices[1] * weights.y +
|
||
shadowMap_cascadeMatrices[2] * weights.z +
|
||
shadowMap_cascadeMatrices[3] * weights.w;
|
||
}
|
||
`;var EN=`
|
||
uniform vec4 shadowMap_cascadeSplits[2];
|
||
|
||
vec4 czm_cascadeWeights(float depthEye)
|
||
{
|
||
// One component is set to 1.0 and all others set to 0.0.
|
||
vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye));
|
||
vec4 far = step(depthEye, shadowMap_cascadeSplits[1]);
|
||
return near * far;
|
||
}
|
||
`;var IN=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) {
|
||
float signedDistance = texture(clippingDistance, uv).r;
|
||
return (signedDistance - 0.5) * 2.0;
|
||
}
|
||
|
||
void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) {
|
||
// Position is completely outside of polygons bounds
|
||
vec2 rectUv = clippingPosition;
|
||
if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) {
|
||
#ifdef CLIPPING_INVERSE
|
||
discard;
|
||
#endif
|
||
return;
|
||
}
|
||
|
||
vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0));
|
||
vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005));
|
||
float dimension = float(extentsLength);
|
||
if (extentsLength > 2) {
|
||
dimension = ceil(log2(float(extentsLength)));
|
||
}
|
||
|
||
vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension;
|
||
vec2 uv = textureOffset + rectUv / dimension;
|
||
|
||
float signedDistance = getSignedDistance(uv, clippingDistance);
|
||
|
||
#ifdef CLIPPING_INVERSE
|
||
if (signedDistance > 0.0) {
|
||
discard;
|
||
}
|
||
#else
|
||
if (signedDistance < 0.0) {
|
||
discard;
|
||
}
|
||
#endif
|
||
}
|
||
`;var xN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_columbusViewMorph
|
||
* @glslFunction
|
||
*/
|
||
vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time)
|
||
{
|
||
// Just linear for now.
|
||
vec3 p = mix(position2D.xyz, position3D.xyz, time);
|
||
return vec4(p, 1.0);
|
||
}
|
||
`;var bN=`/**
|
||
* Compute the atmosphere color, applying Rayleigh and Mie scattering. This
|
||
* builtin uses automatic uniforms so the atmophere settings are synced with the
|
||
* state of the Scene, even in other contexts like Model.
|
||
*
|
||
* @name czm_computeAtmosphereColor
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} positionWC Position of the fragment in world coords (low precision)
|
||
* @param {vec3} lightDirection Light direction from the sun or other light source.
|
||
* @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function
|
||
* @param {vec3} mieColor The Mie scattering color computed by a scattering function
|
||
* @param {float} opacity The opacity computed by a scattering function.
|
||
*/
|
||
vec4 czm_computeAtmosphereColor(
|
||
vec3 positionWC,
|
||
vec3 lightDirection,
|
||
vec3 rayleighColor,
|
||
vec3 mieColor,
|
||
float opacity
|
||
) {
|
||
// Setup the primary ray: from the camera position to the vertex position.
|
||
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
|
||
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
|
||
|
||
float cosAngle = dot(cameraToPositionWCDirection, lightDirection);
|
||
float cosAngleSq = cosAngle * cosAngle;
|
||
|
||
float G = czm_atmosphereMieAnisotropy;
|
||
float GSq = G * G;
|
||
|
||
// The Rayleigh phase function.
|
||
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
|
||
// The Mie phase function.
|
||
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
|
||
|
||
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
|
||
vec3 rayleigh = rayleighPhase * rayleighColor;
|
||
vec3 mie = miePhase * mieColor;
|
||
|
||
vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity;
|
||
|
||
return vec4(color, opacity);
|
||
}
|
||
|
||
/**
|
||
* Compute the atmosphere color, applying Rayleigh and Mie scattering. This
|
||
* builtin uses automatic uniforms so the atmophere settings are synced with the
|
||
* state of the Scene, even in other contexts like Model.
|
||
*
|
||
* @name czm_computeAtmosphereColor
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision)
|
||
* @param {vec3} lightDirection Light direction from the sun or other light source.
|
||
* @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function
|
||
* @param {vec3} mieColor The Mie scattering color computed by a scattering function
|
||
* @param {float} opacity The opacity computed by a scattering function.
|
||
*/
|
||
vec4 czm_computeAtmosphereColor(
|
||
czm_ray primaryRay,
|
||
vec3 lightDirection,
|
||
vec3 rayleighColor,
|
||
vec3 mieColor,
|
||
float opacity
|
||
) {
|
||
vec3 direction = normalize(primaryRay.direction);
|
||
|
||
float cosAngle = dot(direction, lightDirection);
|
||
float cosAngleSq = cosAngle * cosAngle;
|
||
|
||
float G = czm_atmosphereMieAnisotropy;
|
||
float GSq = G * G;
|
||
|
||
// The Rayleigh phase function.
|
||
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
|
||
// The Mie phase function.
|
||
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
|
||
|
||
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
|
||
vec3 rayleigh = rayleighPhase * rayleighColor;
|
||
vec3 mie = miePhase * mieColor;
|
||
|
||
vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity;
|
||
|
||
return vec4(color, opacity);
|
||
}
|
||
|
||
`;var TN=`/**
|
||
* Compute atmosphere scattering for the ground atmosphere and fog. This method
|
||
* uses automatic uniforms so it is always synced with the scene settings.
|
||
*
|
||
* @name czm_computeGroundAtmosphereScattering
|
||
* @glslfunction
|
||
*
|
||
* @param {vec3} positionWC The position of the fragment in world coordinates.
|
||
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
|
||
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
|
||
* @param {vec3} mieColor The variable the Mie scattering will be written to.
|
||
* @param {float} opacity The variable the transmittance will be written to.
|
||
*/
|
||
void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) {
|
||
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
|
||
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
|
||
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
|
||
|
||
float atmosphereInnerRadius = length(positionWC);
|
||
|
||
czm_computeScattering(
|
||
primaryRay,
|
||
length(cameraToPositionWC),
|
||
lightDirection,
|
||
atmosphereInnerRadius,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
}
|
||
`;var SN=`/**
|
||
* Returns a position in model coordinates relative to eye taking into
|
||
* account the current scene mode: 3D, 2D, or Columbus view.
|
||
* <p>
|
||
* This uses standard position attributes, <code>position3DHigh</code>,
|
||
* <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>,
|
||
* and should be used when writing a vertex shader for an {@link Appearance}.
|
||
* </p>
|
||
*
|
||
* @name czm_computePosition
|
||
* @glslFunction
|
||
*
|
||
* @returns {vec4} The position relative to eye.
|
||
*
|
||
* @example
|
||
* vec4 p = czm_computePosition();
|
||
* v_positionEC = (czm_modelViewRelativeToEye * p).xyz;
|
||
* gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
*
|
||
* @see czm_translateRelativeToEye
|
||
*/
|
||
vec4 czm_computePosition();
|
||
`;var wN=`/**
|
||
* This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as
|
||
* the transmittance value for the ray. This function uses automatic uniforms
|
||
* so the atmosphere settings are always synced with the current scene.
|
||
*
|
||
* @name czm_computeScattering
|
||
* @glslfunction
|
||
*
|
||
* @param {czm_ray} primaryRay The ray from the camera to the position.
|
||
* @param {float} primaryRayLength The length of the primary ray.
|
||
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
|
||
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
|
||
* @param {vec3} mieColor The variable the Mie scattering will be written to.
|
||
* @param {float} opacity The variable the transmittance will be written to.
|
||
*/
|
||
void czm_computeScattering(
|
||
czm_ray primaryRay,
|
||
float primaryRayLength,
|
||
vec3 lightDirection,
|
||
float atmosphereInnerRadius,
|
||
out vec3 rayleighColor,
|
||
out vec3 mieColor,
|
||
out float opacity
|
||
) {
|
||
const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters.
|
||
const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled.
|
||
const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
|
||
|
||
// Initialize the default scattering amounts to 0.
|
||
rayleighColor = vec3(0.0);
|
||
mieColor = vec3(0.0);
|
||
opacity = 0.0;
|
||
|
||
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
|
||
|
||
vec3 origin = vec3(0.0);
|
||
|
||
// Calculate intersection from the camera to the outer ring of the atmosphere.
|
||
czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius);
|
||
|
||
// Return empty colors if no intersection with the atmosphere geometry.
|
||
if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) {
|
||
return;
|
||
}
|
||
|
||
// To deal with smaller values of PRIMARY_STEPS (e.g. 4)
|
||
// we implement a split strategy: sky or horizon.
|
||
// For performance reasons, instead of a if/else branch
|
||
// a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0
|
||
float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength);
|
||
// Value close to 0.0: close to the horizon
|
||
// Value close to 1.0: above in the sky
|
||
float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x));
|
||
|
||
// The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere.
|
||
float start_0 = primaryRayAtmosphereIntersect.start;
|
||
primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0);
|
||
// The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller.
|
||
primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength));
|
||
|
||
// For the number of ray steps, distinguish inside or outside atmosphere (outer space)
|
||
// (1) from outer space we have to use more ray steps to get a realistic rendering
|
||
// (2) within atmosphere we need fewer steps for faster rendering
|
||
float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters
|
||
float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a));
|
||
int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled.
|
||
int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
|
||
|
||
// Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere.
|
||
float rayPositionLength = primaryRayAtmosphereIntersect.start;
|
||
// (1) Outside the atmosphere: constant rayStepLength
|
||
// (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps
|
||
float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength;
|
||
float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0));
|
||
float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS));
|
||
|
||
vec3 rayleighAccumulation = vec3(0.0);
|
||
vec3 mieAccumulation = vec3(0.0);
|
||
vec2 opticalDepth = vec2(0.0);
|
||
vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight);
|
||
|
||
// Sample positions on the primary ray.
|
||
for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) {
|
||
|
||
// The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to break early instead
|
||
if (i >= PRIMARY_STEPS) {
|
||
break;
|
||
}
|
||
|
||
// Calculate sample position along viewpoint ray.
|
||
vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength);
|
||
|
||
// Calculate height of sample position above ellipsoid.
|
||
float sampleHeight = length(samplePosition) - atmosphereInnerRadius;
|
||
|
||
// Calculate and accumulate density of particles at the sample position.
|
||
vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength;
|
||
opticalDepth += sampleDensity;
|
||
|
||
// Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere.
|
||
czm_ray lightRay = czm_ray(samplePosition, lightDirection);
|
||
czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius);
|
||
|
||
float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS);
|
||
float lightPositionLength = 0.0;
|
||
|
||
vec2 lightOpticalDepth = vec2(0.0);
|
||
|
||
// Sample positions along the light ray, to accumulate incidence of light on the latest sample segment.
|
||
for (int j = 0; j < LIGHT_STEPS_MAX; ++j) {
|
||
|
||
// The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to break early instead
|
||
if (j >= LIGHT_STEPS) {
|
||
break;
|
||
}
|
||
|
||
// Calculate sample position along light ray.
|
||
vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5);
|
||
|
||
// Calculate height of the light sample position above ellipsoid.
|
||
float lightHeight = length(lightPosition) - atmosphereInnerRadius;
|
||
|
||
// Calculate density of photons at the light sample position.
|
||
lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength;
|
||
|
||
// Increment distance on light ray.
|
||
lightPositionLength += lightStepLength;
|
||
}
|
||
|
||
// Compute attenuation via the primary ray and the light ray.
|
||
vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x))));
|
||
|
||
// Accumulate the scattering.
|
||
rayleighAccumulation += sampleDensity.x * attenuation;
|
||
mieAccumulation += sampleDensity.y * attenuation;
|
||
|
||
// Increment distance on primary ray.
|
||
rayPositionLength += (rayStepLength += rayStepLengthIncrease);
|
||
}
|
||
|
||
// Compute the scattering amount.
|
||
rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation;
|
||
mieColor = czm_atmosphereMieCoefficient * mieAccumulation;
|
||
|
||
// Compute the transmittance i.e. how much light is passing through the atmosphere.
|
||
opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x))));
|
||
}
|
||
`;var BN=`/**
|
||
* @private
|
||
*/
|
||
vec2 cordic(float angle)
|
||
{
|
||
// Scale the vector by the appropriate factor for the 24 iterations to follow.
|
||
vec2 vector = vec2(6.0725293500888267e-1, 0.0);
|
||
// Iteration 1
|
||
float sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
// float factor = sense * 1.0; // 2^-0
|
||
mat2 rotation = mat2(1.0, sense, -sense, 1.0);
|
||
vector = rotation * vector;
|
||
angle -= sense * 7.8539816339744828e-1; // atan(2^-0)
|
||
// Iteration 2
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
float factor = sense * 5.0e-1; // 2^-1
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 4.6364760900080609e-1; // atan(2^-1)
|
||
// Iteration 3
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 2.5e-1; // 2^-2
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 2.4497866312686414e-1; // atan(2^-2)
|
||
// Iteration 4
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.25e-1; // 2^-3
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.2435499454676144e-1; // atan(2^-3)
|
||
// Iteration 5
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 6.25e-2; // 2^-4
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 6.2418809995957350e-2; // atan(2^-4)
|
||
// Iteration 6
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 3.125e-2; // 2^-5
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 3.1239833430268277e-2; // atan(2^-5)
|
||
// Iteration 7
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.5625e-2; // 2^-6
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.5623728620476831e-2; // atan(2^-6)
|
||
// Iteration 8
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 7.8125e-3; // 2^-7
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 7.8123410601011111e-3; // atan(2^-7)
|
||
// Iteration 9
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 3.90625e-3; // 2^-8
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 3.9062301319669718e-3; // atan(2^-8)
|
||
// Iteration 10
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.953125e-3; // 2^-9
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.9531225164788188e-3; // atan(2^-9)
|
||
// Iteration 11
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 9.765625e-4; // 2^-10
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 9.7656218955931946e-4; // atan(2^-10)
|
||
// Iteration 12
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 4.8828125e-4; // 2^-11
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 4.8828121119489829e-4; // atan(2^-11)
|
||
// Iteration 13
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 2.44140625e-4; // 2^-12
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 2.4414062014936177e-4; // atan(2^-12)
|
||
// Iteration 14
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.220703125e-4; // 2^-13
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.2207031189367021e-4; // atan(2^-13)
|
||
// Iteration 15
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 6.103515625e-5; // 2^-14
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 6.1035156174208773e-5; // atan(2^-14)
|
||
// Iteration 16
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 3.0517578125e-5; // 2^-15
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 3.0517578115526096e-5; // atan(2^-15)
|
||
// Iteration 17
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.52587890625e-5; // 2^-16
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.5258789061315762e-5; // atan(2^-16)
|
||
// Iteration 18
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 7.62939453125e-6; // 2^-17
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 7.6293945311019700e-6; // atan(2^-17)
|
||
// Iteration 19
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 3.814697265625e-6; // 2^-18
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 3.8146972656064961e-6; // atan(2^-18)
|
||
// Iteration 20
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.9073486328125e-6; // 2^-19
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 1.9073486328101870e-6; // atan(2^-19)
|
||
// Iteration 21
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 9.5367431640625e-7; // 2^-20
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 9.5367431640596084e-7; // atan(2^-20)
|
||
// Iteration 22
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 4.76837158203125e-7; // 2^-21
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 4.7683715820308884e-7; // atan(2^-21)
|
||
// Iteration 23
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 2.384185791015625e-7; // 2^-22
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
angle -= sense * 2.3841857910155797e-7; // atan(2^-22)
|
||
// Iteration 24
|
||
sense = (angle < 0.0) ? -1.0 : 1.0;
|
||
factor = sense * 1.1920928955078125e-7; // 2^-23
|
||
rotation[0][1] = factor;
|
||
rotation[1][0] = -factor;
|
||
vector = rotation * vector;
|
||
// angle -= sense * 1.1920928955078068e-7; // atan(2^-23)
|
||
|
||
return vector;
|
||
}
|
||
|
||
/**
|
||
* Computes the cosine and sine of the provided angle using the CORDIC algorithm.
|
||
*
|
||
* @name czm_cosineAndSine
|
||
* @glslFunction
|
||
*
|
||
* @param {float} angle The angle in radians.
|
||
*
|
||
* @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate).
|
||
*
|
||
* @example
|
||
* vec2 v = czm_cosineAndSine(czm_piOverSix);
|
||
* float cosine = v.x;
|
||
* float sine = v.y;
|
||
*/
|
||
vec2 czm_cosineAndSine(float angle)
|
||
{
|
||
if (angle < -czm_piOverTwo || angle > czm_piOverTwo)
|
||
{
|
||
if (angle < 0.0)
|
||
{
|
||
return -cordic(angle + czm_pi);
|
||
}
|
||
else
|
||
{
|
||
return -cordic(angle - czm_pi);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return cordic(angle);
|
||
}
|
||
}
|
||
`;var DN=`/**
|
||
* Decompresses texture coordinates that were packed into a single float.
|
||
*
|
||
* @name czm_decompressTextureCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {float} encoded The compressed texture coordinates.
|
||
* @returns {vec2} The decompressed texture coordinates.
|
||
*/
|
||
vec2 czm_decompressTextureCoordinates(float encoded)
|
||
{
|
||
float temp = encoded / 4096.0;
|
||
float xZeroTo4095 = floor(temp);
|
||
float stx = xZeroTo4095 / 4095.0;
|
||
float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0;
|
||
return vec2(stx, sty);
|
||
}
|
||
`;var vN=`// emulated noperspective
|
||
#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH)
|
||
out float v_WindowZ;
|
||
#endif
|
||
|
||
/**
|
||
* Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2.
|
||
* GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes,
|
||
* capping the shadow volume. More information here:
|
||
* https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt.
|
||
*
|
||
* When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring
|
||
* no geometry gets clipped by setting the clip space z value to 0.0 and then
|
||
* sending the unaltered screen space z value (using emulated noperspective
|
||
* interpolation) to the frag shader where it is clamped to [0,1] and then
|
||
* written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on:
|
||
* https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv.
|
||
*
|
||
* When GL_EXT_frag_depth is not available, which is the case on some mobile
|
||
* devices, we must attempt to fix this only in the vertex shader.
|
||
* The approach is to clamp the z value to the far plane, which closes the
|
||
* shadow volume but also distorts the geometry, so there can still be artifacts
|
||
* on frustum seams.
|
||
*
|
||
* @name czm_depthClamp
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} coords The vertex in clip coordinates.
|
||
* @returns {vec4} The modified vertex.
|
||
*
|
||
* @example
|
||
* gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0));
|
||
*
|
||
* @see czm_writeDepthClamp
|
||
*/
|
||
vec4 czm_depthClamp(vec4 coords)
|
||
{
|
||
#ifndef LOG_DEPTH
|
||
#if __VERSION__ == 300 || defined(GL_EXT_frag_depth)
|
||
v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w;
|
||
coords.z = 0.0;
|
||
#else
|
||
coords.z = min(coords.z, coords.w);
|
||
#endif
|
||
#endif
|
||
return coords;
|
||
}
|
||
`;var PN=`/**
|
||
* Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system
|
||
* to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the
|
||
* surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping.
|
||
* <br /><br />
|
||
* The ellipsoid is assumed to be centered at the model coordinate's origin.
|
||
*
|
||
* @name czm_eastNorthUpToEyeCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} positionMC The position on the ellipsoid in model coordinates.
|
||
* @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates.
|
||
*
|
||
* @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates.
|
||
*
|
||
* @example
|
||
* // Transform a vector defined in the east-north-up coordinate
|
||
* // system, (0, 0, 1) which is the surface normal, to eye
|
||
* // coordinates.
|
||
* mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);
|
||
* vec3 normalEC = m * vec3(0.0, 0.0, 1.0);
|
||
*/
|
||
mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC)
|
||
{
|
||
vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates
|
||
vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates
|
||
vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates
|
||
|
||
return mat3(
|
||
tangentEC.x, tangentEC.y, tangentEC.z,
|
||
bitangentEC.x, bitangentEC.y, bitangentEC.z,
|
||
normalEC.x, normalEC.y, normalEC.z);
|
||
}
|
||
`;var RN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_ellipsoidContainsPoint
|
||
* @glslFunction
|
||
*
|
||
*/
|
||
bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point)
|
||
{
|
||
vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz;
|
||
return (dot(scaled, scaled) <= 1.0);
|
||
}
|
||
`;var MN=`/**
|
||
* Approximate uv coordinates based on the ellipsoid normal.
|
||
*
|
||
* @name czm_ellipsoidTextureCoordinates
|
||
* @glslFunction
|
||
*/
|
||
vec2 czm_ellipsoidTextureCoordinates(vec3 normal)
|
||
{
|
||
return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5);
|
||
}
|
||
`;var NN=`/**
|
||
* Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code>
|
||
* if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs
|
||
* <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s,
|
||
* <code>vec3</code>s, or <code>vec4</code>s.
|
||
*
|
||
* @name czm_equalsEpsilon
|
||
* @glslFunction
|
||
*
|
||
* @param {} left The first vector.
|
||
* @param {} right The second vector.
|
||
* @param {float} epsilon The epsilon to use for equality testing.
|
||
* @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise.
|
||
*
|
||
* @example
|
||
* // GLSL declarations
|
||
* bool czm_equalsEpsilon(float left, float right, float epsilon);
|
||
* bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon);
|
||
* bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon);
|
||
* bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon);
|
||
*/
|
||
bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) {
|
||
return all(lessThanEqual(abs(left - right), vec4(epsilon)));
|
||
}
|
||
|
||
bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) {
|
||
return all(lessThanEqual(abs(left - right), vec3(epsilon)));
|
||
}
|
||
|
||
bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) {
|
||
return all(lessThanEqual(abs(left - right), vec2(epsilon)));
|
||
}
|
||
|
||
bool czm_equalsEpsilon(float left, float right, float epsilon) {
|
||
return (abs(left - right) <= epsilon);
|
||
}
|
||
`;var LN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_eyeOffset
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} positionEC DOC_TBA.
|
||
* @param {vec3} eyeOffset DOC_TBA.
|
||
*
|
||
* @returns {vec4} DOC_TBA.
|
||
*/
|
||
vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset)
|
||
{
|
||
// This equation is approximate in x and y.
|
||
vec4 p = positionEC;
|
||
vec4 zEyeOffset = normalize(p) * eyeOffset.z;
|
||
p.xy += eyeOffset.xy + zEyeOffset.xy;
|
||
p.z += zEyeOffset.z;
|
||
return p;
|
||
}
|
||
`;var ON=`/**
|
||
* Transforms a position from eye to window coordinates. The transformation
|
||
* from eye to clip coordinates is done using {@link czm_projection}.
|
||
* The transform from normalized device coordinates to window coordinates is
|
||
* done using {@link czm_viewportTransformation}, which assumes a depth range
|
||
* of <code>near = 0</code> and <code>far = 1</code>.
|
||
* <br /><br />
|
||
* This transform is useful when there is a need to manipulate window coordinates
|
||
* in a vertex shader as done by {@link BillboardCollection}.
|
||
*
|
||
* @name czm_eyeToWindowCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} position The position in eye coordinates to transform.
|
||
*
|
||
* @returns {vec4} The transformed position in window coordinates.
|
||
*
|
||
* @see czm_modelToWindowCoordinates
|
||
* @see czm_projection
|
||
* @see czm_viewportTransformation
|
||
* @see BillboardCollection
|
||
*
|
||
* @example
|
||
* vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
|
||
*/
|
||
vec4 czm_eyeToWindowCoordinates(vec4 positionEC)
|
||
{
|
||
vec4 q = czm_projection * positionEC; // clip coordinates
|
||
q.xyz /= q.w; // normalized device coordinates
|
||
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates
|
||
return q;
|
||
}
|
||
`;var FN=`/**
|
||
* Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input.
|
||
*
|
||
* Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on
|
||
* "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.
|
||
* Adapted from ShaderFastLibs under MIT License.
|
||
*
|
||
* Chosen for the following characteristics over range [0, 1]:
|
||
* - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan)
|
||
* - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator)
|
||
*
|
||
* The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301);
|
||
* Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2.
|
||
*
|
||
* @name czm_fastApproximateAtan
|
||
* @glslFunction
|
||
*
|
||
* @param {float} x Value between 0 and 1 inclusive.
|
||
*
|
||
* @returns {float} Approximation of atan(x)
|
||
*/
|
||
float czm_fastApproximateAtan(float x) {
|
||
return x * (-0.1784 * x - 0.0663 * x * x + 1.0301);
|
||
}
|
||
|
||
/**
|
||
* Approximation of atan2.
|
||
*
|
||
* Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html
|
||
* However, we replaced their atan curve with Michael Drobot's (see above).
|
||
*
|
||
* @name czm_fastApproximateAtan
|
||
* @glslFunction
|
||
*
|
||
* @param {float} x Value between -1 and 1 inclusive.
|
||
* @param {float} y Value between -1 and 1 inclusive.
|
||
*
|
||
* @returns {float} Approximation of atan2(x, y)
|
||
*/
|
||
float czm_fastApproximateAtan(float x, float y) {
|
||
// atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications.
|
||
// So range-reduce using abs and by flipping whether x or y is on top.
|
||
float t = abs(x); // t used as swap and atan result.
|
||
float opposite = abs(y);
|
||
float adjacent = max(t, opposite);
|
||
opposite = min(t, opposite);
|
||
|
||
t = czm_fastApproximateAtan(opposite / adjacent);
|
||
|
||
// Undo range reduction
|
||
t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t);
|
||
t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t);
|
||
t = czm_branchFreeTernary(y < 0.0, -t, t);
|
||
return t;
|
||
}
|
||
`;var QN=`/**
|
||
* Gets the color with fog at a distance from the camera.
|
||
*
|
||
* @name czm_fog
|
||
* @glslFunction
|
||
*
|
||
* @param {float} distanceToCamera The distance to the camera in meters.
|
||
* @param {vec3} color The original color.
|
||
* @param {vec3} fogColor The color of the fog.
|
||
*
|
||
* @returns {vec3} The color adjusted for fog at the distance from the camera.
|
||
*/
|
||
vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor)
|
||
{
|
||
float scalar = distanceToCamera * czm_fogDensity;
|
||
float fog = 1.0 - exp(-(scalar * scalar));
|
||
return mix(color, fogColor, fog);
|
||
}
|
||
|
||
/**
|
||
* Gets the color with fog at a distance from the camera.
|
||
*
|
||
* @name czm_fog
|
||
* @glslFunction
|
||
*
|
||
* @param {float} distanceToCamera The distance to the camera in meters.
|
||
* @param {vec3} color The original color.
|
||
* @param {vec3} fogColor The color of the fog.
|
||
* @param {float} fogModifierConstant A constant to modify the appearance of fog.
|
||
*
|
||
* @returns {vec3} The color adjusted for fog at the distance from the camera.
|
||
*/
|
||
vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant)
|
||
{
|
||
float scalar = distanceToCamera * czm_fogDensity;
|
||
float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant))));
|
||
return mix(color, fogColor, fog);
|
||
}
|
||
`;var kN=`/**
|
||
* Converts a color from RGB space to linear space.
|
||
*
|
||
* @name czm_gammaCorrect
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} color The color in RGB space.
|
||
* @returns {vec3} The color in linear space.
|
||
*/
|
||
vec3 czm_gammaCorrect(vec3 color) {
|
||
#ifdef HDR
|
||
color = pow(color, vec3(czm_gamma));
|
||
#endif
|
||
return color;
|
||
}
|
||
|
||
vec4 czm_gammaCorrect(vec4 color) {
|
||
#ifdef HDR
|
||
color.rgb = pow(color.rgb, vec3(czm_gamma));
|
||
#endif
|
||
return color;
|
||
}
|
||
`;var UN=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_geodeticSurfaceNormal
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} positionOnEllipsoid DOC_TBA
|
||
* @param {vec3} ellipsoidCenter DOC_TBA
|
||
* @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA
|
||
*
|
||
* @returns {vec3} DOC_TBA.
|
||
*/
|
||
vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared)
|
||
{
|
||
return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared);
|
||
}
|
||
`;var GN=`/**
|
||
* An czm_material with default values. Every material's czm_getMaterial
|
||
* should use this default material as a base for the material it returns.
|
||
* The default normal value is given by materialInput.normalEC.
|
||
*
|
||
* @name czm_getDefaultMaterial
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_materialInput} input The input used to construct the default material.
|
||
*
|
||
* @returns {czm_material} The default material.
|
||
*
|
||
* @see czm_materialInput
|
||
* @see czm_material
|
||
* @see czm_getMaterial
|
||
*/
|
||
czm_material czm_getDefaultMaterial(czm_materialInput materialInput)
|
||
{
|
||
czm_material material;
|
||
material.diffuse = vec3(0.0);
|
||
material.specular = 0.0;
|
||
material.shininess = 1.0;
|
||
material.normal = materialInput.normalEC;
|
||
material.emission = vec3(0.0);
|
||
material.alpha = 1.0;
|
||
return material;
|
||
}
|
||
`;var zN=`/**
|
||
* Select which direction vector to use for dynamic atmosphere lighting based on an enum value
|
||
*
|
||
* @name czm_getDynamicAtmosphereLightDirection
|
||
* @glslfunction
|
||
* @see DynamicAtmosphereLightingType.js
|
||
*
|
||
* @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off.
|
||
* @param {float} lightEnum The enum value for selecting between light sources.
|
||
* @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC
|
||
*/
|
||
vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) {
|
||
const float NONE = 0.0;
|
||
const float SCENE_LIGHT = 1.0;
|
||
const float SUNLIGHT = 2.0;
|
||
|
||
vec3 lightDirection =
|
||
positionWC * float(lightEnum == NONE) +
|
||
czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) +
|
||
czm_sunDirectionWC * float(lightEnum == SUNLIGHT);
|
||
return normalize(lightDirection);
|
||
}
|
||
`;var VN=`/**
|
||
* Calculates the intensity of diffusely reflected light.
|
||
*
|
||
* @name czm_getLambertDiffuse
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
|
||
* @param {vec3} normalEC The surface normal in eye coordinates.
|
||
*
|
||
* @returns {float} The intensity of the diffuse reflection.
|
||
*
|
||
* @see czm_phong
|
||
*
|
||
* @example
|
||
* float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC);
|
||
* float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200);
|
||
* vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity);
|
||
*/
|
||
float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC)
|
||
{
|
||
return max(dot(lightDirectionEC, normalEC), 0.0);
|
||
}
|
||
`;var HN=`/**
|
||
* Calculates the specular intensity of reflected light.
|
||
*
|
||
* @name czm_getSpecular
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
|
||
* @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates.
|
||
* @param {vec3} normalEC The surface normal in eye coordinates.
|
||
* @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight.
|
||
*
|
||
* @returns {float} The intensity of the specular highlight.
|
||
*
|
||
* @see czm_phong
|
||
*
|
||
* @example
|
||
* float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC);
|
||
* float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200);
|
||
* vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity);
|
||
*/
|
||
float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess)
|
||
{
|
||
vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC);
|
||
float specular = max(dot(toReflectedLight, toEyeEC), 0.0);
|
||
|
||
// pow has undefined behavior if both parameters <= 0.
|
||
// Prevent this by making sure shininess is at least czm_epsilon2.
|
||
return pow(specular, max(shininess, czm_epsilon2));
|
||
}
|
||
`;var WN=`/**
|
||
* @private
|
||
*/
|
||
vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians)
|
||
{
|
||
float cosAngle = cos(angleInRadians);
|
||
float sinAngle = sin(angleInRadians);
|
||
|
||
// time dependent sampling directions
|
||
vec2 s0 = vec2(1.0/17.0, 0.0);
|
||
vec2 s1 = vec2(-1.0/29.0, 0.0);
|
||
vec2 s2 = vec2(1.0/101.0, 1.0/59.0);
|
||
vec2 s3 = vec2(-1.0/109.0, -1.0/57.0);
|
||
|
||
// rotate sampling direction by specified angle
|
||
s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y));
|
||
s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y));
|
||
s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y));
|
||
s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y));
|
||
|
||
vec2 uv0 = (uv/103.0) + (time * s0);
|
||
vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23);
|
||
vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51);
|
||
vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71);
|
||
|
||
uv0 = fract(uv0);
|
||
uv1 = fract(uv1);
|
||
uv2 = fract(uv2);
|
||
uv3 = fract(uv3);
|
||
vec4 noise = (texture(normalMap, uv0)) +
|
||
(texture(normalMap, uv1)) +
|
||
(texture(normalMap, uv2)) +
|
||
(texture(normalMap, uv3));
|
||
|
||
// average and scale to between -1 and 1
|
||
return ((noise / 4.0) - 0.5) * 2.0;
|
||
}
|
||
`;var jN=`/**
|
||
* Adjusts the hue of a color.
|
||
*
|
||
* @name czm_hue
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color.
|
||
* @param {float} adjustment The amount to adjust the hue of the color in radians.
|
||
*
|
||
* @returns {float} The color with the hue adjusted.
|
||
*
|
||
* @example
|
||
* vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi)
|
||
*/
|
||
vec3 czm_hue(vec3 rgb, float adjustment)
|
||
{
|
||
const mat3 toYIQ = mat3(0.299, 0.587, 0.114,
|
||
0.595716, -0.274453, -0.321263,
|
||
0.211456, -0.522591, 0.311135);
|
||
const mat3 toRGB = mat3(1.0, 0.9563, 0.6210,
|
||
1.0, -0.2721, -0.6474,
|
||
1.0, -1.107, 1.7046);
|
||
|
||
vec3 yiq = toYIQ * rgb;
|
||
float hue = atan(yiq.z, yiq.y) + adjustment;
|
||
float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y);
|
||
|
||
vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue));
|
||
return toRGB * color;
|
||
}
|
||
`;var YN=`/**
|
||
* Converts a color in linear space to RGB space.
|
||
*
|
||
* @name czm_inverseGamma
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} color The color in linear space.
|
||
* @returns {vec3} The color in RGB space.
|
||
*/
|
||
vec3 czm_inverseGamma(vec3 color) {
|
||
return pow(color, vec3(1.0 / czm_gamma));
|
||
}
|
||
`;var qN=`/**
|
||
* Determines if a time interval is empty.
|
||
*
|
||
* @name czm_isEmpty
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_raySegment} interval The interval to test.
|
||
*
|
||
* @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>.
|
||
*
|
||
* @example
|
||
* bool b0 = czm_isEmpty(czm_emptyRaySegment); // true
|
||
* bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false
|
||
* bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0.
|
||
*/
|
||
bool czm_isEmpty(czm_raySegment interval)
|
||
{
|
||
return (interval.stop < 0.0);
|
||
}
|
||
`;var KN=`/**
|
||
* Determines if a time interval is empty.
|
||
*
|
||
* @name czm_isFull
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_raySegment} interval The interval to test.
|
||
*
|
||
* @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>.
|
||
*
|
||
* @example
|
||
* bool b0 = czm_isEmpty(czm_emptyRaySegment); // true
|
||
* bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false
|
||
* bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0.
|
||
*/
|
||
bool czm_isFull(czm_raySegment interval)
|
||
{
|
||
return (interval.start == 0.0 && interval.stop == czm_infinity);
|
||
}
|
||
`;var XN=`/**
|
||
* Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located.
|
||
*
|
||
* @name czm_latitudeToWebMercatorFraction
|
||
* @glslFunction
|
||
*
|
||
* @param {float} latitude The geodetic latitude, in radians.
|
||
* @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle.
|
||
* @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates.
|
||
*
|
||
* @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern
|
||
* boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return
|
||
* value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection.
|
||
*/
|
||
float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight)
|
||
{
|
||
float sinLatitude = sin(latitude);
|
||
float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude));
|
||
|
||
return (mercatorY - southMercatorY) * oneOverMercatorHeight;
|
||
}
|
||
`;var JN=`/**
|
||
* Computes distance from an point in 2D to a line in 2D.
|
||
*
|
||
* @name czm_lineDistance
|
||
* @glslFunction
|
||
*
|
||
* param {vec2} point1 A point along the line.
|
||
* param {vec2} point2 A point along the line.
|
||
* param {vec2} point A point that may or may not be on the line.
|
||
* returns {float} The distance from the point to the line.
|
||
*/
|
||
float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) {
|
||
return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1);
|
||
}
|
||
`;var ZN=`/**
|
||
* Converts a linear RGB color to an sRGB color.
|
||
*
|
||
* @param {vec3|vec4} linearIn The color in linear color space.
|
||
* @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input.
|
||
*/
|
||
vec3 czm_linearToSrgb(vec3 linearIn)
|
||
{
|
||
return pow(linearIn, vec3(1.0/2.2));
|
||
}
|
||
|
||
vec4 czm_linearToSrgb(vec4 linearIn)
|
||
{
|
||
vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2));
|
||
return vec4(srgbOut, linearIn.a);
|
||
}
|
||
`;var $N=`/**
|
||
* Computes the luminance of a color.
|
||
*
|
||
* @name czm_luminance
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color.
|
||
*
|
||
* @returns {float} The luminance.
|
||
*
|
||
* @example
|
||
* float light = czm_luminance(vec3(0.0)); // 0.0
|
||
* float dark = czm_luminance(vec3(1.0)); // ~1.0
|
||
*/
|
||
float czm_luminance(vec3 rgb)
|
||
{
|
||
// Algorithm from Chapter 10 of Graphics Shaders.
|
||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||
return dot(rgb, W);
|
||
}
|
||
`;var eL=`/**
|
||
* Find the maximum component of a vector.
|
||
*
|
||
* @name czm_maximumComponent
|
||
* @glslFunction
|
||
*
|
||
* @param {vec2|vec3|vec4} v The input vector.
|
||
* @returns {float} The value of the largest component.
|
||
*/
|
||
float czm_maximumComponent(vec2 v)
|
||
{
|
||
return max(v.x, v.y);
|
||
}
|
||
float czm_maximumComponent(vec3 v)
|
||
{
|
||
return max(max(v.x, v.y), v.z);
|
||
}
|
||
float czm_maximumComponent(vec4 v)
|
||
{
|
||
return max(max(max(v.x, v.y), v.z), v.w);
|
||
}
|
||
`;var tL=`/**
|
||
* Computes the size of a pixel in meters at a distance from the eye.
|
||
* <p>
|
||
* Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel.
|
||
* </p>
|
||
* @name czm_metersPerPixel
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} positionEC The position to get the meters per pixel in eye coordinates.
|
||
* @param {float} pixelRatio The scaling factor from pixel space to coordinate space
|
||
*
|
||
* @returns {float} The meters per pixel at positionEC.
|
||
*/
|
||
float czm_metersPerPixel(vec4 positionEC, float pixelRatio)
|
||
{
|
||
float width = czm_viewport.z;
|
||
float height = czm_viewport.w;
|
||
float pixelWidth;
|
||
float pixelHeight;
|
||
|
||
float top = czm_frustumPlanes.x;
|
||
float bottom = czm_frustumPlanes.y;
|
||
float left = czm_frustumPlanes.z;
|
||
float right = czm_frustumPlanes.w;
|
||
|
||
if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0)
|
||
{
|
||
float frustumWidth = right - left;
|
||
float frustumHeight = top - bottom;
|
||
pixelWidth = frustumWidth / width;
|
||
pixelHeight = frustumHeight / height;
|
||
}
|
||
else
|
||
{
|
||
float distanceToPixel = -positionEC.z;
|
||
float inverseNear = 1.0 / czm_currentFrustum.x;
|
||
float tanTheta = top * inverseNear;
|
||
pixelHeight = 2.0 * distanceToPixel * tanTheta / height;
|
||
tanTheta = right * inverseNear;
|
||
pixelWidth = 2.0 * distanceToPixel * tanTheta / width;
|
||
}
|
||
|
||
return max(pixelWidth, pixelHeight) * pixelRatio;
|
||
}
|
||
|
||
/**
|
||
* Computes the size of a pixel in meters at a distance from the eye.
|
||
* <p>
|
||
* Use this version when scaling by pixel ratio.
|
||
* </p>
|
||
* @name czm_metersPerPixel
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} positionEC The position to get the meters per pixel in eye coordinates.
|
||
*
|
||
* @returns {float} The meters per pixel at positionEC.
|
||
*/
|
||
float czm_metersPerPixel(vec4 positionEC)
|
||
{
|
||
return czm_metersPerPixel(positionEC, czm_pixelRatio);
|
||
}
|
||
`;var nL=`/**
|
||
* Transforms a position from model to window coordinates. The transformation
|
||
* from model to clip coordinates is done using {@link czm_modelViewProjection}.
|
||
* The transform from normalized device coordinates to window coordinates is
|
||
* done using {@link czm_viewportTransformation}, which assumes a depth range
|
||
* of <code>near = 0</code> and <code>far = 1</code>.
|
||
* <br /><br />
|
||
* This transform is useful when there is a need to manipulate window coordinates
|
||
* in a vertex shader as done by {@link BillboardCollection}.
|
||
* <br /><br />
|
||
* This function should not be confused with {@link czm_viewportOrthographic},
|
||
* which is an orthographic projection matrix that transforms from window
|
||
* coordinates to clip coordinates.
|
||
*
|
||
* @name czm_modelToWindowCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} position The position in model coordinates to transform.
|
||
*
|
||
* @returns {vec4} The transformed position in window coordinates.
|
||
*
|
||
* @see czm_eyeToWindowCoordinates
|
||
* @see czm_modelViewProjection
|
||
* @see czm_viewportTransformation
|
||
* @see czm_viewportOrthographic
|
||
* @see BillboardCollection
|
||
*
|
||
* @example
|
||
* vec4 positionWC = czm_modelToWindowCoordinates(positionMC);
|
||
*/
|
||
vec4 czm_modelToWindowCoordinates(vec4 position)
|
||
{
|
||
vec4 positionEC = czm_modelView * position;
|
||
vec4 q = czm_projection * positionEC;
|
||
q.xyz /= q.w; // normalized device coordinates
|
||
q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates
|
||
return q;
|
||
}
|
||
`;var iL=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_multiplyWithColorBalance
|
||
* @glslFunction
|
||
*/
|
||
vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right)
|
||
{
|
||
// Algorithm from Chapter 10 of Graphics Shaders.
|
||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||
|
||
vec3 target = left * right;
|
||
float leftLuminance = dot(left, W);
|
||
float rightLuminance = dot(right, W);
|
||
float targetLuminance = dot(target, W);
|
||
|
||
return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target;
|
||
}
|
||
`;var oL=`/**
|
||
* Computes a value that scales with distance. The scaling is clamped at the near and
|
||
* far distances, and does not extrapolate. This function works with the
|
||
* {@link NearFarScalar} JavaScript class.
|
||
*
|
||
* @name czm_nearFarScalar
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w).
|
||
* @param {float} cameraDistSq The square of the current distance from the camera.
|
||
*
|
||
* @returns {float} The value at this distance.
|
||
*/
|
||
float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq)
|
||
{
|
||
float valueAtMin = nearFarScalar.y;
|
||
float valueAtMax = nearFarScalar.w;
|
||
float nearDistanceSq = nearFarScalar.x * nearFarScalar.x;
|
||
float farDistanceSq = nearFarScalar.z * nearFarScalar.z;
|
||
|
||
float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq);
|
||
|
||
t = pow(clamp(t, 0.0, 1.0), 0.2);
|
||
|
||
return mix(valueAtMin, valueAtMax, t);
|
||
}
|
||
`;var rL=` /**
|
||
* Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector.
|
||
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
|
||
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
|
||
*
|
||
* @name czm_octDecode
|
||
* @param {vec2} encoded The oct-encoded, unit-length vector
|
||
* @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits.
|
||
* @returns {vec3} The decoded and normalized vector
|
||
*/
|
||
vec3 czm_octDecode(vec2 encoded, float range)
|
||
{
|
||
if (encoded.x == 0.0 && encoded.y == 0.0) {
|
||
return vec3(0.0, 0.0, 0.0);
|
||
}
|
||
|
||
encoded = encoded / range * 2.0 - 1.0;
|
||
vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));
|
||
if (v.z < 0.0)
|
||
{
|
||
v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy);
|
||
}
|
||
|
||
return normalize(v);
|
||
}
|
||
|
||
/**
|
||
* Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector.
|
||
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
|
||
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
|
||
*
|
||
* @name czm_octDecode
|
||
* @param {vec2} encoded The oct-encoded, unit-length vector
|
||
* @returns {vec3} The decoded and normalized vector
|
||
*/
|
||
vec3 czm_octDecode(vec2 encoded)
|
||
{
|
||
return czm_octDecode(encoded, 255.0);
|
||
}
|
||
|
||
/**
|
||
* Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector.
|
||
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
|
||
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
|
||
*
|
||
* @name czm_octDecode
|
||
* @param {float} encoded The oct-encoded, unit-length vector
|
||
* @returns {vec3} The decoded and normalized vector
|
||
*/
|
||
vec3 czm_octDecode(float encoded)
|
||
{
|
||
float temp = encoded / 256.0;
|
||
float x = floor(temp);
|
||
float y = (temp - x) * 256.0;
|
||
return czm_octDecode(vec2(x, y));
|
||
}
|
||
|
||
/**
|
||
* Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors.
|
||
* The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors",
|
||
* Cigolle et al 2014: http://jcgt.org/published/0003/02/01/
|
||
*
|
||
* @name czm_octDecode
|
||
* @param {vec2} encoded The packed oct-encoded, unit-length vectors.
|
||
* @param {vec3} vector1 One decoded and normalized vector.
|
||
* @param {vec3} vector2 One decoded and normalized vector.
|
||
* @param {vec3} vector3 One decoded and normalized vector.
|
||
*/
|
||
void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3)
|
||
{
|
||
float temp = encoded.x / 65536.0;
|
||
float x = floor(temp);
|
||
float encodedFloat1 = (temp - x) * 65536.0;
|
||
|
||
temp = encoded.y / 65536.0;
|
||
float y = floor(temp);
|
||
float encodedFloat2 = (temp - y) * 65536.0;
|
||
|
||
vector1 = czm_octDecode(encodedFloat1);
|
||
vector2 = czm_octDecode(encodedFloat2);
|
||
vector3 = czm_octDecode(vec2(x, y));
|
||
}
|
||
|
||
`;var sL=`/**
|
||
* Packs a depth value into a vec4 that can be represented by unsigned bytes.
|
||
*
|
||
* @name czm_packDepth
|
||
* @glslFunction
|
||
*
|
||
* @param {float} depth The floating-point depth.
|
||
* @returns {vec4} The packed depth.
|
||
*/
|
||
vec4 czm_packDepth(float depth)
|
||
{
|
||
// See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA
|
||
// http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/
|
||
vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth;
|
||
enc = fract(enc);
|
||
enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
|
||
return enc;
|
||
}
|
||
`;var aL=`vec3 lambertianDiffuse(vec3 diffuseColor)
|
||
{
|
||
return diffuseColor / czm_pi;
|
||
}
|
||
|
||
vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH)
|
||
{
|
||
float versine = 1.0 - VdotH;
|
||
// pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269
|
||
float versineSquared = versine * versine;
|
||
return f0 + (f90 - f0) * versineSquared * versineSquared * versine;
|
||
}
|
||
|
||
#ifdef USE_ANISOTROPY
|
||
/**
|
||
* @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent)
|
||
* @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent)
|
||
* @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates
|
||
* @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates
|
||
*/
|
||
float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection)
|
||
{
|
||
vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0);
|
||
float GGXV = lightDirection.z * length(roughnessScale * viewDirection);
|
||
float GGXL = viewDirection.z * length(roughnessScale * lightDirection);
|
||
float v = 0.5 / (GGXV + GGXL);
|
||
return clamp(v, 0.0, 1.0);
|
||
}
|
||
|
||
/**
|
||
* @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent)
|
||
* @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent)
|
||
* @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates
|
||
*/
|
||
float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection)
|
||
{
|
||
float roughnessSquared = bitangentRoughness * tangentialRoughness;
|
||
vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared);
|
||
float w2 = roughnessSquared / dot(f, f);
|
||
return roughnessSquared * w2 * w2 / czm_pi;
|
||
}
|
||
#endif
|
||
|
||
/**
|
||
* Estimate the geometric self-shadowing of the microfacets in a surface,
|
||
* using the Smith Joint GGX visibility function.
|
||
* Note: Vis = G / (4 * NdotL * NdotV)
|
||
* see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3
|
||
* see Real-Time Rendering. Page 331 to 336.
|
||
* see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg)
|
||
*
|
||
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
|
||
* @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source.
|
||
* @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera.
|
||
*/
|
||
float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV)
|
||
{
|
||
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
|
||
|
||
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
|
||
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
|
||
|
||
float GGX = GGXV + GGXL;
|
||
if (GGX > 0.0)
|
||
{
|
||
return 0.5 / GGX;
|
||
}
|
||
return 0.0;
|
||
}
|
||
|
||
/**
|
||
* Estimate the fraction of the microfacets in a surface that are aligned with
|
||
* the halfway vector, which is aligned halfway between the directions from
|
||
* the fragment to the camera and from the fragment to the light source.
|
||
*
|
||
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
|
||
* @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector.
|
||
* @return {float} The fraction of microfacets aligned to the halfway vector.
|
||
*/
|
||
float GGX(float alphaRoughness, float NdotH)
|
||
{
|
||
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
|
||
float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0;
|
||
return alphaRoughnessSquared / (czm_pi * f * f);
|
||
}
|
||
|
||
/**
|
||
* Compute the strength of the specular reflection due to direct lighting.
|
||
*
|
||
* @param {vec3} normal The surface normal.
|
||
* @param {vec3} lightDirection The unit vector pointing from the fragment to the light source.
|
||
* @param {vec3} viewDirection The unit vector pointing from the fragment to the camera.
|
||
* @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera.
|
||
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
|
||
* @return {float} The strength of the specular reflection.
|
||
*/
|
||
float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness)
|
||
{
|
||
float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0);
|
||
float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0);
|
||
float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV);
|
||
float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0);
|
||
float D = GGX(alphaRoughness, NdotH);
|
||
return G * D;
|
||
}
|
||
|
||
/**
|
||
* Compute the diffuse and specular contributions using physically based
|
||
* rendering. This function only handles direct lighting.
|
||
* <p>
|
||
* This function only handles the lighting calculations. Metallic/roughness
|
||
* and specular/glossy must be handled separately. See {@MaterialStageFS}
|
||
* </p>
|
||
*
|
||
* @name czm_pbrLighting
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position
|
||
* @param {vec3} normalEC The surface normal in eye coordinates
|
||
* @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
|
||
* @param {czm_modelMaterial} The material properties.
|
||
* @return {vec3} The computed HDR color
|
||
*/
|
||
vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material)
|
||
{
|
||
vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC);
|
||
float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0);
|
||
float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0);
|
||
|
||
vec3 f0 = material.specular;
|
||
float reflectance = czm_maximumComponent(f0);
|
||
// Typical dielectrics will have reflectance 0.04, so f90 will be 1.0.
|
||
// In this case, at grazing angle, all incident energy is reflected.
|
||
vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0));
|
||
vec3 F = fresnelSchlick2(f0, f90, VdotH);
|
||
|
||
#if defined(USE_SPECULAR)
|
||
F *= material.specularWeight;
|
||
#endif
|
||
|
||
float alphaRoughness = material.roughness * material.roughness;
|
||
#ifdef USE_ANISOTROPY
|
||
mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC);
|
||
vec3 lightDirection = lightDirectionEC * tbn;
|
||
vec3 viewDirection = viewDirectionEC * tbn;
|
||
vec3 halfwayDirection = halfwayDirectionEC * tbn;
|
||
float anisotropyStrength = material.anisotropyStrength;
|
||
float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength);
|
||
float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0);
|
||
float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection);
|
||
float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection);
|
||
vec3 specularContribution = F * G * D;
|
||
#else
|
||
float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness);
|
||
vec3 specularContribution = F * specularStrength;
|
||
#endif
|
||
|
||
vec3 diffuseColor = material.diffuse;
|
||
// F here represents the specular contribution
|
||
vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor);
|
||
|
||
// Lo = (diffuse + specular) * Li * NdotL
|
||
return (diffuseContribution + specularContribution) * NdotL;
|
||
}
|
||
`;var cL=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral
|
||
|
||
// Input color is non-negative and resides in the Linear Rec. 709 color space.
|
||
// Output color is also Linear Rec. 709, but in the [0, 1] range.
|
||
|
||
vec3 czm_pbrNeutralTonemapping(vec3 color) {
|
||
const float startCompression = 0.8 - 0.04;
|
||
const float desaturation = 0.15;
|
||
|
||
float x = min(color.r, min(color.g, color.b));
|
||
float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04);
|
||
color -= offset;
|
||
|
||
float peak = max(color.r, max(color.g, color.b));
|
||
if (peak < startCompression) return color;
|
||
|
||
const float d = 1.0 - startCompression;
|
||
float newPeak = 1.0 - d * d / (peak + d - startCompression);
|
||
color *= newPeak / peak;
|
||
|
||
float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);
|
||
return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g);
|
||
}
|
||
`;var lL=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material)
|
||
{
|
||
return czm_getLambertDiffuse(lightDirectionEC, material.normal);
|
||
}
|
||
|
||
float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material)
|
||
{
|
||
return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess);
|
||
}
|
||
|
||
/**
|
||
* Computes a color using the Phong lighting model.
|
||
*
|
||
* @name czm_phong
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates.
|
||
* @param {czm_material} material The fragment's material.
|
||
*
|
||
* @returns {vec4} The computed color.
|
||
*
|
||
* @example
|
||
* vec3 positionToEyeEC = // ...
|
||
* czm_material material = // ...
|
||
* vec3 lightDirectionEC = // ...
|
||
* out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC);
|
||
*
|
||
* @see czm_getMaterial
|
||
*/
|
||
vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
|
||
{
|
||
// Diffuse from directional light sources at eye (for top-down)
|
||
float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material);
|
||
if (czm_sceneMode == czm_sceneMode3D) {
|
||
// (and horizon views in 3D)
|
||
diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material);
|
||
}
|
||
|
||
float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);
|
||
|
||
// Temporary workaround for adding ambient.
|
||
vec3 materialDiffuse = material.diffuse * 0.5;
|
||
|
||
vec3 ambient = materialDiffuse;
|
||
vec3 color = ambient + material.emission;
|
||
color += materialDiffuse * diffuse * czm_lightColor;
|
||
color += material.specular * specular * czm_lightColor;
|
||
|
||
return vec4(color, material.alpha);
|
||
}
|
||
|
||
vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
|
||
{
|
||
float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material);
|
||
float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material);
|
||
|
||
vec3 ambient = vec3(0.0);
|
||
vec3 color = ambient + material.emission;
|
||
color += material.diffuse * diffuse * czm_lightColor;
|
||
color += material.specular * specular * czm_lightColor;
|
||
|
||
return vec4(color, material.alpha);
|
||
}
|
||
`;var uL=`/**
|
||
* Computes distance from a point to a plane.
|
||
*
|
||
* @name czm_planeDistance
|
||
* @glslFunction
|
||
*
|
||
* param {vec4} plane A Plane in Hessian Normal Form. See Plane.js
|
||
* param {vec3} point A point in the same space as the plane.
|
||
* returns {float} The distance from the point to the plane.
|
||
*/
|
||
float czm_planeDistance(vec4 plane, vec3 point) {
|
||
return (dot(plane.xyz, point) + plane.w);
|
||
}
|
||
|
||
/**
|
||
* Computes distance from a point to a plane.
|
||
*
|
||
* @name czm_planeDistance
|
||
* @glslFunction
|
||
*
|
||
* param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js
|
||
* param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js
|
||
* param {vec3} point A point in the same space as the plane.
|
||
* returns {float} The distance from the point to the plane.
|
||
*/
|
||
float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) {
|
||
return (dot(planeNormal, point) + planeDistance);
|
||
}
|
||
`;var fL=`/**
|
||
* Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero.
|
||
*
|
||
* @name czm_pointAlongRay
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_ray} ray The ray to compute the point along.
|
||
* @param {float} time The time along the ray.
|
||
*
|
||
* @returns {vec3} The point along the ray at the given time.
|
||
*
|
||
* @example
|
||
* czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction
|
||
* vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0)
|
||
*/
|
||
vec3 czm_pointAlongRay(czm_ray ray, float time)
|
||
{
|
||
return ray.origin + (time * ray.direction);
|
||
}
|
||
`;var dL=`/**
|
||
* DOC_TBA
|
||
*
|
||
* @name czm_rayEllipsoidIntersectionInterval
|
||
* @glslFunction
|
||
*/
|
||
czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii)
|
||
{
|
||
// ray and ellipsoid center in eye coordinates. radii in model coordinates.
|
||
vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz;
|
||
vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz;
|
||
|
||
q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz;
|
||
|
||
float q2 = dot(q, q);
|
||
float qw = dot(q, w);
|
||
|
||
if (q2 > 1.0) // Outside ellipsoid.
|
||
{
|
||
if (qw >= 0.0) // Looking outward or tangent (0 intersections).
|
||
{
|
||
return czm_emptyRaySegment;
|
||
}
|
||
else // qw < 0.0.
|
||
{
|
||
float qw2 = qw * qw;
|
||
float difference = q2 - 1.0; // Positively valued.
|
||
float w2 = dot(w, w);
|
||
float product = w2 * difference;
|
||
|
||
if (qw2 < product) // Imaginary roots (0 intersections).
|
||
{
|
||
return czm_emptyRaySegment;
|
||
}
|
||
else if (qw2 > product) // Distinct roots (2 intersections).
|
||
{
|
||
float discriminant = qw * qw - product;
|
||
float temp = -qw + sqrt(discriminant); // Avoid cancellation.
|
||
float root0 = temp / w2;
|
||
float root1 = difference / temp;
|
||
if (root0 < root1)
|
||
{
|
||
czm_raySegment i = czm_raySegment(root0, root1);
|
||
return i;
|
||
}
|
||
else
|
||
{
|
||
czm_raySegment i = czm_raySegment(root1, root0);
|
||
return i;
|
||
}
|
||
}
|
||
else // qw2 == product. Repeated roots (2 intersections).
|
||
{
|
||
float root = sqrt(difference / w2);
|
||
czm_raySegment i = czm_raySegment(root, root);
|
||
return i;
|
||
}
|
||
}
|
||
}
|
||
else if (q2 < 1.0) // Inside ellipsoid (2 intersections).
|
||
{
|
||
float difference = q2 - 1.0; // Negatively valued.
|
||
float w2 = dot(w, w);
|
||
float product = w2 * difference; // Negatively valued.
|
||
float discriminant = qw * qw - product;
|
||
float temp = -qw + sqrt(discriminant); // Positively valued.
|
||
czm_raySegment i = czm_raySegment(0.0, temp / w2);
|
||
return i;
|
||
}
|
||
else // q2 == 1.0. On ellipsoid.
|
||
{
|
||
if (qw < 0.0) // Looking inward.
|
||
{
|
||
float w2 = dot(w, w);
|
||
czm_raySegment i = czm_raySegment(0.0, -qw / w2);
|
||
return i;
|
||
}
|
||
else // qw >= 0.0. Looking outward or tangent.
|
||
{
|
||
return czm_emptyRaySegment;
|
||
}
|
||
}
|
||
}
|
||
`;var hL=`/**
|
||
* Compute the intersection interval of a ray with a sphere.
|
||
*
|
||
* @name czm_raySphereIntersectionInterval
|
||
* @glslFunction
|
||
*
|
||
* @param {czm_ray} ray The ray.
|
||
* @param {vec3} center The center of the sphere.
|
||
* @param {float} radius The radius of the sphere.
|
||
* @return {czm_raySegment} The intersection interval of the ray with the sphere.
|
||
*/
|
||
czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius)
|
||
{
|
||
vec3 o = ray.origin;
|
||
vec3 d = ray.direction;
|
||
|
||
vec3 oc = o - center;
|
||
|
||
float a = dot(d, d);
|
||
float b = 2.0 * dot(d, oc);
|
||
float c = dot(oc, oc) - (radius * radius);
|
||
|
||
float det = (b * b) - (4.0 * a * c);
|
||
|
||
if (det < 0.0) {
|
||
return czm_emptyRaySegment;
|
||
}
|
||
|
||
float sqrtDet = sqrt(det);
|
||
|
||
float t0 = (-b - sqrtDet) / (2.0 * a);
|
||
float t1 = (-b + sqrtDet) / (2.0 * a);
|
||
|
||
czm_raySegment result = czm_raySegment(t0, t1);
|
||
return result;
|
||
}
|
||
`;var mL=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords)
|
||
{
|
||
return czm_reverseLogDepth(texture(depthTexture, texCoords).r);
|
||
}
|
||
`;var AL=`/**
|
||
* Reads a value previously transformed with {@link czm_writeNonPerspective}
|
||
* by dividing it by \`w\`, the value used in the perspective divide.
|
||
* This function is intended to be called in a fragment shader to access a
|
||
* \`varying\` that should not be subject to perspective interpolation.
|
||
* For example, screen-space texture coordinates. The value should have been
|
||
* previously written in the vertex shader with a call to
|
||
* {@link czm_writeNonPerspective}.
|
||
*
|
||
* @name czm_readNonPerspective
|
||
* @glslFunction
|
||
*
|
||
* @param {float|vec2|vec3|vec4} value The non-perspective value to be read.
|
||
* @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`.
|
||
* @returns {float|vec2|vec3|vec4} The usable value.
|
||
*/
|
||
float czm_readNonPerspective(float value, float oneOverW) {
|
||
return value * oneOverW;
|
||
}
|
||
|
||
vec2 czm_readNonPerspective(vec2 value, float oneOverW) {
|
||
return value * oneOverW;
|
||
}
|
||
|
||
vec3 czm_readNonPerspective(vec3 value, float oneOverW) {
|
||
return value * oneOverW;
|
||
}
|
||
|
||
vec4 czm_readNonPerspective(vec4 value, float oneOverW) {
|
||
return value * oneOverW;
|
||
}
|
||
`;var pL=`float czm_reverseLogDepth(float logZ)
|
||
{
|
||
#ifdef LOG_DEPTH
|
||
float near = czm_currentFrustum.x;
|
||
float far = czm_currentFrustum.y;
|
||
float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne;
|
||
float depthFromNear = exp2(log2Depth) - 1.0;
|
||
return far * (1.0 - near / (depthFromNear + near)) / (far - near);
|
||
#endif
|
||
return logZ;
|
||
}
|
||
`;var gL=`/**
|
||
* Round a floating point value. This function exists because round() doesn't
|
||
* exist in GLSL 1.00.
|
||
*
|
||
* @param {float|vec2|vec3|vec4} value The value to round
|
||
* @param {float|vec2|vec3|vec3} The rounded value. The type matches the input.
|
||
*/
|
||
float czm_round(float value) {
|
||
return floor(value + 0.5);
|
||
}
|
||
|
||
vec2 czm_round(vec2 value) {
|
||
return floor(value + 0.5);
|
||
}
|
||
|
||
vec3 czm_round(vec3 value) {
|
||
return floor(value + 0.5);
|
||
}
|
||
|
||
vec4 czm_round(vec4 value) {
|
||
return floor(value + 0.5);
|
||
}
|
||
`;var _L=`/**
|
||
* Adjusts the saturation of a color.
|
||
*
|
||
* @name czm_saturation
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} rgb The color.
|
||
* @param {float} adjustment The amount to adjust the saturation of the color.
|
||
*
|
||
* @returns {float} The color with the saturation adjusted.
|
||
*
|
||
* @example
|
||
* vec3 greyScale = czm_saturation(color, 0.0);
|
||
* vec3 doubleSaturation = czm_saturation(color, 2.0);
|
||
*/
|
||
vec3 czm_saturation(vec3 rgb, float adjustment)
|
||
{
|
||
// Algorithm from Chapter 16 of OpenGL Shading Language
|
||
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
||
vec3 intensity = vec3(dot(rgb, W));
|
||
return mix(intensity, rgb, adjustment);
|
||
}
|
||
`;var yL=`
|
||
float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d)
|
||
{
|
||
return czm_unpackDepth(czm_textureCube(shadowMap, d));
|
||
}
|
||
|
||
float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv)
|
||
{
|
||
#ifdef USE_SHADOW_DEPTH_TEXTURE
|
||
return texture(shadowMap, uv).r;
|
||
#else
|
||
return czm_unpackDepth(texture(shadowMap, uv));
|
||
#endif
|
||
}
|
||
|
||
float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth)
|
||
{
|
||
return step(depth, czm_sampleShadowMap(shadowMap, uv));
|
||
}
|
||
|
||
float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth)
|
||
{
|
||
return step(depth, czm_sampleShadowMap(shadowMap, uv));
|
||
}
|
||
`;var CL=`
|
||
float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness)
|
||
{
|
||
#ifdef USE_NORMAL_SHADING
|
||
#ifdef USE_NORMAL_SHADING_SMOOTH
|
||
float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0);
|
||
#else
|
||
float strength = step(0.0, nDotL);
|
||
#endif
|
||
visibility *= strength;
|
||
#endif
|
||
|
||
visibility = max(visibility, darkness);
|
||
return visibility;
|
||
}
|
||
|
||
#ifdef USE_CUBE_MAP_SHADOW
|
||
float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters)
|
||
{
|
||
float depthBias = shadowParameters.depthBias;
|
||
float depth = shadowParameters.depth;
|
||
float nDotL = shadowParameters.nDotL;
|
||
float normalShadingSmooth = shadowParameters.normalShadingSmooth;
|
||
float darkness = shadowParameters.darkness;
|
||
vec3 uvw = shadowParameters.texCoords;
|
||
|
||
depth -= depthBias;
|
||
float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth);
|
||
return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);
|
||
}
|
||
#else
|
||
float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters)
|
||
{
|
||
float depthBias = shadowParameters.depthBias;
|
||
float depth = shadowParameters.depth;
|
||
float nDotL = shadowParameters.nDotL;
|
||
float normalShadingSmooth = shadowParameters.normalShadingSmooth;
|
||
float darkness = shadowParameters.darkness;
|
||
vec2 uv = shadowParameters.texCoords;
|
||
|
||
depth -= depthBias;
|
||
#ifdef USE_SOFT_SHADOWS
|
||
vec2 texelStepSize = shadowParameters.texelStepSize;
|
||
float radius = 1.0;
|
||
float dx0 = -texelStepSize.x * radius;
|
||
float dy0 = -texelStepSize.y * radius;
|
||
float dx1 = texelStepSize.x * radius;
|
||
float dy1 = texelStepSize.y * radius;
|
||
float visibility = (
|
||
czm_shadowDepthCompare(shadowMap, uv, depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) +
|
||
czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth)
|
||
) * (1.0 / 9.0);
|
||
#else
|
||
float visibility = czm_shadowDepthCompare(shadowMap, uv, depth);
|
||
#endif
|
||
|
||
return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness);
|
||
}
|
||
#endif
|
||
`;var EL=`/**
|
||
* Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL
|
||
* built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0.
|
||
*
|
||
* @name czm_signNotZero
|
||
* @glslFunction
|
||
*
|
||
* @param {} value The value for which to determine the sign.
|
||
* @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative.
|
||
*/
|
||
float czm_signNotZero(float value)
|
||
{
|
||
return value >= 0.0 ? 1.0 : -1.0;
|
||
}
|
||
|
||
vec2 czm_signNotZero(vec2 value)
|
||
{
|
||
return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y));
|
||
}
|
||
|
||
vec3 czm_signNotZero(vec3 value)
|
||
{
|
||
return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z));
|
||
}
|
||
|
||
vec4 czm_signNotZero(vec4 value)
|
||
{
|
||
return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w));
|
||
}
|
||
`;var IL=`/**
|
||
* Computes a color from the third order spherical harmonic coefficients and a normalized direction vector.
|
||
* <p>
|
||
* The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22].
|
||
* </p>
|
||
*
|
||
* @name czm_sphericalHarmonics
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} normal The normalized direction.
|
||
* @param {vec3[9]} coefficients The third order spherical harmonic coefficients.
|
||
* @returns {vec3} The color at the direction.
|
||
*
|
||
* @see https://graphics.stanford.edu/papers/envmap/envmap.pdf
|
||
*/
|
||
vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9])
|
||
{
|
||
vec3 L00 = coefficients[0];
|
||
vec3 L1_1 = coefficients[1];
|
||
vec3 L10 = coefficients[2];
|
||
vec3 L11 = coefficients[3];
|
||
vec3 L2_2 = coefficients[4];
|
||
vec3 L2_1 = coefficients[5];
|
||
vec3 L20 = coefficients[6];
|
||
vec3 L21 = coefficients[7];
|
||
vec3 L22 = coefficients[8];
|
||
|
||
float x = normal.x;
|
||
float y = normal.y;
|
||
float z = normal.z;
|
||
|
||
vec3 L =
|
||
L00
|
||
+ L1_1 * y
|
||
+ L10 * z
|
||
+ L11 * x
|
||
+ L2_2 * (y * x)
|
||
+ L2_1 * (y * z)
|
||
+ L20 * (3.0 * z * z - 1.0)
|
||
+ L21 * (z * x)
|
||
+ L22 * (x * x - y * y);
|
||
|
||
return max(L, vec3(0.0));
|
||
}
|
||
`;var xL=`/**
|
||
* Converts an sRGB color to a linear RGB color.
|
||
*
|
||
* @param {vec3|vec4} srgbIn The color in sRGB space
|
||
* @returns {vec3|vec4} The color in linear color space. The vector type matches the input.
|
||
*/
|
||
vec3 czm_srgbToLinear(vec3 srgbIn)
|
||
{
|
||
return pow(srgbIn, vec3(2.2));
|
||
}
|
||
|
||
vec4 czm_srgbToLinear(vec4 srgbIn)
|
||
{
|
||
vec3 linearOut = pow(srgbIn.rgb, vec3(2.2));
|
||
return vec4(linearOut, srgbIn.a);
|
||
}
|
||
`;var bL=`/**
|
||
* Creates a matrix that transforms vectors from tangent space to eye space.
|
||
*
|
||
* @name czm_tangentToEyeSpaceMatrix
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} normalEC The normal vector in eye coordinates.
|
||
* @param {vec3} tangentEC The tangent vector in eye coordinates.
|
||
* @param {vec3} bitangentEC The bitangent vector in eye coordinates.
|
||
*
|
||
* @returns {mat3} The matrix that transforms from tangent space to eye space.
|
||
*
|
||
* @example
|
||
* mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC);
|
||
* vec3 normal = tangentToEye * texture(normalMap, st).xyz;
|
||
*/
|
||
mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC)
|
||
{
|
||
vec3 normal = normalize(normalEC);
|
||
vec3 tangent = normalize(tangentEC);
|
||
vec3 bitangent = normalize(bitangentEC);
|
||
return mat3(tangent.x , tangent.y , tangent.z,
|
||
bitangent.x, bitangent.y, bitangent.z,
|
||
normal.x , normal.y , normal.z);
|
||
}
|
||
`;var TL=`/**
|
||
* A wrapper around the texture (WebGL2) / textureCube (WebGL1)
|
||
* function to allow for WebGL 1 support.
|
||
*
|
||
* @name czm_textureCube
|
||
* @glslFunction
|
||
*
|
||
* @param {samplerCube} sampler The sampler.
|
||
* @param {vec3} p The coordinate at which to sample the texture.
|
||
*/
|
||
vec4 czm_textureCube(samplerCube sampler, vec3 p) {
|
||
#if __VERSION__ == 300
|
||
return texture(sampler, p);
|
||
#else
|
||
return textureCube(sampler, p);
|
||
#endif
|
||
}
|
||
|
||
/**
|
||
* A wrapper around the textureLod (WebGL2) / textureCube (WebGL1)
|
||
* function to allow for WebGL 1 support in fragment shaders.
|
||
*
|
||
* @name czm_textureCubeLod
|
||
* @glslFunction
|
||
*
|
||
* @param {samplerCube} sampler The sampler.
|
||
* @param {vec3} p The coordinate at which to sample the texture.
|
||
* @param {float} lod The mipmap level from which to sample.
|
||
*/
|
||
vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) {
|
||
#if __VERSION__ == 300
|
||
return textureLod(sampler, p, lod);
|
||
#elif defined(GL_EXT_shader_texture_lod)
|
||
return textureCubeLodEXT(sampler, p, lod);
|
||
#endif
|
||
}`;var SL=`/**
|
||
* Transforms a plane.
|
||
*
|
||
* @name czm_transformPlane
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} plane The plane in Hessian Normal Form.
|
||
* @param {mat4} transform The inverse-transpose of a transformation matrix.
|
||
*/
|
||
vec4 czm_transformPlane(vec4 plane, mat4 transform) {
|
||
vec4 transformedPlane = transform * plane;
|
||
// Convert the transformed plane to Hessian Normal Form
|
||
float normalMagnitude = length(transformedPlane.xyz);
|
||
return transformedPlane / normalMagnitude;
|
||
}
|
||
`;var wL=`/**
|
||
* Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3},
|
||
* and then provided to the shader as separate <code>high</code> and <code>low</code> bits to
|
||
* be relative to the eye. As shown in the example, the position can then be transformed in eye
|
||
* or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye},
|
||
* respectively.
|
||
* <p>
|
||
* This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as
|
||
* described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}.
|
||
* </p>
|
||
*
|
||
* @name czm_translateRelativeToEye
|
||
* @glslFunction
|
||
*
|
||
* @param {vec3} high The position's high bits.
|
||
* @param {vec3} low The position's low bits.
|
||
* @returns {vec3} The position translated to be relative to the camera's position.
|
||
*
|
||
* @example
|
||
* in vec3 positionHigh;
|
||
* in vec3 positionLow;
|
||
*
|
||
* void main()
|
||
* {
|
||
* vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
|
||
* gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
* }
|
||
*
|
||
* @see czm_modelViewRelativeToEye
|
||
* @see czm_modelViewProjectionRelativeToEye
|
||
* @see czm_computePosition
|
||
* @see EncodedCartesian3
|
||
*/
|
||
vec4 czm_translateRelativeToEye(vec3 high, vec3 low)
|
||
{
|
||
vec3 highDifference = high - czm_encodedCameraPositionMCHigh;
|
||
// This check handles the case when NaN values have gotten into \`highDifference\`.
|
||
// Such a thing could happen on devices running iOS.
|
||
if (length(highDifference) == 0.0) {
|
||
highDifference = vec3(0);
|
||
}
|
||
vec3 lowDifference = low - czm_encodedCameraPositionMCLow;
|
||
|
||
return vec4(highDifference + lowDifference, 1.0);
|
||
}
|
||
`;var BL=`/**
|
||
* @private
|
||
*/
|
||
vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC)
|
||
{
|
||
// Diffuse from directional light sources at eye (for top-down and horizon views)
|
||
float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal);
|
||
|
||
if (czm_sceneMode == czm_sceneMode3D) {
|
||
// (and horizon views in 3D)
|
||
diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal);
|
||
}
|
||
|
||
diffuse = clamp(diffuse, 0.0, 1.0);
|
||
|
||
float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess);
|
||
|
||
// Temporary workaround for adding ambient.
|
||
vec3 materialDiffuse = material.diffuse * 0.5;
|
||
|
||
vec3 ambient = materialDiffuse;
|
||
vec3 color = ambient + material.emission;
|
||
color += materialDiffuse * diffuse * czm_lightColor;
|
||
color += material.specular * specular * czm_lightColor;
|
||
|
||
return vec4(color, material.alpha);
|
||
}
|
||
`;var DL=`/**
|
||
* Returns the transpose of the matrix. The input <code>matrix</code> can be
|
||
* a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>.
|
||
*
|
||
* @name czm_transpose
|
||
* @glslFunction
|
||
*
|
||
* @param {} matrix The matrix to transpose.
|
||
*
|
||
* @returns {} The transposed matrix.
|
||
*
|
||
* @example
|
||
* // GLSL declarations
|
||
* mat2 czm_transpose(mat2 matrix);
|
||
* mat3 czm_transpose(mat3 matrix);
|
||
* mat4 czm_transpose(mat4 matrix);
|
||
*
|
||
* // Transpose a 3x3 rotation matrix to find its inverse.
|
||
* mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates(
|
||
* positionMC, normalEC);
|
||
* mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye);
|
||
*/
|
||
mat2 czm_transpose(mat2 matrix)
|
||
{
|
||
return mat2(
|
||
matrix[0][0], matrix[1][0],
|
||
matrix[0][1], matrix[1][1]);
|
||
}
|
||
|
||
mat3 czm_transpose(mat3 matrix)
|
||
{
|
||
return mat3(
|
||
matrix[0][0], matrix[1][0], matrix[2][0],
|
||
matrix[0][1], matrix[1][1], matrix[2][1],
|
||
matrix[0][2], matrix[1][2], matrix[2][2]);
|
||
}
|
||
|
||
mat4 czm_transpose(mat4 matrix)
|
||
{
|
||
return mat4(
|
||
matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0],
|
||
matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1],
|
||
matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2],
|
||
matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]);
|
||
}
|
||
`;var vL=`vec2 getLookupUv(vec2 dimensions, int i) {
|
||
int pixY = i / int(dimensions.x);
|
||
int pixX = i - (pixY * int(dimensions.x));
|
||
float pixelWidth = 1.0 / dimensions.x;
|
||
float pixelHeight = 1.0 / dimensions.y;
|
||
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
|
||
float v = (float(pixY) + 0.5) * pixelHeight;
|
||
return vec2(u, v);
|
||
}
|
||
|
||
vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) {
|
||
vec2 textureDimensions = vec2(textureSize(extentsTexture, 0));
|
||
return texture(extentsTexture, getLookupUv(textureDimensions, index));
|
||
}`;var PL=`/**
|
||
* Unpacks a vec4 depth value to a float in [0, 1) range.
|
||
*
|
||
* @name czm_unpackDepth
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} packedDepth The packed depth.
|
||
*
|
||
* @returns {float} The floating-point depth in [0, 1) range.
|
||
*/
|
||
float czm_unpackDepth(vec4 packedDepth)
|
||
{
|
||
// See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA
|
||
// http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/
|
||
return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0));
|
||
}
|
||
`;var RL=`/**
|
||
* Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4.
|
||
*
|
||
* @name czm_unpackFloat
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} packedFloat The packed float.
|
||
*
|
||
* @returns {float} The floating-point depth in arbitrary range.
|
||
*/
|
||
float czm_unpackFloat(vec4 packedFloat)
|
||
{
|
||
// Convert to [0.0, 255.0] and round to integer
|
||
packedFloat = floor(packedFloat * 255.0 + 0.5);
|
||
float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0;
|
||
float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0;
|
||
if (exponent == -127.0)
|
||
{
|
||
return 0.0;
|
||
}
|
||
float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000);
|
||
float result = sign * exp2(exponent - 23.0) * mantissa;
|
||
return result;
|
||
}
|
||
`;var ML=`/**
|
||
* Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type,
|
||
* so the return value is an int.
|
||
* <p>
|
||
* There are also precision limitations in WebGL 1. highp int is still limited
|
||
* to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur.
|
||
* </p>
|
||
*
|
||
* @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order.
|
||
*
|
||
* @return {int} The unpacked value.
|
||
*/
|
||
int czm_unpackUint(float packedValue) {
|
||
float rounded = czm_round(packedValue * 255.0);
|
||
return int(rounded);
|
||
}
|
||
|
||
int czm_unpackUint(vec2 packedValue) {
|
||
vec2 rounded = czm_round(packedValue * 255.0);
|
||
return int(dot(rounded, vec2(1.0, 256.0)));
|
||
}
|
||
|
||
int czm_unpackUint(vec3 packedValue) {
|
||
vec3 rounded = czm_round(packedValue * 255.0);
|
||
return int(dot(rounded, vec3(1.0, 256.0, 65536.0)));
|
||
}
|
||
|
||
int czm_unpackUint(vec4 packedValue) {
|
||
vec4 rounded = czm_round(packedValue * 255.0);
|
||
return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0)));
|
||
}
|
||
`;var NL=`/**
|
||
* Transform metadata values following the EXT_structural_metadata spec
|
||
* by multiplying by scale and adding the offset. Operations are always
|
||
* performed component-wise, even for matrices.
|
||
*
|
||
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add
|
||
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply
|
||
* @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value.
|
||
*
|
||
* @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input.
|
||
*/
|
||
float czm_valueTransform(float offset, float scale, float value) {
|
||
return scale * value + offset;
|
||
}
|
||
|
||
vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) {
|
||
return scale * value + offset;
|
||
}
|
||
|
||
vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) {
|
||
return scale * value + offset;
|
||
}
|
||
|
||
vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) {
|
||
return scale * value + offset;
|
||
}
|
||
|
||
mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) {
|
||
return matrixCompMult(scale, value) + offset;
|
||
}
|
||
|
||
mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) {
|
||
return matrixCompMult(scale, value) + offset;
|
||
}
|
||
|
||
mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) {
|
||
return matrixCompMult(scale, value) + offset;
|
||
}
|
||
`;var LL=`#ifdef LOG_DEPTH
|
||
// 1.0 at the near plane, increasing linearly from there.
|
||
out float v_depthFromNearPlusOne;
|
||
#ifdef SHADOW_MAP
|
||
out vec3 v_logPositionEC;
|
||
#endif
|
||
#endif
|
||
|
||
vec4 czm_updatePositionDepth(vec4 coords) {
|
||
#if defined(LOG_DEPTH)
|
||
|
||
#ifdef SHADOW_MAP
|
||
vec3 logPositionEC = (czm_inverseProjection * coords).xyz;
|
||
v_logPositionEC = logPositionEC;
|
||
#endif
|
||
|
||
// With the very high far/near ratios used with the logarithmic depth
|
||
// buffer, floating point rounding errors can cause linear depth values
|
||
// to end up on the wrong side of the far plane, even for vertices that
|
||
// are really nowhere near it. Since we always write a correct logarithmic
|
||
// depth value in the fragment shader anyway, we just need to make sure
|
||
// such errors don't cause the primitive to be clipped entirely before
|
||
// we even get to the fragment shader.
|
||
coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w;
|
||
#endif
|
||
|
||
return coords;
|
||
}
|
||
|
||
/**
|
||
* Writes the logarithmic depth to gl_Position using the already computed gl_Position.
|
||
*
|
||
* @name czm_vertexLogDepth
|
||
* @glslFunction
|
||
*/
|
||
void czm_vertexLogDepth()
|
||
{
|
||
#ifdef LOG_DEPTH
|
||
v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0;
|
||
gl_Position = czm_updatePositionDepth(gl_Position);
|
||
#endif
|
||
}
|
||
|
||
/**
|
||
* Writes the logarithmic depth to gl_Position using the provided clip coordinates.
|
||
* <p>
|
||
* An example use case for this function would be moving the vertex in window coordinates
|
||
* before converting back to clip coordinates. Use the original vertex clip coordinates.
|
||
* </p>
|
||
* @name czm_vertexLogDepth
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} clipCoords The vertex in clip coordinates.
|
||
*
|
||
* @example
|
||
* czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0));
|
||
*/
|
||
void czm_vertexLogDepth(vec4 clipCoords)
|
||
{
|
||
#ifdef LOG_DEPTH
|
||
v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0;
|
||
czm_updatePositionDepth(clipCoords);
|
||
#endif
|
||
}
|
||
`;var OL=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate)
|
||
{
|
||
// Reconstruct NDC coordinates
|
||
float x = 2.0 * screenCoordinate.x - 1.0;
|
||
float y = 2.0 * screenCoordinate.y - 1.0;
|
||
float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2];
|
||
vec4 q = vec4(x, y, z, 1.0);
|
||
|
||
// Reverse the perspective division to obtain clip coordinates.
|
||
q /= screenCoordinate.w;
|
||
|
||
// Reverse the projection transformation to obtain eye coordinates.
|
||
if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s
|
||
{
|
||
q = czm_inverseProjection * q;
|
||
}
|
||
else
|
||
{
|
||
float top = czm_frustumPlanes.x;
|
||
float bottom = czm_frustumPlanes.y;
|
||
float left = czm_frustumPlanes.z;
|
||
float right = czm_frustumPlanes.w;
|
||
|
||
float near = czm_currentFrustum.x;
|
||
float far = czm_currentFrustum.y;
|
||
|
||
q.x = (q.x * (right - left) + left + right) * 0.5;
|
||
q.y = (q.y * (top - bottom) + bottom + top) * 0.5;
|
||
q.z = (q.z * (near - far) - near - far) * 0.5;
|
||
q.w = 1.0;
|
||
}
|
||
|
||
return q;
|
||
}
|
||
|
||
/**
|
||
* Transforms a position from window to eye coordinates.
|
||
* The transform from window to normalized device coordinates is done using components
|
||
* of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating
|
||
* the inverse of <code>czm_viewportTransformation</code>. The transformation from
|
||
* normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>,
|
||
* which is expected to be the scalar used in the perspective divide. The transformation
|
||
* from clip to eye coordinates is done using {@link czm_inverseProjection}.
|
||
*
|
||
* @name czm_windowToEyeCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec4} fragmentCoordinate The position in window coordinates to transform.
|
||
*
|
||
* @returns {vec4} The transformed position in eye coordinates.
|
||
*
|
||
* @see czm_modelToWindowCoordinates
|
||
* @see czm_eyeToWindowCoordinates
|
||
* @see czm_inverseProjection
|
||
* @see czm_viewport
|
||
* @see czm_viewportTransformation
|
||
*
|
||
* @example
|
||
* vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord);
|
||
*/
|
||
vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate)
|
||
{
|
||
vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw;
|
||
return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw));
|
||
}
|
||
|
||
vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth)
|
||
{
|
||
// See reverseLogDepth.glsl. This is separate to re-use the pow.
|
||
#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY)
|
||
float near = czm_currentFrustum.x;
|
||
float far = czm_currentFrustum.y;
|
||
float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne;
|
||
float depthFromNear = exp2(log2Depth) - 1.0;
|
||
float depthFromCamera = depthFromNear + near;
|
||
vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0);
|
||
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);
|
||
eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision
|
||
#else
|
||
vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0);
|
||
vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord);
|
||
#endif
|
||
return eyeCoordinate;
|
||
}
|
||
|
||
/**
|
||
* Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates.
|
||
* This function produces more accurate results for window positions with log depth than
|
||
* conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version
|
||
* of czm_windowToEyeCoordinates.
|
||
*
|
||
* @name czm_windowToEyeCoordinates
|
||
* @glslFunction
|
||
*
|
||
* @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform.
|
||
* @param {float} depthOrLogDepth A depth or log depth for the fragment.
|
||
*
|
||
* @see czm_modelToWindowCoordinates
|
||
* @see czm_eyeToWindowCoordinates
|
||
* @see czm_inverseProjection
|
||
* @see czm_viewport
|
||
* @see czm_viewportTransformation
|
||
*
|
||
* @returns {vec4} The transformed position in eye coordinates.
|
||
*/
|
||
vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth)
|
||
{
|
||
vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw;
|
||
return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth);
|
||
}
|
||
`;var FL=`// emulated noperspective
|
||
#if !defined(LOG_DEPTH)
|
||
in float v_WindowZ;
|
||
#endif
|
||
|
||
/**
|
||
* Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane
|
||
* by writing the fragment's depth. See czm_depthClamp for more details.
|
||
*
|
||
* @name czm_writeDepthClamp
|
||
* @glslFunction
|
||
*
|
||
* @example
|
||
* out_FragColor = color;
|
||
* czm_writeDepthClamp();
|
||
*
|
||
* @see czm_depthClamp
|
||
*/
|
||
void czm_writeDepthClamp()
|
||
{
|
||
#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
|
||
gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0);
|
||
#endif
|
||
}
|
||
`;var QL=`#ifdef LOG_DEPTH
|
||
in float v_depthFromNearPlusOne;
|
||
|
||
#ifdef POLYGON_OFFSET
|
||
uniform vec2 u_polygonOffset;
|
||
#endif
|
||
|
||
#endif
|
||
|
||
/**
|
||
* Writes the fragment depth to the logarithmic depth buffer.
|
||
* <p>
|
||
* Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when
|
||
* ray-casting geometry using a full screen quad.
|
||
* </p>
|
||
* @name czm_writeLogDepth
|
||
* @glslFunction
|
||
*
|
||
* @param {float} depth The depth coordinate, where 1.0 is on the near plane and
|
||
* depth increases in eye-space units from there
|
||
*
|
||
* @example
|
||
* czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0);
|
||
*/
|
||
void czm_writeLogDepth(float depth)
|
||
{
|
||
#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
|
||
// Discard the vertex if it's not between the near and far planes.
|
||
// We allow a bit of epsilon on the near plane comparison because a 1.0
|
||
// from the vertex shader (indicating the vertex should be _on_ the near
|
||
// plane) will not necessarily come here as exactly 1.0.
|
||
if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) {
|
||
discard;
|
||
}
|
||
|
||
#ifdef POLYGON_OFFSET
|
||
// Polygon offset: m * factor + r * units
|
||
float factor = u_polygonOffset[0];
|
||
float units = u_polygonOffset[1];
|
||
|
||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||
// This factor doesn't work in IE 10
|
||
if (factor != 0.0) {
|
||
// m = sqrt(dZdX^2 + dZdY^2);
|
||
float x = dFdx(depth);
|
||
float y = dFdy(depth);
|
||
float m = sqrt(x * x + y * y);
|
||
|
||
// Apply the factor before computing the log depth.
|
||
depth += m * factor;
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
|
||
gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne;
|
||
|
||
#ifdef POLYGON_OFFSET
|
||
// Apply the units after the log depth.
|
||
gl_FragDepth += czm_epsilon7 * units;
|
||
#endif
|
||
|
||
#endif
|
||
}
|
||
|
||
/**
|
||
* Writes the fragment depth to the logarithmic depth buffer.
|
||
* <p>
|
||
* Use this when the vertex shader calls {@link czm_vertexLogDepth}.
|
||
* </p>
|
||
*
|
||
* @name czm_writeLogDepth
|
||
* @glslFunction
|
||
*/
|
||
void czm_writeLogDepth() {
|
||
#ifdef LOG_DEPTH
|
||
czm_writeLogDepth(v_depthFromNearPlusOne);
|
||
#endif
|
||
}
|
||
`;var kL=`/**
|
||
* Transforms a value for non-perspective interpolation by multiplying
|
||
* it by w, the value used in the perspective divide. This function is
|
||
* intended to be called in a vertex shader to compute the value of a
|
||
* \`varying\` that should not be subject to perspective interpolation.
|
||
* For example, screen-space texture coordinates. The fragment shader
|
||
* must call {@link czm_readNonPerspective} to retrieve the final
|
||
* non-perspective value.
|
||
*
|
||
* @name czm_writeNonPerspective
|
||
* @glslFunction
|
||
*
|
||
* @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective.
|
||
* @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`.
|
||
* @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the
|
||
* fragment shader with {@link czm_readNonPerspective}.
|
||
*/
|
||
float czm_writeNonPerspective(float value, float w) {
|
||
return value * w;
|
||
}
|
||
|
||
vec2 czm_writeNonPerspective(vec2 value, float w) {
|
||
return value * w;
|
||
}
|
||
|
||
vec3 czm_writeNonPerspective(vec3 value, float w) {
|
||
return value * w;
|
||
}
|
||
|
||
vec4 czm_writeNonPerspective(vec4 value, float w) {
|
||
return value * w;
|
||
}
|
||
`;var _I={czm_degreesPerRadian:f1,czm_depthRange:d1,czm_epsilon1:h1,czm_epsilon2:m1,czm_epsilon3:A1,czm_epsilon4:p1,czm_epsilon5:g1,czm_epsilon6:_1,czm_epsilon7:y1,czm_infinity:C1,czm_oneOverPi:E1,czm_oneOverTwoPi:I1,czm_passCesium3DTile:x1,czm_passCesium3DTileClassification:b1,czm_passCesium3DTileClassificationIgnoreShow:T1,czm_passClassification:S1,czm_passCompute:w1,czm_passEnvironment:B1,czm_passGaussianSplats:D1,czm_passGlobe:v1,czm_passOpaque:P1,czm_passOverlay:R1,czm_passTerrainClassification:M1,czm_passTranslucent:N1,czm_passVoxels:L1,czm_pi:O1,czm_piOverFour:F1,czm_piOverSix:Q1,czm_piOverThree:k1,czm_piOverTwo:U1,czm_radiansPerDegree:G1,czm_sceneMode2D:z1,czm_sceneMode3D:V1,czm_sceneModeColumbusView:H1,czm_sceneModeMorphing:W1,czm_solarRadius:j1,czm_threePiOver2:Y1,czm_twoPi:q1,czm_webMercatorMaxLatitude:K1,czm_depthRangeStruct:X1,czm_material:J1,czm_materialInput:Z1,czm_modelMaterial:$1,czm_modelVertexOutput:eN,czm_ray:tN,czm_raySegment:nN,czm_shadowParameters:iN,czm_HSBToRGB:oN,czm_HSLToRGB:rN,czm_RGBToHSB:sN,czm_RGBToHSL:aN,czm_RGBToXYZ:cN,czm_XYZToRGB:lN,czm_acesTonemapping:uN,czm_alphaWeight:fN,czm_antialias:dN,czm_applyHSBShift:hN,czm_approximateSphericalCoordinates:mN,czm_approximateTanh:AN,czm_backFacing:pN,czm_branchFreeTernary:gN,czm_cascadeColor:_N,czm_cascadeDistance:yN,czm_cascadeMatrix:CN,czm_cascadeWeights:EN,czm_clipPolygons:IN,czm_columbusViewMorph:xN,czm_computeAtmosphereColor:bN,czm_computeGroundAtmosphereScattering:TN,czm_computePosition:SN,czm_computeScattering:wN,czm_cosineAndSine:BN,czm_decompressTextureCoordinates:DN,czm_depthClamp:vN,czm_eastNorthUpToEyeCoordinates:PN,czm_ellipsoidContainsPoint:RN,czm_ellipsoidTextureCoordinates:MN,czm_equalsEpsilon:NN,czm_eyeOffset:LN,czm_eyeToWindowCoordinates:ON,czm_fastApproximateAtan:FN,czm_fog:QN,czm_gammaCorrect:kN,czm_geodeticSurfaceNormal:UN,czm_getDefaultMaterial:GN,czm_getDynamicAtmosphereLightDirection:zN,czm_getLambertDiffuse:VN,czm_getSpecular:HN,czm_getWaterNoise:WN,czm_hue:jN,czm_inverseGamma:YN,czm_isEmpty:qN,czm_isFull:KN,czm_latitudeToWebMercatorFraction:XN,czm_lineDistance:JN,czm_linearToSrgb:ZN,czm_luminance:$N,czm_maximumComponent:eL,czm_metersPerPixel:tL,czm_modelToWindowCoordinates:nL,czm_multiplyWithColorBalance:iL,czm_nearFarScalar:oL,czm_octDecode:rL,czm_packDepth:sL,czm_pbrLighting:aL,czm_pbrNeutralTonemapping:cL,czm_phong:lL,czm_planeDistance:uL,czm_pointAlongRay:fL,czm_rayEllipsoidIntersectionInterval:dL,czm_raySphereIntersectionInterval:hL,czm_readDepth:mL,czm_readNonPerspective:AL,czm_reverseLogDepth:pL,czm_round:gL,czm_saturation:_L,czm_shadowDepthCompare:yL,czm_shadowVisibility:CL,czm_signNotZero:EL,czm_sphericalHarmonics:IL,czm_srgbToLinear:xL,czm_tangentToEyeSpaceMatrix:bL,czm_textureCube:TL,czm_transformPlane:SL,czm_translateRelativeToEye:wL,czm_translucentPhong:BL,czm_transpose:DL,czm_unpackClippingExtents:vL,czm_unpackDepth:PL,czm_unpackFloat:RL,czm_unpackUint:ML,czm_valueTransform:NL,czm_vertexLogDepth:LL,czm_windowToEyeCoordinates:OL,czm_writeDepthClamp:FL,czm_writeLogDepth:QL,czm_writeNonPerspective:kL};function HMe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,`
|
||
varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable
|
||
${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable
|
||
${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod
|
||
#extension GL_EXT_shader_texture_lod : enable
|
||
#endif
|
||
${n}`,n=`#ifdef GL_OES_standard_derivatives
|
||
#extension GL_OES_standard_derivatives : enable
|
||
#endif
|
||
${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100
|
||
${n}`,n}var UL=HMe;function vne(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=`
|
||
`;return i})}function Pne(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=vne(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Rne(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&oa._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=Pne(i,oa._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Rne(o,t)}}))}function WMe(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function jMe(e){let t=[],n=Pne("main",e,t);Rne(n,t),WMe(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource}
|
||
`;return i.replace(n.glslSource,"")}function Mne(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=`
|
||
#line 0
|
||
${s[i]}`;r=vne(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(_,y){return a=y,`
|
||
`});let c=[];r=r.replace(/#extension.*\n/gm,function(_){return c.push(_),`
|
||
`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=oa.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH
|
||
precision highp float;
|
||
precision highp int;
|
||
#else
|
||
precision mediump float;
|
||
precision mediump int;
|
||
#define highp mediump
|
||
#endif
|
||
|
||
`);let A=e.defines;if(l(A))for(i=0,o=A.length;i<o;++i){let _=A[i];_.length!==0&&(f+=`#define ${_}
|
||
`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear
|
||
|
||
`),n.floatingPointTexture&&(f+=`#define OES_texture_float
|
||
|
||
`);let g="";e.includeBuiltIns&&(g=jMe(r)),f+=`
|
||
#line 0
|
||
`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor;
|
||
|
||
`),f+=g,f+=r,n.webgl2?f=`#version 300 es
|
||
${f}`:f=UL(f,t),f}function oa(e){e=e??V.EMPTY_OBJECT;let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=e.includeBuiltIns??!0}oa.prototype.clone=function(){return new oa({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};oa.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};oa.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(`
|
||
`);return`${t}:${n}:${i}:${o}`};oa.prototype.createCombinedVertexShader=function(e){return Mne(this,!1,e)};oa.prototype.createCombinedFragmentShader=function(e){return Mne(this,!0,e)};oa._czmBuiltinsAndUniforms={};for(let e in _I)_I.hasOwnProperty(e)&&(oa._czmBuiltinsAndUniforms[e]=_I[e]);for(let e in bg)if(bg.hasOwnProperty(e)){let t=bg[e];typeof t.getDeclaration=="function"&&(oa._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}oa.createPickVertexShaderSource=function(e){return`${oa.replaceMain(e,"czm_old_main")}
|
||
in vec4 pickColor;
|
||
out vec4 czm_pickColor;
|
||
void main()
|
||
{
|
||
czm_old_main();
|
||
czm_pickColor = pickColor;
|
||
}`};oa.createPickFragmentShaderSource=function(e,t){let n=oa.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor;
|
||
void main()
|
||
{
|
||
czm_old_main();
|
||
if (out_FragColor.a == 0.0) {
|
||
discard;
|
||
}
|
||
out_FragColor = czm_pickColor;
|
||
}`;return`${n}
|
||
${i}`};function YMe(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Nne(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function Lne(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Nne(e,o))return o}}var qMe=["v_normalEC","v_normal"];oa.findNormalVarying=function(e){return Nne(e,"#ifdef HAS_NORMALS")?YMe(e,"HAS_NORMALS")?"v_normalEC":void 0:Lne(e,qMe)};var KMe=["v_positionEC"];oa.findPositionVarying=function(e){return Lne(e,KMe)};var We=oa;var GL=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in float batchId;
|
||
|
||
#ifdef EXTRUDED_GEOMETRY
|
||
in vec3 extrudeDirection;
|
||
|
||
uniform float u_globeMinimumAltitude;
|
||
#endif // EXTRUDED_GEOMETRY
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
out vec4 v_color;
|
||
#endif // PER_INSTANCE_COLOR
|
||
|
||
#ifdef TEXTURE_COORDINATES
|
||
#ifdef SPHERICAL
|
||
out vec4 v_sphericalExtents;
|
||
#else // SPHERICAL
|
||
out vec2 v_inversePlaneExtents;
|
||
out vec4 v_westPlane;
|
||
out vec4 v_southPlane;
|
||
#endif // SPHERICAL
|
||
out vec3 v_uvMinAndSphericalLongitudeRotation;
|
||
out vec3 v_uMaxAndInverseDistance;
|
||
out vec3 v_vMaxAndInverseDistance;
|
||
#endif // TEXTURE_COORDINATES
|
||
|
||
void main()
|
||
{
|
||
vec4 position = czm_computePosition();
|
||
|
||
#ifdef EXTRUDED_GEOMETRY
|
||
float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz));
|
||
delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0;
|
||
|
||
//extrudeDirection is zero for the top layer
|
||
position = position + vec4(extrudeDirection * delta, 0.0);
|
||
#endif
|
||
|
||
#ifdef TEXTURE_COORDINATES
|
||
#ifdef SPHERICAL
|
||
v_sphericalExtents = czm_batchTable_sphericalExtents(batchId);
|
||
v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId);
|
||
#else // SPHERICAL
|
||
#ifdef COLUMBUS_VIEW_2D
|
||
vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId);
|
||
vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId);
|
||
|
||
// If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w):
|
||
// - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts)
|
||
// - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w)
|
||
// - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow)
|
||
vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w));
|
||
bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0;
|
||
planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w);
|
||
planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w);
|
||
|
||
// - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0)
|
||
// - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x)
|
||
// - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow)
|
||
idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0;
|
||
idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x));
|
||
planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x);
|
||
planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x);
|
||
|
||
vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz;
|
||
vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz;
|
||
vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz;
|
||
#else // COLUMBUS_VIEW_2D
|
||
// 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction
|
||
vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz;
|
||
vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner;
|
||
vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner;
|
||
#endif // COLUMBUS_VIEW_2D
|
||
|
||
vec3 eastWard = southEastCorner - southWestCorner;
|
||
float eastExtent = length(eastWard);
|
||
eastWard /= eastExtent;
|
||
|
||
vec3 northWard = northWestCorner - southWestCorner;
|
||
float northExtent = length(northWard);
|
||
northWard /= northExtent;
|
||
|
||
v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner));
|
||
v_southPlane = vec4(northWard, -dot(northWard, southWestCorner));
|
||
v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent);
|
||
#endif // SPHERICAL
|
||
vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId);
|
||
vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId);
|
||
|
||
v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z);
|
||
v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w);
|
||
v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy;
|
||
#endif // TEXTURE_COORDINATES
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
v_color = czm_batchTable_color(batchId);
|
||
#endif
|
||
|
||
gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position);
|
||
}
|
||
`;var IC=`#ifdef VECTOR_TILE
|
||
uniform vec4 u_highlightColor;
|
||
#endif
|
||
|
||
void main(void)
|
||
{
|
||
#ifdef VECTOR_TILE
|
||
out_FragColor = czm_gammaCorrect(u_highlightColor);
|
||
#else
|
||
out_FragColor = vec4(1.0);
|
||
#endif
|
||
czm_writeDepthClamp();
|
||
}
|
||
`;var One={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};One.NUMBER_OF_CLASSIFICATION_TYPES=3;var Jn=Object.freeze(One);var XMe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Ja=Object.freeze(XMe);function JMe(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var zL=JMe;function UA(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=ZMe(t),o=e.floatingPointTexture,r=i===He.FLOAT&&!o,s=$Me(t,r),a=e1e(s,t,r),c=Math.floor(qt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),A=1/f,g=A*.5,m=1/h,_=m*.5;this._textureDimensions=new k(f,h),this._textureStep=new se(A,g,m,_),this._pixelDatatype=r?He.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let y=4*f*h;this._batchValues=i===He.FLOAT&&!r?new Float32Array(y):new Uint8Array(y),this._batchValuesDirty=!1}Object.defineProperties(UA.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function ZMe(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==q.UNSIGNED_BYTE){t=!0;break}return t?He.FLOAT:He.UNSIGNED_BYTE}function Qne(e,t){let n=e[t].componentsPerAttribute;return n===2?k:n===3?d:n===4?se:Number}function $Me(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==q.UNSIGNED_BYTE&&t?i+=4:++i}return n}function e1e(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==q.UNSIGNED_BYTE&&n?o+4:o+1}var cw=new se;function t1e(e,t,n){let i=se.unpack(e,t,cw),o=se.unpackFloat(i);i=se.unpack(e,t+4,cw);let r=se.unpackFloat(i);i=se.unpack(e,t+8,cw);let s=se.unpackFloat(i);i=se.unpack(e,t+12,cw);let a=se.unpackFloat(i);return se.fromElements(o,r,s,a,n)}function n1e(e,t,n){let i=se.packFloat(e.x,cw);se.pack(i,t,n),i=se.packFloat(e.y,i),se.pack(i,t,n+4),i=se.packFloat(e.z,i),se.pack(i,t,n+8),i=se.packFloat(e.w,i),se.pack(i,t,n+12)}var Fne=new se;UA.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?a=t1e(this._batchValues,s,Fne):a=se.unpack(this._batchValues,s,Fne);let c=Qne(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var i1e=[void 0,void 0,new k,new d,new se],o1e=new se;UA.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=i1e[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Qne(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=o1e;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?n1e(c,this._batchValues,h):se.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function r1e(e,t){let n=e._textureDimensions;e._texture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:on.NEAREST,flipY:!1})}function s1e(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}UA.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||r1e(this,e.context),s1e(this))};UA.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:wt(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function a1e(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep;
|
||
vec2 computeSt(float batchId)
|
||
{
|
||
float stepX = batchTextureStep.x;
|
||
float centerX = batchTextureStep.y;
|
||
float numberOfAttributes = float(${t});
|
||
return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5);
|
||
}
|
||
`:`uniform vec4 batchTextureStep;
|
||
uniform vec2 batchTextureDimensions;
|
||
vec2 computeSt(float batchId)
|
||
{
|
||
float stepX = batchTextureStep.x;
|
||
float centerX = batchTextureStep.y;
|
||
float stepY = batchTextureStep.z;
|
||
float centerY = batchTextureStep.w;
|
||
float numberOfAttributes = float(${t});
|
||
float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x);
|
||
float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x);
|
||
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
|
||
}
|
||
`}function c1e(e){return e===1?"float":`vec${e}`}function l1e(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function u1e(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=c1e(o),a=l1e(o),c=e._offsets[t],u=`${s} ${r}(float batchId)
|
||
{
|
||
vec2 st = computeSt(batchId);
|
||
st.x += batchTextureStep.x * float(${c});
|
||
`;return e._packFloats&&i.componentDatatype!==He.UNSIGNED_BYTE?u+=`vec4 textureValue;
|
||
textureValue.x = czm_unpackFloat(texture(batchTexture, st));
|
||
textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0)));
|
||
textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0)));
|
||
textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0)));
|
||
`:u+=` vec4 textureValue = texture(batchTexture, st);
|
||
`,u+=` ${s} value = textureValue${a};
|
||
`,e._pixelDatatype===He.UNSIGNED_BYTE&&i.componentDatatype===q.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0;
|
||
`:e._pixelDatatype===He.FLOAT&&i.componentDatatype===q.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0;
|
||
`),u+=` return value;
|
||
}
|
||
`,u}UA.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture;
|
||
`;t+=`${a1e(this)}
|
||
`;let n=e.length;for(let i=0;i<n;++i)t+=u1e(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r}
|
||
${t}
|
||
${s}`}};UA.prototype.isDestroyed=function(){return!1};UA.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var yI=UA;function Ml(e){this._ellipsoid=e??te.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(Ml.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Ml.mercatorAngleToGeodeticLatitude=function(e){return D.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};Ml.geodeticLatitudeToMercatorAngle=function(e){e>Ml.MaximumLatitude?e=Ml.MaximumLatitude:e<-Ml.MaximumLatitude&&(e=-Ml.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};Ml.MaximumLatitude=Ml.mercatorAngleToGeodeticLatitude(Math.PI);Ml.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=Ml.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};Ml.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=Ml.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Yi=Ml;function f1e(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!R.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&jn.transformToWorldCoordinates(e[r]);else R.multiplyTransformation(t,e[0].modelMatrix,t)}function c6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new De({componentDatatype:q.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function d1e(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?c6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(c6(i.westHemisphereGeometry,n),c6(i.eastHemisphereGeometry,n))}}function h1e(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(f1e(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&jn.splitLongitude(t[c]);if(d1e(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(jn.reorderForPostVertexCache(g.geometry),jn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(jn.reorderForPostVertexCache(g.westHemisphereGeometry),jn.reorderForPreVertexCache(g.westHemisphereGeometry),jn.reorderForPostVertexCache(g.eastHemisphereGeometry),jn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let A=jn.combineInstances(t);for(h=A.length,c=0;c<h;++c){u=A[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE&&jn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE){let _=`${m}3D`,y=`${m}2D`;jn.projectTo2D(u,m,_,y,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=le.fromVertices(u.attributes.position2D.values)),jn.encodeAttribute(u,_,`${_}High`,`${_}Low`),jn.encodeAttribute(u,y,`${y}High`,`${y}Low`)}s&&jn.compressVertices(u)}if(!i){let g=[];for(h=A.length,c=0;c<h;++c)u=A[c],g=g.concat(jn.fitToUnsignedShortIndices(u));A=g}return A}function l6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let A=h.indices.length;o+A>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:A}),o+=A}}function m1e(e,t){let n=[];return l6(e,"geometry",t,n),l6(e,"westHemisphereGeometry",t,n),l6(e,"eastHemisphereGeometry",t,n),n}var GA={};GA.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=h1e(e),t.length>0&&(n=jn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=m1e(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],A=h.geometry;l(A)&&(c[f]=A.boundingSphere,u[f]=A.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=le.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=le.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function A1e(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function p1e(e,t){let n=e.length;for(let i=0;i<n;++i)A1e(e[i],t)}function g1e(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*le.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}GA.packCreateGeometryResults=function(e,t){let n=new Float64Array(g1e(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=c.offsetAttribute??-1;let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&le.pack(c.boundingSphere,n,s),s+=le.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&le.pack(c.boundingSphereCV,n,s),s+=le.packedLength;let A=c.attributes,g=[];for(let _ in A)A.hasOwnProperty(_)&&l(A[_])&&(g.push(_),l(o[_])||(o[_]=i.length,i.push(_)));n[s++]=g.length;for(let _=0;_<g.length;_++){let y=g[_],C=A[y];n[s++]=o[y],n[s++]=C.componentDatatype,n[s++]=C.componentsPerAttribute,n[s++]=C.normalize?1:0,n[s++]=C.values.length,n.set(C.values,s),s+=C.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};GA.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,A;n[s++]===1&&(h=le.unpack(n,s)),s+=le.packedLength,n[s++]===1&&(A=le.unpack(n,s)),s+=le.packedLength;let _,y,C,E=new En,I=n[s++];for(i=0;i<I;i++){let S=t[n[s++]],B=n[s++];C=n[s++];let v=n[s++]!==0;_=n[s++],y=q.createTypedArray(B,_);for(let P=0;P<_;P++)y[P]=n[s++];E[S]=new De({componentDatatype:B,componentsPerAttribute:C,normalize:v,values:y})}let b;if(_=n[s++],_>0){let S=y.length/C;for(b=Fe.createTypedArray(S,_),i=0;i<_;i++)b[i]=n[s++]}o[r++]=new ht({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:A,indices:b,attributes:E,offsetAttribute:f})}return o};function _1e(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(R.pack(s.modelMatrix,i,o),o+=R.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function y1e(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=R.unpack(t,o),s;o+=R.packedLength,l(t[o])&&(s={offset:new ho(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}GA.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:_1e(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Hi,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};GA.unpackCombineGeometryParameters=function(e){let t=y1e(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=GA.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=t[o];A.geometry=h,++o}}let r=te.clone(e.ellipsoid),s=e.isGeographic?new Hi(r):new Yi(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:R.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function kne(e){let t=e.length,n=1+(le.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,le.pack(e[r],i,o)):i[o++]=0,o+=le.packedLength}return i}function Une(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=le.unpack(e,i)),++n,i+=le.packedLength;return t}GA.packCombineGeometryResults=function(e,t){l(e.geometries)&&p1e(e.geometries,t);let n=kne(e.boundingSpheres),i=kne(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};GA.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:Une(e.boundingSpheres),boundingSpheresCV:Une(e.boundingSpheresCV)}};var CI=GA;var C1e={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},qr=Object.freeze(C1e);var VL={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};VL.getMorphTime=function(e){return e===VL.SCENE3D?1:e===VL.MORPHING?void 0:0};var ie=Object.freeze(VL);var xu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};xu.NUMBER_OF_SHADOW_MODES=4;xu.castShadows=function(e){return e===xu.ENABLED||e===xu.CAST_ONLY};xu.receiveShadows=function(e){return e===xu.ENABLED||e===xu.RECEIVE_ONLY};xu.fromCastReceive=function(e,t){return e&&t?xu.ENABLED:e?xu.CAST_ONLY:t?xu.RECEIVE_ONLY:xu.DISABLED};var Dn=Object.freeze(xu);function vr(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.show=e.show??!0,this._vertexCacheOptimize=e.vertexCacheOptimize??!1,this._interleave=e.interleave??!1,this._releaseGeometryInstances=e.releaseGeometryInstances??!0,this._allowPicking=e.allowPicking??!0,this._asynchronous=e.asynchronous??!0,this._compressVertices=e.compressVertices??!0,this.cull=e.cull??!0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.rtcCenter=e.rtcCenter,this.shadows=e.shadows??Dn.DISABLED,this._translucent=void 0,this._state=qr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(vr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function E1e(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var I1e=new k,x1e=new d,Kne=new se;function Xne(e){let t=e.length;if(t===1)return e[0];if(t===2)return k.unpack(e,0,I1e);if(t===3)return d.unpack(e,0,x1e);if(t===4)return se.unpack(e,0,Kne)}function b1e(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=E1e(i),s=r.length,a=[],c={},u={},f,A=i[0].attributes,g,m,_;for(g=0;g<s;++g)m=r[g],_=A[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:_.componentDatatype,componentsPerAttribute:_.componentsPerAttribute,normalize:_.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:q.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:q.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let y=a.length,C=new yI(t,a,o);for(g=0;g<o;++g){let E=i[g];A=E.attributes;for(let v=0;v<s;++v){m=r[v],_=A[m];let P=Xne(_.value),N=c[m];C.setBatchedAttribute(g,N,P)}let I={primitive:E.pickPrimitive??e};l(E.id)&&(I.id=E.id);let b=t.createPickId(I);e._pickIds.push(b);let S=b.color,B=Kne;B.x=G.floatToByte(S.red),B.y=G.floatToByte(S.green),B.z=G.floatToByte(S.blue),B.w=G.floatToByte(S.alpha),C.setBatchedAttribute(g,y-1,B)}e._batchTable=C,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function T1e(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new De({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function S1e(e){let t=e.attributes,n=new En;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=T1e(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ht({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:le.clone(e.boundingSphere)})}function w1e(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:R.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var B1e=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;vr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=B1e.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c};
|
||
`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView;
|
||
`,r+=`in vec4 position;
|
||
`,s+=`${c}
|
||
{
|
||
return u_modifiedModelView * position;
|
||
}
|
||
|
||
`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c}
|
||
{
|
||
return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow);
|
||
}
|
||
|
||
`:(r+=`in vec3 ${a}2DHigh;
|
||
in vec3 ${a}2DLow;
|
||
`,s+=`${c}
|
||
{
|
||
vec4 p;
|
||
if (czm_morphTime == 1.0)
|
||
{
|
||
p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow);
|
||
}
|
||
else if (czm_morphTime == 0.0)
|
||
{
|
||
p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy);
|
||
}
|
||
else
|
||
{
|
||
p = czm_columbusViewMorph(
|
||
czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy),
|
||
czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow),
|
||
czm_morphTime);
|
||
}
|
||
return p;
|
||
}
|
||
|
||
`)}return[o,r,t,s].join(`
|
||
`)};vr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${We.replaceMain(t,"czm_non_show_main")}
|
||
void main()
|
||
{
|
||
czm_non_show_main();
|
||
gl_Position *= czm_batchTable_show(batchId);
|
||
}`:t};vr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Gne(e){return`${We.replaceMain(e,"czm_non_pick_main")}
|
||
out vec4 v_pickColor;
|
||
void main()
|
||
{
|
||
czm_non_pick_main();
|
||
v_pickColor = czm_batchTable_pickColor(batchId);
|
||
}`}function zne(e){return`in vec4 v_pickColor;
|
||
${e}`}vr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};vr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId;
|
||
`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition();
|
||
`;return o+=` if (czm_sceneMode == czm_sceneMode3D)
|
||
`,o+=` {
|
||
`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` }
|
||
`,o+=` else
|
||
`,o+=` {
|
||
`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` }
|
||
`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};vr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=We.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main()
|
||
{
|
||
czm_non_distanceDisplayCondition_main();
|
||
vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId);
|
||
vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId);
|
||
vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId);
|
||
float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId);
|
||
`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow);
|
||
`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId);
|
||
vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId);
|
||
vec4 centerRTE;
|
||
if (czm_morphTime == 1.0)
|
||
{
|
||
centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow);
|
||
}
|
||
else if (czm_morphTime == 0.0)
|
||
{
|
||
centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy);
|
||
}
|
||
else
|
||
{
|
||
centerRTE = czm_columbusViewMorph(
|
||
czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy),
|
||
czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow),
|
||
czm_morphTime);
|
||
}
|
||
`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius;
|
||
float distanceSq;
|
||
if (czm_sceneMode == czm_sceneMode2D)
|
||
{
|
||
distanceSq = czm_eyeHeight2D.y - radiusSq;
|
||
}
|
||
else
|
||
{
|
||
distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq;
|
||
}
|
||
distanceSq = max(distanceSq, 0.0);
|
||
float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x;
|
||
float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y;
|
||
float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0;
|
||
gl_Position *= show;
|
||
}`,`${i}
|
||
${o}`};function Vne(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st;
|
||
`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m});
|
||
`}n&&o&&r?(f+=`vec3 normal;
|
||
vec3 tangent;
|
||
vec3 bitangent;
|
||
`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent);
|
||
`):(n&&(f+=`vec3 normal;
|
||
`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""});
|
||
`),o&&(f+=`vec3 tangent;
|
||
`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"});
|
||
`),r&&(f+=`vec3 bitangent;
|
||
`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"});
|
||
`));let A=t;A=A.replace(/in\s+vec3\s+normal;/g,""),A=A.replace(/in\s+vec2\s+st;/g,""),A=A.replace(/in\s+vec3\s+tangent;/g,""),A=A.replace(/in\s+vec3\s+bitangent;/g,""),A=We.replaceMain(A,"czm_non_compressed_main");let g=`void main()
|
||
{
|
||
${h} czm_non_compressed_main();
|
||
}`;return[u,f,A,g].join(`
|
||
`)}function D1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() {
|
||
czm_non_depth_clamp_main();
|
||
gl_Position = czm_depthClamp(gl_Position);}
|
||
`,t}function v1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() {
|
||
czm_non_depth_clamp_main();
|
||
#if defined(LOG_DEPTH)
|
||
czm_writeLogDepth();
|
||
#else
|
||
czm_writeDepthClamp();
|
||
#endif
|
||
}
|
||
`,t}function Hne(e,t){let n=e.vertexAttributes}function P1e(e,t){return function(){return e[t]}}var u6=Math.max(jt.hardwareConcurrency-1,1),HL,R1e=new mi("combineGeometry");function M1e(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===qr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(HL))for(HL=new Array(u6),o=0;o<u6;o++)HL[o]=new mi("createGeometry");let f;for(u=zL(u,u6),o=0;o<u.length;o++){let h=0,A=u[o],g=A.length;for(r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=i.constructor.packedLength??i.packedLength);let m;if(h>0){let _=new Float64Array(h);for(m=[_.buffer],r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,_,f.offset),f.geometry=_)}c.push(HL[o].scheduleTask({subTasks:u[o]},m))}e._state=qr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=qr.CREATED}).catch(function(h){uw(e,t,qr.FAILED,h)})}else if(e._state===qr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=R1e.scheduleTask(CI.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=qr.COMBINING,Promise.resolve(f).then(function(h){let A=CI.unpackCombineGeometryResults(h);e._geometries=A.geometries,e._attributeLocations=A.attributeLocations,e.modelMatrix=R.clone(A.modelMatrix,e.modelMatrix),e._pickOffsets=A.pickOffsets,e._offsetInstanceExtend=A.offsetInstanceExtend,e._instanceBoundingSpheres=A.boundingSpheres,e._instanceBoundingSpheresCV=A.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}).catch(function(h){uw(e,t,qr.FAILED,h)})}}function N1e(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let A=s.geometry,g;l(A.attributes)&&l(A.primitiveType)?g=S1e(A):g=A.constructor.createGeometry(A),o[c++]=w1e(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=CI.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=R.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}function L1e(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new le;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let _=a[i],y=e._batchTable.getBatchedAttribute(i,n,new d);_=r[i].clone(_),eie(_,y,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let _=a[i];_.center.x-_.radius>0||le.intersectPlane(_,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING?c.push(_):(u.push(_),f.push(_))}let h=c[0],A=f[0],g=u[0];for(i=1;i<c.length;i++)h=le.union(h,c[i]);for(i=1;i<f.length;i++)A=le.union(A,f[i]);for(i=1;i<u.length;i++)g=le.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(A)&&m.push(A),l(g)&&m.push(g),i=0;i<m.length;i++){let _=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=_,e._boundingSphereCV[i]=le.projectTo2D(_,t.mapProjection,e._boundingSphereCV[i])}vr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var Wne=new ei,Jne=new Ae,Zne=new d,$ne=new le;function O1e(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,A=e._instanceBoundingSpheres,g=A.length;for(let m=0;m<g;++m){let _=A[m];if(!l(_))continue;let y=e.modelMatrix;l(y)&&(_=le.transform(_,y,$ne));let C=_.center,E=_.radius,I=ei.fromCartesian(C,Wne);if(h.setBatchedAttribute(m,o,I.high),h.setBatchedAttribute(m,r,I.low),!t.scene3DOnly){let b=f.cartesianToCartographic(C,Jne),S=u.project(b,Zne);I=ei.fromCartesian(S,Wne),h.setBatchedAttribute(m,s,I.high),h.setBatchedAttribute(m,a,I.low)}h.setBatchedAttribute(m,c,E)}e._batchTableBoundingSpheresUpdated=!0}var f6=new d,F1e=new d;function jne(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let A=e.modelMatrix;l(A)&&(f=le.transform(f,A,$ne));let g=f.center;g=r.scaleToGeodeticSurface(g,F1e);let m=r.cartesianToCartographic(g,Jne),_=o.project(m,Zne),y=d.add(h,g,f6);m=r.cartesianToCartographic(y,m);let C=o.project(m,f6),E=d.subtract(C,_,f6),I=E.x;E.x=E.z,E.z=E.y,E.y=I,s.setBatchedAttribute(u,i,E)}e._batchTableOffsetsUpdated=!0}function Q1e(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(li.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(le.clone(u.boundingSphere)),e._boundingSphereWC.push(new le),!o){let f=u.boundingSphereCV.center,h=f.x,A=f.y,g=f.z;f.x=g,f.y=h,f.z=A,e._boundingSphereCV.push(le.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new le),e._boundingSphereMorph.push(new le)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,uw(e,t,qr.COMPLETE,void 0)}function k1e(e,t,n,i){let o=n.getRenderState(),r;i?(r=ze(o,!1),r.cull={enabled:!0,face:Mi.BACK},e._frontFaceRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceRS=Ue.fromCache(r)):(e._frontFaceRS=Ue.fromCache(o),e._backFaceRS=e._frontFaceRS),r=ze(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=ze(o,!1),r.depthTest.func=Ja.GREATER,i?(r.cull={enabled:!0,face:Mi.BACK},e._frontFaceDepthFailRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceDepthFailRS=Ue.fromCache(r)):(e._frontFaceDepthFailRS=Ue.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function U1e(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=vr._appendOffsetToShader(e,r),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!1),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=zne(s),e._sp=ln.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!0),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly),r=D1e(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=zne(s),s=v1e(s),e._spDepthFail=ln.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._spDepthFail,o))}var lw=new R,Yne=new d;function qne(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=P1e(s,c));let a=wt(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return R.multiply(c,e._modelMatrix,lw),R.multiplyByPoint(lw,e.rtcCenter,Yne),R.setTranslation(lw,Yne,lw),lw}),a}function G1e(e,t,n,i,o,r,s,a){let c=qne(e,t,n,a),u;l(e._depthFailAppearance)&&(u=qne(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?Be.TRANSLUCENT:Be.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let A=r.length,g=0;for(let m=0;m<A;++m){let _;o&&(_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,++m),_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,l(e._depthFailAppearance)&&(o&&(++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++g}}vr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!R.equals(n,e._modelMatrix))for(R.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=le.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=le.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphereMorph[o]=le.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function z1e(e,t,n,i,o,r,s,a){vr._updateBoundingVolumes(e,t,o);let c;t.mode===ie.SCENE3D?c=e._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ie.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,A=Dn.castShadows(e.shadows),g=Dn.receiveShadows(e.shadows),m=n.length,_=a?2:1;_*=l(e._depthFailAppearance)?2:1;for(let y=0;y<m;++y){let C=Math.floor(y/_),E=n[y];E.modelMatrix=o,E.boundingVolume=c[C],E.cull=r,E.debugShowBoundingVolume=s,E.castShadows=A,E.receiveShadows=g,h?E.pickId="v_pickColor":E.pickId=void 0,u.push(E)}}}vr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ie.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===qr.FAILED)return;let t=e.context;if(l(this._batchTable)||b1e(this,t),this._batchTable.attributes.length>0){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==qr.COMPLETE&&this._state!==qr.COMBINED&&(this.asynchronous?M1e(this,e):N1e(this,e)),this._state===qr.COMBINED&&(O1e(this,e),jne(this,e),Q1e(this,e)),!this.show||this._state!==qr.COMPLETE)return;this._batchTableOffsetsUpdated||jne(this,e),this._recomputeBoundingSpheres&&L1e(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&(this._createRenderStatesFunction??k1e)(this,t,n,u),r&&(this._createShaderProgramFunction??U1e)(this,e,n),(o||r)&&(this._createCommandsFunction??G1e)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??z1e)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var V1e=new le,H1e=new le;function eie(e,t,n){if(n===hn.TOP){let i=le.clone(e,V1e),o=le.clone(e,H1e);o.center=d.add(o.center,t,o.center),e=le.union(i,o,e)}else n===hn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function W1e(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=q.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function j1e(e,t,n,i,o){return function(r){let s=Xne(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var Y1e=new d;function q1e(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&eie(i,d.fromArray(r.get(),0,Y1e),e._offsetInstanceExtend[n]),l(o)&&(i=le.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function K1e(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}vr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:W1e(s,n,f),set:j1e(s,n,f,this,u)}}return q1e(this,c,n),K1e(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};vr.prototype.isDestroyed=function(){return!1};vr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function uw(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===qr.COMPLETE||e._state===qr.FAILED})}var kn=vr;function X1e(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.value=e.value}var Jc=X1e;var fw=`#ifdef TEXTURE_COORDINATES
|
||
#ifdef SPHERICAL
|
||
in vec4 v_sphericalExtents;
|
||
#else // SPHERICAL
|
||
in vec2 v_inversePlaneExtents;
|
||
in vec4 v_westPlane;
|
||
in vec4 v_southPlane;
|
||
#endif // SPHERICAL
|
||
in vec3 v_uvMinAndSphericalLongitudeRotation;
|
||
in vec3 v_uMaxAndInverseDistance;
|
||
in vec3 v_vMaxAndInverseDistance;
|
||
#endif // TEXTURE_COORDINATES
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
in vec4 v_color;
|
||
#endif
|
||
|
||
#ifdef NORMAL_EC
|
||
vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) {
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth);
|
||
return eyeCoordinate.xyz / eyeCoordinate.w;
|
||
}
|
||
|
||
vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) {
|
||
vec2 glFragCoordXY = gl_FragCoord.xy;
|
||
// Sample depths at both offset and negative offset
|
||
float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw));
|
||
float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw));
|
||
// Explicitly evaluate both paths
|
||
// Necessary for multifrustum and for edges of the screen
|
||
bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw);
|
||
float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y);
|
||
float useDownOrLeft = float(useUpOrRight == 0.0);
|
||
vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth);
|
||
vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth);
|
||
return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft;
|
||
}
|
||
#endif // NORMAL_EC
|
||
|
||
void main(void)
|
||
{
|
||
#ifdef REQUIRES_EC
|
||
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw));
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
|
||
#endif
|
||
|
||
#ifdef REQUIRES_WC
|
||
vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate;
|
||
vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w;
|
||
#endif
|
||
|
||
#ifdef TEXTURE_COORDINATES
|
||
vec2 uv;
|
||
#ifdef SPHERICAL
|
||
// Treat world coords as a sphere normal for spherical coordinates
|
||
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate);
|
||
sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z;
|
||
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
|
||
uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w;
|
||
uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z;
|
||
#else // SPHERICAL
|
||
// Unpack planes and transform to eye space
|
||
uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x;
|
||
uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y;
|
||
#endif // SPHERICAL
|
||
#endif // TEXTURE_COORDINATES
|
||
|
||
#ifdef PICK
|
||
#ifdef CULL_FRAGMENTS
|
||
// When classifying translucent geometry, logDepthOrDepth == 0.0
|
||
// indicates a region that should not be classified, possibly due to there
|
||
// being opaque pixels there in another buffer.
|
||
// Check for logDepthOrDepth != 0.0 to make sure this should be classified.
|
||
if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) {
|
||
out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource
|
||
czm_writeDepthClamp();
|
||
}
|
||
#else // CULL_FRAGMENTS
|
||
out_FragColor.a = 1.0;
|
||
#endif // CULL_FRAGMENTS
|
||
#else // PICK
|
||
|
||
#ifdef CULL_FRAGMENTS
|
||
// When classifying translucent geometry, logDepthOrDepth == 0.0
|
||
// indicates a region that should not be classified, possibly due to there
|
||
// being opaque pixels there in another buffer.
|
||
if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) {
|
||
discard;
|
||
}
|
||
#endif
|
||
|
||
#ifdef NORMAL_EC
|
||
// Compute normal by sampling adjacent pixels in 2x2 block in screen space
|
||
vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0));
|
||
vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0));
|
||
vec3 normalEC = normalize(cross(leftRight, downUp));
|
||
#endif
|
||
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
|
||
vec4 color = czm_gammaCorrect(v_color);
|
||
#ifdef FLAT
|
||
out_FragColor = color;
|
||
#else // FLAT
|
||
czm_materialInput materialInput;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.positionToEyeEC = -eyeCoordinate.xyz;
|
||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||
material.diffuse = color.rgb;
|
||
material.alpha = color.a;
|
||
|
||
out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC);
|
||
#endif // FLAT
|
||
|
||
// Premultiply alpha. Required for classification primitives on translucent globe.
|
||
out_FragColor.rgb *= out_FragColor.a;
|
||
|
||
#else // PER_INSTANCE_COLOR
|
||
|
||
// Material support.
|
||
// USES_ is distinct from REQUIRES_, because some things are dependencies of each other or
|
||
// dependencies for culling but might not actually be used by the material.
|
||
|
||
czm_materialInput materialInput;
|
||
|
||
#ifdef USES_NORMAL_EC
|
||
materialInput.normalEC = normalEC;
|
||
#endif
|
||
|
||
#ifdef USES_POSITION_TO_EYE_EC
|
||
materialInput.positionToEyeEC = -eyeCoordinate.xyz;
|
||
#endif
|
||
|
||
#ifdef USES_TANGENT_TO_EYE
|
||
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC);
|
||
#endif
|
||
|
||
#ifdef USES_ST
|
||
// Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired
|
||
// texture coordinate system, which typically forms a tight oriented bounding box around the geometry.
|
||
// Shader is provided a set of reference points for remapping.
|
||
materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z;
|
||
materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z;
|
||
#endif
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef FLAT
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#else // FLAT
|
||
out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC);
|
||
#endif // FLAT
|
||
|
||
// Premultiply alpha. Required for classification primitives on translucent globe.
|
||
out_FragColor.rgb *= out_FragColor.a;
|
||
|
||
#endif // PER_INSTANCE_COLOR
|
||
czm_writeDepthClamp();
|
||
#endif // PICK
|
||
}
|
||
`;function If(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new d6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new d6;if(o.requiresTextureCoordinates=e,n instanceof gn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource}
|
||
${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}If.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof gn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof gn||(o=t.material.shaderSource),new We({defines:i,sources:[o,fw]})};If.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new We({defines:n,sources:[fw],pickColorQualifier:"in"})};If.prototype.createVertexShader=function(e,t,n,i){return cie(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};If.prototype.createPickVertexShader=function(e,t,n,i){return cie(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var tie=new d,nie=new Ae,iie={high:0,low:0};function cie(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=nie;u.longitude=D.PI,u.latitude=0,u.height=0;let f=s.project(u,tie),h=ei.encode(f.x,iie);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let A=nie;A.longitude=-D.PI,A.latitude=0,A.height=0;let g=s.project(A,tie);h=ei.encode(g.x,iie),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof gn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new We({defines:c,sources:[o]})}function d6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(d6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function oie(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/k.distance(t,e)}var J1e=[new k,new k,new k,new k];function lie(e,t){let n=J1e,i=k.unpack(t,0,n[0]),o=k.unpack(t,2,n[1]),r=k.unpack(t,4,n[2]);e.uMaxVmax=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/oie(i,o,r),a=1/oie(i,r,o);e.uvMinAndExtents=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var uie=new Ae,fie=new d,Z1e=new d,$1e=new d,WL={high:0,low:0};function die(e,t,n){let i=uie;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,fie);i.latitude=e.north;let r=t.project(i,Z1e);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,$1e),a=[0,0,0,0],c=[0,0,0,0],u=ei.encode(o.x,WL);a[0]=u.high,c[0]=u.low,u=ei.encode(o.y,WL),a[1]=u.high,c[1]=u.low,u=ei.encode(r.y,WL),a[2]=u.high,c[2]=u.low,u=ei.encode(s.x,WL),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var eNe=new R,tNe=new R,rie=new d,nNe=new Ae,iNe=[new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae];function oNe(e,t,n,i,o,r){let s=ae.center(e,nNe);s.height=n;let a=Ae.toCartesian(s,t,rie),c=kt.eastNorthUpToFixedFrame(a,t,eNe),u=R.inverse(c,tNe),f=e.west,h=e.east,A=e.north,g=e.south,m=iNe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=A,m[1].longitude=f,m[2].latitude=A,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let _=(f+h)*.5,y=(A+g)*.5;m[4].latitude=g,m[4].longitude=_,m[5].latitude=A,m[5].longitude=_,m[6].latitude=y,m[6].longitude=f,m[7].latitude=y,m[7].longitude=h;let C=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;for(let P=0;P<8;P++){m[P].height=n;let N=Ae.toCartesian(m[P],t,rie);R.multiplyByPoint(u,N,N),N.z=0,C=Math.min(C,N.x),E=Math.max(E,N.x),I=Math.min(I,N.y),b=Math.max(b,N.y)}let S=i;S.x=C,S.y=I,S.z=0,R.multiplyByPoint(c,S,S);let B=o;B.x=E,B.y=I,B.z=0,R.multiplyByPoint(c,B,B),d.subtract(B,S,o);let v=r;v.x=C,v.y=b,v.z=0,R.multiplyByPoint(c,v,v),d.subtract(v,S,r)}var rNe=new d,sNe=new d,aNe=new ei;If.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=fie,s=rNe,a=sNe;oNe(e,n,o??0,r,s,a);let c={};lie(c,t);let u=ei.fromCartesian(r,aNe);return c.southWest_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),die(e,i,c),c};var cNe=new d;function sie(e,t,n,i){let o=uie;o.latitude=e,o.longitude=t,o.height=0;let r=Ae.toCartesian(o,n,cNe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=D.fastApproximateAtan2(s,r.z),c=D.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var aie=new k;If.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=sie(e.south,e.west,n,aie),r=o.x,s=o.y,a=sie(e.north,e.east,n,aie),c=a.x,u=a.y,f=0;s>u&&(f=D.PI-s,s=-D.PI,u+=f),r-=D.EPSILON5,s-=D.EPSILON5,c+=D.EPSILON5,u+=D.EPSILON5;let h=1/(u-s),A=1/(c-r),g={sphericalExtents:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,A,h]}),longitudeRotation:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return lie(g,t),die(e,i,g),g};If.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};If.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function lNe(e){return Math.max(e.width,e.height)>If.MAX_WIDTH_FOR_PLANAR_EXTENTS}If.shouldUseSphericalCoordinates=function(e){return lNe(e)};If.MAX_WIDTH_FOR_PLANAR_EXTENTS=D.toRadians(1);var xf=If;var uNe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Zn=Object.freeze(uNe);var fNe={ZERO:ee.ZERO,KEEP:ee.KEEP,REPLACE:ee.REPLACE,INCREMENT:ee.INCR,DECREMENT:ee.DECR,INVERT:ee.INVERT,INCREMENT_WRAP:ee.INCR_WRAP,DECREMENT_WRAP:ee.DECR_WRAP},_t=Object.freeze(fNe);var jL={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};jL.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Zn.ALWAYS,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},backFunction:Zn.ALWAYS,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},reference:jL.CESIUM_3D_TILE_MASK,mask:jL.CESIUM_3D_TILE_MASK}};var Kt=Object.freeze(jL);function xC(e){e=e??V.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(xC.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});xC.isSupported=function(e){return e.context.stencilBuffer};function EI(e,t){let n=t?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:n,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}function m6(e){return{stencilTest:{enabled:e,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}}var dNe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function hNe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ue.fromCache(EI(o,!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(EI(o,!0)),e._rsColorPass=Ue.fromCache(m6(o,!1)),e._rsPickPass=Ue.fromCache(dNe)}function mNe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection;
|
||
`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0);
|
||
`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=We.replaceMain(s,"czm_non_compressed_main");let a=`void main()
|
||
{
|
||
${r} czm_non_compressed_main();
|
||
}`;return[i,o,s,a].join(`
|
||
`)}}function ANe(e,t){let n=t.context,i=e._primitive,o=GL;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=kn._appendDistanceDisplayConditionToShader(i,o),o=kn._modifyShaderPosition(e,o,t.scene3DOnly),o=kn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=mNe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new We({defines:[a],sources:[o]}),u=new We({sources:[IC]}),f=e._primitive._attributeLocations,h=new xf(s,r,e.appearance);if(e._spStencil=ln.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=We.createPickVertexShaderSource(o);m=kn._appendShowToShader(i,m),m=kn._updatePickColorAttribute(m);let _=h.createPickFragmentShader(!1),y=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=ln.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f}),s){let C=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(C)){let E=h.createPickFragmentShader(!0),I=h.createPickVertexShader([a],m,!0,t.mapProjection);C=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:I,fragmentShaderSource:E,attributeLocations:f})}e._spPick2D=C}}else e._spPick=ln.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=kn._appendShowToShader(i,o),c=new We({defines:[a],sources:[o]}),e._sp=ln.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let A=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=ln.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:A,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let _=h.createFragmentShader(!0),y=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f})}e._spColor2D=m}}function pNe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=Be.TERRAIN_CLASSIFICATION,s=nt.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=Be.TERRAIN_CLASSIFICATION;let _=e.appearance.material;if(l(_)&&(c=wt(c,_._uniforms)),r.uniformMap=c,s=nt.shallowClone(r,r.derivedCommands.tileset),s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let y=nt.shallowClone(r,r.derivedCommands.appearance2D);y.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=y,y=nt.shallowClone(s,s.derivedCommands.appearance2D),y.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=y}}let f=e._commandsIgnoreShow,h=e._spStencil,A=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=nt.shallowClone(t[A],f[g]);m.shaderProgram=h,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,A+=2}}function gNe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,A=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let _=nt.shallowClone(u,u.derivedCommands.pick2D);_.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=_,_=nt.shallowClone(f,f.derivedCommands.pick2D),_.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=_}}}function _Ne(e,t,n,i,o,r,s){pNe(e,r),gNe(e,s)}function hie(e,t){return Math.floor(e%t/2)}function h6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function mie(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function yNe(e,t,n,i,o,r,s,a){let c=e._primitive;kn._updateBoundingVolumes(c,t,o);let u;t.mode===ie.SCENE3D?u=c._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ie.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN,g=t.passes,m,_,y;if(g.render){let C=n.length;for(m=0;m<C;++m)_=u[hie(m,C)],h&&(y=n[m],h6(y,t,o,r,_,s)),A&&(y=n[m].derivedCommands.tileset,h6(y,t,o,r,_,s));if(t.invertClassification){let E=e._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=u[m],y=E[m],h6(y,t,o,r,_,s)}}if(g.pick){let C=i.length,E=c._pickOffsets;for(m=0;m<C;++m){let I=E[hie(m,C)];_=u[I.index],h&&(y=i[m],mie(y,t,o,r,_)),A&&(y=i[m].derivedCommands.tileset,mie(y,t,o,r,_))}}}xC.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,A=!1,g=!1;for(r>0&&(c=o[0].attributes,A=xf.hasAttributesForSphericalExtents(c),g=xf.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let _=a.attributes.color;l(_)&&(u=!0),f=f&&l(_)&&en.equals(h,_)}if(!f&&!A&&!g)throw new me("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new gn({flat:!0}),this.appearance=t),this._usePickOffsets=!A&&!g,this._hasSphericalExtentsAttribute=A,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Rt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:this._pickPrimitive??n});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(_,y){n._createBoundingVolumeFunction(_,y)}),i._createRenderStatesFunction=function(_,y,C,E){hNe(n,y)},i._createShaderProgramFunction=function(_,y,C){ANe(n,y)},i._createCommandsFunction=function(_,y,C,E,I,b,S){_Ne(n,void 0,void 0,!0,!1,b,S)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){n._updateAndQueueCommandsFunction(_,y,C,E,I,b,S,B)}:i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){yNe(n,y,C,E,I,b,S,B)},this._primitive=new kn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ue.fromCache(EI(!1,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!1,!0)),this._rsColorPass=Ue.fromCache(m6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ue.fromCache(EI(!0,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!0,!0)),this._rsColorPass=Ue.fromCache(m6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};xC.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};xC.prototype.isDestroyed=function(){return!1};xC.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var dw=xC;var CNe={u_globeMinimumAltitude:function(){return 55e3}};function Nl(e){e=e??V.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new gn({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=wi._defaultMaxTerrainHeight,this._minTerrainHeight=wi._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:CNe}}Object.defineProperties(Nl.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});Nl.isSupported=dw.isSupported;function Aie(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function pie(e){return function(t,n){return e._minHeight}}var ENe=new d,INe=new d,xNe=new d,bNe=new Ae,TNe=new ae;function YL(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let A=d.unpack(i,h,ENe),g=d.unpack(o,h,INe),m=d.add(A,g,xNe),_=n.cartesianToCartographic(m,bNe),y=_.latitude,C=_.longitude;s=Math.min(s,y),a=Math.min(a,C),c=Math.max(c,y),u=Math.max(u,C)}let f=TNe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function SNe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function wNe(e,t,n){let i=t.mapProjection.ellipsoid,o=YL(t,n),r=Qn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=le.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function A6(e,t){return Math.floor(e%t/2)}function p6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function gie(e,t,n,i,o,r){let s=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function BNe(e,t,n,i,o,r,s,a){let c;t.mode===ie.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==Jn.CESIUM_3D_TILE,h=u!==Jn.TERRAIN,A=t.passes,g=e._primitive,m,_,y;if(A.render){let C=n.length;for(m=0;m<C;++m)_=c[A6(m,C)],f&&(y=n[m],p6(e,y,t,o,r,_,s)),h&&(y=n[m].derivedCommands.tileset,p6(e,y,t,o,r,_,s));if(t.invertClassification){let E=g._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=c[m],y=E[m],p6(e,y,t,o,r,_,s)}}if(A.pick){let C=i.length,E;for(e._useFragmentCulling||(E=g._primitive._pickOffsets),m=0;m<C;++m){if(_=c[A6(m,C)],!e._useFragmentCulling){let I=E[A6(m,C)];_=c[I.index]}f&&(y=i[m],gie(e,y,t,o,r,_)),h&&(y=i[m].derivedCommands.tileset,gie(e,y,t,o,r,_))}}}Nl.initializeTerrainHeights=function(){return wi.initialize()};Nl.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){Nl.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let _=YL(e,r);l(h)?l(_)&&ae.union(h,_,h):h=ae.clone(_);let y=o.id;if(l(y)&&l(_)){let C=wi.getBoundingSphere(_,i);this._boundingSpheresKeys.push(y),this._boundingSpheres.push(C)}s=r.constructor,!l(s)||l(s.createShadowVolume)}SNe(this,h,i);let A=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Yr.getHeight(this._minTerrainHeight,A,g),this._maxHeight=Yr.getHeight(this._maxTerrainHeight,A,g);let m=Nl._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let _,y=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=YL(e,r),xf.shouldUseSphericalCoordinates(h)){y=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let C=YL(e,r),E=r.textureCoordinateRotationPoints;y?_=xf.getPlanarTextureCoordinateAttributes(C,E,i,e.mapProjection,this._maxHeight):_=xf.getSphericalExtentGeometryInstanceAttributes(C,E,i,e.mapProjection);let I=o.attributes;for(let b in I)I.hasOwnProperty(b)&&(_[b]=I[b]);u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:_,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(_,y){wNe(t,_,y)},n._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){BNe(t,y,C,E,I,b,S,B)},this._primitive=new dw(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Nl.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};Nl.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};Nl.prototype.isDestroyed=function(){return!1};Nl.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};Nl._supportsMaterials=function(e){return e.depthTexture};Nl.supportsMaterials=function(e){return Nl._supportsMaterials(e.frameState.context)};var Ll=Nl;function II(){me.throwInstantiationError()}Object.defineProperties(II.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});II.prototype.getType=me.throwInstantiationError;II.prototype.getValue=me.throwInstantiationError;II.prototype.equals=me.throwInstantiationError;var DNe=new K;II.getValue=function(e,t,n){let i;return l(e)||(e=K.now(DNe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=ao.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==ao.ColorType)&&(n=ao.fromType(ao.ColorType)),G.clone(G.WHITE,n.uniforms.color),n)};var gr=II;function bC(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}bC.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!j.getValueOrDefault(t.show,n,!0)};bC.prototype._setOptions=me.throwInstantiationError;bC.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof Jt,h,A=t._getIsClosed(c);if(f)h=new gn({closed:A,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=gr.getValue(e,u,this._material);this._material=g,h=new Io({material:g,translucent:g.isTranslucent(),closed:A})}if(n)c.vertexFormat=gn.VERTEX_FORMAT,this._primitive=o.add(new Ll({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),j.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new kn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=j.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new kn({geometryInstances:u,appearance:new gn({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};bC.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(n)&&!n.ready||l(i)&&!i.ready?mt.PENDING:mt.FAILED};bC.prototype.isDestroyed=function(){return!1};bC.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var yi=bC;var _ie={};function hw(e,t){l(_ie[e])||(_ie[e]=!0,console.warn(t??e))}hw.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";hw.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";hw.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";hw.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var yt=hw;var vNe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},Tg=Object.freeze(vNe);var PNe={NONE:0,GEODESIC:1,RHUMB:2},un=Object.freeze(PNe);var yie=D.EPSILON10;function RNe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,yie)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],yie)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var No=RNe;function MNe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,A=h*h,g=1-A,m=Math.sqrt(g),_=t/4,y=_*_,C=y*_,E=y*y,I=1+_-3*y/4+5*C/4-175*E/64,b=1-_+15*y/8-35*C/8,S=1-3*_+35*y/4,B=1-5*_,v=I*f-b*Math.sin(2*f)*_/2-S*Math.sin(4*f)*y/16-B*Math.sin(6*f)*C/48-Math.sin(8*f)*5*E/512,P=e._constants;P.a=n,P.b=i,P.f=o,P.cosineHeading=r,P.sineHeading=s,P.tanU=a,P.cosineU=c,P.sineU=u,P.sigma=f,P.sineAlpha=h,P.sineSquaredAlpha=A,P.cosineSquaredAlpha=g,P.cosineAlpha=m,P.u2Over4=_,P.u4Over16=y,P.u6Over64=C,P.u8Over256=E,P.a0=I,P.a1=b,P.a2=S,P.a3=B,P.distanceRatio=v}function NNe(e,t){return e*t*(4+e*(4-3*t))/16}function Cie(e,t,n,i,o,r,s){let a=NNe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function LNe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),A=Math.sin(u),g=Math.cos(f),m=Math.sin(f),_=h*g,y=h*m,C=A*m,E=A*g,I=c,b=D.TWO_PI,S=Math.cos(I),B=Math.sin(I),v,P,N,L,p;do{S=Math.cos(I),B=Math.sin(I);let F=y-E*S;N=Math.sqrt(g*g*B*B+F*F),P=C+_*S,v=Math.atan2(N,P);let H;N===0?(H=0,L=1):(H=_*B/N,L=1-H*H),b=I,p=P-2*C/L,isFinite(p)||(p=0),I=c+Cie(a,H,L,v,N,P,p)}while(Math.abs(I-b)>D.EPSILON12);let x=L*(t*t-n*n)/(n*n),T=1+x*(4096+x*(x*(320-175*x)-768))/16384,w=x*(256+x*(x*(74-47*x)-128))/1024,M=p*p,O=w*N*(p+w*(P*(2*M-1)-w*p*(4*N*N-3)*(4*M-3)/6)/4),U=n*T*(v-O),Q=Math.atan2(g*B,y-E*S),z=Math.atan2(h*B,y*S-E);e._distance=U,e._startHeading=Q,e._endHeading=z,e._uSquared=x}var ONe=new d,g6=new d;function Eie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,g6),ONe),r=d.normalize(i.cartographicToCartesian(n,g6),g6);LNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=Ae.clone(t,e._start),e._end=Ae.clone(n,e._end),e._start.height=0,e._end.height=0,MNe(e)}function mw(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Eie(this,e,t,i)}Object.defineProperties(mw.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});mw.prototype.setEndPoints=function(e,t){Eie(this,e,t,this._ellipsoid)};mw.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};mw.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,A=i*h,g=n.u8Over256,m=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*A*g*o/3+i*(1-m+7*y/4-15*_/4+579*g/64-(y-15*_/4+187*g/16)*o-(5*_/4-115*g/16)*r-29*g*s/16)+(m/2-y+71*_/32-85*g/16)*a+(5*y/16-5*_/4+383*g/96)*c-h*((_-11*g/2)*a+5*g*c/2)+(29*_/96-29*g/16)*u+539*g*f/1536,E=Math.asin(Math.sin(C)*n.cosineAlpha),I=Math.atan(n.a/n.b*Math.tan(E));C=C-n.sigma;let b=Math.cos(2*n.sigma+C),S=Math.sin(C),B=Math.cos(C),v=n.cosineU*B,P=n.sineU*S,L=Math.atan2(S*n.sineHeading,v-P*n.cosineHeading)-Cie(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,S,B,b);return l(t)?(t.longitude=this._start.longitude+L,t.latitude=I,t.height=0,t):new Ae(this._start.longitude+L,I,0)};var Sg=mw;function y6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),A=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),_=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*A+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*_)}function FNe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,A=h*c,g=A*c,m=Math.sin(2*i),_=Math.cos(2*i),y=Math.sin(4*i),C=Math.cos(4*i),E=Math.sin(6*i),I=Math.cos(6*i),b=Math.sin(8*i),S=Math.cos(8*i),B=Math.sin(10*i),v=Math.cos(10*i),P=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*A/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*A/16384+i*(399985-90560*o+512*s)*g/5242880)*_+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*A/16384-i*(33152*o-112599)*g/1048576)*C+(151*i*h/4096+4681*i*A/65536+1479*i*g/16384-453*r*g/32768)*I+(1097*i*A/65536+42783*i*g/1048576)*S+8011*i*g/1048576*v+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*A/524288-33*o*A/512+s*A/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*A/4096-315*o*A/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*y+(151*f/6144+151*h/4096+5019*A/131072-453*o*A/16384+26965*g/786432-8607*o*g/131072)*E+(1097*h/131072+1097*A/65536+225797*g/10485760-1097*o*g/65536)*b+(8011*A/2621440+8011*g/1048576)*B+293393*g/251658240*P}function xI(e,t){if(e===0)return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function QNe(e,t,n,i,o){let r=xI(e._ellipticity,n),s=xI(e._ellipticity,o);return Math.atan2(D.negativePiToPi(i-t),s-r)}function kNe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(D.equalsEpsilon(Math.abs(a),D.PI_OVER_TWO,D.EPSILON8))if(t===n)u=t*Math.cos(o)*D.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*D.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=y6(e._ellipticity,t,o);u=(y6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var UNe=new d,_6=new d;function Iie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,_6),UNe),r=d.normalize(i.cartographicToCartesian(n,_6),_6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=Ae.clone(t,e._start),e._start.height=0,e._end=Ae.clone(n,e._end),e._end.height=0,e._heading=QNe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=kNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function xie(e,t,n,i,o,r){if(n===0)return Ae.clone(e,r);let s=o*o,a,c,u;if(Math.abs(D.PI_OVER_TWO-Math.abs(t))>D.EPSILON8){let f=y6(o,i,e.latitude),h=n*Math.cos(t),A=f+h;if(c=FNe(A,o,i),Math.abs(t)<D.EPSILON10)a=D.negativePiToPi(e.longitude);else{let g=xI(o,e.latitude),m=xI(o,c);u=Math.tan(t)*(m-g),a=D.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=D.negativePiToPi(e.longitude+u):a=D.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new Ae(a,c,0)}function zA(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Iie(this,e,t,i)}Object.defineProperties(zA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});zA.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??te.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=D.negativePiToPi(t);let h=xie(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new zA(e,h,r):(o.setEndPoints(e,h),o)};zA.prototype.setEndPoints=function(e,t){Iie(this,e,t,this._ellipsoid)};zA.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};zA.prototype.interpolateUsingSurfaceDistance=function(e,t){return xie(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};zA.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=D.negativePiToPi(e),D.equalsEpsilon(Math.abs(e),Math.PI,D.EPSILON14)&&(e=D.sign(r.longitude)*Math.PI),l(t)||(t=new Ae),Math.abs(D.PI_OVER_TWO-o)<=D.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(D.equalsEpsilon(Math.abs(D.PI_OVER_TWO-o),D.PI_OVER_TWO,D.EPSILON8))return D.equalsEpsilon(e,r.longitude,D.EPSILON12)?void 0:(t.longitude=e,t.latitude=D.PI_OVER_TWO*D.sign(D.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(D.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let A=n*Math.sin(h),g=(1+A)/(1-A);f=2*Math.atan(c*Math.pow(g/u,n/2))-D.PI_OVER_TWO}while(!D.equalsEpsilon(f,h,D.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};zA.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(D.equalsEpsilon(Math.abs(i),D.PI_OVER_TWO,D.EPSILON8))return;let r=xI(n,o.latitude),s=xI(n,e),a=Math.tan(i)*(s-r),c=D.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new Ae(c,e,0)};var Ic=zA;var w6=[Hi,Yi],GNe=w6.length,Vie=Math.cos(D.toRadians(30)),bie=Math.cos(D.toRadians(150)),Hie=0,Wie=1e3;function Bg(e){e=e??V.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??un.GEODESIC,this._ellipsoid=te.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Bg.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+te.packedLength+1+1}}});Bg.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<GNe;i++)if(t instanceof w6[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var zNe=new d,Tie=new d,Sie=new d;function S6(e,t,n,i,o){let r=Zc(i,e,0,zNe),s=Zc(i,e,n,Tie),a=Zc(i,t,0,Sie),c=VA(s,r,Tie),u=VA(a,r,Sie);return d.cross(u,c,o),d.normalize(o,o)}var VNe=new Ae,HNe=new d,WNe=new d,jNe=new d;function C6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===un.GEODESIC?h=new Sg(e,t,s):r===un.RHUMB&&(h=new Ic(e,t,s));let A=h.surfaceDistance;if(A<o)return;let g=S6(e,t,i,s,jNe),m=Math.ceil(A/o),_=A/m,y=_,C=m-1,E=a.length;for(let I=0;I<C;I++){let b=h.interpolateUsingSurfaceDistance(y,VNe),S=Zc(s,b,n,HNe),B=Zc(s,b,i,WNe);d.pack(g,a,E),d.pack(S,c,E),d.pack(B,u,E),f.push(b.latitude),f.push(b.longitude),E+=3,y+=_}}var E6=new Ae;function Zc(e,t,n,i){return Ae.clone(t,E6),E6.height=n,Ae.toCartesian(E6,e,i)}Bg.pack=function(e,t,n){let i=n??0,o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,te.pack(e._ellipsoid,t,i),i+=te.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};Bg.unpack=function(e,t,n){let i=t??0,o=e[i++],r=new Array(o);for(let A=0;A<o;A++)r[A]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=te.unpack(e,i);i+=te.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new Bg({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function VA(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function wie(e,t,n,i){return i=VA(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var YNe=new d,qNe=new d,KNe=new d,jie=new d,XNe=0,JNe=-1;function I6(e,t,n,i,o){let r=VA(n,t,jie),s=wie(e,t,r,YNe),a=wie(i,t,r,qNe);if(D.equalsEpsilon(d.dot(s,a),JNe,D.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,KNe);return d.dot(a,c)<XNe&&(o=d.negate(o,o)),o}var JL=mn.fromPointNormal(d.ZERO,d.UNIT_Y),ZNe=new d,$Ne=new d,eLe=new d,tLe=new d,nLe=new d,qL=new d,KL=new Ae,Bie=new Ae,Die=new Ae;Bg.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new w6[e._projectionIndex](i),a=Hie,c=Wie,u,f,h=e._positions,A=h.length;A===2&&(n=!1);let g,m,_,y,C=new Ic(void 0,void 0,i),E,I,b,S=[h[0]];for(f=0;f<A-1;f++)g=h[f],m=h[f+1],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))),S.push(m);n&&(g=h[A-1],m=h[0],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))));let B=S.length,v=new Array(B);for(f=0;f<B;f++){let W=Ae.fromCartesian(S[f],i);W.height=0,v[f]=W}if(v=No(v,Ae.equalsEpsilon),B=v.length,B<2)return;let P=[],N=[],L=[],p=[],x=ZNe,T=$Ne,w=eLe,M=tLe,O=nLe,U=v[0],Q=v[1],z=v[B-1];for(x=Zc(i,z,a,x),M=Zc(i,Q,a,M),T=Zc(i,U,a,T),w=Zc(i,U,c,w),n?O=I6(x,T,w,M,O):O=S6(U,Q,c,i,O),d.pack(O,N,0),d.pack(T,L,0),d.pack(w,p,0),P.push(U.latitude),P.push(U.longitude),C6(U,Q,a,c,o,r,i,N,L,p,P),f=1;f<B-1;++f){x=d.clone(T,x),T=d.clone(M,T);let W=v[f];Zc(i,W,c,w),Zc(i,v[f+1],a,M),I6(x,T,w,M,O),u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(W.latitude),P.push(W.longitude),C6(v[f],v[f+1],a,c,o,r,i,N,L,p,P)}let F=v[B-1],H=v[B-2];if(T=Zc(i,F,a,T),w=Zc(i,F,c,w),n){let W=v[0];x=Zc(i,H,a,x),M=Zc(i,W,a,M),O=I6(x,T,w,M,O)}else O=S6(H,F,c,i,O);if(u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(F.latitude),P.push(F.longitude),n){for(C6(F,U,a,c,o,r,i,N,L,p,P),u=N.length,f=0;f<3;++f)N[u+f]=N[f],L[u+f]=L[f],p[u+f]=p[f];P.push(U.latitude),P.push(U.longitude)}return BLe(n,s,L,p,N,P,t)};var iLe=new d,oLe=new J,rLe=new Le;function vie(e,t,n,i){let o=VA(n,t,iLe),r=d.dot(o,e);if(r>Vie||r<bie){let s=VA(i,n,jie),a=r<bie?D.PI_OVER_TWO:-D.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,rLe),u=J.fromQuaternion(c,oLe);return J.multiplyByVector(u,e,e),!0}return!1}var Pie=new Ae,sLe=new d,Rie=new d;function Aw(e,t,n,i,o){let r=Ae.toCartesian(t,e._ellipsoid,sLe),s=d.add(r,n,Rie),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,Pie);Math.abs(t.longitude-u.longitude)>D.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Rie),u=c.cartesianToCartographic(s,Pie)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var aLe=new d,Mie=new d;function Nie(e,t,n,i,o,r){let s=d.subtract(t,e,aLe);d.normalize(s,s);let a=n-Hie,c=d.multiplyByScalar(s,a,Mie);d.add(e,c,o);let u=i-Wie;c=d.multiplyByScalar(s,u,Mie),d.add(t,c,r)}var cLe=new d;function XL(e,t){let n=mn.getPointDistance(JL,e),i=mn.getPointDistance(JL,t),o=cLe;D.equalsEpsilon(n,0,D.EPSILON2)?(o=VA(t,e,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(e,o,e)):D.equalsEpsilon(i,0,D.EPSILON2)&&(o=VA(e,t,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(t,o,t))}function lLe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(D.equalsEpsilon(n,D.PI,D.EPSILON11)){let o=D.sign(t.longitude);return e.longitude=o*(n-D.EPSILON11),1}else if(D.equalsEpsilon(i,D.PI,D.EPSILON11)){let o=D.sign(e.longitude);return t.longitude=o*(i-D.EPSILON11),2}return 0}var Yie=new Ae,qie=new Ae,Lie=new d,x6=new d,Oie=new d,Fie=new d,uLe=new d,Qie=new d,fLe=[Yie,qie],dLe=new ae,hLe=new d,mLe=new d,ALe=new d,pLe=new d,gLe=new d,_Le=new d,b6=new d,T6=new d,yLe=new d,CLe=new d,ELe=new d,kie=new d,ILe=new d,xLe=new d,bLe=new ei,TLe=new ei,Uie=new d,SLe=new d,Gie=new d,wLe=[new le,new le],Kie=[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],zie=Kie.length;function BLe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,A=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),_=new Float64Array(h*3),y=new Float32Array(A),C=new Float32Array(A),E=new Float32Array(A),I=new Float32Array(A),b=new Float32Array(A),S,B,v,P;s&&(S=new Float32Array(A),B=new Float32Array(A),v=new Float32Array(A),P=new Float32Array(h*2));let N=r.length/2,L=0,p=Yie;p.height=0;let x=qie;x.height=0;let T=Lie,w=x6;if(s)for(c=0,a=1;a<N;a++)p.latitude=r[c],p.longitude=r[c+1],x.latitude=r[c+2],x.longitude=r[c+3],T=t.project(p,T),w=t.project(x,w),L+=d.distance(T,w),c+=2;let M=i.length/3;w=d.unpack(i,0,w);let O=0;for(c=3,a=1;a<M;a++)T=d.clone(w,T),w=d.unpack(i,c,w),O+=d.distance(T,w),c+=3;let U;c=3;let Q=0,z=0,F=0,H=0,W=!1,Z=d.unpack(n,0,Fie),Y=d.unpack(i,0,x6),$=d.unpack(o,0,Qie);if(e){let Te=d.unpack(n,n.length-6,Oie);vie($,Te,Z,Y)&&($=d.negate($,$))}let X=0,he=0,ge=0;for(a=0;a<f;a++){let Te=d.clone(Z,Oie),ke=d.clone(Y,Lie),Ge=d.clone($,uLe);W&&(Ge=d.negate(Ge,Ge)),Z=d.unpack(n,c,Fie),Y=d.unpack(i,c,x6),$=d.unpack(o,c,Qie),W=vie($,Te,Z,Y),p.latitude=r[Q],p.longitude=r[Q+1],x.latitude=r[Q+2],x.longitude=r[Q+3];let qe,tt,$t,it;if(s){let _i=lLe(p,x);qe=t.project(p,gLe),tt=t.project(x,_Le);let _s=VA(tt,qe,Uie);_s.y=Math.abs(_s.y),$t=b6,it=T6,_i===0||d.dot(_s,d.UNIT_Y)>Vie?($t=Aw(t,p,Ge,qe,b6),it=Aw(t,x,$,tt,T6)):_i===1?(it=Aw(t,x,$,tt,T6),$t.x=0,$t.y=D.sign(p.longitude-Math.abs(x.longitude)),$t.z=0):($t=Aw(t,p,Ge,qe,b6),it.x=0,it.y=D.sign(p.longitude-x.longitude),it.z=0)}let tn=d.distance(ke,Y),Wt=ei.fromCartesian(Te,bLe),vt=d.subtract(Z,Te,yLe),bi=d.normalize(vt,kie),di=d.subtract(ke,Te,CLe);di=d.normalize(di,di);let Ot=d.cross(bi,di,kie);Ot=d.normalize(Ot,Ot);let Tt=d.cross(di,Ge,ILe);Tt=d.normalize(Tt,Tt);let ii=d.subtract(Y,Z,ELe);ii=d.normalize(ii,ii);let Ct=d.cross($,ii,xLe);Ct=d.normalize(Ct,Ct);let Ro=tn/O,Qo=X/O,ya=0,mr,Tr,Oe,lt=0,Ke=0;if(s){ya=d.distance(qe,tt),mr=ei.fromCartesian(qe,TLe),Tr=d.subtract(tt,qe,Uie),Oe=d.normalize(Tr,SLe);let _i=Oe.x;Oe.x=Oe.y,Oe.y=-_i,lt=ya/L,Ke=he/L}for(U=0;U<8;U++){let _i=H+U*4,_s=z+U*2,Wo=_i+3,Ca=U<4?1:-1,uo=U===2||U===3||U===6||U===7?1:-1;d.pack(Wt.high,y,_i),y[Wo]=vt.x,d.pack(Wt.low,C,_i),C[Wo]=vt.y,d.pack(Tt,E,_i),E[Wo]=vt.z,d.pack(Ct,I,_i),I[Wo]=Ro*Ca,d.pack(Ot,b,_i);let jo=Qo*uo;jo===0&&uo<0&&(jo=9),b[Wo]=jo,s&&(S[_i]=mr.high.x,S[_i+1]=mr.high.y,S[_i+2]=mr.low.x,S[_i+3]=mr.low.y,v[_i]=-$t.y,v[_i+1]=$t.x,v[_i+2]=it.y,v[_i+3]=-it.x,B[_i]=Tr.x,B[_i+1]=Tr.y,B[_i+2]=Oe.x,B[_i+3]=Oe.y,P[_s]=lt*Ca,jo=Ke*uo,jo===0&&uo<0&&(jo=9),P[_s+1]=jo)}let $e=ALe,pt=pLe,Xt=hLe,xn=mLe,lo=ae.fromCartographicArray(fLe,dLe),ro=wi.getMinimumMaximumHeights(lo,u),$s=ro.minimumTerrainHeight,ea=ro.maximumTerrainHeight;ge+=Math.abs($s),ge+=Math.abs(ea),Nie(Te,ke,$s,ea,$e,Xt),Nie(Z,Y,$s,ea,pt,xn);let Vn=d.multiplyByScalar(Ot,D.EPSILON5,Gie);d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F),d.pack(pt,_,F+3),d.pack(xn,_,F+6),d.pack(Xt,_,F+9),Vn=d.multiplyByScalar(Ot,-2*D.EPSILON5,Gie),d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F+12),d.pack(pt,_,F+15),d.pack(xn,_,F+18),d.pack(Xt,_,F+21),Q+=2,c+=3,z+=16,F+=24,H+=32,X+=tn,he+=ya}c=0;let fe=0;for(a=0;a<f;a++){for(U=0;U<zie;U++)m[c+U]=Kie[U]+fe;fe+=8,c+=zie}let ye=wLe;le.fromVertices(n,d.ZERO,3,ye[0]),le.fromVertices(i,d.ZERO,3,ye[1]);let Ie=le.fromBoundingSpheres(ye);Ie.radius+=ge/(f*2);let ve={position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,normalize:!1,values:_}),startHiAndForwardOffsetX:wg(y),startLoAndForwardOffsetY:wg(C),startNormalAndForwardOffsetZ:wg(E),endNormalAndTextureCoordinateNormalizationX:wg(I),rightNormalAndTextureCoordinateNormalizationY:wg(b)};return s&&(ve.startHiLo2D=wg(S),ve.offsetAndRight2D=wg(B),ve.startEndNormals2D=wg(v),ve.texcoordNormalization2D=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,normalize:!1,values:P})),new ht({attributes:ve,indices:m,boundingSphere:Ie})}function wg(e){return new De({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}Bg._projectNormal=Aw;var bI=Bg;var ZL=`in vec4 v_startPlaneNormalEcAndHalfWidth;
|
||
in vec4 v_endPlaneNormalEcAndBatchId;
|
||
in vec4 v_rightPlaneEC; // Technically can compute distance for this here
|
||
in vec4 v_endEcAndStartEcX;
|
||
in vec4 v_texcoordNormalizationAndStartEcYZ;
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
in vec4 v_color;
|
||
#endif
|
||
|
||
void main(void)
|
||
{
|
||
float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)));
|
||
vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw);
|
||
|
||
// Discard for sky
|
||
if (logDepthOrDepth == 0.0) {
|
||
#ifdef DEBUG_SHOW_VOLUME
|
||
out_FragColor = vec4(1.0, 0.0, 0.0, 0.5);
|
||
return;
|
||
#else // DEBUG_SHOW_VOLUME
|
||
discard;
|
||
#endif // DEBUG_SHOW_VOLUME
|
||
}
|
||
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
|
||
eyeCoordinate /= eyeCoordinate.w;
|
||
|
||
float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate);
|
||
// Check distance of the eye coordinate against the right-facing plane
|
||
float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz);
|
||
|
||
// Check eye coordinate against the mitering planes
|
||
float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz);
|
||
float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz);
|
||
|
||
if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) {
|
||
#ifdef DEBUG_SHOW_VOLUME
|
||
out_FragColor = vec4(1.0, 0.0, 0.0, 0.5);
|
||
return;
|
||
#else // DEBUG_SHOW_VOLUME
|
||
discard;
|
||
#endif // DEBUG_SHOW_VOLUME
|
||
}
|
||
|
||
// Check distance of the eye coordinate against start and end planes with normals in the right plane.
|
||
// For computing unskewed lengthwise texture coordinate.
|
||
// Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking.
|
||
|
||
// aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward"
|
||
vec3 alignedPlaneNormal;
|
||
|
||
// start aligned plane
|
||
alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz);
|
||
alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz));
|
||
distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz);
|
||
|
||
// end aligned plane
|
||
alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz);
|
||
alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz));
|
||
distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz);
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
out_FragColor = czm_gammaCorrect(v_color);
|
||
#else // PER_INSTANCE_COLOR
|
||
// Clamp - distance to aligned planes may be negative due to mitering,
|
||
// so fragment texture coordinate might be out-of-bounds.
|
||
float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0);
|
||
s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y;
|
||
float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth);
|
||
|
||
czm_materialInput materialInput;
|
||
|
||
materialInput.s = s;
|
||
materialInput.st = vec2(s, t);
|
||
materialInput.str = vec3(s, t, 0.0);
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#endif // PER_INSTANCE_COLOR
|
||
|
||
// Premultiply alpha. Required for classification primitives on translucent globe.
|
||
out_FragColor.rgb *= out_FragColor.a;
|
||
|
||
czm_writeDepthClamp();
|
||
}
|
||
`;var $L=`in vec3 v_forwardDirectionEC;
|
||
in vec3 v_texcoordNormalizationAndHalfWidth;
|
||
in float v_batchId;
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
in vec4 v_color;
|
||
#else
|
||
in vec2 v_alignedPlaneDistances;
|
||
in float v_texcoordT;
|
||
#endif
|
||
|
||
float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) {
|
||
// We don't expect the ray to ever be parallel to the plane
|
||
return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction);
|
||
}
|
||
|
||
void main(void)
|
||
{
|
||
vec4 eyeCoordinate = gl_FragCoord;
|
||
eyeCoordinate /= eyeCoordinate.w;
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
out_FragColor = czm_gammaCorrect(v_color);
|
||
#else // PER_INSTANCE_COLOR
|
||
// Use distances for planes aligned with segment to prevent skew in dashing
|
||
float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x);
|
||
float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y);
|
||
|
||
// Clamp - distance to aligned planes may be negative due to mitering
|
||
distanceFromStart = max(0.0, distanceFromStart);
|
||
distanceFromEnd = max(0.0, distanceFromEnd);
|
||
|
||
float s = distanceFromStart / (distanceFromStart + distanceFromEnd);
|
||
s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y;
|
||
|
||
czm_materialInput materialInput;
|
||
|
||
materialInput.s = s;
|
||
materialInput.st = vec2(s, v_texcoordT);
|
||
materialInput.str = vec3(s, v_texcoordT, 0.0);
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#endif // PER_INSTANCE_COLOR
|
||
}
|
||
`;var eO=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
|
||
in vec4 startHiAndForwardOffsetX;
|
||
in vec4 startLoAndForwardOffsetY;
|
||
in vec4 startNormalAndForwardOffsetZ;
|
||
in vec4 endNormalAndTextureCoordinateNormalizationX;
|
||
in vec4 rightNormalAndTextureCoordinateNormalizationY;
|
||
in vec4 startHiLo2D;
|
||
in vec4 offsetAndRight2D;
|
||
in vec4 startEndNormals2D;
|
||
in vec2 texcoordNormalization2D;
|
||
|
||
in float batchId;
|
||
|
||
out vec3 v_forwardDirectionEC;
|
||
out vec3 v_texcoordNormalizationAndHalfWidth;
|
||
out float v_batchId;
|
||
|
||
// For materials
|
||
#ifdef WIDTH_VARYING
|
||
out float v_width;
|
||
#endif
|
||
#ifdef ANGLE_VARYING
|
||
out float v_polylineAngle;
|
||
#endif
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
out vec4 v_color;
|
||
#else
|
||
out vec2 v_alignedPlaneDistances;
|
||
out float v_texcoordT;
|
||
#endif
|
||
|
||
// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume.
|
||
// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient.
|
||
void main()
|
||
{
|
||
v_batchId = batchId;
|
||
|
||
// Start position
|
||
vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw));
|
||
vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz);
|
||
vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime);
|
||
vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz;
|
||
vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz;
|
||
vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz;
|
||
|
||
// Start plane
|
||
vec4 startPlane2D;
|
||
vec4 startPlane3D;
|
||
startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy);
|
||
startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz;
|
||
startPlane2D.w = -dot(startPlane2D.xyz, posEc2D);
|
||
startPlane3D.w = -dot(startPlane3D.xyz, posEc3D);
|
||
|
||
// Right plane
|
||
vec4 rightPlane2D;
|
||
vec4 rightPlane3D;
|
||
rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw);
|
||
rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz;
|
||
rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D);
|
||
rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D);
|
||
|
||
// End position
|
||
posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0);
|
||
posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0);
|
||
posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime);
|
||
posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz;
|
||
posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz;
|
||
vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz;
|
||
vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w));
|
||
vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy));
|
||
|
||
// End plane
|
||
vec4 endPlane2D;
|
||
vec4 endPlane3D;
|
||
endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw);
|
||
endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz;
|
||
endPlane2D.w = -dot(endPlane2D.xyz, posEc2D);
|
||
endPlane3D.w = -dot(endPlane3D.xyz, posEc3D);
|
||
|
||
// Forward direction
|
||
v_forwardDirectionEC = normalize(endEC - startEC);
|
||
|
||
vec2 cleanTexcoordNormalization2D;
|
||
cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x);
|
||
cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y));
|
||
vec2 cleanTexcoordNormalization3D;
|
||
cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w);
|
||
cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w;
|
||
cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y));
|
||
|
||
v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime);
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
v_color = czm_batchTable_color(batchId);
|
||
#else // PER_INSTANCE_COLOR
|
||
// For computing texture coordinates
|
||
|
||
v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC);
|
||
v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC);
|
||
#endif // PER_INSTANCE_COLOR
|
||
|
||
#ifdef WIDTH_VARYING
|
||
float width = czm_batchTable_width(batchId);
|
||
float halfWidth = width * 0.5;
|
||
v_width = width;
|
||
v_texcoordNormalizationAndHalfWidth.z = halfWidth;
|
||
#else
|
||
float halfWidth = 0.5 * czm_batchTable_width(batchId);
|
||
v_texcoordNormalizationAndHalfWidth.z = halfWidth;
|
||
#endif
|
||
|
||
// Compute a normal along which to "push" the position out, extending the miter depending on view distance.
|
||
// Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes.
|
||
// Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be.
|
||
// Since this is morphing, compute both 3D and 2D positions and then blend.
|
||
|
||
// ****** 3D ******
|
||
// Check distance to the end plane and start plane, pick the plane that is closer
|
||
vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition
|
||
float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz));
|
||
float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz));
|
||
vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz);
|
||
vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
|
||
vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
|
||
|
||
// Nudge the top vertex upwards to prevent flickering
|
||
vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D));
|
||
geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0);
|
||
geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT;
|
||
positionEc3D.xyz += geodeticSurfaceNormal;
|
||
|
||
// Determine if this vertex is on the "left" or "right"
|
||
normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w);
|
||
|
||
// A "perfect" implementation would push along normals according to the angle against forward.
|
||
// In practice, just pushing the normal out by halfWidth is sufficient for morph views.
|
||
positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera)
|
||
|
||
// ****** 2D ******
|
||
// Check distance to the end plane and start plane, pick the plane that is closer
|
||
vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition
|
||
absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz));
|
||
absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz));
|
||
planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz);
|
||
upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
|
||
normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
|
||
|
||
// Nudge the top vertex upwards to prevent flickering
|
||
geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D));
|
||
geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0);
|
||
geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT;
|
||
positionEc2D.xyz += geodeticSurfaceNormal;
|
||
|
||
// Determine if this vertex is on the "left" or "right"
|
||
normalEC *= sign(texcoordNormalization2D.x);
|
||
#ifndef PER_INSTANCE_COLOR
|
||
// Use vertex's sidedness to compute its texture coordinate.
|
||
v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0);
|
||
#endif
|
||
|
||
// A "perfect" implementation would push along normals according to the angle against forward.
|
||
// In practice, just pushing the normal out by halfWidth is sufficient for morph views.
|
||
positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera)
|
||
|
||
// Blend for actual position
|
||
gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime);
|
||
|
||
#ifdef ANGLE_VARYING
|
||
// Approximate relative screen space direction of the line.
|
||
vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y));
|
||
approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y);
|
||
v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y);
|
||
#endif
|
||
}
|
||
`;var tO=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
|
||
// In 2D and in 3D, texture coordinate normalization component signs encodes:
|
||
// * X sign - sidedness relative to right plane
|
||
// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume
|
||
#ifndef COLUMBUS_VIEW_2D
|
||
in vec4 startHiAndForwardOffsetX;
|
||
in vec4 startLoAndForwardOffsetY;
|
||
in vec4 startNormalAndForwardOffsetZ;
|
||
in vec4 endNormalAndTextureCoordinateNormalizationX;
|
||
in vec4 rightNormalAndTextureCoordinateNormalizationY;
|
||
#else
|
||
in vec4 startHiLo2D;
|
||
in vec4 offsetAndRight2D;
|
||
in vec4 startEndNormals2D;
|
||
in vec2 texcoordNormalization2D;
|
||
#endif
|
||
|
||
in float batchId;
|
||
|
||
out vec4 v_startPlaneNormalEcAndHalfWidth;
|
||
out vec4 v_endPlaneNormalEcAndBatchId;
|
||
out vec4 v_rightPlaneEC;
|
||
out vec4 v_endEcAndStartEcX;
|
||
out vec4 v_texcoordNormalizationAndStartEcYZ;
|
||
|
||
// For materials
|
||
#ifdef WIDTH_VARYING
|
||
out float v_width;
|
||
#endif
|
||
#ifdef ANGLE_VARYING
|
||
out float v_polylineAngle;
|
||
#endif
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
out vec4 v_color;
|
||
#endif
|
||
|
||
void main()
|
||
{
|
||
#ifdef COLUMBUS_VIEW_2D
|
||
vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz;
|
||
|
||
vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy);
|
||
vec3 ecEnd = forwardDirectionEC + ecStart;
|
||
forwardDirectionEC = normalize(forwardDirectionEC);
|
||
|
||
// Right plane
|
||
v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw);
|
||
v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart);
|
||
|
||
// start plane
|
||
vec4 startPlaneEC;
|
||
startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy);
|
||
startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart);
|
||
|
||
// end plane
|
||
vec4 endPlaneEC;
|
||
endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw);
|
||
endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd);
|
||
|
||
v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x);
|
||
v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y;
|
||
|
||
#else // COLUMBUS_VIEW_2D
|
||
vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz;
|
||
vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w);
|
||
vec3 ecEnd = ecStart + offset;
|
||
|
||
vec3 forwardDirectionEC = normalize(offset);
|
||
|
||
// start plane
|
||
vec4 startPlaneEC;
|
||
startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz;
|
||
startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart);
|
||
|
||
// end plane
|
||
vec4 endPlaneEC;
|
||
endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz;
|
||
endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd);
|
||
|
||
// Right plane
|
||
v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz;
|
||
v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart);
|
||
|
||
v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w);
|
||
v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w;
|
||
|
||
#endif // COLUMBUS_VIEW_2D
|
||
|
||
v_endEcAndStartEcX.xyz = ecEnd;
|
||
v_endEcAndStartEcX.w = ecStart.x;
|
||
v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz;
|
||
|
||
#ifdef PER_INSTANCE_COLOR
|
||
v_color = czm_batchTable_color(batchId);
|
||
#endif // PER_INSTANCE_COLOR
|
||
|
||
// Compute a normal along which to "push" the position out, extending the miter depending on view distance.
|
||
// Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes.
|
||
// Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be.
|
||
vec4 positionRelativeToEye = czm_computePosition();
|
||
|
||
// Check distance to the end plane and start plane, pick the plane that is closer
|
||
vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition
|
||
float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz));
|
||
float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz));
|
||
vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz);
|
||
vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane.
|
||
vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too.
|
||
|
||
// Extrude bottom vertices downward for far view distances, like for GroundPrimitives
|
||
upOrDown = cross(forwardDirectionEC, normalEC);
|
||
upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown;
|
||
upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown;
|
||
upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown;
|
||
positionEC.xyz += upOrDown;
|
||
|
||
v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y));
|
||
|
||
// Determine distance along normalEC to push for a volume of appropriate width.
|
||
// Make volumes about double pixel width for a conservative fit - in practice the
|
||
// extra cost here is minimal compared to the loose volume heights.
|
||
//
|
||
// N = normalEC (guaranteed "right-facing")
|
||
// R = rightEC
|
||
// p = angle between N and R
|
||
// w = distance to push along R if R == N
|
||
// d = distance to push along N
|
||
//
|
||
// N R
|
||
// { p| } * cos(p) = dot(N, R) = w / d
|
||
// d | |w * d = w / dot(N, R)
|
||
// { | }
|
||
// o---------- polyline segment ---->
|
||
//
|
||
float width = czm_batchTable_width(batchId);
|
||
#ifdef WIDTH_VARYING
|
||
v_width = width;
|
||
#endif
|
||
|
||
v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz;
|
||
v_startPlaneNormalEcAndHalfWidth.w = width * 0.5;
|
||
|
||
v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz;
|
||
v_endPlaneNormalEcAndBatchId.w = batchId;
|
||
|
||
width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R
|
||
width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N
|
||
|
||
// Determine if this vertex is on the "left" or "right"
|
||
#ifdef COLUMBUS_VIEW_2D
|
||
normalEC *= sign(texcoordNormalization2D.x);
|
||
#else
|
||
normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w);
|
||
#endif
|
||
|
||
positionEC.xyz += width * normalEC;
|
||
gl_Position = czm_depthClamp(czm_projection * positionEC);
|
||
|
||
#ifdef ANGLE_VARYING
|
||
// Approximate relative screen space direction of the line.
|
||
vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y));
|
||
approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y);
|
||
v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y);
|
||
#endif
|
||
}
|
||
`;var nO=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 prevPosition3DHigh;
|
||
in vec3 prevPosition3DLow;
|
||
in vec3 nextPosition3DHigh;
|
||
in vec3 nextPosition3DLow;
|
||
in vec2 expandAndWidth;
|
||
in vec4 color;
|
||
in float batchId;
|
||
|
||
out vec4 v_color;
|
||
|
||
void main()
|
||
{
|
||
float expandDir = expandAndWidth.x;
|
||
float width = abs(expandAndWidth.y) + 0.5;
|
||
bool usePrev = expandAndWidth.y < 0.0;
|
||
|
||
vec4 p = czm_computePosition();
|
||
vec4 prev = czm_computePrevPosition();
|
||
vec4 next = czm_computeNextPosition();
|
||
|
||
float angle;
|
||
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle);
|
||
gl_Position = czm_viewportOrthographic * positionWC;
|
||
|
||
v_color = color;
|
||
}
|
||
`;var bf=`void clipLineSegmentToNearPlane(
|
||
vec3 p0,
|
||
vec3 p1,
|
||
out vec4 positionWC,
|
||
out bool clipped,
|
||
out bool culledByNearPlane,
|
||
out vec4 clippedPositionEC)
|
||
{
|
||
culledByNearPlane = false;
|
||
clipped = false;
|
||
|
||
vec3 p0ToP1 = p1 - p0;
|
||
float magnitude = length(p0ToP1);
|
||
vec3 direction = normalize(p0ToP1);
|
||
|
||
// Distance that p0 is behind the near plane. Negative means p0 is
|
||
// in front of the near plane.
|
||
float endPoint0Distance = czm_currentFrustum.x + p0.z;
|
||
|
||
// Camera looks down -Z.
|
||
// When moving a point along +Z: LESS VISIBLE
|
||
// * Points in front of the camera move closer to the camera.
|
||
// * Points behind the camrea move farther away from the camera.
|
||
// When moving a point along -Z: MORE VISIBLE
|
||
// * Points in front of the camera move farther away from the camera.
|
||
// * Points behind the camera move closer to the camera.
|
||
|
||
// Positive denominator: -Z, becoming more visible
|
||
// Negative denominator: +Z, becoming less visible
|
||
// Nearly zero: parallel to near plane
|
||
float denominator = -direction.z;
|
||
|
||
if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7)
|
||
{
|
||
// p0 is behind the near plane and the line to p1 is nearly parallel to
|
||
// the near plane, so cull the segment completely.
|
||
culledByNearPlane = true;
|
||
}
|
||
else if (endPoint0Distance > 0.0)
|
||
{
|
||
// p0 is behind the near plane, and the line to p1 is moving distinctly
|
||
// toward or away from it.
|
||
|
||
// t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction)
|
||
float t = endPoint0Distance / denominator;
|
||
if (t < 0.0 || t > magnitude)
|
||
{
|
||
// Near plane intersection is not between the two points.
|
||
// We already confirmed p0 is behind the naer plane, so now
|
||
// we know the entire segment is behind it.
|
||
culledByNearPlane = true;
|
||
}
|
||
else
|
||
{
|
||
// Segment crosses the near plane, update p0 to lie exactly on it.
|
||
p0 = p0 + t * direction;
|
||
|
||
// Numerical noise might put us a bit on the wrong side of the near plane.
|
||
// Don't let that happen.
|
||
p0.z = min(p0.z, -czm_currentFrustum.x);
|
||
|
||
clipped = true;
|
||
}
|
||
}
|
||
|
||
clippedPositionEC = vec4(p0, 1.0);
|
||
positionWC = czm_eyeToWindowCoordinates(clippedPositionEC);
|
||
}
|
||
|
||
vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle)
|
||
{
|
||
// expandDirection +1 is to the _left_ when looking from positionEC toward nextEC.
|
||
|
||
#ifdef POLYLINE_DASH
|
||
// Compute the window coordinates of the points.
|
||
vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC);
|
||
vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC);
|
||
vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC);
|
||
|
||
// Determine the relative screen space direction of the line.
|
||
vec2 lineDir;
|
||
if (usePrevious) {
|
||
lineDir = normalize(positionWindow.xy - previousWindow.xy);
|
||
}
|
||
else {
|
||
lineDir = normalize(nextWindow.xy - positionWindow.xy);
|
||
}
|
||
angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0)
|
||
|
||
// Quantize the angle so it doesn't change rapidly between segments.
|
||
angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour;
|
||
#endif
|
||
|
||
vec4 clippedPrevWC, clippedPrevEC;
|
||
bool prevSegmentClipped, prevSegmentCulled;
|
||
clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC);
|
||
|
||
vec4 clippedNextWC, clippedNextEC;
|
||
bool nextSegmentClipped, nextSegmentCulled;
|
||
clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC);
|
||
|
||
bool segmentClipped, segmentCulled;
|
||
vec4 clippedPositionWC, clippedPositionEC;
|
||
clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC);
|
||
|
||
if (segmentCulled)
|
||
{
|
||
return vec4(0.0, 0.0, 0.0, 1.0);
|
||
}
|
||
|
||
vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy);
|
||
vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy);
|
||
|
||
// If a segment was culled, we can't use the corresponding direction
|
||
// computed above. We should never see both of these be true without
|
||
// \`segmentCulled\` above also being true.
|
||
if (prevSegmentCulled)
|
||
{
|
||
directionToPrevWC = -directionToNextWC;
|
||
}
|
||
else if (nextSegmentCulled)
|
||
{
|
||
directionToNextWC = -directionToPrevWC;
|
||
}
|
||
|
||
vec2 thisSegmentForwardWC, otherSegmentForwardWC;
|
||
if (usePrevious)
|
||
{
|
||
thisSegmentForwardWC = -directionToPrevWC;
|
||
otherSegmentForwardWC = directionToNextWC;
|
||
}
|
||
else
|
||
{
|
||
thisSegmentForwardWC = directionToNextWC;
|
||
otherSegmentForwardWC = -directionToPrevWC;
|
||
}
|
||
|
||
vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x);
|
||
|
||
vec2 leftWC = thisSegmentLeftWC;
|
||
float expandWidth = width * 0.5;
|
||
|
||
// When lines are split at the anti-meridian, the position may be at the
|
||
// same location as the next or previous position, and we need to handle
|
||
// that to avoid producing NaNs.
|
||
if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1))
|
||
{
|
||
vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x);
|
||
|
||
vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC;
|
||
float leftSumLength = length(leftSumWC);
|
||
leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength);
|
||
|
||
// The sine of the angle between the two vectors is given by the formula
|
||
// |a x b| = |a||b|sin(theta)
|
||
// which is
|
||
// float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0)));
|
||
// Because the z components of both vectors are zero, the x and y coordinate will be zero.
|
||
// Therefore, the sine of the angle is just the z component of the cross product.
|
||
vec2 u = -thisSegmentForwardWC;
|
||
vec2 v = leftWC;
|
||
float sinAngle = abs(u.x * v.y - u.y * v.x);
|
||
expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0);
|
||
}
|
||
|
||
vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio;
|
||
return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w;
|
||
}
|
||
|
||
vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle)
|
||
{
|
||
vec4 positionEC = czm_modelViewRelativeToEye * position;
|
||
vec4 prevEC = czm_modelViewRelativeToEye * previous;
|
||
vec4 nextEC = czm_modelViewRelativeToEye * next;
|
||
return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle);
|
||
}
|
||
`;var B6=`${bf}
|
||
${nO}`,DLe=pI;jt.isInternetExplorer()||(B6=`#define CLIP_POLYLINE
|
||
${B6}`);function TC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=TC.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??B6,this._fragmentShaderSource=e.fragmentShaderSource??DLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(TC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});TC.VERTEX_FORMAT=Pe.POSITION_ONLY;TC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;TC.prototype.isTranslucent=go.prototype.isTranslucent;TC.prototype.getRenderState=go.prototype.getRenderState;var bs=TC;var iO=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 prevPosition3DHigh;
|
||
in vec3 prevPosition3DLow;
|
||
in vec3 nextPosition3DHigh;
|
||
in vec3 nextPosition3DLow;
|
||
in vec2 expandAndWidth;
|
||
in vec2 st;
|
||
in float batchId;
|
||
|
||
out float v_width;
|
||
out vec2 v_st;
|
||
out float v_polylineAngle;
|
||
|
||
void main()
|
||
{
|
||
float expandDir = expandAndWidth.x;
|
||
float width = abs(expandAndWidth.y) + 0.5;
|
||
bool usePrev = expandAndWidth.y < 0.0;
|
||
|
||
vec4 p = czm_computePosition();
|
||
vec4 prev = czm_computePrevPosition();
|
||
vec4 next = czm_computeNextPosition();
|
||
|
||
float angle;
|
||
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle);
|
||
gl_Position = czm_viewportOrthographic * positionWC;
|
||
|
||
v_width = width;
|
||
v_st.s = st.s;
|
||
v_st.t = czm_writeNonPerspective(st.t, gl_Position.w);
|
||
v_polylineAngle = angle;
|
||
}
|
||
`;var TI=`#ifdef VECTOR_TILE
|
||
uniform vec4 u_highlightColor;
|
||
#endif
|
||
|
||
in vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
czm_materialInput materialInput;
|
||
|
||
vec2 st = v_st;
|
||
st.t = czm_readNonPerspective(st.t, gl_FragCoord.w);
|
||
|
||
materialInput.s = st.s;
|
||
materialInput.st = st;
|
||
materialInput.str = vec3(st, 0.0);
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#ifdef VECTOR_TILE
|
||
out_FragColor *= u_highlightColor;
|
||
#endif
|
||
|
||
czm_writeLogDepth();
|
||
}
|
||
`;var D6=`${bf}
|
||
${iO}`,vLe=TI;jt.isInternetExplorer()||(D6=`#define CLIP_POLYLINE
|
||
${D6}`);function SC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=SC.VERTEX_FORMAT;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??D6,this._fragmentShaderSource=e.fragmentShaderSource??vLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(SC.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH
|
||
${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});SC.VERTEX_FORMAT=Pe.POSITION_AND_ST;SC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;SC.prototype.isTranslucent=go.prototype.isTranslucent;SC.prototype.getRenderState=go.prototype.getRenderState;var Za=SC;function HA(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new Za),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=Xie(!1),this._renderState3DTiles=Xie(!0),this._renderStateMorph=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(HA.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});HA.initializeTerrainHeights=function(){return wi.initialize()};function PLe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(tO);s=kn._appendShowToShader(o,s),s=kn._appendDistanceDisplayConditionToShader(o,s),s=kn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(eO);a=kn._appendShowToShader(o,a),a=kn._appendDistanceDisplayConditionToShader(o,a),a=kn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(ZL),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let A=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new We({defines:u,sources:[s]}),m=new We({defines:A,sources:[h,c]});e._sp=ln.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let _=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(_)){let C=new We({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});_=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:C,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=_;let y=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(y)){let C=new We({defines:u.concat([`MAX_TERRAIN_HEIGHT ${wi._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()($L);let E=new We({defines:A,sources:[h,c]});y=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:C,fragmentShaderSource:E,attributeLocations:r})}e._spMorph=y}function Xie(e){return Ue.fromCache({cull:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function RLe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof bs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let A=s._va[h],g=o[h];l(g)||(g=o[h]=new nt({owner:e,primitiveType:s._primitiveType})),g.vertexArray=A,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=Be.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=nt.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let _=nt.shallowClone(g,g.derivedCommands.color2D);_.shaderProgram=e._sp2D,g.derivedCommands.color2D=_;let y=nt.shallowClone(m,m.derivedCommands.color2D);y.shaderProgram=e._sp2D,m.derivedCommands.color2D=y;let C=nt.shallowClone(g,g.derivedCommands.colorMorph);C.renderState=e._renderStateMorph,C.shaderProgram=e._spMorph,C.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=C}}function Jie(e,t,n,i,o,r,s){n.mode===ie.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ie.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function MLe(e,t,n,i,o,r,s){let a=e._primitive;kn._updateBoundingVolumes(a,t,o);let c;t.mode===ie.SCENE3D?c=a._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ie.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ie.MORPHING,f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let _=n.length;for(let y=0;y<_;++y){let C=c[y];h&&(g=n[y],Jie(e,g,t,o,r,C,s)),A&&(g=n[y].derivedCommands.tileset,Jie(e,g,t,o,r,C,s))}}}HA.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){HA.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Jc({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,bI.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Rt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){PLe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,A,g,m){RLe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,A,g,m,_){MLe(n,u,f,h,A,g,m)},this._primitive=new kn(i)}if(this.appearance instanceof bs&&!this._hasPerInstanceColors)throw new me("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};HA.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};HA.isSupported=function(e){return e.frameState.context.depthTexture};HA.prototype.isDestroyed=function(){return!1};HA.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var sm=HA;var NLe=new k(1,1),LLe=!1,OLe=G.WHITE;function SI(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(SI.prototype,{isConstant:{get:function(){return j.isConstant(this._image)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:de("image"),repeat:de("repeat"),color:de("color"),transparent:de("transparent")});SI.prototype.getType=function(e){return"Image"};var FLe=new K;SI.prototype.getValue=function(e,t){return l(e)||(e=K.now(FLe)),l(t)||(t={}),t.image=j.getValueOrUndefined(this._image,e),t.repeat=j.getValueOrClonedDefault(this._repeat,e,NLe,t.repeat),t.color=j.getValueOrClonedDefault(this._color,e,OLe,t.color),j.getValueOrDefault(this._transparent,e,LLe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};SI.prototype.equals=function(e){return this===e||e instanceof SI&&j.equals(this._image,e._image)&&j.equals(this._repeat,e._repeat)&&j.equals(this._color,e._color)&&j.equals(this._transparent,e._transparent)};var wC=SI;function QLe(e){if(e instanceof G)return new Jt(e);if(typeof e=="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new wC;return t.image=e,t}}function kLe(e,t){return de(e,t,QLe)}var Xo=kLe;function pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),dimensions:de("dimensions"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new pw(this)};pw.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var wI=pw;var ULe={FIXED:0,INERTIAL:1},eo=Object.freeze(ULe);function BI(){me.throwInstantiationError()}Object.defineProperties(BI.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError},referenceFrame:{get:me.throwInstantiationError}});BI.prototype.getValue=me.throwInstantiationError;BI.prototype.getValueInReferenceFrame=me.throwInstantiationError;BI.prototype.equals=me.throwInstantiationError;var Zie=new J;BI.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=kt.computeIcrfToCentralBodyFixedMatrix(e,Zie);if(n===eo.INERTIAL)return J.multiplyByVector(r,t,o);if(n===eo.FIXED)return J.multiplyByVector(J.transpose(r,Zie),t,o)};var am=BI;function BC(e,t){this._definitionChanged=new _e,this._value=d.clone(e),this._referenceFrame=t??eo.FIXED}Object.defineProperties(BC.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===eo.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var GLe=new K;BC.prototype.getValue=function(e,t){return l(e)||(e=K.now(GLe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};BC.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};BC.prototype.getValueInReferenceFrame=function(e,t,n){return am.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};BC.prototype.equals=function(e){return this===e||e instanceof BC&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var Ol=BC;function gw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(gw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});gw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new gw(this)};gw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var DI=gw;function zLe(e){return e}function VLe(e,t){return de(e,t,zLe)}var Fl=VLe;function _w(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(_w.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),length:de("length"),topRadius:de("topRadius"),bottomRadius:de("bottomRadius"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),slices:de("slices"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});_w.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new _w(this)};_w.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vI=_w;function yw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(yw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),semiMajorAxis:de("semiMajorAxis"),semiMinorAxis:de("semiMinorAxis"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});yw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new yw(this)};yw.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var PI=yw;function Cw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Cw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),radii:de("radii"),innerRadii:de("innerRadii"),minimumClock:de("minimumClock"),maximumClock:de("maximumClock"),minimumCone:de("minimumCone"),maximumCone:de("maximumCone"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),stackPartitions:de("stackPartitions"),slicePartitions:de("slicePartitions"),subdivisions:de("subdivisions"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Cw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Cw(this)};Cw.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var RI=Cw;function Ew(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Ew.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),text:de("text"),font:de("font"),style:de("style"),scale:de("scale"),showBackground:de("showBackground"),backgroundColor:de("backgroundColor"),backgroundPadding:de("backgroundPadding"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),fillColor:de("fillColor"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),scaleByDistance:de("scaleByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance")});Ew.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new Ew(this)};Ew.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var cm=Ew;var HLe=new d(1,1,1),WLe=d.ZERO,jLe=Le.IDENTITY;function $ie(e,t,n){this.translation=d.clone(e??WLe),this.rotation=Le.clone(t??jLe),this.scale=d.clone(n??HLe)}$ie.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var DC=$ie;var v6=new DC;function Iw(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(Iw.prototype,{isConstant:{get:function(){return j.isConstant(this._translation)&&j.isConstant(this._rotation)&&j.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:de("translation"),rotation:de("rotation"),scale:de("scale")});var YLe=new K;Iw.prototype.getValue=function(e,t){return l(e)||(e=K.now(YLe)),l(t)||(t=new DC),t.translation=j.getValueOrClonedDefault(this._translation,e,v6.translation,t.translation),t.rotation=j.getValueOrClonedDefault(this._rotation,e,v6.rotation,t.rotation),t.scale=j.getValueOrClonedDefault(this._scale,e,v6.scale,t.scale),t};Iw.prototype.equals=function(e){return this===e||e instanceof Iw&&j.equals(this._translation,e._translation)&&j.equals(this._rotation,e._rotation)&&j.equals(this._scale,e._scale)};var MI=Iw;function WA(e,t){this._propertyNames=[],this._definitionChanged=new _e,l(e)&&this.merge(e,t)}Object.defineProperties(WA.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!j.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});WA.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function qLe(e){return new ci(e)}WA.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,de(e,!0,n??qLe)),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};WA.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var KLe=new K;WA.prototype.getValue=function(e,t){l(e)||(e=K.now(KLe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=j.getValueOrUndefined(this[r],e,t[r])}return t};WA.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function XLe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!j.equals(e[s],t[s]))return!1}return!0}WA.prototype.equals=function(e){return this===e||e instanceof WA&&XLe(this,e)};var Ql=WA;function eoe(e){return new MI(e)}function JLe(e){return new Ql(e,eoe)}function ZLe(e){return new Ql(e)}function $Le(e){return new Ql(e)}function xw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(xw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),scale:de("scale"),enableVerticalExaggeration:de("enableVerticalExaggeration"),minimumPixelSize:de("minimumPixelSize"),maximumScale:de("maximumScale"),incrementallyLoadTextures:de("incrementallyLoadTextures"),runAnimations:de("runAnimations"),clampAnimations:de("clampAnimations"),shadows:de("shadows"),heightReference:de("heightReference"),silhouetteColor:de("silhouetteColor"),silhouetteSize:de("silhouetteSize"),color:de("color"),colorBlendMode:de("colorBlendMode"),colorBlendAmount:de("colorBlendAmount"),imageBasedLightingFactor:de("imageBasedLightingFactor"),environmentMapOptions:de("environmentMapOptions",void 0,$Le),lightColor:de("lightColor"),distanceDisplayCondition:de("distanceDisplayCondition"),nodeTransformations:de("nodeTransformations",void 0,JLe),articulations:de("articulations",void 0,ZLe),clippingPlanes:de("clippingPlanes"),customShader:de("customShader")});xw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new xw(this)};xw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.scale=this.scale??e.scale,this.enableVerticalExaggeration=this.enableVerticalExaggeration??e.enableVerticalExaggeration,this.minimumPixelSize=this.minimumPixelSize??e.minimumPixelSize,this.maximumScale=this.maximumScale??e.maximumScale,this.incrementallyLoadTextures=this.incrementallyLoadTextures??e.incrementallyLoadTextures,this.runAnimations=this.runAnimations??e.runAnimations,this.clampAnimations=this.clampAnimations??e.clampAnimations,this.shadows=this.shadows??e.shadows,this.heightReference=this.heightReference??e.heightReference,this.silhouetteColor=this.silhouetteColor??e.silhouetteColor,this.silhouetteSize=this.silhouetteSize??e.silhouetteSize,this.color=this.color??e.color,this.colorBlendMode=this.colorBlendMode??e.colorBlendMode,this.colorBlendAmount=this.colorBlendAmount??e.colorBlendAmount,this.imageBasedLightingFactor=this.imageBasedLightingFactor??e.imageBasedLightingFactor,this.environmentMapOptions=this.environmentMapOptions??e.environmentMapOptions,this.lightColor=this.lightColor??e.lightColor,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.clippingPlanes=this.clippingPlanes??e.clippingPlanes,this.customShader=this.customShader??e.customShader;let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new Ql(t,eoe)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new Ql(n)}};var Dg=xw;function bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),maximumScreenSpaceError:de("maximumScreenSpaceError")});bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new bw(this)};bw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.maximumScreenSpaceError=this.maximumScreenSpaceError??e.maximumScreenSpaceError};var NI=bw;function Tw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Tw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),leadTime:de("leadTime"),trailTime:de("trailTime"),width:de("width"),resolution:de("resolution"),material:Xo("material"),distanceDisplayCondition:de("distanceDisplayCondition")});Tw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Tw(this)};Tw.prototype.merge=function(e){this.show=this.show??e.show,this.leadTime=this.leadTime??e.leadTime,this.trailTime=this.trailTime??e.trailTime,this.width=this.width??e.width,this.resolution=this.resolution??e.resolution,this.material=this.material??e.material,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vg=Tw;function Sw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Sw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),plane:de("plane"),dimensions:de("dimensions"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Sw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Sw(this)};Sw.prototype.merge=function(e){this.show=this.show??e.show,this.plane=this.plane??e.plane,this.dimensions=this.dimensions??e.dimensions,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var oO=Sw;function ww(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(ww.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),pixelSize:de("pixelSize"),heightReference:de("heightReference"),color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});ww.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new ww(this)};ww.prototype.merge=function(e){this.show=this.show??e.show,this.pixelSize=this.pixelSize??e.pixelSize,this.heightReference=this.heightReference??e.heightReference,this.color=this.color??e.color,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var LI=ww;function eOe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var xc=eOe;function tOe(e){return Array.isArray(e)&&(e=new xc(e)),new ci(e)}function Bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),hierarchy:de("hierarchy",void 0,tOe),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),perPositionHeight:de("perPositionHeight"),closeTop:de("closeTop"),closeBottom:de("closeBottom"),arcType:de("arcType"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex"),textureCoordinates:de("textureCoordinates")});Bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new Bw(this)};Bw.prototype.merge=function(e){this.show=this.show??e.show,this.hierarchy=this.hierarchy??e.hierarchy,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.perPositionHeight=this.perPositionHeight??e.perPositionHeight,this.closeTop=this.closeTop??e.closeTop,this.closeBottom=this.closeBottom??e.closeBottom,this.arcType=this.arcType??e.arcType,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex,this.textureCoordinates=this.textureCoordinates??e.textureCoordinates};var lm=Bw;function Dw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Dw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),granularity:de("granularity"),material:Xo("material"),depthFailMaterial:Xo("depthFailMaterial"),arcType:de("arcType"),clampToGround:de("clampToGround"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Dw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Dw(this)};Dw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.granularity=this.granularity??e.granularity,this.material=this.material??e.material,this.depthFailMaterial=this.depthFailMaterial??e.depthFailMaterial,this.arcType=this.arcType??e.arcType,this.clampToGround=this.clampToGround??e.clampToGround,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var $c=Dw;function vw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(vw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),shape:de("shape"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});vw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new vw(this)};vw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.shape=this.shape??e.shape,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var OI=vw;function Pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),coordinates:de("coordinates"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Pw(this)};Pw.prototype.merge=function(e){this.show=this.show??e.show,this.coordinates=this.coordinates??e.coordinates,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var um=Pw;function Rw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Rw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),minimumHeights:de("minimumHeights"),maximumHeights:de("maximumHeights"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Rw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Rw(this)};Rw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.minimumHeights=this.minimumHeights??e.minimumHeights,this.maximumHeights=this.maximumHeights??e.maximumHeights,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var Pg=Rw;var nOe=new Ae,P6=[];function iOe(e){return new Ol(e)}function oOe(e){return de(e,void 0,iOe)}function ra(e,t){return de(e,void 0,function(n){return n instanceof t?n:new t(n)})}function Tf(e){e=e??V.EMPTY_OBJECT;let t=e.id;l(t)||(t=Xn()),this._availability=void 0,this._id=t,this._definitionChanged=new _e,this._name=e.name,this._show=e.show??!0,this._trackingReferenceFrame=e.trackingReferenceFrame??Tg.AUTODETECT,this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...P6],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function R6(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&R6(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(Tf.prototype,{availability:Fl("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:Fl("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&R6(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:Fl("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&R6(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:ra("billboard",jc),box:ra("box",wI),corridor:ra("corridor",DI),cylinder:ra("cylinder",vI),description:de("description"),ellipse:ra("ellipse",PI),ellipsoid:ra("ellipsoid",RI),label:ra("label",cm),model:ra("model",Dg),tileset:ra("tileset",NI),orientation:de("orientation"),path:ra("path",vg),plane:ra("plane",oO),point:ra("point",LI),polygon:ra("polygon",lm),polyline:ra("polyline",$c),polylineVolume:ra("polylineVolume",OI),properties:ra("properties",Ql),position:oOe("position"),rectangle:ra("rectangle",um),viewFrom:de("viewFrom"),wall:ra("wall",Pg)});Tf.registerEntityType=function(e,t){Object.defineProperties(Tf.prototype,{[e]:ra(e,t)}),P6.includes(e)||P6.push(e)};Tf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};Tf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,Fl(e,!0))};Tf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};Tf.prototype.merge=function(e){this.name=this.name??e.name,this.availability=this.availability??e.availability;let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var toe=new J,noe=new d,ioe=new Le;Tf.prototype.computeModelMatrix=function(e,t){let n=j.getValueOrUndefined(this._position,e,noe);if(!l(n))return;let i=j.getValueOrUndefined(this._orientation,e,ioe);return l(i)?t=R.fromRotationTranslation(J.fromQuaternion(i,toe),n,t):t=kt.eastNorthUpToFixedFrame(n,void 0,t),t};Tf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=j.getValueOrDefault(t,e,Ze.NONE),s=j.getValueOrUndefined(this._position,e,noe);if(r===Ze.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,D.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,nOe);_f(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=j.getValueOrUndefined(this._orientation,e,ioe);return l(c)?o=R.fromRotationTranslation(J.fromQuaternion(c,toe),s,o):o=kt.eastNorthUpToFixedFrame(s,void 0,o),o};Tf.supportsMaterialsforEntitiesOnTerrain=function(e){return Ll.supportsMaterials(e)};Tf.supportsPolylinesOnTerrain=function(e){return sm.isSupported(e)};var _r=Tf;var rOe=new Jt(G.WHITE),sOe=new ci(!0),aOe=new ci(!0),cOe=new ci(!1),lOe=new ci(G.BLACK),uOe=new ci(Dn.DISABLED),fOe=new ci(new Ut),dOe=new ci(Jn.BOTH);function el(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=_r.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(el.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});el.prototype.isOutlineVisible=function(e){let t=this._entity;return(this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e))??!1};el.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e))??!1};el.prototype.createFillGeometryInstance=me.throwInstantiationError;el.prototype.createOutlineGeometryInstance=me.throwInstantiationError;el.prototype.isDestroyed=function(){return!1};el.prototype.destroy=function(){ue(this)};el.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(je.MINIMUM_VALUE)};el.prototype._isOnTerrain=function(e,t){return!1};el.prototype._getIsClosed=function(e){return!0};el.prototype._isDynamic=me.throwInstantiationError;el.prototype._setStaticOptions=me.throwInstantiationError;el.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(je.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(je.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=o.material??rOe,this._fillProperty=r??aOe,this._showProperty=u??sOe,this._showOutlineProperty=o.outline??cOe,this._outlineColorProperty=c?o.outlineColor??lOe:void 0,this._shadowsProperty=o.shadows??uOe,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??fOe,this._classificationTypeProperty=o.classificationType??dOe,this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof Jt);if(c&&f&&(yt(yt.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(je.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};el.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var Ci=el;function FI(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(FI.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var hOe=new K;FI.prototype.getValue=function(e,t){return l(e)||(e=K.now(hOe)),this._callback(e,t)};FI.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};FI.prototype.equals=function(e){return this===e||e instanceof FI&&this._callback===e._callback&&this._isConstant===e._isConstant};var fm=FI;var ooe=new d;function QI(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new Ae,this._normal=new d,this._definitionChanged=new _e,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(je.MINIMUM_VALUE,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(QI.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});QI.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var mOe=new K;QI.prototype.getValue=function(e,t){l(e)||(e=K.now(mOe));let n=j.getValueOrDefault(this._heightReference,e,Ze.NONE),i=j.getValueOrDefault(this._extrudedHeightReference,e,Ze.NONE);if(n===Ze.NONE&&!rI(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,D.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};QI.prototype.isDestroyed=function(){return!1};QI.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var kI=QI;function AOe(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,s,r)}}var Rg=AOe;var roe=d.ZERO,soe=new d,pOe=new d,aoe=new G;function gOe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function bu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new gOe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(bu.prototype=Object.create(Ci.prototype),bu.prototype.constructor=bu);Object.defineProperties(bu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});bu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,aoe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:yc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};bu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,aoe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:$h.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};bu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};bu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};bu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};bu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};bu.prototype._onEntityPropertyChanged=Rg;bu.DynamicGeometryUpdater=UI;function UI(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(UI.prototype=Object.create(yi.prototype),UI.prototype.constructor=UI);UI.prototype._isHidden=function(e,t,n){let i=j.getValueOrUndefined(e.position,n,pOe),o=this._options.dimensions;return!l(i)||!l(o)||yi.prototype._isHidden.call(this,e,t,n)};UI.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.dimensions=j.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var rO=bu;function vC(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??eo.FIXED,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(vC.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _Oe=new K;vC.prototype.getValue=function(e,t){return l(e)||(e=K.now(_Oe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};vC.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};vC.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};vC.prototype.equals=function(e){return this===e||e instanceof vC&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var sO=vC;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:goe,setPrototypeOf:coe,isFrozen:yOe,getPrototypeOf:COe,getOwnPropertyDescriptor:EOe}=Object,{freeze:nl,seal:Sf,create:_oe}=Object,{apply:Q6,construct:k6}=typeof Reflect<"u"&&Reflect;nl||(nl=function(t){return t});Sf||(Sf=function(t){return t});Q6||(Q6=function(t,n,i){return t.apply(n,i)});k6||(k6=function(t,n){return new t(...n)});var aO=il(Array.prototype.forEach),IOe=il(Array.prototype.lastIndexOf),loe=il(Array.prototype.pop),Mw=il(Array.prototype.push),xOe=il(Array.prototype.splice),lO=il(String.prototype.toLowerCase),M6=il(String.prototype.toString),uoe=il(String.prototype.match),Nw=il(String.prototype.replace),bOe=il(String.prototype.indexOf),TOe=il(String.prototype.trim),zd=il(Object.prototype.hasOwnProperty),tl=il(RegExp.prototype.test),Lw=SOe(TypeError);function il(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return Q6(e,t,i)}}function SOe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return k6(e,n)}}function Fi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:lO;coe&&coe(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(yOe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function wOe(e){for(let t=0;t<e.length;t++)zd(e,t)||(e[t]=null);return e}function jA(e){let t=_oe(null);for(let[n,i]of goe(e))zd(e,n)&&(Array.isArray(i)?t[n]=wOe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=jA(i):t[n]=i);return t}function Ow(e,t){for(;e!==null;){let i=EOe(e,t);if(i){if(i.get)return il(i.get);if(typeof i.value=="function")return il(i.value)}e=COe(e)}function n(){return null}return n}var foe=nl(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),N6=nl(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),L6=nl(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),BOe=nl(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),O6=nl(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),DOe=nl(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),doe=nl(["#text"]),hoe=nl(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),F6=nl(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),moe=nl(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),cO=nl(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),vOe=Sf(/\{\{[\w\W]*|[\w\W]*\}\}/gm),POe=Sf(/<%[\w\W]*|[\w\W]*%>/gm),ROe=Sf(/\$\{[\w\W]*/gm),MOe=Sf(/^data-[\-\w.\u00B7-\uFFFF]+$/),NOe=Sf(/^aria-[\-\w]+$/),yoe=Sf(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),LOe=Sf(/^(?:\w+script|data):/i),OOe=Sf(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Coe=Sf(/^html$/i),FOe=Sf(/^[a-z][.\w]*(-[.\w]+)+$/i),Aoe=Object.freeze({__proto__:null,ARIA_ATTR:NOe,ATTR_WHITESPACE:OOe,CUSTOM_ELEMENT:FOe,DATA_ATTR:MOe,DOCTYPE_NAME:Coe,ERB_EXPR:POe,IS_ALLOWED_URI:yoe,IS_SCRIPT_OR_DATA:LOe,MUSTACHE_EXPR:vOe,TMPLIT_EXPR:ROe}),Fw={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},QOe=function(){return typeof window>"u"?null:window},kOe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},poe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Eoe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:QOe(),t=cn=>Eoe(cn);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==Fw.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:A,trustedTypes:g}=e,m=c.prototype,_=Ow(m,"cloneNode"),y=Ow(m,"remove"),C=Ow(m,"nextSibling"),E=Ow(m,"childNodes"),I=Ow(m,"parentNode");if(typeof s=="function"){let cn=n.createElement("template");cn.content&&cn.content.ownerDocument&&(n=cn.content.ownerDocument)}let b,S="",{implementation:B,createNodeIterator:v,createDocumentFragment:P,getElementsByTagName:N}=n,{importNode:L}=i,p=poe();t.isSupported=typeof goe=="function"&&typeof I=="function"&&B&&B.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:x,ERB_EXPR:T,TMPLIT_EXPR:w,DATA_ATTR:M,ARIA_ATTR:O,IS_SCRIPT_OR_DATA:U,ATTR_WHITESPACE:Q,CUSTOM_ELEMENT:z}=Aoe,{IS_ALLOWED_URI:F}=Aoe,H=null,W=Fi({},[...foe,...N6,...L6,...O6,...doe]),Z=null,Y=Fi({},[...hoe,...F6,...moe,...cO]),$=Object.seal(_oe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,he=null,ge=!0,fe=!0,ye=!1,Ie=!0,ve=!1,Te=!0,ke=!1,Ge=!1,qe=!1,tt=!1,$t=!1,it=!1,tn=!0,Wt=!1,vt="user-content-",bi=!0,di=!1,Ot={},Tt=null,ii=Fi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ct=null,Ro=Fi({},["audio","video","img","source","image","track"]),Qo=null,ya=Fi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mr="http://www.w3.org/1998/Math/MathML",Tr="http://www.w3.org/2000/svg",Oe="http://www.w3.org/1999/xhtml",lt=Oe,Ke=!1,$e=null,pt=Fi({},[mr,Tr,Oe],M6),Xt=Fi({},["mi","mo","mn","ms","mtext"]),xn=Fi({},["annotation-xml"]),lo=Fi({},["title","style","font","a","script"]),ro=null,$s=["application/xhtml+xml","text/html"],ea="text/html",Vn=null,_i=null,_s=n.createElement("form"),Wo=function(Se){return Se instanceof RegExp||Se instanceof Function},Ca=function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(_i&&_i===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=jA(Se),ro=$s.indexOf(Se.PARSER_MEDIA_TYPE)===-1?ea:Se.PARSER_MEDIA_TYPE,Vn=ro==="application/xhtml+xml"?M6:lO,H=zd(Se,"ALLOWED_TAGS")?Fi({},Se.ALLOWED_TAGS,Vn):W,Z=zd(Se,"ALLOWED_ATTR")?Fi({},Se.ALLOWED_ATTR,Vn):Y,$e=zd(Se,"ALLOWED_NAMESPACES")?Fi({},Se.ALLOWED_NAMESPACES,M6):pt,Qo=zd(Se,"ADD_URI_SAFE_ATTR")?Fi(jA(ya),Se.ADD_URI_SAFE_ATTR,Vn):ya,Ct=zd(Se,"ADD_DATA_URI_TAGS")?Fi(jA(Ro),Se.ADD_DATA_URI_TAGS,Vn):Ro,Tt=zd(Se,"FORBID_CONTENTS")?Fi({},Se.FORBID_CONTENTS,Vn):ii,X=zd(Se,"FORBID_TAGS")?Fi({},Se.FORBID_TAGS,Vn):jA({}),he=zd(Se,"FORBID_ATTR")?Fi({},Se.FORBID_ATTR,Vn):jA({}),Ot=zd(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ge=Se.ALLOW_ARIA_ATTR!==!1,fe=Se.ALLOW_DATA_ATTR!==!1,ye=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Ie=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ve=Se.SAFE_FOR_TEMPLATES||!1,Te=Se.SAFE_FOR_XML!==!1,ke=Se.WHOLE_DOCUMENT||!1,tt=Se.RETURN_DOM||!1,$t=Se.RETURN_DOM_FRAGMENT||!1,it=Se.RETURN_TRUSTED_TYPE||!1,qe=Se.FORCE_BODY||!1,tn=Se.SANITIZE_DOM!==!1,Wt=Se.SANITIZE_NAMED_PROPS||!1,bi=Se.KEEP_CONTENT!==!1,di=Se.IN_PLACE||!1,F=Se.ALLOWED_URI_REGEXP||yoe,lt=Se.NAMESPACE||Oe,Xt=Se.MATHML_TEXT_INTEGRATION_POINTS||Xt,xn=Se.HTML_INTEGRATION_POINTS||xn,$=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&($.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&($.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&($.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(fe=!1),$t&&(tt=!0),Ot&&(H=Fi({},doe),Z=[],Ot.html===!0&&(Fi(H,foe),Fi(Z,hoe)),Ot.svg===!0&&(Fi(H,N6),Fi(Z,F6),Fi(Z,cO)),Ot.svgFilters===!0&&(Fi(H,L6),Fi(Z,F6),Fi(Z,cO)),Ot.mathMl===!0&&(Fi(H,O6),Fi(Z,moe),Fi(Z,cO))),Se.ADD_TAGS&&(H===W&&(H=jA(H)),Fi(H,Se.ADD_TAGS,Vn)),Se.ADD_ATTR&&(Z===Y&&(Z=jA(Z)),Fi(Z,Se.ADD_ATTR,Vn)),Se.ADD_URI_SAFE_ATTR&&Fi(Qo,Se.ADD_URI_SAFE_ATTR,Vn),Se.FORBID_CONTENTS&&(Tt===ii&&(Tt=jA(Tt)),Fi(Tt,Se.FORBID_CONTENTS,Vn)),bi&&(H["#text"]=!0),ke&&Fi(H,["html","head","body"]),H.table&&(Fi(H,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');b=Se.TRUSTED_TYPES_POLICY,S=b.createHTML("")}else b===void 0&&(b=kOe(g,o)),b!==null&&typeof S=="string"&&(S=b.createHTML(""));nl&&nl(Se),_i=Se}},uo=Fi({},[...N6,...L6,...BOe]),jo=Fi({},[...O6,...DOe]),df=function(Se){let St=I(Se);(!St||!St.tagName)&&(St={namespaceURI:lt,tagName:"template"});let _n=lO(Se.tagName),er=lO(St.tagName);return $e[Se.namespaceURI]?Se.namespaceURI===Tr?St.namespaceURI===Oe?_n==="svg":St.namespaceURI===mr?_n==="svg"&&(er==="annotation-xml"||Xt[er]):!!uo[_n]:Se.namespaceURI===mr?St.namespaceURI===Oe?_n==="math":St.namespaceURI===Tr?_n==="math"&&xn[er]:!!jo[_n]:Se.namespaceURI===Oe?St.namespaceURI===Tr&&!xn[er]||St.namespaceURI===mr&&!Xt[er]?!1:!jo[_n]&&(lo[_n]||!uo[_n]):!!(ro==="application/xhtml+xml"&&$e[Se.namespaceURI]):!1},Ar=function(Se){Mw(t.removed,{element:Se});try{I(Se).removeChild(Se)}catch{y(Se)}},ys=function(Se,St){try{Mw(t.removed,{attribute:St.getAttributeNode(Se),from:St})}catch{Mw(t.removed,{attribute:null,from:St})}if(St.removeAttribute(Se),Se==="is")if(tt||$t)try{Ar(St)}catch{}else try{St.setAttribute(Se,"")}catch{}},Qs=function(Se){let St=null,_n=null;if(qe)Se="<remove></remove>"+Se;else{let Cs=uoe(Se,/^[\r\n\t ]+/);_n=Cs&&Cs[0]}ro==="application/xhtml+xml"&<===Oe&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let er=b?b.createHTML(Se):Se;if(lt===Oe)try{St=new A().parseFromString(er,ro)}catch{}if(!St||!St.documentElement){St=B.createDocument(lt,"template",null);try{St.documentElement.innerHTML=Ke?S:er}catch{}}let Ea=St.body||St.documentElement;return Se&&_n&&Ea.insertBefore(n.createTextNode(_n),Ea.childNodes[0]||null),lt===Oe?N.call(St,ke?"html":"body")[0]:ke?St.documentElement:Ea},vd=function(Se){return v.call(Se.ownerDocument||Se,Se,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},rs=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},qa=function(Se){return typeof a=="function"&&Se instanceof a};function Ka(cn,Se,St){aO(cn,_n=>{_n.call(t,Se,St,_i)})}let Sr=function(Se){let St=null;if(Ka(p.beforeSanitizeElements,Se,null),rs(Se))return Ar(Se),!0;let _n=Vn(Se.nodeName);if(Ka(p.uponSanitizeElement,Se,{tagName:_n,allowedTags:H}),Te&&Se.hasChildNodes()&&!qa(Se.firstElementChild)&&tl(/<[/\w!]/g,Se.innerHTML)&&tl(/<[/\w!]/g,Se.textContent)||Se.nodeType===Fw.progressingInstruction||Te&&Se.nodeType===Fw.comment&&tl(/<[/\w]/g,Se.data))return Ar(Se),!0;if(!H[_n]||X[_n]){if(!X[_n]&&Dl(_n)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n)))return!1;if(bi&&!Tt[_n]){let er=I(Se)||Se.parentNode,Ea=E(Se)||Se.childNodes;if(Ea&&er){let Cs=Ea.length;for(let dc=Cs-1;dc>=0;--dc){let Pd=_(Ea[dc],!0);Pd.__removalCount=(Se.__removalCount||0)+1,er.insertBefore(Pd,C(Se))}}}return Ar(Se),!0}return Se instanceof c&&!df(Se)||(_n==="noscript"||_n==="noembed"||_n==="noframes")&&tl(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Ar(Se),!0):(ve&&Se.nodeType===Fw.text&&(St=Se.textContent,aO([x,T,w],er=>{St=Nw(St,er," ")}),Se.textContent!==St&&(Mw(t.removed,{element:Se.cloneNode()}),Se.textContent=St)),Ka(p.afterSanitizeElements,Se,null),!1)},Bl=function(Se,St,_n){if(tn&&(St==="id"||St==="name")&&(_n in n||_n in _s))return!1;if(!(fe&&!he[St]&&tl(M,St))){if(!(ge&&tl(O,St))){if(!Z[St]||he[St]){if(!(Dl(Se)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,Se)||$.tagNameCheck instanceof Function&&$.tagNameCheck(Se))&&($.attributeNameCheck instanceof RegExp&&tl($.attributeNameCheck,St)||$.attributeNameCheck instanceof Function&&$.attributeNameCheck(St))||St==="is"&&$.allowCustomizedBuiltInElements&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n))))return!1}else if(!Qo[St]){if(!tl(F,Nw(_n,Q,""))){if(!((St==="src"||St==="xlink:href"||St==="href")&&Se!=="script"&&bOe(_n,"data:")===0&&Ct[Se])){if(!(ye&&!tl(U,Nw(_n,Q,"")))){if(_n)return!1}}}}}}return!0},Dl=function(Se){return Se!=="annotation-xml"&&uoe(Se,z)},ta=function(Se){Ka(p.beforeSanitizeAttributes,Se,null);let{attributes:St}=Se;if(!St||rs(Se))return;let _n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0},er=St.length;for(;er--;){let Ea=St[er],{name:Cs,namespaceURI:dc,value:Pd}=Ea,TA=Vn(Cs),LS=Pd,Ia=Cs==="value"?LS:TOe(LS);if(_n.attrName=TA,_n.attrValue=Ia,_n.keepAttr=!0,_n.forceKeepAttr=void 0,Ka(p.uponSanitizeAttribute,Se,_n),Ia=_n.attrValue,Wt&&(TA==="id"||TA==="name")&&(ys(Cs,Se),Ia=vt+Ia),Te&&tl(/((--!?|])>)|<\/(style|title)/i,Ia)){ys(Cs,Se);continue}if(_n.forceKeepAttr)continue;if(!_n.keepAttr){ys(Cs,Se);continue}if(!Ie&&tl(/\/>/i,Ia)){ys(Cs,Se);continue}ve&&aO([x,T,w],_R=>{Ia=Nw(Ia,_R," ")});let gR=Vn(Se.nodeName);if(!Bl(gR,TA,Ia)){ys(Cs,Se);continue}if(b&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!dc)switch(g.getAttributeType(gR,TA)){case"TrustedHTML":{Ia=b.createHTML(Ia);break}case"TrustedScriptURL":{Ia=b.createScriptURL(Ia);break}}if(Ia!==LS)try{dc?Se.setAttributeNS(dc,Cs,Ia):Se.setAttribute(Cs,Ia),rs(Se)?Ar(Se):loe(t.removed)}catch{ys(Cs,Se)}}Ka(p.afterSanitizeAttributes,Se,null)},wo=function cn(Se){let St=null,_n=vd(Se);for(Ka(p.beforeSanitizeShadowDOM,Se,null);St=_n.nextNode();)Ka(p.uponSanitizeShadowNode,St,null),Sr(St),ta(St),St.content instanceof r&&cn(St.content);Ka(p.afterSanitizeShadowDOM,Se,null)};return t.sanitize=function(cn){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},St=null,_n=null,er=null,Ea=null;if(Ke=!cn,Ke&&(cn="<!-->"),typeof cn!="string"&&!qa(cn))if(typeof cn.toString=="function"){if(cn=cn.toString(),typeof cn!="string")throw Lw("dirty is not a string, aborting")}else throw Lw("toString is not a function");if(!t.isSupported)return cn;if(Ge||Ca(Se),t.removed=[],typeof cn=="string"&&(di=!1),di){if(cn.nodeName){let Pd=Vn(cn.nodeName);if(!H[Pd]||X[Pd])throw Lw("root node is forbidden and cannot be sanitized in-place")}}else if(cn instanceof a)St=Qs("<!---->"),_n=St.ownerDocument.importNode(cn,!0),_n.nodeType===Fw.element&&_n.nodeName==="BODY"||_n.nodeName==="HTML"?St=_n:St.appendChild(_n);else{if(!tt&&!ve&&!ke&&cn.indexOf("<")===-1)return b&&it?b.createHTML(cn):cn;if(St=Qs(cn),!St)return tt?null:it?S:""}St&&qe&&Ar(St.firstChild);let Cs=vd(di?cn:St);for(;er=Cs.nextNode();)Sr(er),ta(er),er.content instanceof r&&wo(er.content);if(di)return cn;if(tt){if($t)for(Ea=P.call(St.ownerDocument);St.firstChild;)Ea.appendChild(St.firstChild);else Ea=St;return(Z.shadowroot||Z.shadowrootmode)&&(Ea=L.call(i,Ea,!0)),Ea}let dc=ke?St.outerHTML:St.innerHTML;return ke&&H["!doctype"]&&St.ownerDocument&&St.ownerDocument.doctype&&St.ownerDocument.doctype.name&&tl(Coe,St.ownerDocument.doctype.name)&&(dc="<!DOCTYPE "+St.ownerDocument.doctype.name+`>
|
||
`+dc),ve&&aO([x,T,w],Pd=>{dc=Nw(dc,Pd," ")}),b&&it?b.createHTML(dc):dc},t.setConfig=function(){let cn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ca(cn),Ge=!0},t.clearConfig=function(){_i=null,Ge=!1},t.isValidAttribute=function(cn,Se,St){_i||Ca({});let _n=Vn(cn),er=Vn(Se);return Bl(_n,er,St)},t.addHook=function(cn,Se){typeof Se=="function"&&Mw(p[cn],Se)},t.removeHook=function(cn,Se){if(Se!==void 0){let St=IOe(p[cn],Se);return St===-1?void 0:xOe(p[cn],St,1)[0]}return loe(p[cn])},t.removeHooks=function(cn){p[cn]=[]},t.removeAllHooks=function(){p=poe()},t}var Ioe=Eoe();var UOe=0,U6={};function dm(e,t){let n,i=e;l(U6[i])?n=U6[i]:(n=UOe++,U6[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(dm.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Ioe.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});dm.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};dm.prototype.equals=function(e){return dm.equals(this,e)};dm.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};dm.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new dm(e.html,t)};dm.clone=function(e){if(l(e))return new dm(e.html,e.showOnScreen)};var Dt=dm;function GOe(e,t){yt(e,t)}var Pr=GOe;function PC(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new _e}Object.defineProperties(PC.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});PC.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function G6(e){e._cubeMapBuffers=void 0}PC.prototype.update=function(e){let{context:t}=e;if(!PC.isSupported(t))return;if(l(this._texture)){G6(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(G6(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;Iu(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT);let o=et.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(jr.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),u=new jr({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};PC.prototype.isDestroyed=function(){return!1};PC.prototype.destroy=function(){return G6(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var hm=PC;function Qw(e){e=e??V.EMPTY_OBJECT;let t=l(e.imageBasedLightingFactor)?k.clone(e.imageBasedLightingFactor):new k(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousFrameContext=void 0,this._previousImageBasedLightingFactor=k.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(Qw.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=k.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function zOe(e,t){if(hm.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new hm(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}Qw.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;k.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(zOe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};Qw.prototype.isDestroyed=function(){return!1};Qw.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var GI=Qw;var V6=Es(_u(),1);var z6,xoe="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",uO={};uO.defaultAccessToken=xoe;uO.defaultServer=new we({url:"https://api.cesium.com/"});uO.getDefaultTokenCredit=function(e){if(e===xoe){if(!l(z6)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;z6=new Dt(t,!0)}return z6}};var mm=uO;function ol(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:VOe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new ce("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");we.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new V6.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(ol.prototype=Object.create(we.prototype),ol.prototype.constructor=ol);ol.fromAssetId=function(e,t){let n=ol._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new ol(i,n)})};Object.defineProperties(ol.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=ol.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});ol.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Dt.getIonCredit),i=mm.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Dt.clone(i)),n};ol.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new ol(t._ionEndpoint,t._ionEndpointResource)),e=we.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};ol.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return we.prototype.fetchImage.call(this,e)};ol.prototype._makeRequest=function(e){return this._isExternal||new V6.default(this.url).authority()!==this._ionEndpointDomain?we.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),we.prototype._makeRequest.call(this,e))};ol._createEndpointResource=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.server??mm.defaultServer,i=t.accessToken??mm.defaultAccessToken;n=we.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function VOe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var wf=ol;function Am(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Am.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Am.prototype.get=function(e){return this._array[e]};Am.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Am.prototype.peek=function(){return this._array[this._length-1]};Am.prototype.push=function(e){let t=this.length++;this._array[t]=e};Am.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Am.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Am.prototype.resize=function(e){this.length=e};Am.prototype.trim=function(e){e=e??this._length,this._array.length=e};var kl=Am;function fO(e){e=e??V.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}fO.ALL=Object.freeze(new fO({color:new G(0,0,0,0),depth:1,stencil:0}));fO.prototype.execute=function(e,t){e.clear(this,t)};var Ei=fO;var YA={X:0,Y:1,Z:2};YA.Y_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,1,0,-1,0]));YA.Z_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,-1,0,1,0]));YA.X_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([0,0,1,0,1,0,-1,0,0]));YA.Z_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,0,-1,0,1,0,1,0,0]));YA.X_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([0,1,0,-1,0,0,0,0,1]));YA.Y_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,-1,0,1,0,0,0,0,1]));YA.fromName=function(e){return YA[e]};var Ao=Object.freeze(YA);function Bf(e){this.planes=e??[]}var kw=[new d,new d,new d];d.clone(d.UNIT_X,kw[0]);d.clone(d.UNIT_Y,kw[1]);d.clone(d.UNIT_Z,kw[2]);var Mg=new d,HOe=new d,boe=new mn(new d(1,0,0),0);Bf.fromBoundingSphere=function(e,t){l(t)||(t=new Bf);let n=kw.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=kw[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new se),l(f)||(f=i[s+1]=new se),d.multiplyByScalar(c,-r,Mg),d.add(o,Mg,Mg),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,Mg),d.multiplyByScalar(c,r,Mg),d.add(o,Mg,Mg),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,HOe),Mg),s+=2}return t};Bf.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(mn.fromCartesian4(t[i],boe));if(r===nn.OUTSIDE)return nn.OUTSIDE;r===nn.INTERSECTING&&(n=!0)}return n?nn.INTERSECTING:nn.INSIDE};Bf.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===Bf.MASK_OUTSIDE||t===Bf.MASK_INSIDE)return t;let n=Bf.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(mn.fromCartesian4(i[o],boe));if(a===nn.OUTSIDE)return Bf.MASK_OUTSIDE;a===nn.INTERSECTING&&(n|=s)}return n};Bf.MASK_OUTSIDE=4294967295;Bf.MASK_INSIDE=0;Bf.MASK_INDETERMINATE=2147483647;var zs=Bf;function pm(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._orthographicMatrix=new R}function Toe(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=R.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(pm.prototype,{projectionMatrix:{get:function(){return Toe(this),this._orthographicMatrix}}});var WOe=new d,jOe=new d,YOe=new d,H6=new d;pm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,WOe);d.normalize(f,f);let h=jOe;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=YOe;d.multiplyByScalar(f,a,A),d.add(h,A,A);let g=i[0];return l(g)||(g=i[0]=new se),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,A),d.multiplyByScalar(f,s,A),d.add(h,A,A),g=i[1],l(g)||(g=i[1]=new se),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,H6),A),d.multiplyByScalar(n,r,A),d.add(h,A,A),g=i[2],l(g)||(g=i[2]=new se),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,A),d.multiplyByScalar(n,o,A),d.add(h,A,A),g=i[3],l(g)||(g=i[3]=new se),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,H6),A),g=i[4],l(g)||(g=i[4]=new se),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,A),d.add(e,A,A),g=i[5],l(g)||(g=i[5]=new se),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,H6),A),this._cullingVolume};pm.prototype.getPixelDimensions=function(e,t,n,i,o){Toe(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};pm.prototype.clone=function(e){return l(e)||(e=new pm),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};pm.prototype.equals=function(e){return l(e)&&e instanceof pm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};pm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof pm&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var ls=pm;function Ul(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new ls,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}Ul.packedLength=4;Ul.pack=function(e,t,n){return n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};Ul.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ul),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function Ng(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(Ul.prototype,{projectionMatrix:{get:function(){return Ng(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return Ng(this),this._offCenterFrustum}}});Ul.prototype.computeCullingVolume=function(e,t,n){return Ng(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Ul.prototype.getPixelDimensions=function(e,t,n,i,o){return Ng(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Ul.prototype.clone=function(e){return l(e)||(e=new Ul),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Ul.prototype.equals=function(e){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Ul.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),D.equalsEpsilon(this.width,e.width,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var An=Ul;function Soe(e){e=e??V.EMPTY_OBJECT,this._metadata=e.metadata}Object.defineProperties(Soe.prototype,{metadata:{get:function(){return this._metadata}}});var zI=Soe;function Lg(e,t,n){return t=t??0,n=n??e.byteLength-t,e=e.subarray(t,t+n),Lg.decode(e)}Lg.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};Lg.decodeWithFromCharCode=function(e){let t="",n=qOe(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function Uw(e,t,n){return t<=e&&e<=n}function qOe(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(Uw(u,0,127)){s.push(u);continue}if(Uw(u,194,223)){i=1,t=u&31;continue}if(Uw(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(Uw(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new ce("String decoding failed.")}if(!Uw(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?Lg.decode=Lg.decodeWithTextDecoder:Lg.decode=Lg.decodeWithFromCharCode;var Tu=Lg;function KOe(e,t){return t=t??0,Tu(e,t,Math.min(4,e.length))}var gm=KOe;function Df(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Df.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var Gw=Uint32Array.BYTES_PER_ELEMENT;Df.fromTileType=async function(e,t,n,i,o,r){o=o??0;let s=new Uint8Array(i),a=new DataView(i);o+=Gw;let c=a.getUint32(o,!0);if(c!==1)throw new ce(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=Gw,o+=Gw;let u=a.getUint32(o,!0);o+=Gw;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let _=gm(s,o),y=a.getUint32(o+Gw*2,!0),C=r[_],E=`${f}${m}`,I=n.getDerivedResource({queryParameters:{compositeIndex:E}});if(l(C))h[m]=Promise.resolve(C(e,t,I,i,o));else throw new ce(`Unknown tile content type, ${_}, inside Composite tile`);o+=y}let A=await Promise.all(h);return new Df(e,t,n,A)};Df.prototype.hasProperty=function(e,t){return!1};Df.prototype.getFeature=function(e){};Df.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Df.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Df.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Df.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Df.prototype.isDestroyed=function(){return!1};Df.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var dO=Df;function XOe(e,t,n){return JSON.parse(Tu(e,t,n))}var yr=XOe;function bc(e){this._id=Xn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,qt.maximumTextureSize),r=Math.ceil(t/qt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new k(o,r),i=new se(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(bc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});bc.DEFAULT_COLOR_VALUE=G.WHITE;bc.DEFAULT_SHOW_VALUE=!0;function woe(e){let t=e._textureDimensions;return t.x*t.y*4}function Boe(e){if(!l(e._batchValues)){let t=woe(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Doe(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}bc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Doe(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=Boe(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};bc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};bc.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var JOe=new Array(4);bc.prototype.setColor=function(e,t){if(G.equals(t,bc.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(JOe),i=n[3],o=Boe(this),r=e*4,s=Doe(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};bc.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};bc.prototype.getColor=function(e,t){if(!l(this._batchValues))return G.clone(bc.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return G.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};bc.prototype.getPickColor=function(e){return this._pickIds[e]};function voe(e,t,n){let i=e._textureDimensions;return new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:on.NEAREST})}function ZOe(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=woe(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=G.floatToByte(f.red),r[h+1]=G.floatToByte(f.green),r[h+2]=G.floatToByte(f.blue),r[h+3]=G.floatToByte(f.alpha)}e._pickTexture=voe(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function $Oe(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}bc.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&ZOe(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=voe(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),$Oe(this))};bc.prototype.isDestroyed=function(){return!1};bc.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Gl=bc;var eFe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},tFe={SCALAR:void 0,VEC2:k,VEC3:d,VEC4:se,MAT2:Wi,MAT3:J,MAT4:R};function nFe(e){let t=e.componentType,n;typeof t=="string"?n=q.fromName(t):n=t;let i=eFe[e.type],o=tFe[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return q.createArrayBufferView(n,r,s,i*a)}}}var vf=nFe;function qA(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,iFe(this,e.extension,e.binaryBody)}Object.defineProperties(qA.prototype,{byteLength:{get:function(){return this._byteLength}}});function iFe(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,A=0;l(c.byteOffset)&&(c.componentType=c.componentType??q.UNSIGNED_SHORT,c.type=Ht.SCALAR,r=vf(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),A+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=u.componentType??q.UNSIGNED_SHORT,u.type=Ht.SCALAR,r=vf(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),A+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];A+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=f.componentType??q.UNSIGNED_SHORT,f.type=Ht.SCALAR,r=vf(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),A+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let C=a[i].length,E=a[i].instances,I=oFe(C,E,n);A+=rFe(I),a[i].instances=wt(I,E)}let _=new Array(m).fill(0),y=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],y[i]=_[o],++_[o];A+=y.byteLength,e._classes=a,e._classIds=c,e._classIndexes=y,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=A}function oFe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function rFe(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var sFe=[],aFe=[],cFe=0;function lFe(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=sFe;c.length=Math.max(c.length,a);let u=++cFe,f=aFe;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let A=o[t],g=s[t];for(let m=0;m<A;++m){let _=r[g+m];_!==t&&f.push(_)}}}function uFe(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function zw(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return lFe(e,t,n)}else return n(e,t);return uFe(e,t,n)}qA.prototype.hasProperty=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};qA.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};qA.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};qA.prototype.getProperty=function(e,t){return zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?fFe(a,s):ze(a[s],!0)})};function fFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}qA.prototype.setProperty=function(e,t,n){let i=zw(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?dFe(u,c,n):u[c]=ze(n,!0),!0});return l(i)};function dFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}qA.prototype.isClass=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};qA.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var VI=qA;var hFe={HIGHLIGHT:0,REPLACE:1,MIX:2},Su=Object.freeze(hFe);function mFe(e,t){if(!l(t))return;let n=t.length;if(n===0)return;let i=e.length;e.length+=n;for(let o=0;o<n;o++)e[i+o]=t[o]}var si=mFe;var W6=Gl.DEFAULT_COLOR_VALUE,j6=Gl.DEFAULT_SHOW_VALUE;function Do(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=r??{};let s=AFe(n);this._properties=s,this._batchTableHierarchy=pFe(this,n,i);let a=Roe(t,s,i);this._binaryPropertiesByteLength=gFe(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Gl({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}Do._deprecationWarning=Pr;Object.defineProperties(Do.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function AFe(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=ze(e[n],!0));return t}function pFe(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(Do._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new VI({extension:i,binaryBody:n})}function Roe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function gFe(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}Do.getBinaryProperties=function(e,t,n){return Roe(e,t,n)};Do.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Do.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Do.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Do.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Do.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Do.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Do.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var _Fe=new G;Do.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(W6),this.setAllShow(j6);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?e.color.evaluateColor(o,_Fe)??W6:W6,s=l(e.show)?e.show.evaluate(o)??j6:j6;this.setColor(i,r),this.setShow(i,s)}};function yFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function CFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}Do.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Do.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Do.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};Do.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};Do.prototype.hasPropertyBySemantic=function(){return!1};Do.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);if(si(t,n),l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getPropertyIds(e,n);si(t,i)}return t};Do.prototype.getPropertyBySemantic=function(e,t){};Do.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return yFe(i,e)}let n=this._properties[t];if(l(n))return ze(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};Do.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){CFe(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=ze(n,!0)};function EFe(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep;
|
||
vec2 computeSt(float batchId)
|
||
{
|
||
float stepX = tile_textureStep.x;
|
||
float centerX = tile_textureStep.y;
|
||
return vec2(centerX + (batchId * stepX), 0.5);
|
||
}
|
||
`:`uniform vec4 tile_textureStep;
|
||
uniform vec2 tile_textureDimensions;
|
||
vec2 computeSt(float batchId)
|
||
{
|
||
float stepX = tile_textureStep.x;
|
||
float centerX = tile_textureStep.y;
|
||
float stepY = tile_textureStep.z;
|
||
float centerY = tile_textureStep.w;
|
||
float xId = mod(batchId, tile_textureDimensions.x);
|
||
float yId = floor(batchId / tile_textureDimensions.x);
|
||
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
|
||
}
|
||
`}Do.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Moe(o,n,!1),s;return qt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand;
|
||
`),s+=`uniform sampler2D tile_batchTexture;
|
||
out vec4 tile_featureColor;
|
||
out vec2 tile_featureSt;
|
||
void main()
|
||
{
|
||
vec2 st = computeSt(${t});
|
||
vec4 featureProperties = texture(tile_batchTexture, st);
|
||
tile_color(featureProperties);
|
||
float show = ceil(featureProperties.a);
|
||
gl_Position *= show;
|
||
`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0);
|
||
if (czm_pass == czm_passTranslucent)
|
||
{
|
||
if (!isStyleTranslucent && !tile_translucentCommand)
|
||
{
|
||
gl_Position *= 0.0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isStyleTranslucent)
|
||
{
|
||
gl_Position *= 0.0;
|
||
}
|
||
}
|
||
`),s+=` tile_featureColor = featureProperties;
|
||
tile_featureSt = st;
|
||
}`):s=`out vec2 tile_featureSt;
|
||
void main()
|
||
{
|
||
tile_color(vec4(1.0));
|
||
tile_featureSt = computeSt(${t});
|
||
}`,`${r}
|
||
${EFe(i)}${s}`}};function Poe(e,t){return e=We.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend;
|
||
void tile_color(vec4 tile_featureColor)
|
||
{
|
||
tile_main();
|
||
tile_featureColor = czm_gammaCorrect(tile_featureColor);
|
||
out_FragColor.a *= tile_featureColor.a;
|
||
float highlight = ceil(tile_colorBlend);
|
||
out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight);
|
||
}
|
||
`:`${e}void tile_color(vec4 tile_featureColor)
|
||
{
|
||
tile_main();
|
||
}
|
||
`}function IFe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Moe(e,t,n){if(!l(t))return Poe(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return Poe(e,n);let r=o[0],s=o[2];e=We.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color)
|
||
{
|
||
return all(greaterThan(color, vec3(1.0 - czm_epsilon3)));
|
||
}
|
||
vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse)
|
||
{
|
||
vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend);
|
||
vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse;
|
||
return vec4(diffuse.rgb, sourceDiffuse.a);
|
||
}
|
||
`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor);
|
||
out_FragColor.a *= tile_featureColor.a;
|
||
float highlight = ceil(tile_colorBlend);
|
||
out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight);
|
||
`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f};
|
||
tile_diffuse = tile_diffuse_final(source, tile_featureColor);
|
||
tile_main();
|
||
`}else s==="sampler2D"&&(e=IFe(e,t),u=` tile_diffuse = tile_featureColor;
|
||
tile_main();
|
||
`);return e=`uniform float tile_colorBlend;
|
||
vec4 tile_diffuse = vec4(1.0);
|
||
${a}${r}
|
||
${e}
|
||
void tile_color(vec4 tile_featureColor)
|
||
{
|
||
${u}`,n&&(e+=c),e+=`}
|
||
`,e}Do.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Moe(i,t,!0),qt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture;
|
||
in vec2 tile_featureSt;
|
||
in vec4 tile_featureColor;
|
||
void main()
|
||
{
|
||
tile_color(tile_featureColor);
|
||
`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a;
|
||
`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand;
|
||
`),i+=`uniform sampler2D tile_pickTexture;
|
||
uniform sampler2D tile_batchTexture;
|
||
in vec2 tile_featureSt;
|
||
void main()
|
||
{
|
||
vec4 featureProperties = texture(tile_batchTexture, tile_featureSt);
|
||
if (featureProperties.a == 0.0) {
|
||
discard;
|
||
}
|
||
`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0);
|
||
if (czm_pass == czm_passTranslucent)
|
||
{
|
||
if (!isStyleTranslucent && !tile_translucentCommand)
|
||
{
|
||
discard;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isStyleTranslucent)
|
||
{
|
||
discard;
|
||
}
|
||
}
|
||
`),i+=` tile_color(featureProperties);
|
||
`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a;
|
||
`),i+=`}
|
||
`),i}};function xFe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===Su.HIGHLIGHT)return 0;if(n===Su.REPLACE)return 1;if(n===Su.MIX)return D.clamp(i,D.EPSILON4,1)}Do.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return wt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return xFe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};Do.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Og={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Do.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=bFe(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===Be.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=TFe(f),f.dirty=!1);let A=h.originalCommand;c!==Og.ALL_OPAQUE&&f.pass!==Be.TRANSLUCENT&&(l(h.translucent)||(h.translucent=SFe(A))),c!==Og.ALL_TRANSLUCENT&&f.pass!==Be.TRANSLUCENT&&(l(h.opaque)||(h.opaque=wFe(A)),a&&(r||(l(h.zback)||(h.zback=DFe(e.context,A)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==PFe(h.stencil))&&(f.renderState.depthMask?h.stencil=vFe(A,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==Be.TRANSLUCENT?(c===Og.ALL_OPAQUE&&(n[u]=g),c===Og.ALL_TRANSLUCENT&&(n[u]=m),c===Og.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=A}};function bFe(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?Og.ALL_OPAQUE:t===e.featuresLength?Og.ALL_TRANSLUCENT:Og.OPAQUE_AND_TRANSLUCENT}function TFe(e){let t=nt.shallowClone(e),n=t.pass===Be.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function SFe(e){let t=nt.shallowClone(e);return t.pass=Be.TRANSLUCENT,t.renderState=RFe(e.renderState),t}function wFe(e){let t=nt.shallowClone(e);return t.renderState=MFe(e.renderState),t}function BFe(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function DFe(e,t){let n=nt.shallowClone(t),i=ze(n.renderState,!0);i.cull.enabled=!0,i.cull.face=Mi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK,n.renderState=Ue.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=ze(t.uniformMap);let o=new k(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=BFe(e,t.shaderProgram),n}function vFe(e,t){let n=nt.shallowClone(e),i=ze(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Kt.SKIP_LOD_MASK,i.stencilTest.reference=Kt.CESIUM_3D_TILE_MASK|t<<Kt.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=_t.REPLACE,i.stencilTest.backFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=_t.REPLACE,i.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,n.renderState=Ue.fromCache(i),n}function PFe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function RFe(e){let t=ze(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=pn.ALPHA_BLEND,t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}function MFe(e){let t=ze(e,!0);return t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}Do.prototype.update=function(e,t){this._batchTexture.update(e,t)};Do.prototype.isDestroyed=function(){return!1};Do.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var Fg=Do;function NFe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var KA=NFe;var Vw=`in vec3 position;
|
||
in float a_batchId;
|
||
|
||
uniform mat4 u_modifiedModelViewProjection;
|
||
|
||
void main()
|
||
{
|
||
gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0));
|
||
}
|
||
`;function Pf(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(Pf.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});Pf.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Pf.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Pf.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Pf.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};Pf.prototype.getPropertyInherited=function(e){return Pf.getPropertyInherited(this._content,this._batchId,e)};Pf.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Pf.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Pf.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Pf.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Sa=Pf;var Y6=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},q6=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},zl=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=`
|
||
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},LFe=new Y6;Object.assign(zl,{hooks:LFe,plugins:new q6(zl),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});zl.max_unop_len=zl.getMaxKeyLen(zl.unary_ops);zl.max_binop_len=zl.getMaxKeyLen(zl.binary_ops);var Qg=e=>new zl(e).parse(),OFe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(zl).filter(e=>!OFe.includes(e)&&Qg[e]===void 0).forEach(e=>{Qg[e]=zl[e]});Qg.Jsep=zl;var FFe="ConditionalExpression",QFe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:FFe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};Qg.plugins.register(QFe);var kFe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},It=Object.freeze(kFe);function Vd(e,t){this._expression=e,e=ZFe(e,t),e=e2e($Fe(e)),Qg.addBinaryOp("=~",0),Qg.addBinaryOp("!~",0);let n;try{n=Qg(e)}catch(i){throw new ce(i)}this._runtimeAst=Ni(this,n)}Object.defineProperties(Vd.prototype,{expression:{get:function(){return this._expression}}});var Un={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new k],cartesian3Array:[new d],cartesian4Array:[new se],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new k),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new se),this.cartesian4Array[this.cartesian4Index++]}};Vd.prototype.evaluate=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return t instanceof G&&n instanceof se?G.fromCartesian4(n,t):n instanceof k||n instanceof d||n instanceof se?n.clone(t):n};Vd.prototype.evaluateColor=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return G.fromCartesian4(n,t)};Vd.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e}
|
||
{
|
||
return ${o};
|
||
}
|
||
`,o};Vd.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};Vd.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var UFe=["!","-","+"],Noe=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],Hw=/\${(.*?)}/g,GFe=/\\/g,zFe="@#%",VFe=/@#%/g,AO=new G,pO={abs:sa(Math.abs),sqrt:sa(Math.sqrt),cos:sa(Math.cos),sin:sa(Math.sin),tan:sa(Math.tan),acos:sa(Math.acos),asin:sa(Math.asin),atan:sa(Math.atan),radians:sa(D.toRadians),degrees:sa(D.toDegrees),sign:sa(D.sign),floor:sa(Math.floor),ceil:sa(Math.ceil),round:sa(Math.round),exp:sa(Math.exp),exp2:sa(WFe),log:sa(Math.log),log2:sa(jFe),fract:sa(HFe),length:YFe,normalize:qFe},gO={atan2:hO(Math.atan2,!1),pow:hO(Math.pow,!1),min:hO(Math.min,!0),max:hO(Math.max,!0),distance:KFe,dot:XFe,cross:JFe},J6={clamp:Loe(D.clamp,!0),mix:Loe(D.lerp,!0)};function HFe(e){return e-Math.floor(e)}function WFe(e){return Math.pow(2,e)}function jFe(e){return D.log2(e)}function sa(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof k)return k.fromElements(e(n.x),e(n.y),Un.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),Un.getCartesian3());if(n instanceof se)return se.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Un.getCartesian4());throw new ce(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function hO(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof k)return k.fromElements(e(i.x,o),e(i.y,o),Un.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Un.getCartesian3());if(i instanceof se)return se.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x),e(i.y,o.y),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function Loe(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof k&&o instanceof k&&r instanceof k)return k.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Un.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Un.getCartesian3());if(i instanceof se&&o instanceof se&&r instanceof se)return se.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function YFe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof k)return k.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof se)return se.magnitude(t);throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function qFe(e,t){if(typeof t=="number")return 1;if(t instanceof k)return k.normalize(t,Un.getCartesian2());if(t instanceof d)return d.normalize(t,Un.getCartesian3());if(t instanceof se)return se.normalize(t,Un.getCartesian4());throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function KFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof k&&n instanceof k)return k.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof se&&n instanceof se)return se.distance(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function XFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof k&&n instanceof k)return k.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof se&&n instanceof se)return se.dot(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function JFe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,Un.getCartesian3());throw new ce(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Bt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,u2e(this)}function ZFe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function $Fe(e){return e.replace(GFe,zFe)}function X6(e){return e.replace(VFe,"\\")}function e2e(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new ce("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function t2e(e){let t=typeof e.value;if(e.value===null)return new Bt(It.LITERAL_NULL,null);if(t==="boolean")return new Bt(It.LITERAL_BOOLEAN,e.value);if(t==="number")return new Bt(It.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Bt(It.VARIABLE_IN_STRING,e.value):new Bt(It.LITERAL_STRING,X6(e.value))}function n2e(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new ce(`${o} is not a function.`);return i===0?o==="test"?new Bt(It.LITERAL_BOOLEAN,!1):new Bt(It.LITERAL_NULL,null):(s=Ni(e,c),a=Ni(e,n[0]),new Bt(It.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Ni(e,c),new Bt(It.FUNCTION_CALL,o,r);throw new ce(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Bt(It.LITERAL_COLOR,o);if(r=Ni(e,n[0]),l(n[1])){let c=Ni(e,n[1]);return new Bt(It.LITERAL_COLOR,o,[r,c])}return new Bt(It.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new ce(`${o} requires three arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new ce(`${o} requires four arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2]),Ni(e,n[3])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Ni(e,n[c]);return new Bt(It.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Bt(It.LITERAL_BOOLEAN,!0):new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new ce(`${o} does not take any argument.`);return new Bt(It.UNARY,o)}else if(l(pO[o])){if(i!==1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(l(gO[o])){if(i!==2)throw new ce(`${o} requires exactly two arguments.`);return s=Ni(e,n[0]),a=Ni(e,n[1]),new Bt(It.BINARY,o,s,a)}else if(l(J6[o])){if(i!==3)throw new ce(`${o} requires exactly three arguments.`);s=Ni(e,n[0]),a=Ni(e,n[1]);let c=Ni(e,n[2]);return new Bt(It.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="Number")return i===0?new Bt(It.LITERAL_NUMBER,0):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="String")return i===0?new Bt(It.LITERAL_STRING,""):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="regExp")return i2e(e,t)}}throw new ce(`Unexpected function call "${o}".`)}function i2e(e,t){let n=t.arguments;if(n.length===0)return new Bt(It.LITERAL_REGEX,new RegExp);let i=Ni(e,n[0]),o;if(n.length>1){let r=Ni(e,n[1]);if(K6(i)&&K6(r)){try{o=new RegExp(X6(String(i._value)),r._value)}catch(s){throw new ce(s)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i,r)}if(K6(i)){try{o=new RegExp(X6(String(i._value)))}catch(r){throw new ce(r)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i)}function o2e(e){if(c2e(e.name)){let t=l2e(e.name);return t.substr(0,8)==="tiles3d_"?new Bt(It.BUILTIN_VARIABLE,t):new Bt(It.VARIABLE,t)}else{if(e.name==="NaN")return new Bt(It.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Bt(It.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Bt(It.LITERAL_UNDEFINED,void 0)}throw new ce(`${e.name} is not defined.`)}function r2e(e){let t=e.property.name;if(t==="PI")return new Bt(It.LITERAL_NUMBER,Math.PI);if(t==="E")return new Bt(It.LITERAL_NUMBER,Math.E)}function s2e(e){if(e.property.name==="POSITIVE_INFINITY")return new Bt(It.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function a2e(e,t){if(t.object.name==="Math")return r2e(t);if(t.object.name==="Number")return s2e(t);let n,i=Ni(e,t.object);return t.computed?(n=Ni(e,t.property),new Bt(It.MEMBER,"brackets",i,n)):(n=new Bt(It.LITERAL_STRING,t.property.name),new Bt(It.MEMBER,"dot",i,n))}function K6(e){return e._type>=It.LITERAL_NULL}function c2e(e){return e.substr(0,4)==="czm_"}function l2e(e){return e.substr(4)}function Ni(e,t){let n,i,o,r;if(t.type==="Literal")n=t2e(t);else if(t.type==="CallExpression")n=n2e(e,t);else if(t.type==="Identifier")n=o2e(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Ni(e,t.argument);if(UFe.indexOf(i)>-1)n=new Bt(It.UNARY,i,s);else throw new ce(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1)n=new Bt(It.BINARY,i,o,r);else throw new ce(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1&&(n=new Bt(It.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Ni(e,t.test);o=Ni(e,t.consequent),r=Ni(e,t.alternate),n=new Bt(It.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=a2e(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Ni(e,t.elements[a]);n=new Bt(It.ARRAY,s)}else throw t.type==="Compound"?new ce("Provide exactly one expression."):new ce("Cannot parse expression.");return n}function u2e(e){e._type===It.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===It.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===It.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(pO[e._value])&&(e.evaluate=d2e(e._value)):e._type===It.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(gO[e._value])&&(e.evaluate=h2e(e._value)):e._type===It.TERNARY?e.evaluate=m2e(e._value):e._type===It.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===It.ARRAY?e.evaluate=e._evaluateArray:e._type===It.VARIABLE?e.evaluate=e._evaluateVariable:e._type===It.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===It.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===It.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===It.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===It.REGEX?e.evaluate=e._evaluateRegExp:e._type===It.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=f2e):e.evaluate=e._evaluateLiteral}function f2e(e){return l(e)?e.content.tileset.timeSinceLoad:0}function d2e(e){let t=pO[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function h2e(e){let t=gO[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function m2e(e){let t=J6[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function _O(e,t){if(l(e))return e.getPropertyInherited(t)}Bt.prototype._evaluateLiteral=function(){return this._value};Bt.prototype._evaluateLiteralColor=function(e){let t=AO,n=this._left;if(this._value==="color")l(n)?n.length>1?(G.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):G.fromCssColorString(n[0].evaluate(e),t):G.fromBytes(255,255,255,255,t);else if(this._value==="rgb")G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return se.fromColor(t,Un.getCartesian4())};Bt.prototype._evaluateLiteralVector=function(e){let t=Un.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof k)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof se)t.push(c.x,c.y,c.z,c.w);else throw new ce(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new ce(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new ce(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new ce(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return k.fromArray(t,0,Un.getCartesian2());if(n==="vec3")return d.fromArray(t,0,Un.getCartesian3());if(n==="vec4")return se.fromArray(t,0,Un.getCartesian4())};Bt.prototype._evaluateLiteralString=function(){return this._value};Bt.prototype._evaluateVariableString=function(e){let t=this._value,n=Hw.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=_O(e,o);l(r)||(r=""),t=t.replace(i,r),Hw.lastIndex+=r.length-i.length,n=Hw.exec(t)}return t};Bt.prototype._evaluateVariable=function(e){return _O(e,this._value)};function RC(e){return e._value==="feature"}Bt.prototype._evaluateMemberDot=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Bt.prototype._evaluateMemberBrackets=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Bt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Bt.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Bt.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof k)return k.negate(t,Un.getCartesian2());if(t instanceof d)return d.negate(t,Un.getCartesian3());if(t instanceof se)return se.negate(t,Un.getCartesian4());if(typeof t=="number")return-t;throw new ce(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Bt.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof k||t instanceof d||t instanceof se||typeof t=="number"))throw new ce(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Bt.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Bt.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Bt.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Bt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Bt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Bt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Bt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.add(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.add(t,n,Un.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new ce(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.subtract(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.subtract(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new ce(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.multiplyComponents(t,n,Un.getCartesian2());if(n instanceof k&&typeof t=="number")return k.multiplyByScalar(n,t,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.multiplyByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,Un.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.multiplyComponents(t,n,Un.getCartesian4());if(n instanceof se&&typeof t=="number")return se.multiplyByScalar(n,t,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.multiplyByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new ce(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.divideComponents(t,n,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.divideByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.divideComponents(t,n,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.divideByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new ce(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.fromElements(t.x%n.x,t.y%n.y,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new ce(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?t.equals(n):t===n};Bt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?!t.equals(n):t!==n};Bt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new ce(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Bt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Bt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Bt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Bt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Bt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Bt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Bt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new ce(o)}return i};Bt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Bt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new ce(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new ce(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Bt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof k||t instanceof d||t instanceof se)return String(t);throw new ce(`Unexpected function call "${this._value}".`)};function Ooe(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==It.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return G.fromHsl(i,o,r,s,AO)}function Foe(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==It.LITERAL_NUMBER)return;let i=AO;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function kg(e){return e%1===0?e.toFixed(1):e.toString()}function A2e(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue);return`vec3(${t}, ${n}, ${i})`}function mO(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue),o=kg(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Qoe(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function koe(e,t){return l(t[e])?t[e]:Vd.NULL_SENTINEL}Vd.NULL_SENTINEL="czm_infinity";Bt.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Qoe(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Qoe(this._value,e,t,this));let u,f,h;switch(a){case It.VARIABLE:return RC(this)?void 0:koe(c,e);case It.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(pO[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new ce(`Error generating style shader: "${c}" is not supported.`);return c+o;case It.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(gO[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case It.TERNARY:if(l(J6[c]))return`${c}(${o}, ${r}, ${s})`;break;case It.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case It.MEMBER:return RC(this._left)?koe(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case It.FUNCTION_CALL:throw new ce(`Error generating style shader: "${c}" is not supported.`);case It.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new ce("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case It.REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.VARIABLE_IN_STRING:throw new ce("Error generating style shader: Converting a variable to a string is not supported.");case It.LITERAL_NULL:return Vd.NULL_SENTINEL;case It.LITERAL_BOOLEAN:return c?"true":"false";case It.LITERAL_NUMBER:return kg(c);case It.LITERAL_STRING:if(l(n)&&n._type===It.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||RC(n._left)))return c;if(i=G.fromCssColorString(c,AO),l(i))return A2e(i);throw new ce("Error generating style shader: String literals are not supported.");case It.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let A=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${A}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Ooe(this),l(i)?mO(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Ooe(this),l(i)?(i.alpha!==1&&(t.translucent=!0),mO(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case It.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let A=0;A<f;++A)h+=o[A],A<f-1&&(h+=", ");return h+=")",h;case It.LITERAL_REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.LITERAL_UNDEFINED:return Vd.NULL_SENTINEL;case It.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Bt.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case It.VARIABLE:RC(this)||e.push(s);break;case It.VARIABLE_IN_STRING:for(a=Hw.exec(s);a!==null;)e.push(a[1]),a=Hw.exec(s);break;case It.LITERAL_STRING:l(t)&&t._type===It.MEMBER&&RC(t._left)&&e.push(s);break}};var Hd=Vd;function XA(e){e=e??V.EMPTY_OBJECT,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=e.center??d.ZERO,this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=e.classificationType??Jn.BOTH,this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(XA.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var p2e={position:0,a_batchId:1};function g2e(e,t){if(l(e._va))return;let n=Et.createVertexBuffer({context:t,typedArray:e._positions,usage:Qe.STATIC_DRAW}),i=Et.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:Qe.STATIC_DRAW}),o=Et.createIndexBuffer({context:t,typedArray:e._indices,usage:Qe.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:q.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:q.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new li({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new li({context:t,attributes:r,indexBuffer:Et.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:Qe.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function _2e(e,t){if(l(e._sp))return;let n=e._batchTable,i=e._attributeLocations??p2e,o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=We.replaceMain(s,"czm_non_pick_main"),s=`${s}void main()
|
||
{
|
||
czm_non_pick_main();
|
||
out_FragColor = ${o};
|
||
}
|
||
`,e._spPick=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(Vw),c=n.getFragmentShaderCallback(!1,void 0,!0)(IC);o=n.getPickId();let u=new We({sources:[a]}),f=new We({defines:["VECTOR_TILE"],sources:[c]});e._sp=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new We({sources:[Vw]}),f=new We({defines:["VECTOR_TILE"],sources:[IC]}),e._spStencil=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=We.replaceMain(c,"czm_non_pick_main"),c=`${c}
|
||
void main()
|
||
{
|
||
czm_non_pick_main();
|
||
out_FragColor = ${o};
|
||
}
|
||
`;let h=new We({sources:[a]}),A=new We({defines:["VECTOR_TILE"],sources:[c]});e._spPick=ln.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:i})}function Uoe(e){let t=e?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:t,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var y2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},C2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function E2e(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ue.fromCache(Uoe(!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(Uoe(!0)),e._rsColorPass=Ue.fromCache(y2e),e._rsPickPass=Ue.fromCache(C2e))}var MC=new R,Goe=new d;function I2e(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return R.clone(i,MC),R.multiplyByPoint(MC,e._center,Goe),R.setTranslation(MC,Goe,MC),R.multiply(o,MC,MC),MC},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function Z6(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h],m=new e.constructor(e.buffer,a*A,g);t.set(m,n),i[h]=n,n+=g}return n}function x2e(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=Z6(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(G.equals(f.color,a.color))u=Z6(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=Z6(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function $6(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h];t.copyFromBuffer(e,A*a,n*a,g*a),i[h]=n,n+=g}return n}function b2e(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=$6(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(G.equals(h.color,r.color))u=$6(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let A=u;u=$6(a,c,u,n,i,h.batchIds,o),h.offset=A,h.count=u-A,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function T2e(e,t){return t.color.toRgba()-e.color.toRgba()}function S2e(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(T2e),t.webgl2?b2e(e,n):x2e(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function w2e(e,t){let n=S2e(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=e._modelMatrix??R.IDENTITY,f=e._uniformMap,h=e._boundingVolume;for(let A=0;A<r;++A){let g=o[A].offset,m=o[A].count,_=i[A*2];l(_)||(_=i[A*2]=new nt({owner:e})),_.vertexArray=a,_.modelMatrix=u,_.offset=g,_.count=m,_.renderState=e._rsStencilDepthPass,_.shaderProgram=c,_.uniformMap=f,_.boundingVolume=h,_.cull=!1,_.pass=Be.TERRAIN_CLASSIFICATION;let y=nt.shallowClone(_,_.derivedCommands.tileset);y.renderState=e._rsStencilDepthPass3DTiles,y.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,_.derivedCommands.tileset=y;let C=i[A*2+1];l(C)||(C=i[A*2+1]=new nt({owner:e})),C.vertexArray=a,C.modelMatrix=u,C.offset=g,C.count=m,C.renderState=e._rsColorPass,C.shaderProgram=c,C.uniformMap=f,C.boundingVolume=h,C.cull=!1,C.pass=Be.TERRAIN_CLASSIFICATION;let E=nt.shallowClone(C,C.derivedCommands.tileset);E.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,C.derivedCommands.tileset=E}e._commandsDirty=!0}function B2e(e,t){if(e.classificationType===Jn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=nt.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function D2e(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=e._modelMatrix??R.IDENTITY,a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,A=n[c*2];l(A)||(A=n[c*2]=new nt({owner:e,pickOnly:!0})),A.vertexArray=i,A.modelMatrix=s,A.offset=u,A.count=f,A.renderState=e._rsStencilDepthPass,A.shaderProgram=o,A.uniformMap=a,A.boundingVolume=h,A.pass=Be.TERRAIN_CLASSIFICATION;let g=nt.shallowClone(A,A.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,A.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new nt({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=Be.TERRAIN_CLASSIFICATION;let _=nt.shallowClone(m,m.derivedCommands.tileset);_.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=_}e._pickCommandsDirty=!1}XA.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};XA.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function v2e(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=G.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=G.clone(G.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var P2e=new G,R2e=G.WHITE,M2e=!0,N2e=/\$/;XA.prototype.applyStyle=function(e,t){if(!l(e)){v2e(this,t);return}let n=e.color,i=n instanceof Hd&&!N2e.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,P2e):R2e,c.show=l(e.show)?e.show.evaluate(c):M2e}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=G.clone(G.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};XA.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let _=c[f].offset,y=c[f].count;if(s>=_&&s<_+y)break}c.push(new KA({color:G.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],A=[],g=c[f].batchIds,m=g.length;for(let _=0;_<m;++_){let y=g[_];if(y===e)continue;let C=n[y];o[C]<s?h.push(y):A.push(y)}A.length!==0&&c.push(new KA({color:G.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:A})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function zoe(e,t,n,i){let o=e.classificationType,r=o!==Jn.CESIUM_3D_TILE,s=o!==Jn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=Be.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function L2e(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=Be.OPAQUE,n.push(r)}}function O2e(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ue.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Me.LINES):(n=e._rsColorPass,i=Me.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}XA.prototype.update=function(e){let t=e.context;g2e(this,t),_2e(this,t),E2e(this),I2e(this,t);let n=e.passes;n.render&&(w2e(this,t),B2e(this,e),O2e(this),this._debugWireframe?L2e(e,this._commands):zoe(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(D2e(this),zoe(this,e,this._pickCommands))};XA.prototype.isDestroyed=function(){return!1};XA.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var HI=XA;function wu(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(wu.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});wu.packedBoxLength=R.packedLength+d.packedLength;wu.packedCylinderLength=R.packedLength+2;wu.packedEllipsoidLength=R.packedLength+d.packedLength;wu.packedSphereLength=d.packedLength+1;function F2e(e){let t=new Float64Array(R.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,R.pack(e._modelMatrix,t,n),t}function Q2e(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=le.unpack(t,n),n+=le.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=G.unpack(t,n);n+=G.packedLength;let f=t[n++],h=t[n++],A=t[n++],g=new Array(A);for(let m=0;m<A;++m)g[m]=t[n++];a[c]=new KA({color:u,offset:f,count:h,batchIds:g})}return i}var k2e=new mi("createVectorTileGeometries",5),U2e=new G;function G2e(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let _=e._batchTable;for(let y=0;y<m;++y){let C=_.getColor(y,U2e);u[y]=C.toRgba()}f=e._packedBuffer=F2e(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let A={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=k2e.scheduleTask(A,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let _=new Float64Array(m.packedBuffer);Q2e(e,_)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),z2e(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function z2e(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}wu.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};wu.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};wu.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};wu.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};wu.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=G2e(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};wu.prototype.isDestroyed=function(){return!1};wu.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Ug=wu;function _m(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,W2e(this,i,o)}Object.defineProperties(_m.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function V2e(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function H2e(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,u=e.ELLIPSOIDS_LENGTH??0,f=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),A=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&A)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var NC=Uint32Array.BYTES_PER_ELEMENT;function W2e(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=NC;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=NC;let s=o.getUint32(n,!0);if(n+=NC,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=NC,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=NC;let u=o.getUint32(n,!0);n+=NC;let f=o.getUint32(n,!0);n+=NC;let h=yr(i,n,a);n+=a;let A=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=yr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let _=h.BOXES_LENGTH??0,y=h.CYLINDERS_LENGTH??0,C=h.ELLIPSOIDS_LENGTH??0,E=h.SPHERES_LENGTH??0,I=_+y+C+E,b=new Fg(e,I,g,m,V2e(e));if(e._batchTable=b,I===0)return;let S=e.tile.computedTransform,B;l(h.RTC_CENTER)&&(B=d.unpack(h.RTC_CENTER),R.multiplyByPoint(S,B,B));let v=H2e(h,A);if(_>0||y>0||C>0||E>0){let P,N,L,p;if(_>0){let x=A.byteOffset+h.BOXES.byteOffset;P=new Float32Array(A.buffer,x,Ug.packedBoxLength*_)}if(y>0){let x=A.byteOffset+h.CYLINDERS.byteOffset;N=new Float32Array(A.buffer,x,Ug.packedCylinderLength*y)}if(C>0){let x=A.byteOffset+h.ELLIPSOIDS.byteOffset;L=new Float32Array(A.buffer,x,Ug.packedEllipsoidLength*C)}if(E>0){let x=A.byteOffset+h.SPHERES.byteOffset;p=new Float32Array(A.buffer,x,Ug.packedSphereLength*E)}return e._geometries=new Ug({boxes:P,boxBatchIds:v.boxes,cylinders:N,cylinderBatchIds:v.cylinders,ellipsoids:L,ellipsoidBatchIds:v.ellipsoids,spheres:p,sphereBatchIds:v.spheres,center:B,modelMatrix:S,batchTable:b,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function Voe(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}_m.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};_m.prototype.getFeature=function(e){return Voe(this),this._features[e]};_m.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};_m.prototype.applyStyle=function(e){Voe(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};_m.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};_m.prototype.pick=function(e,t,n){};_m.prototype.isDestroyed=function(){return!1};_m.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var yO=_m;var eW={};eW.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),Hoe(i,o,r,s);return c};eW.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),Hoe(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function Hoe(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var Ww=eW;var LC=30,j2e=1<<LC,Y2e=1<<LC+1>>>0,tW=2*LC+1,Gg=4,Yoe=[],qoe=[],q2e=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],zg=1,WI=2,CO=[zg,0,0,zg|WI];function us(e){if(!jt.supportsBigInt())throw new ce("S2 required BigInt support");this._cellId=e,this._level=us.getLevel(e)}us.fromToken=function(e){return new us(us.getIdFromToken(e))};us.isValidId=function(e){return!(e<=0||e>>BigInt(tW)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};us.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?us.isValidId(us.getIdFromToken(e)):!1};us.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};us.getTokenFromId=function(e){let t=Math.floor(oQe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};us.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return LC-(t>>1)};us.prototype.getChild=function(e){let t=Joe(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new us(n)};us.prototype.getParent=function(){let e=Joe(this._cellId)<<BigInt(2);return new us(this._cellId&~e+BigInt(1)|e)};us.prototype.getParentAtLevel=function(e){let t=nQe(e);return new us(this._cellId&-t|t)};us.prototype.getCenter=function(e){e=e??te.WGS84;let t=K2e(this._cellId,this._level);t=d.normalize(t,t);let n=new Ae.fromCartesian(t,te.UNIT_SPHERE);return Ae.toCartesian(n,e,new d)};us.prototype.getVertex=function(e,t){t=t??te.WGS84;let n=X2e(this._cellId,this._level,e);n=d.normalize(n,n);let i=new Ae.fromCartesian(n,te.UNIT_SPHERE);return Ae.toCartesian(i,t,new d)};us.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(tW-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new us(a)};function K2e(e,t){let n=J2e(e,t);return Z2e(n[0],n[1],n[2])}function X2e(e,t,n){let i=Koe(e,t),o=$2e([i[1],i[2]],t),r=n>>1&1;return Xoe(i[0],o[0][r^n&1],o[1][r])}function J2e(e,t){let n=Koe(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function Koe(e){Yoe.length===0&&tQe();let t=Number(e>>BigInt(tW)),n=t&zg,i=(1<<Gg)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?LC-7*Gg:Gg))-1;n+=Number(e>>BigInt(s*2*Gg+1)&BigInt(c))<<2,n=qoe[n];let u=s*Gg;o+=n>>Gg+2<<u,r+=(n>>2&i)<<u,n&=zg|WI}return[t,o,r]}function Z2e(e,t,n){let i=Woe(t),o=Woe(n),r=EO(i),s=EO(o);return Xoe(e,r,s)}function Xoe(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function EO(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function Woe(e){return 1/Y2e*e}function $2e(e,t){let n=[[],[]],i=eQe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=EO(joe(r)),n[o][1]=EO(joe(s))}return n}function eQe(e){return 1<<LC-e>>>0}function joe(e){return 1/j2e*e}function Vg(e,t,n,i,o,r){if(e===Gg){let s=(t<<Gg)+n;Yoe[(s<<2)+i]=(o<<2)+r,qoe[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=q2e[r];Vg(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^CO[0]),Vg(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^CO[1]),Vg(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^CO[2]),Vg(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^CO[3])}}function tQe(){Vg(0,0,0,0,0,0),Vg(0,0,0,zg,0,zg),Vg(0,0,0,WI,0,WI),Vg(0,0,0,zg|WI,0,zg|WI)}function Joe(e){return e&~e+BigInt(1)}function nQe(e){return BigInt(1)<<BigInt(2*(LC-e))}var iQe=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function oQe(e){return iQe[(-e&e)%BigInt(67)]}var Hg=us;function rQe(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var Ii=rQe;function nW(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new ce(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=e.computeAvailableCountEnabled??!1;!l(n)&&s&&(n=sQe(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function sQe(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(nW.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});nW.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var jw=nW;function JA(e){e=e??V.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(JA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});JA.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};JA.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};JA.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};JA.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};JA.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};JA.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};JA.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var Yw=JA;var IO={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};IO.getBranchingFactor=function(e){switch(e){case IO.OCTREE:return 8;case IO.QUADTREE:return 4}};var Ts=Object.freeze(IO);function wa(){}Object.defineProperties(wa.prototype,{class:{get:function(){me.throwInstantiationError()}}});wa.prototype.hasProperty=function(e){me.throwInstantiationError()};wa.prototype.hasPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.getPropertyIds=function(e){me.throwInstantiationError()};wa.prototype.getProperty=function(e){me.throwInstantiationError()};wa.prototype.setProperty=function(e,t){me.throwInstantiationError()};wa.prototype.getPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.setPropertyBySemantic=function(e,t){me.throwInstantiationError()};wa.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};wa.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};wa.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};wa.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ze(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};wa.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};wa.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return wa.getProperty(o.id,t,n)};wa.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?wa.setProperty(r.id,t,n,i):!1};var Yn=wa;function ZA(e){e=e??V.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(ZA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ZA.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};ZA.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};ZA.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};ZA.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};ZA.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xO=ZA;var Gt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Gt.getMinimum=function(e){switch(e){case Gt.INT8:return-128;case Gt.UINT8:return 0;case Gt.INT16:return-32768;case Gt.UINT16:return 0;case Gt.INT32:return-2147483648;case Gt.UINT32:return 0;case Gt.INT64:return jt.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Gt.UINT64:return jt.supportsBigInt()?BigInt(0):0;case Gt.FLOAT32:return-34028234663852886e22;case Gt.FLOAT64:return-Number.MAX_VALUE}};Gt.getMaximum=function(e){switch(e){case Gt.INT8:return 127;case Gt.UINT8:return 255;case Gt.INT16:return 32767;case Gt.UINT16:return 65535;case Gt.INT32:return 2147483647;case Gt.UINT32:return 4294967295;case Gt.INT64:return jt.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Gt.UINT64:return jt.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Gt.FLOAT32:return 34028234663852886e22;case Gt.FLOAT64:return Number.MAX_VALUE}};Gt.isIntegerType=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.INT64:case Gt.UINT64:return!0;default:return!1}};Gt.isUnsignedIntegerType=function(e){switch(e){case Gt.UINT8:case Gt.UINT16:case Gt.UINT32:case Gt.UINT64:return!0;default:return!1}};Gt.isVectorCompatible=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.FLOAT32:case Gt.FLOAT64:return!0;default:return!1}};Gt.normalize=function(e,t){return Math.max(Number(e)/Number(Gt.getMaximum(t)),-1)};Gt.unnormalize=function(e,t){let n=Gt.getMaximum(t),i=Gt.isUnsignedIntegerType(t)?0:-n;return e=D.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Gt.INT64||t===Gt.UINT64)&&jt.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Gt.applyValueTransform=function(e,t,n){return n*e+t};Gt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Gt.getSizeInBytes=function(e){switch(e){case Gt.INT8:case Gt.UINT8:return 1;case Gt.INT16:case Gt.UINT16:return 2;case Gt.INT32:case Gt.UINT32:return 4;case Gt.INT64:case Gt.UINT64:return 8;case Gt.FLOAT32:return 4;case Gt.FLOAT64:return 8}};Gt.fromComponentDatatype=function(e){switch(e){case q.BYTE:return Gt.INT8;case q.UNSIGNED_BYTE:return Gt.UINT8;case q.SHORT:return Gt.INT16;case q.UNSIGNED_SHORT:return Gt.UINT16;case q.INT:return Gt.INT32;case q.UNSIGNED_INT:return Gt.UINT32;case q.FLOAT:return Gt.FLOAT32;case q.DOUBLE:return Gt.FLOAT64}};Gt.toComponentDatatype=function(e){switch(e){case Gt.INT8:return q.BYTE;case Gt.UINT8:return q.UNSIGNED_BYTE;case Gt.INT16:return q.SHORT;case Gt.UINT16:return q.UNSIGNED_SHORT;case Gt.INT32:return q.INT;case Gt.UINT32:return q.UNSIGNED_INT;case Gt.FLOAT32:return q.FLOAT;case Gt.FLOAT64:return q.DOUBLE}};var zt=Object.freeze(Gt);var Jo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};Jo.isVectorType=function(e){switch(e){case Jo.VEC2:case Jo.VEC3:case Jo.VEC4:return!0;default:return!1}};Jo.isMatrixType=function(e){switch(e){case Jo.MAT2:case Jo.MAT3:case Jo.MAT4:return!0;default:return!1}};Jo.getComponentCount=function(e){switch(e){case Jo.SCALAR:case Jo.STRING:case Jo.ENUM:case Jo.BOOLEAN:return 1;case Jo.VEC2:return 2;case Jo.VEC3:return 3;case Jo.VEC4:return 4;case Jo.MAT2:return 4;case Jo.MAT3:return 9;case Jo.MAT4:return 16}};Jo.getMathType=function(e){switch(e){case Jo.VEC2:return k;case Jo.VEC3:return d;case Jo.VEC4:return se;case Jo.MAT2:return Wi;case Jo.MAT3:return J;case Jo.MAT4:return R;default:return}};var gt=Object.freeze(Jo);function $a(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&zt.isIntegerType(i)&&(e.normalized??!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=e.isArray??!1,this._isVariableLengthArray=e.isVariableLengthArray??!1,this._arrayLength=e.arrayLength,this._min=ze(e.min,!0),this._max=ze(e.max,!0),this._normalized=r;let s=ze(e.offset,!0),a=ze(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=ze(e.noData,!0),this._default=ze(e.default,!0),this._required=e.required??!0,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}$a.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.property,i=aQe(n),o=cQe(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=n.required??!1:r=!1,new $a({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties($a.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function aQe(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===gt.SCALAR||gt.isMatrixType(t)||gt.isVectorType(t))return!1;if(l(zt[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function cQe(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===gt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===gt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.SCALAR||gt.isMatrixType(n)||gt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.BOOLEAN||n===gt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===gt.BOOLEAN||i===gt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(zt[i]))return{type:gt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(zt[n]))return{type:gt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}$a.prototype.normalize=function(e){return this._normalized?iW(e,this._valueType,zt.normalize):e};$a.prototype.unnormalize=function(e){return this._normalized?iW(e,this._valueType,zt.unnormalize):e};$a.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.applyValueTransform)};$a.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.unapplyValueTransform)};$a.prototype.expandConstant=function(e,t){t=t??!1;let n=this._isArray,i=this._arrayLength,o=gt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};$a.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!tre(e,t))return e};function tre(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!tre(e[n],t[n]))return!1;return!0}$a.prototype.unpackVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};$a.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};$a.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?lQe(this,e):nre(this,e)};function lQe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=nre(e,t[i]);if(l(o))return o}}function nre(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return gt.isVectorType(n)?uQe(t,n,i):gt.isMatrixType(n)?fQe(t,n,i):n===gt.STRING?dQe(t):n===gt.BOOLEAN?hQe(t):n===gt.ENUM?mQe(t,o):AQe(t,i,r)}function uQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===gt.VEC2&&!(e instanceof k))return`vector value ${e} must be a Cartesian2`;if(t===gt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===gt.VEC4&&!(e instanceof se))return`vector value ${e} must be a Cartesian4`}function fQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===gt.MAT2&&!(e instanceof Wi))return`matrix value ${e} must be a Matrix2`;if(t===gt.MAT3&&!(e instanceof J))return`matrix value ${e} must be a Matrix3`;if(t===gt.MAT4&&!(e instanceof R))return`matrix value ${e} must be a Matrix4`}function dQe(e){if(typeof e!="string")return bO(e,gt.STRING)}function hQe(e){if(typeof e!="boolean")return bO(e,gt.BOOLEAN)}function mQe(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function AQe(e,t,n){let i=typeof e;switch(t){case zt.INT8:case zt.UINT8:case zt.INT16:case zt.UINT16:case zt.INT32:case zt.UINT32:case zt.FLOAT32:case zt.FLOAT64:return i!=="number"?bO(e,t):isFinite(e)?$oe(e,t,n):ere(e,t);case zt.INT64:case zt.UINT64:return i!=="number"&&i!=="bigint"?bO(e,t):i==="number"&&!isFinite(e)?ere(e,t):$oe(e,t,n)}}function bO(e,t){return`value ${e} does not match type ${t}`}function Zoe(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function $oe(e,t,n){if(n){let i=zt.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?Zoe(e,t,n):void 0}if(e<zt.getMinimum(t)||e>zt.getMaximum(t))return Zoe(e,t,n)}function ere(e,t){return`value ${e} of type ${t} must be finite`}function iW(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=iW(e[i],t,n);return e}$a.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=$a.valueTransformInPlace(e[o],t[o],n[o],i);return e};var $A=$a;function qw(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===gt.STRING,h=r===gt.BOOLEAN,A=0,g;if(a){let p=n.arrayOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.arrayOffsets??n.arrayOffsetBufferView;g=new oW(o[x],p,t+1),A+=g.typedArray.byteLength}let m=gt.getComponentCount(r),_;a?_=g.get(t)-g.get(0):s?_=t*i.arrayLength:_=t;let y=m*_,C;if(f){let p=n.stringOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.stringOffsets??n.stringOffsetBufferView;C=new oW(o[x],p,y+1),A+=C.typedArray.byteLength}(f||h)&&(c=zt.UINT8);let E;f?E=C.get(y)-C.get(0):h?E=Math.ceil(y/8):E=y;let I=n.values??n.bufferView,b=new oW(o[I],c,E);A+=b.typedArray.byteLength;let S=n.offset,B=n.scale,v=i.hasValueTransform||l(S)||l(B);S=S??i.offset,B=B??i.scale,S=ire(S),B=ire(B);let P,N,L=this;f?P=function(p){return _Qe(p,L._values,L._stringOffsets)}:h?(P=function(p){return yQe(p,L._values)},N=function(p,x){CQe(p,L._values,x)}):l(u)?(P=function(p){let x=L._values.get(p);return u.namesByValue[x]},N=function(p,x){let T=u.valuesByName[x];L._values.set(p,T)}):(P=function(p){return L._values.get(p)},N=function(p,x){L._values.set(p,x)}),this._arrayOffsets=g,this._stringOffsets=C,this._values=b,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=S,this._scale=B,this._hasValueTransform=v,this._getValue=P,this._setValue=N,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=A}Object.defineProperties(qw.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});qw.prototype.get=function(e){let t=pQe(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=BQe(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};qw.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=DQe(this,t),t=n.unnormalize(t),gQe(this,e,t)};qw.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function ire(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?si(t,i):t.push(i)}return t}function pQe(e,t){rre(e)&&sre(e);let n=e._classProperty,i=n.isArray,o=n.type,r=gt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?ze(s,!0):s}return!i&&r===1?e._getValue(t):ore(e,n,t)}function ore(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=gt.getComponentCount(t.type);i*=s,o*=s}else{let a=(t.arrayLength??1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function gQe(e,t,n){SQe(e,t,n)&&sre(e);let i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=ze(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=(i.arrayLength??1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function _Qe(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return Tu(t.typedArray,i,o)}function yQe(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function CQe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function EQe(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function IQe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function xQe(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function bQe(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function TQe(e){switch(e){case zt.INT8:return q.BYTE;case zt.UINT8:return q.UNSIGNED_BYTE;case zt.INT16:return q.SHORT;case zt.UINT16:return q.UNSIGNED_SHORT;case zt.INT32:return q.INT;case zt.UINT32:return q.UNSIGNED_INT;case zt.FLOAT32:return q.FLOAT;case zt.FLOAT64:return q.DOUBLE}}function rre(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===gt.STRING||i===zt.INT64&&!jt.supportsBigInt64Array()||i===zt.UINT64&&!jt.supportsBigUint64Array()}function SQe(e,t,n){if(rre(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function sre(e){e._unpackedValues=wQe(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function wQe(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=ore(e,i,a);return n}function BQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.applyValueTransform)}function DQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.unapplyValueTransform)}function oW(e,t,n){let i=this,o,r,s;if(t===zt.INT64)jt.supportsBigInt()?jt.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return IQe(a,i)}):(yt("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return EQe(a,i)});else if(t===zt.UINT64)jt.supportsBigInt()?jt.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return bQe(a,i)}):(yt("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return xQe(a,i)});else{let a=TQe(t);o=q.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var TO=qw;function Wd(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new TO({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(Wd.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});Wd.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Wd.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Wd.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Wd.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=vQe(this._class,t),i};Wd.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};Wd.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};Wd.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};Wd.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};Wd.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function vQe(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=ze(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var jd=Wd;function Wg(){}Object.defineProperties(Wg.prototype,{cacheKey:{get:function(){me.throwInstantiationError()}}});Wg.prototype.load=function(){me.throwInstantiationError()};Wg.prototype.unload=function(){};Wg.prototype.process=function(e){return!1};Wg.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=`
|
||
${t.message}`);let n=new ce(e);return l(t)&&(n.stack=`Original stack:
|
||
${t.stack}
|
||
Handler stack:
|
||
${n.stack}`),n};Wg.prototype.isDestroyed=function(){return!1};Wg.prototype.destroy=function(){return this.unload(),ue(this)};var qi=Wg;var PQe={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},dt=Object.freeze(PQe);function ep(e){e=e??V.EMPTY_OBJECT;let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(ep.prototype=Object.create(qi.prototype),ep.prototype.constructor=ep);Object.defineProperties(ep.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});ep.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=RQe(this),this._promise)};async function RQe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await ep._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}ep._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};ep.prototype.unload=function(){this._typedArray=void 0};var jI=ep;var Qen=function(){var e="b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),_=0;_<g.length;++_){var y=g.charCodeAt(_);m[_]=y>96?y-97:y>64?y-39:y+4}for(var C=0,_=0;_<g.length;++_)m[C++]=m[_]<60?t[m[_]]:(m[_]-60)*64+m[++_];return m.buffer.slice(0,C)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,_,y){var C=n.exports.sbrk,E=C(m.length*4),I=C(_*4),b=new Uint8Array(n.exports.memory.buffer),S=s(m);b.set(S,E),y&&y(E,E,m.length,_);var B=g(I,E,m.length,_);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(_);new Uint8Array(v.buffer).set(b.subarray(I,I+_*4)),S.set(b.subarray(E,E+m.length*4)),C(E-C(0));for(var P=0;P<m.length;++P)m[P]=v[m[P]];return[v,B]}function c(g,m,_,y){var C=n.exports.sbrk,E=C(_*4),I=C(_*y),b=new Uint8Array(n.exports.memory.buffer);b.set(s(m),I),g(E,I,_,y),b=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return new Uint8Array(S.buffer).set(b.subarray(E,E+_*4)),C(E-C(0)),S}function u(g,m,_,y,C){var E=n.exports.sbrk,I=E(m),b=E(y*C),S=new Uint8Array(n.exports.memory.buffer);S.set(s(_),b);var B=g(I,m,b,y,C),v=new Uint8Array(B);return v.set(S.subarray(I,I+B)),E(I-E(0)),v}function f(g){for(var m=0,_=0;_<g.length;++_){var y=g[_];m=m<y?y:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var _=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(_)}function A(g,m,_,y,C,E,I){var b=n.exports.sbrk,S=b(_*y),B=b(_*E),v=new Uint8Array(n.exports.memory.buffer);v.set(s(m),B),g(S,_,y,C,B,I);var P=new Uint8Array(_*y);return P.set(v.subarray(S,S+_*y)),b(S-b(0)),P}return{ready:i,supported:!0,reorderMesh:function(g,m,_){var y=m?_?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,y)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,_){r(_>0&&_<=256),r(_%4==0);var y=n.exports.meshopt_encodeVertexBufferBound(m,_);return u(n.exports.meshopt_encodeVertexBuffer,y,g,m,_)},encodeIndexBuffer:function(g,m,_){r(_==2||_==4),r(m%3==0);var y=h(g,_),C=n.exports.meshopt_encodeIndexBufferBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexBuffer,C,y,m,4)},encodeIndexSequence:function(g,m,_){r(_==2||_==4);var y=h(g,_),C=n.exports.meshopt_encodeIndexSequenceBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexSequence,C,y,m,4)},encodeGltfBuffer:function(g,m,_,y){var C={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(C[y]),C[y](g,m,_)},encodeFilterOct:function(g,m,_,y){return r(_==4||_==8),r(y>=1&&y<=16),A(n.exports.meshopt_encodeFilterOct,g,m,_,y,16)},encodeFilterQuat:function(g,m,_,y){return r(_==8),r(y>=4&&y<=16),A(n.exports.meshopt_encodeFilterQuat,g,m,_,y,16)},encodeFilterExp:function(g,m,_,y,C){r(_>0&&_%4==0),r(y>=1&&y<=24);var E={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return A(n.exports.meshopt_encodeFilterExp,g,m,_,y,_,C?E[C]:1)}}}();var are=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(C){r=C.instance,r.exports.__wasm_call_ctors()});function a(C){for(var E=new Uint8Array(C.length),I=0;I<C.length;++I){var b=C.charCodeAt(I);E[I]=b>96?b-97:b>64?b-39:b+4}for(var S=0,I=0;I<C.length;++I)E[S++]=E[I]<60?i[E[I]]:(E[I]-60)*64+E[++I];return E.buffer.slice(0,S)}function c(C,E,I,b,S,B,v){var P=C.exports.sbrk,N=b+3&-4,L=P(N*S),p=P(B.length),x=new Uint8Array(C.exports.memory.buffer);x.set(B,p);var T=E(L,b,S,p,B.length);if(T==0&&v&&v(L,N,S),I.set(x.subarray(L,L+b*S)),P(L-P(0)),T!=0)throw new Error("Malformed buffer data: "+T)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],A=0;function g(C){var E={object:new Worker(C),pending:0,requests:{}};return E.object.onmessage=function(I){var b=I.data;E.pending-=b.count,E.requests[b.id][b.action](b.value),delete E.requests[b.id]},E}function m(C){for(var E="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+y.name+";"+c.toString()+y.toString(),I=new Blob([E],{type:"text/javascript"}),b=URL.createObjectURL(I),S=h.length;S<C;++S)h[S]=g(b);for(var S=C;S<h.length;++S)h[S].object.postMessage({});h.length=C,URL.revokeObjectURL(b)}function _(C,E,I,b,S){for(var B=h[0],v=1;v<h.length;++v)h[v].pending<B.pending&&(B=h[v]);return new Promise(function(P,N){var L=new Uint8Array(I),p=++A;B.pending+=C,B.requests[p]={resolve:P,reject:N},B.object.postMessage({id:p,count:C,size:E,source:L,mode:b,filter:S},[L.buffer])})}function y(C){var E=C.data;if(!E.id)return self.close();self.ready.then(function(I){try{var b=new Uint8Array(E.count*E.size);c(I,I.exports[E.mode],b,E.count,E.size,E.source,I.exports[E.filter]),self.postMessage({id:E.id,count:E.count,action:"resolve",value:b},[b.buffer])}catch(S){self.postMessage({id:E.id,count:E.count,action:"reject",value:S})}})}return{ready:s,supported:!0,useWorkers:function(C){m(C)},decodeVertexBuffer:function(C,E,I,b,S){c(r,r.exports.meshopt_decodeVertexBuffer,C,E,I,b,r.exports[u[S]])},decodeIndexBuffer:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexBuffer,C,E,I,b)},decodeIndexSequence:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexSequence,C,E,I,b)},decodeGltfBuffer:function(C,E,I,b,S,B){c(r,r.exports[f[S]],C,E,I,b,r.exports[u[B]])},decodeGltfBufferAsync:function(C,E,I,b,S){return h.length>0?_(C,E,I,f[b],u[S]):s.then(function(){var B=new Uint8Array(C*E);return c(r,r.exports[f[b]],B,C,E,I,r.exports[u[S]]),B})}}}();var Gen=function(){var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,_,y){var C=n.exports.sbrk,E=C(_.length*4),I=C(y*4),b=new Uint8Array(n.exports.memory.buffer),S=s(_);b.set(S,E);var B=m(I,E,_.length,y);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(y);new Uint8Array(v.buffer).set(b.subarray(I,I+y*4)),S.set(b.subarray(E,E+_.length*4)),C(E-C(0));for(var P=0;P<_.length;++P)_[P]=v[_[P]];return[v,B]}function c(m){for(var _=0,y=0;y<m.length;++y){var C=m[y];_=_<C?C:_}return _}function u(m,_,y,C,E,I,b,S,B){var v=n.exports.sbrk,P=v(4),N=v(y*4),L=v(E*I),p=v(y*4),x=new Uint8Array(n.exports.memory.buffer);x.set(s(C),L),x.set(s(_),p);var T=m(N,p,y,L,E,I,b,S,B,P);x=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(T);s(w).set(x.subarray(N,N+T*4));var M=new Float32Array(1);return s(M).set(x.subarray(P,P+4)),v(P-v(0)),[w,M[0]]}function f(m,_,y,C,E,I,b,S,B,v,P,N,L){var p=n.exports.sbrk,x=p(4),T=p(y*4),w=p(E*I),M=p(E*S),O=p(B.length*4),U=p(y*4),Q=v?p(E):0,z=new Uint8Array(n.exports.memory.buffer);z.set(s(C),w),z.set(s(b),M),z.set(s(B),O),z.set(s(_),U),v&&z.set(s(v),Q);var F=m(T,U,y,w,E,I,M,S,O,B.length,Q,P,N,L,x);z=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(F);s(H).set(z.subarray(T,T+F*4));var W=new Float32Array(1);return s(W).set(z.subarray(x,x+4)),p(x-p(0)),[H,W[0]]}function h(m,_,y,C){var E=n.exports.sbrk,I=E(y*C),b=new Uint8Array(n.exports.memory.buffer);b.set(s(_),I);var S=m(I,y,C);return E(I-E(0)),S}function A(m,_,y,C,E,I,b,S){var B=n.exports.sbrk,v=B(S*4),P=B(y*C),N=B(y*I),L=new Uint8Array(n.exports.memory.buffer);L.set(s(_),P),E&&L.set(s(E),N);var p=m(v,P,y,C,N,I,b,S);L=new Uint8Array(n.exports.memory.buffer);var x=new Uint32Array(p);return s(x).set(L.subarray(v,v+p*4)),B(v-B(0)),x}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var _=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,_,c(m)+1)},simplify:function(m,_,y,C,E,I){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C>=0&&C<=m.length),r(C%3==0),r(E>=0);for(var b=0,S=0;S<(I?I.length:0);++S)r(I[S]in g),b|=g[I[S]];var B=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),v=u(n.exports.meshopt_simplify,B,m.length,_,_.length/y,y*4,C,E,b);return v[0]=m instanceof Uint32Array?v[0]:new m.constructor(v[0]),v},simplifyWithAttributes:function(m,_,y,C,E,I,b,S,B,v){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C instanceof Float32Array),r(C.length%E==0),r(E>=0),r(b==null||b instanceof Uint8Array),r(b==null||b.length==_.length/y),r(S>=0&&S<=m.length),r(S%3==0),r(B>=0),r(Array.isArray(I)),r(E>=I.length),r(I.length<=32);for(var P=0;P<I.length;++P)r(I[P]>=0);for(var N=0,P=0;P<(v?v.length:0);++P)r(v[P]in g),N|=g[v[P]];var L=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),p=f(n.exports.meshopt_simplifyWithAttributes,L,m.length,_,_.length/y,y*4,C,E*4,new Float32Array(I),b?new Uint8Array(b):null,S,B,N);return p[0]=m instanceof Uint32Array?p[0]:new m.constructor(p[0]),p},getScale:function(m,_){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),h(n.exports.meshopt_simplifyScale,m,m.length/_,_*4)},simplifyPoints:function(m,_,y,C,E,I){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),r(y>=0&&y<=m.length/_),C?(r(C instanceof Float32Array),r(C.length%E==0),r(E>=3),r(m.length/_==C.length/E),A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,C,E*4,I,y)):A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,void 0,0,0,y)}}}();var Ven=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,_){var y=m.meshlets[_*4+0],C=m.meshlets[_*4+1],E=m.meshlets[_*4+2],I=m.meshlets[_*4+3];return{vertices:m.vertices.subarray(y,y+E),triangles:m.triangles.subarray(C,C+I*3)}}function f(m,_,y,C,E,I,b){var S=n.exports.sbrk,B=n.exports.meshopt_buildMeshletsBound(m.length,E,I),v=S(B*c),P=S(B*E*4),N=S(B*I*3),L=S(m.byteLength),p=S(_.byteLength),x=new Uint8Array(n.exports.memory.buffer);x.set(s(m),L),x.set(s(_),p);var T=n.exports.meshopt_buildMeshlets(v,P,N,L,m.length,p,y,C,E,I,b);x=new Uint8Array(n.exports.memory.buffer);for(var w=x.subarray(v,v+T*c),M=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),O=0;O<T;++O){var U=M[O*4+0],Q=M[O*4+1],y=M[O*4+2],z=M[O*4+3];n.exports.meshopt_optimizeMeshlet(P+U*4,N+Q,z,y)}var F=M[(T-1)*4+0],H=M[(T-1)*4+1],W=M[(T-1)*4+2],Z=M[(T-1)*4+3],Y=F+W,$=H+(Z*3+3&-4),X={meshlets:M,vertices:new Uint32Array(x.buffer,P,Y).slice(),triangles:new Uint8Array(x.buffer,N,$*3).slice(),meshletCount:T};return S(v-S(0)),X}function h(m){var _=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:_[0],centerY:_[1],centerZ:_[2],radius:_[3],coneApexX:_[4],coneApexY:_[5],coneApexZ:_[6],coneAxisX:_[7],coneAxisY:_[8],coneAxisZ:_[9],coneCutoff:_[10]}}function A(m,_,y,C){var E=n.exports.sbrk,I=[],b=E(_.byteLength),S=E(m.vertices.byteLength),B=E(m.triangles.byteLength),v=E(a),P=new Uint8Array(n.exports.memory.buffer);P.set(s(_),b),P.set(s(m.vertices),S),P.set(s(m.triangles),B);for(var N=0;N<m.meshletCount;++N){var L=m.meshlets[N*4+0],p=m.meshlets[N*4+0+1],x=m.meshlets[N*4+0+3];n.exports.meshopt_computeMeshletBounds(v,S+L*4,B+p,x,b,y,C),I.push(h(v))}return E(b-E(0)),I}function g(m,_,y,C){var E=n.exports.sbrk,I=E(a),b=E(m.byteLength),S=E(_.byteLength),B=new Uint8Array(n.exports.memory.buffer);B.set(s(m),b),B.set(s(_),S),n.exports.meshopt_computeClusterBounds(I,b,m.length,S,y,C);var v=h(I);return E(I-E(0)),v}return{ready:i,supported:!0,buildMeshlets:function(m,_,y,C,E,I){r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C<=256||C>0),r(E<=512),r(E%4==0),I=I||0;var b=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(b,_,_.length/y,y*4,C,E,I)},computeClusterBounds:function(m,_,y){r(m.length%3==0),r(m.length/3<=512),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3);var C=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(C,_,_.length/y,y*4)},computeMeshletBounds:function(m,_,y){return r(m.meshletCount!=0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),A(m,_,_.length/y,y*4)},extractMeshlet:function(m,_){return r(_>=0&&_<m.meshletCount),u(m,_)}}}();function OC(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,A,g,m,_;if(Ii(a,"EXT_meshopt_compression")){let C=a.extensions.EXT_meshopt_compression;c=C.buffer,u=C.byteOffset??0,f=C.byteLength,h=!0,A=C.byteStride,g=C.count,m=C.mode,_=C.filter??"NONE"}let y=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=A,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=_,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=y,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(OC.prototype=Object.create(qi.prototype),OC.prototype.constructor=OC);Object.defineProperties(OC.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function MQe(e){try{let t=NQe(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);are.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=dt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load buffer view",t)}}OC.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=MQe(this),this._promise)};function NQe(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}OC.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var Kw=OC;function Kr(){}Kr._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Kr._decoderTaskProcessor=void 0;Kr._taskProcessorReady=!1;Kr._error=void 0;Kr._getDecoderTaskProcessor=function(){if(!l(Kr._decoderTaskProcessor)){let e=new mi("decodeDraco",Kr._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?Kr._taskProcessorReady=!0:Kr._error=new ce("Draco decoder could not be initialized.")}).catch(t=>{Kr._error=t}),Kr._decoderTaskProcessor=e}return Kr._decoderTaskProcessor};Kr.decodePointCloud=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};Kr.decodeBufferView=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var jg=Kr;var zn={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function LQe(e){switch(e){case zn.POSITION:return"positionMC";case zn.NORMAL:return"normalMC";case zn.TANGENT:return"tangentMC";case zn.TEXCOORD:return"texCoord";case zn.COLOR:return"color";case zn.JOINTS:return"joints";case zn.WEIGHTS:return"weights";case zn.FEATURE_ID:return"featureId";case zn.SCALE:return"scale";case zn.ROTATION:return"rotation"}}zn.hasSetIndex=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return!1;case zn.TEXCOORD:case zn.COLOR:case zn.JOINTS:case zn.WEIGHTS:case zn.FEATURE_ID:case zn.SCALE:case zn.ROTATION:return!0}};zn.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return zn.POSITION;case"NORMAL":return zn.NORMAL;case"TANGENT":return zn.TANGENT;case"TEXCOORD":return zn.TEXCOORD;case"COLOR":return zn.COLOR;case"JOINTS":return zn.JOINTS;case"WEIGHTS":return zn.WEIGHTS;case"_FEATURE_ID":return zn.FEATURE_ID;case"_SCALE":return zn.SCALE;case"_ROTATION":return zn.ROTATION}};zn.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return zn.POSITION;case"RGBA":case"RGB":case"RGB565":return zn.COLOR;case"NORMAL":case"NORMAL_OCT16P":return zn.NORMAL;case"BATCH_ID":return zn.FEATURE_ID}};zn.getGlslType=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return"vec3";case zn.TEXCOORD:return"vec2";case zn.COLOR:return"vec4";case zn.JOINTS:return"ivec4";case zn.WEIGHTS:return"vec4";case zn.FEATURE_ID:return"int";case zn.SCALE:return"vec3";case zn.ROTATION:return"vec4";case zn.OPACITY:return"float"}};zn.getVariableName=function(e,t){let n=LQe(e);return l(t)&&(n+=`_${t}`),n};var ct=Object.freeze(zn);function Yg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(Yg.prototype=Object.create(qi.prototype),Yg.prototype.constructor=Yg);Object.defineProperties(Yg.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function OQe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;cre(e,n)}}Yg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=OQe(this),this._promise)};function cre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load Draco",t)}async function FQe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var FC={};FC[ct.POSITION]="POSITION";FC[ct.NORMAL]="NORMAL";FC[ct.COLOR]="COLOR";FC[ct.TEXCOORD]="TEX_COORD";function QQe(e){for(let t in FC)if(FC.hasOwnProperty(t)&&e.startsWith(t))return FC[t]}Yg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._dracoError)&&cre(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let A=QQe(h);l(A)&&i.accessors[n.attributes[h]].componentType===q.FLOAT&&(c.includes(A)||c.push(A))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=jg.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=FQe(this,f)};Yg.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var Xw=Yg;function kQe(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return we.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(we.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new we({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var YI=kQe;function tp(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(tp.prototype=Object.create(qi.prototype),tp.prototype.constructor=tp);Object.defineProperties(tp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});tp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=UQe(this),this._promise):(this._promise=GQe(this),this._promise)};function lre(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function UQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await VQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(n){return e.isDestroyed()?void 0:ure(e,n,"Failed to load embedded image")}}async function GQe(e){e._state=dt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await WQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(o){return e.isDestroyed()?void 0:ure(e,o,`Failed to load image: ${n}`)}}function ure(e,t,n){return e.unload(),e._state=dt.FAILED,Promise.reject(e.getError(n,t))}function zQe(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new ce("Image format is not recognized")}async function VQe(e){let t=zQe(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return Iu(n)}return tp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var HQe=/(^data:image\/ktx2)|(\.ktx2$)/i;function WQe(e){let t=e.getUrlComponent(!1,!0);return HQe.test(t)?Iu(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}tp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};tp._loadImageFromTypedArray=YI;var Jw=tp;var jQe={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},Tc=Object.freeze(jQe);function qg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=e.asynchronous??!0,f=e.loadBuffer??!1,h=e.loadTypedArray??!1,A=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=A,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(qg.prototype=Object.create(qi.prototype),qg.prototype.constructor=qg);Object.defineProperties(qg.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var YQe=new sW;qg.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=qQe(this),this._promise):(this._promise=KQe(this),this._promise)};async function qQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;rW(e,n)}}async function KQe(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=dt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=XQe(e,a),e._state=dt.PROCESSING,e}catch(s){if(e.isDestroyed())return;rW(e,s)}}function XQe(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Fe.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,A=new Uint8Array(c,u,h);c=new Uint8Array(A).buffer,u=0,Pr("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Fe.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Fe.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Fe.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function rW(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load index buffer",t)}function sW(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}sW.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};sW.prototype.execute=function(){this.buffer=fre(this.typedArray,this.indexDatatype,this.context)};function fre(e,t,n){let i=Et.createIndexBuffer({typedArray:e,context:n,usage:Qe.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}qg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=q.fromTypedArray(t),this._indexDatatype=n)}catch(o){rW(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=YQe;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,Tc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=fre(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};qg.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var Zw=qg;function JQe(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var aa=JQe;function ZQe(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Rr=ZQe;function rn(){}rn.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};rn.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};rn.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?rn.objectLegacy(i,n):rn.object(i,n)};rn.accessor=function(e,t){return rn.topLevel(e,"accessors",t)};rn.accessorWithSemantic=function(e,t,n){let i={};return rn.mesh(e,function(o){return rn.meshPrimitive(o,function(r){let s=rn.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:rn.meshPrimitiveTarget(r,function(a){return rn.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};rn.accessorContainingVertexAttributeData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=rn.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:rn.meshPrimitiveTarget(o,function(s){return rn.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};rn.accessorContainingIndexData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};rn.animation=function(e,t){return rn.topLevel(e,"animations",t)};rn.animationChannel=function(e,t){let n=e.channels;return rn.object(n,t)};rn.animationSampler=function(e,t){let n=e.samplers;return rn.object(n,t)};rn.buffer=function(e,t){return rn.topLevel(e,"buffers",t)};rn.bufferView=function(e,t){return rn.topLevel(e,"bufferViews",t)};rn.camera=function(e,t){return rn.topLevel(e,"cameras",t)};rn.image=function(e,t){return rn.topLevel(e,"images",t)};rn.material=function(e,t){return rn.topLevel(e,"materials",t)};rn.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.mesh=function(e,t){return rn.topLevel(e,"meshes",t)};rn.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};rn.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};rn.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};rn.node=function(e,t){return rn.topLevel(e,"nodes",t)};rn.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=rn.nodeInTree(e,u,n),l(c)))return c}}}};rn.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return rn.nodeInTree(e,i,n)};rn.program=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.programs,t):rn.topLevel(e,"programs",t)};rn.sampler=function(e,t){return rn.topLevel(e,"samplers",t)};rn.scene=function(e,t){return rn.topLevel(e,"scenes",t)};rn.shader=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.shaders,t):rn.topLevel(e,"shaders",t)};rn.skin=function(e,t){return rn.topLevel(e,"skins",t)};rn.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};rn.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.technique=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.techniques,t):rn.topLevel(e,"techniques",t)};rn.texture=function(e,t){return rn.topLevel(e,"textures",t)};var Re=rn;function $Qe(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var Rf=$Qe;function eke(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return q.getSizeInBytes(t.componentType)*Rf(t.type)}var Bu=eke;function tke(e){Re.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Re.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){if(i.mode=i.mode??ee.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=aa(e.materials,o)}})}),Re.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=Bu(e,i),r.target=ee.ARRAY_BUFFER}}),Re.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ee.ELEMENT_ARRAY_BUFFER}}),Re.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=u.transparency??1,c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=u.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Re.materialValue(n,function(c){l(c.index)&&QC(c)}),QC(n.emissiveTexture),QC(n.normalTexture),QC(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,QC(s.baseColorTexture),QC(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,QC(a.specularGlossinessTexture))}),Re.animation(e,function(n){Re.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=nke(e);return Re.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Re.sampler(e,function(n){n.wrapS=n.wrapS??ee.REPEAT,n.wrapT=n.wrapT??ee.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function nke(e){let t={};return Re.animation(e,function(n){Re.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function QC(e){l(e)&&(e.texCoord=e.texCoord??0)}var SO=tke;function ike(e){return Re.shader(e,function(t){wO(t)}),Re.buffer(e,function(t){wO(t)}),Re.image(e,function(t){wO(t)}),wO(e),e}function wO(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var kC=ike;function oke(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var BO=oke;function rke(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),BO(e,t),n.length===0&&delete e.extensionsUsed}}var qI=rke;var ske=4;function ake(e){if(gm(e)!=="glTF")throw new ce("File is not valid binary glTF");let n=dre(e,0,5),i=n[1];if(i!==1&&i!==2)throw new ce("Binary glTF version is not 1 or 2");return i===1?cke(e,n):lke(e,n)}function dre(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*ske,!0);return o}function cke(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new ce("Binary glTF scene format is not JSON");let r=20,s=r+i,a=Tu(e,r,i),c=JSON.parse(a);kC(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=f.binary_glTF??f.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return qI(c,"KHR_binary_glTF"),c}function lke(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=dre(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=Tu(u);o=JSON.parse(f),kC(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var DO=ake;function uke(e){return Re.shader(e,function(t){vO(t)}),Re.buffer(e,function(t){vO(t)}),Re.image(e,function(t){vO(t)}),vO(e),e}function vO(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var PO=uke;function fke(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),aa(n,t,!0)}var Yd=fke;function dke(e){switch(e){case q.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case q.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case q.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case q.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case q.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case q.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case q.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case q.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Kg=dke;function hke(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=Rf(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,A=t.count,g=Bu(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,_=t.componentType,y=q.getSizeInBytes(_),C=new DataView(h.buffer),E=new Array(r),I=Kg(_);for(let b=0;b<A;b++){I(C,m,r,y,E);for(let S=0;S<r;S++){let B=E[S];s[S]=Math.min(s[S],B),a[S]=Math.max(a[S],B)}m+=g}return{min:s,max:a}}var KI=hke;var mke=[ee.FUNC_ADD,ee.FUNC_ADD],Ake=[ee.ONE,ee.ZERO,ee.ONE,ee.ZERO];function hre(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var pke=[ee.ZERO,ee.ONE,ee.SRC_COLOR,ee.ONE_MINUS_SRC_COLOR,ee.SRC_ALPHA,ee.ONE_MINUS_SRC_ALPHA,ee.DST_ALPHA,ee.ONE_MINUS_DST_ALPHA,ee.DST_COLOR,ee.ONE_MINUS_DST_COLOR];function gke(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(pke.indexOf(e[n])===-1)return t;return e}function _ke(e){let t={},n={},i=e.techniques;return l(i)&&(Re.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(hre(s,ee.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??mke,blendFactors:gke(c.blendFuncSeparate,Ake)})}hre(s,ee.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),Yd(e,"KHR_blend")),Re.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Re.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var RO=_ke;function yke(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),aa(n,t,!0),Yd(e,t)}var MO=yke;function Cke(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Re.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Re.techniqueAttribute(a,function(h,A){f=a.parameters[h],u.attributes[A]={semantic:f.semantic}}),Re.techniqueUniform(a,function(h,A){f=a.parameters[h],u.uniforms[A]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=A}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],A={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];A.fragmentShader=aa(r.shaders,g,!0);let m=e.shaders[h.vertexShader];A.vertexShader=aa(r.shaders,m,!0),u.program=aa(r.programs,A),o[a.program]=u.program}i[c]=aa(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,Yd(e,"KHR_techniques_webgl"),MO(e,"KHR_techniques_webgl"))}return Re.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Re.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var NO=Cke;function Eke(e,t){Mo.typeOf.object("material",e),Mo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let A=t(c.index,c);if(l(A))return A}if(l(u)&&l(u.index)){let A=t(u.index,u);if(l(A))return A}if(l(f)&&l(f.index)){let A=t(f.index,f);if(l(A))return A}if(l(h)&&l(h.index)){let A=t(h.index,h);if(l(A))return A}}}let o=Re.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var $w=Eke;var mre=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function Ike(e,t){return t=t??mre,mre.forEach(function(n){t.indexOf(n)>-1&&bke(e,n)}),e}var xke={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function bke(e,t){let n=xke[t],i=e[n];if(l(i)){let o=0,r=Cm[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(ym[t](e,a-o),o++)}}function ym(){}ym.accessor=function(e,t){e.accessors.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){Re.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Re.meshPrimitiveTarget(o,function(a){Re.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Re.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Re.animation(e,function(i){Re.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};ym.buffer=function(e,t){e.buffers.splice(t,1),Re.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};ym.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Re.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Rr(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};ym.image=function(e,t){e.images.splice(t,1),Re.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};ym.mesh=function(e,t){e.meshes.splice(t,1),Re.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};ym.node=function(e,t){e.nodes.splice(t,1),Re.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Re.animation(e,function(i){Re.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Re.technique(e,function(i){Re.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Re.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Re.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};ym.material=function(e,t){e.materials.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};ym.sampler=function(e,t){e.samplers.splice(t,1),Re.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};ym.texture=function(e,t){if(e.textures.splice(t,1),Re.material(e,function(i){$w(i,function(o,r){r.index>t&&--r.index})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(r){Re.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Cm(){}Cm.accessor=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Re.meshPrimitiveTarget(i,function(r){Re.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Re.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Re.animation(e,function(n){Re.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Rr(e,"EXT_mesh_gpu_instancing")&&Re.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Rr(e,"CESIUM_primitive_outline")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Cm.buffer=function(e){let t={};return Re.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Cm.bufferView=function(e){let t={};if(Re.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Rr(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Cm.image=function(e){let t={};return Re.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Cm.mesh=function(e){let t={};return Re.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function Are(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Are(e,o,n)}).length===0}Cm.node=function(e){let t={};return Re.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Re.skinJoint(n,function(i){t[i]=!0})}),Re.animation(e,function(n){Re.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Re.technique(e,function(n){Re.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Re.node(e,function(n,i){Are(e,i,t)||(t[i]=!0)}),t};Cm.material=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Cm.texture=function(e){let t={};if(Re.material(e,function(n){$w(n,function(i){t[i]=!0})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(o){Re.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let A=c[f].featureIds.texture;t[A.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Cm.sampler=function(e){let t={};return Re.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var LO=Ike;function Tke(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:aa(e.buffers,n),byteOffset:0,byteLength:t.length};return aa(e.bufferViews,o)}var OO=Tke;function Ske(e,t){let n=Bu(e,t),i=q.getSizeInBytes(t.componentType),o=Rf(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),A=Kg(t.componentType);for(let g=0;g<r;++g){A(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var FO=Ske;function wke(e){let t;return Re.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t!==ee.UNSIGNED_BYTE&&t!==ee.UNSIGNED_SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),Re.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t===ee.SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),e}function QO(e,t,n){let i=q.createTypedArray(n,FO(e,t)),o=new Uint8Array(i.buffer);t.bufferView=OO(e,o),t.componentType=n,t.byteOffset=0}var kO=wke;function Bke(e,t){return qI(e,t),t==="CESIUM_RTC"&&Dke(e),aW(e,t)}function Dke(e){Re.technique(e,function(t){Re.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function aW(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)aW(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&aW(e[o],t);return i}}var XI=Bke;var UO={.8:Lke,"1.0":n3e,"2.0":void 0};function vke(e,t){t=t??{};let n=t.targetVersion,i=e.version;e.asset=e.asset??{version:"1.0"},e.asset.version=e.asset.version??"1.0",i=(i??e.asset.version).toString(),Object.prototype.hasOwnProperty.call(UO,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(UO,i)||(i="1.0"));let o=UO[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=UO[i];return t.keepLegacyExtensions||(r3e(e,t),s3e(e)),e}function _re(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function Pke(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.primitive??ee.TRIANGLES;a.mode=a.mode??c,delete a.primitive}}}}function Rke(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function Mke(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,A=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let _=f[m];if(_.target.path==="rotation"){let y=h[A[_.sampler].output];if(l(r[y]))continue;r[y]=!0;let C=n[y],E=i[C.bufferView],b=o[E.buffer].extras._pipeline.source,S=b.byteOffset+E.byteOffset+C.byteOffset,B=C.componentType,v=C.count,P=Rf(C.type),N=C.count*P,L=q.createArrayBufferView(B,b.buffer,S,N);for(let p=0;p<v;p++){let x=p*P;d.unpack(L,x,s);let T=L[x+3];Le.fromAxisAngle(s,T,a),Le.pack(a,L,x)}}}}}}function Nke(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=i.pass??"defaultPass";if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=i.attributes??a.attributes,i.program=i.program??a.program,i.uniforms=i.uniforms??a.uniforms,i.states=i.states??s.states}delete i.passes,delete i.pass}}}function Lke(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,_re(e),Pke(e),Rke(e),Mke(e),Nke(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=e.extensions??{};e.extensions=n;let i=n.KHR_materials_common??{};n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,Yd(e,"KHR_materials_common")}}function Oke(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function pre(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function Fke(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=pre(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Re.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Re.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Re.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Re.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Re.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Re.mesh(e,function(s){Re.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Re.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Re.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=aa(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Re.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Re.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Re.animation(e,function(s){let a={};s.samplers=pre(s.samplers,a),Re.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Re.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Re.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Re.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Re.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Re.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function Qke(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){delete n.name})})}function kke(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Re.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function Uke(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var Gke={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function zke(e){let t=e.extensionsUsed;if(e.extensionsRequired=e.extensionsRequired??[],l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(Gke[o])&&e.extensionsRequired.push(o)}}}function Vke(e){Re.buffer(e,function(t){delete t.type})}function Hke(e){Re.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function Wke(e){Re.mesh(e,function(t){Re.meshPrimitive(t,function(n){Re.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Re.technique(e,function(t){Re.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var jke={POSITION:!0,NORMAL:!0,TANGENT:!0},Yke={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function qke(e){let t={};Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=Yke[a];l(f)?(u=f+c,t[r]=u):l(jke[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Re.technique(e,function(n){Re.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function Kke(e){Re.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function lW(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:Bu(e,t)}function Xke(e){Re.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Re.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=lW(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function Jke(e){let t,n,i,o=e.bufferViews,r={};Re.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Re.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(A,g){return A.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let A=c[t],g=lW(e,A),m=A.byteOffset,_=A.count*g;delete A.byteStride;let y=t<h-1,C=y?lW(e,c[t+1]):void 0;if(g!==C){let E=ze(i,!0);r[a]&&(E.byteStride=g),E.byteOffset+=u,E.byteLength=m+_-u;let I=aa(o,E);for(n=f;n<=t;++n)A=c[n],A.bufferView=I,A.byteOffset=A.byteOffset-u;u=y?c[t+1].byteOffset:void 0,f=t+1}}}LO(e,["accessor","bufferView","buffer"])}function Zke(e){Re.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=KI(e,n);n.min=i.min,n.max=i.max}})}function yre(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||se.fromArray(e.rotation).equals(new se(0,0,0,1)))&&(!l(e.matrix)||R.fromColumnMajorArray(e.matrix).equals(R.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Cre(e,t){Re.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Re.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),yre(n)&&Cre(e,i))}}),delete e.nodes[t]}function $ke(e){return Re.node(e,function(t,n){yre(t)&&Cre(e,n)}),e}function e3e(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=KI(e,i);i.min=o.min,i.max=o.max}})})}function t3e(e){Re.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=KI(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function n3e(e){e.asset=e.asset??{},e.asset.version="2.0",_re(e),Oke(e),$ke(e),Fke(e),Qke(e),Uke(e),zke(e),Xke(e),Jke(e),Zke(e),e3e(e),t3e(e),Vke(e),Hke(e),Wke(e),qke(e),kO(e),Kke(e),RO(e),NO(e),kke(e)}var i3e=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],o3e=["u_diffuse","u_diffuse_mat"];function uW(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function fW(e){return l(e.index)}function dW(e){return Array.isArray(e)&&e.length===4}function Ere(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function r3e(e,t){t=t??{};let n=t.baseColorTextureNames??i3e,i=t.baseColorFactorNames??o3e;Re.material(e,function(o){Re.materialValue(o,function(r,s){n.indexOf(s)!==-1&&fW(r)?(uW(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&dW(r)&&(uW(o),o.pbrMetallicRoughness.baseColorFactor=Ere(r))})}),XI(e,"KHR_techniques_webgl"),XI(e,"KHR_blend")}function cW(e,t){l(t)&&(dW(t)?e.pbrMetallicRoughness.baseColorFactor=Ere(t):fW(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function gre(e,t){l(t)&&(dW(t)?e.emissiveFactor=t.slice(0,3):fW(t)&&(e.emissiveTexture=t))}function s3e(e){Re.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;uW(t),n.technique==="CONSTANT"?(Yd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},cW(t,s),cW(t,o)):(cW(t,r),gre(t,o),gre(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),XI(e,"KHR_materials_common")}var GO=vke;function Sc(){}Sc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=`
|
||
${n.message}`);let o=new ce(i);return l(n)&&(o.stack=`Original stack:
|
||
${n.stack}
|
||
Handler stack:
|
||
${o.stack}`),o};Sc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:R.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};Sc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};Sc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};Sc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};Sc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};Sc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=ct.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=Ht.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":Ht.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var a3e=new d,c3e=new d;Sc.getPositionMinMax=function(e,t,n){let i=Sc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,c3e),o=d.add(o,n,a3e)),{min:r,max:o}};Sc.getAxisCorrectionMatrix=function(e,t,n){return n=R.clone(R.IDENTITY,n),e===Ao.Y?n=R.clone(Ao.Y_UP_TO_Z_UP,n):e===Ao.X&&(n=R.clone(Ao.X_UP_TO_Z_UP,n)),t===Ao.Z&&(n=R.multiplyTransformation(n,Ao.Z_UP_TO_X_UP,n)),n};var l3e=new J;Sc.getCullFace=function(e,t){if(!Me.isTriangles(t))return Mi.BACK;let n=R.getMatrix3(e,l3e);return J.determinant(n)<0?Mi.FRONT:Mi.BACK};Sc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};Sc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,KHR_gaussian_splatting:!0,KHR_spz_gaussian_splats_compression:!0,WEB3D_quantized_attributes:!0};Sc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!Sc.supportedExtensions[i])throw new ce(`Unsupported glTF Extension: ${i}`)}};var Qt=Sc;function Xg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Xg.prototype=Object.create(qi.prototype),Xg.prototype.constructor=Xg);Object.defineProperties(Xg.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});Xg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,l(this._gltfJson)?(this._promise=Ire(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=xre(this,this._typedArray),this._promise):(this._promise=u3e(this),this._promise))};async function u3e(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;hW(e,n)}return xre(e,t)}function hW(e,t){e.unload(),e._state=dt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function f3e(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!Rr(t,"KHR_techniques_webgl")&&!Rr(t,"KHR_materials_common"))return Promise.resolve();let n=[];Re.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),GO(t)}function d3e(e){let t=[];return Re.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&mg(i)&&(delete n.uri,t.push(we.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function h3e(e,t){let n=[];return Re.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function Ire(e,t){try{kC(t),await d3e(t),await f3e(e,t),SO(t),await h3e(e,t),PO(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new ce(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Qt.checkSupportedExtensions(i),e._gltf=t,e._state=dt.READY,e}catch(n){if(e.isDestroyed())return;hW(e,n)}}async function xre(e,t){let n;try{gm(t)==="glTF"?n=DO(t):n=yr(t)}catch(i){if(e.isDestroyed())return;hW(e,i)}return Ire(e,n)}Xg.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};Xg.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var eB=Xg;var m3e={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},np=Object.freeze(m3e);var Lo={};function A3e(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function p3e(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function g3e(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function _3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function y3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function C3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function E3e(){this.attributes=[]}function I3e(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0,this.modelPrimitiveImagery=void 0}function x3e(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function b3e(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function T3e(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function S3e(){this.nodes=[]}var w3e={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function B3e(){this.input=[],this.interpolation=void 0,this.output=[]}function D3e(){this.node=void 0,this.path=void 0}function v3e(){this.sampler=void 0,this.target=void 0}function P3e(){this.name=void 0,this.samplers=[],this.channels=[]}function R3e(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function M3e(){this.name=void 0,this.stages=[]}function bre(){this.credits=[]}function N3e(){this.asset=new bre,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=R.clone(R.IDENTITY),this.extensions={}}function L3e(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=J.clone(J.IDENTITY),this.scale=1,this.channels=void 0}function Jg(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=se.clone(Jg.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=Jg.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=Jg.DEFAULT_ROUGHNESS_FACTOR}Jg.DEFAULT_BASE_COLOR_FACTOR=se.ONE;Jg.DEFAULT_METALLIC_FACTOR=1;Jg.DEFAULT_ROUGHNESS_FACTOR=1;function UC(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=se.clone(UC.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(UC.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=UC.DEFAULT_GLOSSINESS_FACTOR}UC.DEFAULT_DIFFUSE_FACTOR=se.ONE;UC.DEFAULT_SPECULAR_FACTOR=d.ONE;UC.DEFAULT_GLOSSINESS_FACTOR=1;function tB(){this.specularFactor=tB.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(tB.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}tB.DEFAULT_SPECULAR_FACTOR=1;tB.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function nB(){this.anisotropyStrength=nB.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=nB.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}nB.DEFAULT_ANISOTROPY_STRENGTH=0;nB.DEFAULT_ANISOTROPY_ROTATION=0;function iB(){this.clearcoatFactor=iB.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}iB.DEFAULT_CLEARCOAT_FACTOR=0;iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function mW(){this.metallicRoughness=new Jg,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(mW.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=np.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}mW.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Lo.Quantization=A3e;Lo.Attribute=p3e;Lo.Indices=g3e;Lo.FeatureIdAttribute=_3e;Lo.FeatureIdTexture=C3e;Lo.FeatureIdImplicitRange=y3e;Lo.MorphTarget=E3e;Lo.Primitive=I3e;Lo.Instances=x3e;Lo.Skin=b3e;Lo.Node=T3e;Lo.Scene=S3e;Lo.AnimatedPropertyType=Object.freeze(w3e);Lo.AnimationSampler=B3e;Lo.AnimationTarget=D3e;Lo.AnimationChannel=v3e;Lo.Animation=P3e;Lo.ArticulationStage=R3e;Lo.Articulation=M3e;Lo.Asset=bre;Lo.Components=N3e;Lo.TextureReader=L3e;Lo.MetallicRoughness=Jg;Lo.SpecularGlossiness=UC;Lo.Specular=tB;Lo.Anisotropy=nB;Lo.Clearcoat=iB;Lo.Material=mW;var bn=Lo;var zO={};zO.getImageIdFromTexture=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};zO.createSampler=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=Tn.REPEAT,r=Tn.REPEAT,s=Zt.LINEAR,a=pi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=h.wrapS??o,r=h.wrapT??r,s=h.minFilter??s,a=h.magFilter??a}return i&&s!==Zt.LINEAR&&s!==Zt.NEAREST&&(s===Zt.NEAREST_MIPMAP_NEAREST||s===Zt.NEAREST_MIPMAP_LINEAR?s=Zt.NEAREST:s=Zt.LINEAR),new on({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var O3e=new k(1,1);zO.createModelTextureReader=function(e){e=e??V.EMPTY_OBJECT;let{textureInfo:t,channels:n,texture:i}=e,o=t.texCoord??0,r,s=t.extensions?.KHR_texture_transform;if(l(s)){o=s.texCoord??o;let c=l(s.offset)?k.unpack(s.offset):k.ZERO,u=s.rotation??0,f=l(s.scale)?k.unpack(s.scale):O3e;u=-u,r=new J(Math.cos(u)*f.x,-Math.sin(u)*f.y,c.x,Math.sin(u)*f.x,Math.cos(u)*f.y,c.y,0,0,1)}let a=new bn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var Du=zO;function F3e(e){let t=document.createElement("canvas");return t.width=D.nextPowerOfTwo(e.width),t.height=D.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var GC=F3e;function Zg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=e.asynchronous??!0,u=i.index,f=Du.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Zg.prototype=Object.create(qi.prototype),Zg.prototype.constructor=Zg);Object.defineProperties(Zg.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var Q3e=new AW;async function k3e(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load texture",n)}}Zg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=k3e(this),this._promise)};function AW(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}AW.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};AW.prototype.execute=function(){this.texture=Tre(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function Tre(e,t,n,i,o,r){let s=i.internalFormat,a=!1;et.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=Du.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,A=u===Zt.NEAREST_MIPMAP_NEAREST||u===Zt.NEAREST_MIPMAP_LINEAR||u===Zt.LINEAR_MIPMAP_NEAREST||u===Zt.LINEAR_MIPMAP_LINEAR,g=!l(s)&&A,m=g||f===Tn.REPEAT||f===Tn.MIRRORED_REPEAT||h===Tn.REPEAT||h===Tn.MIRRORED_REPEAT,_=!D.isPowerOfTwo(i.width)||!D.isPowerOfTwo(i.height),y=m&&_,C;return l(s)?(!r.webgl2&&et.isCompressedFormat(s)&&_&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),C=Nt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(y&&(i=GC(i)),C=Nt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&C.generateMipmap(),C}Zg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=dt.PROCESSING;let t;if(this._asynchronous){let n=Q3e;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,Tc.TEXTURE))return;t=n.texture}else t=Tre(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=dt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};Zg.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var oB=Zg;function $g(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=e.spz,A=e.asynchronous??!0,g=e.loadBuffer??!1,m=e.loadTypedArray??!1;this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._spz=h,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=A,this._loadBuffer=g,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&($g.prototype=Object.create(qi.prototype),$g.prototype.constructor=$g);Object.defineProperties($g.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function U3e(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}$g.prototype.load=async function(){return l(this._promise)?this._promise:l(this._spz)?(this._promise=z3e(this),this._promise):U3e(this._draco,this._attributeSemantic)?(this._promise=H3e(this),this._promise):(this._promise=j3e(this),this._promise)};function G3e(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new bn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=Ht.VEC2,a.normalizationRange=r;else{let c=Ht.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function z3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getSpzLoader({gltf:e._gltf,primitive:e._primitive,spz:e._spz,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._spzLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return}}function V3e(e){e._state=dt.PROCESSING;let n=e._spzLoader.decodedData.gcloud;if(e._attributeSemantic==="POSITION")e._typedArray=n.positions;else if(e._attributeSemantic==="_SCALE")e._typedArray=n.scales;else if(e._attributeSemantic==="_ROTATION")e._typedArray=n.rotations;else if(e._attributeSemantic==="COLOR_0"){let i=n.colors,o=n.alphas;e._typedArray=new Uint8Array(i.length/3*4);for(let r=0;r<i.length/3;r++)e._typedArray[r*4]=D.clamp(i[r*3]*255,0,255),e._typedArray[r*4+1]=D.clamp(i[r*3+1]*255,0,255),e._typedArray[r*4+2]=D.clamp(i[r*3+2]*255,0,255),e._typedArray[r*4+3]=D.clamp(o[r]*255,0,255)}}async function H3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return;VO(e)}}function W3e(e){e._state=dt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=G3e(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function j3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;VO(e,n)}}function VO(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load vertex buffer",t)}function pW(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}pW.prototype.set=function(e,t){this.typedArray=e,this.context=t};pW.prototype.execute=function(){this.buffer=Sre(this.typedArray,this.context)};function Sre(e,t){let n=Et.createVertexBuffer({typedArray:e,context:t,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var Y3e=new pW;$g.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){VO(this,i)}W3e(this)}if(l(this._spzLoader)){try{if(!this._spzLoader.process(e))return!1}catch(i){VO(this,i)}V3e(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=Y3e;if(i.set(n,e.context),!e.jobScheduler.execute(i,Tc.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=Sre(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};$g.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),l(this._spzLoader)&&e.unload(this._spzLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._spzLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var rB=$g;async function q3e(e={}){var t,n,i=e,o=typeof window=="object",r=typeof WorkerGlobalScope<"u",s=typeof process=="object"&&((t=process.versions)==null?void 0:t.node)&&process.type!="renderer";if(s){let{createRequire:oe}=await Promise.resolve().then(()=>$3e);var a=oe(import.meta.url)}var c="./this.program",u=import.meta.url,f;if(s){var h=a("fs");u.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(u)),f=oe=>(oe=y(oe)?new URL(oe):oe,h.readFileSync(oe)),1<process.argv.length&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else if(o||r){try{new URL(".",u)}catch{}r&&(f=oe=>{var ne=new XMLHttpRequest;return ne.open("GET",oe,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)})}var A=console.log.bind(console),g=console.error.bind(console),m,_=!1,y=oe=>oe.startsWith("file://"),C,E,I,b,S,B,v,P,N,L,p,x,T,w=!1;function M(){var oe=I.buffer;b=new Int8Array(oe),B=new Int16Array(oe),i.HEAPU8=S=new Uint8Array(oe),v=new Uint16Array(oe),P=new Int32Array(oe),N=new Uint32Array(oe),i.HEAPF32=L=new Float32Array(oe),p=new Float64Array(oe),x=new BigInt64Array(oe),T=new BigUint64Array(oe)}var O=0,U=null;function Q(oe){var ne;throw(ne=i.onAbort)==null||ne.call(i,oe),oe="Aborted("+oe+")",g(oe),_=!0,oe=new WebAssembly.RuntimeError(oe+". Build with -sASSERTIONS for more info."),E?.(oe),oe}var z;async function F(oe){if(!ArrayBuffer.isView(oe))if(oe==z&&m)oe=new Uint8Array(m);else if(f)oe=f(oe);else throw"both async and sync fetching of the wasm failed";return oe}async function H(oe){var ne=z;try{var Ee=await F(ne);return await WebAssembly.instantiate(Ee,oe)}catch(be){g(`failed to asynchronously prepare wasm: ${be}`),Q(be)}}async function W(oe){return H(oe)}var Z=oe=>{for(;0<oe.length;)oe.shift()(i)},Y=[],$=[],X=()=>{var oe=i.preRun.shift();$.push(oe)},he=oe=>{if(s)return oe=Buffer.from(oe,"base64"),new Uint8Array(oe.buffer,oe.byteOffset,oe.length);for(var ne,Ee,be=0,Ve=0,At=oe.length,ut=new Uint8Array((3*At>>2)-(oe[At-2]=="=")-(oe[At-1]=="="));be<At;be+=4,Ve+=3)ne=SA[oe.charCodeAt(be+1)],Ee=SA[oe.charCodeAt(be+2)],ut[Ve]=SA[oe.charCodeAt(be)]<<2|ne>>4,ut[Ve+1]=ne<<4|Ee>>2,ut[Ve+2]=Ee<<6|SA[oe.charCodeAt(be+3)];return ut},ge={},fe=oe=>{for(;oe.length;){var ne=oe.pop();oe.pop()(ne)}};function ye(oe){return this.N(N[oe>>2])}var Ie={},ve={},Te={},ke=class extends Error{constructor(oe){super(oe),this.name="InternalError"}},Ge=(oe,ne,Ee)=>{function be(xt){if(xt=Ee(xt),xt.length!==oe.length)throw new ke("Mismatched type converter count");for(var wn=0;wn<oe.length;++wn)tn(oe[wn],xt[wn])}oe.forEach(xt=>Te[xt]=ne);var Ve=Array(ne.length),At=[],ut=0;ne.forEach((xt,wn)=>{ve.hasOwnProperty(xt)?Ve[wn]=ve[xt]:(At.push(xt),Ie.hasOwnProperty(xt)||(Ie[xt]=[]),Ie[xt].push(()=>{Ve[wn]=ve[xt],++ut,ut===At.length&&be(Ve)}))}),At.length===0&&be(Ve)},qe=oe=>{for(var ne="";;){var Ee=S[oe++];if(!Ee)return ne;ne+=String.fromCharCode(Ee)}},tt=class extends Error{constructor(oe){super(oe),this.name="BindingError"}},$t=oe=>{throw new tt(oe)};function it(oe,ne,Ee={}){var be=ne.name;if(!oe)throw new tt(`type "${be}" must have a positive integer typeid pointer`);if(ve.hasOwnProperty(oe)){if(Ee.wa)return;throw new tt(`Cannot register type '${be}' twice`)}ve[oe]=ne,delete Te[oe],Ie.hasOwnProperty(oe)&&(ne=Ie[oe],delete Ie[oe],ne.forEach(Ve=>Ve()))}function tn(oe,ne,Ee={}){return it(oe,ne,Ee)}var Wt=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?be=>b[be]:be=>S[be];case 2:return Ee?be=>B[be>>1]:be=>v[be>>1];case 4:return Ee?be=>P[be>>2]:be=>N[be>>2];case 8:return Ee?be=>x[be>>3]:be=>T[be>>3];default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},vt=oe=>{throw new tt(oe.L.P.M.name+" instance already deleted")},bi=!1,di=()=>{},Ot=oe=>typeof FinalizationRegistry>"u"?(Ot=ne=>ne,oe):(bi=new FinalizationRegistry(ne=>{ne=ne.L,--ne.count.value,ne.count.value===0&&(ne.S?ne.W.Y(ne.S):ne.P.M.Y(ne.O))}),Ot=ne=>{var Ee=ne.L;return Ee.S&&bi.register(ne,{L:Ee},ne),ne},di=ne=>{bi.unregister(ne)},Ot(oe));function Tt(){}var ii=(oe,ne)=>Object.defineProperty(ne,"name",{value:oe}),Ct={},Ro=(oe,ne,Ee)=>{if(oe[ne].R===void 0){var be=oe[ne];oe[ne]=function(...Ve){if(!oe[ne].R.hasOwnProperty(Ve.length))throw new tt(`Function '${Ee}' called with an invalid number of arguments (${Ve.length}) - expects one of (${oe[ne].R})!`);return oe[ne].R[Ve.length].apply(this,Ve)},oe[ne].R=[],oe[ne].R[be.aa]=be}},Qo=(oe,ne,Ee)=>{if(i.hasOwnProperty(oe)){if(Ee===void 0||i[oe].R!==void 0&&i[oe].R[Ee]!==void 0)throw new tt(`Cannot register public name '${oe}' twice`);if(Ro(i,oe,oe),i[oe].R.hasOwnProperty(Ee))throw new tt(`Cannot register multiple overloads of a function with the same number of arguments (${Ee})!`);i[oe].R[Ee]=ne}else i[oe]=ne,i[oe].aa=Ee},ya=oe=>{oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ne=oe.charCodeAt(0);return 48<=ne&&57>=ne?`_${oe}`:oe};function mr(oe,ne,Ee,be,Ve,At,ut,xt){this.name=oe,this.constructor=ne,this.$=Ee,this.Y=be,this.U=Ve,this.ra=At,this.ea=ut,this.pa=xt,this.ya=[]}var Tr=(oe,ne,Ee)=>{for(;ne!==Ee;){if(!ne.ea)throw new tt(`Expected null or instance of ${Ee.name}, got an instance of ${ne.name}`);oe=ne.ea(oe),ne=ne.U}return oe},Oe=oe=>{if(oe===null)return"null";var ne=typeof oe;return ne==="object"||ne==="array"||ne==="function"?oe.toString():""+oe};function lt(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}function Ke(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);if(this.ga){var Ee=this.ia();return oe!==null&&oe.push(this.Y,Ee),Ee}return 0}if(!ne||!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);if(Ee=Tr(ne.L.O,ne.L.P.M,this.M),this.ga){if(ne.L.S===void 0)throw new tt("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(ne.L.W===this)Ee=ne.L.S;else throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);break;case 1:Ee=ne.L.S;break;case 2:if(ne.L.W===this)Ee=ne.L.S;else{var be=ne.clone();Ee=this.za(Ee,rs(()=>be.delete())),oe!==null&&oe.push(this.Y,Ee)}break;default:throw new tt("Unsupporting sharing policy")}}return Ee}function $e(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.P.name} to parameter type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}var pt=(oe,ne,Ee)=>ne===Ee?oe:Ee.U===void 0?null:(oe=pt(oe,ne,Ee.U),oe===null?null:Ee.pa(oe)),Xt={},xn=(oe,ne)=>{if(ne===void 0)throw new tt("ptr should not be undefined");for(;oe.U;)ne=oe.ea(ne),oe=oe.U;return Xt[ne]},lo=(oe,ne)=>{if(!ne.P||!ne.O)throw new ke("makeClassHandle requires ptr and ptrType");if(!!ne.W!=!!ne.S)throw new ke("Both smartPtrType and smartPtr must be specified");return ne.count={value:1},Ot(Object.create(oe,{L:{value:ne,writable:!0}}))};function ro(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn){this.name=oe,this.M=ne,this.ha=Ee,this.fa=be,this.ga=Ve,this.xa=At,this.Da=ut,this.na=xt,this.ia=wn,this.za=Hn,this.Y=dn,Ve||ne.U!==void 0?this.T=Ke:(this.T=be?lt:$e,this.V=null)}var $s=(oe,ne,Ee)=>{if(!i.hasOwnProperty(oe))throw new ke("Replacing nonexistent public symbol");i[oe].R!==void 0&&Ee!==void 0?i[oe].R[Ee]=ne:(i[oe]=ne,i[oe].aa=Ee)},ea,Vn=(oe,ne)=>{oe=qe(oe);var Ee=ea.get(ne);if(typeof Ee!="function")throw new tt(`unknown function pointer with signature ${oe}: ${ne}`);return Ee};class _i extends Error{}var _s=oe=>{oe=c$(oe);var ne=qe(oe);return ug(oe),ne},Wo=(oe,ne)=>{function Ee(At){Ve[At]||ve[At]||(Te[At]?Te[At].forEach(Ee):(be.push(At),Ve[At]=!0))}var be=[],Ve={};throw ne.forEach(Ee),new _i(`${oe}: `+be.map(_s).join([", "]))},Ca=(oe,ne)=>{for(var Ee=[],be=0;be<oe;be++)Ee.push(N[ne+4*be>>2]);return Ee};function uo(oe){for(var ne=1;ne<oe.length;++ne)if(oe[ne]!==null&&oe[ne].V===void 0)return!0;return!1}function jo(oe,ne,Ee,be,Ve,At){var ut=ne.length;if(2>ut)throw new tt("argTypes array size mismatch! Must at least get return value and 'this' types!");var xt=ne[1]!==null&&Ee!==null,wn=uo(ne);Ee=!ne[0].ma;var Hn=ne[0],dn=ne[1];for(be=[oe,$t,be,Ve,fe,Hn.N.bind(Hn),dn?.T.bind(dn)],Ve=2;Ve<ut;++Ve)Hn=ne[Ve],be.push(Hn.T.bind(Hn));if(!wn)for(Ve=xt?1:2;Ve<ne.length;++Ve)ne[Ve].V!==null&&be.push(ne[Ve].V);for(wn=uo(ne),Ve=ne.length-2,dn=[],Hn=["fn"],xt&&Hn.push("thisWired"),ut=0;ut<Ve;++ut)dn.push(`arg${ut}`),Hn.push(`arg${ut}Wired`);dn=dn.join(","),Hn=Hn.join(","),dn=`return function (${dn}) {
|
||
`,wn&&(dn+=`var destructors = [];
|
||
`);var ss=wn?"destructors":"null",pu="humanName throwBindingError invoker fn runDestructors fromRetWire toClassParamWire".split(" ");for(xt&&(dn+=`var thisWired = toClassParamWire(${ss}, this);
|
||
`),ut=0;ut<Ve;++ut){var Hc=`toArg${ut}Wire`;dn+=`var arg${ut}Wired = ${Hc}(${ss}, arg${ut});
|
||
`,pu.push(Hc)}if(dn+=(Ee||At?"var rv = ":"")+`invoker(${Hn});
|
||
`,wn)dn+=`runDestructors(destructors);
|
||
`;else for(ut=xt?1:2;ut<ne.length;++ut)At=ut===1?"thisWired":"arg"+(ut-2)+"Wired",ne[ut].V!==null&&(dn+=`${At}_dtor(${At});
|
||
`,pu.push(`${At}_dtor`));return Ee&&(dn+=`var ret = fromRetWire(rv);
|
||
return ret;
|
||
`),ne=new Function(pu,dn+`}
|
||
`)(...be),ii(oe,ne)}for(var df=oe=>{oe=oe.trim();let ne=oe.indexOf("(");return ne===-1?oe:oe.slice(0,ne)},Ar=[],ys=[0,1,,1,null,1,!0,1,!1,1],Qs=oe=>{9<oe&&--ys[oe+1]===0&&(ys[oe]=void 0,Ar.push(oe))},vd=oe=>{if(!oe)throw new tt(`Cannot use deleted val. handle = ${oe}`);return ys[oe]},rs=oe=>{switch(oe){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let ne=Ar.pop()||ys.length;return ys[ne]=oe,ys[ne+1]=1,ne}},qa={name:"emscripten::val",N:oe=>{var ne=vd(oe);return Qs(oe),ne},T:(oe,ne)=>rs(ne),X:ye,V:null},Ka=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?function(be){return this.N(b[be])}:function(be){return this.N(S[be])};case 2:return Ee?function(be){return this.N(B[be>>1])}:function(be){return this.N(v[be>>1])};case 4:return Ee?function(be){return this.N(P[be>>2])}:function(be){return this.N(N[be>>2])};default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Sr=(oe,ne)=>{var Ee=ve[oe];if(Ee===void 0)throw oe=`${ne} has unknown type ${_s(oe)}`,new tt(oe);return Ee},Bl=(oe,ne)=>{switch(ne){case 4:return function(Ee){return this.N(L[Ee>>2])};case 8:return function(Ee){return this.N(p[Ee>>3])};default:throw new TypeError(`invalid float width (${ne}): ${oe}`)}},Dl=Object.assign({optional:!0},qa),ta=(oe,ne,Ee)=>{var be=S;if(!(0<Ee))return 0;var Ve=ne;Ee=ne+Ee-1;for(var At=0;At<oe.length;++At){var ut=oe.codePointAt(At);if(127>=ut){if(ne>=Ee)break;be[ne++]=ut}else if(2047>=ut){if(ne+1>=Ee)break;be[ne++]=192|ut>>6,be[ne++]=128|ut&63}else if(65535>=ut){if(ne+2>=Ee)break;be[ne++]=224|ut>>12,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63}else{if(ne+3>=Ee)break;be[ne++]=240|ut>>18,be[ne++]=128|ut>>12&63,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63,At++}}return be[ne]=0,ne-Ve},wo=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee){var be=oe.charCodeAt(Ee);127>=be?ne++:2047>=be?ne+=2:55296<=be&&57343>=be?(ne+=4,++Ee):ne+=3}return ne},cn=new TextDecoder,Se=(oe,ne,Ee,be)=>{if(Ee=ne+Ee,be)return Ee;for(;oe[ne]&&!(ne>=Ee);)++ne;return ne},St=new TextDecoder("utf-16le"),_n=(oe,ne,Ee)=>(oe>>=1,St.decode(v.subarray(oe,Se(v,oe,ne/2,Ee)))),er=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),2>Ee)return 0;Ee-=2;var be=ne;Ee=Ee<2*oe.length?Ee/2:oe.length;for(var Ve=0;Ve<Ee;++Ve)B[ne>>1]=oe.charCodeAt(Ve),ne+=2;return B[ne>>1]=0,ne-be},Ea=oe=>2*oe.length,Cs=(oe,ne,Ee)=>{var be="";oe>>=2;for(var Ve=0;!(Ve>=ne/4);Ve++){var At=N[oe+Ve];if(!At&&!Ee)break;be+=String.fromCodePoint(At)}return be},dc=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),4>Ee)return 0;var be=ne;Ee=be+Ee-4;for(var Ve=0;Ve<oe.length;++Ve){var At=oe.codePointAt(Ve);if(65535<At&&Ve++,P[ne>>2]=At,ne+=4,ne+4>Ee)break}return P[ne>>2]=0,ne-be},Pd=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee)65535<oe.codePointAt(Ee)&&Ee++,ne+=4;return ne},TA=[],LS=oe=>{var ne=TA.length;return TA.push(oe),ne},Ia=(oe,ne)=>{for(var Ee=Array(oe),be=0;be<oe;++be)Ee[be]=Sr(N[ne+4*be>>2],`parameter ${be}`);return Ee},gR=(oe,ne,Ee)=>{var be=[];return oe=oe(be,Ee),be.length&&(N[ne>>2]=rs(be)),oe},_R={},USe=oe=>{var ne=_R[oe];return ne===void 0?qe(oe):ne},b5={},a$=()=>{if(!T5){var oe={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},ne;for(ne in b5)b5[ne]===void 0?delete oe[ne]:oe[ne]=b5[ne];var Ee=[];for(ne in oe)Ee.push(`${ne}=${oe[ne]}`);T5=Ee}return T5},T5,GSe=[null,[],[]],SA=new Uint8Array(123),lg=25;0<=lg;--lg)SA[48+lg]=52+lg,SA[65+lg]=lg,SA[97+lg]=26+lg;SA[43]=62,SA[47]=63,(()=>{let oe=Tt.prototype;Object.assign(oe,{isAliasOf:function(Ee){if(!(this instanceof Tt&&Ee instanceof Tt))return!1;var be=this.L.P.M,Ve=this.L.O;Ee.L=Ee.L;var At=Ee.L.P.M;for(Ee=Ee.L.O;be.U;)Ve=be.ea(Ve),be=be.U;for(;At.U;)Ee=At.ea(Ee),At=At.U;return be===At&&Ve===Ee},clone:function(){if(this.L.O||vt(this),this.L.da)return this.L.count.value+=1,this;var Ee=Ot,be=Object,Ve=be.create,At=Object.getPrototypeOf(this),ut=this.L;return Ee=Ee(Ve.call(be,At,{L:{value:{count:ut.count,ba:ut.ba,da:ut.da,O:ut.O,P:ut.P,S:ut.S,W:ut.W}}})),Ee.L.count.value+=1,Ee.L.ba=!1,Ee},delete(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");di(this);var Ee=this.L;--Ee.count.value,Ee.count.value===0&&(Ee.S?Ee.W.Y(Ee.S):Ee.P.M.Y(Ee.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");return this.L.ba=!0,this}});let ne=Symbol.dispose;ne&&(oe[ne]=oe.delete)})(),Object.assign(ro.prototype,{sa(oe){return this.na&&(oe=this.na(oe)),oe},ka(oe){var ne;(ne=this.Y)==null||ne.call(this,oe)},X:ye,N:function(oe){function ne(){return this.ga?lo(this.M.$,{P:this.xa,O:Ee,W:this,S:oe}):lo(this.M.$,{P:this,O:oe})}var Ee=this.sa(oe);if(!Ee)return this.ka(oe),null;var be=xn(this.M,Ee);if(be!==void 0)return be.L.count.value===0?(be.L.O=Ee,be.L.S=oe,be.clone()):(be=be.clone(),this.ka(oe),be);if(be=this.M.ra(Ee),be=Ct[be],!be)return ne.call(this);be=this.fa?be.oa:be.pointerType;var Ve=pt(Ee,this.M,be.M);return Ve===null?ne.call(this):this.ga?lo(be.M.$,{P:be,O:Ve,W:this,S:oe}):lo(be.M.$,{P:be,O:Ve})}}),i.print&&(A=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(m=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var c$,S5,ug,zSe={x:()=>Q(""),q:oe=>{var ne=ge[oe];delete ge[oe];var Ee=ne.ia,be=ne.Y,Ve=ne.la,At=Ve.map(ut=>ut.va).concat(Ve.map(ut=>ut.Ba));Ge([oe],At,ut=>{var xt={};return Ve.forEach((wn,Hn)=>{var dn=ut[Hn],ss=wn.ta,pu=wn.ua,Hc=ut[Hn+Ve.length],Wc=wn.Aa,hf=wn.Ca;xt[wn.qa]={read:wA=>dn.N(ss(pu,wA)),write:(wA,OS)=>{var gu=[];Wc(hf,wA,Hc.T(gu,OS)),fe(gu)},optional:ut[Hn].optional}}),[{name:ne.name,N:wn=>{var Hn={},dn;for(dn in xt)Hn[dn]=xt[dn].read(wn);return be(wn),Hn},T:(wn,Hn)=>{for(var dn in xt)if(!(dn in Hn||xt[dn].optional))throw new TypeError(`Missing field: "${dn}"`);var ss=Ee();for(dn in xt)xt[dn].write(ss,Hn[dn]);return wn!==null&&wn.push(be,ss),ss},X:ye,V:be}]})},n:(oe,ne,Ee,be,Ve)=>{ne=qe(ne),be=be===0n;let At=ut=>ut;if(be){let ut=8*Ee;At=xt=>BigInt.asUintN(ut,xt),Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(ut,xt)=>(typeof xt=="number"&&(xt=BigInt(xt)),xt),X:Wt(ne,Ee,!be),V:null})},B:(oe,ne,Ee,be)=>{ne=qe(ne),tn(oe,{name:ne,N:function(Ve){return!!Ve},T:function(Ve,At){return At?Ee:be},X:function(Ve){return this.N(S[Ve])},V:null})},j:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn,ss,pu)=>{dn=qe(dn),At=Vn(Ve,At),xt&&(xt=Vn(ut,xt)),Hn&&(Hn=Vn(wn,Hn)),pu=Vn(ss,pu);var Hc=ya(dn);Qo(Hc,function(){Wo(`Cannot construct ${dn} due to unbound types`,[be])}),Ge([oe,ne,Ee],be?[be]:[],Wc=>{if(Wc=Wc[0],be)var hf=Wc.M,wA=hf.$;else wA=Tt.prototype;Wc=ii(dn,function(...B5){if(Object.getPrototypeOf(this)!==OS)throw new tt(`Use 'new' to construct ${dn}`);if(gu.Z===void 0)throw new tt(`${dn} has no accessible constructor`);var l$=gu.Z[B5.length];if(l$===void 0)throw new tt(`Tried to invoke ctor of ${dn} with invalid number of parameters (${B5.length}) - expected (${Object.keys(gu.Z).toString()}) parameters instead!`);return l$.apply(this,B5)});var OS=Object.create(wA,{constructor:{value:Wc}});Wc.prototype=OS;var gu=new mr(dn,Wc,OS,pu,hf,At,xt,Hn);if(gu.U){var FS;(FS=gu.U).ja??(FS.ja=[]),gu.U.ja.push(gu)}return hf=new ro(dn,gu,!0,!1,!1),FS=new ro(dn+"*",gu,!1,!1,!1),wA=new ro(dn+" const*",gu,!1,!0,!1),Ct[oe]={pointerType:FS,oa:wA},$s(Hc,Wc),[hf,FS,wA]})},g:(oe,ne,Ee,be,Ve,At)=>{var ut=Ca(ne,Ee);Ve=Vn(be,Ve),Ge([],[oe],xt=>{xt=xt[0];var wn=`constructor ${xt.name}`;if(xt.M.Z===void 0&&(xt.M.Z=[]),xt.M.Z[ne-1]!==void 0)throw new tt(`Cannot register multiple constructors with identical number of parameters (${ne-1}) for class '${xt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return xt.M.Z[ne-1]=()=>{Wo(`Cannot construct ${xt.name} due to unbound types`,ut)},Ge([],ut,Hn=>(Hn.splice(1,0,null),xt.M.Z[ne-1]=jo(wn,Hn,null,Ve,At),[])),[]})},b:(oe,ne,Ee,be,Ve,At,ut,xt,wn)=>{var Hn=Ca(Ee,be);ne=qe(ne),ne=df(ne),At=Vn(Ve,At),Ge([],[oe],dn=>{function ss(){Wo(`Cannot call ${pu} due to unbound types`,Hn)}dn=dn[0];var pu=`${dn.name}.${ne}`;ne.startsWith("@@")&&(ne=Symbol[ne.substring(2)]),xt&&dn.M.ya.push(ne);var Hc=dn.M.$,Wc=Hc[ne];return Wc===void 0||Wc.R===void 0&&Wc.className!==dn.name&&Wc.aa===Ee-2?(ss.aa=Ee-2,ss.className=dn.name,Hc[ne]=ss):(Ro(Hc,ne,pu),Hc[ne].R[Ee-2]=ss),Ge([],Hn,hf=>(hf=jo(pu,hf,dn,At,ut,wn),Hc[ne].R===void 0?(hf.aa=Ee-2,Hc[ne]=hf):Hc[ne].R[Ee-2]=hf,[])),[]})},z:oe=>tn(oe,qa),r:(oe,ne,Ee,be)=>{function Ve(){}ne=qe(ne),Ve.values={},tn(oe,{name:ne,constructor:Ve,N:function(At){return this.constructor.values[At]},T:(At,ut)=>ut.value,X:Ka(ne,Ee,be),V:null}),Qo(ne,Ve)},d:(oe,ne,Ee)=>{var be=Sr(oe,"enum");ne=qe(ne),oe=be.constructor,be=Object.create(be.constructor.prototype,{value:{value:Ee},constructor:{value:ii(`${be.name}_${ne}`,function(){})}}),oe.values[Ee]=be,oe[ne]=be},m:(oe,ne,Ee)=>{ne=qe(ne),tn(oe,{name:ne,N:be=>be,T:(be,Ve)=>Ve,X:Bl(ne,Ee),V:null})},l:(oe,ne,Ee,be,Ve,At,ut)=>{var xt=Ca(ne,Ee);oe=qe(oe),oe=df(oe),Ve=Vn(be,Ve),Qo(oe,function(){Wo(`Cannot call ${oe} due to unbound types`,xt)},ne-1),Ge([],xt,wn=>(wn=[wn[0],null].concat(wn.slice(1)),$s(oe,jo(oe,wn,null,Ve,At,ut),ne-1),[]))},c:(oe,ne,Ee,be,Ve)=>{ne=qe(ne);let At=xt=>xt;if(be===0){var ut=32-8*Ee;At=xt=>xt<<ut>>>ut,Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(xt,wn)=>wn,X:Wt(ne,Ee,be!==0),V:null})},a:(oe,ne,Ee)=>{function be(At){return new Ve(b.buffer,N[At+4>>2],N[At>>2])}var Ve=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][ne];Ee=qe(Ee),tn(oe,{name:Ee,N:be,X:be},{wa:!0})},h:oe=>{tn(oe,Dl)},A:(oe,ne)=>{ne=qe(ne),tn(oe,{name:ne,N(Ee){var be=(be=Ee+4)?cn.decode(S.subarray(be,Se(S,be,N[Ee>>2],!0))):"";return ug(Ee),be},T(Ee,be){be instanceof ArrayBuffer&&(be=new Uint8Array(be));var Ve=typeof be=="string";if(!(Ve||ArrayBuffer.isView(be)&&be.BYTES_PER_ELEMENT==1))throw new tt("Cannot pass non-string to std::string");var At=Ve?wo(be):be.length,ut=S5(4+At+1),xt=ut+4;return N[ut>>2]=At,Ve?ta(be,xt,At+1):S.set(be,xt),Ee!==null&&Ee.push(ug,ut),ut},X:ye,V(Ee){ug(Ee)}})},f:(oe,ne,Ee)=>{if(Ee=qe(Ee),ne===2)var be=_n,Ve=er,At=Ea;else be=Cs,Ve=dc,At=Pd;tn(oe,{name:Ee,N:ut=>{var xt=be(ut+4,N[ut>>2]*ne,!0);return ug(ut),xt},T:(ut,xt)=>{if(typeof xt!="string")throw new tt(`Cannot pass non-string to C++ string type ${Ee}`);var wn=At(xt),Hn=S5(4+wn+ne);return N[Hn>>2]=wn/ne,Ve(xt,Hn+4,wn+ne),ut!==null&&ut.push(ug,Hn),Hn},X:ye,V(ut){ug(ut)}})},i:(oe,ne,Ee,be,Ve,At)=>{ge[oe]={name:qe(ne),ia:Vn(Ee,be),Y:Vn(Ve,At),la:[]}},e:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn)=>{ge[oe].la.push({qa:qe(ne),va:Ee,ta:Vn(be,Ve),ua:At,Ba:ut,Aa:Vn(xt,wn),Ca:Hn})},C:(oe,ne)=>{ne=qe(ne),tn(oe,{ma:!0,name:ne,N:()=>{},T:()=>{}})},p:(oe,ne,Ee)=>{var[be,...Ve]=Ia(oe,ne);ne=be.T.bind(be);var At=Ve.map(wn=>wn.X.bind(wn));oe--;var ut={toValue:vd};switch(oe=At.map((wn,Hn)=>{var dn=`argFromPtr${Hn}`;return ut[dn]=wn,`${dn}(args${Hn?"+"+8*Hn:""})`}),Ee){case 0:var xt="toValue(handle)";break;case 2:xt="new (toValue(handle))";break;case 3:xt="";break;case 1:ut.getStringOrSymbol=USe,xt="toValue(handle)[getStringOrSymbol(methodName)]"}return xt+=`(${oe})`,be.ma||(ut.toReturnWire=ne,ut.emval_returnValue=gR,xt=`return emval_returnValue(toReturnWire, destructorsRef, ${xt})`),xt=`return function (handle, methodName, destructorsRef, args) {
|
||
${xt}
|
||
}`,Ee=new Function(Object.keys(ut),xt)(...Object.values(ut)),xt=`methodCaller<(${Ve.map(wn=>wn.name)}) => ${be.name}>`,LS(ii(xt,Ee))},E:Qs,o:(oe,ne,Ee,be,Ve)=>TA[oe](ne,Ee,be,Ve),D:oe=>{var ne=vd(oe);fe(ne),Qs(oe)},s:(oe,ne,Ee,be)=>{var Ve=new Date().getFullYear(),At=new Date(Ve,0,1).getTimezoneOffset();Ve=new Date(Ve,6,1).getTimezoneOffset(),N[oe>>2]=60*Math.max(At,Ve),P[ne>>2]=+(At!=Ve),ne=ut=>{var xt=Math.abs(ut);return`UTC${0<=ut?"-":"+"}${String(Math.floor(xt/60)).padStart(2,"0")}${String(xt%60).padStart(2,"0")}`},oe=ne(At),ne=ne(Ve),Ve<At?(ta(oe,Ee,17),ta(ne,be,17)):(ta(oe,be,17),ta(ne,Ee,17))},y:oe=>{var ne=S.length;if(oe>>>=0,2147483648<oe)return!1;for(var Ee=1;4>=Ee;Ee*=2){var be=ne*(1+.2/Ee);be=Math.min(be,oe+100663296);e:{be=(Math.min(2147483648,65536*Math.ceil(Math.max(oe,be)/65536))-I.buffer.byteLength+65535)/65536|0;try{I.grow(be),M();var Ve=1;break e}catch{}Ve=void 0}if(Ve)return!0}return!1},t:(oe,ne)=>{var Ee=0,be=0,Ve;for(Ve of a$()){var At=ne+Ee;N[oe+be>>2]=At,Ee+=ta(Ve,At,1/0)+1,be+=4}return 0},u:(oe,ne)=>{var Ee=a$();N[oe>>2]=Ee.length,oe=0;for(var be of Ee)oe+=wo(be)+1;return N[ne>>2]=oe,0},v:()=>52,w:function(){return 70},k:(oe,ne,Ee,be)=>{for(var Ve=0,At=0;At<Ee;At++){var ut=N[ne>>2],xt=N[ne+4>>2];ne+=8;for(var wn=0;wn<xt;wn++){var Hn=oe,dn=S[ut+wn],ss=GSe[Hn];dn===0||dn===10?(Hn=Hn===1?A:g,dn=Se(ss,0),dn=cn.decode(ss.buffer?ss.subarray(0,dn):new Uint8Array(ss.slice(0,dn))),Hn(dn),ss.length=0):ss.push(dn)}Ve+=xt}return N[be>>2]=Ve,0}},k0=await async function(){var oe;function ne(be){var Ve;return k0=be.exports,I=k0.F,M(),ea=k0.H,be=k0,c$=be.I,i._malloc=S5=be.J,i._free=ug=be.K,O--,(Ve=i.monitorRunDependencies)==null||Ve.call(i,O),O==0&&U&&(be=U,U=null,be()),k0}O++,(oe=i.monitorRunDependencies)==null||oe.call(i,O);var Ee={a:zSe};return i.instantiateWasm?new Promise(be=>{i.instantiateWasm(Ee,(Ve,At)=>{be(ne(Ve))})}):(z??(z=he("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C0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkGU6gEoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEG06gFqIgIgACgCvOoBIgAoAggiBUYEQEGM6gEgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQbTqAWohAUGg6gEoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEGM6gEgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBBoOoBIAc2AgBBlOoBIAU2AgAMCwtBkOoBKAIAIgtFDQEgC2hBAnQoArzsASICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQZDqASgCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdCgCvOwBIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0KAK87AEhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBlOoBKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkGU6gEoAgAiBU0EQEGg6gEoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQZTqASABNgIAQaDqASACNgIAIABBCGohAAwJCyAGQZjqASgCACICSQRAQZjqASACIAZrIgE2AgBBpOoBQaTqASgCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QeTtASgCAARAQeztASgCAAwBC0Hw7QFCfzcCAEHo7QFCgKCAgICABDcCAEHk7QEgCkEMakFwcUHYqtWqBXM2AgBB+O0BQQA2AgBByO0BQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBxO0BKAIAIgUEQEG87QEoAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBByO0BLQAAQQRxRQRAAkACQAJAAkBBpOoBKAIAIgUEQEHM7QEhAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEKUBIgJBf0YNAyABIQRB6O0BKAIAIgBBAWsiBSACcQRAIAEgAmsgAiAFakEAIABrcWohBAsgBCAGTQ0DQcTtASgCACIABEBBvO0BKAIAIgUgBGoiByAFTSAAIAdJcg0ECyAEEKUBIgAgAkcNAQwFCyAEIAJrIAdxIgQQpQEiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtB7O0BKAIAIgIgAyAEa2pBACACa3EiAhClAUF/Rg0BIAIgBGohBCAAIQIMAwsgAkF/Rw0CC0HI7QFByO0BKAIAQQRyNgIACyABEKUBIgJBf0ZBABClASIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0G87QFBvO0BKAIAIARqIgA2AgBBwO0BKAIAIABJBEBBwO0BIAA2AgALAkBBpOoBKAIAIgMEQEHM7QEhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQZzqASgCACIAQQAgACACTRtFBEBBnOoBIAI2AgALQQAhAEHQ7QEgBDYCAEHM7QEgAjYCAEGs6gFBfzYCAEGw6gFB5O0BKAIANgIAQdjtAUEANgIAA0AgAEEDdCIBIAFBtOoBaiIFNgK86gEgASAFNgLA6gEgAEEBaiIAQSBHDQALQZjqASAEQShrIgBBeCACa0EHcSIBayIFNgIAQaTqASABIAJqIgE2AgAgASAFQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQaTqASADQXggA2tBB3EiAGoiATYCAEGY6gFBmOoBKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQajqAUH07QEoAgA2AgAMAwtBACEADAYLQQAhAAwEC0Gc6gEoAgAgAksEQEGc6gEgAjYCAAsgAiAEaiEFQcztASEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBzO0BIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQZjqASAEQShrIgBBeCACa0EHcSIBayIHNgIAQaTqASABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQdTtASkCADcCECABQcztASkCADcCCEHU7QEgAUEIajYCAEHQ7QEgBDYCAEHM7QEgAjYCAEHY7QFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBtOoBaiEAAn9BjOoBKAIAIgFBASACQQN2dCICcUUEQEGM6gEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QbzsAWohAQJAAkBBkOoBKAIAIgVBASAAdCIEcUUEQEGQ6gEgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQZjqASgCACIAIAZNDQBBmOoBIAAgBmsiATYCAEGk6gFBpOoBKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0GI6gFBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBpOoBKAIAIARGBEBBpOoBIAM2AgBBmOoBQZjqASgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0Gg6gEoAgAgBEYEQEGg6gEgAzYCAEGU6gFBlOoBKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEGM6gFBjOoBKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdCIBKAK87AEgBEYEQCABQbzsAWogAjYCACACDQFBkOoBQZDqASgCAEF+IAB3cTYCAAwCCwJAIAQgBigCEEYEQCAGIAI2AhAMAQsgBiACNgIUCyACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H/AU0EQCAHQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgB0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H///8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QbzsAWohAAJAAkBBkOoBKAIAIgFBASACdCIFcUUEQEGQ6gEgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdCICKAK87AEgBUYEQCACQbzsAWogADYCACAADQFBkOoBIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgA0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QbzsAWohAQJAAkAgB0EBIAB0IgJxRQRAQZDqASACIAdyNgIAIAEgBDYCACAEIAE2AhgMAQsgA0EZIABBAXZrQQAgAEEfRxt0IQAgASgCACEBA0AgASICKAIEQXhxIANGDQIgAEEddiEBIABBAXQhACACIAFBBHFqIgcoAhAiAQ0ACyAHIAQ2AhAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgBUEIaiEADAELAkAgCUUNAAJAIAIoAhwiAUECdCIFKAK87AEgAkYEQCAFQbzsAWogADYCACAADQFBkOoBIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQbTqAWohAEGg6gEoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEGM6gEgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0Gg6gEgBTYCAEGU6gEgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsIACAAQQAQPAsVACAAIAE2AgAgACACKAIANgIEIAALCgAgACgCABC9AwsLACAAKAIAEMMDwAsXACAAEEcEQCAAKAIAIAAQfhCpAQsgAAs7AQJ/IwBBEGsiASQAIAEgADYCDCABKAIMIgAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0LIAFBEGokAAstACACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAAoAgQgASgCBBDQAUULIQEBfyAAKAIAIQIgACABNgIAIAIEQCACIAAoAgQRAgALCwYAEMoDAAsNACAAKAIAELwDGiAACw0AIAAoAgAQnQIaIAALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxEAIAAgASAAKAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUN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C14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARB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AxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAA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BEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkACfwJAIAFFBEAgAw0BQQAPC0F+IAJFDQEaAkAgAwRAIAIhBAwBCyABLQAAIgPAIgRBAE4EQCAABEAgACADNgIACyAEQQBHDwtB3OEBKAIAKAIARQRAQQEgAEUNAxogACAEQf+/A3E2AgBBAQ8LIANBwgFrIgNBMksNASADQQJ0KAKQgQEhAyACQQFrIgRFDQMgAUEBaiEBCyABLQAAIgZBA3YiB0EQayADQRp1IAdqckEHSw0AA0AgBEEBayEEIAZB/wFxQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiASwAACIGQUBIDQALCyAFQQA2AgBBiOoBQRk2AgBBfwsPCyAFIAM2AgBBfgsNACAAKAIAIAEoAgBJCwcAIABBC0kLJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBA9AAsLBwAgAEEISwscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwwAIABBDGoQ2gEgAAsIACAAKAIQRQsIACAAEIkCGgusCwEHfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBAnFFDQEgACgCACICIAFqIQECQAJAAkAgACACayIAQaDqASgCAEcEQCAAKAIMIQMgAkH/AU0EQCADIAAoAggiBEcNAkGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAAoAhghBiAAIANHBEAgACgCCCICIAM2AgwgAyACNgIIDAQLIAAoAhQiBAR/IABBFGoFIAAoAhAiBEUNAyAAQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQZTqASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAwCC0EAIQMLIAZFDQACQCAAKAIcIgJBAnQiBCgCvOwBIABGBEAgBEG87AFqIAM2AgAgAw0BQZDqAUGQ6gEoAgBBfiACd3E2AgAMAgsCQCAAIAYoAhBGBEAgBiADNgIQDAELIAYgAzYCFAsgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGk6gEoAgAgBUYEQEGk6gEgADYCAEGY6gFBmOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBoOoBKAIARw0GQZTqAUEANgIAQaDqAUEANgIADwtBoOoBKAIAIgggBUYEQEGg6gEgADYCAEGU6gFBlOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAJBeHEgAWohASAFKAIMIQMgAkH/AU0EQCAFKAIIIgQgA0YEQEGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAQgAzYCDCADIAQ2AggMBAsgBSgCGCEGIAMgBUcEQCAFKAIIIgIgAzYCDCADIAI2AggMAwsgBSgCFCIEBH8gBUEUagUgBSgCECIERQ0CIAVBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACEDCyAGRQ0AAkAgBSgCHCICQQJ0IgQoArzsASAFRgRAIARBvOwBaiADNgIAIAMNAUGQ6gFBkOoBKAIAQX4gAndxNgIADAILAkAgBSAGKAIQRgRAIAYgAzYCEAwBCyAGIAM2AhQLIANFDQELIAMgBjYCGCAFKAIQIgIEQCADIAI2AhAgAiADNgIYCyAFKAIUIgJFDQAgAyACNgIUIAIgAzYCGAsgACABQQFyNgIEIAAgAWogATYCACAAIAhHDQBBlOoBIAE2AgAPCyABQf8BTQRAIAFBeHFBtOoBaiECAn9BjOoBKAIAIgNBASABQQN2dCIBcUUEQEGM6gEgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG87AFqIQICQAJAQZDqASgCACIEQQEgA3QiB3FFBEBBkOoBIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiBygCECICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC40IAQt/IABFBEAgARA0DwsgAUFATwRAQYjqAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBCgCBCIJQXhxIQgCQCAJQQNxRQRAIAZBgAJJDQEgBkEEaiAITQRAIAQhAiAIIAZrQeztASgCAEEBdE0NAgtBAAwCCyAEIAhqIQcCQCAGIAhNBEAgCCAGayIDQRBJDQEgBCAGIAlBAXFyQQJyNgIEIAQgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ2wEMAQtBpOoBKAIAIAdGBEBBmOoBKAIAIAhqIgggBk0NAiAEIAYgCUEBcXJBAnI2AgQgBCAGaiIDIAggBmsiAkEBcjYCBEGY6gEgAjYCAEGk6gEgAzYCAAwBC0Gg6gEoAgAgB0YEQEGU6gEoAgAgCGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBCAGIAlBAXFyQQJyNgIEIAQgBmoiCCACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAlBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECQQAhCAtBoOoBIAg2AgBBlOoBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAIaiILIAZJDQEgCyAGayEMIAcoAgwhBQJAIANB/wFNBEAgBygCCCICIAVGBEBBjOoBQYzqASgCAEF+IANBA3Z3cTYCAAwCCyACIAU2AgwgBSACNgIIDAELIAcoAhghCgJAIAUgB0cEQCAHKAIIIgIgBTYCDCAFIAI2AggMAQsCQCAHKAIUIgIEfyAHQRRqBSAHKAIQIgJFDQEgB0EQagshCANAIAghAyACIgVBFGohCCACKAIUIgINACAFQRBqIQggBSgCECICDQALIANBADYCAAwBC0EAIQULIApFDQACQCAHKAIcIgNBAnQiAigCvOwBIAdGBEAgAkG87AFqIAU2AgAgBQ0BQZDqAUGQ6gEoAgBBfiADd3E2AgAMAgsCQCAHIAooAhBGBEAgCiAFNgIQDAELIAogBTYCFAsgBUUNAQsgBSAKNgIYIAcoAhAiAgRAIAUgAjYCECACIAU2AhgLIAcoAhQiAkUNACAFIAI2AhQgAiAFNgIYCyAMQQ9NBEAgBCAJQQFxIAtyQQJyNgIEIAQgC2oiAiACKAIEQQFyNgIEDAELIAQgBiAJQQFxckECcjYCBCAEIAZqIgMgDEEDcjYCBCAEIAtqIgIgAigCBEEBcjYCBCADIAwQ2wELIAQhAgsgAgsiAgRAIAJBCGoPCyABEDQiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxBxGiAAEC0gBAsWACAARQRAQQAPC0GI6gEgADYCAEF/C30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEN8BDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAwBBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC+IBAQJ/IAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB/wFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0BBgIKECCAAKAIAIANzIgRrIARyQYCBgoR4cUGAgYKEeEcNAiAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACwIACwQAQQELoBABFn8jAEFAaiIGQgA3AzAgBkIANwM4IAZCADcDICAGQgA3AygCQAJAAn8CQAJ/IAIEQCACQQRPBEAgAUEGaiEIIAFBBGohDSABQQJqIQsgAkF8cSEMA0AgBkEgaiIPIAEgCkEBdCIJai8BAEEBdGoiESARLwEAQQFqOwEAIAkgC2ovAQBBAXQgD2oiESARLwEAQQFqOwEAIAkgDWovAQBBAXQgD2oiESARLwEAQQFqOwEAIAggCWovAQBBAXQgD2oiCSAJLwEAQQFqOwEAIApBBGohCiAOQQRqIg4gDEcNAAsLIAJBA3EiCQRAA0AgBkEgaiABIApBAXRqLwEAQQF0aiIIIAgvAQBBAWo7AQAgCkEBaiEKIAdBAWoiByAJRw0ACwsgBCgCACIKIAYvAT4iEEUNARpBDyELDAILIAQoAgALIQpBACEQIAYvATwEQEEOIQsMAQsgBi8BOgRAQQ0hCwwBCyAGLwE4BEBBDCELDAELIAYvATYEQEELIQsMAQsgBi8BNARAQQohCwwBCyAGLwEyBEBBCSELDAELIAYvATAEQEEIIQsMAQsgBi8BLgRAQQchCwwBCyAGLwEsBEBBBiELDAELIAYvASoEQEEFIQsMAQsgBi8BKARAQQQhCwwBCyAGLwEmBEBBAyELDAELIAYvASQEQEECIQsMAQsgBi8BIkUEQCADIAMoAgAiAEEEajYCACAAQcACNgEAIAMgAygCACIAQQRqNgIAIABBwAI2AQBBASEMDAMLIApBAEchCUEBIQtBASEKQQAMAQsgCiALIAogC0kbIQlBASEKAkADQCAGQSBqIApBAXRqLwEADQEgCkEBaiIKIAtHDQALIAshCgtBAQshD0F/IQcgBi8BIiIIQQJLDQFBBCAIQQF0a0H+/wNxIAYvASQiDWsiDkEASA0BIA5BAXQgBi8BJiIOayIMQQBIDQEgDEEBdCAGLwEoIgxrIhFBAEgNASARQQF0IAYvASoiEWsiGEEASA0BIBhBAXQgBi8BLCIYayISQQBIDQEgEkEBdCAGLwEuIhJrIhNBAEgNASATQQF0IAYvATAiE2siFEEASA0BIBRBAXQgBi8BMiIUayIVQQBIDQEgFUEBdCAGLwE0IhVrIhdBAEgNASAXQQF0IAYvATYiF2siFkEASA0BIBZBAXQgBi8BOCIWayIZQQBIDQEgGUEBdCAGLwE6IhlrIhpBAEgNASAaQQF0IAYvATwiGmsiG0EASA0BIBtBAXQiGyAQSSAQIBtHQQAgAEUgD3Ibcg0BIAkgCkshEEEAIQcgBkEAOwECIAYgCDsBBCAGIAggDWoiCDsBBiAGIAggDmoiCDsBCCAGIAggDGoiCDsBCiAGIAggEWoiCDsBDCAGIAggGGoiCDsBDiAGIAggEmoiCDsBECAGIAggE2oiCDsBEiAGIAggFGoiCDsBFCAGIAggFWoiCDsBFiAGIAggF2oiCDsBGCAGIAggFmoiCDsBGiAGIAggGWoiCDsBHCAGIAggGmo7AR4CQCACRQ0AIAJBAUcEQCACQX5xIQhBACEOA0AgASAHQQF0ai8BACINBEAgBiANQQF0aiINIA0vAQAiDUEBajsBACAFIA1BAXRqIAc7AQALIAEgB0EBciINQQF0ai8BACIMBEAgBiAMQQF0aiIMIAwvAQAiDEEBajsBACAFIAxBAXRqIA07AQALIAdBAmohByAOQQJqIg4gCEcNAAsLIAJBAXFFDQAgASAHQQF0ai8BACICRQ0AIAYgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAHOwEACyAJIAogEBshDEEUIRJBACEXIAUiCCERQQAhEwJAAkACQCAADgICAAELQQEhByAMQQlLDQNBgQIhEkHA7QAhEUGA7QAhCEEBIRMMAQsgAEECRiEXQQAhEkHA7gAhEUGA7gAhCCAAQQJHBEAMAQtBASEHIAxBCUsNAgtBASAMdCIUQQFrIRkgAygCACEVQQAhAiAMIQlBACEAQQAhEEF/IQ0DQEEBIAl0IRgCQANAAn9BACASIAUgAkEBdGovAQAiCUEBaksNABogCSASSQRAQQAhCUHgAAwBCyAIIAkgEmtBAXQiB2ovAQAhCSAHIBFqLQAACyEOQX8gCiAAayIPdCEaIBUgECAAdkECdGohGyAYIQcDQCAbIAcgGmoiB0ECdGoiFiAJOwECIBYgDzoAASAWIA46AAAgBw0AC0EBIApBAWt0IQ4DQCAOIgdBAXYhDiAHIBBxDQALIAZBIGogCkEBdGoiCSAJLwEAQQFrIgk7AQAgB0EBayAQcSAHakEAIAcbIRAgAkEBaiECIAlB//8DcUUEQCAKIAtGDQIgASAFIAJBAXRqLwEAQQF0ai8BACEKCyAKIAxNDQAgECAZcSIOIA1GDQALQQEgCiAAIAwgABsiAGsiCXQhDyAKIAtJBEAgAEEBaiEWIAsgAGshDSAKIQcCQANAIA8gBkEgaiAHQQF0ai8BAGsiB0EATA0BIAdBAXQhDyAJIBZqIQcgCUEBaiEJIAcgC0kNAAsgDSEJC0EBIAl0IQ8LQQEhByATIA8gFGoiFEHUBktxIBcgFEHQBEtxcg0DIAMoAgAiDSAOQQJ0aiIHIAw6AAEgByAJOgAAIAcgFSAYQQJ0aiIVIA1rQQJ2OwECIA4hDQwBCwsgEARAIBUgEEECdGoiAEEAOwECIAAgDzoAASAAQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDDYCAEEAIQcLIAcLqgEBA38gASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggPCyABKAIAIQQgASgCBCECIwBBEGsiAyQAAkACQAJAIAIQ1AEEQCAAIgEgAhBQDAELIAJB9////wdLDQEgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQTSADQRBqJAAMAQsQWwALC0sBAn8gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBhDoASEGCyAAKAIAIgAgASACIAMgBmogBEECIAdBAnEbIAUgACgCACgCFBEKAAsgAAJAIAEgACgCBEcNACAAKAIcQQFGDQAgACACNgIcCwuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsKACAAIAFqKAIAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLrQEBA38jAEEQayICJAAgAiABNgIMAkACQAJ/IAAQRyIERQRAQQEhASAAEF4MAQsgABB+QQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDoAiAAECMaDAELIAAQIxogBA0AIAAiASADQQFqEFAMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAJBDGoQViACQQA2AgggAEEEaiACQQhqEFYgAkEQaiQACwUAED0ACycBAX8gACgCACEBIwBBEGsiACQAIAAgATYCDCAAKAIMIABBEGokAAsXACAAKAIIEC5HBEAgACgCCBCgAwsgAAs0AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQYyAAIAEQlgIhABBiIANBEGokACAAC40BAQN/IAEoAgQgACgCACICIAAoAgQiA2tqIQQgAyACayIDBEAgBCACIAP8CgAACyABIAQ2AgQgACAAKAIAIgI2AgQgACABKAIENgIAIAEgAjYCBCAAKAIEIQIgACABKAIINgIEIAEgAjYCCCAAKAIIIQIgACABKAIMNgIIIAEgAjYCDCABIAEoAgQ2AgALMwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFBAnRqNgIMIAIoAgwgAkEQaiQACxkBAX9BASEBIAAQRwR/IAAQfkEBawVBAQsLBwAgAEEEagswAQF/IwBBEGsiAiQAIAIgACgCADYCDCACIAIoAgwgAWo2AgwgAigCDCACQRBqJAAL9wEBBX8jAEEQayIGJAAgBkEMaiIIIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wcgAWsgAk8EQCAAECMhByAFQQRqIgkgAUHz////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAkgBUEMahCgASgCABCfAUEBagVB9////wcLEJ4BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQTQsgAyAERwRAIAIgBGogBCAHaiADIARrEE0LIAFBCkcEQCAHEIsCCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCBC7ASAGQRBqJAALCgAgASAAa0ECdQsPACAAIAAoAgBBBGo2AgALIAEBfyMAQRBrIgEkACABQQxqIAAQVSgCACABQRBqJAALDwAgACAAKAIAQQFqNgIAC1kBAn8jAEEQayIDJAAgAigCACEEIAACfyABIABrQQJ1IgIEQANAIAAgBCAAKAIARg0CGiAAQQRqIQAgAkEBayICDQALC0EACyIAIAEgABsQjgEgA0EQaiQAC/gDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtB8ABqIAxBDGoQ+QEgC2siAEECdSIGQRtKDQEgBkHQnwFqLAAAIQUCQAJAIABBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLAAAEJ0BIAIsAAAQnQFHDQYLIAQgAUEBajYCACABIAU6AAAMAwsgAkHQADoAAAwBCyAFEJ0BIgAgAiwAAEcNACACIAAQsQM6AAAgAS0AAEEBRw0AIAFBADoAACAHEB9FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAZBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALUAECfyMAQRBrIgYkACAGQQxqIgUgARAnIAUQSEHQnwFB7J8BIAIQbyADIAUQmQEiARB4NgIAIAQgARBZNgIAIAAgARBYIAUQJSAGQRBqJAALGAAgAEGQ9wA2AgAgAEEgahAgGiAAEJQCCy8BAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDgASIAIAEgABsQjgEgA0EQaiQAC/ADAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtBHGogDEEPahD9ASALayIFQRtKDQEgBUHQnwFqLAAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQEF/IQAgAUEBaywAABCdASACLAAAEJ0BRw0GCyAEIAFBAWo2AgAgASAGOgAADAMLIAJB0AA6AAAMAQsgBhCdASIAIAIsAABHDQAgAiAAELEDOgAAIAEtAABBAUcNACABQQA6AAAgBxAfRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhACAFQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC1ABAn8jAEEQayIGJAAgBkEMaiIFIAEQJyAFEElB0J8BQeyfASACEHkgAyAFEJsBIgEQeDoAACAEIAEQWToAACAAIAEQWCAFECUgBkEQaiQAC34CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQZCAEIAUgA0EBEKgDIAQpAwghBiAEKQMAIQcgAgRAIAIgBCgCiAEgASAEKAIUIAQoAjxramo2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAsJACAAQQQQqAILDQAgACABIAJCfxCEAgucAQEDf0E1IQECQCAAKAIcIgIgACgCGCIDQQZqQQdwa0EHakEHbiADIAJrIgJB8QJqQQdwQQNJaiIDQTVHBEAgAyIBDQFBNCEBAkACQCACQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEJ0DRQ0CC0E1DwsCQAJAIAJB8wJqQQdwQQNrDgIAAgELIAAoAhQQnQMNAQtBASEBCyABC5sEAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0GI6gFBHDYCAEIAIQMMAgsgACEEAkADQCAFwBB9RQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgZBK2sOAwABAAELQX9BACAGQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkACQCAELQAAIgZBMGsiBUH/AXFBCkkNACAGQeEAa0H/AXFBGU0EQCAGQdcAayEFDAELIAZBwQBrQf8BcUEZSw0BIAZBN2shBQsgCiAFQf8BcUwNACAIIAxCACALQgAQQEEBIQYCQCAIKQMIQgBSDQAgCyAMfiINIAWtQv8BgyIOQn+FVg0AIA0gDnwhC0EBIQkgAiEGCyAEQQFqIQQgBiECDAELCyABBEAgASAEIAAgCRs2AgALAkACQCACBEBBiOoBQcQANgIAIAdBACADQgGDIgxQGyEHIAMhCwwBCyADIAtWDQEgA0IBgyEMCyAMpyAHckUEQEGI6gFBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGI6gFBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuIAQEDfyABKAIEIAAoAgQgACgCACIEayICayEDIAIEQCADIAQgAvwKAAALIAEgAzYCBCAAIAAoAgAiAjYCBCAAIAEoAgQ2AgAgASACNgIEIAAoAgQhAiAAIAEoAgg2AgQgASACNgIIIAAoAgghAiAAIAEoAgw2AgggASACNgIMIAEgASgCBDYCAAuaAwEIfwJAIAAiAUEDcQRAA0AgAS0AACICRSACQT1Gcg0CIAFBAWoiAUEDcQ0ACwsCQAJAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhHDQADQEGAgoQIIANBvfr06QNzIgJrIAJyQYCBgoR4cUGAgYKEeEcNASABKAIEIQMgAUEEaiICIQEgA0GAgoQIIANrckGAgYKEeHFBgIGChHhGDQALDAELIAEhAgsDQCACIgEtAAAiA0UNASABQQFqIQIgA0E9Rw0ACwsgACABRgRAQQAPCwJAIAAgASAAayIDai0AAA0AQYDuASgCACIERQ0AIAQoAgAiAUUNAANAAkACfyAAIQJBACADIgZFDQAaIAAtAAAiBQR/AkADQCAFIAEtAAAiB0cgB0VyDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQUgAkEBaiECIAUNAAtBACEFCyAFBUEACyABLQAAawtFBEAgBCgCACADaiIBLQAAQT1GDQELIAQoAgQhASAEQQRqIQQgAQ0BDAILCyABQQFqIQgLIAgLSgEBfyAAIAM2AhAgAEEANgIMIAEEQCABELMCIQQLIAAgBDYCACAAIAQgAkECdGoiAjYCCCAAIAQgAUECdGo2AgwgACACNgIEIAALRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQSiAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALcgECfyAAQYj+ADYCACAAKAIcBEAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAQRxqECUgACgCIBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAA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AXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAA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ZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsA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hoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAws0AQF/IAFBgICAgARPBEAQjAEACyAAIAEQswIiAjYCBCAAIAI2AgAgACACIAFBAnRqNgIICwoAIABBMGtBCkkLFwAgAEEwa0EKSSAAQSByQeEAa0EGSXILEwAgAEEgciAAIABBwQBrQRpJGwspAQF/IAAoAgAiAQRAIAEQvQNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQspAQF/IAAoAgAiAQRAIAEQwwNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQsUACACIAAgASAAayIAEE0gACACagskAQJ/IwBBEGsiAiQAIAEgABDTASEDIAJBEGokACABIAAgAxsLDAAgAEEAIABBf0cbCywBAX8gAUEASARAEIwBAAsgACABEFMiAjYCBCAAIAI2AgAgACABIAJqNgIIC5EBAQN/AkAgASACEIoCIQQjAEEQayIDJAAgBEH3////B00EQAJAIAQQ1AEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQtAMgA0EAOgAHIANBB2oQXSADQRBqJAAMAQsQWwALCw8AIAAgACgCGCABajYCGAsXACAAIAI2AhwgACABNgIUIAAgATYCGAtUAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABIAIoAgAoAjQRBAAMAQsgAiADQQRqNgIYIAMgATYCACABC0F/Rw0AIABBADYCAAsLMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBBGo2AgwgASgCAAsnAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEoAgALLgEBfyMAQRBrIgEkACABIAA2AgBB6gsgARByEH9BoPEAKAIAEGEaIAFBEGokAAskAQF/AkAgACgCACICRQ0AIAIgARDCA0F/Rw0AIABBADYCAAsLPQEBfyADBEAgACADELcDIAAoAgQhAyACIAFrIgRFIAEgAkZyRQRAIAMgASAE/AoAAAsgACADIARqNgIECwsJACAAEI8CEC0LPQEBfyAAKAIYIgIgACgCHEYEQCAAIAEQowEgACgCACgCNBEEAA8LIAAgAkEBajYCGCACIAE6AAAgARCjAQsqAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEsAAAQowELDwAgACAAKAIAKAIYEQAAC6wCAQJ/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABIAA2AgwgAUEAOgAIIAAgACgCAEEMaygCAGoQ2QEEQCAAIAAoAgBBDGsoAgBqKAJIIgIEQCACEMUDCyABQQE6AAgLAkAgAS0ACEUNACAAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgACAAKAIAQQxrKAIAakEBENUBCwJAIAEoAgwiACAAKAIAQQxrKAIAaigCGEUNACABKAIMIgAgACgCAEEMaygCAGoQ2QFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIEQYDAAHFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgASgCDCIAIAAoAgBBDGsoAgBqQQEQ1QELCyABQRBqJAALCQAgABCQAhAtCy0AIABByABqEDogAEE8ahA6IABBMGoQOiAAQSRqEDogAEEYahA6IABBDGoQOgsEAEF/C3wBAn8gACAAKAJIIgFBAWsgAXI2AkggACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRAwAaCyAAQQA2AhwgAEIANwMQIAAoAgAiAUEEcQRAIAAgAUEgcjYCAEF/DwsgACAAKAIsIAAoAjBqIgI2AgggACACNgIEIAFBG3RBH3ULBQAQFwALLQAgAEHMAGoQOiAAQUBrEDogAEE0ahA6IABBKGoQOiAAQRxqEDogAEEQahA6CxIAIABFBEBBAA8LIAAgARCWAgsPACAAIAEgAkE0QTUQ0QMLvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEBAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALbwEFfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH/////B3NLGyEECyAAIANBAWoiBTYCACADLAABIAQhAiAFIQNBMGsiAUEKSQ0ACyACC/oSAhN/An4jAEFAaiIIJAAgCCABNgI8IAhBKWohFyAIQSdqIRggCEEoaiERAkACQAJAAkADQEEAIQcDQCABIQ0gByAOQf////8Hc0oNAiAHIA5qIQ4CQAJAAkACQCABIgctAAAiCwRAA0ACQAJAIAtB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQsDQCALLQABQSVHBEAgCyEBDAILIAdBAWohByALLQACIAtBAmoiASELQSVGDQALCyAHIA1rIgcgDkH/////B3MiGUoNCSAABEAgACANIAcQQgsgBw0HIAggATYCPCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AjxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AjwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ/AkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AjxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AjwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQTxqEM8DIg9BAEgNCiAIKAI8IQELQQAhB0F/IQkCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACQTBrIgpBCUsNACABLQADQSRHDQAgAUEEaiEBAn8gAEUEQCAEIApBAnRqQQo2AgBBAAwBCyADIApBA3RqKAIACwwBCyASDQYgAUECaiEBQQAgAEUNABogAiACKAIAIgpBBGo2AgAgCigCAAshCSAIIAE2AjwgCUEATgwBCyAIIAFBAWo2AjwgCEE8ahDPAyEJIAgoAjwhAUEBCyEUA0AgByEVQRwhCiABIhMsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAVQTpsakHv8ABqLQAAIgdBAWtB/wFxQQhJDQALIAggATYCPAJAIAdBG0cEQCAHRQ0MIBBBAE4EQCAARQRAIAQgEEECdGogBzYCAAwMCyAIIAMgEEEDdGopAwA3AzAMAgsgAEUNCCAIQTBqIAcgAiAGEM4DDAELIBBBAE4NC0EAIQcgAEUNCAsgAC0AAEEgcQ0LIAxB//97cSILIAwgDEGAwABxGyEMQQAhEEHuCCEWIBEhCgJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgEy0AACIHwCITQVNxIBMgB0EPcUEDRhsgEyAVGyIHQdgAaw4hBBYWFhYWFhYWEBYJBhAQEBYGFhYWFgIFAxYWChYBFhYEAAsCQCAHQcEAaw4HEBYLFhAQEAALIAdB0wBGDQsMFQsgCCkDMCEbQe4IDAULQQAhBwJAAkACQAJAAkACQAJAIBUOCAABAgMEHAUGHAsgCCgCMCAONgIADBsLIAgoAjAgDjYCAAwaCyAIKAIwIA6sNwMADBkLIAgoAjAgDjsBAAwYCyAIKAIwIA46AAAMFwsgCCgCMCAONgIADBYLIAgoAjAgDqw3AwAMFQtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDMCIbIhpQRQRAA0AgAUEBayIBIBqnQQ9xLQCAdSALcjoAACAaQg9WIBpCBIghGg0ACwsgASENIAxBCHFFIBtQcg0DIAdBBHZB7ghqIRZBAiEQDAMLIBEhASAIKQMwIhsiGlBFBEADQCABQQFrIgEgGqdBB3FBMHI6AAAgGkIHViAaQgOIIRoNAAsLIAEhDSAMQQhxRQ0CIAkgFyABayIBIAEgCUgbIQkMAgsgCCkDMCIbQgBTBEAgCEIAIBt9Ihs3AzBBASEQQe4IDAELIAxBgBBxBEBBASEQQe8IDAELQfAIQe4IIAxBAXEiEBsLIRYgGyAREKYBIQ0LIBQgCUEASHENESAMQf//e3EgDCAUGyEMIBtCAFIgCXJFBEAgESENQQAhCQwOCyAJIBtQIBEgDWtqIgEgASAJSBshCQwNCyAILQAwIQcMCwsgCCgCMCIBQZUcIAEbIg1BAEH/////ByAJIAlB/////wdPGyIHEOABIgEgDWsgByABGyIBIA1qIQogCUEATgRAIAshDCABIQkMDAsgCyEMIAEhCSAKLQAADQ8MCwsgCCkDMCIaUEUNAUEAIQcMCQsgCQRAIAgoAjAMAgtBACEHIABBICAPQQAgDBBFDAILIAhBADYCDCAIIBo+AgggCCAIQQhqIgc2AjBBfyEJIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEMwDIg1BAEgNDyANIAkgB2tLDQAgC0EEaiELIAcgDWoiByAJSQ0BCwtBPSEKIAdBAEgNDCAAQSAgDyAHIAwQRSAHRQRAQQAhBwwBC0EAIQogCCgCMCELA0AgCygCACINRQ0BIAhBBGoiCSANEMwDIg0gCmoiCiAHSw0BIAAgCSANEEIgC0EEaiELIAcgCksNAAsLIABBICAPIAcgDEGAwABzEEUgDyAHIAcgD0gbIQcMCAsgFCAJQQBIcQ0JQT0hCiAAIAgrAzAgDyAJIAwgByAFESAAIgdBAE4NBwwKCyAHLQABIQsgB0EBaiEHDAALAAsgAA0JIBJFDQNBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhDOA0EBIQ4gB0EBaiIHQQpHDQEMCwsLIAdBCk8EQEEBIQ4MCgsDQCAEIAdBAnRqKAIADQFBASEOIAdBAWoiB0EKRw0ACwwJC0EcIQoMBgsgCCAHOgAnQQEhCSAYIQ0gCyEMCyAJIAogDWsiCyAJIAtKGyIBIBBB/////wdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBlLDQQgAEEgIAcgCSAMEEUgACAWIBAQQiAAQTAgByAJIAxBgIAEcxBFIABBMCABIAtBABBFIAAgDSALEEIgAEEgIAcgCSAMQYDAAHMQRSAIKAI8IQEMAQsLC0EAIQ4MAwtBPSEKC0GI6gEgCjYCAAtBfyEOCyAIQUBrJAAgDgvCAgEEfyMAQdABayIFJAAgBSACNgLMASAFQaABaiICQQBBKPwLACAFIAUoAswBNgLIAQJAQQAgASAFQcgBaiAFQdAAaiACIAMgBBDQA0EASARAQX8hBAwBCyAAKAJMQQBIIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F/IAAQ3wENARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ0AMLIQIgBgRAIABBAEEAIAAoAiQRAwAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF/IAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEDQALIAVB0AFqJAAgBAt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDSAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCz4BAX8jAEEQayIBJAAgASAANgIMAn8gAEEETwRAQZ0fIAFBDGoQlwJBAAwBCyAAQQJ0KAKILQsgAUEQaiQACwYAIAEQLQsJACABIAJsEDQLJQECfyAAKAIEIgAQqAFBAWoiARA0IgIEfyACIAAgARBxBUEACwsNACAAKAIEIAAoAgBrCzABAX8jAEEQayIEJAAgACgCACEAIAQgAzoADyABIAIgBEEPaiAAEQMAIARBEGokAAuNAgIBfwF8IwBBEGsiAyQAIANBDmogASACIAAoAgARBQAgAyADLwAOOwEMIwBBEGsiASQAAkAgAy0ADUEBRgRAIwBBEGsiAiQAQazgAS0AAEEBcUUEQEECQYQsQQMQDyEAQazgAUEBOgAAQajgASAANgIACyACIAMtAAw2AgggAkEANgIEQajgASgCAEEAQQAgAkEEaiACQQhqEA4hBCACIAIoAgQ2AgAgAUEIaiIAIAT8AzYCBCAAQfzgATYCACACEJ8CIAJBEGokACAAKAIEIQIgAEEANgIEIAAQtQEMAQsgAUEANgIMIAFB/OABNgIIIAFBCGoQtQFBAiECCyABQRBqJAAgA0EQaiQAIAILVAECfyMAQRBrIgQkACABIAAoAgQiBUEBdWohASAAKAIAIQAgBUEBcQRAIAEoAgAgAGooAgAhAAsgBCADOgAPIAEgAiAEQQ9qIAARBQAgBEEQaiQAC1IBAn8jAEEQayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIARBAXEEQCABKAIAIABqKAIAIQALIAMgAjoADyABIANBD2ogABEBACADQRBqJAALMAEBfyMAQRBrIgQkACAAKAIAIQAgBCADOAIMIAEgAiAEQQxqIAARAwAgBEEQaiQAC40CAgF/AXwjAEEQayIDJAAgA0EIaiABIAIgACgCABEFACADIAMpAgg3AwAjAEEQayIBJAACQCADLQAEQQFGBEAjAEEQayICJABBoOABLQAAQQFxRQRAQQJBxCZBAxAPIQBBoOABQQE6AABBnOABIAA2AgALIAIgAyoCADgCCCACQQA2AgRBnOABKAIAQQBBACACQQRqIAJBCGoQDiEEIAIgAigCBDYCACABQQhqIgAgBPwDNgIEIABB/OABNgIAIAIQnwIgAkEQaiQAIAAoAgQhAiAAQQA2AgQgABC1AQwBCyABQQA2AgwgAUH84AE2AgggAUEIahC1AUECIQILIAFBEGokACADQRBqJAAgAgtUAQJ/IwBBEGsiBCQAIAEgACgCBCIFQQF1aiEBIAAoAgAhACAFQQFxBEAgASgCACAAaigCACEACyAEIAM4AgwgASACIARBDGogABEFACAEQRBqJAALUgECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACOAIMIAEgA0EMaiAAEQEAIANBEGokAAsbACAAIAEoAgggBRA7BEAgASACIAMgBBDnAQsLOAAgACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRCgALkgIBBn8gACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyABLQA1IAAoAgwhBiABQQA6ADUgAS0ANCABQQA6ADQgAEEQaiIJIAEgAiADIAQgBRDlASABLQA0IgpyIQggAS0ANSILciEHAkAgBkECSQ0AIAkgBkEDdGohCSAAQRhqIQYDQCABLQA2DQECQCAKQQFxBEAgASgCGEEBRg0DIAAtAAhBAnENAQwDCyALQQFxRQ0AIAAtAAhBAXFFDQILIAFBADsBNCAGIAEgAiADIAQgBRDlASABLQA1IgsgB3JBAXEhByABLQA0IgogCHJBAXEhCCAGQQhqIgYgCUkNAAsLIAEgB0EBcToANSABIAhBAXE6ADQLkgEAIAAgASgCCCAEEDsEQCABIAIgAxDmAQ8LAkAgACABKAIAIAQQO0UNAAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC/YBACAAIAEoAgggBBA7BEAgASACIAMQ5gEPCwJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQgACgCACgCFBEKACABLQA1QQFGBEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBELAAsLrwQBA38gACABKAIIIAQQOwRAIAEgAiADEOYBDwsCQAJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAyABQQE2AiAPCyABIAM2AiAgASgCLEEERg0BIABBEGoiBSAAKAIMQQN0aiEHQQAhAwNAAkACQCABAn8CQCAFIAdPDQAgAUEAOwE0IAUgASACIAJBASAEEOUBIAEtADYNACABLQA1QQFHDQMgAS0ANEEBRgRAIAEoAhhBAUYNA0EBIQNBASEGIAAtAAhBAnFFDQMMBAtBASEDIAAtAAhBAXENA0EDDAELQQNBBCADGws2AiwgBg0FDAQLIAFBAzYCLAwECyAFQQhqIQUMAAsACyAAKAIMIQUgAEEQaiIGIAEgAiADIAQQtwEgBUECSQ0BIAYgBUEDdGohBiAAQRhqIQUCQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAyAFIAEgAiADIAQQtwEgBUEIaiIFIAZJDQALDAILIABBAXFFBEADQCABLQA2DQMgASgCJEEBRg0DIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAwDCwALA0AgAS0ANg0CIAEoAiRBAUYEQCABKAIYQQFGDQMLIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAsMAQsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsLjgUBBH8jAEFAaiIEJAACQCABQaDZAUEAEDsEQCACQQA2AgBBASEFDAELAkAgACABIAAtAAhBGHEEf0EBBSABRQ0BIAFB9NYBEFIiA0UNASADLQAIQRhxQQBHCxA7IQYLIAYEQEEBIQUgAigCACIARQ0BIAIgACgCADYCAAwBCwJAIAFFDQAgAUGk1wEQUiIGRQ0BIAIoAgAiAQRAIAIgASgCADYCAAsgBigCCCIDIAAoAggiAUF/c3FBB3EgA0F/cyABcUHgAHFyDQFBASEFIAAoAgwgBigCDEEAEDsNASAAKAIMQZTZAUEAEDsEQCAGKAIMIgBFDQIgAEHU1wEQUkUhBQwCCyAAKAIMIgNFDQBBACEFIANBpNcBEFIiAQRAIAAtAAhBAXFFDQICfyAGKAIMIQBBACECAkADQEEAIABFDQIaIABBpNcBEFIiA0UNASADKAIIIAEoAghBf3NxDQFBASABKAIMIAMoAgxBABA7DQIaIAEtAAhBAXFFDQEgASgCDCIARQ0BIABBpNcBEFIiAQRAIAMoAgwhAAwBCwsgAEGI2AEQUiIARQ0AIAAgAygCDBCpAiECCyACCyEFDAILIANBiNgBEFIiAQRAIAAtAAhBAXFFDQIgASAGKAIMEKkCIQUMAgsgA0HE1gEQUiIBRQ0BIAYoAgwiAEUNASAAQcTWARBSIgBFDQEgAigCACEDIARBCGpBAEE4/AsAIAQgA0EARzoAOyAEQX82AhAgBCABNgIMIAQgADYCBCAEQQE2AjQgACAEQQRqIANBASAAKAIAKAIcEQgAIAQoAhwiAEEBRgRAIAIgBCgCFEEAIAMbNgIACyAAQQFGIQUMAQtBACEFCyAEQUBrJAAgBQtvAQJ/IAAgASgCCEEAEDsEQCABIAIgAxDpAQ8LIAAoAgwhBCAAQRBqIgUgASACIAMQqwICQCAEQQJJDQAgBSAEQQN0aiEEIABBGGohAANAIAAgASACIAMQqwIgAS0ANg0BIABBCGoiACAESQ0ACwsLMgAgACABKAIIQQAQOwRAIAEgAiADEOkBDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRCAALGQAgACABKAIIQQAQOwRAIAEgAiADEOkBCwvIAQECfyMAQdAAayIDJAACQAJ/QQEgACABQQAQOw0AGkEAIAFFDQAaQQAgAUHE1gEQUiIBRQ0AGiACKAIAIgRFDQEgA0EYakEAQTj8CwAgA0EBOgBLIANBfzYCICADIAA2AhwgAyABNgIUIANBATYCRCABIANBFGogBEEBIAEoAgAoAhwRCAAgAygCLCIAQQFGBEAgAiADKAIkNgIACyAAQQFGCyADQdAAaiQADwsgA0GeFjYCCCADQecDNgIEIANBig02AgAQPQALAwAACxEBAX9BBBBTIgBBADYCACAACwkAQaD0ARA5GgslAEGs9AEtAABFBEBBoPQBQdisARCRAUGs9AFBAToAAAtBoPQBCwkAQZD0ARAgGgskAEGc9AEtAABFBEBBkPQBQc4NELABQZz0AUEBOgAAC0GQ9AELCQBBgPQBEDkaCyUAQYz0AS0AAEUEQEGA9AFBhKwBEJEBQYz0AUEBOgAAC0GA9AELCQBB8PMBECAaCyQAQfzzAS0AAEUEQEHw8wFBmRUQsAFB/PMBQQE6AAALQfDzAQsJAEHg8wEQORoLqQIBBH8gAiABIAAoAgBqIgBHBEACQCACKAIEIgQgAigCACIBa0ECdSIGIAAoAgggACgCACICa0ECdU0EQCAGIAAoAgQiAyACayIFQQJ1SwRAIAIgA0cEQCAFBEAgAiABIAX8CgAACyAAKAIEIQMLIAQgASAFaiIBayICRSABIARGckUEQCADIAEgAvwKAAALIAAgAiADajYCBAwCCyAEIAFrIgNFIAEgBEZyRQRAIAIgASAD/AoAAAsgACACIANqNgIEDAELIAAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0gAEEANgIIIABCADcCAAsgACAAIAYQtgEQrgMgACgCBCECIAQgAWsiA0UgASAERnJFBEAgAiABIAP8CgAACyAAIAIgA2o2AgQLCwslAEHs8wEtAABFBEBB4PMBQeCrARCRAUHs8wFBAToAAAtB4PMBCwkAQeTeARAgGgsaAEHd8wEtAABFBEBB3fMBQQE6AAALQeTeAQsJAEHQ8wEQORoLJQBB3PMBLQAARQRAQdDzAUG8qwEQkQFB3PMBQQE6AAALQdDzAQsJAEHY3gEQIBoLGgBBzfMBLQAARQRAQc3zAUEBOgAAC0HY3gELGwBBqPwBIQADQCAAQQxrEDkiAEGQ/AFHDQALC1QAQczzAS0AAARAQcjzASgCAA8LQaj8AS0AAEUEQEGo/AFBAToAAAtBkPwBQfjUARApQZz8AUGE1QEQKUHM8wFBAToAAEHI8wFBkPwBNgIAQZD8AQsbAEGI/AEhAANAIABBDGsQICIAQfD7AUcNAAsLFQAgASAAKAIAaiEAQQwQUyAAEIEBC1IAQcTzAS0AAARAQcDzASgCAA8LQYj8AS0AAEUEQEGI/AFBAToAAAtB8PsBQdEVECpB/PsBQc4VECpBxPMBQQE6AABBwPMBQfD7ATYCAEHw+wELGwBB4PsBIQADQCAAQQxrEDkiAEHA+QFHDQALC7ACAEG88wEtAAAEQEG48wEoAgAPC0Hg+wEtAABFBEBB4PsBQQE6AAALQcD5AUHw0AEQKUHM+QFBkNEBEClB2PkBQbTRARApQeT5AUHM0QEQKUHw+QFB5NEBEClB/PkBQfTRARApQYj6AUGI0gEQKUGU+gFBnNIBEClBoPoBQbjSARApQaz6AUHg0gEQKUG4+gFBgNMBEClBxPoBQaTTARApQdD6AUHI0wEQKUHc+gFB2NMBEClB6PoBQejTARApQfT6AUH40wEQKUGA+wFB5NEBEClBjPsBQYjUARApQZj7AUGY1AEQKUGk+wFBqNQBEClBsPsBQbjUARApQbz7AUHI1AEQKUHI+wFB2NQBEClB1PsBQejUARApQbzzAUEBOgAAQbjzAUHA+QE2AgBBwPkBCxsAQbD5ASEAA0AgAEEMaxAgIgBBkPcBRw0ACwuYAgBBtPMBLQAABEBBsPMBKAIADwtBsPkBLQAARQRAQbD5AUEBOgAAC0GQ9wFBmwgQKkGc9wFBkggQKkGo9wFBzQ8QKkG09wFBnA4QKkHA9wFB4QgQKkHM9wFBhxEQKkHY9wFBowgQKkHk9wFBkwkQKkHw9wFB1QwQKkH89wFBxAwQKkGI+AFBzAwQKkGU+AFB3wwQKkGg+AFB6g0QKkGs+AFBlRUQKkG4+AFBhg0QKkHE+AFB9gsQKkHQ+AFB4QgQKkHc+AFB3g0QKkHo+AFBkA4QKkH0+AFB0w8QKkGA+QFByg0QKkGM+QFBngoQKkGY+QFBiwkQKkGk+QFB+BQQKkG08wFBAToAAEGw8wFBkPcBNgIAQZD3AQsbAEGI9wEhAANAIABBDGsQOSIAQeD1AUcNAAsLzAEAQazzAS0AAARAQajzASgCAA8LQYj3AS0AAEUEQEGI9wFBAToAAAtB4PUBQZzOARApQez1AUG4zgEQKUH49QFB1M4BEClBhPYBQfTOARApQZD2AUGczwEQKUGc9gFBwM8BEClBqPYBQdzPARApQbT2AUGA0AEQKUHA9gFBkNABEClBzPYBQaDQARApQdj2AUGw0AEQKUHk9gFBwNABEClB8PYBQdDQARApQfz2AUHg0AEQKUGs8wFBAToAAEGo8wFB4PUBNgIAQeD1AQsbAEHY9QEhAANAIABBDGsQICIAQbD0AUcNAAsLvgEAQaTzAS0AAARAQaDzASgCAA8LQdj1AS0AAEUEQEHY9QFBAToAAAtBsPQBQcwIECpBvPQBQdMIECpByPQBQbEIECpB1PQBQbkIECpB4PQBQagIECpB7PQBQdoIECpB+PQBQcMIECpBhPUBQdoNECpBkPUBQeINECpBnPUBQeoQECpBqPUBQasTECpBtPUBQY8JECpBwPUBQbIPECpBzPUBQcIKECpBpPMBQQE6AABBoPMBQbD0ATYCAEGw9AELDwAgASAAKAIAaiACOgAACwsAIABBpKsBEJEBCwoAIABB7hAQsAELCwAgAEGQqwEQkQELCgAgAEHlEBCwAQsMACAAIAFBEGoQ5AELDAAgACABQQxqEOQBCwcAIAAsAAkLBwAgACwACAsJACAAEMMCEC0LDQAgASAAKAIAai0AAAsJACAAEMQCEC0LFQAgACgCCCIARQRAQQEPCyAAEMwCC44BAQZ/A0ACQCACIANGIAQgCE1yDQBBASEGIAAoAgghByMAQRBrIgUkACAFIAc2AgwgBUEIaiAFQQxqEGNBACACIAMgAmsgAUH07wEgARsQ0gEhChBiIAVBEGokAAJAAkAgCiIFQQJqDgMCAgEACyAFIQYLIAhBAWohCCAGIAlqIQkgAiAGaiECDAELCyAJC0YBAn8gACgCCCECIwBBEGsiASQAIAEgAjYCDCABQQhqIAFBDGoQYxBiIAFBEGokACAAKAIIIgBFBEBBAQ8LIAAQzAJBAUYLiQEBAn8jAEEQayIGJAAgBCACNgIAAn9BAiAGQQxqIgVBACAAKAIIEO4BIgBBAWpBAkkNABpBASAAQQFrIgIgAyAEKAIAa0sNABoDfyACBH8gBS0AACEAIAQgBCgCACIBQQFqNgIAIAEgADoAACACQQFrIQIgBUEBaiEFDAEFQQALCwsgBkEQaiQAC7kGAQ1/IwBBEGsiESQAIAIhCANAAkAgAyAIRgRAIAMhCAwBCyAILQAARQ0AIAhBAWohCAwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YgBSAGRnINACARIAEpAgA3AwggACgCCCEJIwBBEGsiECQAIBAgCTYCDCAQQQhqIBBBDGoQYyAIIAJrIQ5BACELIwBBkAhrIgwkACAMIAQoAgAiCTYCDCAFIAxBEGogBRshDwJAAkACQCAJRSAGIAVrQQJ1QYACIAUbIg1FckUEQANAIA5BgwFLIA5BAnYiCiANT3JFBEAgCSEKDAQLIA8gDEEMaiAKIA0gCiANSRsgARCbAyESIAwoAgwhCiASQX9GBEBBACENQX8hCwwDCyANIBJBACAPIAxBEGpHGyIUayENIA8gFEECdGohDyAJIA5qIAprQQAgChshDiALIBJqIQsgCkUNAiAKIQkgDQ0ADAILAAsgCSEKCyAKRQ0BCyANRSAORXINACALIQkDQAJAAkAgDyAKIA4gARDSASILQQJqQQJNBEACQAJAIAtBAWoOAgYAAQsgDEEANgIMDAILIAFBADYCAAwBCyAMIAwoAgwgC2oiCjYCDCAJQQFqIQkgDUEBayINDQELIAkhCwwCCyAPQQRqIQ8gDiALayEOIAkhCyAODQALCyAFBEAgBCAMKAIMNgIACyAMQZAIaiQAEGIgEEEQaiQAAkACQAJAAkAgCyIJQX9GBEADQCAHIAU2AgAgAiAEKAIARg0GQQEhBgJAAkACQCAFIAIgCCACayARQQhqIAAoAggQzQIiAUECag4DBwACAQsgBCACNgIADAQLIAEhBgsgAiAGaiECIAcoAgBBBGohBQwACwALIAcgBygCACAJQQJ0aiIFNgIAIAUgBkYNAyAEKAIAIQIgAyAIRg0GIAUgAkEBIAEgACgCCBDNAkUNAQtBAgwECyAHIAcoAgBBBGoiBTYCACAEIAQoAgBBAWoiAjYCACACIQgDQCADIAhGDQUgCC0AAEUNBiAIQQFqIQgMAAsACyAEIAI2AgBBAQwCCyAEKAIAIQILIAIgA0cLIBFBEGokAA8LIAMhCAwACwALpgUBDH8jAEEQayIPJAAgAiEIA0ACQCADIAhGBEAgAyEIDAELIAgoAgBFDQAgCEEEaiEIDAELCyAHIAU2AgAgBCACNgIAAkADQAJAAkAgAiADRiAFIAZGcgR/IAIFIA8gASkCADcDCEEBIRAgBSEJIAYgBWshCyAAKAIIIQpBACENIwBBEGsiDiQAIA4gCjYCDCAOQQhqIA5BDGoQYyMAQRBrIhEkAAJAIAQoAgAiCkUgCCACa0ECdSISRXINACALQQAgBRshCwNAIBFBDGogCSALQQRJGyAKKAIAEJYCIgxBf0YEQEF/IQ0MAgsgCQR/IAtBA00EQCALIAxJDQMgCSARQQxqIAwQcRoLIAsgDGshCyAJIAxqBUEACyEJIAooAgBFBEBBACEKDAILIAwgDWohDSAKQQRqIQogEkEBayISDQALCyAJBEAgBCAKNgIACyARQRBqJAAQYiAOQRBqJAACQAJAAkACQCANIglBAWoOAgAIAQsgByAFNgIAA0AgAiAEKAIARg0CIAUgAigCACAAKAIIEO4BIgFBf0YNAiAHIAcoAgAgAWoiBTYCACACQQRqIQIMAAsACyAHIAcoAgAgCWoiBTYCACAFIAZGDQEgAyAIRgRAIAQoAgAhAiADIQgMBgsgD0EEaiICQQAgACgCCBDuASIIQX9GDQQgBiAHKAIAayAISQ0GA0AgCARAIAItAAAhBSAHIAcoAgAiCUEBajYCACAJIAU6AAAgCEEBayEIIAJBAWohAgwBCwsgBCAEKAIAQQRqIgI2AgAgAiEIA0AgAyAIRgRAIAMhCAwFCyAIKAIARQ0EIAhBBGohCAwACwALIAQgAjYCAAwDCyAEKAIACyADRyEQDAMLIAcoAgAhBQwBCwtBAiEQCyAPQRBqJAAgEAsJACAAENsCEC0LMwAjAEEQayIAJAAgACAENgIMIAAgAyACazYCCCAAQQxqIABBCGoQtQMoAgAgAEEQaiQACzsAA0AgASACRkUEQCADIQAgBCABLAAAEEwEfyABLQAABSAACzoAACAEQQFqIQQgAUEBaiEBDAELCyABCwsAIAEgAiABEEwbCyoAA0AgASACRkUEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpgILHQAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABC8ALDwAgACABIAJBmIQBEKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2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KAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtB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DCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAE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eQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3Jp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AAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAAywBNAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAC+8/h57GH2P96qjID3e9W/PYivSu1x9T/bbcCn8L7Sv7AQ8PA5lfQ/ZzpRf64e0L+FA7iwlcnzP+kkgqbYMcu/pWSIDBkN8z9Yd8AKT1fGv6COC3siXvI/AIGcxyuqwb8/NBpKSrvxP14OjM52Trq/uuWK8Fgj8T/MHGFaPJexv6cAmUE/lfA/HgzhOPRSor8AAAAAAADwPwAAAAAAAAAArEea/Yxg7j+EWfJdqqWqP6BqAh+zpOw/tC42qlNevD/m/GpXNiDrPwjbIHflJsU/LaqhY9HC6T9wRyINhsLLP+1BeAPmhug/4X6gyIsF0T9iSFP13GfnPwnutlcwBNQ/7zn6/kIu5j80g7hIow7Qv2oL4AtbV9U/I0EK8v7/37/AbgBBsPEAC0EZAAsAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkACgoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBgfIACyEOAAAAAAAAAAAZAAsNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQbvyAAsBDABBx/IACxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQfXyAAsBEABBgfMACxUPAAAABA8AAAAACRAAAAAAABAAABAAQa/zAAsBEgBBu/MACx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQfLzAAsOGgAAABoaGgAAAAAAAAkAQaP0AAsBFABBr/QACxUXAAAAABcAAAAACRQAAAAAABQAABQAQd30AAsBFgBB6fQAC5oOFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAAAAAAA8AAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAAgAAAAAAAAAPDwAAEQAAABFAAAA+P////j///88PAAARgAAAEcAAADcOgAA8DoAAAQAAAAAAAAAhDwAAEgAAABJAAAA/P////z///+EPAAASgAAAEsAAAAMOwAAIDsAAAwAAAAAAAAAHD0AAEwAAABNAAAABAAAAPj///8cPQAATgAAAE8AAAD0////9P///xw9AABQAAAAUQAAADw7AADYPAAA7DwAAAA9AAAUPQAAZDsAAFA7AAAAAAAAbD0AAFIAAABTAAAAOAAAADkAAABUAAAAVQAAADwAAAA9AAAAPgAAAFYAAABAAAAAVwAAAEIAAABYAAAA0G0AANQ7AAAQPwAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAACobQAACDwAAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAAAsbgAAVDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAsbgAAnDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAMAAAAAAAAADw8AABEAAAARQAAAPT////0////PDwAAEYAAABHAAAABAAAAAAAAACEPAAASAAAAEkAAAD8/////P///4Q8AABKAAAASwAAACxuAAA8PQAAAwAAAAIAAAA8PAAAAgAAAIQ8AAACCAAATlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADA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")),ne((await W(Ee)).instance))}();function w5(){function oe(){var ne;if(i.calledRun=!0,!_){if(w=!0,k0.G(),C?.(i),(ne=i.onRuntimeInitialized)==null||ne.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var Ee=i.postRun.shift();Y.push(Ee)}Z(Y)}}if(0<O)U=w5;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)X();Z($),0<O?U=w5:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),oe()},1)):oe()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();return w5(),w?n=i:n=new Promise((oe,ne)=>{C=oe,E=ne}),n}var JI=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},K3e=e=>1/(1+Math.exp(-e)),X3e=e=>t=>t*e+.5,J3e=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:JI(e,t.positions),scales:JI(e,t.scales,Math.exp),rotations:JI(e,t.rotations),alphas:JI(e,t.alphas,K3e),colors:JI(e,t.colors,X3e(i)),sh:JI(e,t.sh)}},Z3e=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},wre=async(e,t)=>{var n;let i=await q3e(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=J3e(i,a,t);return Z3e(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var $3e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function e_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(e_.prototype=Object.create(qi.prototype),e_.prototype.constructor=e_);Object.defineProperties(e_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function eUe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Bre(e,n)}}e_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=eUe(this),this._promise)};function Bre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load SPZ",t)}async function tUe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}e_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._spzError)&&Bre(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=wre(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=tUe(this,t)};e_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var HO=e_;function sB(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}sB.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=$A.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new sB({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(sB.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});sB.BATCH_TABLE_CLASS_NAME="_batchTable";var Em=sB;function WO(e){e=e??V.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}WO.fromJson=function(e){return new WO({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(WO.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var jO=WO;function YO(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=e.valueType??zt.UINT16;this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}YO.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.enum,i=n.values.map(function(o){return jO.fromJson(o)});return new YO({id:t,values:i,valueType:zt[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(YO.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var qO=YO;function KO(e){e=e??V.EMPTY_OBJECT;let t=e.classes??{},n=e.enums??{};this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}KO.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=qO.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Em.fromJson({id:i,class:e.classes[i],enums:t}));return new KO({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(KO.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var Mf=KO;function zC(e){e=e??V.EMPTY_OBJECT;let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?Mf.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(zC.prototype=Object.create(qi.prototype),zC.prototype.constructor=zC);Object.defineProperties(zC.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});zC.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=nUe(this),this._promise)};async function nUe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=Mf.fromJson(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}zC.prototype.unload=function(){this._schema=void 0};var aB=zC;var Nf={};function ZI(e){return DA(e.url)}function cB(e){let{byteOffset:t,byteLength:n}=e;if(Ii(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=i.byteOffset??0,n=i.byteLength}return`${t}-${t+n}`}function iUe(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Dre(e,t){return`${ZI(e)}-buffer-id-${t}`}function $I(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return ZI(o)}return Dre(n,t)}function gW(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function vre(e,t,n,i){let r=e.bufferViews[0],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function Pre(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let A=i.getDerivedResource({url:s});return ZI(A)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=$I(u,c,n,i),h=cB(a);return`${f}-range-${h}`}function oUe(e,t){let n=Du.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}Nf.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${ZI(n)}`};Nf.getExternalBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e;return`external-buffer:${ZI(t)}`};Nf.getEmbeddedBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Dre(t,n)}`};Nf.getGltfCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t}=e;return`gltf:${ZI(t)}`};Nf.getBufferViewCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];Ii(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=$I(a,s,i,o),u=cB(r);return`buffer-view:${c}-range-${u}`};Nf.getDracoCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${gW(t,n,i,o)}`};Nf.getSpzCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,gltfResource:i,baseResource:o}=e;return`spz:${vre(t,n,i,o)}`};Nf.getVertexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,spz:a,attributeSemantic:c,dequantize:u=!1,loadBuffer:f=!1,loadTypedArray:h=!1}=e,A="";if(u&&(A+="-dequantize"),f&&(A+="-buffer",A+=`-context-${o.context.id}`),h&&(A+="-typed-array"),l(s))return`vertex-buffer:${gW(t,s,n,i)}-draco-${c}${A}`;if(a)return`vertex-buffer:${vre(t,a,n,i)}-spz-${c}${A}`;let g=t.bufferViews[r],m=g.buffer,_=t.buffers[m],y=$I(_,m,n,i),C=cB(g);return`vertex-buffer:${y}-range-${C}${A}`};Nf.getIndexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${gW(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,A=t.bufferViews[h],g=A.buffer,m=t.buffers[g],_=$I(m,g,i,o),y=iUe(f,A);return`index-buffer:${_}-accessor-${y}${u}`};Nf.getImageCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Pre(t,n,i,o)}`};Nf.getTextureCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=Du.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Pre(t,c,i,o),f=oUe(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var Vl=Nf;function lB(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}lB.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};lB.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};lB.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};lB.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var XO=lB;function Nn(){}Nn.cacheEntries={};Nn.statistics=new XO;function rUe(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new rUe(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=e??V.EMPTY_OBJECT;let{schema:t,resource:n}=e,i=Vl.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new aB({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n,typedArray:i}=e,o=Vl.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new jI({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e,n=Vl.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new jI({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=Vl.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new eB({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=Vl.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Kw({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=Vl.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new Xw({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getSpzLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r}=e,s=Vl.getSpzCacheKey({gltf:t,primitive:n,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new HO({resourceCache:Nn,gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,asynchronous:h=!0,dequantize:A=!1,loadBuffer:g=!1,loadTypedArray:m=!1}=e,_=Vl.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,spz:c,attributeSemantic:u,dequantize:A,loadBuffer:g,loadTypedArray:m}),y=Nn.get(_);return l(y)?y:(y=new rB({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,cacheKey:_,asynchronous:h,dequantize:A,loadBuffer:g,loadTypedArray:m}),Nn.add(y))};Nn.getIndexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=Vl.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),A=Nn.get(h);return l(A)?A:(A=new Zw({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(A))};Nn.getImageLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=Vl.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Jw({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=Vl.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new oB({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[rB,Zw,Xw,oB,Jw,Kw,jI,aB,eB],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var Qi=Nn;function Ba(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(Ba.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});Ba.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};Ba.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};Ba.prototype.contentIsAvailableAtIndex=function(e,t){return t=t??0,this._contentAvailabilityBitstreams[t].getBit(e)};Ba.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};Ba.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};Ba.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};Ba.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};Ba.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===Ts.OCTREE&&(t=3),e>>t};Ba.fromSubtreeJson=async function(e,t,n,i,o){let r=new Ba(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=sUe(n);let a=s.json;r._subtreeJson=a;let c;if(Ii(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let E=a.tileMetadata;c=a.propertyTables[E]}let u=[];if(l(a.contentMetadata)){let E=a.contentMetadata.length;for(let I=0;I<E;I++){let b=a.contentMetadata[I];u.push(a.propertyTables[b])}}let f,h=i.metadataSchema,A=a.subtreeMetadata;if(l(A)){let E=A.class,I=h.classes[E];f=new xO({subtreeMetadata:A,class:I})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],Ii(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let m=aUe(a.buffers),_=cUe(a.bufferViews,m);lUe(a,_),l(c)&&Rre(c,_);for(let E=0;E<u.length;E++){let I=u[E];Rre(I,_)}let y=await uUe(r,m,s.binary),C=dUe(_,y);return hUe(r,a,i,C),l(c)&&(mUe(r,i,C),pUe(r)),AUe(r,i,C),gUe(r),r._ready=!0,r};function sUe(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=yr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function aUe(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function cUe(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function lUe(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Rre(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=r.values??r.bufferView;i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=r.stringOffsets??r.stringOffsetBufferView;l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=r.arrayOffsets??r.arrayOffsetBufferView;l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function uUe(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=fUe(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function fUe(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=Qi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function dUe(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function hUe(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=Ii(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=_W(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let A=0;A<t.contentAvailabilityHeaders.length;A++){let g=_W(t.contentAvailabilityHeaders[A],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=_W(t.childSubtreeAvailability,i,a)}function _W(e,t,n,i){if(l(e.constant))return new jw({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new jw({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function mUe(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new jd({class:a,count:o,properties:i.properties,bufferViews:n})}function AUe(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,A=r.classes[h],g=new jd({class:A,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Mre(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function pUe(e){let t=Mre(e._tileAvailability);e._tileJumpBuffer=t}function gUe(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Mre(o);t.push(r)}}Ba.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new ce("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};Ba.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new ce("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function _Ue(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function yUe(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}Ba.prototype.getTileMetadataView=function(e){let t=_Ue(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new Yw({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};Ba.prototype.getContentMetadataView=function(e,t){let n=yUe(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new Yw({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};Ba.prototype.isDestroyed=function(){return!1};Ba.prototype.destroy=function(){return l(this._bufferLoader)&&Qi.unload(this._bufferLoader),ue(this)};var ex=Ba;var CUe={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},tx=Object.freeze(CUe);var qd={};qd.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:qd.parseBoundingVolumeSemantic("TILE",e),minimumHeight:qd._parseMinimumHeight("TILE",e),maximumHeight:qd._parseMaximumHeight("TILE",e)},content:{boundingVolume:qd.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:qd._parseMinimumHeight("CONTENT",e),maximumHeight:qd._parseMaximumHeight("CONTENT",e)}}};qd.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};qd._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};qd._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var nx=qd;function rl(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(rl.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});rl.fromSubtreeJson=async function(e,t,n,i,o,r){r=r??0;let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await ex.fromSubtreeJson(n,i,s,a,c),f=new rl(e,t,n);return f._implicitSubtree=u,EUe(f,u),f._ready=!0,f};function EUe(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=xUe(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=IUe(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=RUe(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function IUe(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function xUe(e,t,n,i){let s=Nre(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let A=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let _=A+m;if(!t.tileIsAvailableAtIndex(_)){u.push(void 0);continue}let y=t.getParentMortonIndex(m),C=c[y],E=m%f.branchingFactor,I=Nre(e,t,C,E,_);C.children.push(I),a.numberOfTilesTotal++,u.push(I)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function Lre(e,t,n){let i=tx.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Nre(e,t,n,i,o,r){let s=e._implicitTileset,a;r??!1?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let B=nx.parseAllBoundingVolumeSemantics(c);u=B.tile,f=B.content}let A=t.contentPropertyTableJsons.length,g=!1;for(let B=0;B<A;B++)if(t.contentIsAvailableAtCoordinates(a,B)){g=!0;break}let m=SUe(s,a,i,r,n,u),_=[];for(let B=0;B<s.contentCount;B++){if(!t.contentIsAvailableAtIndex(o,B))continue;let N={uri:s.contentUriTemplates[B].getDerivedResource({templateValues:a.getTemplateValues()}).url},L=wUe(m,f);l(L)&&(N.boundingVolume=L),_.push(wt(N,s.contentHeaders[B]))}let y=Lre(c,s,a),C={boundingVolume:m,geometricError:y,refine:s.refine,contents:_},E=!0,I=ze(s.tileHeader,E);delete I.boundingVolume,delete I.transform,delete I.metadata;let b=wt(C,I,E),S=Ure(e,s.baseResource,b,n);return S.implicitCoordinates=a,S.implicitSubtree=t,S.metadata=c,S.hasImplicitContentMetadata=g,S}function JO(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(Ii(e,"3DTILES_bounding_volume_S2")||l(e.region))}function CW(e,t){l(t)&&(Ii(e,"3DTILES_bounding_volume_S2")?TUe(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&bUe(e.region,t.minimumHeight,t.maximumHeight))}function bUe(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function TUe(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function SUe(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!JO(r.boundingVolume,r)&&JO(e.boundingVolume,r)?s=Ore(e,t,n,i??!1,o):s=r.boundingVolume,CW(s,r),s}function wUe(e,t){let n;return l(t)&&(n=t.boundingVolume),JO(n,t)?CW(n,t):JO(e,t)&&(n=ze(e,!0),CW(n,t)),n}function Ore(e,t,n,i,o){let r=e.boundingVolume;return Ii(r,"3DTILES_bounding_volume_S2")?Fre(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:kre(r.region,t.level,t.x,t.y,t.z)}:{box:Qre(r.box,t.level,t.x,t.y,t.z)}}function Fre(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?Ww.encode2D(i,o,r):Ww.encode2D(i,r,o),f=Hg.fromFacePositionLevel(c,BigInt(u),i),h,A;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,A=n<4?g:a.maximumHeight}else h=a.minimumHeight,A=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:A}}}}var BUe=new d,DUe=new d,yW=new d,vUe=new J;function Qre(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,DUe),s=J.unpack(e,3,vUe),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,BUe);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let A=d.fromElements(c,u,f,yW);A=J.multiplyByVector(s,A,yW),A=d.add(A,r,yW);let g=J.clone(s);g=J.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(A,m),J.pack(g,m,3),m}var PUe=new ae;function kre(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,PUe),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=D.negativePiToPi(r.west+n*u),h=D.negativePiToPi(f+u),A=c*r.height,g=D.negativePiToPi(r.south+i*A),m=D.negativePiToPi(g+A),_=s,y=a;if(l(o)){let C=c*(a-s);_+=o*C,y=_+C}return[f,g,h,m,_,y]}function RUe(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=Ore(i,o,n,!1,t),s=Lre(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=Ure(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function Ure(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}rl.prototype.hasProperty=function(e,t){return!1};rl.prototype.getFeature=function(e){};rl.prototype.applyDebugSettings=function(e,t){};rl.prototype.applyStyle=function(e){};rl.prototype.update=function(e,t){};rl.prototype.pick=function(e,t,n){};rl.prototype.isDestroyed=function(){return!1};rl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};rl._deriveBoundingBox=Qre;rl._deriveBoundingRegion=kre;rl._deriveBoundingVolumeS2=Fre;var uB=rl;var MUe={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},vu=Object.freeze(MUe);function ix(e,t){this._distance=t,this._normal=new Gre(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(ix.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});ix.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new ix(e.normal,e.distance),t};ix.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new ix(e.normal,e.distance)};function Gre(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(Gre.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var ox=ix;function wc(e){e=e??V.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.edgeColor=G.clone(e.edgeColor??G.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new _e,this.planeRemoved=new _e,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?jre:Yre,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function jre(e){return e===nn.OUTSIDE}function Yre(e){return e===nn.INSIDE}Object.defineProperties(wc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?jre:Yre)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function zre(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}wc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){zre(n,i)},e.index=t,zre(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};wc.prototype.get=function(e){return this._planes[e]};function qre(e,t){let n=e.length;for(let i=0;i<n;++i)if(mn.equals(e[i],t))return i;return-1}wc.prototype.contains=function(e){return qre(this._planes,e)!==-1};wc.prototype.remove=function(e){let t=this._planes,n=qre(t,e);if(n===-1)return!1;e instanceof ox&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof ox&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};wc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof ox&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var NUe=new se,LUe=new se;function Vre(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=Fn.octEncodeToCartesian4(a.normal,LUe);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=se.packFloat(a.distance,NUe);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function Hre(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function Kre(e,t){let n=qt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var OUe=new k;wc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=wc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=Kre(o,OUe);s.y*=2,i?(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(Hre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(Vre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),Hre(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),Vre(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var FUe=new R,Wre=new mn(d.UNIT_X,0);wc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=R.multiply(t,o,FUe));let r=nn.INSIDE;!this.unionClippingRegions&&i>0&&(r=nn.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];mn.transform(a,o,Wre);let c=e.intersectPlane(Wre);if(c===nn.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};wc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};wc.useFloatTexture=function(e){return e.floatingPointTexture};wc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=wc.useFloatTexture(t)?e.length:e.length*2,r=Kre(o,n);return r.y*=2,r};wc.prototype.isDestroyed=function(){return!1};wc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Vs=wc;function xW(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Jre(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=zUe(e,t,r,n)),e.length>80*n){a=e[0],c=e[1];let f=a,h=c;for(let A=n;A<o;A+=n){let g=e[A],m=e[A+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return dB(r,s,n,a,c,u,0),s}function Jre(e,t,n,i,o){let r;if(o===$Ue(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=Xre(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=Xre(s/i|0,e[s],e[s+1],r);return r&&rx(r,r.next)&&(mB(r),r=r.next),r}function VC(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(rx(n,n.next)||Xr(n.prev,n,n.next)===0)){if(mB(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function dB(e,t,n,i,o,r,s){if(!e)return;!s&&r&&YUe(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?kUe(e,i,o,r):QUe(e)){t.push(c.i,e.i,u.i),mB(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=UUe(VC(e),t),dB(e,t,n,i,o,r,2)):s===2&&GUe(e,t,n,i,o,r):dB(VC(e),t,n,i,o,r,1);break}}}function QUe(e){let t=e.prev,n=e,i=e.next;if(Xr(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),A=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=A&&m.y>=h&&m.y<=g&&fB(o,a,r,c,s,u,m.x,m.y)&&Xr(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function kUe(e,t,n,i){let o=e.prev,r=e,s=e.next;if(Xr(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,A=s.y,g=Math.min(a,c,u),m=Math.min(f,h,A),_=Math.max(a,c,u),y=Math.max(f,h,A),C=EW(g,m,t,n,i),E=EW(_,y,t,n,i),I=e.prevZ,b=e.nextZ;for(;I&&I.z>=C&&b&&b.z<=E;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0||(I=I.prevZ,b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;I&&I.z>=C;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0)return!1;I=I.prevZ}for(;b&&b.z<=E;){if(b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function UUe(e,t){let n=e;do{let i=n.prev,o=n.next.next;!rx(i,o)&&$re(i,n,n.next,o)&&hB(i,o)&&hB(o,i)&&(t.push(i.i,n.i,o.i),mB(n),mB(n.next),n=e=o),n=n.next}while(n!==e);return VC(n)}function GUe(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&XUe(s,a)){let c=ese(s,a);s=VC(s,s.next),c=VC(c,c.next),dB(s,t,n,i,o,r,0),dB(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function zUe(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Jre(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(KUe(u))}o.sort(VUe);for(let r=0;r<o.length;r++)n=HUe(o[r],n);return n}function VUe(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function HUe(e,t){let n=WUe(e,t);if(!n)return t;let i=ese(n,e);return VC(i,i.next),VC(n,n.next)}function WUe(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(rx(e,n))return n;do{if(rx(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&Zre(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);hB(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&jUe(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function jUe(e,t){return Xr(e.prev,e,t.prev)<0&&Xr(t.next,e,e.next)<0}function YUe(e,t,n,i){let o=e;do o.z===0&&(o.z=EW(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,qUe(o)}function qUe(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function EW(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function KUe(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function Zre(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function fB(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&Zre(e,t,n,i,o,r,s,a)}function XUe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!JUe(e,t)&&(hB(e,t)&&hB(t,e)&&ZUe(e,t)&&(Xr(e.prev,e,t.prev)||Xr(e,t.prev,t))||rx(e,t)&&Xr(e.prev,e,e.next)>0&&Xr(t.prev,t,t.next)>0)}function Xr(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function rx(e,t){return e.x===t.x&&e.y===t.y}function $re(e,t,n,i){let o=$O(Xr(e,t,n)),r=$O(Xr(e,t,i)),s=$O(Xr(n,i,e)),a=$O(Xr(n,i,t));return!!(o!==r&&s!==a||o===0&&ZO(e,n,t)||r===0&&ZO(e,i,t)||s===0&&ZO(n,e,i)||a===0&&ZO(n,t,i))}function ZO(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function $O(e){return e>0?1:e<0?-1:0}function JUe(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&$re(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function hB(e,t){return Xr(e.prev,e,e.next)<0?Xr(e,t,e.next)>=0&&Xr(e,e.prev,t)>=0:Xr(e,t,e.prev)<0||Xr(e,e.next,t)<0}function ZUe(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function ese(e,t){let n=IW(e.i,e.x,e.y),i=IW(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Xre(e,t,n,i){let o=IW(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function mB(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function IW(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function $Ue(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var eGe=new d,tGe=new d,t_={};t_.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};t_.computeWindingOrder2D=function(e){return t_.computeArea2D(e)>0?Gs.COUNTER_CLOCKWISE:Gs.CLOCKWISE};t_.triangulate=function(e,t){let n=k.packArray(e);return xW(n,t,2)};var ose=new d,rse=new d,sse=new d,tse=new d,nse=new d,ise=new d,ip=new d,ase=new k,cse=new k,lse=new k,sx=new k;t_.computeSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let I=t[a];if(u[h++]=I.x,u[h++]=I.y,u[h++]=I.z,r){let b=i[a];f[A++]=b.x,f[A++]=b.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=y*y;for(;s.length>0;){let I=s.pop(),b=s.pop(),S=s.pop(),B=d.fromArray(u,S*3,ose),v=d.fromArray(u,b*3,rse),P=d.fromArray(u,I*3,sse),N,L,p;r&&(N=k.fromArray(f,S*2,ase),L=k.fromArray(f,b*2,cse),p=k.fromArray(f,I*2,lse));let x=d.multiplyByScalar(d.normalize(B,tse),_,tse),T=d.multiplyByScalar(d.normalize(v,nse),_,nse),w=d.multiplyByScalar(d.normalize(P,ise),_,ise),M=d.magnitudeSquared(d.subtract(x,T,ip)),O=d.magnitudeSquared(d.subtract(T,w,ip)),U=d.magnitudeSquared(d.subtract(w,x,ip)),Q=Math.max(M,O,U),z,F,H;Q>C?M===Q?(z=`${Math.min(S,b)} ${Math.max(S,b)}`,a=m[z],l(a)||(F=d.add(B,v,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(N,L,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(S,a,I),s.push(a,b,I)):O===Q?(z=`${Math.min(b,I)} ${Math.max(b,I)}`,a=m[z],l(a)||(F=d.add(v,P,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(L,p,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(b,a,S),s.push(a,I,S)):U===Q&&(z=`${Math.min(I,S)} ${Math.max(I,S)}`,a=m[z],l(a)||(F=d.add(P,B,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(p,N,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(I,a,b),s.push(a,S,b)):(g.push(S),g.push(b),g.push(I))}let E={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(E.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(E)};var nGe=new Ae,iGe=new Ae,oGe=new Ae,bW=new Ae;t_.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let S=t[a];if(u[h++]=S.x,u[h++]=S.y,u[h++]=S.z,r){let B=i[a];f[A++]=B.x,f[A++]=B.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=new Ic(void 0,void 0,e),E=new Ic(void 0,void 0,e),I=new Ic(void 0,void 0,e);for(;s.length>0;){let S=s.pop(),B=s.pop(),v=s.pop(),P=d.fromArray(u,v*3,ose),N=d.fromArray(u,B*3,rse),L=d.fromArray(u,S*3,sse),p,x,T;r&&(p=k.fromArray(f,v*2,ase),x=k.fromArray(f,B*2,cse),T=k.fromArray(f,S*2,lse));let w=e.cartesianToCartographic(P,nGe),M=e.cartesianToCartographic(N,iGe),O=e.cartesianToCartographic(L,oGe);C.setEndPoints(w,M);let U=C.surfaceDistance;E.setEndPoints(M,O);let Q=E.surfaceDistance;I.setEndPoints(O,w);let z=I.surfaceDistance,F=Math.max(U,Q,z),H,W,Z,Y,$;F>y?U===F?(H=`${Math.min(v,B)} ${Math.max(v,B)}`,a=m[H],l(a)||(W=C.interpolateUsingFraction(.5,bW),Z=(w.height+M.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(p,x,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(v,a,S),s.push(a,B,S)):Q===F?(H=`${Math.min(B,S)} ${Math.max(B,S)}`,a=m[H],l(a)||(W=E.interpolateUsingFraction(.5,bW),Z=(M.height+O.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(x,T,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(B,a,v),s.push(a,S,v)):z===F&&(H=`${Math.min(S,v)} ${Math.max(S,v)}`,a=m[H],l(a)||(W=I.interpolateUsingFraction(.5,bW),Z=(O.height+w.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(T,p,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(S,a,B),s.push(a,v,B)):(g.push(v),g.push(B),g.push(S))}let b={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(b.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(b)};t_.scaleToGeodeticHeight=function(e,t,n,i){n=n??te.default;let o=eGe,r=tGe;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var xi=t_;function n_(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(n_.prototype,{length:{get:function(){return this._length}}});n_.prototype.enqueue=function(e){this._array.push(e),this._length++};n_.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};n_.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};n_.prototype.contains=function(e){return this._array.indexOf(e)!==-1};n_.prototype.clear=function(){this._array.length=this._offset=this._length=0};n_.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var HC=n_;var or={};or.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};or.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};or.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=or.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var WC=new k;function dse(e,t,n,i){return k.subtract(t,e,WC),k.multiplyByScalar(WC,n/i,WC),k.add(e,WC,WC),[WC.x,WC.y]}var i_=new d;function rGe(e,t,n,i){return d.subtract(t,e,i_),d.multiplyByScalar(i_,n/i,i_),d.add(e,i_,i_),[i_.x,i_.y,i_.z]}or.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(D.log2(o)));return Math.pow(2,r)};var tF=new Ae,nF=new Ae,sGe=new Ae,aGe=new d,eF=new Ic;or.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,tF),r=e.cartesianToCartographic(n,nF),a=new Ic(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(D.log2(a)));return Math.pow(2,c)};or.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=or.subdivideLineCount(n,i,o),a=k.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let A=dse(e,t,h*c,a);u[f++]=A[0],u[f++]=A[1]}return u};or.subdivideLine=function(e,t,n,i){let o=or.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=rGe(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};or.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,tF),c=n.cartesianToCartographic(o,nF);eF.setEndPoints(a,c);let u=eF.surfaceDistance/r,f=Math.max(0,Math.ceil(D.log2(u))),h=Math.pow(2,f),A=k.distance(e,t),g=A/h,m=s;m.length=h*2;let _=0;for(let y=0;y<h;y++){let C=dse(e,t,y*g,A);m[_++]=C[0],m[_++]=C[1]}return m};or.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,tF),s=e.cartesianToCartographic(n,nF),a=new Ic(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(D.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,A=o;A.length=f*3;let g=0;for(let m=0;m<f;m++){let _=a.interpolateUsingSurfaceDistance(m*h,sGe),y=e.cartographicToCartesian(_,aGe);A[g++]=y.x,A[g++]=y.y,A[g++]=y.z}return A};var cGe=new d,lGe=new d,uGe=new d,fGe=new d;or.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=i??te.default;let r=cGe,s=lGe,a=uGe,c=fGe;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};or.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new HC;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=No(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],A=h.positions;if(t)for(a=A.length,s=0;s<a;++s)n.scaleToGeodeticSurface(A[s],A[s]);if(A=No(A,d.equalsEpsilon,!0),A.length<3)continue;i.push(A);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var dGe=new Ae;function hGe(e,t,n){let i=n.cartesianToCartographic(e,tF),o=n.cartesianToCartographic(t,nF);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;eF.setEndPoints(i,o);let r=eF.findIntersectionWithLatitude(0,dGe);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>D.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function mGe(e,t,n,i){if(i===un.RHUMB)return hGe(e,t,n);let o=Ai.lineSegmentPlane(e,t,mn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var AGe=new Ae;function pGe(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=D.sign(o.z),a=D.sign(r.z);let f=h=>t.cartesianToCartographic(h,AGe).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=mGe(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function hse(e,t,n,i,o,r,s){let a=[],c=r,u=h=>A=>A.position===h,f=[];do{let h=n[c];a.push(h);let A=i.findIndex(u(c)),g=i[A];if(!l(g)){++c;continue}let{visited:m,type:_,next:y}=g;if(g.visited=!0,_===0){if(y===0){let b=i[A-(s?1:-1)];if(b?.position===c+1)b.visited=!0;else{++c;continue}}if(!m&&s&&y>0||r===c&&!s&&y<0){++c;continue}}if(!(s?_>=0:_<=0)){++c;continue}m||f.push(c);let E=A+(s?1:-1),I=i[E];if(!l(I)){++c;continue}c=I.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=hse(e,++t,n,i,0,h,!s);return t}or.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=pGe(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=hse(i,o,s,a,1,0,c)}return i};or.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new HC;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,A=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=No(h,d.equalsEpsilon,!0)),h.length<3)continue;let _=n(h);if(!l(_))continue;let y=[],C=xi.computeWindingOrder2D(_);if(C===Gs.CLOCKWISE&&(_.reverse(),h=h.slice().reverse()),u){u=!1;let B=[h];if(B=r(B,B),B.length>1){for(let v of B)c.enqueue(new xc(v,A));continue}}let E=h.slice(),I=l(A)?A.length:0,b=[],S;for(g=0;g<I;g++){let B=A[g],v=B.positions;if(i)for(m=v.length,S=0;S<m;++S)o.scaleToGeodeticSurface(v[S],v[S]);if(t||(v=No(v,d.equalsEpsilon,!0)),v.length<3)continue;let P=n(v);if(!l(P))continue;C=xi.computeWindingOrder2D(P),C===Gs.CLOCKWISE&&(P.reverse(),v=v.slice().reverse()),b.push(v),y.push(E.length),E=E.concat(v),_=_.concat(P);let N=0;for(l(B.holes)&&(N=B.holes.length),S=0;S<N;S++)c.enqueue(B.holes[S])}s.push({outerRing:h,holes:b}),a.push({positions:E,positions2D:_,holes:y})}return{hierarchy:s,polygons:a}};var gGe=new k,_Ge=new d,yGe=new Le,CGe=new J;or.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,yGe),s=J.fromQuaternion(r,CGe),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let A=0;A<h;++A){let g=d.clone(n[A],_Ge);J.multiplyByVector(s,g,g);let m=t(g,gGe);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};or.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=xi.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,A=new Array(h*3),g=0;for(let y=0;y<h;y++){let C=c[y];A[g++]=C.x,A[g++]=C.y,A[g++]=C.z}let m={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:A})},indices:a,primitiveType:Me.TRIANGLES};u&&(m.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:k.packArray(f)}));let _=new ht(m);return r.normal?jn.computeNormal(_):_}if(s===un.GEODESIC)return xi.computeSubdivision(e,c,a,f,i);if(s===un.RHUMB)return xi.computeRhumbLineSubdivision(e,c,a,f,i)};var use=[],fse=[],EGe=new d,IGe=new d;or.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,A,g,m,_=e.length,y=0,C=0,E=l(t),I=E?t.positions:void 0;if(o)for(a=_*3*2,s=new Array(a*2),E&&(m=_*2*2,g=new Array(m*2)),c=0;c<_;c++)u=e[c],f=e[(c+1)%_],s[y]=s[y+a]=u.x,++y,s[y]=s[y+a]=u.y,++y,s[y]=s[y+a]=u.z,++y,s[y]=s[y+a]=f.x,++y,s[y]=s[y+a]=f.y,++y,s[y]=s[y+a]=f.z,++y,E&&(h=I[c],A=I[(c+1)%_],g[C]=g[C+m]=h.x,++C,g[C]=g[C+m]=h.y,++C,g[C]=g[C+m]=A.x,++C,g[C]=g[C+m]=A.y,++C);else{let P=D.chordLength(i,n.maximumRadius),N=0;if(r===un.GEODESIC)for(c=0;c<_;c++)N+=or.subdivideLineCount(e[c],e[(c+1)%_],P);else if(r===un.RHUMB)for(c=0;c<_;c++)N+=or.subdivideRhumbLineCount(n,e[c],e[(c+1)%_],P);for(a=(N+_)*3,s=new Array(a*2),E&&(m=(N+_)*2,g=new Array(m*2)),c=0;c<_;c++){u=e[c],f=e[(c+1)%_];let L,p;E&&(h=I[c],A=I[(c+1)%_]),r===un.GEODESIC?(L=or.subdivideLine(u,f,P,fse),E&&(p=or.subdivideTexcoordLine(h,A,u,f,P,use))):r===un.RHUMB&&(L=or.subdivideRhumbLine(n,u,f,P,fse),E&&(p=or.subdivideTexcoordRhumbLine(h,A,n,u,f,P,use)));let x=L.length;for(let T=0;T<x;++T,++y)s[y]=L[T],s[y+a]=L[T];if(s[y]=f.x,s[y+a]=f.x,++y,s[y]=f.y,s[y+a]=f.y,++y,s[y]=f.z,s[y+a]=f.z,++y,E){let T=p.length;for(let w=0;w<T;++w,++C)g[C]=p[w],g[C+m]=p[w];g[C]=A.x,g[C+m]=A.x,++C,g[C]=A.y,g[C+m]=A.y,++C}}}_=s.length;let b=Fe.createTypedArray(_/3,_-e.length*6),S=0;for(_/=6,c=0;c<_;c++){let P=c,N=P+1,L=P+_,p=L+1;u=d.fromArray(s,P*3,EGe),f=d.fromArray(s,N*3,IGe),!d.equalsEpsilon(u,f,D.EPSILON10,D.EPSILON10)&&(b[S++]=P,b[S++]=L,b[S++]=N,b[S++]=N,b[S++]=L,b[S++]=p)}let B={attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),indices:b,primitiveType:Me.TRIANGLES};return E&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),new ht(B)};var $n=or;function Jr(e,t){this.position=e,l(this.position)||(this.position=new k),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=Jr.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(Jr.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=k.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(D.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=D.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=D.TWO_PI),e}}});var ax=new Ae,xGe=new d;Jr.prototype.getLatitude=function(e){l(e)||(e=te.default),ax.latitude=this.conformalLatitude,ax.longitude=this.longitude,ax.height=0;let t=this.ellipsoid.cartographicToCartesian(ax,xGe);return e.cartesianToCartographic(t,ax),ax.latitude};var bGe=new In,TGe=new d,SGe=new d;Jr.fromCartesian=function(e,t){let n=D.signNotZero(e.z),i=Jr.NORTH_POLE_TANGENT_PLANE,o=Jr.SOUTH_POLE;n<0&&(i=Jr.SOUTH_POLE_TANGENT_PLANE,o=Jr.NORTH_POLE);let r=bGe;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,TGe),d.normalize(r.direction,r.direction);let s=Ai.rayPlane(r,i.plane,SGe),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new k(c,u),t.tangentPlane=i,t):new Jr(new k(c,u),i)};Jr.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=Jr.fromCartesian(e[i],t[i]);return t};Jr.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new Jr(e.position,e.tangentPlane)};Jr.HALF_UNIT_SPHERE=Object.freeze(new te(.5,.5,.5));Jr.NORTH_POLE=Object.freeze(new d(0,0,.5));Jr.SOUTH_POLE=Object.freeze(new d(0,0,-.5));Jr.NORTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.NORTH_POLE,Jr.HALF_UNIT_SPHERE));Jr.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.SOUTH_POLE,Jr.HALF_UNIT_SPHERE));var sl=Jr;var wGe=new Ae,mse=new Ae;function BGe(e,t,n,i){let r=i.cartesianToCartographic(e,wGe).height,s=i.cartesianToCartographic(t,mse);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,mse);a.height=r-100,i.cartographicToCartesian(a,n)}var Ase=new Xe,DGe=new d,vGe=new d,PGe=new d,RGe=new d,MGe=new d,NGe=new d,iF=new d,Im=new d,cx=new d,LGe=new k,OGe=new k,FGe=new d,pse=new Le,QGe=new J,kGe=new J;function TW(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,A=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,_=e.perPositionHeight,y=LGe;y.x=f.x,y.y=f.y;let C=t.st?new Float32Array(2*(s/3)):void 0,E;t.normal&&(_&&c&&!a?E=n.attributes.normal.values:E=new Float32Array(s));let I=t.tangent?new Float32Array(s):void 0,b=t.bitangent?new Float32Array(s):void 0,S=i?new Float32Array(s):void 0,B=0,v=0,P=vGe,N=PGe,L=RGe,p=!0,x=QGe,T=kGe;if(m!==0){let O=Le.fromAxisAngle(h,m,pse);x=J.fromQuaternion(O,x),O=Le.fromAxisAngle(h,-m,pse),T=J.fromQuaternion(O,T)}else x=J.clone(J.IDENTITY,x),T=J.clone(J.IDENTITY,T);let w=0,M=0;c&&u&&(w=s/2,M=s/3,s/=2);for(let O=0;O<s;O+=3){let U=d.fromArray(o,O,FGe);if(t.st&&!l(r)){let Q=J.multiplyByVector(x,U,DGe);Q=g.scaleToGeodeticSurface(Q,Q);let z=A([Q],OGe)[0];k.subtract(z,y,z);let F=D.clamp(z.x/f.width,0,1),H=D.clamp(z.y/f.height,0,1);u&&(C[B+M]=F,C[B+1+M]=H),c&&(C[B]=F,C[B+1]=H),B+=2}if(t.normal||t.tangent||t.bitangent||i){let Q=v+1,z=v+2;if(a){if(O+3<s){let F=d.fromArray(o,O+3,MGe);if(p){let H=d.fromArray(o,O+s,NGe);_&&BGe(U,F,H,g),d.subtract(F,U,F),d.subtract(H,U,H),P=d.normalize(d.cross(H,F,P),P),p=!1}d.equalsEpsilon(F,U,D.EPSILON10)&&(p=!0)}(t.tangent||t.bitangent)&&(L=g.geodeticSurfaceNormal(U,L),t.tangent&&(N=d.normalize(d.cross(L,P,N),N)))}else P=g.geodeticSurfaceNormal(U,P),(t.tangent||t.bitangent)&&(_&&(iF=d.fromArray(E,v,iF),Im=d.cross(d.UNIT_Z,iF,Im),Im=d.normalize(J.multiplyByVector(T,Im,Im),Im),t.bitangent&&(cx=d.normalize(d.cross(iF,Im,cx),cx))),N=d.cross(d.UNIT_Z,P,N),N=d.normalize(J.multiplyByVector(T,N,N),N),t.bitangent&&(L=d.normalize(d.cross(P,N,L),L)));t.normal&&(e.wall?(E[v+w]=P.x,E[Q+w]=P.y,E[z+w]=P.z):u&&(E[v+w]=-P.x,E[Q+w]=-P.y,E[z+w]=-P.z),(c&&!_||a)&&(E[v]=P.x,E[Q]=P.y,E[z]=P.z)),i&&(a&&(P=g.geodeticSurfaceNormal(U,P)),S[v+w]=-P.x,S[Q+w]=-P.y,S[z+w]=-P.z),t.tangent&&(e.wall?(I[v+w]=N.x,I[Q+w]=N.y,I[z+w]=N.z):u&&(I[v+w]=-N.x,I[Q+w]=-N.y,I[z+w]=-N.z),c&&(_?(I[v]=Im.x,I[Q]=Im.y,I[z]=Im.z):(I[v]=N.x,I[Q]=N.y,I[z]=N.z))),t.bitangent&&(u&&(b[v+w]=L.x,b[Q+w]=L.y,b[z+w]=L.z),c&&(_?(b[v]=cx.x,b[Q]=cx.y,b[z]=cx.z):(b[v]=L.x,b[Q]=L.y,b[z]=L.z))),v+=3}}t.st&&!l(r)&&(n.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C})),t.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:b})),i&&(n.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:S}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===hn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let A=e.offsetAttribute===hn.NONE?0:1;h=h.fill(A)}n.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var gse=[];function UGe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let E=$n.createGeometryFromPositions(e,t,n,i,r,c,u),I=E.attributes.position.values,b=E.indices,S,B;if(s&&a){let v=I.concat(I);S=v.length/3,B=Fe.createTypedArray(S,b.length*2),B.set(b);let P=b.length,N=S/2;for(h=0;h<P;h+=3){let L=B[h]+N,p=B[h+1]+N,x=B[h+2]+N;B[h+P]=x,B[h+1+P]=p,B[h+2+P]=L}if(E.attributes.position.values=v,r&&c.normal){let L=E.attributes.normal.values;E.attributes.normal.values=new Float32Array(v.length),E.attributes.normal.values.set(L)}if(c.st&&l(n)){let L=E.attributes.st.values;E.attributes.st.values=new Float32Array(S*2),E.attributes.st.values=L.concat(L)}E.indices=B}else if(a){for(S=I.length/3,B=Fe.createTypedArray(S,b.length),h=0;h<b.length;h+=3)B[h]=b[h+2],B[h+1]=b[h+1],B[h+2]=b[h];E.indices=B}f.topAndBottom=new Rt({geometry:E})}let A=o.outerRing,g=xs.fromPoints(A,e),m=g.projectPointsOntoPlane(A,gse),_=xi.computeWindingOrder2D(m);_===Gs.CLOCKWISE&&(A=A.slice().reverse());let y=$n.computeWallGeometry(A,n,e,i,r,u);f.walls.push(new Rt({geometry:y}));let C=o.holes;for(h=0;h<C.length;h++){let E=C[h];m=g.projectPointsOntoPlane(E,gse),_=xi.computeWindingOrder2D(m),_===Gs.COUNTER_CLOCKWISE&&(E=E.slice().reverse()),y=$n.computeWallGeometry(E,n,e,i,r,u),f.walls.push(new Rt({geometry:y}))}return f}function Of(e){let t=e.polygonHierarchy,n=e.vertexFormat??Pe.DEFAULT,i=e.ellipsoid??te.default,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.stRotation??0,s=e.textureCoordinates,a=e.perPositionHeight??!1,c=a&&l(e.extrudedHeight),u=e.height??0,f=e.extrudedHeight??u;if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Pe.clone(n),this._ellipsoid=te.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=e.closeTop??!0,this._closeBottom=e.closeBottom??!0,this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=e.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=e.arcType??un.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+Pe.packedLength+(s?$n.computeHierarchyPackedLength(s,k):1)+12}Of.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new Of(t)};Of.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=e._offsetAttribute??-1,t[n++]=e._arcType,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var GGe=te.clone(te.UNIT_SPHERE),zGe=new Pe,VGe={polygonHierarchy:{}};Of.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,GGe);t+=te.packedLength;let r=Pe.unpack(e,t,zGe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,A=e[t++]===1,g=e[t++]===1,m=e[t++]===1,_=e[t++],y=e[t++],C=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(C)?(t=C.startingIndex,delete C.startingIndex):t++;let E=e[t++];return l(n)||(n=new Of(VGe)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=A,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=_===-1?void 0:_,n._arcType=y,n._textureCoordinates=C,n.packedLength=E,n};var HGe=new k,WGe=new k,jGe=new sl;function _se(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+D.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==un.RHUMB){let A=k.subtract(t.position,e.position,HGe),g=k.dot(t.position,A)/k.dot(A,A);if(g>0&&g<1){let m=k.add(t.position,k.multiplyByScalar(A,-g,A),WGe),_=sl.clone(t,jGe);_.position=m;let y=_.getLatitude(n);r.south=Math.min(r.south,y),r.north=Math.max(r.north,y),Math.abs(c)>Math.abs(y)&&(u=y)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=k.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var yse=new sl,YGe=new sl,Lf={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};Of.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,Lf.northAngle=0,Lf.southAngle=0,Lf.westOverIdl=Number.POSITIVE_INFINITY,Lf.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=sl.fromCartesian(e[0],YGe);for(let s=1;s<o;s++){let a=sl.fromCartesian(e[s],yse);_se(a,r,t,n,Lf,i),r=sl.clone(a,r)}return _se(sl.fromCartesian(e[0],yse),r,t,n,Lf,i),i.east-i.west>Lf.eastOverIdl-Lf.westOverIdl&&(i.west=Lf.westOverIdl,i.east=Lf.eastOverIdl,i.east>D.PI&&(i.east=i.east-D.TWO_PI),i.west>D.PI&&(i.west=i.west-D.TWO_PI)),D.equalsEpsilon(Math.abs(Lf.northAngle),D.TWO_PI,D.EPSILON10)&&(i.north=D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),D.equalsEpsilon(Math.abs(Lf.southAngle),D.TWO_PI,D.EPSILON10)&&(i.south=-D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),i};var qGe=new sl;function KGe(e,t,n){return e.height>=D.PI||e.width>=D.PI?sl.fromCartesian(t[0],qGe).tangentPlane:xs.fromPoints(t,n)}var Cse=new Ae;function XGe(e,t,n){return(i,o)=>{if(e.height>=D.PI||e.width>=D.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],Cse);o[s]=new k(a.longitude/D.PI,a.latitude/D.PI_OVER_TWO)}return o.length=i.length,o}return sl.fromCartesianArray(i,o)}return xs.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function JGe(e,t,n){if(e.height>=D.PI||e.width>=D.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,Cse);return l(r)||(r=new k),r.x=s.longitude/D.PI,r.y=s.latitude/D.PI_OVER_TWO,r}return sl.fromCartesian(o,r)};let i=xs.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function ZGe(e,t,n,i){return(o,r)=>!i&&(e.height>=D.PI_OVER_TWO||e.width>=2*D.PI_OVER_THREE)?$n.splitPolygonsOnEquator(o,t,n,r):o}function $Ge(e,t,n,i){if(t.height>=D.PI||t.width>=D.PI)return Xe.fromRectangle(t,void 0,Ase);let o=e,r=xs.fromPoints(o,n);return $n.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,Ase)}Of.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),A=r.positions;if(A.length<3)return;let g=e.rectangle,m=$n.polygonsFromHierarchy(r,h,XGe(g,A,n),!s,n,ZGe(g,n,u,s)),_=m.hierarchy,y=m.polygons,C=function(w){return w},E=h?$n.polygonsFromHierarchy(f,!0,C,!1,n).polygons:void 0;if(_.length===0)return;let I=_[0].outerRing,b=$Ge(I,g,n,o),S=[],B=e._height,v=e._extrudedHeight,P=e._perPositionHeightExtrude||!D.equalsEpsilon(B,v,0,D.EPSILON2),N={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:KGe(g,I,n).plane.normal,projectTo2d:JGe(g,I,n),boundingRectangle:b,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},L;if(P)for(N.extrude=!0,N.top=a,N.bottom=c,N.shadowVolume=e._shadowVolume,N.offsetAttribute=e._offsetAttribute,L=0;L<y.length;L++){let w=UGe(n,y[L],h?E[L]:void 0,i,_[L],s,a,c,t,u),M;a&&c?(M=w.topAndBottom,N.geometry=$n.scaleToGeodeticHeightExtruded(M.geometry,B,v,n,s)):a?(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,B,n,!s),N.geometry=M.geometry):c&&(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,v,n,!0),N.geometry=M.geometry),(a||c)&&(N.wall=!1,M.geometry=TW(N),S.push(M));let O=w.walls;N.wall=!0;for(let U=0;U<O.length;U++){let Q=O[U];N.geometry=$n.scaleToGeodeticHeightExtruded(Q.geometry,B,v,n,s),Q.geometry=TW(N),S.push(Q)}}else for(L=0;L<y.length;L++){let w=new Rt({geometry:$n.createGeometryFromPositions(n,y[L],h?E[L]:void 0,i,s,t,u)});if(w.geometry.attributes.position.values=xi.scaleToGeodeticHeight(w.geometry.attributes.position.values,B,n,!s),N.geometry=w.geometry,w.geometry=TW(N),l(e._offsetAttribute)){let M=w.geometry.attributes.position.values.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}S.push(w)}let p=jn.combineInstances(S)[0];p.attributes.position.values=new Float64Array(p.attributes.position.values),p.indices=Fe.createTypedArray(p.attributes.position.values.length/3,p.indices);let x=p.attributes,T=le.fromVertices(x.position.values);return t.position||delete x.position,new ht({attributes:x,indices:p.indices,primitiveType:p.primitiveType,boundingSphere:T,offsetAttribute:e._offsetAttribute})};Of.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Of({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function eze(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ht._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(Of.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=Of.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=eze(this)),this._textureCoordinateRotationPoints}}});var o_=Of;function jC(e){this._ellipsoid=e.ellipsoid??te.default,this._positions=[...e.positions]}Object.defineProperties(jC.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});jC.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new jC({positions:e.positions,ellipsoid:e.ellipsoid})};jC.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};jC.prototype.computeRectangle=function(e){return o_.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var tze=new ae,Ese=new d;jC.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(tze),n=Ae.toCartesian(ae.southwest(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=Ae.toCartesian(ae.northeast(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var AB=jC;function Ise(e){e=e??V.EMPTY_OBJECT,this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=e.persists??!1,this.pass=Be.COMPUTE,this.owner=e.owner}Ise.prototype.execute=function(e){e.execute(this)};var Hl=Ise;var oF=`in vec2 v_textureCoordinates;
|
||
|
||
uniform int u_polygonsLength;
|
||
uniform int u_extentsLength;
|
||
uniform highp sampler2D u_polygonTexture;
|
||
uniform highp sampler2D u_extentsTexture;
|
||
|
||
int getPolygonIndex(float dimension, vec2 coord) {
|
||
vec2 uv = coord.xy * dimension;
|
||
return int(floor(uv.y) * dimension + floor(uv.x));
|
||
}
|
||
|
||
vec2 getLookupUv(ivec2 dimensions, int i) {
|
||
int pixY = i / dimensions.x;
|
||
int pixX = i - (pixY * dimensions.x);
|
||
float pixelWidth = 1.0 / float(dimensions.x);
|
||
float pixelHeight = 1.0 / float(dimensions.y);
|
||
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
|
||
float v = (float(pixY) + 0.5) * pixelHeight;
|
||
return vec2(u, v);
|
||
}
|
||
|
||
vec4 getExtents(int i) {
|
||
return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i));
|
||
}
|
||
|
||
ivec2 getPositionsLengthAndExtentsIndex(int i) {
|
||
vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i);
|
||
vec4 value = texture(u_polygonTexture, uv);
|
||
return ivec2(int(value.x), int(value.y));
|
||
}
|
||
|
||
vec2 getPolygonPosition(int i) {
|
||
vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i);
|
||
return texture(u_polygonTexture, uv).xy;
|
||
}
|
||
|
||
vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) {
|
||
float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y);
|
||
float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x);
|
||
return vec2(latitude, longitude);
|
||
}
|
||
|
||
void main() {
|
||
int lastPolygonIndex = 0;
|
||
out_FragColor = vec4(1.0);
|
||
|
||
// Get the relevant region of the texture
|
||
float dimension = float(u_extentsLength);
|
||
if (u_extentsLength > 2) {
|
||
dimension = ceil(log2(float(u_extentsLength)));
|
||
}
|
||
int regionIndex = getPolygonIndex(dimension, v_textureCoordinates);
|
||
|
||
for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) {
|
||
ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex);
|
||
int positionsLength = positionsLengthAndExtents.x;
|
||
int polygonExtentsIndex = positionsLengthAndExtents.y;
|
||
lastPolygonIndex += 1;
|
||
|
||
// Only compute signed distance for the relevant part of the atlas
|
||
if (polygonExtentsIndex == regionIndex) {
|
||
float clipAmount = czm_infinity;
|
||
vec4 extents = getExtents(polygonExtentsIndex);
|
||
vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension;
|
||
vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents);
|
||
float s = 1.0;
|
||
|
||
// Check each edge for absolute distance
|
||
for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) {
|
||
vec2 a = getPolygonPosition(lastPolygonIndex + i);
|
||
vec2 b = getPolygonPosition(lastPolygonIndex + j);
|
||
|
||
vec2 ab = b - a;
|
||
vec2 pa = p - a;
|
||
float t = dot(pa, ab) / dot(ab, ab);
|
||
t = clamp(t, 0.0, 1.0);
|
||
|
||
vec2 pq = pa - t * ab;
|
||
float d = length(pq);
|
||
|
||
// Inside / outside computation to determine sign
|
||
bvec3 cond = bvec3(p.y >= a.y,
|
||
p.y < b.y,
|
||
ab.x * pa.y > ab.y * pa.x);
|
||
if (all(cond) || all(not(cond))) s = -s;
|
||
if (abs(d) < abs(clipAmount)) {
|
||
clipAmount = d;
|
||
}
|
||
}
|
||
|
||
// Normalize the range to [0,1]
|
||
vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5;
|
||
// In the case where we've iterated through multiple polygons, take the minimum
|
||
out_FragColor = min(out_FragColor, result);
|
||
}
|
||
|
||
lastPolygonIndex += positionsLength;
|
||
}
|
||
}`;function fs(e){e=e??V.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new _e,this.polygonRemoved=new _e,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(fs.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});fs.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};fs.prototype.get=function(e){return this._polygons[e]};fs.prototype.contains=function(e){return this._polygons.some(t=>AB.equals(t,e))};fs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>AB.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var nze=new ae;function ize(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let A=0;A<t.length;++A){let g=t[A];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[A];h.push(...m),m.reduce((_,y)=>ae.union(e[y].computeSphericalExtents(nze),_,_),a),t[A]=void 0,n[A]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),A=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}fs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function oze(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=ize(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let A=u.positions[h],g=Math.hypot(A.x,A.y),m=D.fastApproximateAtan2(g,A.z),_=D.fastApproximateAtan2(A.x,A.y);t[s++]=m,t[s++]=_}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var SW=new k;fs.prototype.update=function(e){let t=e.context;if(!fs.isSupported(e))throw new ce("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=fs.getTextureResolution(i,this.pixelsNeededForPolygonPositions,SW);i=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RG,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=fs.getTextureResolution(o,this.pixelsNeededForExtents,SW);o=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(oze(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=fs.getClippingDistanceTextureResolution(this,SW);r=new Nt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?et.RED:et.LUMINANCE,pixelDatatype:He.FLOAT,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=rze(this)};fs.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function rze(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Hl({fragmentShaderSource:oF,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var xse=new ae,sze=new ae;fs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=nn.OUTSIDE;this.inverse&&(o=nn.INSIDE);for(let r=0;r<i;++r){let a=n[r].computeRectangle(),c=e.rectangle;if(!l(c)&&l(e.boundingVolume?.computeCorners)){let f=e.boundingVolume.computeCorners();c=ae.fromCartesianArray(f,t,xse)}l(c)||(c=ae.fromBoundingSphere(e.boundingSphere,t,xse));let u=ae.simpleIntersection(c,a,sze);l(u)&&(o=nn.INTERSECTING)}return o};fs.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};fs.isSupported=function(e){return e?.context.webgl2};fs.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=qt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};fs.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(qt.maximumTextureSize,4096),t.y=Math.min(qt.maximumTextureSize,4096),t)};fs.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):fs.getTextureResolution(n,e.pixelsNeededForExtents,t)};fs.prototype.isDestroyed=function(){return!1};fs.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var xm=fs;var pB={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};pB.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?pB.SUNLIGHT:pB.SCENE_LIGHT:pB.NONE};var r_=Object.freeze(pB);function bse(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=r_.NONE}bse.requiresColorCorrect=function(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))};var lx=bse;var bm=`uniform vec3 u_radiiAndDynamicAtmosphereColor;
|
||
|
||
uniform float u_atmosphereLightIntensity;
|
||
uniform float u_atmosphereRayleighScaleHeight;
|
||
uniform float u_atmosphereMieScaleHeight;
|
||
uniform float u_atmosphereMieAnisotropy;
|
||
uniform vec3 u_atmosphereRayleighCoefficient;
|
||
uniform vec3 u_atmosphereMieCoefficient;
|
||
|
||
const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters.
|
||
const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled.
|
||
const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
|
||
|
||
/**
|
||
* This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as
|
||
* the transmittance value for the ray.
|
||
*
|
||
* @param {czm_ray} primaryRay The ray from the camera to the position.
|
||
* @param {float} primaryRayLength The length of the primary ray.
|
||
* @param {vec3} lightDirection The direction of the light to calculate the scattering from.
|
||
* @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to.
|
||
* @param {vec3} mieColor The variable the Mie scattering will be written to.
|
||
* @param {float} opacity The variable the transmittance will be written to.
|
||
* @glslFunction
|
||
*/
|
||
void computeScattering(
|
||
czm_ray primaryRay,
|
||
float primaryRayLength,
|
||
vec3 lightDirection,
|
||
float atmosphereInnerRadius,
|
||
out vec3 rayleighColor,
|
||
out vec3 mieColor,
|
||
out float opacity
|
||
) {
|
||
|
||
// Initialize the default scattering amounts to 0.
|
||
rayleighColor = vec3(0.0);
|
||
mieColor = vec3(0.0);
|
||
opacity = 0.0;
|
||
|
||
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
|
||
|
||
vec3 origin = vec3(0.0);
|
||
|
||
// Calculate intersection from the camera to the outer ring of the atmosphere.
|
||
czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius);
|
||
|
||
// Return empty colors if no intersection with the atmosphere geometry.
|
||
if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) {
|
||
return;
|
||
}
|
||
|
||
// To deal with smaller values of PRIMARY_STEPS (e.g. 4)
|
||
// we implement a split strategy: sky or horizon.
|
||
// For performance reasons, instead of a if/else branch
|
||
// a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0
|
||
float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength);
|
||
// Value close to 0.0: close to the horizon
|
||
// Value close to 1.0: above in the sky
|
||
float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x));
|
||
|
||
// The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere.
|
||
float start_0 = primaryRayAtmosphereIntersect.start;
|
||
primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0);
|
||
// The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller.
|
||
primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength));
|
||
|
||
// For the number of ray steps, distinguish inside or outside atmosphere (outer space)
|
||
// (1) from outer space we have to use more ray steps to get a realistic rendering
|
||
// (2) within atmosphere we need fewer steps for faster rendering
|
||
float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters
|
||
float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a));
|
||
int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled.
|
||
int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray.
|
||
|
||
// Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere.
|
||
float rayPositionLength = primaryRayAtmosphereIntersect.start;
|
||
// (1) Outside the atmosphere: constant rayStepLength
|
||
// (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps
|
||
float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength;
|
||
float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0));
|
||
float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS));
|
||
|
||
vec3 rayleighAccumulation = vec3(0.0);
|
||
vec3 mieAccumulation = vec3(0.0);
|
||
vec2 opticalDepth = vec2(0.0);
|
||
vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight);
|
||
|
||
// Sample positions on the primary ray.
|
||
for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) {
|
||
|
||
// The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to break early instead
|
||
if (i >= PRIMARY_STEPS) {
|
||
break;
|
||
}
|
||
|
||
// Calculate sample position along viewpoint ray.
|
||
vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength);
|
||
|
||
// Calculate height of sample position above ellipsoid.
|
||
float sampleHeight = length(samplePosition) - atmosphereInnerRadius;
|
||
|
||
// Calculate and accumulate density of particles at the sample position.
|
||
vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength;
|
||
opticalDepth += sampleDensity;
|
||
|
||
// Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere.
|
||
czm_ray lightRay = czm_ray(samplePosition, lightDirection);
|
||
czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius);
|
||
|
||
float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS);
|
||
float lightPositionLength = 0.0;
|
||
|
||
vec2 lightOpticalDepth = vec2(0.0);
|
||
|
||
// Sample positions along the light ray, to accumulate incidence of light on the latest sample segment.
|
||
for (int j = 0; j < LIGHT_STEPS_MAX; ++j) {
|
||
|
||
// The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to break early instead
|
||
if (j >= LIGHT_STEPS) {
|
||
break;
|
||
}
|
||
|
||
// Calculate sample position along light ray.
|
||
vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5);
|
||
|
||
// Calculate height of the light sample position above ellipsoid.
|
||
float lightHeight = length(lightPosition) - atmosphereInnerRadius;
|
||
|
||
// Calculate density of photons at the light sample position.
|
||
lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength;
|
||
|
||
// Increment distance on light ray.
|
||
lightPositionLength += lightStepLength;
|
||
}
|
||
|
||
// Compute attenuation via the primary ray and the light ray.
|
||
vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x))));
|
||
|
||
// Accumulate the scattering.
|
||
rayleighAccumulation += sampleDensity.x * attenuation;
|
||
mieAccumulation += sampleDensity.y * attenuation;
|
||
|
||
// Increment distance on primary ray.
|
||
rayPositionLength += (rayStepLength += rayStepLengthIncrease);
|
||
}
|
||
|
||
// Compute the scattering amount.
|
||
rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation;
|
||
mieColor = u_atmosphereMieCoefficient * mieAccumulation;
|
||
|
||
// Compute the transmittance i.e. how much light is passing through the atmosphere.
|
||
opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x))));
|
||
}
|
||
|
||
vec4 computeAtmosphereColor(
|
||
vec3 positionWC,
|
||
vec3 lightDirection,
|
||
vec3 rayleighColor,
|
||
vec3 mieColor,
|
||
float opacity
|
||
) {
|
||
// Setup the primary ray: from the camera position to the vertex position.
|
||
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
|
||
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
|
||
|
||
float cosAngle = dot(cameraToPositionWCDirection, lightDirection);
|
||
float cosAngleSq = cosAngle * cosAngle;
|
||
|
||
float G = u_atmosphereMieAnisotropy;
|
||
float GSq = G * G;
|
||
|
||
// The Rayleigh phase function.
|
||
float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq);
|
||
// The Mie phase function.
|
||
float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq));
|
||
|
||
// The final color is generated by combining the effects of the Rayleigh and Mie scattering.
|
||
vec3 rayleigh = rayleighPhase * rayleighColor;
|
||
vec3 mie = miePhase * mieColor;
|
||
|
||
vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity;
|
||
|
||
return vec4(color, opacity);
|
||
}
|
||
`;var rF=`uniform samplerCube u_radianceMap;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
|
||
const float twoSqrtPi = 2.0 * sqrt(czm_pi);
|
||
|
||
// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf
|
||
float computeShBasis(int index, vec3 s) {
|
||
if (index == 0) { // l = 0, m = 0
|
||
return 1.0 / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 1) { // l = 1, m = -1
|
||
return -sqrt(3.0) * s.y / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 2) { // l = 1, m = 0
|
||
return sqrt(3.0) * s.z / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 3) { // l = 1, m = 1
|
||
return -sqrt(3.0) * s.x / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 4) { // l = 2, m = -2
|
||
return sqrt(15.0) * s.y * s.x / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 5) { // l = 2, m = -1
|
||
return -sqrt(15.0) * s.y * s.z / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 6) { // l = 2, m = 0
|
||
return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 7) { // l = 2, m = 1
|
||
return -sqrt(15.0) * s.x * s.z / twoSqrtPi;
|
||
}
|
||
|
||
if (index == 8) { // l = 2, m = 2
|
||
return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi;
|
||
}
|
||
|
||
return 0.0;
|
||
}
|
||
|
||
float vdcRadicalInverse(int i)
|
||
{
|
||
float r;
|
||
float base = 2.0;
|
||
float value = 0.0;
|
||
float invBase = 1.0 / base;
|
||
float invBi = invBase;
|
||
for (int x = 0; x < 100; x++)
|
||
{
|
||
if (i <= 0)
|
||
{
|
||
break;
|
||
}
|
||
r = mod(float(i), base);
|
||
value += r * invBi;
|
||
invBi *= invBase;
|
||
i = int(float(i) * invBase);
|
||
}
|
||
return value;
|
||
}
|
||
|
||
vec2 hammersley2D(int i, int N)
|
||
{
|
||
return vec2(float(i) / float(N), vdcRadicalInverse(i));
|
||
}
|
||
|
||
// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics
|
||
const int samples = 256;
|
||
const float solidAngle = 1.0 / float(samples);
|
||
|
||
void main() {
|
||
// Get the current coefficient based on the uv
|
||
vec2 uv = v_textureCoordinates.xy * 3.0;
|
||
int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x));
|
||
|
||
for (int i = 0; i < samples; ++i) {
|
||
vec2 xi = hammersley2D(i, samples);
|
||
float phi = czm_twoPi * xi.x;
|
||
float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y);
|
||
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
|
||
vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi)));
|
||
|
||
// Generate the spherical harmonics basis from the direction
|
||
float Ylm = computeShBasis(coefficientIndex, direction);
|
||
|
||
vec3 lookupDirection = -direction.xyz;
|
||
lookupDirection.z = -lookupDirection.z;
|
||
|
||
vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0);
|
||
|
||
// Use the relevant function for this coefficient
|
||
out_FragColor += Ylm * color * solidAngle * sinTheta;
|
||
}
|
||
|
||
}
|
||
`;var sF=`precision highp float;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
uniform vec3 u_faceDirection; // Current cubemap face
|
||
uniform vec3 u_positionWC;
|
||
uniform mat4 u_enuToFixedFrame;
|
||
uniform vec4 u_brightnessSaturationGammaIntensity;
|
||
uniform vec4 u_groundColor; // alpha component represent albedo
|
||
|
||
vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) {
|
||
vec2 scaledUV = uv * 2.0 - 1.0;
|
||
|
||
if (faceDir.x != 0.0) {
|
||
return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0);
|
||
} else if (faceDir.y != 0.0) {
|
||
return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0);
|
||
} else {
|
||
return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0);
|
||
}
|
||
}
|
||
|
||
void main() {
|
||
float height = length(u_positionWC);
|
||
float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y;
|
||
float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0);
|
||
|
||
// Scale the position to ensure the sky color is present, even when underground.
|
||
vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius);
|
||
|
||
float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x;
|
||
float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius;
|
||
|
||
vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz;
|
||
vec3 normalizedDirection = normalize(direction);
|
||
|
||
czm_ray ray = czm_ray(positionWC, normalizedDirection);
|
||
czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius);
|
||
if (!czm_isEmpty(intersection)) {
|
||
intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii);
|
||
}
|
||
|
||
bool onEllipsoid = intersection.start >= 0.0;
|
||
float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius);
|
||
|
||
// Compute sky color for each position on a sphere at radius centered around the provided position's origin
|
||
vec3 skyPositionWC = positionWC + normalizedDirection * rayLength;
|
||
|
||
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
|
||
vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum));
|
||
vec3 mieColor;
|
||
vec3 rayleighColor;
|
||
float opacity;
|
||
czm_computeScattering(
|
||
ray,
|
||
rayLength,
|
||
lightDirectionWC,
|
||
atmosphereInnerRadius,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
|
||
vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity);
|
||
|
||
#ifdef ATMOSPHERE_COLOR_CORRECT
|
||
const bool ignoreBlackPixels = true;
|
||
atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels);
|
||
#endif
|
||
|
||
vec3 lookupDirection = -normalizedDirection;
|
||
// Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z.
|
||
lookupDirection.x = -lookupDirection.x;
|
||
lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection);
|
||
lookupDirection.x = -lookupDirection.x;
|
||
|
||
// Values outside the atmopshere are rendered as black, when they should be treated as transparent
|
||
float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0);
|
||
skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent
|
||
|
||
// Blend starmap with atmopshere scattering
|
||
float intensity = u_brightnessSaturationGammaIntensity.w;
|
||
vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection);
|
||
vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a);
|
||
vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0);
|
||
|
||
// Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height
|
||
vec3 up = normalize(positionWC);
|
||
float occlusion = max(dot(lightDirectionWC, up), 0.05);
|
||
vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0);
|
||
vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0));
|
||
|
||
vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor);
|
||
|
||
float brightness = u_brightnessSaturationGammaIntensity.x;
|
||
float saturation = u_brightnessSaturationGammaIntensity.y;
|
||
float gamma = u_brightnessSaturationGammaIntensity.z;
|
||
|
||
#ifdef ENVIRONMENT_COLOR_CORRECT
|
||
color.rgb = mix(vec3(0.0), color.rgb, brightness);
|
||
color.rgb = czm_saturation(color.rgb, saturation);
|
||
#endif
|
||
color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0.
|
||
color.rgb = czm_gammaCorrect(color.rgb);
|
||
|
||
out_FragColor = color;
|
||
}
|
||
`;var aF=`precision highp float;
|
||
|
||
in vec3 v_textureCoordinates;
|
||
|
||
uniform float u_roughness;
|
||
uniform samplerCube u_radianceTexture;
|
||
uniform vec3 u_faceDirection;
|
||
|
||
float vdcRadicalInverse(int i)
|
||
{
|
||
float r;
|
||
float base = 2.0;
|
||
float value = 0.0;
|
||
float invBase = 1.0 / base;
|
||
float invBi = invBase;
|
||
for (int x = 0; x < 100; x++)
|
||
{
|
||
if (i <= 0)
|
||
{
|
||
break;
|
||
}
|
||
r = mod(float(i), base);
|
||
value += r * invBi;
|
||
invBi *= invBase;
|
||
i = int(float(i) * invBase);
|
||
}
|
||
return value;
|
||
}
|
||
|
||
vec2 hammersley2D(int i, int N)
|
||
{
|
||
return vec2(float(i) / float(N), vdcRadicalInverse(i));
|
||
}
|
||
|
||
vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N)
|
||
{
|
||
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
|
||
float phi = czm_twoPi * xi.x;
|
||
float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y));
|
||
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
|
||
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
|
||
vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
||
vec3 tangentX = normalize(cross(upVector, N));
|
||
vec3 tangentY = cross(N, tangentX);
|
||
return tangentX * H.x + tangentY * H.y + N * H.z;
|
||
}
|
||
|
||
// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses
|
||
const int samples = 128;
|
||
|
||
void main() {
|
||
vec3 normal = u_faceDirection;
|
||
vec3 V = normalize(v_textureCoordinates);
|
||
float roughness = u_roughness;
|
||
|
||
vec4 color = vec4(0.0);
|
||
float weight = 0.0;
|
||
for (int i = 0; i < samples; ++i) {
|
||
vec2 xi = hammersley2D(i, samples);
|
||
vec3 H = importanceSampleGGX(xi, roughness, V);
|
||
vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector
|
||
|
||
float NdotL = max(dot(V, L), 0.0);
|
||
if (NdotL > 0.0) {
|
||
color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL;
|
||
weight += NdotL;
|
||
}
|
||
}
|
||
out_FragColor = color / weight;
|
||
}
|
||
`;var cF=`in vec3 position;
|
||
out vec3 v_textureCoordinates;
|
||
|
||
uniform vec3 u_faceDirection;
|
||
|
||
vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) {
|
||
vec2 scaledUV = uv;
|
||
|
||
if (faceDir.x != 0.0) {
|
||
return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x);
|
||
} else if (faceDir.y != 0.0) {
|
||
return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y);
|
||
} else {
|
||
return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z);
|
||
}
|
||
}
|
||
|
||
void main()
|
||
{
|
||
v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection);
|
||
v_textureCoordinates.y = -v_textureCoordinates.y;
|
||
v_textureCoordinates.z = -v_textureCoordinates.z;
|
||
gl_Position = vec4(position, 1.0);
|
||
}
|
||
`;function ui(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??V.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(qt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new K;let n=Math.pow(2,t-1);this._textureDimensions=new k(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??ui.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(ui.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});ui._maximumComputeCommandCount=8;ui._activeComputeCommandCount=0;ui._nextFrameCommandQueue=[];ui._queueCommand=(e,t)=>{if(ui._activeComputeCommandCount>=ui._maximumComputeCommandCount){ui._nextFrameCommandQueue.push(e);return}t.commandList.push(e),ui._activeComputeCommandCount++};ui._updateCommandQueue=e=>{if(ui._maximumComputeCommandCount=Math.log2(qt.maximumCubeMapSize),ui._nextFrameCommandQueue.length>0&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount){let t=ui._nextFrameCommandQueue.shift();for(;l(t)&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=ui._nextFrameCommandQueue.shift();continue}e.commandList.push(t),ui._activeComputeCommandCount++,t=ui._nextFrameCommandQueue.shift()}l(t)&&ui._nextFrameCommandQueue.push(t)}};ui.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};ui.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var aze=new d,cze=new d;function lze(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,cze),s=1.025,a=aze,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Tse=new d,uze=new R,fze=new se,dze=new G;function hze(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new jr({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new We({sources:[bm,sF]}),e._radianceMapFS=o),lx.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=kt.eastNorthUpToFixedFrame(r,a,uze),u=fze;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of jr.faceNames()){let A=e._radianceMapTextures[f];l(A)&&!A.isDestroyed()&&A.destroy(),A=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),e._radianceMapTextures[f]=A;let g=f,m=new Hl({fragmentShaderSource:o,outputTexture:A,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>jr.getDirection(h,Tse),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,dze)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){ui._activeComputeCommandCount--;return}let _=e._radianceMapComputeCommands;_[g]=void 0;let y=new as({context:n,colorTextures:[e._radianceMapTextures[g]]});y._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),y._unBind(),y.destroy(),ui._activeComputeCommandCount--,_.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,ui._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function mze(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,A,g,m,_)=>()=>{if(e.isDestroyed()||h.canceled){ui._activeComputeCommandCount--;return}let y=e._convolutionComputeCommands;y[A]=void 0,n.copyFace(t,g,m,_),c++,ui._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[A]=void 0;let C=e._specularMapTextures.length;c>=C&&(e._irradianceCommandDirty=!0,n.sampler=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let A of jr.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Nt({context:a,width:r,height:s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),m=e._va;l(m)||(m=jr.createVertexArray(a,A),e._va=m);let _=e._convolveSP;l(_)||(_=ln.fromCache({context:a,vertexShaderSource:cF,fragmentShaderSource:aF,attributeLocations:{positions:0}}),e._convolveSP=_);let y=new Hl({shaderProgram:_,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>jr.getDirection(A,Tse)}});y.postExecute=u(y,f,g,A,h),e._convolutionComputeCommands[f]=y,ui._queueCommand(y,t),++f}r/=2,s/=2}}var Sse=new k(3,3);function Aze(e,t){let n=t.context,i=Sse,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.FLOAT,pixelFormat:et.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new We({sources:[rF]}),e._irradianceMapFS=r);let s=new Hl({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){ui._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,ui._activeComputeCommandCount--},e._irradianceComputeCommand=s,ui._queueCommand(s,t),e._irradianceTextureDirty=!0}function pze(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new as({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Sse,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}ui.prototype.update=function(e){let t=e.mode;if(!ui.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ie.MORPHING){this._shouldRegenerateShaders=!1;return}ui._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=lze(this,e)||i===r_.SUNLIGHT&&!K.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=K.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(hze(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(mze(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(Aze(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){pze(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};ui.prototype.isDestroyed=function(){return!1};ui.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};ui.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};ui.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(G.fromCssColorString("#717145"));ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var s_=ui;var gB={HIGHLIGHT:0,REPLACE:1,MIX:2};gB.getColorBlend=function(e,t){if(e===gB.HIGHLIGHT)return 0;if(e===gB.REPLACE)return 1;if(e===gB.MIX)return D.clamp(t,D.EPSILON4,1)};var al=Object.freeze(gB);var gze={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},cl=Object.freeze(gze);var _ze={STEP:0,LINEAR:1,CUBICSPLINE:2},Tm=Object.freeze(_ze);var wse={};function _B(e){this._count=e.count,this._properties=ze(e.properties,!0)}_B.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,wse)};_B.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,wse,e)};_B.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return ze(n[e],!0)};_B.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=ze(n,!0)};var a_=_B;function Bc(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(Bc.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});Bc.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};Bc.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};Bc.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};Bc.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var wW=[];Bc.prototype.getPropertyIds=function(e,t){if(t=l(t)?t:[],t.length=0,l(this._metadataTable)){let n=this._metadataTable.getPropertyIds(wW);si(t,n)}if(l(this._batchTableHierarchy)){let n=this._batchTableHierarchy.getPropertyIds(e,wW);si(t,n)}if(l(this._jsonMetadataTable)){let n=this._jsonMetadataTable.getPropertyIds(wW);si(t,n)}return t};Bc.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};Bc.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new a_({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};Bc.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};Bc.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};Bc.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};Bc.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};Bc.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Bc.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Bc.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var Wl=Bc;function yB(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=Du.createModelTextureReader({textureInfo:r,channels:Eze(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=a??n.offset,c=c??n.scale,a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(yB.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});yB.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(yt(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(yt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==gt.SCALAR?(yt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==zt.UINT8?(yt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:gt.isVectorType(t)||t===gt.SCALAR?n!==zt.UINT8?(yt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(yt(`Property texture property ${e.id} has an unsupported type`),!1)};var yze=[void 0,"float","vec2","vec3","vec4"],Cze=[void 0,"int","ivec2","ivec3","ivec4"];yB.prototype.getGlslType=function(){let e=this._classProperty,t=gt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?yze[t]:Cze[t]};yB.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function Eze(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var lF=yB;function BW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new lF({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(BW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});BW.prototype.getProperty=function(e){return this._properties[e]};var c_=BW;function Bse(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Bse.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var uF=Bse;function DW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new uF({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(DW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});DW.prototype.getProperty=function(e){return this._properties[e]};var ux=DW;function CB(e){e=e??V.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(CB.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});CB.prototype.getPropertyTable=function(e){return this._propertyTables[e]};CB.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};CB.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var Da=CB;function Ize(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new jd({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new Wl({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new c_({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new ux({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new Da({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var fF=Ize;function xze(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new jd({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new Wl({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new c_({id:a,propertyTexture:bze(c),class:n.classes[c.class],textures:e.textures}))}return new Da({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function bze(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:Tze(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=wt(o.texture,r,!0)}return t}function Tze(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var dF=xze;function l_(e){e=e??V.EMPTY_OBJECT;let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(l_.prototype=Object.create(qi.prototype),l_.prototype.constructor=l_);Object.defineProperties(l_.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function Sze(e){try{let t=Pze(e),n=Oze(e),i=Fze(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=dt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load structural metadata",t)}}l_.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Sze(this),this._promise)};function wze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Bze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Dze(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];wze(o.properties,n)}return n}function vze(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&Bze(r,n)}}return n}async function Pze(e){let t;l(e._extension)?t=Dze(e._extension):t=vze(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=Qi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function Rze(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&Mze(r,t)}return t}function Mze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function Nze(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&Lze(r,t)}}return t}function Lze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function Oze(e){let t;l(e._extension)?t=Rze(e._extension):t=Nze(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=Qi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function Fze(e){let t=e._extension??e._extensionLegacy,n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=Qi.getSchemaLoader({resource:i})}else n=Qi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}l_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=fF({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=dF({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),Dse(this),this._state=dt.READY,!0};function Dse(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function Qze(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}l_.prototype.unload=function(){Dse(this),Qze(this),l(this._schemaLoader)&&Qi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var hF=l_;var fx={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};fx.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return fx.TRANSLATION;case"ROTATION":return fx.ROTATION;case"SCALE":return fx.SCALE;case"_FEATURE_ID":return fx.FEATURE_ID}};var Ss=Object.freeze(fx);var kze=65534,Uze=255;function mF(e){e=e??V.EMPTY_OBJECT;let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Rse(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],Gze(this)}Object.defineProperties(mF.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function Gze(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,A=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),_=vse(i,c,u,f,A,g,m);for(;l(_);){let y=s[_];if(!l(y)){y=r+o.length;let C=_;for(;C>=r;)C=o[C-r];o.push(C),s[_]=y}y>kze&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):y>Uze&&t instanceof Uint8Array&&(t=new Uint16Array(t)),_===c?(c=y,t[a]=y):_===u?(u=y,t[a+1]=y):(f=y,t[a+2]=y),_=vse(i,c,u,f,A,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function vse(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=vW(e,t,a,c,u);if(f===0)return t;let h=0,A=o?1:0,g=r?1:0,m=vW(e,n,h,A,g);if(m===0)return n;let _=s?1:0,y=0,C=r?1:0,E=vW(e,i,_,y,C);if(E===0)return i;let I=f&m&E,b,S,B;if(I&1)b=0,S=1,B=2;else if(I&2)b=0,B=1,S=2;else if(I&4)S=0,b=1,B=2;else if(I&8)S=0,B=1,b=2;else if(I&16)B=0,b=1,S=2;else if(I&32)B=0,S=1,b=2;else{let L=PW(f),p=PW(m),x=PW(E);return L<p&&L<x?t:p<x?n:i}let v=t*3;e[v+b]=a,e[v+S]=c,e[v+B]=u;let P=n*3;e[P+b]=h,e[P+S]=A,e[P+B]=g;let N=i*3;e[N+b]=_,e[N+S]=y,e[N+B]=C}function vW(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function PW(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}mF.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};mF.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,qt.maximumTextureSize),i=n,o=Pse(i),r=[];for(;i>1;)i>>=1,r.push(Pse(i));let s=new Nt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:et.LUMINANCE,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function Pse(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Rse(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Rse.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var dx=mF;function Mse(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function zze(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function AF(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0,this.needsGaussianSplats=!1}AF.prototype.postProcess=function(e){this.needsOutlines&&(Vze(this),jze(this,e)),this.needsGaussianSplats&&Wze(this,e)};function Vze(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new dx({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Fe.fromTypedArray(n.typedArray);let r=Hze(o.outlineCoordinates),s=new Mse(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function Hze(e){let t=new bn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=q.FLOAT,t.type=Ht.VEC3,t.normalized=!1,t.count=e.length/3,t}function Wze(e,t){let n=e.attributePlans,i=n.length;for(let o=0;o<i;o++){let r=n[o];r.loadBuffer=!1,r.loadTypedArray=!0}}function jze(e,t){Yze(e.attributePlans,t),l(e.indicesPlan)&&qze(e.indicesPlan,t)}function Yze(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Et.createVertexBuffer({typedArray:s,context:t,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function qze(e,t){let n=e.indices;if(e.loadBuffer){let i=Et.createIndexBuffer({typedArray:n.typedArray,context:t,usage:Qe.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}AF.AttributeLoadPlan=Mse;AF.IndicesLoadPlan=zze;var hx=AF;function Kze(e){e=e??V.EMPTY_OBJECT,this.webp=e.webp??!1,this.basis=e.basis??!1}var pF=Kze;function Nse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Nse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var gF=Nse;function Lse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties(Lse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var _F=Lse;function Ose(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(Ose.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var yF=Ose;var Xze={Direct:"Direct",Indirect:"Indirect"},YC=Object.freeze(Xze);function Fse(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(Fse.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var EB=Fse;function Qse(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(Qse.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var CF=Qse;function mx(){}function kse(e){return new J(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function Jze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new gF({position:t,adjustmentParams:n})}function Zze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=kse(e.covarianceMatrix);return new _F({position:t,adjustmentParams:n,covarianceMatrix:i})}function $ze(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new CF({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new yF({groupFlags:t,rotationThetas:n,params:i})}mx.load=function(e){let t=e.storageType;if(t===YC.Direct)return mx.loadDirect(e);if(t===YC.Indirect)return mx.loadIndirect(e);throw new ce(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};mx.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=Jze(r);t.push(s)}let i=kse(e.covarianceDirectUpperTriangle);return new EB({storageType:YC.Direct,anchorPointsDirect:t,covarianceDirect:i})};mx.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=Zze(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=$ze(s);o.push(a)}return new EB({storageType:YC.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var EF=mx;function Use(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(Use.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var IF=Use;function Gse(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(Gse.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var xF=Gse;function zse(e){this._ppeTextures=e}Object.defineProperties(zse.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var bF=zse;function Mr(e){e=e??V.EMPTY_OBJECT;let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=e.asynchronous??!0;this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Mr.prototype=Object.create(qi.prototype),Mr.prototype.constructor=Mr);Object.defineProperties(Mr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});Mr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=dt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=dt.FAILED,this.getError("Failed to load GPM data",e)}};Mr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=this._loadResources(this),this._promise)};function eVe(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}Mr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=eVe(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=Qi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};Mr.ppeTexturesMetadataSchemaCache=new Map;Mr._createPpeTextureClassJson=function(e,t){let n=e.traits,i=n.source,o=e.offset??0,r=(e.scale??1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};Mr._obtainPpeTexturesMetadataSchema=function(e){let n=Mr._collectPpeTexturePropertyIdentifiers(e).toString(),i=Mr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${Mr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=Mr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=Mf.fromJson(r),Mr.ppeTexturesMetadataSchemaCache.set(n,i),i};Mr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=Mr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};Mr._convertToStructuralMetadata=function(e,t){let n=[],i=Mr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],A={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new c_({id:s,name:a.name,propertyTexture:A,class:h,textures:t}))}return new Da({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};Mr.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,A=new xF({min:h.min,max:h.max,source:h.source}),g=new IF({traits:A,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new bF(r);this._meshPrimitiveGpmLocal=a;let c=Mr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=dt.READY,!0};Mr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)Qi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};Mr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var TF=Mr;var{Attribute:tVe,Indices:nVe,FeatureIdAttribute:Vse,FeatureIdTexture:Hse,FeatureIdImplicitRange:Wse,MorphTarget:iVe,Primitive:oVe,Instances:rVe,Skin:sVe,Node:aVe,AnimatedPropertyType:cVe,AnimationSampler:lVe,AnimationTarget:uVe,AnimationChannel:fVe,Animation:dVe,ArticulationStage:hVe,Articulation:mVe,Asset:AVe,Scene:pVe,Components:gVe,MetallicRoughness:_Ve,SpecularGlossiness:yVe,Specular:CVe,Anisotropy:RW,Clearcoat:MW,Material:EVe}=bn,Go={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function Kd(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=Ao.Y,forwardAxis:a=Ao.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:A=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:_=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=_,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Go.NOT_LOADED,this._textureState=Go.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(Kd.prototype=Object.create(qi.prototype),Kd.prototype.constructor=Kd);Object.defineProperties(Kd.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function IVe(e){e._state=Go.LOADING,e._textureState=Go.LOADING;try{let t=Qi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Go.LOADED,e._textureState=Go.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Go.FAILED,e._textureState=Go.FAILED,SF(e,t)}}async function xVe(e,t){jt.supportsWebP.initialized||await jt.supportsWebP.initialize(),e._supportedImageFormats=new pF({webp:jt.supportsWebP(),basis:t.context.supportsBasis});let n=w8e(e,t);return e._state=Go.PROCESSING,e._textureState=Go.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(Qi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}Kd.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=IVe(this),this._promise)};function SF(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function bVe(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&yt("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Go.POST_PROCESSING)}function TVe(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),(o.needsOutlines||o.needsGaussianSplats)&&SVe(e,o)}}function SVe(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}Kd.prototype._process=function(e){return this._state===Go.READY?!0:(this._state===Go.PROCESSING&&bVe(this,e),this._resourcesLoaded&&this._state===Go.POST_PROCESSING&&(TVe(this,e.context),this._state=Go.PROCESSED),this._resourcesLoaded&&this._state===Go.PROCESSED?(eae(this),this._typedArray=void 0,this._state=Go.READY,!0):!1)};Kd.prototype._processTextures=function(e){if(this._textureState===Go.READY)return!0;if(this._textureState!==Go.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Go.READY,this._texturesLoaded=!0,!0):!1};Kd.prototype.process=function(e){if(this._state===Go.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=xVe(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Go.FAILED;let o=this._processError;this._processError=void 0,SF(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Go.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Go.FAILED,SF(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Go.FAILED,SF(this,o)}return this._incrementallyLoadTextures?n:n&&i};function wVe(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,h=u.accessors[t].bufferView;return Qi.getVertexBufferLoader({gltf:u,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function BVe(e,t,n,i,o,r,s){return Qi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function DVe(e,t){let n=Qi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function jse(e,t,n){let i=t.byteOffset,o=Bu(e,t),r=t.count,s=Rf(t.type),a=t.componentType,c=q.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),q.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=q.createTypedArray(a,f),A=new DataView(n.buffer),g=new Array(s),m=Kg(t.componentType);i=n.byteOffset+i;for(let _=0;_<r;++_){m(A,i,s,c,g);for(let y=0;y<s;++y)h[_*s+y]=g[y];i+=o}return h}function vVe(e,t){let n=e.type;if(n===Ht.SCALAR)return t.fill(0);let i=Ht.getMathType(n);return t.fill(i.clone(i.ZERO))}function PVe(e,t,n,i){let o=e.type,r=e.count;if(o===Ht.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===Ht.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=Ht.getMathType(o),a=Ht.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function RVe(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=jse(r,n,t.typedArray);i=i??!1,PVe(n,s,o,i)}function wF(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=DVe(e,o),s=RVe(e,r,t,n,i);return e._loaderPromises.push(s),i}return vVe(t,i)}function Pu(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function MVe(e){return e===Number?0:new e}function NVe(e){switch(e){case q.BYTE:return 127;case q.UNSIGNED_BYTE:return 255;case q.SHORT:return 32767;case q.UNSIGNED_SHORT:return 65535;default:return 1}}var LVe={VEC2:new k(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new se(-1,-1,-1,-1)};function OVe(e,t){let n=NVe(e.componentDatatype),i=LVe[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function FVe(e,t,n){let i=e.decodeMatrix,o=Pu(n,e.decodedMin),r=Pu(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new bn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new k(i[6],i[7]),s.quantizedVolumeStepSize=new k(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new se(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new se(i[0],i[6],i[12],i[18])),t.quantization=s}function QVe(e,t,n,i,o){let r=e.accessors[t],s=Ht.getMathType(r.type),a=r.normalized??!1,c=new tVe;c.name=n,c.semantic=i,c.setIndex=o,c.constant=MVe(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=Pu(s,r.min),c.max=Pu(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=Bu(e,r),Ii(r,"WEB3D_quantized_attributes")&&FVe(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===ct.POSITION||c.semantic===ct.NORMAL||c.semantic===ct.TANGENT||c.semantic===ct.TEXCOORD||c.semantic===ct.FEATURE_ID||c.semantic===ct.SCALE||c.semantic===ct.ROTATION;return e.extensionsRequired?.includes("KHR_mesh_quantization")&&a&&u&&OVe(c,s),c}function Yse(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var kVe={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function NW(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=kVe;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function UVe(e){let t=e===ct.POSITION,n=e===ct.FEATURE_ID,i=e===ct.TEXCOORD;return t||n||i}function GVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=q.createArrayBufferView(o,t.typedArray.buffer)}}function zVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,n&&(e.buffer=t.buffer),i&&l(t.typedArray)&&(e.typedArray=q.createArrayBufferView(e.componentDatatype,t.typedArray.buffer)),e.semantic===ct.POSITION){let o=s=>{let a=1/0,c=-1/0,u=1/0,f=-1/0,h=1/0,A=-1/0;for(let g=0;g<s.length;g+=3){let m=s[g],_=s[g+1],y=s[g+2];a=Math.min(a,m),c=Math.max(c,m),u=Math.min(u,_),f=Math.max(f,_),h=Math.min(h,y),A=Math.max(A,y)}return[new d(a,u,h),new d(c,f,A)]},r=e.typedArray;[e.min,e.max]=o(r)}}function VVe(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=jse(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function qse(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,f=u.accessors[t],h=f.bufferView,A=n.gltfSemantic,g=n.renamedSemantic,m=n.modelSemantic,_=l(m)?Yse(g):void 0,C=QVe(u,t,A,m,_);if(!l(o)&&!l(h)&&!l(r))return C;let E=wVe(e,t,A,i,o,r,s,a,c),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();return e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[A])?GVe(C,E,s,a):l(r)?zVe(C,E,s,a):VVe(u,f,C,E,s,a)},C}function Kse(e,t,n,i,o,r,s,a,c){let u=n.modelSemantic,f=u===ct.POSITION,h=u===ct.FEATURE_ID,A=f&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=f&&e._enablePick&&!c.context.webgl2,m=e._loadForClassification&&h,_=e._loadAttributesAsTypedArray,y=!_,C=_||A||g||m,b=qse(e,t,n,i,o,r,a?!1:y,a?!0:C,c),S=new hx.AttributeLoadPlan(b);return S.loadBuffer=y,S.loadTypedArray=C,S}function HVe(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=NW(e,Ss,i),u=c.modelSemantic,f=u===Ss.TRANSLATION||u===Ss.ROTATION||u===Ss.SCALE,h=u===Ss.TRANSLATION,A=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!A,_=e._loadAttributesFor2D&&!o.scene3DOnly;return qse(e,t,c,void 0,void 0,void 0,m,A||h&&(!a||_||g),o)}function WVe(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new nVe;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,A=e._loadForClassification&&o,m=!f,_=f||h||A,E=BVe(e,t,n,i,r?!1:m,r?!0:_,s),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{u.indexDatatype=E.indexDatatype,u.buffer=E.buffer,u.typedArray=E.typedArray};let S=new hx.IndicesLoadPlan(u);return S.loadBuffer=m,S.loadTypedArray=_,S}function ll(e,t,n,i){let o=e.gltfJson,r=Du.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Qi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=Du.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Go.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function jVe(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new yVe;return l(i)&&(c.diffuseTexture=ll(e,i,n)),l(o)&&(c.specularGlossinessTexture=ll(e,o,n)),c.diffuseFactor=Pu(se,r),c.specularFactor=Pu(d,s),c.glossinessFactor=a,c}function YVe(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new _Ve;return l(i)&&(c.baseColorTexture=ll(e,i,n)),l(o)&&(c.metallicRoughnessTexture=ll(e,o,n)),c.baseColorFactor=Pu(se,r),c.metallicFactor=s,c.roughnessFactor=a,c}function qVe(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new CVe;return l(o)&&(a.specularTexture=ll(e,o,n)),l(s)&&(a.specularColorTexture=ll(e,s,n)),a.specularFactor=i,a.specularColorFactor=Pu(d,r),a}function KVe(e,t,n){let{anisotropyStrength:i=RW.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=RW.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new RW;return l(r)&&(s.anisotropyTexture=ll(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function XVe(e,t,n){let{clearcoatFactor:i=MW.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=MW.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new MW;return l(o)&&(c.clearcoatTexture=ll(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=ll(e,s,n)),l(a)&&(c.clearcoatNormalTexture=ll(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function JVe(e,t,n){let i=new EVe,o=t.extensions??V.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=jVe(e,r,n):(l(u)&&(i.metallicRoughness=YVe(e,u,n)),l(s)&&!i.unlit&&(i.specular=qVe(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=KVe(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=XVe(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=ll(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=ll(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=ll(e,t.occlusionTexture,n)),i.emissiveFactor=Pu(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Xse(e,t){let n=new Vse;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Jse(e,t,n,i){let o=new Vse,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=Yse(r.attribute),o.positionalLabel=i,o}function Zse(e,t){let n=new Wse;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function $se(e,t,n,i){let o=new Wse,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function ZVe(e,t,n,i){let o=new Hse;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=ll(e,r,n,on.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function $Ve(e,t,n,i,o,r){let s=new Hse,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=ll(e,c,i,on.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function e8e(e,t,n,i,o){let r=new iVe,s=void 0,a=void 0,c=void 0,u=!1;for(let f in t){if(!t.hasOwnProperty(f))continue;let h=t[f],A=NW(e,ct,f),g=Kse(e,h,A,s,a,c,u,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function t8e(e,t,n,i){let o=new oVe,r=new hx(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=JVe(e,e.gltfJson.materials[s],i));let a=t.extensions??V.EMPTY_OBJECT,c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=n8e(e,u,r));let f=a.KHR_spz_gaussian_splats_compression;l(f)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,A=a.KHR_draco_mesh_compression,g=!1,m=t.attributes;if(l(m))for(let B in m){if(!m.hasOwnProperty(B))continue;let v=m[B],P=NW(e,ct,B),N=P.modelSemantic;if(h&&!UVe(N))continue;N===ct.FEATURE_ID&&(g=!0);let L=Kse(e,v,P,t,A,f,n,c,i);r.attributePlans.push(L),o.attributes.push(L.attribute)}let _=t.targets;if(l(_)&&!h)for(let B=0;B<_.length;++B)o.morphTargets.push(e8e(e,_[B],c,r,i));let y=t.indices;if(l(y)){let B=WVe(e,y,t,A,g,c,i);l(B)&&(r.indicesPlan=B,o.indices=B.indices)}let C=a.EXT_structural_metadata,E=a.EXT_mesh_features,I=a.EXT_feature_metadata,b=l(I);l(E)?i8e(e,o,E,i):b&&o8e(e,o,I,i),l(C)?r8e(o,C):b&&s8e(e,o,I);let S=t.mode;if(h&&S!==Me.TRIANGLES)throw new ce("Only triangle meshes can be used for classification.");return o.primitiveType=S,o}function n8e(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return wF(e,i,!1)}function i8e(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=ZVe(e,s,i,a):l(s.attribute)?c=Xse(s,a):c=Zse(s,a),t.featureIds.push(c)}}function o8e(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Jse(u,h,A,g):m=$se(u,h,A,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m=$Ve(e,u,h,i,A,g);t.featureIds.push(m)}}function r8e(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function s8e(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function a8e(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new rVe,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(HVe(e,f,r,u,n))}let s=i.extensions??V.EMPTY_OBJECT,a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?c8e(o,a):l(c)&&l8e(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function c8e(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=Xse(o,r):s=Zse(o,r),e.featureIds.push(s)}}function l8e(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,A;l(a.featureIds.attribute)?A=Jse(a,u,f,h):A=$se(a,u,f,h),t.featureIds.push(A)}}function u8e(e,t,n){let i=new aVe;i.name=t.name,i.matrix=Pu(R,t.matrix),i.translation=Pu(d,t.translation),i.rotation=Pu(Le,t.rotation),i.scale=Pu(d,t.scale);let o=t.extensions??V.EMPTY_OBJECT,r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new ce("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=a8e(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let A=0;A<u.length;++A)i.primitives.push(t8e(e,u[A],l(i.instances),n));let f=t.weights??c.weights,h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function f8e(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=u8e(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function d8e(e,t,n){let i=new sVe,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=wF(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(R.IDENTITY);return i}function h8e(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=d8e(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function m8e(e,t,n,i){let o=new hF({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function A8e(e,t,n,i){let o=new TF({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function p8e(e,t){let n=new lVe,i=e.gltfJson.accessors,o=i[t.input];n.input=wF(e,o);let r=t.interpolation;n.interpolation=Tm[r]??Tm.LINEAR;let s=i[t.output];return n.output=wF(e,s,!0),n}function g8e(e,t){let n=new uVe,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=cVe[o],n}function _8e(e,t,n){let i=new fVe,o=e.sampler;return i.sampler=t[o],i.target=g8e(e.target,n),i}function y8e(e,t,n){let i=new dVe;i.name=t.name;let o=t.samplers.map(function(s,a){let c=p8e(e,s);return c.index=a,c}),r=t.channels.map(function(s){return _8e(s,o,n)});return i.samplers=o,i.channels=r,i}function C8e(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=y8e(e,o,t);return s.index=r,s})}function E8e(e){let t=new hVe;t.name=e.name;let n=e.type.toUpperCase();return t.type=cl[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function I8e(e){let t=new mVe;return t.name=e.name,t.stages=e.stages.map(E8e),t}function x8e(e){let n=(e.extensions??V.EMPTY_OBJECT).AGI_articulations?.articulations;return l(n)?n.map(I8e):[]}function b8e(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=t??e.nodes,t=l(t)?t:[],t}function T8e(e,t){let n=new pVe,i=b8e(e);return n.nodes=i.map(function(o){return t[o]}),n}var S8e=new d;function w8e(e,t){let n=e.gltfJson,i=n.extensions??V.EMPTY_OBJECT,o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let E=r.featureTables,I=r.featureTextures,b=l(E)?E:[],S=l(I)?I:[];e._sortedPropertyTableIds=Object.keys(b).sort(),e._sortedFeatureTextureIds=Object.keys(S).sort()}let a=f8e(e,t),c=h8e(e,a),u=C8e(e,a),f=x8e(n),h=T8e(n,a),A=new gVe,g=new AVe,m=n.asset.copyright;if(l(m)){let E=m.split(";").map(function(I){return new Dt(I.trim())});g.credits=E}if(A.asset=g,A.scene=h,A.nodes=a,A.skins=c,A.animations=u,A.articulations=f,A.upAxis=e._upAxis,A.forwardAxis=e._forwardAxis,l(s)){let E=d.fromArray(s.center,0,S8e);A.transform=R.fromTranslation(E,A.transform)}if(e._components=A,l(o)||l(r)){let E=m8e(e,o,r,t);e._loaderPromises.push(E)}let _=i.NGA_gpm_local;if(l(_)){let E=EF.load(_);e._components.extensions.NGA_gpm_local=E}let y=n.meshes;if(l(y))for(let E of y){let I=E.primitives;if(l(I))for(let b of I){let S=b.extensions;if(l(S)){let B=S.NGA_gpm_local;if(l(B)){let v=A8e(e,n,B,t);e._loaderPromises.push(v)}}}}let C=[];return si(C,e._loaderPromises),e._incrementallyLoadTextures||si(C,e._texturesPromises),Promise.all(C)}function B8e(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._textureLoaders.length=0}function eae(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._bufferViewLoaders.length=0}function D8e(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._geometryLoaders.length=0}function v8e(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function P8e(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function R8e(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}Kd.prototype.isUnloaded=function(){return this._state===Go.UNLOADED};Kd.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&Qi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,B8e(this),eae(this),D8e(this),v8e(this),P8e(this),R8e(this),this._components=void 0,this._typedArray=void 0,this._state=Go.UNLOADED};var Ff=Kd;function Ax(e){e=e??V.EMPTY_OBJECT;let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new me("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new me("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new as({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new as({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}Ax.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};Ax.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};Ax.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};Ax.prototype.isDestroyed=function(){return!1};Ax.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var BF=Ax;var jl={RGBA4:ee.RGBA4,RGBA8:ee.RGBA8,RGBA16F:ee.RGBA16F,RGBA32F:ee.RGBA32F,RGB5_A1:ee.RGB5_A1,RGB565:ee.RGB565,DEPTH_COMPONENT16:ee.DEPTH_COMPONENT16,STENCIL_INDEX8:ee.STENCIL_INDEX8,DEPTH_STENCIL:ee.DEPTH_STENCIL,DEPTH24_STENCIL8:ee.DEPTH24_STENCIL8,validate:function(e){return e===jl.RGBA4||e===jl.RGBA8||e===jl.RGBA16F||e===jl.RGBA32F||e===jl.RGB5_A1||e===jl.RGB565||e===jl.DEPTH_COMPONENT16||e===jl.STENCIL_INDEX8||e===jl.DEPTH_STENCIL||e===jl.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ee.FLOAT?jl.RGBA32F:e===ee.HALF_FLOAT_OES?jl.RGBA16F:jl.RGBA8}},Yl=Object.freeze(jl);function IB(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=qt.maximumRenderbufferSize,o=e.format??Yl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(IB.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});IB.prototype._getRenderbuffer=function(){return this._renderbuffer};IB.prototype.isDestroyed=function(){return!1};IB.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var Qf=IB;function Hs(e){e=e??V.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Hs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Hs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Hs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??He.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??et.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Nt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:on.NEAREST}),this._numSamples>1){let a=Yl.getColorFormat(o);this._colorRenderbuffers[s]=new Qf({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_COMPONENT,pixelDatatype:He.UNSIGNED_INT,sampler:on.NEAREST}):this._depthRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new BF({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new as({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Hs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};Hs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Hs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};Hs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Hs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Hs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Hs.prototype.getDepthTexture=function(){return this._depthTexture};Hs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Hs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Hs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Hs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Hs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Hs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Hs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Hs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Hs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var vi=Hs;var DF=`uniform sampler2D u_pointCloud_colorGBuffer;
|
||
uniform sampler2D u_pointCloud_depthGBuffer;
|
||
uniform vec2 u_distanceAndEdlStrength;
|
||
in vec2 v_textureCoordinates;
|
||
|
||
vec2 neighborContribution(float log2Depth, vec2 offset)
|
||
{
|
||
float dist = u_distanceAndEdlStrength.x;
|
||
vec2 texCoordOrig = v_textureCoordinates + offset * dist;
|
||
vec2 texCoord0 = v_textureCoordinates + offset * floor(dist);
|
||
vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist);
|
||
|
||
float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0));
|
||
float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1));
|
||
|
||
// ignore depth values that are the clear depth
|
||
if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) {
|
||
return vec2(0.0);
|
||
}
|
||
|
||
// interpolate the two adjacent depth values
|
||
float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist));
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix);
|
||
return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0);
|
||
}
|
||
|
||
void main()
|
||
{
|
||
float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates));
|
||
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth);
|
||
eyeCoordinate /= eyeCoordinate.w;
|
||
|
||
float log2Depth = log2(-eyeCoordinate.z);
|
||
|
||
if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer
|
||
{
|
||
discard;
|
||
}
|
||
|
||
vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates);
|
||
|
||
// sample from neighbors left, right, down, up
|
||
vec2 texelSize = 1.0 / czm_viewport.zw;
|
||
|
||
vec2 responseAndCount = vec2(0.0);
|
||
|
||
responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0));
|
||
responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0));
|
||
responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y));
|
||
responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y));
|
||
|
||
float response = responseAndCount.x / responseAndCount.y;
|
||
float strength = u_distanceAndEdlStrength.y;
|
||
float shade = exp(-response * 300.0 * strength);
|
||
color.rgb *= shade;
|
||
out_FragColor = vec4(color);
|
||
|
||
// Input and output depth are the same.
|
||
gl_FragDepth = depthOrLogDepth;
|
||
}
|
||
`;function px(){this._framebuffer=new vi({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(px.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function M8e(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var LW=new k;function N8e(e,t){let n=new We({defines:["LOG_DEPTH_WRITE"],sources:[DF]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return LW.x=e._radius,LW.y=e._strength,LW}},o=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:Be.CESIUM_3D_TILE,owner:e}),e._clearCommand=new Ei({framebuffer:e.framebuffer,color:new G(0,0,0,0),depth:1,renderState:Ue.fromCache(),pass:Be.CESIUM_3D_TILE,owner:e})}function L8e(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),N8e(e,t)}function tae(e){return e.drawBuffers&&e.fragmentDepth}px.isSupported=tae;function O8e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0;
|
||
layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=We.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main()
|
||
{
|
||
czm_point_cloud_post_process_main();
|
||
#ifdef LOG_DEPTH
|
||
czm_writeLogDepth();
|
||
out_FragData_1 = czm_packDepth(gl_FragDepth);
|
||
#else
|
||
out_FragData_1 = czm_packDepth(gl_FragCoord.z);
|
||
#endif
|
||
}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}px.prototype.update=function(e,t,n,i){if(!tae(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,L8e(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Me.POINTS||u.pass===Be.TRANSLUCENT)continue;let f,h,A=u.derivedCommands.pointCloudProcessor;l(A)&&(f=A.command,h=A.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=nt.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=O8e(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(A)||(A={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=A),A.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};px.prototype.isDestroyed=function(){return!1};px.prototype.destroy=function(){return M8e(this),ue(this)};var u_=px;function nae(e){let t=e??{};this.attenuation=t.attenuation??!1,this.geometricErrorScale=t.geometricErrorScale??1,this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=t.eyeDomeLighting??!0,this.eyeDomeLightingStrength=t.eyeDomeLightingStrength??1,this.eyeDomeLightingRadius=t.eyeDomeLightingRadius??1,this.backFaceCulling=t.backFaceCulling??!1,this.normalShading=t.normalShading??!0}nae.isSupported=function(e){return u_.isSupported(e.context)};var op=nae;var ec={},F8e=new se(0,0,0,1),Dc=new se,Q8e=new Xe,OW=new k,FW=new k;ec.worldToWindowCoordinates=function(e,t,n){return ec.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var iae=new se,oae=new d;function xB(e,t,n,i){let o=n.viewMatrix,r=R.multiplyByVector(o,se.fromElements(e.x,e.y,e.z,1,iae),iae),s=d.multiplyComponents(t,d.normalize(r,oae),oae);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,R.multiplyByVector(n.frustum.projectionMatrix,r,i)}var k8e=new Ae(Math.PI,D.PI_OVER_TWO),U8e=new d,G8e=new d;ec.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=ec.computeActualEllipsoidPosition(o,t,F8e);if(!l(r))return;let s=e.canvas,a=Q8e;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ie.SCENE2D){let f=e.mapProjection,h=k8e,A=f.project(h,U8e),g=d.clone(c.position,G8e),m=c.frustum.clone(),_=R.computeViewportTransformation(a,0,1,new R),y=c.frustum.projectionMatrix,C=c.positionWC.y,E=d.fromElements(D.sign(C)*A.x-C,0,-c.positionWC.x),I=kt.pointToGLWindowCoordinates(y,_,E);if(C===0||I.x<=0||I.x>=s.clientWidth)u=!0;else{if(I.x>s.clientWidth*.5){a.width=I.x,c.frustum.right=A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x+=I.x,c.position.x=-c.position.x;let b=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}else{a.x+=I.x,a.width-=I.x,c.frustum.left=-A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x=a.x-a.width,c.position.x=-c.position.x;let b=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}d.clone(g,c.position),c.frustum=m.clone(),i=k.clone(OW,i),(i.x<0||i.x>s.clientWidth)&&(i.x=FW.x)}}if(o.mode!==ie.SCENE2D||u){if(Dc=xB(r,n,c,Dc),Dc.z<0&&!(c.frustum instanceof An)&&!(c.frustum instanceof ls))return;i=ec.clipToGLWindowCoordinates(a,Dc,i)}return i.y=s.clientHeight-i.y,i};ec.worldToDrawingBufferCoordinates=function(e,t,n){if(n=ec.worldToWindowCoordinates(e,t,n),!!l(n))return ec.transformWindowToDrawingBuffer(e,n,n)};var rp=new d,z8e=new Ae;ec.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ie.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,z8e);if(!l(r))return;if(o.project(r,rp),i===ie.COLUMBUS_VIEW)return d.fromElements(rp.z,rp.x,rp.y,n);if(i===ie.SCENE2D)return d.fromElements(0,rp.x,rp.y,n);let s=e.morphTime;return d.fromElements(D.lerp(rp.z,t.x,s),D.lerp(rp.x,t.y,s),D.lerp(rp.y,t.z,s),n)};var rae=new d,sae=new d,aae=new R;ec.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,rae),R.computeViewportTransformation(e,0,1,aae),R.multiplyByPoint(aae,rae,sae),k.fromCartesian3(sae,n)};ec.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return k.fromElements(t.x*o,t.y*r,n)};var V8e=new se,cae=new se;ec.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=se.clone(se.UNIT_W,V8e);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,A=e.camera.frustum;if(l(A.fovy)){h=R.multiplyByVector(r.inverseViewProjection,f,cae);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=A.offCenterFrustum;l(g)&&(A=g),h=cae,h.x=(f.x*(A.right-A.left)+A.left+A.right)*.5,h.y=(f.y*(A.top-A.bottom)+A.bottom+A.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=R.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var to=ec;var gx={};gx._deprecationWarning=Pr;var sp=Uint32Array.BYTES_PER_ELEMENT;gx.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=sp;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=sp;let s=o.getUint32(t,!0);t+=sp;let a=o.getUint32(t,!0);t+=sp;let c=o.getUint32(t,!0);t+=sp;let u=o.getUint32(t,!0);t+=sp;let f=o.getUint32(t,!0);t+=sp;let h;u>=570425344?(t-=sp*2,h=a,u=c,f=0,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=sp,h=u,u=a,f=c,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let A;a===0?A={BATCH_LENGTH:h??0}:(A=yr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(gx._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{batchLength:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var vF=gx;function bB(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function lae(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=q.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function H8e(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=q.createTypedArray(n,i),o[t]=r),r}bB.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??q.UNSIGNED_INT,n=n??1,lae(this,e,t,n,1,i.byteOffset)):i};bB.prototype.hasProperty=function(e){return l(this.json[e])};bB.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=q.fromName(i.componentType)),lae(this,e,t,n,this.featuresLength,i.byteOffset)):H8e(this,e,t,i)};bB.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var Sm=bB;function TB(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=e.parseAsPropertyAttributes??!1,r=e.customAttributeOutput,s=W8e(n),a;l(s.jsonProperties)&&(a=new a_({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new VI({extension:s.hierarchy,binaryBody:i}));let u=Em.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,A,g;if(o){let y=Y8e(t,u,f,i,r);g=y.transcodedSchema,A=[new ux({propertyAttribute:y.propertyAttributeJson,class:y.transcodedClass})]}else{let y=j8e(t,u,f,i);g=y.transcodedSchema;let C=y.featureTableJson;h=new jd({count:C.count,properties:C.properties,class:y.transcodedClass,bufferViews:y.bufferViewsTypedArrays}),A=[]}let m=[];if(l(h)||l(a)||l(c)){let y=new Wl({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(y)}let _={schema:g,propertyTables:m,propertyAttributes:A,extensions:s.extensions,extras:s.extras};return new Da(_)}function W8e(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(TB._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function j8e(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new ce(`Property ${h} requires a batch table binary.`);let A=n[h],g=vf(A);r[h]={bufferView:a},o[h]=uae(A),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=Mf.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function Y8e(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let A=n[h];if(!l(i)&&!l(A.typedArray))throw new ce(`Property ${h} requires a batch table binary.`);let g=Qt.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=uae(A);m.name=h,r[g]=m;let _=g.toUpperCase();_.startsWith("_")||(_=`_${_}`);let y=A.typedArray;l(y)||(y=vf(A).createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e));let C=new bn.Attribute;C.name=_,C.count=e,C.type=A.type;let E=q.fromTypedArray(y);(E===q.INT||E===q.UNSIGNED_INT||E===q.DOUBLE)&&(TB._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${_}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),y=new Float32Array(y)),C.componentDatatype=q.fromTypedArray(y),C.typedArray=y,o.push(C),s[g]={attribute:_}}let c={classes:{}};c.classes[t]={properties:r};let u=Mf.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function uae(e){let t=q8e(e.componentType);return{type:e.type,componentType:t}}function q8e(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}TB._deprecationWarning=Pr;TB._oneTimeWarning=yt;var f_=TB;var qC={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},K8e=bn.FeatureIdAttribute;function d_(e){e=e??V.EMPTY_OBJECT;let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadAttributesFor2D??!1,A=e.enablePick??!1,g=e.loadIndicesForWireframe??!1,m=e.loadPrimitiveOutline??!0,_=e.loadForClassification??!1;n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=A,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=_,this._state=qC.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(d_.prototype=Object.create(qi.prototype),d_.prototype.constructor=d_);Object.defineProperties(d_.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});d_.prototype.load=function(){if(l(this._promise))return this._promise;let e=vF.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new Sm(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(a)&&(this._transform=R.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new Ff({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=qC.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=qC.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return X8e(u,f)}),this._promise};function X8e(e,t){return e.unload(),e._state=qC.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}d_.prototype.process=function(e){if(this._state===qC.READY)return!0;if(this._state!==qC.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=R.multiplyTransformation(this._transform,n.transform,n.transform),J8e(this,n),this._components=n,this._arrayBuffer=void 0,this._state=qC.READY,!0};function J8e(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)fae(r[a]);t.structuralMetadata=o}function fae(e){let t=e.children.length;for(let i=0;i<t;i++)fae(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Qt.getAttributeBySemantic(o,ct.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new K8e;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}d_.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var PF=d_;function h_(e){e=e??V.EMPTY_OBJECT,this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(h_.prototype=Object.create(qi.prototype),h_.prototype.constructor=h_);Object.defineProperties(h_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});h_.prototype.load=function(){return Promise.resolve(this)};h_.prototype.process=function(e){return l(this._components)||(this._components=u4e(this._geoJson,e),this._geoJson=void 0),!0};function Z8e(){this.lines=void 0,this.points=void 0,this.properties=void 0}function $8e(){this.features=[]}function QW(e){let t=e[0],n=e[1],i=e[2]??0;return new d(t,n,i)}function kW(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=QW(e[o]);return[n]}function e4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function dae(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function t4e(e){let t=e.length,n=[];for(let i=0;i<t;i++){let o=dae(e[i]);si(n,o)}return n}function n4e(e){return[QW(e)]}function i4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=QW(e[i]);return n}var o4e={LineString:kW,MultiLineString:e4e,MultiPolygon:t4e,Polygon:dae,MultiPoint:i4e,Point:n4e},r4e={LineString:Me.LINES,MultiLineString:Me.LINES,MultiPolygon:Me.LINES,Polygon:Me.LINES,MultiPoint:Me.POINTS,Point:Me.POINTS};function hae(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=o4e[n],o=r4e[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new Z8e;o===Me.LINES?s.lines=i(r):o===Me.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function s4e(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)hae(n[o],t)}var a4e={FeatureCollection:s4e,Feature:hae},RF=new d;function c4e(e,t,n){let i=0,o=0,r=e.length;for(let N=0;N<r;N++){let L=e[N];if(l(L.lines)){let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x];i+=T.length,o+=(T.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Fe.createTypedArray(i,o),u=Fe.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),A=0,g=0;for(let N=0;N<r;N++){let L=e[N];if(!l(L.lines))continue;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++){let O=T[M],U=d.fromDegrees(O.x,O.y,O.z,te.WGS84,RF),Q=R.multiplyByPoint(t,U,RF);d.minimumByComponent(f,Q,f),d.maximumByComponent(h,Q,h),d.pack(Q,s,A*3),a[A]=N,M<w-1&&(c[g*2]=A,c[g*2+1]=A+1,g++),A++}}}let m=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});m.vertexArrayDestroyable=!1;let _=Et.createVertexBuffer({typedArray:a,context:n.context,usage:Qe.STATIC_DRAW});_.vertexArrayDestroyable=!1;let y=Et.createIndexBuffer({typedArray:c,context:n.context,usage:Qe.STATIC_DRAW,indexDatatype:u});y.vertexArrayDestroyable=!1;let C=new bn.Attribute;C.semantic=ct.POSITION,C.componentDatatype=q.FLOAT,C.type=Ht.VEC3,C.count=i,C.min=f,C.max=h,C.buffer=m;let E=new bn.Attribute;E.semantic=ct.FEATURE_ID,E.setIndex=0,E.componentDatatype=q.FLOAT,E.type=Ht.SCALAR,E.count=i,E.buffer=_;let I=[C,E],b=new bn.Material;b.unlit=!0;let S=new bn.Indices;S.indexDatatype=u,S.count=c.length,S.buffer=y;let B=new bn.FeatureIdAttribute;B.featureCount=r,B.propertyTableId=0,B.setIndex=0,B.positionalLabel="featureId_0";let v=[B],P=new bn.Primitive;return P.attributes=I,P.indices=S,P.featureIds=v,P.primitiveType=Me.LINES,P.material=b,P}function l4e(e,t,n){let i=0,o=e.length;for(let I=0;I<o;I++){let b=e[I];l(b.points)&&(i+=b.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let I=0;I<o;I++){let b=e[I];if(!l(b.points))continue;let S=b.points.length;for(let B=0;B<S;B++){let v=b.points[B],P=d.fromDegrees(v.x,v.y,v.z,te.WGS84,RF),N=R.multiplyByPoint(t,P,RF);d.minimumByComponent(a,N,a),d.maximumByComponent(c,N,c),d.pack(N,r,u*3),s[u]=I,u++}}let f=Et.createVertexBuffer({typedArray:r,context:n.context,usage:Qe.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});h.vertexArrayDestroyable=!1;let A=new bn.Attribute;A.semantic=ct.POSITION,A.componentDatatype=q.FLOAT,A.type=Ht.VEC3,A.count=i,A.min=a,A.max=c,A.buffer=f;let g=new bn.Attribute;g.semantic=ct.FEATURE_ID,g.setIndex=0,g.componentDatatype=q.FLOAT,g.type=Ht.SCALAR,g.count=i,g.buffer=h;let m=[A,g],_=new bn.Material;_.unlit=!0;let y=new bn.FeatureIdAttribute;y.featureCount=o,y.propertyTableId=0,y.setIndex=0,y.positionalLabel="featureId_0";let C=[y],E=new bn.Primitive;return E.attributes=m,E.featureIds=C,E.primitiveType=Me.POINTS,E.material=_,E}function u4e(e,t){let n=new $8e,i=a4e[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new ce("GeoJSON must have at least one feature");let s={};for(let N=0;N<r;N++){let p=o[N].properties??V.EMPTY_OBJECT;for(let x in p)p.hasOwnProperty(x)&&(l(s[x])||(s[x]=new Array(r)))}for(let N=0;N<r;N++){let L=o[N];for(let p in s)if(s.hasOwnProperty(p)){let x=L.properties[p]??"";s[p][N]=x}}let a=new a_({count:r,properties:s}),u=[new Wl({id:0,count:r,jsonMetadataTable:a})],f=Mf.fromJson({}),h=new Da({schema:f,propertyTables:u}),A=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,_=!1;for(let N=0;N<r;N++){let L=o[N];if(l(L.lines)){m=!0;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++)d.minimumByComponent(A,T[M],A),d.maximumByComponent(g,T[M],g)}}if(l(L.points)){_=!0;let p=L.points.length;for(let x=0;x<p;x++){let T=L.points[x];d.minimumByComponent(A,T,A),d.maximumByComponent(g,T,g)}}}let y=d.midpoint(A,g,new d),C=d.fromDegrees(y.x,y.y,y.z,te.WGS84,new d),E=kt.eastNorthUpToFixedFrame(C,te.WGS84,new R),I=R.inverseTransformation(E,new R),b=[];m&&b.push(c4e(o,I,t)),_&&b.push(l4e(o,I,t));let S=new bn.Node;S.index=0,S.primitives=b;let B=[S],v=new bn.Scene;v.nodes=B;let P=new bn.Components;return P.scene=v,P.nodes=B,P.transform=E,P.structuralMetadata=h,P}h_.prototype.unload=function(){this._components=void 0};var MF=h_;var NF={};NF._deprecationWarning=Pr;var m_=Uint32Array.BYTES_PER_ELEMENT;NF.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=m_;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=m_;let s=o.getUint32(t,!0);t+=m_;let a=o.getUint32(t,!0);if(a===0)throw new ce("featureTableJsonByteLength is zero, the feature table must be defined.");t+=m_;let c=o.getUint32(t,!0);t+=m_;let u=o.getUint32(t,!0);t+=m_;let f=o.getUint32(t,!0);t+=m_;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new ce(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=m_;let A=yr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(NF._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{gltfFormat:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var LF=NF;var ap={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},OF=bn.Attribute,f4e=bn.FeatureIdAttribute,Aae=bn.Instances;function cp(e){e=e??V.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,A=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._enablePick=g,this._state=ap.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(cp.prototype=Object.create(qi.prototype),cp.prototype.constructor=cp);Object.defineProperties(cp.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});cp.prototype.load=function(){if(l(this._promise))return this._promise;let e=LF.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Sm(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new ce("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(c)&&(this._transform=R.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=Tu(e.gltf);h=h.replace(/[\s\0]+$/,"");let A=this._baseResource.getDerivedResource({url:h});u.gltfResource=A,u.baseResource=A}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new Ff(u);return this._gltfLoader=f,this._state=ap.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=ap.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw d4e(this,h)}),this._promise};function d4e(e,t){return e.unload(),e._state=ap.FAILED,e.getError("Failed to load i3dm",t)}cp.prototype.process=function(e){if(this._state===ap.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===ap.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=R.multiplyTransformation(this._transform,i.transform,i.transform),A4e(this,i,e),h4e(this,i),this._components=i,this._arrayBuffer=void 0,this._state=ap.READY,!0};function h4e(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var FF=new d,UW=new Array(4),m4e=new R;function A4e(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",q.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=g4e(o,r),h;c&&(h=new Float32Array(4*r));let A;u&&(A=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),_=new d,y=new d,C=new d,E=new d,I=new J,b=new Le,S=new Array(4),B=new d,v=new Array(3),P=new R;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let Q=le.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],Q.center,FF),f[3*i+0]=FF.x,f[3*i+1]=FF.y,f[3*i+2]=FF.z;let z=R.fromTranslation(Q.center,m4e);t.transform=R.multiplyTransformation(z,t.transform,t.transform)}for(i=0;i<r;i++){_=d.clone(m[i]),l(s)&&d.add(_,d.unpack(s),_),c&&(_4e(o,a,i,b,_,C,y,E,I,P),Le.pack(b,S,0),h[4*i+0]=S[0],h[4*i+1]=S[1],h[4*i+2]=S[2],h[4*i+3]=S[3]),u&&(y4e(o,i,B),d.pack(B,v,0),A[3*i+0]=v[0],A[3*i+1]=v[1],A[3*i+2]=v[2]);let Q=o.getProperty("BATCH_ID",q.UNSIGNED_SHORT,1,i);l(Q)||(Q=i),g[i]=Q}let N=new Aae;N.transformInWorldSpace=!0;let L=e._buffers,p=new OF;if(p.name="Instance Translation",p.semantic=Ss.TRANSLATION,p.componentDatatype=q.FLOAT,p.type=Ht.VEC3,p.count=r,p.typedArray=f,!c){let Q=Et.createVertexBuffer({context:n.context,typedArray:f,usage:Qe.STATIC_DRAW});Q.vertexArrayDestroyable=!1,L.push(Q),p.buffer=Q}if(N.attributes.push(p),c){let Q=new OF;Q.name="Instance Rotation",Q.semantic=Ss.ROTATION,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC4,Q.count=r,Q.typedArray=h,N.attributes.push(Q)}if(u){let Q=new OF;if(Q.name="Instance Scale",Q.semantic=Ss.SCALE,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC3,Q.count=r,c)Q.typedArray=A;else{let z=Et.createVertexBuffer({context:n.context,typedArray:A,usage:Qe.STATIC_DRAW});z.vertexArrayDestroyable=!1,L.push(z),Q.buffer=z}N.attributes.push(Q)}let x=new OF;x.name="Instance Feature ID",x.setIndex=0,x.semantic=Ss.FEATURE_ID,x.componentDatatype=q.FLOAT,x.type=Ht.SCALAR,x.count=r;let T=Et.createVertexBuffer({context:n.context,typedArray:g,usage:Qe.STATIC_DRAW});T.vertexArrayDestroyable=!1,L.push(T),x.buffer=T,N.attributes.push(x);let w=new f4e;w.propertyTableId=0,w.setIndex=0,w.positionalLabel="instanceFeatureId_0",N.featureIds.push(w);let M=t.nodes,O=M.length,U=!1;for(i=0;i<O;i++){let Q=M[i];Q.primitives.length>0&&(Q.instances=U?p4e(N):N,U=!0)}}function p4e(e){let t=new Aae;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=ze(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function g4e(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",q.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(o))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new ce("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var mae=new Array(4);function _4e(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",q.FLOAT,3,n,UW),h=e.getProperty("NORMAL_RIGHT",q.FLOAT,3,n,mae),A=!1;if(l(f)){if(!l(h))throw new ce("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),A=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",q.UNSIGNED_SHORT,2,n,UW),m=e.getProperty("NORMAL_RIGHT_OCT32P",q.UNSIGNED_SHORT,2,n,mae);if(l(g)){if(!l(m))throw new ce("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");Fn.octDecodeInRange(g[0],g[1],65535,r),Fn.octDecodeInRange(m[0],m[1],65535,s),A=!0}else t?(kt.eastNorthUpToFixedFrame(o,te.WGS84,u),R.getMatrix3(u,c)):J.clone(J.IDENTITY,c)}A&&(d.cross(s,r,a),d.normalize(a,a),J.setColumn(c,0,s,c),J.setColumn(c,1,r,c),J.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function y4e(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",q.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",q.FLOAT,3,t,UW);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function C4e(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}cp.prototype.isUnloaded=function(){return this._state===ap.UNLOADED};cp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),C4e(this),this._components=void 0,this._arrayBuffer=void 0,this._state=ap.UNLOADED};var QF=cp;var E4e={STOPPED:0,ANIMATING:1},wm=Object.freeze(E4e);function _x(){this.times=void 0,this.points=void 0,me.throwInstantiationError()}_x.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};_x.prototype.evaluate=me.throwInstantiationError;_x.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=t??0,e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};_x.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};_x.prototype.clampTime=function(e){let t=this.times;return D.clamp(e,t[0],t[t.length-1])};var _o=_x;function yx(e){this._value=e,this._valueType=_o.getPointType(e)}Object.defineProperties(yx.prototype,{value:{get:function(){return this._value}}});yx.prototype.findTimeInterval=function(e){};yx.prototype.wrapTime=function(e){return 0};yx.prototype.clampTime=function(e){return 0};yx.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var kF=yx;function Cx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Cx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Cx.prototype.findTimeInterval=_o.prototype.findTimeInterval;Cx.prototype.wrapTime=_o.prototype.wrapTime;Cx.prototype.clampTime=_o.prototype.clampTime;Cx.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var KC=Cx;var pae={};pae.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var SB=pae;var gae=[],_ae=[],yae=[],Cae=[];function I4e(e,t,n){let i=gae,o=yae,r=_ae,s=Cae;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),SB.solve(i,r,o,s)}function x4e(e){let t=gae,n=yae,i=_ae,o=Cae;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),SB.solve(t,i,n,o)}function ql(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(ql.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});ql.createC1=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createNaturalCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points;if(n.length<3)return new KC({points:n,times:t});let i=x4e(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createClampedCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=_o.getPointType(n[0]);if(n.length<3)return new KC({points:n,times:t});let s=I4e(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new ql({times:t,points:n,inTangents:c,outTangents:a})};ql.hermiteCoefficientMatrix=new R(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);ql.prototype.findTimeInterval=_o.prototype.findTimeInterval;var b4e=new se,Ex=new d;ql.prototype.wrapTime=_o.prototype.wrapTime;ql.prototype.clampTime=_o.prototype.clampTime;ql.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=b4e;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=R.multiplyByVector(ql.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,Ex),h.add(t,Ex,t),h.multiplyByScalar(r[s],f.z,Ex),h.add(t,Ex,t),h.multiplyByScalar(o[s],f.w,Ex),h.add(t,Ex,t))};var XC=ql;function Ix(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Ix.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Ix.prototype.findTimeInterval=_o.prototype.findTimeInterval;Ix.prototype.wrapTime=_o.prototype.wrapTime;Ix.prototype.clampTime=_o.prototype.clampTime;Ix.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var UF=Ix;function T4e(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function xx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=T4e(this),this._lastTimeIndex=0}Object.defineProperties(xx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});xx.prototype.findTimeInterval=_o.prototype.findTimeInterval;xx.prototype.wrapTime=_o.prototype.wrapTime;xx.prototype.clampTime=_o.prototype.clampTime;xx.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var GF=xx;var bx=bn.AnimatedPropertyType;function GW(e){e=e??V.EMPTY_OBJECT;let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,v4e(this)}Object.defineProperties(GW.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function S4e(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new XC({times:e,points:n,inTangents:i,outTangents:o})}function Eae(e,t,n,i){if(e.length===1&&t.length===1)return new kF(t[0]);switch(n){case Tm.STEP:return new UF({times:e,points:t});case Tm.CUBICSPLINE:return S4e(e,t);case Tm.LINEAR:return i===bx.ROTATION?new GF({times:e,points:t}):new KC({times:e,points:t})}}function w4e(e,t,n,i,o){let r=[];if(i===bx.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===Tm.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(Eae(e,f,n,i))}}else r.push(Eae(e,t,n,i));return r}var B4e=new d,D4e=new Le;function v4e(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=w4e(i,o,r,a,u);e._splines=f,e._path=a}GW.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===bx.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===bx.TRANSLATION||n===bx.SCALE?o[n]=r.evaluate(s,B4e):n===bx.ROTATION&&(o[n]=r.evaluate(s,D4e))}}};var zF=GW;function zW(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=K.clone(n.startTime),this._delay=n.delay??0,this._stopTime=K.clone(n.stopTime),this.removeOnStop=n.removeOnStop??!1,this._multiplier=n.multiplier??1,this._reverse=n.reverse??!1,this._loop=n.loop??vu.NONE,this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new _e,this.update=new _e,this.stop=new _e,this._state=wm.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,P4e(this)}Object.defineProperties(zW.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function P4e(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,A=i._runtimeNodes[h],g=new zF({channel:u,runtimeAnimation:e,runtimeNode:A}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}zW.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var VF=zW;function lp(e){this.animationAdded=new _e,this.animationRemoved=new _e,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(lp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function VW(e,t,n){let i=e._model,o=new VF(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}lp.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return VW(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return VW(this,n[i],e)};lp.prototype.addAll=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=VW(this,n[r],e);i.push(s)}return i};lp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};lp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};lp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};lp.prototype.get=function(e){return this._runtimeAnimations[e]};var HF=[];function R4e(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}lp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&K.equals(e.time,this._previousTime))return!1;this._previousTime=K.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=K.addSeconds(a.startTime??o,a.delay,new K)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=K.lessThanOrEquals(c,o),A=l(f)&&K.greaterThan(o,f),g=0;if(u!==0){let y=K.secondsDifference(A?f:o,c);g=l(a._animationTime)?a._animationTime(u,y):y/u}let m=a.loop===vu.REPEAT||a.loop===vu.MIRRORED_REPEAT,_=(h||m&&!l(a.startTime))&&(g<=1||m)&&!A;if(g===a._prevAnimationDelta){let y=a._state===wm.STOPPED;if(_!==y)continue}if(a._prevAnimationDelta=g,_||a._state===wm.ANIMATING){if(_&&a._state===wm.STOPPED&&(a._state=wm.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===vu.REPEAT)g=g-Math.floor(g);else if(a.loop===vu.MIRRORED_REPEAT){let C=Math.floor(g),E=g-C;g=C%2===1?1-E:E}a.reverse&&(g=1-g);let y=g*u*a.multiplier;y=D.clamp(y,a.localStartTime,a.localStopTime),a.animate(y),a.update.numberOfListeners>0&&(a._updateEventTime=y,e.afterRender.push(a._raiseUpdateEvent)),i=!0,_||(a._state=wm.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&HF.push(a))}}n=HF.length;for(let s=0;s<n;++s){let a=HF[s];t.splice(t.indexOf(a),1),e.afterRender.push(R4e(this,r,a))}return HF.length=0,i};var WF=lp;function JC(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(JC.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});JC.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};JC.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};JC.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var jF=JC;var wB={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};wB.getStyleCommandsNeeded=function(e,t){return t===0?wB.ALL_OPAQUE:t===e?wB.ALL_TRANSLUCENT:wB.OPAQUE_AND_TRANSLUCENT};var Bm=Object.freeze(wB);var A_={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};A_.is3DTiles=function(e){switch(e){case A_.TILE_GLTF:case A_.TILE_B3DM:case A_.TILE_I3DM:case A_.TILE_PNTS:case A_.TILE_GEOJSON:return!0;case A_.GLTF:return!1}};var Nr=Object.freeze(A_);function Zr(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=Bm.ALL_OPAQUE,M4e(this)}Object.defineProperties(Zr.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function M4e(e){let t=e._model,n=Nr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new Sa(s,o)}else for(o=0;o<i;o++)r[o]=new jF({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Gl({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}Zr.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=Bm.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};Zr.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Zr.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Zr.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Zr.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Zr.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Zr.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Zr.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};Zr.prototype.getFeature=function(e){return this._features[e]};Zr.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};Zr.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};Zr.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};Zr.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};Zr.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};Zr.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};Zr.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};Zr.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};Zr.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var N4e=new G;Zr.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Gl.DEFAULT_COLOR_VALUE),this.setAllShow(Gl.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?e.color.evaluateColor(n,N4e)??Gl.DEFAULT_COLOR_VALUE:Gl.DEFAULT_COLOR_VALUE,o=l(e.show)?e.show.evaluate(n)??Gl.DEFAULT_SHOW_VALUE:Gl.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};Zr.prototype.isDestroyed=function(){return!1};Zr.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var YF=Zr;var ZC={VERTEX:0,FRAGMENT:1,BOTH:2};ZC.includesVertexShader=function(e){return e===ZC.VERTEX||e===ZC.BOTH};ZC.includesFragmentShader=function(e){return e===ZC.FRAGMENT||e===ZC.BOTH};var pe=Object.freeze(ZC);var Iae={name:"TilesetPipelineStage"};Iae.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return k.ZERO}};e.uniformMap=wt(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK};var qF=Iae;var KF=`// robust iterative solution without trig functions
|
||
// https://github.com/0xfaded/ellipse_demo/issues/1
|
||
// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse
|
||
//
|
||
// This version uses only a single iteration for best performance. For fog
|
||
// rendering, the difference is negligible.
|
||
vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) {
|
||
vec2 p = abs(pos);
|
||
vec2 inverseRadii = 1.0 / radii;
|
||
vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii;
|
||
|
||
// We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t))
|
||
// but store the cos and sin of t in a vec2 for efficiency.
|
||
// Initial guess: t = cos(pi/4)
|
||
vec2 tTrigs = vec2(0.70710678118);
|
||
vec2 v = radii * tTrigs;
|
||
|
||
// Find the evolute of the ellipse (center of curvature) at v.
|
||
vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs;
|
||
// Find the (approximate) intersection of p - evolute with the ellipsoid.
|
||
vec2 q = normalize(p - evolute) * length(v - evolute);
|
||
// Update the estimate of t.
|
||
tTrigs = (q + evolute) * inverseRadii;
|
||
tTrigs = normalize(clamp(tTrigs, 0.0, 1.0));
|
||
v = radii * tTrigs;
|
||
|
||
return v * sign(pos);
|
||
}
|
||
|
||
vec3 computeEllipsoidPositionWC(vec3 positionMC) {
|
||
// Get the world-space position and project onto a meridian plane of
|
||
// the ellipsoid
|
||
vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz;
|
||
|
||
vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z);
|
||
vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz);
|
||
|
||
// Reconstruct a 3D point in world space
|
||
return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y);
|
||
}
|
||
|
||
void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) {
|
||
|
||
vec3 fogColor = groundAtmosphereColor.rgb;
|
||
|
||
// If there is dynamic lighting, apply that to the fog.
|
||
const float NONE = 0.0;
|
||
if (czm_atmosphereDynamicLighting != NONE) {
|
||
float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0);
|
||
fogColor *= darken;
|
||
}
|
||
|
||
// Tonemap if HDR rendering is disabled
|
||
#ifndef HDR
|
||
fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);
|
||
fogColor.rgb = czm_inverseGamma(fogColor.rgb);
|
||
#endif
|
||
|
||
vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar);
|
||
color = vec4(withFog, color.a);
|
||
}
|
||
|
||
void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) {
|
||
vec3 rayleighColor;
|
||
vec3 mieColor;
|
||
float opacity;
|
||
|
||
vec3 positionWC;
|
||
vec3 lightDirection;
|
||
|
||
// When the camera is in space, compute the position per-fragment for
|
||
// more accurate ground atmosphere. All other cases will use
|
||
//
|
||
// The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717
|
||
if (false) {
|
||
positionWC = computeEllipsoidPositionWC(attributes.positionMC);
|
||
lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting);
|
||
|
||
// The fog color is derived from the ground atmosphere color
|
||
czm_computeGroundAtmosphereScattering(
|
||
positionWC,
|
||
lightDirection,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
} else {
|
||
positionWC = attributes.positionWC;
|
||
lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting);
|
||
rayleighColor = v_atmosphereRayleighColor;
|
||
mieColor = v_atmosphereMieColor;
|
||
opacity = v_atmosphereOpacity;
|
||
}
|
||
|
||
//color correct rayleigh and mie colors
|
||
const bool ignoreBlackPixels = true;
|
||
rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels);
|
||
mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels);
|
||
|
||
vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity);
|
||
|
||
if (u_isInFog) {
|
||
float distanceToCamera = length(attributes.positionEC);
|
||
applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera);
|
||
} else {
|
||
// Ground atmosphere
|
||
}
|
||
}
|
||
`;var XF=`void atmosphereStage(ProcessedAttributes attributes) {
|
||
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting);
|
||
|
||
czm_computeGroundAtmosphereScattering(
|
||
// This assumes the geometry stage came before this.
|
||
v_positionWC,
|
||
lightDirection,
|
||
v_atmosphereRayleighColor,
|
||
v_atmosphereMieColor,
|
||
v_atmosphereOpacity
|
||
);
|
||
}
|
||
`;var xae={name:"AtmospherePipelineStage"};xae.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([XF]),i.addFragmentLines([KF]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return D.fog(o,n.fog.density)>D.EPSILON3}};var JF=xae;var ZF=`#ifdef DIFFUSE_IBL
|
||
vec3 sampleDiffuseEnvironment(vec3 cubeDir)
|
||
{
|
||
#ifdef CUSTOM_SPHERICAL_HARMONICS
|
||
return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients);
|
||
#else
|
||
return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients);
|
||
#endif
|
||
}
|
||
#endif
|
||
|
||
#ifdef SPECULAR_IBL
|
||
vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness)
|
||
{
|
||
#ifdef CUSTOM_SPECULAR_IBL
|
||
float lod = roughness * model_specularEnvironmentMapsMaximumLOD;
|
||
return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb;
|
||
#else
|
||
float lod = roughness * czm_specularEnvironmentMapsMaximumLOD;
|
||
return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb;
|
||
#endif
|
||
}
|
||
vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)
|
||
{
|
||
// see https://bruop.github.io/ibl/ at Single Scattering Results
|
||
// Roughness dependent fresnel, from Fdez-Aguera
|
||
vec3 f90 = max(vec3(1.0 - roughness), f0);
|
||
vec3 F = fresnelSchlick2(f0, f90, NdotV);
|
||
|
||
vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
|
||
vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness);
|
||
|
||
return specularSample * (F * brdfLut.x + brdfLut.y);
|
||
}
|
||
#endif
|
||
|
||
#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
|
||
/**
|
||
* Compute the light contributions from environment maps and spherical harmonic coefficients.
|
||
* See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation
|
||
* of the single- and multi-scattering terms.
|
||
*
|
||
* @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position.
|
||
* @param {vec3} normalEC The surface normal in eye coordinates.
|
||
* @param {czm_modelMaterial} The material properties.
|
||
* @return {vec3} The computed HDR color.
|
||
*/
|
||
vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) {
|
||
vec3 f0 = material.specular;
|
||
float roughness = material.roughness;
|
||
float specularWeight = 1.0;
|
||
#ifdef USE_SPECULAR
|
||
specularWeight = material.specularWeight;
|
||
#endif
|
||
float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);
|
||
|
||
// see https://bruop.github.io/ibl/ at Single Scattering Results
|
||
// Roughness dependent fresnel, from Fdez-Aguera
|
||
vec3 f90 = max(vec3(1.0 - roughness), f0);
|
||
vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV);
|
||
|
||
vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
|
||
vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y);
|
||
|
||
#ifdef DIFFUSE_IBL
|
||
vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC);
|
||
vec3 irradiance = sampleDiffuseEnvironment(normalMC);
|
||
|
||
vec3 averageFresnel = f0 + (1.0 - f0) / 21.0;
|
||
float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y);
|
||
vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems);
|
||
vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse;
|
||
vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x;
|
||
#else
|
||
vec3 diffuseContribution = vec3(0.0);
|
||
#endif
|
||
|
||
#ifdef USE_ANISOTROPY
|
||
// Bend normal to account for anisotropic distortion of specular reflection
|
||
vec3 anisotropyDirection = material.anisotropicB;
|
||
vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC);
|
||
vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection);
|
||
float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness);
|
||
float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor;
|
||
vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4));
|
||
vec3 reflectEC = reflect(-viewDirectionEC, bentNormal);
|
||
#else
|
||
vec3 reflectEC = reflect(-viewDirectionEC, normalEC);
|
||
#endif
|
||
|
||
#ifdef SPECULAR_IBL
|
||
vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC);
|
||
vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness);
|
||
vec3 specularContribution = radiance * FssEss * model_iblFactor.y;
|
||
#else
|
||
vec3 specularContribution = vec3(0.0);
|
||
#endif
|
||
|
||
return diffuseContribution + specularContribution;
|
||
}
|
||
#endif
|
||
`;var bae={name:"ImageBasedLightingPipelineStage"},L4e=new k;bae.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),hm.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(ZF);let c={model_iblFactor:function(){return k.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,L4e)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=wt(c,e.uniformMap)};var $F=bae;var O4e=D.EPSILON16;function WW(e){e=e??V.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(WW.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=D.clamp(e,this.minimumValue,this.maximumValue),D.equalsEpsilon(this._currentValue,e,O4e)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var F4e=new d,HW=new J;WW.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=F4e,o;switch(t){case cl.XROTATE:o=J.fromRotationX(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.YROTATE:o=J.fromRotationY(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.ZROTATE:o=J.fromRotationZ(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=R.multiplyByTranslation(e,i,e);break;case cl.XSCALE:i.x=n,i.y=1,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.YSCALE:i.x=1,i.y=n,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.ZSCALE:i.x=1,i.y=1,i.z=n,e=R.multiplyByScale(e,i,e);break;case cl.UNIFORMSCALE:e=R.multiplyByUniformScale(e,n,e);break;default:break}return e};var e2=WW;function t2(e){e=e??V.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Q4e(this)}Object.defineProperties(t2.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Q4e(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new e2({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}t2.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var k4e=new R,U4e=new R;t2.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=R.clone(R.IDENTITY,k4e),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=R.multiplyTransformation(s.originalTransform,e,U4e);s.transform=a}};var n2=t2;var i2=`void modelColorStage(inout czm_modelMaterial material)
|
||
{
|
||
material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend);
|
||
float highlight = ceil(model_colorBlend);
|
||
material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight);
|
||
material.alpha *= model_color.a;
|
||
}
|
||
`;var Tx={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};Tx.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(i2);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=Be.TRANSLUCENT),i.addUniform("vec4",Tx.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",Tx.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=wt(o,e.uniformMap)};var $C=Tx;var o2=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE
|
||
vec4 getClippingPlane(
|
||
highp sampler2D packedClippingPlanes,
|
||
int clippingPlaneNumber,
|
||
mat4 transform
|
||
) {
|
||
int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH;
|
||
int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH);
|
||
float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH);
|
||
float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT);
|
||
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
|
||
float v = (float(pixY) + 0.5) * pixelHeight;
|
||
vec4 plane = texture(packedClippingPlanes, vec2(u, v));
|
||
return czm_transformPlane(plane, transform);
|
||
}
|
||
#else
|
||
// Handle uint8 clipping texture instead
|
||
vec4 getClippingPlane(
|
||
highp sampler2D packedClippingPlanes,
|
||
int clippingPlaneNumber,
|
||
mat4 transform
|
||
) {
|
||
int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each
|
||
int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH;
|
||
int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH);
|
||
float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH);
|
||
float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT);
|
||
float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel
|
||
float v = (float(pixY) + 0.5) * pixelHeight;
|
||
vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0;
|
||
vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w);
|
||
vec4 plane;
|
||
plane.xyz = czm_octDecode(oct, 65535.0);
|
||
plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v)));
|
||
return czm_transformPlane(plane, transform);
|
||
}
|
||
#endif
|
||
|
||
float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) {
|
||
vec4 position = czm_windowToEyeCoordinates(fragCoord);
|
||
vec3 clipNormal = vec3(0.0);
|
||
vec3 clipPosition = vec3(0.0);
|
||
float pixelWidth = czm_metersPerPixel(position);
|
||
|
||
#ifdef UNION_CLIPPING_REGIONS
|
||
float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below.
|
||
#else
|
||
float clipAmount = 0.0;
|
||
bool clipped = true;
|
||
#endif
|
||
|
||
for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) {
|
||
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
|
||
clipNormal = clippingPlane.xyz;
|
||
clipPosition = -clippingPlane.w * clipNormal;
|
||
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
|
||
|
||
#ifdef UNION_CLIPPING_REGIONS
|
||
clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount));
|
||
if (amount <= 0.0) {
|
||
discard;
|
||
}
|
||
#else
|
||
clipAmount = max(amount, clipAmount);
|
||
clipped = clipped && (amount <= 0.0);
|
||
#endif
|
||
}
|
||
|
||
#ifndef UNION_CLIPPING_REGIONS
|
||
if (clipped) {
|
||
discard;
|
||
}
|
||
#endif
|
||
|
||
return clipAmount;
|
||
}
|
||
|
||
void modelClippingPlanesStage(inout vec4 color)
|
||
{
|
||
float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix);
|
||
vec4 clippingPlanesEdgeColor = vec4(1.0);
|
||
clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb;
|
||
float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a;
|
||
|
||
if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) {
|
||
color = clippingPlanesEdgeColor;
|
||
}
|
||
}
|
||
`;var Tae={name:"ModelClippingPlanesPipelineStage"},G4e=new k;Tae.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Vs.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Vs.getTextureResolution(i,o,G4e);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(o2);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=G.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=wt(a,e.uniformMap)};var r2=Tae;var s2=`void modelClippingPolygonsStage(ProcessedAttributes attributes)
|
||
{
|
||
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC);
|
||
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
|
||
|
||
vec2 minDistance = vec2(czm_infinity);
|
||
v_regionIndex = -1;
|
||
v_clippingPosition = vec2(czm_infinity);
|
||
|
||
for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) {
|
||
vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex);
|
||
vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz;
|
||
|
||
vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0));
|
||
vec2 distance = abs(rectUv - clamped) * extents.wz;
|
||
|
||
if (minDistance.x > distance.x || minDistance.y > distance.y) {
|
||
minDistance = distance;
|
||
v_clippingPosition = rectUv;
|
||
}
|
||
|
||
float threshold = 0.01;
|
||
if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) {
|
||
v_regionIndex = regionIndex;
|
||
}
|
||
}
|
||
}
|
||
`;var a2=`void modelClippingPolygonsStage()
|
||
{
|
||
vec2 clippingPosition = v_clippingPosition;
|
||
int regionIndex = v_regionIndex;
|
||
czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex);
|
||
}
|
||
`;var Sae={name:"ModelClippingPolygonsPipelineStage"};Sae.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(s2),o.addFragmentLines(a2);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=wt(r,e.uniformMap)};var c2=Sae;function wae(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(wae.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var l2=wae;var u2=`mat4 getInstancingTransform()
|
||
{
|
||
mat4 instancingTransform;
|
||
|
||
#ifdef HAS_INSTANCE_MATRICES
|
||
instancingTransform = mat4(
|
||
a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1
|
||
a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2
|
||
a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3
|
||
a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4
|
||
);
|
||
#else
|
||
vec3 translation = vec3(0.0, 0.0, 0.0);
|
||
vec3 scale = vec3(1.0, 1.0, 1.0);
|
||
|
||
#ifdef HAS_INSTANCE_TRANSLATION
|
||
translation = a_instanceTranslation;
|
||
#endif
|
||
#ifdef HAS_INSTANCE_SCALE
|
||
scale = a_instanceScale;
|
||
#endif
|
||
|
||
instancingTransform = mat4(
|
||
scale.x, 0.0, 0.0, 0.0,
|
||
0.0, scale.y, 0.0, 0.0,
|
||
0.0, 0.0, scale.z, 0.0,
|
||
translation.x, translation.y, translation.z, 1.0
|
||
);
|
||
#endif
|
||
|
||
return instancingTransform;
|
||
}
|
||
|
||
#ifdef USE_2D_INSTANCING
|
||
mat4 getInstancingTransform2D()
|
||
{
|
||
mat4 instancingTransform2D;
|
||
|
||
#ifdef HAS_INSTANCE_MATRICES
|
||
instancingTransform2D = mat4(
|
||
a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1
|
||
a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2
|
||
a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3
|
||
a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4
|
||
);
|
||
#else
|
||
vec3 translation2D = vec3(0.0, 0.0, 0.0);
|
||
vec3 scale = vec3(1.0, 1.0, 1.0);
|
||
|
||
#ifdef HAS_INSTANCE_TRANSLATION
|
||
translation2D = a_instanceTranslation2D;
|
||
#endif
|
||
#ifdef HAS_INSTANCE_SCALE
|
||
scale = a_instanceScale;
|
||
#endif
|
||
|
||
instancingTransform2D = mat4(
|
||
scale.x, 0.0, 0.0, 0.0,
|
||
0.0, scale.y, 0.0, 0.0,
|
||
0.0, 0.0, scale.z, 0.0,
|
||
translation2D.x, translation2D.y, translation2D.z, 1.0
|
||
);
|
||
#endif
|
||
|
||
return instancingTransform2D;
|
||
}
|
||
#endif
|
||
`;var f2=`void instancingStage(inout ProcessedAttributes attributes)
|
||
{
|
||
vec3 positionMC = attributes.positionMC;
|
||
|
||
mat4 instancingTransform = getInstancingTransform();
|
||
|
||
attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz;
|
||
|
||
#ifdef HAS_NORMALS
|
||
vec3 normalMC = attributes.normalMC;
|
||
attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz;
|
||
#endif
|
||
|
||
#ifdef USE_2D_INSTANCING
|
||
mat4 instancingTransform2D = getInstancingTransform2D();
|
||
attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz;
|
||
#endif
|
||
}
|
||
`;var d2=`void legacyInstancingStage(
|
||
inout ProcessedAttributes attributes,
|
||
out mat4 instanceModelView,
|
||
out mat3 instanceModelViewInverseTranspose)
|
||
{
|
||
vec3 positionMC = attributes.positionMC;
|
||
|
||
mat4 instancingTransform = getInstancingTransform();
|
||
|
||
mat4 instanceModel = instancingTransform * u_instance_nodeTransform;
|
||
instanceModelView = u_instance_modifiedModelView;
|
||
instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel);
|
||
|
||
attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz;
|
||
|
||
#ifdef USE_2D_INSTANCING
|
||
mat4 instancingTransform2D = getInstancingTransform2D();
|
||
attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz;
|
||
#endif
|
||
}
|
||
`;var h2=new R,z4e=new R,V4e=new R,Dae={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Nae,_transformsToTypedArray:YW};Dae.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(u2);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];oHe(e,n,i,h,u,f),aHe(e,n,i,h);let A={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),A.u_instance_modifiedModelView=function(){let g=R.multiplyTransformation(s.modelMatrix,a.components.transform,h2);return u?R.multiplyTransformation(n.context.uniformState.view3D,g,h2):(n.mode!==ie.SCENE3D&&(g=kt.basisTo2D(n.mapProjection,g,h2)),R.multiplyTransformation(n.context.uniformState.view,g,h2))},A.u_instance_nodeTransform=function(){return R.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,z4e)},r.addVertexLines(d2)):r.addVertexLines(f2),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=R.fromTranslation(c.instancingReferencePoint2D,new R);A.u_modelView2D=function(){return R.multiplyTransformation(g.uniformState.view,m,V4e)}}e.uniformMap=wt(A,e.uniformMap),e.instanceCount=o,si(e.attributes,h)};var BB=new R,H4e=new d;function W4e(e,t,n,i,o){let r=R.multiplyTransformation(t,e,BB);return r=R.multiplyTransformation(r,n,BB),o=kt.basisTo2D(i.mapProjection,r,o),o}function j4e(e,t,n,i,o){let r=R.fromTranslation(e,BB),s=R.multiplyTransformation(t,r,BB);s=R.multiplyTransformation(s,n,BB);let a=R.getTranslation(s,H4e);return o=to.computeActualEllipsoidPosition(i,a,o),o}function vae(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=R.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=R.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=R.clone(o.computedModelMatrix,t),t=R.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=R.clone(R.IDENTITY,n))}var Pae=new R,Rae=new R,Y4e=new R,q4e=new d;function K4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=W4e(f,o,r,n,Y4e),A=R.getTranslation(h,q4e),g=d.subtract(A,a,A);i[u]=R.setTranslation(h,g,i[u])}return i}function X4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=j4e(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var J4e=new d,Z4e=new d;function Mae(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=R.multiplyByPoint(i,n.instancingTranslationMin,J4e),r=to.computeActualEllipsoidPosition(t,o,o),s=R.multiplyByPoint(i,n.instancingTranslationMax,Z4e),a=to.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function YW(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function $4e(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var eHe=new d,tHe=new Le,nHe=new d;function Nae(e,t,n){let i=new Array(t),o=Qt.getAttributeBySemantic(e,Ss.TRANSLATION),r=Qt.getAttributeBySemantic(e,Ss.ROTATION),s=Qt.getAttributeBySemantic(e,Ss.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),A=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=Fn.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let y=0;y<t;y++){let C=new d(A[y*3],A[y*3+1],A[y*3+2],eHe);d.maximumByComponent(a,C,a),d.minimumByComponent(c,C,c);let E=new Le(g[y*4],g[y*4+1],g[y*4+2],f?g[y*4+3]:1,tHe),I=new d(m[y*3],m[y*3+1],m[y*3+2],nHe),b=R.fromTranslationQuaternionRotationScale(C,E,I,new R);i[y]=b}let _=n.runtimeNode;return _.instancingTranslationMin=c,_.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function iHe(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function qW(e,t){let n=Et.createVertexBuffer({context:t.context,typedArray:e,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function oHe(e,t,n,i,o,r){let s=Qt.getAttributeBySemantic(n,Ss.ROTATION);l(s)?rHe(e,n,i,t,o,r):sHe(e,n,i,t,o)}function rHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,A=u.instancingTransformsBuffer;if(!l(A)){h=Nae(t,a,e);let y=YW(h);A=qW(y,i),c._modelResources.push(A),r&&(u.transformsTypedArray=y),u.instancingTransformsBuffer=A}if(Bae(e,A,n,f),!o)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let y=K4e(h,e,g,h),C=YW(y);m=qW(C,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}Bae(e,m,n,"Transform2D")}function sHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Qt.getAttributeBySemantic(t,Ss.TRANSLATION),u=Qt.getAttributeBySemantic(t,Ss.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),jW(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=iHe(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),jW(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let E=X4e(f,e,g,f),I=$4e(E);r&&(a.transformsTypedArray=I),m=qW(I,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;jW(e,m,0,void 0,n,"Translation2D")}function Bae(e,t,n,i){let r=q.getSizeInBytes(q.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),si(n,a)}function jW(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function aHe(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===Ss.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:Ht.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var m2=Dae;var KW={};KW.name="ModelMatrixUpdateStage";KW.update=function(e,t,n){let i=n.mode!==ie.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;Lae(e,t,o,e.transformToRoot),e._transformDirty=!1}};function cHe(e,t,n){e.modelMatrix=R.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Qt.getCullFace(e.modelMatrix,e.primitiveType)}function Lae(e,t,n,i){let o;i=R.multiplyTransformation(i,e.transform,new R),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];cHe(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=R.clone(i,a._transformToRoot),Lae(a,t,n,i),a._transformDirty=!1}}var A2=KW;var Oae={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:Fae,_countGeneratedBuffers:Qae};Oae.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;Fae(i,o),Qae(i,r)};function Fae(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function Qae(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var p2=Oae;function Sx(e){e=e??V.EMPTY_OBJECT;let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=R.clone(n,this._originalTransform),this._transform=R.clone(n,this._transform),this._transformToRoot=R.clone(i,this._transformToRoot),this._computedTransform=new R,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,lHe(this)}Object.defineProperties(Sx.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=R.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),XW(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),XW(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),XW(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function lHe(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=R.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new DC(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function XW(e,t){e._transformDirty=!0,e._transform=R.fromTranslationRotationScale(t,e._transform)}Sx.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};Sx.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(m2),t.push(p2),n.push(A2)};Sx.prototype.updateComputedTransform=function(){this._computedTransform=R.multiply(this._transformToRoot,this._transform,this._computedTransform)};Sx.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new R);let r=R.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=R.inverseTransformation(r,t[o]);t[o]=R.multiplyTransformation(s,n[o],t[o])}};var g2=Sx;var kae={name:"AlphaPipelineStage"};kae.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=i.pass??o.opaquePass;let r=e.renderStateOptions;i.pass===Be.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=pn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var _2=kae;var Uae={name:"BatchTexturePipelineStage"};Uae.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return c.batchTexture??c.defaultTexture},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=wt(o,e.uniformMap)};var y2=Uae;var Gae={name:"ClassificationPipelineStage"};Gae.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||uHe(t,o)};function uHe(e,t){let n=Qt.getAttributeBySemantic(e,ct.POSITION);if(!l(n))throw new ce("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Qt.getAttributeBySemantic(e,ct.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,A=c[h],g=0;for(let _=1;_<s;_++){let y=r?i[_]:_,C=c[y];if(C!==A){let E=_-g,I=_;u.push(E),f.push(I),g=I,A=C}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var C2=Gae;var E2=`void filterByPassType(inout vec3 positionMC, vec4 featureColor)
|
||
{
|
||
bool styleTranslucent = (featureColor.a != 1.0);
|
||
// Only render translucent features in the translucent pass (if the style or the original command has translucency).
|
||
if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent)
|
||
{
|
||
// If the model has a translucent silhouette, it needs to render during the silhouette color command,
|
||
// (i.e. the command where model_silhouettePass = true), even if the model isn't translucent.
|
||
#ifdef HAS_SILHOUETTE
|
||
positionMC *= float(model_silhouettePass);
|
||
#else
|
||
positionMC *= 0.0;
|
||
#endif
|
||
}
|
||
// If the current pass is not the translucent pass and the style is not translucent, don't render the feature.
|
||
else if (czm_pass != czm_passTranslucent && styleTranslucent)
|
||
{
|
||
positionMC *= 0.0;
|
||
}
|
||
}
|
||
|
||
void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature)
|
||
{
|
||
float show = ceil(feature.color.a);
|
||
positionMC *= show;
|
||
|
||
#if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION)
|
||
filterByPassType(positionMC, feature.color);
|
||
#endif
|
||
}
|
||
`;var I2=`void filterByPassType(vec4 featureColor)
|
||
{
|
||
bool styleTranslucent = (featureColor.a != 1.0);
|
||
// Only render translucent features in the translucent pass (if the style or the original command has translucency).
|
||
if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent)
|
||
{
|
||
// If the model has a translucent silhouette, it needs to render during the silhouette color command,
|
||
// (i.e. the command where model_silhouettePass = true), even if the model isn't translucent.
|
||
#ifdef HAS_SILHOUETTE
|
||
if(!model_silhouettePass) {
|
||
discard;
|
||
}
|
||
#else
|
||
discard;
|
||
#endif
|
||
}
|
||
// If the current pass is not the translucent pass and the style is not translucent, don't render the feature.
|
||
else if (czm_pass != czm_passTranslucent && styleTranslucent)
|
||
{
|
||
discard;
|
||
}
|
||
}
|
||
|
||
void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature)
|
||
{
|
||
vec4 featureColor = feature.color;
|
||
if (featureColor.a == 0.0)
|
||
{
|
||
discard;
|
||
}
|
||
|
||
// If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader.
|
||
// So, we only apply in in the fragment shader if the feature ID texture is used.
|
||
#if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION)
|
||
filterByPassType(featureColor);
|
||
#endif
|
||
|
||
featureColor = czm_gammaCorrect(featureColor);
|
||
|
||
// Classification models compute the diffuse differently.
|
||
#ifdef HAS_CLASSIFICATION
|
||
material.diffuse = featureColor.rgb * featureColor.a;
|
||
#else
|
||
float highlight = ceil(model_colorBlend);
|
||
material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight);
|
||
#endif
|
||
|
||
material.alpha *= featureColor.a;
|
||
}
|
||
`;var zae={name:"CPUStylingPipelineStage"};zae.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(E2),o.addFragmentLines(I2),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",$C.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[$C.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===Be.TRANSLUCENT}};var x2=zae;var Vae={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};Vae.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var p_=Object.freeze(Vae);var b2=`void customShaderStage(
|
||
inout czm_modelVertexOutput vsOutput,
|
||
inout ProcessedAttributes attributes,
|
||
FeatureIds featureIds,
|
||
Metadata metadata,
|
||
MetadataClass metadataClass,
|
||
MetadataStatistics metadataStatistics
|
||
) {
|
||
// VertexInput and initializeInputStruct() are dynamically generated in JS,
|
||
// see CustomShaderPipelineStage.js
|
||
VertexInput vsInput;
|
||
initializeInputStruct(vsInput, attributes);
|
||
vsInput.featureIds = featureIds;
|
||
vsInput.metadata = metadata;
|
||
vsInput.metadataClass = metadataClass;
|
||
vsInput.metadataStatistics = metadataStatistics;
|
||
vertexMain(vsInput, vsOutput);
|
||
attributes.positionMC = vsOutput.positionMC;
|
||
}
|
||
`;var T2=`void customShaderStage(
|
||
inout czm_modelMaterial material,
|
||
ProcessedAttributes attributes,
|
||
FeatureIds featureIds,
|
||
Metadata metadata,
|
||
MetadataClass metadataClass,
|
||
MetadataStatistics metadataStatistics
|
||
) {
|
||
// FragmentInput and initializeInputStruct() are dynamically generated in JS,
|
||
// see CustomShaderPipelineStage.js
|
||
FragmentInput fsInput;
|
||
initializeInputStruct(fsInput, attributes);
|
||
fsInput.featureIds = featureIds;
|
||
fsInput.metadata = metadata;
|
||
fsInput.metadataClass = metadataClass;
|
||
fsInput.metadataStatistics = metadataStatistics;
|
||
fragmentMain(fsInput, material);
|
||
}
|
||
`;var S2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) {
|
||
initializeFeatureIds(featureIds, attributes);
|
||
initializeFeatureIdAliases(featureIds);
|
||
}
|
||
`;var w2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes)
|
||
{
|
||
initializeFeatureIds(featureIds, attributes);
|
||
initializeFeatureIdAliases(featureIds);
|
||
setFeatureIdVaryings();
|
||
}
|
||
`;var Ki={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};Ki.process=function(e,t,n){let i=e.shaderBuilder;fHe(i);let o=e.runtimeNode.node.instances;l(o)&&dHe(e,o,n),hHe(e,t,n),i.addVertexLines(w2),i.addFragmentLines(S2)};function fHe(e){e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_VS,Ki.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_FS,Ki.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,Ki.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function dHe(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof bn.FeatureIdAttribute?mHe(e,s,a):Hae(e,s,a,o,1,n);let c=s.label;l(c)&&Wae(e,a,c,pe.BOTH)}}function hHe(e,t,n){let i=t.featureIds,r=Qt.getAttributeBySemantic(t,ct.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof bn.FeatureIdAttribute?AHe(e,a,c):a instanceof bn.FeatureIdImplicitRange?Hae(e,a,c,r,void 0,n):(pHe(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&Wae(e,c,f,u)}}function mHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function AHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function Hae(e,t,n,i,o,r){gHe(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function pHe(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return a.texture??o.context.defaultTexture};let c=a.channels,u=e.shaderBuilder;u.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,A=h,g=a.transform;if(l(g)&&!J.equals(g,J.IDENTITY)){let y=`${r}Transform`;u.addUniform("mat3",y,pe.FRAGMENT),s[y]=function(){return g},A=`vec2(${y} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${A}).${c}`,_=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[_])}function Wae(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function gHe(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=_He(t,n);s=Et.createVertexBuffer({context:o.context,typedArray:u,usage:Qe.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:q.FLOAT,strideInBytes:q.getSizeInBytes(q.FLOAT),offsetInBytes:0};e.attributes.push(c)}function _He(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var eE=Ki;var B2=`void metadataStage(
|
||
out Metadata metadata,
|
||
out MetadataClass metadataClass,
|
||
out MetadataStatistics metadataStatistics,
|
||
ProcessedAttributes attributes
|
||
)
|
||
{
|
||
initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
|
||
}
|
||
`;var D2=`void metadataStage(
|
||
out Metadata metadata,
|
||
out MetadataClass metadataClass,
|
||
out MetadataStatistics metadataStatistics,
|
||
ProcessedAttributes attributes
|
||
)
|
||
{
|
||
initializeMetadata(metadata, metadataClass, metadataStatistics, attributes);
|
||
setMetadataVaryings();
|
||
}
|
||
`;var Li={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Li.process=function(e,t,n){let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=s?.tileset.metadataExtension?.statistics,c=yHe(r.propertyAttributes,t,a),u=EHe(r.propertyTextures,a),f=c.concat(u);xHe(i,f),SHe(i),i.addVertexLines(D2),i.addFragmentLines(B2);for(let h=0;h<c.length;h++){let A=c[h];wHe(e,A)}for(let h=0;h<u.length;h++){let A=u[h];DHe(e,A)}};function yHe(e,t,n){return l(e)?e.flatMap(i=>CHe(i,t,n)):[]}function CHe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Qt,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,A]=c[f],g=i(t,A.attribute),{glslType:m,variableName:_}=o(g);u[f]={metadataVariable:r(h),property:A,type:A.classProperty.type,glslType:m,variableName:_,propertyStatistics:a?.properties[h],shaderDestination:pe.BOTH}}return u}function EHe(e,t){return l(e)?e.flatMap(n=>IHe(n,t)):[]}function IHe(e,t){let{sanitizeGlslIdentifier:n}=Qt,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o?.properties[c],shaderDestination:pe.FRAGMENT}}return s}function xHe(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==gt.ENUM&&i.add(u)}let o=Li.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Li.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],A=u[f].type==="float"?THe(c):c;e.addStructField(a,A,h)}}}var bHe={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function THe(e){let t=bHe[e];return l(t)?t:e}function SHe(e){e.addStruct(Li.STRUCT_ID_METADATA_VS,Li.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_FS,Li.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_VS,Li.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_FS,Li.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_VS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_FS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_SET_METADATA_VARYINGS,Li.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function wHe(e,t){BHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function BHe(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=Kae({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Li.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function DHe(e,t){vHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function vHe(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,A=`u_propertyTexture_${u}`;i.hasOwnProperty(A)||(n.addUniform("sampler2D",A,pe.FRAGMENT),i[A]=()=>f),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!J.equals(h,J.IDENTITY)){let I=`${A}Transform`;n.addUniform("mat3",I,pe.FRAGMENT),i[I]=function(){return h},m=`vec2(${I} * vec3(${g}, 1.0))`}let _=`texture(${A}, ${m}).${c}`,y=s.unpackInShader(_),C=Kae({valueExpression:y,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),E=`metadata.${o} = ${C};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[E])}function jae(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=qae(Li.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Li.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Li.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function Yae(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===gt.ENUM)return;let s=Li.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=qae(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function qae(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function Kae(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var Xd=Li;var PHe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},tE=Object.freeze(PHe);var va={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:yt};va.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===tE.TRANSLUCENT?r.pass=Be.TRANSLUCENT:c===tE.OPAQUE&&(r.pass=void 0);let u=kHe(s,t);if(!u.customShaderEnabled)return;if(VHe(i,s,u),u.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let A=p_.getDefineName(s.mode);i.addDefine(A,void 0,pe.FRAGMENT)}let f=s.uniforms;for(let A in f)if(f.hasOwnProperty(A)){let g=f[A];i.addUniform(g.type,A)}let h=s.varyings;for(let A in h)if(h.hasOwnProperty(A)){let g=h[A];i.addVarying(g,A)}e.uniformMap=wt(e.uniformMap,s.uniformMap)};function RHe(e){let t={};for(let n=0;n<e.length;n++){let i=Qt.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var MHe={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},NHe={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function Xae(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=MHe[t],i=NHe[t];if(l(n))return{attributeField:[n,e],value:i}}function LHe(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Jae(t,n,!1),o=Zae(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=Xae(u);if(!l(f))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function OHe(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function FHe(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Jae(t,n,!0),o=Zae(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=Xae(f);if(!l(h))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=OHe(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var QHe={positionWC:!0,positionEC:!0};function Jae(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function Zae(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||QHe.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function kHe(e,t){let n=RHe(t.attributes),i=LHe(e,n),o=FHe(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function UHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,va.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function GHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,va.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var zHe=[];function VHe(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=zHe;i.enabled&&(UHe(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,b2),e.addVertexLines(r)),o.enabled&&(GHe(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,T2),e.addFragmentLines(r))}var v2=va;var DB={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};DB.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,DB.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===ct.POSITION,h=c.semantic===ct.TEXCOORD;if(r&&!f&&!h)continue;let A=Qt.getAttributeInfo(c);WHe(i,A),HHe(e,A)}};function HHe(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=$ae(u,0),f=$ae(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function $ae(e,t){return e instanceof se?e:new se(e.x,e.y,e.z,t)}function WHe(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=jHe(n,i):o=YHe(n),e.addFunctionLines(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function jHe(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function YHe(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var P2=DB;var R2=`void geometryStage(out ProcessedAttributes attributes)
|
||
{
|
||
attributes.positionMC = v_positionMC;
|
||
attributes.positionEC = v_positionEC;
|
||
|
||
#if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE)
|
||
attributes.positionWC = v_positionWC;
|
||
#endif
|
||
|
||
#ifdef HAS_NORMALS
|
||
// renormalize after interpolation
|
||
attributes.normalEC = normalize(v_normalEC);
|
||
#endif
|
||
|
||
#ifdef HAS_TANGENTS
|
||
attributes.tangentEC = normalize(v_tangentEC);
|
||
#endif
|
||
|
||
#ifdef HAS_BITANGENTS
|
||
attributes.bitangentEC = normalize(v_bitangentEC);
|
||
#endif
|
||
|
||
// Everything else is dynamically generated in GeometryPipelineStage
|
||
setDynamicVaryings(attributes);
|
||
}
|
||
`;var M2=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal)
|
||
{
|
||
vec4 computedPosition;
|
||
|
||
// Compute positions in different coordinate systems
|
||
vec3 positionMC = attributes.positionMC;
|
||
v_positionMC = positionMC;
|
||
v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz;
|
||
|
||
#if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING)
|
||
vec3 position2D = attributes.position2D;
|
||
vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz;
|
||
computedPosition = czm_projection * vec4(positionEC, 1.0);
|
||
#else
|
||
computedPosition = czm_projection * vec4(v_positionEC, 1.0);
|
||
#endif
|
||
|
||
// Sometimes the custom shader and/or style needs this
|
||
#if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS)
|
||
// Note that this is a 32-bit position which may result in jitter on small
|
||
// scales.
|
||
v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz;
|
||
#endif
|
||
|
||
#ifdef HAS_NORMALS
|
||
v_normalEC = normalize(normal * attributes.normalMC);
|
||
#endif
|
||
|
||
#ifdef HAS_TANGENTS
|
||
v_tangentEC = normalize(normal * attributes.tangentMC);
|
||
#endif
|
||
|
||
#ifdef HAS_BITANGENTS
|
||
v_bitangentEC = normalize(normal * attributes.bitangentMC);
|
||
#endif
|
||
|
||
// All other varyings need to be dynamically generated in
|
||
// GeometryPipelineStage
|
||
setDynamicVaryings(attributes);
|
||
|
||
return computedPosition;
|
||
}
|
||
`;var vB=`vec2 computeSt(float featureId)
|
||
{
|
||
float stepX = model_textureStep.x;
|
||
float centerX = model_textureStep.y;
|
||
|
||
#ifdef MULTILINE_BATCH_TEXTURE
|
||
float stepY = model_textureStep.z;
|
||
float centerY = model_textureStep.w;
|
||
|
||
float xId = mod(featureId, model_textureDimensions.x);
|
||
float yId = floor(featureId / model_textureDimensions.x);
|
||
|
||
return vec2(centerX + (xId * stepX), centerY + (yId * stepY));
|
||
#else
|
||
return vec2(centerX + (featureId * stepX), 0.5);
|
||
#endif
|
||
}
|
||
|
||
void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds)
|
||
{
|
||
int featureId = featureIds.SELECTED_FEATURE_ID;
|
||
|
||
|
||
if (featureId < model_featuresLength)
|
||
{
|
||
vec2 featureSt = computeSt(float(featureId));
|
||
|
||
feature.id = featureId;
|
||
feature.st = featureSt;
|
||
feature.color = texture(model_batchTexture, featureSt);
|
||
}
|
||
// Floating point comparisons can be unreliable in GLSL, so we
|
||
// increment the feature ID to make sure it's always greater
|
||
// then the model_featuresLength - a condition we check for in the
|
||
// pick ID, to avoid sampling the pick texture if the feature ID is
|
||
// greater than the number of features.
|
||
else
|
||
{
|
||
feature.id = model_featuresLength + 1;
|
||
feature.st = vec2(0.0);
|
||
feature.color = vec4(1.0);
|
||
}
|
||
|
||
#ifdef HAS_NULL_FEATURE_ID
|
||
if (featureId == model_nullFeatureId) {
|
||
feature.id = featureId;
|
||
feature.st = vec2(0.0);
|
||
feature.color = vec4(1.0);
|
||
}
|
||
#endif
|
||
}
|
||
`;var PB={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};PB.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=qHe(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),KHe(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(vB),i.addFragmentLines(vB)};function ece(e){return e instanceof bn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function tce(e){return e instanceof bn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function qHe(e,t,n){let i,o;return l(t.instances)&&(o=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)}):(o=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)})}function KHe(e){e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var nE=PB;var ca={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};ca.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(nE.STRUCT_ID_SELECTED_FEATURE,nE.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,ca.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===Nr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=Ht.getAttributeLocationCount(f.type),A=f.semantic===ct.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):A&&!a?g=0:g=e.attributeIndex++,XHe(e,f,g,h,r,s)}r5e(i,t.attributes),t.primitiveType===Me.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(M2),i.addFragmentLines(R2)};function XHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=Qt.getAttributeInfo(t),c=o&&!r;i>1?$He(e,t,n,i):ZHe(e,t,n,c),t5e(s,a,c),e5e(s,a),l(t.semantic)&&JHe(s,t),n5e(s,a,o),i5e(s,a,c),o5e(s,a)}function JHe(e,t){let{semantic:n,setIndex:i}=t;switch(n){case ct.NORMAL:e.addDefine("HAS_NORMALS");break;case ct.TANGENT:e.addDefine("HAS_TANGENTS");break;case ct.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case ct.TEXCOORD:case ct.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function ZHe(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===ct.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===ct.POSITION,f=u?0:n,h=Ht.getNumberOfComponents(a),A={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(A),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:q.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function $He(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=Ht.getNumberOfComponents(s)/i,f=q.getSizeInBytes(a),h=u*f,A=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,_={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:A,normalize:r};e.attributes.push(_)}}function e5e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function t5e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===ct.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function n5e(e,t,n){let i=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function i5e(e,t,n){let i=ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function o5e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function r5e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===ct.NORMAL?n=!0:r.semantic===ct.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var N2=ca;function g_(e){if(e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??1,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1,this._projection=new Yi(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new k(-i,-i),this._rectangleNortheastInMeters=new k(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(g_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});g_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};g_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};g_.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};g_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};g_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new k(o.west,o.south)),a=r.unproject(new k(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};g_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),A=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=A/a|0;m>=o&&(m=o-1);let _=g/u|0;return _>=r&&(_=r-1),l(n)?(n.x=m,n.y=_,n):new k(m,_)};var ws=g_;var JW,nce="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",wx={};wx.defaultAccessToken=nce;wx.defaultWorldImageryServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});wx.defaultWorldHillshadeServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});wx.defaultWorldOceanServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});wx.getDefaultTokenCredit=function(e){if(e===nce){if(!l(JW)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';JW=new Dt(t,!0)}return JW}};var kf=wx;function ZW(e){e=e??V.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=we.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=qh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let A=u[f],g=A.x*4+A.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}ZW.prototype.isReady=function(){return this._isReady};ZW.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=qh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var L2=ZW;function $W(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}$W.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};$W.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var Dm=$W;function Bx(){me.throwInstantiationError()}Object.defineProperties(Bx.prototype,{rectangle:{get:me.throwInstantiationError},tileWidth:{get:me.throwInstantiationError},tileHeight:{get:me.throwInstantiationError},maximumLevel:{get:me.throwInstantiationError},minimumLevel:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},tileDiscardPolicy:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},proxy:{get:me.throwInstantiationError},hasAlphaChannel:{get:me.throwInstantiationError}});Bx.prototype.getTileCredits=function(e,t,n){me.throwInstantiationError()};Bx.prototype.requestImage=function(e,t,n,i){me.throwInstantiationError()};Bx.prototype.pickFeatures=function(e,t,n,i,o){me.throwInstantiationError()};var s5e=/\.ktx2$/i;Bx.loadImage=function(e,t){let n=we.createIfNeeded(t);return s5e.test(n.url)?Iu(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Kl=Bx;var a5e={SATELLITE:1,OCEANS:2,HILLSHADE:3},vm=Object.freeze(a5e);function ice(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new co({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}ice.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new L2({missingImageUrl:oce(e,0,0,this.maximumLevel).url,pixelsToCheck:[new k(0,0),new k(200,20),new k(20,200),new k(80,110),new k(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function c5e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new ws({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new co({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new ce(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Yi,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new ce(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Dt(e.copyrightText)]:t.credit=new Dt(e.copyrightText))}function l5e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new ce(n)}async function u5e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();c5e(i,t)}catch(i){l5e(e,i)}}function Pm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new co({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new _e}Pm.fromBasemapType=async function(e,t){t=t??V.EMPTY_OBJECT;let n,i,o;switch(e){case vm.SATELLITE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldImageryServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.OCEANS:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldOceanServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.HILLSHADE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldHillshadeServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;default:}return Pm.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function oce(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Hi?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(Pm.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});Pm.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new Pm(t);i._resource=n;let o=new ice(t);return(t.usePreCachedTilesIfAvailable??!0)&&await u5e(n,o),o.build(i),i};Pm.prototype.getTileCredits=function(e,t,n){return this._tileCredits};Pm.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,oce(this,e,t,n,i))};Pm.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Hi)s=D.toDegrees(i),a=D.toDegrees(o),c="4326";else{let A=this._tilingScheme.projection.project(new Ae(i,o,0));s=A.x,a=A.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(A){let g=[],m=A.results;if(!l(m))return g;for(let _=0;_<m.length;++_){let y=m[_],C=new Dm;if(C.data=y,C.name=y.value,C.properties=y.attributes,C.configureDescriptionFromProperties(y.attributes),y.geometryType==="esriGeometryPoint"&&y.geometry){let E=y.geometry.spatialReference&&y.geometry.spatialReference.wkid?y.geometry.spatialReference.wkid:4326;if(E===4326||E===4283)C.position=Ae.fromDegrees(y.geometry.x,y.geometry.y,y.geometry.z);else if(E===102100||E===900913||E===3857){let I=new Yi;C.position=I.unproject(new d(y.geometry.x,y.geometry.y,y.geometry.z))}}g.push(C)}return g})};Pm._metadataCache={};var __=Pm;function f5e(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=`
|
||
${o}`),t}var up=f5e;function O2(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=r??0,this.retry=!1,this.error=s}O2.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new O2(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${up(i)}`),c};O2.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var zo=O2;var d5e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},RB=Object.freeze(d5e);function MB(e){}MB.prototype.isReady=function(){return!0};MB.prototype.shouldDiscardImage=function(e){return MB.EMPTY_IMAGE===e};var F2;Object.defineProperties(MB,{EMPTY_IMAGE:{get:function(){return l(F2)||(F2=new Image,F2.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),F2}}});var NB=MB;function rce(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}rce.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof Dt)break;o.credit=new Dt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(D.toRadians(u[1]),D.toRadians(u[0]),D.toRadians(u[3]),D.toRadians(u[2]))}}};function h5e(e,t){if(e.resourceSets.length!==1)throw new ce("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>o.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function m5e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new ce(i)}async function A5e(e,t,n){let i=e.url,o=Ws._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Ws._metadataCache[i]=o);try{let r=await o;return h5e(r,t)}catch(r){m5e(e,r,n)}}function Ws(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??RB.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new NB),this._proxy=e.proxy,this._credit=new Dt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Ws.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new _e}Object.defineProperties(Ws.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Ws.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??RB.AERIAL,o=we.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Ws(t);a._resource=o;let c=new rce(t);return await A5e(s,c),c.build(a),a};var p5e=new ae;Ws.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,p5e);return y5e(this._attributionList,n,i)};Ws.prototype.requestImage=function(e,t,n,i){let o=Kl.loadImage(this,g5e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?NB.EMPTY_IMAGE:Promise.reject(r)})};Ws.prototype.pickFeatures=function(e,t,n,i,o){};Ws.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Ws.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Ws._logoUrl=void 0;Object.defineProperties(Ws,{logoUrl:{get:function(){return l(Ws._logoUrl)||(Ws._logoUrl=fn("Assets/Images/bing_maps_credit.png")),Ws._logoUrl},set:function(e){Ws._logoUrl=e}}});function g5e(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Ws.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var _5e=new ae;function y5e(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let A=ae.intersection(n,h.bbox,_5e);l(A)&&(c=!0)}}c&&i.push(s.credit)}return i}Ws._metadataCache={};var Q2=Ws;var sce=/{[^}]+}/g,ace={x:x5e,y:T5e,z:B5e,s:D5e,reverseX:b5e,reverseY:S5e,reverseZ:w5e,westDegrees:v5e,southDegrees:P5e,eastDegrees:R5e,northDegrees:M5e,westProjected:N5e,southProjected:L5e,eastProjected:O5e,northProjected:F5e,width:Q5e,height:k5e},C5e=wt(ace,{i:U5e,j:G5e,reverseI:z5e,reverseJ:V5e,longitudeDegrees:W5e,latitudeDegrees:j5e,longitudeProjected:Y5e,latitudeProjected:q5e,format:X5e});function LB(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new ws({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Dt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=wt(ace,r),a=wt(C5e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(LB.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});LB.prototype.getTileCredits=function(e,t,n){};LB.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,E5e(this,e,t,n,i))};LB.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=I5e(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var k2=!1,Ru=new ae,U2=!1,OB=new ae;function E5e(e,t,n,i,o){k2=!1,U2=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(sce);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var ej=!1,vx=new k,tj=!1;function I5e(e,t,n,i,o,r,s){k2=!1,U2=!1,ej=!1,tj=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(sce);return l(h)&&h.forEach(function(A){let g=A.substring(1,A.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function Px(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function x5e(e,t,n,i){return Px(e,"{x}",t)}function b5e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return Px(e,"{reverseX}",o)}function T5e(e,t,n,i){return Px(e,"{y}",n)}function S5e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return Px(e,"{reverseY}",o)}function w5e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return Px(e,"{reverseZ}",r)}function B5e(e,t,n,i){return Px(e,"{z}",i)}function D5e(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function G2(e,t,n,i){k2||(e.tilingScheme.tileXYToRectangle(t,n,i,Ru),Ru.west=D.toDegrees(Ru.west),Ru.south=D.toDegrees(Ru.south),Ru.east=D.toDegrees(Ru.east),Ru.north=D.toDegrees(Ru.north),k2=!0)}function v5e(e,t,n,i){return G2(e,t,n,i),Ru.west}function P5e(e,t,n,i){return G2(e,t,n,i),Ru.south}function R5e(e,t,n,i){return G2(e,t,n,i),Ru.east}function M5e(e,t,n,i){return G2(e,t,n,i),Ru.north}function z2(e,t,n,i){U2||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,OB),U2=!0)}function N5e(e,t,n,i){return z2(e,t,n,i),OB.west}function L5e(e,t,n,i){return z2(e,t,n,i),OB.south}function O5e(e,t,n,i){return z2(e,t,n,i),OB.east}function F5e(e,t,n,i){return z2(e,t,n,i),OB.north}function Q5e(e,t,n,i){return e.tileWidth}function k5e(e,t,n,i){return e.tileHeight}function U5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.x}function G5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.y}function z5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileWidth-vx.x-1}function V5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileHeight-vx.y-1}var H5e=new ae,Dx=new d;function V2(e,t,n,i,o,r,s){if(ej)return;nj(e,t,n,i,o,r);let a=Dx,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,H5e);vx.x=e.tileWidth*(a.x-c.west)/c.width|0,vx.y=e.tileHeight*(c.north-a.y)/c.height|0,ej=!0}function W5e(e,t,n,i,o,r,s){return D.toDegrees(o)}function j5e(e,t,n,i,o,r,s){return D.toDegrees(r)}function Y5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.x}function q5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.y}var K5e=new Ae;function nj(e,t,n,i,o,r,s){if(!tj){if(e.tilingScheme.projection instanceof Hi)Dx.x=D.toDegrees(o),Dx.y=D.toDegrees(r);else{let a=K5e;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,Dx)}tj=!0}}function X5e(e,t,n,i,o,r,s){return s}var vc=LB;function Uf(e){vc.call(this,e)}Uf._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return Uf._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof vA)return Uf._metadataFailure(e,t);throw o}};Uf.fromUrl=async function(e,t){let n=we.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=t??V.EMPTY_OBJECT;let r=await Uf._requestMetadata(t,i,o);return new Uf(r)};l(Object.create)&&(Uf.prototype=Object.create(vc.prototype),Uf.prototype.constructor=Uf);function cce(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function lce(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}Uf._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,A=[],g=e.childNodes[0].childNodes;for(let P=0;P<g.length;P++)if(r.test(g.item(P).nodeName))u=g.item(P);else if(a.test(g.item(P).nodeName)){h=g.item(P);let N=g.item(P).childNodes;for(let L=0;L<N.length;L++)s.test(N.item(L).nodeName)&&A.push(N.item(L))}else c.test(g.item(P).nodeName)&&(f=g.item(P));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let _=t.fileExtension??u.getAttribute("extension"),y=t.tileWidth??parseInt(u.getAttribute("width"),10),C=t.tileHeight??parseInt(u.getAttribute("height"),10),E=t.minimumLevel??parseInt(A[0].getAttribute("order"),10),I=t.maximumLevel??parseInt(A[A.length-1].getAttribute("order"),10),b=h.getAttribute("profile"),S=t.tilingScheme;if(!l(S))if(b==="geodetic"||b==="global-geodetic")S=new co({ellipsoid:t.ellipsoid});else if(b==="mercator"||b==="global-mercator")S=new ws({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${b}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let B=ae.clone(t.rectangle);if(!l(B)){let P,N,L,p;t.flipXY??!1?(L=new k(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),p=new k(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(L=new k(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),p=new k(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let T=b==="geodetic"||b==="mercator";if(S.projection instanceof Hi||T)P=Ae.fromDegrees(L.x,L.y),N=Ae.fromDegrees(p.x,p.y);else{let w=S.projection;P=w.unproject(L),N=w.unproject(p)}B=new ae(P.longitude,P.latitude,N.longitude,N.latitude)}return B=cce(B,S),E=lce(S,B,E),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${_}`}),tilingScheme:S,rectangle:B,tileWidth:y,tileHeight:C,minimumLevel:E,maximumLevel:I,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};Uf._metadataFailure=function(e,t){let n=e.fileExtension??"png",i=e.tileWidth??256,o=e.tileHeight??256,r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),a=e.rectangle??s.rectangle;a=cce(a,s);let c=lce(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var iE=Uf;function uce(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}uce.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function J5e(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new ce(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new ce(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new ce(o)}return!0}function Z5e(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function $5e(e,t,n){try{let i=await e.fetchText();J5e(i,t)}catch(i){Z5e(i,e,n)}}function Xl(e){e=e??{},this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new Dt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${Xl.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new _e}Object.defineProperties(Xl.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});Xl.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=we.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new uce(n);s.channel=t,await $5e(r,s);let a=new Xl(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};Xl.prototype.getTileCredits=function(e,t,n){};Xl.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Kl.loadImage(this,o)};Xl.prototype.pickFeatures=function(e,t,n,i,o){};Xl._logoUrl=void 0;Object.defineProperties(Xl,{logoUrl:{get:function(){return l(Xl._logoUrl)||(Xl._logoUrl=fn("Assets/Images/google_earth_credit.png")),Xl._logoUrl},set:function(e){Xl._logoUrl=e}}});var H2=Xl;var e9e=/\/$/,fce=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function Rx(e){e=e??V.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();e9e.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Dt(s))):s=fce,this._resource=i,this._imageryProvider=new vc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(Rx.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});Rx.prototype.getTileCredits=function(e,t,n){};Rx.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rx.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rx._defaultCredit=fce;var W2=Rx;function oE(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??ae.MAX_VALUE,n=new co({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new _e;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i;let o=we.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(oE.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function t9e(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=zo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return ij(e,n,r);throw l(n)&&(n._hasError=!0),new ce(o)}async function ij(e,t,n){try{return await Kl.loadImage(null,e)}catch(i){return t9e(e,i,t,n)}}oE.fromUrl=async function(e,t){let n=we.createIfNeeded(e),i=await ij(n);t=t??V.EMPTY_OBJECT;let o=new oE({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};oE.prototype.getTileCredits=function(e,t,n){};oE.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await ij(this._resource,this);return this._image=o,zo.reportSuccess(this._errorEvent),o}return this._image};oE.prototype.pickFeatures=function(e,t,n,i,o){};var j2=oE;function n9e(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=i9e:e==="xml"?n=a9e:(e==="html"||e==="text")&&(n=dce)),this.callback=n}function i9e(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new Dm;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=Ae.fromDegrees(s,a)}t.push(r)}return t}var oj="http://www.mapinfo.com/mxp",o9e="http://www.esri.com/wms",r9e="http://www.opengis.net/wfs",s9e="http://www.opengis.net/gml";function a9e(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===oj)return c9e(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===o9e)return l9e(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===r9e)return u9e(e);if(t.localName==="ServiceExceptionReport")throw new ce(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?f9e(e):d9e(e)}function c9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(oj,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(oj,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),A=f.textContent.trim();s[h]=A}}let c=new Dm;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function l9e(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(Y2(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(Y2(a,i))}}return n}function u9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(s9e,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};rj(r,s),t.push(Y2(r,s))}return t}function f9e(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new ce("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};rj(s,a),t.push(Y2(s,a))}}return t}function rj(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&rj(o,t)&&(t[o.localName]=o.textContent)}return n}function Y2(e,t){let n=new Dm;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function d9e(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new Dm;return o.data=e,o.description=n.innerHTML,[o]}var h9e=/<body>\s*<\/body>/im,m9e=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,A9e=/<title>([\s\S]*)<\/title>/im;function dce(e){if(h9e.test(e)||m9e.test(e))return;let t,n=A9e.exec(e);n&&n.length>1&&(t=n[1]);let i=new Dm;return i.name=t,i.description=e,i.data=e,[i]}var Mx=n9e;function FB(e){e=e??V.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(FB.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});FB.prototype.getFromCache=function(e,t,n,i){let o=hce(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};FB.prototype.checkApproachingInterval=function(e,t,n,i){let o=hce(e,t,n),r=this._tilesRequestedForInterval,s=mce(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Ace(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};FB.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=mce(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Ace(this,c,r),a||s.push(c)}}};function hce(e,t,n){return`${e}-${t}-${n}`}function p9e(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function mce(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=K.secondsDifference(c.stop,i),++a):(s=K.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Ace(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=p9e(s),c=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var Nx=FB;var g9e=[3034,3035,3042,3043,3044],_9e=[4471,4559];function Jd(e){if(e=e??V.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new me("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Jd.DefaultParameters,!0),n.setQueryParameters(Jd.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(pce(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(pce(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return gce(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!_9e.includes(a)||g9e.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new vc({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new co({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Jd.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function gce(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function y9e(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Jd.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Jd.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Jd.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=gce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Jd.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return y9e(this,e,t,n,i,o,s)};Jd.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Jd.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Jd.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new Mx("json","application/json")),Object.freeze(new Mx("xml","text/xml")),Object.freeze(new Mx("text","text/html"))]);function pce(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var q2=Jd;var C9e=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function QB(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=we.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(C9e),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(h,A,g,m,_){return _ce(s,h,A,g,m,_)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new _e;let f=e.credit;this._credit=typeof f=="string"?new Dt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function _ce(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,A;if(!e._useKvp)A={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(A),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=wt(g,u)),l(f)&&(g=wt(g,f)),A={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(A)}return Kl.loadImage(e,h)}Object.defineProperties(QB.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});QB.prototype.getTileCredits=function(e,t,n){};QB.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=_ce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};QB.prototype.pickFeatures=function(e,t,n,i,o){};var K2=QB;var E9e={ARCGIS_MAPSERVER:__.fromUrl,BING:async(e,t)=>Q2.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,H2.fromUrl(e,n,t)},MAPBOX:(e,t)=>new W2({url:e,...t}),SINGLE_TILE:j2.fromUrl,TMS:iE.fromUrl,URL_TEMPLATE:(e,t)=>new vc({url:e,...t}),WMS:(e,t)=>new q2({url:e,...t}),WMTS:(e,t)=>new K2({url:e,...t})};function Rm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new _e}Object.defineProperties(Rm.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Rm.fromAssetId=async function(e,t){t=t??V.EMPTY_OBJECT;let n=wf._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Rm._endpointCache[i];l(o)||(o=n.fetchJson(),Rm._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new ce(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await iE.fromUrl(new wf(r,n));else{let u=E9e[a];if(!l(u))throw new ce(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new Rm(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=wf.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Rm.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Rm.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rm.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rm._endpointCache={};var y_=Rm;var I9e={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},C_=Object.freeze(I9e);function x9e(e){e=e??V.EMPTY_OBJECT;let t=e.style??C_.AERIAL;return y_.fromAssetId(t)}var E_=x9e;function ul(){me.throwInstantiationError()}Object.defineProperties(ul.prototype,{errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},hasWaterMask:{get:me.throwInstantiationError},hasVertexNormals:{get:me.throwInstantiationError},availability:{get:me.throwInstantiationError}});var yce=[];ul.getRegularGridIndices=function(e,t){let n=yce[e];l(n)||(yce[e]=n=[]);let i=n[t];return l(i)||(e*t<D.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),xce(e,t,i,0)),i};var Cce=[];ul.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=Cce[e];l(n)||(Cce[e]=n=[]);let i=n[t];if(!l(i)){let o=ul.getRegularGridIndices(e,t),r=Ice(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var Ece=[];ul.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=Ece[e];l(n)||(Ece[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=Ice(e,t),h=f.westIndicesSouthToNorth,A=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,_=Fe.createTypedArray(c,u);xce(e,t,_,0),ul.addSkirtIndices(h,A,g,m,o,_,r),i=n[t]={indices:_,westIndicesSouthToNorth:h,southIndicesEastToWest:A,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};ul.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=X2(e,a,r,s),a+=e.length,s=X2(t,a,r,s),a+=t.length,s=X2(n,a,r,s),a+=n.length,X2(i,a,r,s)};function Ice(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function xce(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function X2(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}ul.heightmapTerrainQuality=.25;ul.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*ul.heightmapTerrainQuality/(t*n)};ul.prototype.requestTileGeometry=me.throwInstantiationError;ul.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;ul.prototype.getTileDataAvailable=me.throwInstantiationError;ul.prototype.loadTileDataAvailability=me.throwInstantiationError;var Bs=ul;var J2=`uniform sampler2D u_texture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
out_FragColor = texture(u_texture, v_textureCoordinates);
|
||
}
|
||
`;var Z2=`in vec4 position;
|
||
in float webMercatorT;
|
||
|
||
uniform vec2 u_textureDimensions;
|
||
|
||
out vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
v_textureCoordinates = vec2(position.x, webMercatorT);
|
||
gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0));
|
||
}
|
||
`;var b9e={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},qn=Object.freeze(b9e);function Lx(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=qn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}Lx.createPlaceholder=function(e){let t=new Lx(e,0,0,0);return t.addReference(),t.state=qn.PLACEHOLDER,t};Lx.prototype.addReference=function(){++this.referenceCount};Lx.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};Lx.prototype.processStateMachine=function(e,t,n){this.state===qn.UNLOADED&&!n&&(this.state=qn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===qn.RECEIVED&&(this.state=qn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===qn.READY&&t&&!this.texture;(this.state===qn.TEXTURE_LOADED||i)&&(this.state=qn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var kB=Lx;function sj(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}sj.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};sj.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===qn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==qn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==qn.FAILED&&r.state!==qn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===qn.FAILED||i.state===qn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var UB=sj;function Pi(e,t){this._imageryProvider=e,this._readyEvent=new _e,this._errorEvent=new _e,t=t??V.EMPTY_OBJECT,e=e??V.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Pi.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Pi.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Pi.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Pi.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Pi.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Pi.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Pi.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Pi.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??ae.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new UB(kB.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Pi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Pi.DEFAULT_BRIGHTNESS=1;Pi.DEFAULT_CONTRAST=1;Pi.DEFAULT_HUE=0;Pi.DEFAULT_SATURATION=1;Pi.DEFAULT_GAMMA=1;Pi.DEFAULT_SPLIT=wr.NONE;Pi.DEFAULT_MINIFICATION_FILTER=Zt.LINEAR;Pi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Pi.fromProviderAsync=function(e,t){let n=new Pi(void 0,t);return D9e(n,Promise.resolve(e)),n};Pi.fromWorldImagery=function(e){return e=e??V.EMPTY_OBJECT,Pi.fromProviderAsync(E_({style:e.style}),e)};Pi.prototype.isBaseLayer=function(){return this._isBaseLayer};Pi.prototype.isDestroyed=function(){return!1};Pi.prototype.destroy=function(){return ue(this)};var Sce=new ae,bce=new ae,aj=new ae,wce=new ae;Pi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};Pi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Yi&&e.rectangle.north<Yi.MaximumLatitude&&e.rectangle.south>-Yi.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Sce),a=ae.intersection(e.rectangle,s,bce);if(!l(a)){if(!this.isBaseLayer())return!1;let T=s,w=e.rectangle;a=bce,w.south>=T.north?a.north=a.south=T.north:w.north<=T.south?a.north=a.south=T.south:(a.south=Math.max(w.south,T.south),a.north=Math.min(w.north,T.north)),w.west>=T.east?a.west=a.east=T.east:w.east<=T.west?a.west=a.east=T.west:(a.west=Math.max(w.west,T.west),a.east=Math.min(w.east,T.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=w9e(this,f,c);h=Math.max(0,h);let A=o.maximumLevel;if(h>A&&(h=A),l(o.minimumLevel)){let T=o.minimumLevel;h<T&&(h=T)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),_=g.positionToTileXY(ae.southeast(a),h),y=e.rectangle.width/512,C=e.rectangle.height/512,E=g.tileXYToRectangle(m.x,m.y,h);Math.abs(E.south-e.rectangle.north)<C&&m.y<_.y&&++m.y,Math.abs(E.east-e.rectangle.west)<y&&m.x<_.x&&++m.x;let I=g.tileXYToRectangle(_.x,_.y,h);Math.abs(I.north-e.rectangle.south)<C&&_.y>m.y&&--_.y,Math.abs(I.west-e.rectangle.east)<y&&_.x>m.x&&--_.x;let b=ae.clone(e.rectangle,wce),S=g.tileXYToRectangle(m.x,m.y,h),B=ae.intersection(S,s,aj),v;r?(g.rectangleToNativeRectangle(b,b),g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(B,B),g.rectangleToNativeRectangle(s,s),v=g.tileXYToNativeRectangle.bind(g),y=b.width/512,C=b.height/512):v=g.tileXYToRectangle.bind(g);let P,N=0,L=1,p;!this.isBaseLayer()&&Math.abs(B.west-b.west)>=y&&(N=Math.min(1,(B.west-b.west)/b.width)),!this.isBaseLayer()&&Math.abs(B.north-b.north)>=C&&(L=Math.max(0,(B.north-b.south)/b.height));let x=L;for(let T=m.x;T<=_.x;T++)if(P=N,S=v(T,m.y,h),B=ae.simpleIntersection(S,s,aj),!!l(B)){N=Math.min(1,(B.east-b.west)/b.width),T===_.x&&(this.isBaseLayer()||Math.abs(B.east-b.east)<y)&&(N=1),L=x;for(let w=m.y;w<=_.y;w++){if(p=L,S=v(T,w,h),B=ae.simpleIntersection(S,s,aj),!l(B))continue;L=Math.max(0,(B.south-b.south)/b.height),w===_.y&&(this.isBaseLayer()||Math.abs(B.south-b.south)<C)&&(L=0);let M=new se(P,L,N,p),O=this.getImageryFromCache(T,w,h);i.imagery.splice(n,0,new UB(O,M,r)),++n}}return!0};Pi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Sce),i=c.rectangleToNativeRectangle(i,wce)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new se(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Pi.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=qn.RECEIVED,e.request=void 0,zo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===hi.CANCELLED){e.state=qn.UNLOADED,e.request=void 0;return}e.state=qn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=zo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY});e.request=s,e.state=qn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=qn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Pi.prototype._createTextureWebGL=function(e,t){let n=new on({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Nt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Nt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?et.RGBA:et.RGB,sampler:n})};Pi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=qn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=qn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Yi?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=qn.TEXTURE_LOADED};function Tce(e,t,n){return`${e}:${t}:${n}`}Pi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===Zt.LINEAR&&i===pi.LINEAR&&!et.isCompressedFormat(t.pixelFormat)&&D.isPowerOfTwo(t.width)&&D.isPowerOfTwo(t.height)){n=Zt.LINEAR_MIPMAP_LINEAR;let r=qt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Tce(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Ud.NICEST),t.sampler=u}else{let r=Tce(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Pi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Hi)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Hl({persists:!0,owner:this,preExecute:function(c){S9e(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=qn.READY,t.releaseReference()},canceled:function(){t.state=qn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=qn.READY};Pi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Pi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Pi.prototype.getImageryFromCache=function(e,t,n,i){let o=Bce(e,t,n),r=this._imageryCache[o];return l(r)||(r=new kB(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Pi.prototype.removeImageryFromCache=function(e){let t=Bce(e.x,e.y,e.level);delete this._imageryCache[t]};function Bce(e,t,n){return JSON.stringify([e,t,n])}var $2={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new k,texture:void 0},T9e=jt.supportsTypedArrays()?new Float32Array(128):void 0;function S9e(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let y=new Float32Array(256),C=0;for(let B=0;B<64;++B){let v=B/63;y[C++]=0,y[C++]=v,y[C++]=1,y[C++]=v}let E={position:0,webMercatorT:1},I=Bs.getRegularGridIndices(2,64),b=Et.createIndexBuffer({context:t,typedArray:I,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});o.vertexArray=new li({context:t,attributes:[{index:E.position,vertexBuffer:Et.createVertexBuffer({context:t,typedArray:y,usage:Qe.STATIC_DRAW}),componentsPerAttribute:2},{index:E.webMercatorT,vertexBuffer:Et.createVertexBuffer({context:t,sizeInBytes:512,usage:Qe.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:b});let S=new We({sources:[Z2]});o.shaderProgram=ln.fromCache({context:t,vertexShaderSource:S,fragmentShaderSource:J2,attributeLocations:E}),o.sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;$2.textureDimensions.x=r,$2.textureDimensions.y=s,$2.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Nt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});D.isPowerOfTwo(r)&&D.isPowerOfTwo(s)&&h.generateMipmap(Ud.NICEST);let A=i.south,g=i.north,m=T9e,_=0;for(let y=0;y<64;++y){let C=y/63,E=D.lerp(A,g,C);a=Math.sin(E);let b=(.5*Math.log((1+a)/(1-a))-c)*f;m[_++]=b,m[_++]=b}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=$2,e.vertexArray=o.vertexArray}function w9e(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Hi?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function B9e(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function D9e(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){B9e(e._errorEvent,i)}}var ds=Pi;var cj=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},eQ=cj;var lj=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},GB=lj;var v9e=new ae,Dce=new ae,P9e=new ae,R9e=new ae,M9e=new ae,N9e=new ae,uj=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=ae.intersection(o.rectangle,n.rectangle,v9e),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),u=R9e;a.rectangleToNativeRectangle(t,u);let f=M9e;a.rectangleToNativeRectangle(s,f);let h=(g,m,_)=>{let y=a.tileXYToRectangle(g,m,_),C=ae.intersection(y,s,P9e);if(!l(C))return;let E=N9e;return a.rectangleToNativeRectangle(C,E),E};return e._computeImageryCoverages(n,c,r,u,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(ae.northwest(r),o),a=i.positionToTileXY(ae.southeast(r),o),c=new GB;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let u=t.width/512,f=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<f&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<u&&c.minX<c.maxX&&++c.minX;let m=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(m.north-t.south)<f&&c.maxY>c.minY&&--c.maxY,Math.abs(m.west-t.east)<u&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new ae),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=ae.intersection(t,n,Dce);return l(i)?i:e._clampRectangle(t,n,Dce)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let u=n.minY;u<=n.maxY;u++){let f=r(a,u,i);if(!l(f))continue;let h=e._localizeToCartesianRectangle(f,o,void 0),A=t.getImageryFromCache(a,u,i),g=new e(a,u,i,h,A);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new GB);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},zB=uj;var fj=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=Fn.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=Ht.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,u=t.byteOffset,f=t.byteStride,h=q.getSizeInBytes(s),A=o*h;if(!l(f)||f===A){let I=q.createTypedArray(s,r);return c.getBufferData(I,u),I}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let m=q.createTypedArray(s,r),_=f??A,y=new DataView(g.buffer,g.byteOffset,g.byteLength),C=new Array(o),E=e.createComponentsReader(s);for(let I=0;I<i;++I){let b=u+I*_;E(y,b,o,C);for(let S=0;S<o;++S)m[I*o+S]=C[S]}return m}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===Ht.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===Ht.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===Ht.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===Ht.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new me(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new d;for(let s=0;s<n;s++)d.unpack(t,s*3,r),Fn.octDecodeInRange(r,i,r),d.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new k;for(let a=0;a<n;a++)k.unpack(t,a*2,s),k.multiplyComponents(s,i,s),k.add(s,o,s),k.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new d;for(let a=0;a<n;a++)d.unpack(t,a*3,s),d.multiplyComponents(s,i,s),d.add(s,o,s),d.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new se;for(let a=0;a<n;a++)se.unpack(t,a*4,s),se.multiplyComponents(s,i,s),se.add(s,o,s),se.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=q.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let u=0;u<s;++u)a[u]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case q.BYTE:return function(n,i){return n.getInt8(i)};case q.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case q.SHORT:return function(n,i){return n.getInt16(i,!0)};case q.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case q.INT:return function(n,i){return n.getInt32(i,!0)};case q.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case q.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case q.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new me(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new d,r=t.length/3;for(let s=0;s<r;s++)d.unpack(t,s*3,o),R.multiplyByPoint(n,o,o),d.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===Me.TRIANGLES)return i;if(n===Me.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===Me.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new me(`The primitiveType must be TRIANGLES (${Me.TRIANGLES}, TRIANGLE_STRIP (${Me.TRIANGLE_STRIP}, or TRIANGLE_FAN (${Me.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Fe.UNSIGNED_BYTE:return new Uint8Array(n);case Fe.UNSIGNED_SHORT:return new Uint16Array(n);case Fe.UNSIGNED_INT:return new Uint32Array(n)}throw new me(`The indexDatatype must be UNSIGNED_BYTE (${Fe.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Fe.UNSIGNED_SHORT}, or UNSIGNED_INT (${Fe.UNSIGNED_INT}, but is ${t}`)}},tQ=fj;var dj=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Xe;Xe.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=tQ.readAttributeAsTypedArray(t),r=t.type,s=Ht.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new d,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new ae);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new d;return e.map(t,r=>(R.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new Ae;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new d;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new k,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,u=(a.y-n.y)*r,f=Math.min(Math.max(c,0),1),h=Math.min(Math.max(u,0),1);return i.x=f,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:ct.TEXCOORD,setIndex:0,componentDatatype:q.FLOAT,type:Ht.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new k(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},Ox=dj;var hj=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},nQ=hj;var mj=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new R,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new me("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new me("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=Et.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!R.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=Ox.createCartographicPositions(o,s,h),g=Ox.computeCartographicBoundingRectangle(A),m=new nQ(A,r,g,h);a.push(m)}return R.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=Ox.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return zB.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let u=Math.log2(s*c/a);return zB._clampImageryLevel(i,u)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let u=0;u<c;u++){let h=a[u].imagery;h.state===qn.READY||h.state===qn.FAILED||h.state===qn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new me("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new me(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new me("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),ue(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new R);let o=t.sceneGraph;return R.clone(R.IDENTITY,i),R.multiply(i,t.modelMatrix,i),R.multiply(i,o.components.transform,i),R.multiply(i,o.axisCorrectionMatrix,i),R.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Qt.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new me("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},Fx=mj;var Aj=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},iQ=Aj;var L9e=!1,O9e=new ae,F9e=new ae,pj=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=Fx._extractProjections(s),c=[...new Set(a)],u=e._computeIndexMapping(a,c),f=e._createImageryInputs(s,r,u);if(f.length===0)return;f.length>10&&(yt("imagery-texture-units",`Warning: Draped imagery requires ${f.length} texture units, truncating`),f.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let A=0;A<s.length;A++)h.push(s.get(A));e._processImageryInputs(h,t,f,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=Ht.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,u=e._createImageryUniforms(i);e._setImageryUniforms(c,u)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,pe.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new eQ;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==ds.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==ds.DEFAULT_CONTRAST,n.hue|=o.hue!==ds.DEFAULT_HUE,n.saturation|=o.saturation!==ds.DEFAULT_SATURATION,n.gamma|=o.gamma!==ds.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,pe.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),L9e&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",pe.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,u=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=u,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let f=i.imageryTextureColorToAlpha[o];if(l(f)||(f=new se,i.imageryTextureColorToAlpha[o]=f),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let A=s.colorToAlpha;f.x=A.red,f.y=A.green,f.z=A.blue,f.w=s.colorToAlphaThreshold}else f.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],u=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,f=n.coveragesForImageryLayer(s);for(let h=0;h<f.length;h++){let A=f[h],g=e._createImageryInput(s,A,u,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===qn.FAILED||r.state===qn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===qn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,u=new se(c.minX,c.minY,c.maxX,c.maxY);return new iQ(t,s,a,u,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,O9e),s=o.rectangleToNativeRectangle(i,F9e);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,u=t.width*i,f=t.height*o;return new se(a,c,u,f)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},oQ=pj;var rQ=`#ifdef USE_IBL_LIGHTING
|
||
vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material)
|
||
{
|
||
#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
|
||
// Environment maps were provided, use them for IBL
|
||
vec3 viewDirection = -normalize(position);
|
||
vec3 iblColor = textureIBL(viewDirection, normal, material);
|
||
return iblColor;
|
||
#endif
|
||
|
||
return vec3(0.0);
|
||
}
|
||
#endif
|
||
|
||
#ifdef USE_CLEARCOAT
|
||
vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material)
|
||
{
|
||
vec3 viewDirection = -normalize(position);
|
||
vec3 halfwayDirection = normalize(viewDirection + lightDirection);
|
||
vec3 normal = material.clearcoatNormal;
|
||
float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0);
|
||
|
||
// clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5.
|
||
vec3 f0 = vec3(0.04);
|
||
vec3 f90 = vec3(1.0);
|
||
// Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h).
|
||
// This is to make it energy conserving with a simple layering function.
|
||
float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0);
|
||
vec3 F = fresnelSchlick2(f0, f90, NdotV);
|
||
|
||
// compute specular reflection from direct lighting
|
||
float roughness = material.clearcoatRoughness;
|
||
float alphaRoughness = roughness * roughness;
|
||
float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness);
|
||
vec3 directReflection = F * directStrength * NdotL;
|
||
vec3 color = lightColorHdr * directReflection;
|
||
|
||
#ifdef SPECULAR_IBL
|
||
// Find the direction in which to sample the environment map
|
||
vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal));
|
||
vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness);
|
||
color += iblColor * material.occlusion;
|
||
#endif
|
||
|
||
float clearcoatFactor = material.clearcoatFactor;
|
||
vec3 clearcoatColor = color * clearcoatFactor;
|
||
|
||
// Dim base layer based on transmission loss through clearcoat
|
||
return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor;
|
||
}
|
||
#endif
|
||
|
||
#if defined(LIGHTING_PBR) && defined(HAS_NORMALS)
|
||
vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position)
|
||
{
|
||
#ifdef USE_CUSTOM_LIGHT_COLOR
|
||
vec3 lightColorHdr = model_lightColorHdr;
|
||
#else
|
||
vec3 lightColorHdr = czm_lightColorHdr;
|
||
#endif
|
||
|
||
vec3 viewDirection = -normalize(position);
|
||
vec3 normal = material.normalEC;
|
||
vec3 lightDirection = normalize(czm_lightDirectionEC);
|
||
|
||
vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material);
|
||
vec3 directColor = lightColorHdr * directLighting;
|
||
|
||
// Accumulate colors from base layer
|
||
vec3 color = directColor + material.emissive;
|
||
#ifdef USE_IBL_LIGHTING
|
||
color += computeIBL(position, normal, lightDirection, lightColorHdr, material);
|
||
#endif
|
||
|
||
#ifdef USE_CLEARCOAT
|
||
color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material);
|
||
#endif
|
||
|
||
return color;
|
||
}
|
||
#endif
|
||
|
||
/**
|
||
* Compute the material color under the current lighting conditions.
|
||
* All other material properties are passed through so further stages
|
||
* have access to them.
|
||
*
|
||
* @param {czm_modelMaterial} material The material properties from {@MaterialStageFS}
|
||
* @param {ProcessedAttributes} attributes
|
||
*/
|
||
void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes)
|
||
{
|
||
#ifdef LIGHTING_PBR
|
||
#ifdef HAS_NORMALS
|
||
vec3 color = computePbrLighting(material, attributes.positionEC);
|
||
#else
|
||
vec3 color = material.diffuse * material.occlusion + material.emissive;
|
||
#endif
|
||
// In HDR mode, the frame buffer is in linear color space. The
|
||
// post-processing stages (see PostProcessStageCollection) will handle
|
||
// tonemapping. However, if HDR is not enabled, we must tonemap else large
|
||
// values may be clamped to 1.0
|
||
#ifndef HDR
|
||
color = czm_pbrNeutralTonemapping(color);
|
||
#endif
|
||
#else // unlit
|
||
vec3 color = material.diffuse;
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
|
||
// The colors resulting from point cloud styles are adjusted differently.
|
||
color = czm_gammaCorrect(color);
|
||
#elif !defined(HDR)
|
||
// If HDR is not enabled, the frame buffer stores sRGB colors rather than
|
||
// linear colors so the linear value must be converted.
|
||
color = czm_linearToSrgb(color);
|
||
#endif
|
||
|
||
material.diffuse = color;
|
||
}
|
||
`;var Q9e={UNLIT:0,PBR:1},fp=Object.freeze(Q9e);var vce={name:"LightingPipelineStage"};vce.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===fp.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(rQ)};var sQ=vce;var aQ=`// If the style color is white, it implies the feature has not been styled.
|
||
bool isDefaultStyleColor(vec3 color)
|
||
{
|
||
return all(greaterThan(color, vec3(1.0 - czm_epsilon3)));
|
||
}
|
||
|
||
vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend)
|
||
{
|
||
vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend);
|
||
vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor;
|
||
return color;
|
||
}
|
||
|
||
vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)
|
||
{
|
||
return vec2(textureTransform * vec3(texCoord, 1.0));
|
||
}
|
||
|
||
#ifdef HAS_NORMAL_TEXTURE
|
||
vec2 getNormalTexCoords()
|
||
{
|
||
vec2 texCoord = TEXCOORD_NORMAL;
|
||
#ifdef HAS_NORMAL_TEXTURE_TRANSFORM
|
||
texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0));
|
||
#endif
|
||
return texCoord;
|
||
}
|
||
#endif
|
||
|
||
#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE)
|
||
vec3 computeTangent(in vec3 position, in vec2 normalTexCoords)
|
||
{
|
||
vec2 tex_dx = dFdx(normalTexCoords);
|
||
vec2 tex_dy = dFdy(normalTexCoords);
|
||
float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y;
|
||
vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position);
|
||
return tangent / determinant;
|
||
}
|
||
#endif
|
||
|
||
#ifdef USE_ANISOTROPY
|
||
struct NormalInfo {
|
||
vec3 tangent;
|
||
vec3 bitangent;
|
||
vec3 normal;
|
||
vec3 geometryNormal;
|
||
};
|
||
|
||
NormalInfo getNormalInfo(ProcessedAttributes attributes)
|
||
{
|
||
vec3 geometryNormal = attributes.normalEC;
|
||
#ifdef HAS_NORMAL_TEXTURE
|
||
vec2 normalTexCoords = getNormalTexCoords();
|
||
#endif
|
||
|
||
#ifdef HAS_BITANGENTS
|
||
vec3 tangent = attributes.tangentEC;
|
||
vec3 bitangent = attributes.bitangentEC;
|
||
#else // Assume HAS_NORMAL_TEXTURE
|
||
vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords);
|
||
tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent));
|
||
vec3 bitangent = normalize(cross(geometryNormal, tangent));
|
||
#endif
|
||
|
||
#ifdef HAS_NORMAL_TEXTURE
|
||
mat3 tbn = mat3(tangent, bitangent, geometryNormal);
|
||
vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
|
||
normalSample = 2.0 * normalSample - 1.0;
|
||
#ifdef HAS_NORMAL_TEXTURE_SCALE
|
||
normalSample.xy *= u_normalTextureScale;
|
||
#endif
|
||
vec3 normal = normalize(tbn * normalSample);
|
||
#else
|
||
vec3 normal = geometryNormal;
|
||
#endif
|
||
|
||
#ifdef HAS_DOUBLE_SIDED_MATERIAL
|
||
if (czm_backFacing()) {
|
||
tangent *= -1.0;
|
||
bitangent *= -1.0;
|
||
normal *= -1.0;
|
||
geometryNormal *= -1.0;
|
||
}
|
||
#endif
|
||
|
||
NormalInfo normalInfo;
|
||
normalInfo.tangent = tangent;
|
||
normalInfo.bitangent = bitangent;
|
||
normalInfo.normal = normal;
|
||
normalInfo.geometryNormal = geometryNormal;
|
||
|
||
return normalInfo;
|
||
}
|
||
#endif
|
||
|
||
#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME)
|
||
vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
|
||
{
|
||
vec2 normalTexCoords = getNormalTexCoords();
|
||
|
||
// If HAS_BITANGENTS is set, then HAS_TANGENTS is also set
|
||
#ifdef HAS_BITANGENTS
|
||
vec3 t = attributes.tangentEC;
|
||
vec3 b = attributes.bitangentEC;
|
||
#else
|
||
vec3 t = computeTangent(attributes.positionEC, normalTexCoords);
|
||
t = normalize(t - geometryNormal * dot(geometryNormal, t));
|
||
vec3 b = normalize(cross(geometryNormal, t));
|
||
#endif
|
||
|
||
mat3 tbn = mat3(t, b, geometryNormal);
|
||
vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb;
|
||
normalSample = 2.0 * normalSample - 1.0;
|
||
#ifdef HAS_NORMAL_TEXTURE_SCALE
|
||
normalSample.xy *= u_normalTextureScale;
|
||
#endif
|
||
return normalize(tbn * normalSample);
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE
|
||
vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal)
|
||
{
|
||
vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL;
|
||
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM
|
||
normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0));
|
||
#endif
|
||
|
||
// If HAS_BITANGENTS is set, then HAS_TANGENTS is also set
|
||
#ifdef HAS_BITANGENTS
|
||
vec3 t = attributes.tangentEC;
|
||
vec3 b = attributes.bitangentEC;
|
||
#else
|
||
vec3 t = computeTangent(attributes.positionEC, normalTexCoords);
|
||
t = normalize(t - geometryNormal * dot(geometryNormal, t));
|
||
vec3 b = normalize(cross(geometryNormal, t));
|
||
#endif
|
||
|
||
mat3 tbn = mat3(t, b, geometryNormal);
|
||
vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb;
|
||
normalSample = 2.0 * normalSample - 1.0;
|
||
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE
|
||
normalSample.xy *= u_clearcoatNormalTextureScale;
|
||
#endif
|
||
return normalize(tbn * normalSample);
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_NORMALS
|
||
vec3 computeNormal(ProcessedAttributes attributes)
|
||
{
|
||
// Geometry normal. This is already normalized
|
||
vec3 normal = attributes.normalEC;
|
||
|
||
#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME)
|
||
normal = getNormalFromTexture(attributes, normal);
|
||
#endif
|
||
|
||
#ifdef HAS_DOUBLE_SIDED_MATERIAL
|
||
if (czm_backFacing()) {
|
||
normal = -normal;
|
||
}
|
||
#endif
|
||
|
||
return normal;
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_BASE_COLOR_TEXTURE
|
||
vec4 getBaseColorFromTexture()
|
||
{
|
||
vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR;
|
||
#ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM
|
||
baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform);
|
||
#endif
|
||
|
||
vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords));
|
||
|
||
#ifdef HAS_BASE_COLOR_FACTOR
|
||
baseColorWithAlpha *= u_baseColorFactor;
|
||
#endif
|
||
|
||
return baseColorWithAlpha;
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_EMISSIVE_TEXTURE
|
||
vec3 getEmissiveFromTexture()
|
||
{
|
||
vec2 emissiveTexCoords = TEXCOORD_EMISSIVE;
|
||
#ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM
|
||
emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform);
|
||
#endif
|
||
|
||
vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb);
|
||
#ifdef HAS_EMISSIVE_FACTOR
|
||
emissive *= u_emissiveFactor;
|
||
#endif
|
||
|
||
return emissive;
|
||
}
|
||
#endif
|
||
|
||
#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS)
|
||
void setSpecularGlossiness(inout czm_modelMaterial material)
|
||
{
|
||
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE
|
||
vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;
|
||
#ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM
|
||
specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
|
||
#endif
|
||
|
||
vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords));
|
||
vec3 specular = specularGlossiness.rgb;
|
||
float glossiness = specularGlossiness.a;
|
||
#ifdef HAS_LEGACY_SPECULAR_FACTOR
|
||
specular *= u_legacySpecularFactor;
|
||
#endif
|
||
|
||
#ifdef HAS_GLOSSINESS_FACTOR
|
||
glossiness *= u_glossinessFactor;
|
||
#endif
|
||
#else
|
||
#ifdef HAS_LEGACY_SPECULAR_FACTOR
|
||
vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0));
|
||
#else
|
||
vec3 specular = vec3(1.0);
|
||
#endif
|
||
|
||
#ifdef HAS_GLOSSINESS_FACTOR
|
||
float glossiness = clamp(u_glossinessFactor, 0.0, 1.0);
|
||
#else
|
||
float glossiness = 1.0;
|
||
#endif
|
||
#endif
|
||
|
||
#ifdef HAS_DIFFUSE_TEXTURE
|
||
vec2 diffuseTexCoords = TEXCOORD_DIFFUSE;
|
||
#ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM
|
||
diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform);
|
||
#endif
|
||
|
||
vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords));
|
||
#ifdef HAS_DIFFUSE_FACTOR
|
||
diffuse *= u_diffuseFactor;
|
||
#endif
|
||
#elif defined(HAS_DIFFUSE_FACTOR)
|
||
vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0));
|
||
#else
|
||
vec4 diffuse = vec4(1.0);
|
||
#endif
|
||
|
||
material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular));
|
||
// the specular glossiness extension's alpha overrides anything set
|
||
// by the base material.
|
||
material.alpha = diffuse.a;
|
||
|
||
material.specular = specular;
|
||
|
||
// glossiness is the opposite of roughness, but easier for artists to use.
|
||
material.roughness = 1.0 - glossiness;
|
||
}
|
||
#elif defined(LIGHTING_PBR)
|
||
float setMetallicRoughness(inout czm_modelMaterial material)
|
||
{
|
||
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE
|
||
vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS;
|
||
#ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM
|
||
metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform);
|
||
#endif
|
||
|
||
vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb;
|
||
float metalness = clamp(metallicRoughness.b, 0.0, 1.0);
|
||
float roughness = clamp(metallicRoughness.g, 0.0, 1.0);
|
||
#ifdef HAS_METALLIC_FACTOR
|
||
metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0);
|
||
#endif
|
||
|
||
#ifdef HAS_ROUGHNESS_FACTOR
|
||
roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0);
|
||
#endif
|
||
#else
|
||
#ifdef HAS_METALLIC_FACTOR
|
||
float metalness = clamp(u_metallicFactor, 0.0, 1.0);
|
||
#else
|
||
float metalness = 1.0;
|
||
#endif
|
||
|
||
#ifdef HAS_ROUGHNESS_FACTOR
|
||
float roughness = clamp(u_roughnessFactor, 0.0, 1.0);
|
||
#else
|
||
float roughness = 1.0;
|
||
#endif
|
||
#endif
|
||
|
||
// dielectrics use f0 = 0.04, metals use albedo as f0
|
||
const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04);
|
||
vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness);
|
||
|
||
material.specular = f0;
|
||
|
||
// diffuse only applies to dielectrics.
|
||
material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness);
|
||
|
||
// This is perceptual roughness. The square of this value is used for direct lighting
|
||
material.roughness = roughness;
|
||
|
||
return metalness;
|
||
}
|
||
#ifdef USE_SPECULAR
|
||
void setSpecular(inout czm_modelMaterial material, in float metalness)
|
||
{
|
||
#ifdef HAS_SPECULAR_TEXTURE
|
||
vec2 specularTexCoords = TEXCOORD_SPECULAR;
|
||
#ifdef HAS_SPECULAR_TEXTURE_TRANSFORM
|
||
specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform);
|
||
#endif
|
||
float specularWeight = texture(u_specularTexture, specularTexCoords).a;
|
||
#ifdef HAS_SPECULAR_FACTOR
|
||
specularWeight *= u_specularFactor;
|
||
#endif
|
||
#else
|
||
#ifdef HAS_SPECULAR_FACTOR
|
||
float specularWeight = u_specularFactor;
|
||
#else
|
||
float specularWeight = 1.0;
|
||
#endif
|
||
#endif
|
||
|
||
#ifdef HAS_SPECULAR_COLOR_TEXTURE
|
||
vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR;
|
||
#ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM
|
||
specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform);
|
||
#endif
|
||
vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb;
|
||
vec3 specularColorFactor = czm_srgbToLinear(specularColorSample);
|
||
#ifdef HAS_SPECULAR_COLOR_FACTOR
|
||
specularColorFactor *= u_specularColorFactor;
|
||
#endif
|
||
#else
|
||
#ifdef HAS_SPECULAR_COLOR_FACTOR
|
||
vec3 specularColorFactor = u_specularColorFactor;
|
||
#else
|
||
vec3 specularColorFactor = vec3(1.0);
|
||
#endif
|
||
#endif
|
||
material.specularWeight = specularWeight;
|
||
vec3 f0 = material.specular;
|
||
vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0));
|
||
material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness);
|
||
}
|
||
#endif
|
||
#ifdef USE_ANISOTROPY
|
||
void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo)
|
||
{
|
||
mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x);
|
||
float anisotropyStrength = u_anisotropy.z;
|
||
|
||
vec2 direction = vec2(1.0, 0.0);
|
||
#ifdef HAS_ANISOTROPY_TEXTURE
|
||
vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY;
|
||
#ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM
|
||
anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform);
|
||
#endif
|
||
vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb;
|
||
direction = anisotropySample.rg * 2.0 - vec2(1.0);
|
||
anisotropyStrength *= anisotropySample.b;
|
||
#endif
|
||
|
||
direction = rotation * direction;
|
||
mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal);
|
||
vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0));
|
||
vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT);
|
||
|
||
material.anisotropicT = anisotropicT;
|
||
material.anisotropicB = anisotropicB;
|
||
material.anisotropyStrength = anisotropyStrength;
|
||
}
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes)
|
||
{
|
||
#ifdef HAS_CLEARCOAT_TEXTURE
|
||
vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT;
|
||
#ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM
|
||
clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform);
|
||
#endif
|
||
float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r;
|
||
#ifdef HAS_CLEARCOAT_FACTOR
|
||
clearcoatFactor *= u_clearcoatFactor;
|
||
#endif
|
||
#else
|
||
#ifdef HAS_CLEARCOAT_FACTOR
|
||
float clearcoatFactor = u_clearcoatFactor;
|
||
#else
|
||
// PERFORMANCE_IDEA: this case should turn the whole extension off
|
||
float clearcoatFactor = 0.0;
|
||
#endif
|
||
#endif
|
||
|
||
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE
|
||
vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS;
|
||
#ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM
|
||
clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform);
|
||
#endif
|
||
float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g;
|
||
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
|
||
clearcoatRoughness *= u_clearcoatRoughnessFactor;
|
||
#endif
|
||
#else
|
||
#ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR
|
||
float clearcoatRoughness = u_clearcoatRoughnessFactor;
|
||
#else
|
||
float clearcoatRoughness = 0.0;
|
||
#endif
|
||
#endif
|
||
|
||
material.clearcoatFactor = clearcoatFactor;
|
||
// This is perceptual roughness. The square of this value is used for direct lighting
|
||
material.clearcoatRoughness = clearcoatRoughness;
|
||
#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE
|
||
material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC);
|
||
#else
|
||
material.clearcoatNormal = attributes.normalEC;
|
||
#endif
|
||
}
|
||
#endif
|
||
#endif
|
||
|
||
void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature)
|
||
{
|
||
#ifdef USE_ANISOTROPY
|
||
NormalInfo normalInfo = getNormalInfo(attributes);
|
||
material.normalEC = normalInfo.normal;
|
||
#elif defined(HAS_NORMALS)
|
||
material.normalEC = computeNormal(attributes);
|
||
#endif
|
||
|
||
vec4 baseColorWithAlpha = vec4(1.0);
|
||
// Regardless of whether we use PBR, set a base color
|
||
#ifdef HAS_BASE_COLOR_TEXTURE
|
||
baseColorWithAlpha = getBaseColorFromTexture();
|
||
#elif defined(HAS_BASE_COLOR_FACTOR)
|
||
baseColorWithAlpha = u_baseColorFactor;
|
||
#endif
|
||
|
||
#ifdef HAS_IMAGERY
|
||
baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha);
|
||
#endif // HAS_IMAGERY
|
||
|
||
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
|
||
baseColorWithAlpha = v_pointCloudColor;
|
||
#elif defined(HAS_COLOR_0)
|
||
vec4 color = attributes.color_0;
|
||
// .pnts files store colors in the sRGB color space
|
||
#ifdef HAS_SRGB_COLOR
|
||
color = czm_srgbToLinear(color);
|
||
#endif
|
||
baseColorWithAlpha *= color;
|
||
#endif
|
||
|
||
#ifdef USE_CPU_STYLING
|
||
baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend);
|
||
#endif
|
||
material.baseColor = baseColorWithAlpha;
|
||
material.diffuse = baseColorWithAlpha.rgb;
|
||
material.alpha = baseColorWithAlpha.a;
|
||
|
||
#ifdef HAS_OCCLUSION_TEXTURE
|
||
vec2 occlusionTexCoords = TEXCOORD_OCCLUSION;
|
||
#ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM
|
||
occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform);
|
||
#endif
|
||
material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r;
|
||
#endif
|
||
|
||
#ifdef HAS_EMISSIVE_TEXTURE
|
||
material.emissive = getEmissiveFromTexture();
|
||
#elif defined(HAS_EMISSIVE_FACTOR)
|
||
material.emissive = u_emissiveFactor;
|
||
#endif
|
||
|
||
#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS)
|
||
setSpecularGlossiness(material);
|
||
#elif defined(LIGHTING_PBR)
|
||
float metalness = setMetallicRoughness(material);
|
||
#ifdef USE_SPECULAR
|
||
setSpecular(material, metalness);
|
||
#endif
|
||
#ifdef USE_ANISOTROPY
|
||
setAnisotropy(material, normalInfo);
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
setClearcoat(material, attributes);
|
||
#endif
|
||
#endif
|
||
}
|
||
`;var{Material:k9e,MetallicRoughness:gj,SpecularGlossiness:_j,Specular:Pce,Clearcoat:Rce}=bn,Mce={name:"MaterialPipelineStage",_processTexture:Jl,_processTextureTransform:Nce};Mce.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;G9e(i,r,s,u,f,h,c),l(i.specularGlossiness)?z9e(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Qt.supportedExtensions.KHR_materials_specular&&V9e(i.specular,r,s,u,c),l(i.anisotropy)&&Qt.supportedExtensions.KHR_materials_anisotropy&&W9e(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Qt.supportedExtensions.KHR_materials_clearcoat&&j9e(i.clearcoat,r,s,u,c),Y9e(i.metallicRoughness,r,s,u,c));let A=Qt.getAttributeBySemantic(t,ct.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,m=e.lightingOptions;i.unlit||!A||a||g?m.lightingModel=fp.UNLIT:m.lightingModel=fp.PBR;let _=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=_;let y=e.alphaOptions;i.alphaMode===np.BLEND?y.pass=Be.TRANSLUCENT:i.alphaMode===np.MASK&&(y.alphaCutoff=i.alphaCutoff),s.addFragmentLines(aQ),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function Nce(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function U9e(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function Jl(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!J.equals(f,J.IDENTITY)&&Nce(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&U9e(e,t,n,i,o)}function G9e(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,k9e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&Jl(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&Jl(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&Jl(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function z9e(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!se.equals(s,_j.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,_j.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==_j.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function V9e(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==Pce.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,Pce.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var H9e=new d;function W9e(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&Jl(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,H9e)}}function j9e(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==Rce.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&Jl(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==Rce.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&Jl(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&Jl(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function Y9e(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&Jl(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!se.equals(s,gj.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&Jl(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==gj.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==gj.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var cQ=Mce;var fl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};fl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(fl.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${fl.METADATA_PICKING_VALUE_TYPE} value = ${fl.METADATA_PICKING_VALUE_TYPE}(${fl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${fl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${fl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${fl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${fl.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var Gf=fl;var lQ=`void morphTargetsStage(inout ProcessedAttributes attributes)
|
||
{
|
||
vec3 positionMC = attributes.positionMC;
|
||
attributes.positionMC = getMorphedPosition(positionMC);
|
||
|
||
#ifdef HAS_NORMALS
|
||
vec3 normalMC = attributes.normalMC;
|
||
attributes.normalMC = getMorphedNormal(normalMC);
|
||
#endif
|
||
|
||
#ifdef HAS_TANGENTS
|
||
vec3 tangentMC = attributes.tangentMC;
|
||
attributes.tangentMC = getMorphedTangent(tangentMC);
|
||
#endif
|
||
}`;var tc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};tc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),$9e(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],A=h.semantic;A!==ct.POSITION&&A!==ct.NORMAL&&A!==ct.TANGENT||(K9e(e,h,e.attributeIndex,a),e.attributeIndex++)}}e6e(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(lQ);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=wt(s,e.uniformMap)};var q9e={attributeString:void 0,functionId:void 0};function K9e(e,t,n,i){let o=e.shaderBuilder;X9e(e,t,n);let r=J9e(t,q9e);Z9e(o,r,i)}function X9e(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:Ht.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function J9e(e,t){switch(e.semantic){case ct.POSITION:t.attributeString="Position",t.functionId=tc.FUNCTION_ID_GET_MORPHED_POSITION;break;case ct.NORMAL:t.attributeString="Normal",t.functionId=tc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case ct.TANGENT:t.attributeString="Tangent",t.functionId=tc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function Z9e(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function $9e(e){e.addFunction(tc.FUNCTION_ID_GET_MORPHED_POSITION,tc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_NORMAL,tc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_TANGENT,tc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function e6e(e){e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var uQ=tc;var Lce={name:"PickingPipelineStage"};Lce.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)t6e(e,t,a,i);else if(l(a))n6e(e,i);else{let c=Oce(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function Oce(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(Nr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function t6e(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Qt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Qt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return f.pickTexture??f.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function n6e(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let A=Oce(e,h),g=t.createPickId(A);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=G.floatToByte(m.red),o[h*4+1]=G.floatToByte(m.green),o[h*4+2]=G.floatToByte(m.blue),o[h*4+3]=G.floatToByte(m.alpha)}r._pickIds=i;let a=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var fQ=Lce;var i6e={ADD:0,REPLACE:1},rr=Object.freeze(i6e);var dQ=`float getPointSizeFromAttenuation(vec3 positionEC) {
|
||
// Variables are packed into a single vector to minimize gl.uniformXXX() calls
|
||
float pointSize = model_pointCloudParameters.x;
|
||
float geometricError = model_pointCloudParameters.y;
|
||
float depthMultiplier = model_pointCloudParameters.z;
|
||
|
||
float depth = -positionEC.z;
|
||
return min((geometricError / depth) * depthMultiplier, pointSize);
|
||
}
|
||
|
||
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
|
||
float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
|
||
float tiles3d_tileset_time = model_pointCloudParameters.w;
|
||
return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time));
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
|
||
vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
|
||
float tiles3d_tileset_time = model_pointCloudParameters.w;
|
||
return getColorFromStyle(attributes, metadata, tiles3d_tileset_time);
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE
|
||
float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
|
||
float tiles3d_tileset_time = model_pointCloudParameters.w;
|
||
return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time));
|
||
}
|
||
#elif defined(HAS_POINT_CLOUD_ATTENUATION)
|
||
float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) {
|
||
return getPointSizeFromAttenuation(v_positionEC);
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING
|
||
float pointCloudBackFaceCullingStage() {
|
||
#if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL)
|
||
// This needs to be computed in eye coordinates so we can't use attributes.normalMC
|
||
return step(-v_normalEC.z, 0.0);
|
||
#else
|
||
return 1.0;
|
||
#endif
|
||
}
|
||
#endif
|
||
`;var o6e=new se,Qce={name:"PointCloudStylingPipelineStage"};Qce.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let _=c6e(a),y=l6e(r,_);u6e(i,y);let E=f6e(y).indexOf("normalMC")>=0,I=Qt.getAttributeBySemantic(t,ct.NORMAL);if(E&&!I)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),y.styleTranslucent&&(e.alphaOptions.pass=Be.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,A,g;Nr.is3DTiles(o.type)&&(A=!0,h=o.content,g=h.tile.refine===rr.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(dQ);let m=e.uniformMap;m.model_pointCloudParameters=function(){let _=o6e,y=1;A&&(y=g?5:h.tileset.memoryAdjustedScreenSpaceError),_.x=f.maximumAttenuation??y,_.x*=n.pixelRatio;let C=r6e(e,t,f,h);_.y=C*f.geometricErrorScale;let E=n.context,I=n.camera.frustum,b;return n.mode===ie.SCENE2D||I instanceof An?b=Number.POSITIVE_INFINITY:b=E.drawingBufferHeight/n.camera.frustum.sseDenominator,_.z=b,A&&(_.w=h.tileset.timeSinceLoad),_}};var Fce=new d;function r6e(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Qt.getAttributeBySemantic(t,ct.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,Fce);a=R.multiplyByPointAsVector(s,a,Fce);let c=a.x*a.y*a.z;return D.cbrt(c/r)}var s6e={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},a6e={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function c6e(e){let t=ze(a6e);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var yj="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function l6e(e,t){let n=s6e,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${yj})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${yj})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${yj})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function u6e(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function Cj(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function f6e(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&Cj(t,o),l(n)&&Cj(n,o),l(i)&&Cj(i,o),o}var hQ=Qce;var mQ=`void primitiveOutlineStage() {
|
||
v_outlineCoordinates = a_outlineCoordinates;
|
||
}
|
||
`;var AQ=`void primitiveOutlineStage(inout czm_modelMaterial material) {
|
||
if (!model_showOutline) {
|
||
return;
|
||
}
|
||
|
||
float outlineX =
|
||
texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r;
|
||
float outlineY =
|
||
texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r;
|
||
float outlineZ =
|
||
texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r;
|
||
float outlineness = max(outlineX, max(outlineY, outlineZ));
|
||
|
||
material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness);
|
||
}
|
||
|
||
`;var kce={name:"PrimitiveOutlinePipelineStage"};kce.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:Ht.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=dx.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(mQ),i.addFragmentLines(AQ)};var pQ=kce;var Uce={name:"PrimitiveStatisticsPipelineStage",_countGeometry:Gce,_count2DPositions:zce,_countMorphTargetAttributes:Vce,_countMaterialTextures:Hce,_countFeatureIdTextures:Wce,_countBinaryMetadata:jce};Uce.process=function(e,t,n){let i=e.model,o=i.statistics;Gce(o,t),zce(o,e.runtimePrimitive),Vce(o,t),Hce(o,t.material),Wce(o,t.featureIds),jce(o,i)};function Gce(e,t){let n=l(t.indices)?t.indices.count:Qt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Me.POINTS?e.pointsLength+=n:Me.isTriangles(i)&&(e.trianglesLength+=d6e(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function d6e(e,t){switch(e){case Me.TRIANGLES:return t/3;case Me.TRIANGLE_STRIP:case Me.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function zce(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function Vce(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function Hce(e,t){let n=h6e(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function h6e(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function Wce(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof bn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function jce(e,t){let n=t.structuralMetadata;l(n)&&(m6e(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function m6e(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var gQ=Uce;var A6e=new R,p6e=new R,Yce={name:"SceneMode2DPipelineStage"};Yce.process=function(e,t,n){let i=Qt.getAttributeBySemantic(t,ct.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=R.multiplyTransformation(s,a,A6e),u=y6e(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let _=I6e(i,c,u,n);f.positionBuffer2D=_,r._modelResources.push(_),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let A=R.fromTranslation(u.center,new R),g=n.context,m={u_modelView2D:function(){return R.multiplyTransformation(g.uniformState.view,A,p6e)}};e.uniformMap=wt(m,e.uniformMap)};var g6e=new d,_6e=new d;function y6e(e,t,n){let i=R.multiplyByPoint(t,e.positionMin,g6e),o=to.computeActualEllipsoidPosition(n,i,i),r=R.multiplyByPoint(t,e.positionMax,_6e),s=to.computeActualEllipsoidPosition(n,r,r);return le.fromCornerPoints(o,s,new le)}var qce=new d;function C6e(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,qce),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function E6e(e,t,n,i){let o;l(e.quantization)?o=C6e(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,qce);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=R.multiplyByPoint(t,u,u),h=to.computeActualEllipsoidPosition(i,f,f),A=d.subtract(h,n,h);o[c]=A.x,o[c+1]=A.y,o[c+2]=A.z}return o}function I6e(e,t,n,i){let o=ze(i);o.mode=ie.COLUMBUS_VIEW;let r=n.center,s=E6e(e,t,r,o),a=Et.createVertexBuffer({context:i.context,typedArray:s,usage:Qe.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var _Q=Yce;var yQ=`void skinningStage(inout ProcessedAttributes attributes)
|
||
{
|
||
mat4 skinningMatrix = getSkinningMatrix();
|
||
mat3 skinningMatrixMat3 = mat3(skinningMatrix);
|
||
|
||
vec4 positionMC = vec4(attributes.positionMC, 1.0);
|
||
attributes.positionMC = vec3(skinningMatrix * positionMC);
|
||
|
||
#ifdef HAS_NORMALS
|
||
vec3 normalMC = attributes.normalMC;
|
||
attributes.normalMC = skinningMatrixMat3 * normalMC;
|
||
#endif
|
||
|
||
#ifdef HAS_TANGENTS
|
||
vec3 tangentMC = attributes.tangentMC;
|
||
attributes.tangentMC = skinningMatrixMat3 * tangentMC;
|
||
#endif
|
||
}`;var rE={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};rE.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),b6e(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(yQ);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=wt(r,e.uniformMap)};function x6e(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===ct.JOINTS||r.semantic===ct.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function b6e(e,t){e.addFunction(rE.FUNCTION_ID_GET_SKINNING_MATRIX,rE.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=x6e(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var CQ=rE;var EQ=`void verticalExaggerationStage(
|
||
inout ProcessedAttributes attributes
|
||
) {
|
||
// Compute the distance from the camera to the local center of curvature.
|
||
vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0);
|
||
vec2 vertexAzimuth = normalize(vertexPositionENU.xy);
|
||
// Curvature = 1 / radius of curvature.
|
||
float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature);
|
||
float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight;
|
||
|
||
// Compute the approximate ellipsoid normal at the vertex position.
|
||
// Uses a circular approximation for the Earth curvature along the geodesic.
|
||
vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz;
|
||
vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC;
|
||
vec3 vertexNormal = normalize(centerToVertex);
|
||
|
||
// Estimate the (sine of the) angle between the camera direction and the vertex normal
|
||
float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC);
|
||
float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC);
|
||
float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance);
|
||
bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta;
|
||
|
||
// Approximate the change in height above the ellipsoid, from camera to vertex position.
|
||
float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal);
|
||
float smallAngleVersine = 0.5 * sinTheta * sinTheta;
|
||
float versine = isSmallAngle ? smallAngleVersine : exactVersine;
|
||
float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine;
|
||
float vertexHeight = czm_eyeHeight + dHeight;
|
||
|
||
// Transform the approximate vertex normal to model coordinates.
|
||
vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz;
|
||
vertexNormalMC = normalize(vertexNormalMC);
|
||
|
||
// Compute the exaggeration and apply it along the approximate vertex normal.
|
||
float stretch = u_verticalExaggerationAndRelativeHeight.x;
|
||
float shift = u_verticalExaggerationAndRelativeHeight.y;
|
||
float exaggeration = (vertexHeight - shift) * (stretch - 1.0);
|
||
attributes.positionMC += exaggeration * vertexNormalMC;
|
||
}
|
||
`;var Kce={name:"VerticalExaggerationPipelineStage"},T6e=new k;Kce.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(EQ),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return k.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,T6e)}};var IQ=Kce;var Ej={};function S6e(e){let t=Fe.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function w6e(e,t){let n=t.length,i=Fe.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function B6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function D6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function v6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function P6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}Ej.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Me.TRIANGLES)return i?w6e(t,n):S6e(t);if(e===Me.TRIANGLE_STRIP)return i?D6e(t,n):B6e(t);if(e===Me.TRIANGLE_FAN)return i?P6e(t,n):v6e(t)};Ej.getWireframeIndicesCount=function(e,t){return e===Me.TRIANGLES?t*2:e===Me.TRIANGLE_STRIP||e===Me.TRIANGLE_FAN?2+(t-2)*4:t};var VB=Ej;var Xce={name:"WireframePipelineStage"};Xce.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=R6e(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Me.LINES,e.count=VB.getWireframeIndicesCount(a,c)};function R6e(e,t,n){let o=Qt.getAttributeBySemantic(e,ct.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Fe.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=VB.createWireframeIndices(a,o,s),u=Fe.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Et.createIndexBuffer({context:n.context,typedArray:c,usage:Qe.STATIC_DRAW,indexDatatype:u})}var xQ=Xce;function Jce(e){e=e??V.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Jce.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,u=e.mode!==ie.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,A=l(i.skin),g=l(o.imageryLayers),m=l(r),y=!(m&&l(r.fragmentShaderText))||r.mode!==p_.REPLACE_MATERIAL,C=Qt.hasQuantizedAttributes(n.attributes),E=o.debugWireframe&&Me.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),I=o.pointCloudShading,b=l(I)&&I.attenuation,S=l(I)&&I.backFaceCulling,B=n.primitiveType===Me.POINTS&&(l(s)||b||S),v=o._enableShowOutline&&l(n.outlineCoordinates),P=M6e(o,i,n),N=l(o.classificationType);u&&t.push(_Q),t.push(N2),E&&t.push(xQ),N&&t.push(C2),h&&t.push(uQ),A&&t.push(CQ),B&&t.push(hQ),C&&t.push(P2),g&&(v?yt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(oQ)),y&&t.push(cQ),t.push(eE),t.push(Xd),t.push(Gf),P.hasPropertyTable&&(t.push(nE),t.push(y2),t.push(x2)),f&&t.push(IQ),m&&t.push(v2),t.push(sQ),o.allowPicking&&t.push(fQ),v&&t.push(pQ),t.push(_2),t.push(gQ)};function M6e(e,t,n){let i;return l(t.instances)&&(i=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var bQ=Jce;function Ij(e){e=e??V.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],N6e(this)}Object.defineProperties(Ij.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function N6e(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],A=Zce(f,h,new R);a.push(A)}}function Zce(e,t,n){let i=R.multiplyTransformation(e.transformToRoot,e.transform,n);return n=R.multiplyTransformation(i,t,n),n}Ij.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Zce(i,o,e[n])}};var TQ=Ij;function L6e(){this.pass=void 0,this.alphaCutoff=void 0}var Qx=L6e;function xj(e){this.name=e,this.fields=[]}xj.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};xj.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var SQ=xj;function bj(e){this.signature=e,this.body=[]}bj.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};bj.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var wQ=bj;function dl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(dl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});dl.prototype.addDefine=function(e,t,n){n=n??pe.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};dl.prototype.addStruct=function(e,t,n){this._structs[e]=new SQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};dl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};dl.prototype.addFunction=function(e,t,n){this._functions[e]=new wQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};dl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};dl.prototype.addUniform=function(e,t,n){n=n??pe.BOTH;let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};dl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};dl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=F6e(e),i};dl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};dl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=O6e(this),i=Q6e(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(`
|
||
`),r=new We({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(`
|
||
`),a=new We({defines:this._fragmentShaderParts.defineLines,sources:[s]});return ln.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};dl.prototype.clone=function(){return ze(this,!0)};function O6e(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}function F6e(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function Q6e(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}var I_=dl;function k6e(e){this.shaderBuilder=new I_,this.model=e,this.uniformMap={},this.alphaOptions=new Qx,this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var BQ=k6e;var DQ=`void silhouetteStage(inout vec4 color) {
|
||
if(model_silhouettePass) {
|
||
color = czm_gammaCorrect(model_silhouetteColor);
|
||
}
|
||
}`;var vQ=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) {
|
||
#ifdef HAS_NORMALS
|
||
if(model_silhouettePass) {
|
||
vec3 normal = normalize(czm_normal3D * attributes.normalMC);
|
||
normal.x *= czm_projection[0][0];
|
||
normal.y *= czm_projection[1][1];
|
||
positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z;
|
||
}
|
||
#endif
|
||
}
|
||
`;var PQ={name:"ModelSilhouettePipelineStage"};PQ.silhouettesLength=0;PQ.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++PQ.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(vQ),i.addFragmentLines(DQ),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=wt(o,e.uniformMap),e.hasSilhouette=!0};var RQ=PQ;var MQ=`void modelSplitterStage()
|
||
{
|
||
// Don't split when rendering the shadow map, because it is rendered from
|
||
// the perspective of a totally different camera.
|
||
#ifndef SHADOW_MAP
|
||
if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
|
||
if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
|
||
#endif
|
||
}
|
||
`;var NQ={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};NQ.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(MQ);let o={};i.addUniform("float",NQ.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[NQ.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=wt(o,e.uniformMap)};var LQ=NQ;function U6e(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var OQ=U6e;function G6e(e){e=e??V.EMPTY_OBJECT,this.lightingModel=e.lightingModel??fp.UNLIT}var FQ=G6e;function z6e(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Qt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Qt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=le.fromCornerPoints(this.positionMin,this.positionMax,new le),this.lightingOptions=new FQ,this.pickId=void 0}var QQ=z6e;function Sj(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==Jn.CESIUM_3D_TILE,this._classifies3DTiles=o!==Jn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],j6e(this)}function V6e(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:e,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var H6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},W6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},tle=[];function j6e(e){let t=e._command,n=tle;if(e._useDebugWireframe){t.pass=Be.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=HB(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Be.TERRAIN_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandListTerrain=HB(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=ele(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Be.CESIUM_3D_TILE_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=HB(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=ele(e,n,e._commandList3DTilesPicking))}}function HB(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let A=t[h],g=nt.shallowClone(A);g.count=u,g.offset=f,n.push(g)}}return n}function Tj(e,t){let n=nt.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Be.TERRAIN_CLASSIFICATION?Zn.ALWAYS:Zn.EQUAL,o=V6e(i);return n.renderState=Ue.fromCache(o),n}function $ce(e,t){let n=nt.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ue.fromCache(H6e),n}var Y6e=[];function ele(e,t,n){let i=Ue.fromCache(W6e),o=t[0],r=t[1],s=nt.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=nt.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=Y6e;return c.length=0,c.push(s,a),HB(e,c,n)}Object.defineProperties(Sj.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=le.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});Sj.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){si(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&si(t,this._commandListTerrain),this._classifies3DTiles&&si(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=Tj(this._command,o),s=tle;s.length=0,s.push(r),this._commandListIgnoreShow=HB(this,s,this._commandListIgnoreShow)}si(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&si(t,this._commandListTerrainPicking),this._classifies3DTiles&&si(t,this._commandList3DTilesPicking)),t};var kQ=Sj;function UQ(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Be.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=R.clone(t.modelMatrix),this._boundingVolume=le.clone(t.boundingVolume),this._modelMatrix2D=new R,this._boundingVolume2D=new le,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,q6e(this)}function dp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}dp.clone=function(e){return new dp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function q6e(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new dp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new dp({command:tWe(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new dp({command:aWe(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new dp({command:cWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new dp({command:nWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new dp({command:iWe(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(UQ.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=le.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,X6e(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,J6e(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,Z6e(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,$6e(this))}}});function K6e(e,t){let n=e._modelMatrix;e._modelMatrix2D=R.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=D.sign(n[13])*2*D.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=le.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function X6e(e){let t=e.shadows,n=Dn.castShadows(t),i=Dn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function J6e(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ze(r.renderState,!0);s.cull.enabled=t,r.renderState=Ue.fromCache(s)}}}function Z6e(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ze(r.renderState,!0);s.cull.face=t,r.renderState=Ue.fromCache(s)}}}function $6e(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}UQ.prototype.pushCommands=function(e,t){let n=nle(this,e);n&&!this._has2DCommands&&(eWe(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(K6e(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Bm.ALL_OPAQUE&&Ux(t,this._translucentCommand,n),i===Bm.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||Ux(o._backfaceCommands,this._skipLodBackfaceCommand,n),oWe(this,r,n),Ux(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){Ux(t,this._silhouetteModelCommand,n);return}return Ux(t,this._originalCommand,n),t}};UQ.prototype.pushSilhouetteCommands=function(e,t){let n=nle(this,e);return Ux(t,this._silhouetteColorCommand,n),t};function Ux(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function nle(e,t){if(t.mode!==ie.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*D.PI;return o<s&&r>s||o<-s&&r>-s}function kx(e,t){if(!l(t))return;let n=dp.clone(t),i=nt.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function eWe(e){kx(e,e._originalCommand),kx(e,e._translucentCommand),kx(e,e._skipLodBackfaceCommand),kx(e,e._skipLodStencilCommand),kx(e,e._silhouetteModelCommand),kx(e,e._silhouetteColorCommand)}function tWe(e){let t=nt.shallowClone(e);t.pass=Be.TRANSLUCENT;let n=ze(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=pn.ALPHA_BLEND,t.renderState=Ue.fromCache(n),t}function nWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ee.ALWAYS,backFunction:ee.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ue.fromCache(o),i}function iWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);o.cull.enabled=!1,(e.pass===Be.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Be.TRANSLUCENT,o.depthMask=!1,o.blending=pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ee.NOTEQUAL,backFunction:ee.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP}};let s=ze(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ue.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function oWe(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=rWe(o);if(r!==s){let a=sWe(r),c=ze(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ue.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function rWe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function sWe(e){return Kt.CESIUM_3D_TILE_MASK|e<<Kt.SKIP_LOD_BIT_SHIFT}function aWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Mi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ze(t.uniformMap),o=new k(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ue.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function cWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Kt.SKIP_LOD_MASK,i.reference=Kt.CESIUM_3D_TILE_MASK,i.frontFunction=Zn.GREATER_OR_EQUAL,i.frontOperation.zPass=_t.REPLACE,i.backFunction=Zn.GREATER_OR_EQUAL,i.backOperation.zPass=_t.REPLACE,n.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,t.renderState=Ue.fromCache(n),t}var GQ=UQ;var zQ=`precision highp float;
|
||
|
||
czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) {
|
||
czm_modelVertexOutput vsOutput;
|
||
vsOutput.positionMC = positionMC;
|
||
vsOutput.pointSize = 1.0;
|
||
return vsOutput;
|
||
}
|
||
|
||
void main()
|
||
{
|
||
// Initialize the attributes struct with all
|
||
// attributes except quantized ones.
|
||
ProcessedAttributes attributes;
|
||
initializeAttributes(attributes);
|
||
|
||
#ifdef HAS_IMAGERY
|
||
initializeImageryAttributes();
|
||
#endif
|
||
|
||
// Dequantize the quantized ones and add them to the
|
||
// attributes struct.
|
||
#ifdef USE_DEQUANTIZATION
|
||
dequantizationStage(attributes);
|
||
#endif
|
||
|
||
#ifdef HAS_MORPH_TARGETS
|
||
morphTargetsStage(attributes);
|
||
#endif
|
||
|
||
#ifdef HAS_SKINNING
|
||
skinningStage(attributes);
|
||
#endif
|
||
|
||
#ifdef HAS_PRIMITIVE_OUTLINE
|
||
primitiveOutlineStage();
|
||
#endif
|
||
|
||
// Compute the bitangent according to the formula in the glTF spec.
|
||
// Normal and tangents can be affected by morphing and skinning, so
|
||
// the bitangent should not be computed until their values are finalized.
|
||
#ifdef HAS_BITANGENTS
|
||
attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC);
|
||
#endif
|
||
|
||
FeatureIds featureIds;
|
||
featureIdStage(featureIds, attributes);
|
||
|
||
#ifdef HAS_SELECTED_FEATURE_ID
|
||
SelectedFeature feature;
|
||
selectedFeatureIdStage(feature, featureIds);
|
||
// Handle any show properties that come from the style.
|
||
cpuStylingStage(attributes.positionMC, feature);
|
||
#endif
|
||
|
||
#if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING)
|
||
// The scene mode 2D pipeline stage and instancing stage add a different
|
||
// model view matrix to accurately project the model to 2D. However, the
|
||
// output positions and normals should be transformed by the 3D matrices
|
||
// to keep the data the same for the fragment shader.
|
||
mat4 modelView = czm_modelView3D;
|
||
mat3 normal = czm_normal3D;
|
||
#else
|
||
// These are used for individual model projection because they will
|
||
// automatically change based on the scene mode.
|
||
mat4 modelView = czm_modelView;
|
||
mat3 normal = czm_normal;
|
||
#endif
|
||
|
||
// Update the position for this instance in place
|
||
#ifdef HAS_INSTANCING
|
||
|
||
// The legacy instance stage is used when rendering i3dm models that
|
||
// encode instances transforms in world space, as opposed to glTF models
|
||
// that use EXT_mesh_gpu_instancing, where instance transforms are encoded
|
||
// in object space.
|
||
#ifdef USE_LEGACY_INSTANCING
|
||
mat4 instanceModelView;
|
||
mat3 instanceModelViewInverseTranspose;
|
||
|
||
legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose);
|
||
|
||
modelView = instanceModelView;
|
||
normal = instanceModelViewInverseTranspose;
|
||
#else
|
||
instancingStage(attributes);
|
||
#endif
|
||
|
||
#ifdef USE_PICKING
|
||
v_pickColor = a_pickColor;
|
||
#endif
|
||
|
||
#endif
|
||
|
||
Metadata metadata;
|
||
MetadataClass metadataClass;
|
||
MetadataStatistics metadataStatistics;
|
||
metadataStage(metadata, metadataClass, metadataStatistics, attributes);
|
||
|
||
#ifdef HAS_VERTICAL_EXAGGERATION
|
||
verticalExaggerationStage(attributes);
|
||
#endif
|
||
|
||
#ifdef HAS_CUSTOM_VERTEX_SHADER
|
||
czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC);
|
||
customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics);
|
||
#endif
|
||
|
||
// Compute the final position in each coordinate system needed.
|
||
// This returns the value that will be assigned to gl_Position.
|
||
vec4 positionClip = geometryStage(attributes, modelView, normal);
|
||
|
||
// This must go after the geometry stage as it needs v_positionWC
|
||
#ifdef HAS_ATMOSPHERE
|
||
atmosphereStage(attributes);
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
modelClippingPolygonsStage(attributes);
|
||
#endif
|
||
|
||
#ifdef HAS_SILHOUETTE
|
||
silhouetteStage(attributes, positionClip);
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
|
||
float show = pointCloudShowStylingStage(attributes, metadata);
|
||
#else
|
||
float show = 1.0;
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING
|
||
show *= pointCloudBackFaceCullingStage();
|
||
#endif
|
||
|
||
#ifdef HAS_POINT_CLOUD_COLOR_STYLE
|
||
v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata);
|
||
#endif
|
||
|
||
#ifdef PRIMITIVE_TYPE_POINTS
|
||
#ifdef HAS_CUSTOM_VERTEX_SHADER
|
||
gl_PointSize = vsOutput.pointSize;
|
||
#elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION)
|
||
gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata);
|
||
#else
|
||
gl_PointSize = 1.0;
|
||
#endif
|
||
|
||
gl_PointSize *= show;
|
||
#endif
|
||
|
||
// Important NOT to compute gl_Position = show * positionClip or we hit:
|
||
// https://github.com/CesiumGS/cesium/issues/11270
|
||
//
|
||
// We will discard points with v_pointCloudShow == 0 in the fragment shader.
|
||
gl_Position = positionClip;
|
||
|
||
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
|
||
v_pointCloudShow = show;
|
||
#endif
|
||
}
|
||
`;var VQ=`
|
||
precision highp float;
|
||
|
||
czm_modelMaterial defaultModelMaterial()
|
||
{
|
||
czm_modelMaterial material;
|
||
material.diffuse = vec3(0.0);
|
||
material.specular = vec3(1.0);
|
||
material.roughness = 1.0;
|
||
material.occlusion = 1.0;
|
||
material.normalEC = vec3(0.0, 0.0, 1.0);
|
||
material.emissive = vec3(0.0);
|
||
material.alpha = 1.0;
|
||
return material;
|
||
}
|
||
|
||
vec4 handleAlpha(vec3 color, float alpha)
|
||
{
|
||
#ifdef ALPHA_MODE_MASK
|
||
if (alpha < u_alphaCutoff) {
|
||
discard;
|
||
}
|
||
#endif
|
||
|
||
return vec4(color, alpha);
|
||
}
|
||
|
||
SelectedFeature selectedFeature;
|
||
|
||
void main()
|
||
{
|
||
#ifdef HAS_POINT_CLOUD_SHOW_STYLE
|
||
if (v_pointCloudShow == 0.0)
|
||
{
|
||
discard;
|
||
}
|
||
#endif
|
||
|
||
#ifdef HAS_MODEL_SPLITTER
|
||
modelSplitterStage();
|
||
#endif
|
||
|
||
czm_modelMaterial material = defaultModelMaterial();
|
||
|
||
ProcessedAttributes attributes;
|
||
geometryStage(attributes);
|
||
|
||
FeatureIds featureIds;
|
||
featureIdStage(featureIds, attributes);
|
||
|
||
Metadata metadata;
|
||
MetadataClass metadataClass;
|
||
MetadataStatistics metadataStatistics;
|
||
metadataStage(metadata, metadataClass, metadataStatistics, attributes);
|
||
|
||
//========================================================================
|
||
// When not picking metadata START
|
||
#ifndef METADATA_PICKING_ENABLED
|
||
|
||
#ifdef HAS_SELECTED_FEATURE_ID
|
||
selectedFeatureIdStage(selectedFeature, featureIds);
|
||
#endif
|
||
|
||
#ifndef CUSTOM_SHADER_REPLACE_MATERIAL
|
||
materialStage(material, attributes, selectedFeature);
|
||
#endif
|
||
|
||
#ifdef HAS_CUSTOM_FRAGMENT_SHADER
|
||
customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics);
|
||
#endif
|
||
|
||
lightingStage(material, attributes);
|
||
|
||
#ifdef HAS_SELECTED_FEATURE_ID
|
||
cpuStylingStage(material, selectedFeature);
|
||
#endif
|
||
|
||
#ifdef HAS_MODEL_COLOR
|
||
modelColorStage(material);
|
||
#endif
|
||
|
||
#ifdef HAS_PRIMITIVE_OUTLINE
|
||
primitiveOutlineStage(material);
|
||
#endif
|
||
|
||
vec4 color = handleAlpha(material.diffuse, material.alpha);
|
||
|
||
// When not picking metadata END
|
||
//========================================================================
|
||
#else
|
||
//========================================================================
|
||
// When picking metadata START
|
||
|
||
vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0);
|
||
metadataPickingStage(metadata, metadataClass, metadataValues);
|
||
vec4 color = metadataValues;
|
||
|
||
#endif
|
||
// When picking metadata END
|
||
//========================================================================
|
||
|
||
#ifdef HAS_CLIPPING_PLANES
|
||
modelClippingPlanesStage(color);
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
modelClippingPolygonsStage();
|
||
#endif
|
||
|
||
//========================================================================
|
||
// When not picking metadata START
|
||
#ifndef METADATA_PICKING_ENABLED
|
||
|
||
#if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS)
|
||
silhouetteStage(color);
|
||
#endif
|
||
|
||
#ifdef HAS_ATMOSPHERE
|
||
atmosphereStage(color, attributes);
|
||
#endif
|
||
|
||
#endif
|
||
// When not picking metadata END
|
||
//========================================================================
|
||
|
||
out_FragColor = color;
|
||
}
|
||
|
||
`;function ile(){}ile.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=lWe(e,n,t),o=uWe(e,i,t),r=e.model;return l(r.classificationType)?new kQ({primitiveRenderResources:e,command:o}):new GQ({primitiveRenderResources:e,command:o})};function lWe(e,t,n){t.addVertexLines(zQ),t.addFragmentLines(VQ);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function uWe(e,t,n){let i=fWe(e),o=new li({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ie.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=R.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new R),f=e.runtimePrimitive.boundingSphere2D;else{let C=c?a._computedModelMatrix:a._computedModelMatrix2D;u=R.multiplyTransformation(C,e.runtimeNode.computedTransform,new R),f=le.transform(e.boundingSphere,u)}let h=ze(Ue.fromCache(e.renderStateOptions),!0);h.cull.face=Qt.getCullFace(u,e.primitiveType),h=Ue.fromCache(h);let A=l(r.classificationType),g=A?!1:Dn.castShadows(r.shadows),m=A?!1:Dn.receiveShadows(r.shadows),_=A?void 0:e.pickId;return new nt({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:_,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function fWe(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var HQ=ile;function Pc(e){e=e??V.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=R.clone(R.IDENTITY),this._computedModelMatrix2D=R.clone(R.IDENTITY),this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new R),this._runtimeArticulations={},dWe(this)}Object.defineProperties(Pc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function dWe(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;ole(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let E=0;E<s;E++){let I=r[E],b=new n2({articulation:I,sceneGraph:e}),S=b.name;a[S]=b}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,A=R.IDENTITY;for(let E=0;E<h;E++){let I=n.nodes[E],b=rle(e,I,A);e._rootNodes.push(b)}let g=t.skins,m=e._runtimeSkins,_=g.length;for(let E=0;E<_;E++){let I=g[E];m.push(new TQ({skin:I,sceneGraph:e}))}let y=e._skinnedNodes,C=y.length;for(let E=0;E<C;E++){let I=y[E],b=e._runtimeNodes[I],B=c[I].skin.index;b._runtimeSkin=m[B],b.updateJointMatrices()}e.applyArticulations()}function ole(e,t){let n=e._components,i=e._model;e._computedModelMatrix=R.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=R.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=R.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var hWe=new d;function mWe(e,t){let n=e._computedModelMatrix,i=R.getTranslation(n,hWe);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=kt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=kt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=R.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=le.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function rle(e,t,n){let i=[],o=Qt.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],A=R.multiplyTransformation(n,o,new R),g=rle(e,h,A);i.push(g)}let s=new g2({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new bQ({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new l2(f,s);f._nodesByName[u]=h}return c}var AWe=new d,pWe=new d,gWe=new d,_We=new d;Pc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};Pc.prototype.buildRenderResources=function(e){let t=this._model,n=new BQ(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new OQ(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c];u.configurePipeline(e);let f=u.pipelineStages,h=new QQ(a,u);a.primitiveRenderResources[c]=h;for(let A=0;A<f.length;A++)f[A].process(h,u.primitive,e)}}return n};Pc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,AWe),i=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,pWe);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c],f=s.primitiveRenderResources[c];u.boundingSphere=le.clone(f.boundingSphere,new le);let h=R.multiplyByPoint(a,f.positionMin,gWe),A=R.multiplyByPoint(a,f.positionMax,_We);d.minimumByComponent(n,h,n),d.maximumByComponent(i,A,i)}}this._boundingSphere=le.fromCornerPoints(n,i,new le),this._boundingSphere=le.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=le.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=le.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};Pc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=HQ.buildModelDrawCommand(a,t);s.drawCommand=c}}};Pc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push($C),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push($F),n.isClippingEnabled()&&t.push(r2),n.isClippingPolygonsEnabled()&&t.push(c2),n.hasSilhouette(e)&&t.push(RQ),l(n.splitDirection)&&n.splitDirection!==wr.NONE&&t.push(LQ),Nr.is3DTiles(n.type)&&t.push(qF),i&&t.push(JF))};Pc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ie.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};Pc.prototype.updateModelMatrix=function(e,t){ole(this,e),t.mode!==ie.SCENE3D&&mWe(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};Pc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function sle(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);sle(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function WQ(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];sle(e,c,t,n,i)}}var yWe={backFaceCulling:void 0};Pc.prototype.updateBackFaceCulling=function(e){let t=yWe;t.backFaceCulling=e,WQ(this,!1,CWe,t)};function CWe(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var EWe={shadowMode:void 0};Pc.prototype.updateShadows=function(e){let t=EWe;t.shadowMode=e,WQ(this,!1,IWe,t)};function IWe(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var xWe={debugShowBoundingVolume:void 0};Pc.prototype.updateShowBoundingVolume=function(e){let t=xWe;t.debugShowBoundingVolume=e,WQ(this,!1,bWe,t)};function bWe(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var ale=[],TWe={frameState:void 0,hasSilhouette:void 0};Pc.prototype.pushDrawCommands=function(e){let t=ale;t.length=0;let n=TWe;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,WQ(this,!0,SWe,n),si(e.commandList,t)};function SWe(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=ale,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}Pc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};Pc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var jQ=Pc;function x_(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new Pt}Object.defineProperties(x_.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});x_.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};x_.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};x_.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};x_.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};x_.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};x_.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var YQ=x_;var fle=Es(CR(),1);var cle={},sE=Uint32Array.BYTES_PER_ELEMENT;cle.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=sE;let o=i.getUint32(t,!0);if(o!==1)throw new ce(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=sE,t+=sE;let r=i.getUint32(t,!0);if(r===0)throw new ce("Feature table must have a byte length greater than zero");t+=sE;let s=i.getUint32(t,!0);t+=sE;let a=i.getUint32(t,!0);t+=sE;let c=i.getUint32(t,!0);t+=sE;let u=yr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,A;a>0&&(h=yr(n,t,a),t+=a,c>0&&(A=new Uint8Array(e,t,c),t+=c));let g=new Sm(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new ce("Feature table global property: POINTS_LENGTH must be defined");let _=g.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(_)&&(_=d.unpack(_));let y=wWe(g,h);if(y.rtcCenter=_,y.pointsLength=m,!y.hasPositions){let C=BWe(g);y.positions=C,y.hasPositions=y.hasPositions||l(C)}if(!y.hasPositions)throw new ce("Either POSITION or POSITION_QUANTIZED must be defined.");if(!y.hasNormals){let C=vWe(g);y.normals=C,y.hasNormals=y.hasNormals||l(C)}if(!y.hasColors){let C=DWe(g);y.colors=C,y.hasColors=y.hasColors||l(C),y.hasConstantColor=l(y.constantColor),y.isTranslucent=l(C)&&C.isTranslucent}if(!y.hasBatchIds){let C=PWe(g);y.batchIds=C,y.hasBatchIds=y.hasBatchIds||l(C)}if(y.hasBatchIds){let C=g.getGlobalProperty("BATCH_LENGTH");if(!l(C))throw new ce("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");y.batchLength=C}return l(A)&&(A=new Uint8Array(A),y.batchTableJson=h,y.batchTableBinary=A),y};function wWe(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,A;if(l(s)){o=s.properties;let m=s.byteOffset,_=s.byteLength;if(!l(o)||!l(m)||!l(_))throw new ce("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+_),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),A=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:wt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:A,hasNormals:f,hasBatchIds:h}}function BWe(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",q.FLOAT,3),{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(r))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!0,componentDatatype:q.FLOAT,type:Ht.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:q.UNSIGNED_SHORT,quantizedType:Ht.VEC3}}}function DWe(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",q.UNSIGNED_BYTE,4),{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",q.UNSIGNED_BYTE,3),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",q.UNSIGNED_SHORT,1),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.FLOAT,type:Ht.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",q.UNSIGNED_BYTE,4),o=i[3],r=G.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:r,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:s}}}function vWe(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",q.FLOAT,3),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",q.UNSIGNED_BYTE,2),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:Ht.VEC2,quantizedComponentDatatype:q.UNSIGNED_BYTE,componentDatatype:q.FLOAT,type:Ht.VEC3}}function PWe(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",q.UNSIGNED_SHORT,1);return{name:ct.FEATURE_ID,semantic:ct.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:q.fromTypedArray(n),type:Ht.SCALAR}}}var Gx=cle;var RWe=bn.Components,MWe=bn.Scene,NWe=bn.Node,LWe=bn.Primitive,OWe=bn.Attribute,lle=bn.Quantization,FWe=bn.FeatureIdAttribute,QWe=bn.Material,kWe=bn.MetallicRoughness;function b_(e){e=e??V.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=dt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(b_.prototype=Object.create(qi.prototype),b_.prototype.constructor=b_);Object.defineProperties(b_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});b_.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=Gx.parse(this._arrayBuffer,this._byteOffset),this._state=dt.PROCESSING,this._promise=Promise.resolve(this)};b_.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===dt.READY)return!0;if(this._state===dt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=UWe(this,e.context)}return!1};function UWe(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=jg.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&GWe(e,i,r),ZWe(e,t),e._state=dt.READY,e}).catch(function(r){e.unload(),e._state=dt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function GWe(e,t,n){e._state=dt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:ct.POSITION,typedArray:n.POSITION.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT,o.quantizedType=Ht.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:ct.NORMAL,typedArray:n.NORMAL.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=q.UNSIGNED_BYTE,o.quantizedType=Ht.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:ct.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:q.fromTypedArray(a),type:Ht.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:zWe(u.componentsPerAttribute),componentType:VWe(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function zWe(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function VWe(e){switch(e){case ee.BYTE:return"BYTE";case ee.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ee.SHORT:return"SHORT";case ee.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ee.INT:return"INT";case ee.UNSIGNED_INT:return"UNSIGNED_INT";case ee.DOUBLE:return"DOUBLE";case ee.FLOAT:return"FLOAT"}}function WB(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new lle,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new lle;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new OWe;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Fn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=G.pack(t.constantColor,a)}else{let a=Et.createVertexBuffer({typedArray:i,context:n,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===ct.POSITION&&s&&(r.typedArray=i),r}var ule,qQ;function HWe(e){if(!l(qQ)){ule=new fle.default(0),qQ=new Array(e);for(let t=0;t<e;++t)qQ[t]=ule.random()}return qQ}var WWe=new d,jWe=new d,YWe=new d;function qWe(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=HWe(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,WWe),u=d.fromElements(a,a,a,jWe),f,h,A;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),A=d.unpack(t,h*3,YWe),d.minimumByComponent(c,A,c),d.maximumByComponent(u,A,u);e.min=d.clone(c),e.max=d.clone(u)}var KWe={name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:G.DARKGRAY,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:!1};function XWe(e,t,n){let i=[],o,r=t.positions;return l(r)&&(qWe(r),o=WB(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=WB(e,t.normals,n),i.push(o)),l(t.colors)?(o=WB(e,t.colors,n),i.push(o)):(o=WB(e,KWe,n),i.push(o)),l(t.batchIds)&&(o=WB(e,t.batchIds,n),i.push(o)),i}function JWe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?f_({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new Da({schema:{},propertyTables:[]})}function ZWe(e,t){let n=e._parsedContent,i=new kWe;i.metallicFactor=0,i.roughnessFactor=.9;let o=new QWe;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=np.BLEND);let s=!l(n.normals);o.unlit=s;let a=new LWe;if(a.attributes=XWe(e,n,t),a.primitiveType=Me.POINTS,a.material=o,l(n.batchIds)){let g=new FWe;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new NWe;c.index=0,c.primitives=[a];let u=new MWe;u.nodes=[c],u.upAxis=Ao.Z,u.forwardAxis=Ao.X;let f=new RWe;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=JWe(n,h),h.length>0&&$We(e,a,h,t),l(n.rtcCenter)&&(f.transform=R.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let A=n.positions;l(A)&&A.isQuantized&&(f.transform=R.multiplyByTranslation(f.transform,A.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function $We(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Et.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Qe.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}b_.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var KQ=b_;var eje=new d,tje=new d,nje=new d,ije=new R,oje=new R,rje=new R,sje=new Ae,aje=new le;function jB(e,t,n,i,o,r,s){if(!e._ready||n.mode===ie.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],A=h.node,g=R.clone(h.computedTransform,ije),m=R.clone(c.computedModelMatrix,oje),_=A.instances;l(_)&&_.transformInWorldSpace&&(m=R.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=R.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let y=R.multiplyTransformation(m,g,rje);n.mode!==ie.SCENE3D&&(y=kt.basisTo2D(n.mapProjection,y,y));let C=[];if(l(_)){let I=_.attributes[0].count,b=_.attributes[0].componentDatatype,S=12,B=h.transformsTypedArray;if(!l(B)){let v=h.instancingTransformsBuffer;l(v)&&n.context.webgl2&&(B=q.createTypedArray(b,I*S),v.getBufferData(B))}if(l(B))for(let v=0;v<I;v++){let P=v*S,N=new R(B[P],B[P+1],B[P+2],B[P+3],B[P+4],B[P+5],B[P+6],B[P+7],B[P+8],B[P+9],B[P+10],B[P+11],0,0,0,1);_.transformInWorldSpace?(R.multiplyTransformation(N,g,N),R.multiplyTransformation(m,N,N)):R.multiplyTransformation(N,y,N),C.push(N)}}C.length===0&&C.push(y);let E=h.runtimePrimitives.length;for(let I=0;I<E;I++){let b=h.runtimePrimitives[I],S=b.primitive;if(l(b.boundingSphere)&&!l(_)){let W=le.transform(b.boundingSphere,y,aje),Z=Ai.raySphere(t,W);if(!l(Z))continue}let B=Qt.getAttributeBySemantic(S,ct.POSITION),v=B.byteOffset,P=B.byteStride,N=B.count;if(!l(S.indices))continue;let L=S.indices.typedArray;if(!l(L)){let W=S.indices.buffer,Z=S.indices.count,Y=S.indices.indexDatatype;l(W)&&n.context.webgl2&&(Y===Fe.UNSIGNED_BYTE?L=new Uint8Array(Z):Y===Fe.UNSIGNED_SHORT?L=new Uint16Array(Z):Y===Fe.UNSIGNED_INT&&(L=new Uint32Array(Z)),W.getBufferData(L))}let p=B.typedArray,x=B.componentDatatype,T=B.type,w=B.quantization;l(w)&&(x=B.quantization.componentDatatype,T=B.quantization.type);let M=Ht.getNumberOfComponents(T),O=q.getSizeInBytes(x),U=!l(p)&&l(P)&&P!==M*O,Q=M,z=0;U&&(Q=P/O,z=v/O);let F=N*Q;if(!l(p)){let W=B.buffer;l(W)&&n.context.webgl2&&(p=q.createTypedArray(x,F),W.getBufferData(p,U?0:v,0,F)),w&&B.normalized&&(p=Fn.dequantize(p,x,T,N))}if(!l(L)||!l(p))return;r=r??te.default,i=i??1,o=o??0;let H=L.length;for(let W=0;W<H;W+=3){let Z=L[W],Y=L[W+1],$=L[W+2];for(let X of C){let he=wj(p,Z,z,Q,w,X,i,o,r,eje),ge=wj(p,Y,z,Q,w,X,i,o,r,tje),fe=wj(p,$,z,Q,w,X,i,o,r,nje),ye=Ai.rayTriangleParametric(t,he,ge,fe,e.backFaceCulling??!0);l(ye)&&ye<a&&ye>=0&&(a=ye)}}}}if(a!==Number.MAX_VALUE){if(s=In.getPoint(t,a,s),n.mode!==ie.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,A=f.unproject(s,sje);h.cartographicToCartesian(A,s)}return s}}function wj(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=Fn.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=R.multiplyByPoint(r,u,u),s!==1&&Yr.getPosition(u,c,s,a,u),u}var Bj=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},XQ=Bj;var Dj=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,u=new Fx(t,a,c);c.primitive.modelPrimitiveImagery=u,i.push(u)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new me("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new XQ(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),ue(this)}},JQ=Dj;function yo(e){e=e??V.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??Nr.GLTF,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=J.clone(J.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new WF(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=G.clone(e.color),this._colorBlendMode=e.colorBlendMode??al.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??G.RED;this._silhouetteColor=G.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Be.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new le,this._initialRadius=void 0,this._heightReference=e.heightReference??Ze.NONE,this._heightDirty=this._heightReference!==Ze.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new op(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Vs.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=R.clone(R.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?xm.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new JQ(this),this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new GI,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new s_(e.environmentMapOptions);s_.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Dn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new Dt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??wr.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this._classificationType=e.classificationType,this._statistics=new YQ,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new _e,this._readyEvent=new _e,this._texturesReadyEvent=new _e,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function vj(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function cje(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new YF({model:e,propertyTable:s});n.push(a)}return n}function lje(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Qt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Qt.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function Mj(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(yo.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){Mj(e,this._color)&&this.resetDrawCommands(),this._color=G.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!G.equals(e,this._silhouetteColor)){let t=Mj(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=G.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return mle(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Vs.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(xm.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(s_.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});yo.prototype.getNode=function(e){return this._nodesByName[e]};yo.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};yo.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};yo.prototype.getExtension=function(e){return this._loader.components.extensions[e]};yo.prototype.makeStyleDirty=function(){this._styleDirty=!0};yo.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var uje=new R,fje=new J,dje=new R;yo.prototype.update=function(e){let t=!1;try{t=hje(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")vj(this,i);else{let o=Qt.getError("model",this._resource,i);vj(this,o)}}if(mje(this,e),Aje(this,e),pje(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Qt.getError("model",this._resource,new ce("Failed to load model."));vj(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&cje(this,o);let r=new jQ({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===ie.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(gje(this),_je(this),yje(this,e),Cje(this),Eje(this,e),Ije(this,e),xje(this,e),bje(this,e),Tje(this,e),Sje(this,e),wje(this,e),this._defaultTexture=e.context.defaultTexture,Bje(this,e),Dje(this,e),vje(this),Pje(this,e),Lje(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),Mje(this),Oje(this,e),Fje(this),Qje(this,e)}};function hje(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function mje(e,t){l(e._customShader)&&e._customShader.update(t)}function Aje(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function pje(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function gje(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=lje(t,e),e._styleDirty=!0,e.resetDrawCommands())}function _je(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function yje(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&hle(e)}function hle(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Bm.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function Cje(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function Eje(e,t){e._silhouetteDirty&&(Ale(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function Ije(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function xje(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function bje(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function Tje(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function Sje(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function wje(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function Bje(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function Dje(e,t){R.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=R.clone(e.modelMatrix,e._modelMatrix))}var T_=new d,Pj=new Ae;function vje(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===Ze.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??te.default,i=e.modelMatrix;T_.x=i[12],T_.y=i[13],T_.z=i[14];let o=n.cartesianToCartographic(T_);l(e._clampedModelMatrix)||(e._clampedModelMatrix=R.clone(i,new R)),e._removeUpdateHeightCallback=t.updateHeight(o,dle(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=dle(e,n,o);Ae.clone(o,Pj),Pj.height=r,s(Pj)}e._heightDirty=!1,e._updateModelMatrix=!0}function Pje(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;mle(e,n),Rje(e,n,t)}function mle(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=le.transform(e._boundingSphere,t,e._boundingSphere)}function Rje(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);R.getTranslation(t,T_),e._sceneMode!==ie.SCENE3D&&to.computeActualEllipsoidPosition(n,T_,T_);let s=e._boundingSphere.radius,a=kje(T_,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function Mje(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var Nje=new J(1,0,0,0,0,1,0,-1,0);function Lje(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=fje,s=uje;if(s=R.multiply(o.uniformState.view3D,i,s),r=R.getRotation(s,r),r=J.transpose(r,r),e._iblReferenceFrameMatrix=J.multiply(Nje,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=dje;a=R.multiply(o.uniformState.view3D,i,a),a=R.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=R.inverseTranspose(a,e._clippingPlanesMatrix)}}function Oje(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function Fje(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Dt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Dt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Dt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function Qje(e,t){let n=Gje(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(zje(e,t),e._sceneGraph.pushDrawCommands(t))}var Rj=new le;function kje(e,t,n){return Rj.center=e,Rj.radius=t,n.camera.getPixelSize(Rj,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var ZQ=new d;function dle(e,t,n){return function(i){rI(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,ZQ);let o=e._clampedModelMatrix;R.clone(e.modelMatrix,o),o[12]=ZQ.x,o[13]=ZQ.y,o[14]=ZQ.z,e._heightDirty=!0}}var Uje=new d;function Gje(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ie.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=R.getTranslation(e.modelMatrix,Uje);to.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function zje(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}yo.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};yo.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Ale(e){return e.context.stencilBuffer}yo.prototype.hasSilhouette=function(e){return Ale(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};yo.prototype.hasSkipLevelOfDetail=function(e){if(!Nr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};yo.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};yo.prototype.pick=function(e,t,n,i,o){return jB(this,e,t,n,i,o)};yo.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};yo.prototype.isDestroyed=function(){return!1};yo.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};yo.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};yo.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};yo.fromGltfAsync=async function(e){e=e??V.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=we.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=we.createIfNeeded(t);let r=new Ff(n),a=l(e.content)?Nr.TILE_GLTF:Nr.GLTF,c=n.gltfResource,u=YB(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Qt.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new yo(u),A=h._resource.credits;if(l(A)){let g=A.length;for(let m=0;m<g;m++)h._resourceCredits.push(Dt.clone(A[m]))}return h};yo.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new PF(t);try{await n.load();let i=YB(n,Nr.TILE_B3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new KQ(t);try{await n.load();let i=YB(n,Nr.TILE_PNTS,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new QF(t);try{await n.load();let i=YB(n,Nr.TILE_I3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new MF(t),i=YB(n,Nr.TILE_GEOJSON,e);return new yo(i)};var Vje=new G;yo.prototype.applyColorAndShow=function(e){let t=G.clone(this._color,Vje),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):G.clone(G.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,Mj(t,this._color)&&this.resetDrawCommands()};yo.prototype.applyStyle=function(e){let t=this.type===Nr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),hle(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function YB(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Mm=yo;function $r(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties($r.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});$r.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};$r.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};$r.prototype.getExtension=function(e){return this._model.getExtension(e)};$r.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};$r.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};$r.prototype.applyDebugSettings=function(e,t){t=e?t:G.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};$r.prototype.applyStyle=function(e){this._model.style=e};$r.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:vu.REPEAT}),this._ready=!0)};$r.prototype.isDestroyed=function(){return!1};$r.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};$r.fromGltf=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Mm.fromGltfAsync(s);return o._model=c,o};$r.fromB3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await Mm.fromB3dm(a);return r._model=u,r};$r.fromI3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromI3dm(a);return r._model=c,r};$r.fromPnts=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromPnts(a);return r._model=c,r};$r.fromGeoJson=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{geoJson:i,resource:n}),a=await Mm.fromGeoJson(s);return o._model=a,o};$r.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,te.WGS84,n)};function qB(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Be.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return wt(i,o)}var zf=$r;function Vf(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Vf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Vf.fromJson=function(e,t,n,i){let o=new Vf(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};Vf.prototype.hasProperty=function(e,t){return!1};Vf.prototype.getFeature=function(e){};Vf.prototype.applyDebugSettings=function(e,t){};Vf.prototype.applyStyle=function(e){};Vf.prototype.update=function(e,t){};Vf.prototype.pick=function(e,t,n){};Vf.prototype.isDestroyed=function(){return!1};Vf.prototype.destroy=function(){return ue(this)};var $Q=Vf;function la(e,t,n,i){let o=la._verifyAttributes(t);n=n??0;let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let A=o[h];if(A.vertexBuffer){r.push(A);continue}c=A.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(A)}function f(h,A){return q.getSizeInBytes(A.componentDatatype)-q.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=la._vertexSizeInBytes(a),A=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:A,needsCommit:!1,arrayBuffer:void 0,arrayViews:la._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}la._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??q.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Qe.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};la._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*q.getSizeInBytes(a.componentDatatype)}let i=n>0?q.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};la._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/q.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*q.getSizeInBytes(a)}return n};la.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];la._resize(o,this._size),la._appendWriters(this.writers,o)}Nj(this)};la._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=q.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var Hje=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];la._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=Hje[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};la.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=Wje(this,i)||t;if(t||!l(this.va)){Nj(this);let s=this.va=[],a=D.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);la._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new li({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function Wje(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Et.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}la._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};la.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)jje(n[i],e,t)};function jje(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}la.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function Nj(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}la.prototype.isDestroyed=function(){return!1};la.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return Nj(this),ue(this)};var S_=la;var ek=`uniform sampler2D u_atlas;
|
||
|
||
#ifdef VECTOR_TILE
|
||
uniform vec4 u_highlightColor;
|
||
#endif
|
||
|
||
in vec2 v_textureCoordinates;
|
||
in vec4 v_pickColor;
|
||
in vec4 v_color;
|
||
in float v_splitDirection;
|
||
|
||
#ifdef SDF
|
||
in vec4 v_outlineColor;
|
||
in float v_outlineWidth;
|
||
#endif
|
||
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates
|
||
in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs)
|
||
in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
|
||
in mat2 v_rotationMatrix;
|
||
|
||
const float SHIFT_LEFT12 = 4096.0;
|
||
const float SHIFT_LEFT1 = 2.0;
|
||
|
||
const float SHIFT_RIGHT12 = 1.0 / 4096.0;
|
||
const float SHIFT_RIGHT1 = 1.0 / 2.0;
|
||
|
||
float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize)
|
||
{
|
||
vec2 lookupVector = imageSize * (depthLookupST - adjustedST);
|
||
lookupVector = v_rotationMatrix * lookupVector;
|
||
vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal
|
||
|
||
vec2 translation = v_originTextureCoordinateAndTranslate.zw;
|
||
|
||
if (applyTranslate)
|
||
{
|
||
// this is only needed for labels where the horizontal origin is not LEFT
|
||
// it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT
|
||
translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0));
|
||
}
|
||
|
||
vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw;
|
||
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st));
|
||
|
||
if (logDepthOrDepth == 0.0)
|
||
{
|
||
return 0.0; // not on the globe
|
||
}
|
||
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
|
||
return eyeCoordinate.z / eyeCoordinate.w;
|
||
}
|
||
#endif
|
||
|
||
|
||
#ifdef SDF
|
||
|
||
// Get the distance from the edge of a glyph at a given position sampling an SDF texture.
|
||
float getDistance(vec2 position)
|
||
{
|
||
return texture(u_atlas, position).r;
|
||
}
|
||
|
||
// Samples the sdf texture at the given position and produces a color based on the fill color and the outline.
|
||
vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing)
|
||
{
|
||
float distance = getDistance(position);
|
||
|
||
if (outlineWidth > 0.0)
|
||
{
|
||
// Don't get the outline edge exceed the SDF_EDGE
|
||
float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE);
|
||
float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance);
|
||
vec4 sdfColor = mix(outlineColor, v_color, outlineFactor);
|
||
float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance);
|
||
return vec4(sdfColor.rgb, sdfColor.a * alpha);
|
||
}
|
||
else
|
||
{
|
||
float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance);
|
||
return vec4(v_color.rgb, v_color.a * alpha);
|
||
}
|
||
}
|
||
#endif
|
||
|
||
void main()
|
||
{
|
||
if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
|
||
if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
|
||
|
||
vec4 color = texture(u_atlas, v_textureCoordinates);
|
||
|
||
#ifdef SDF
|
||
float outlineWidth = v_outlineWidth;
|
||
vec4 outlineColor = v_outlineColor;
|
||
|
||
// Get the current distance
|
||
float distance = getDistance(v_textureCoordinates);
|
||
|
||
#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))
|
||
float smoothing = fwidth(distance);
|
||
// Get an offset that is approximately half the distance to the neighbor pixels
|
||
// 0.354 is approximately half of 1/sqrt(2)
|
||
vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates));
|
||
|
||
// Sample the center point
|
||
vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing);
|
||
|
||
// Sample the 4 neighbors
|
||
vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing);
|
||
vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing);
|
||
vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing);
|
||
vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing);
|
||
|
||
// Equally weight the center sample and the 4 neighboring samples
|
||
color = (center + color1 + color2 + color3 + color4)/5.0;
|
||
#else
|
||
// If no derivatives available (IE 10?), just do a single sample
|
||
float smoothing = 1.0/32.0;
|
||
color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing);
|
||
#endif
|
||
|
||
color = czm_gammaCorrect(color);
|
||
#else
|
||
color = czm_gammaCorrect(color);
|
||
color *= czm_gammaCorrect(v_color);
|
||
#endif
|
||
|
||
// Fully transparent parts of the billboard are not pickable.
|
||
#if !defined(OPAQUE) && !defined(TRANSLUCENT)
|
||
if (color.a < 0.005) // matches 0/255 and 1/255
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
// The billboard is rendered twice. The opaque pass discards translucent fragments
|
||
// and the translucent pass discards opaque fragments.
|
||
#ifdef OPAQUE
|
||
if (color.a < 0.995) // matches < 254/255
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
if (color.a >= 0.995) // matches 254/255 and 255/255
|
||
{
|
||
discard;
|
||
}
|
||
#endif
|
||
#endif
|
||
|
||
#ifdef VECTOR_TILE
|
||
color *= u_highlightColor;
|
||
#endif
|
||
out_FragColor = color;
|
||
|
||
#ifdef LOG_DEPTH
|
||
czm_writeLogDepth();
|
||
#endif
|
||
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
float temp = v_compressed.y;
|
||
|
||
temp = temp * SHIFT_RIGHT1;
|
||
|
||
float temp2 = (temp - floor(temp)) * SHIFT_LEFT1;
|
||
bool enableDepthTest = temp2 != 0.0;
|
||
bool applyTranslate = floor(temp) != 0.0;
|
||
|
||
if (enableDepthTest) {
|
||
temp = v_compressed.z;
|
||
temp = temp * SHIFT_RIGHT12;
|
||
|
||
vec2 dimensions;
|
||
dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12;
|
||
dimensions.x = floor(temp);
|
||
|
||
temp = v_compressed.w;
|
||
temp = temp * SHIFT_RIGHT12;
|
||
|
||
vec2 imageSize;
|
||
imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12;
|
||
imageSize.x = floor(temp);
|
||
|
||
vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy;
|
||
adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y);
|
||
|
||
float epsilonEyeDepth = v_compressed.x + czm_epsilon1;
|
||
float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize);
|
||
|
||
// negative values go into the screen
|
||
if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth)
|
||
{
|
||
float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner
|
||
if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth)
|
||
{
|
||
float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner
|
||
if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth)
|
||
{
|
||
discard;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
}
|
||
`;var tk=`#ifdef INSTANCED
|
||
in vec2 direction;
|
||
#endif
|
||
in vec4 positionHighAndScale;
|
||
in vec4 positionLowAndRotation;
|
||
in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset)
|
||
in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width
|
||
in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free
|
||
in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range)
|
||
in vec4 scaleByDistance; // near, nearScale, far, farScale
|
||
in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale
|
||
in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions
|
||
in vec2 sdf; // sdf outline color (rgb) and width (w)
|
||
in float splitDirection; // splitDirection
|
||
#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)
|
||
in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates
|
||
#endif
|
||
#ifdef VECTOR_TILE
|
||
in float a_batchId;
|
||
#endif
|
||
|
||
out vec2 v_textureCoordinates;
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
out vec4 v_textureCoordinateBounds;
|
||
out vec4 v_originTextureCoordinateAndTranslate;
|
||
out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize
|
||
out mat2 v_rotationMatrix;
|
||
#endif
|
||
|
||
out vec4 v_pickColor;
|
||
out vec4 v_color;
|
||
out float v_splitDirection;
|
||
#ifdef SDF
|
||
out vec4 v_outlineColor;
|
||
out float v_outlineWidth;
|
||
#endif
|
||
|
||
const float UPPER_BOUND = 32768.0;
|
||
|
||
const float SHIFT_LEFT16 = 65536.0;
|
||
const float SHIFT_LEFT12 = 4096.0;
|
||
const float SHIFT_LEFT8 = 256.0;
|
||
const float SHIFT_LEFT7 = 128.0;
|
||
const float SHIFT_LEFT5 = 32.0;
|
||
const float SHIFT_LEFT3 = 8.0;
|
||
const float SHIFT_LEFT2 = 4.0;
|
||
const float SHIFT_LEFT1 = 2.0;
|
||
|
||
const float SHIFT_RIGHT12 = 1.0 / 4096.0;
|
||
const float SHIFT_RIGHT8 = 1.0 / 256.0;
|
||
const float SHIFT_RIGHT7 = 1.0 / 128.0;
|
||
const float SHIFT_RIGHT5 = 1.0 / 32.0;
|
||
const float SHIFT_RIGHT3 = 1.0 / 8.0;
|
||
const float SHIFT_RIGHT2 = 1.0 / 4.0;
|
||
const float SHIFT_RIGHT1 = 1.0 / 2.0;
|
||
|
||
vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp)
|
||
{
|
||
// Note the halfSize cannot be computed in JavaScript because it is sent via
|
||
// compressed vertex attributes that coerce it to an integer.
|
||
vec2 halfSize = imageSize * scale * 0.5;
|
||
halfSize *= ((direction * 2.0) - 1.0);
|
||
|
||
vec2 originTranslate = origin * abs(halfSize);
|
||
|
||
#if defined(ROTATION) || defined(ALIGNED_AXIS)
|
||
if (validAlignedAxis || rotation != 0.0)
|
||
{
|
||
float angle = rotation;
|
||
if (validAlignedAxis)
|
||
{
|
||
vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0);
|
||
angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) /
|
||
(projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y));
|
||
}
|
||
|
||
float cosTheta = cos(angle);
|
||
float sinTheta = sin(angle);
|
||
rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta);
|
||
halfSize = rotationMatrix * halfSize;
|
||
}
|
||
else
|
||
{
|
||
rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0);
|
||
}
|
||
#endif
|
||
|
||
mpp = czm_metersPerPixel(positionEC);
|
||
positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp);
|
||
positionEC.xy += (translate + pixelOffset) * mpp;
|
||
|
||
return positionEC;
|
||
}
|
||
|
||
#ifdef VERTEX_DEPTH_CHECK
|
||
float getGlobeDepth(vec4 positionEC)
|
||
{
|
||
vec4 posWC = czm_eyeToWindowCoordinates(positionEC);
|
||
|
||
float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw));
|
||
|
||
if (globeDepth == 0.0)
|
||
{
|
||
return 0.0; // not on the globe
|
||
}
|
||
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth);
|
||
return eyeCoordinate.z / eyeCoordinate.w;
|
||
}
|
||
#endif
|
||
void main()
|
||
{
|
||
// Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition
|
||
|
||
// unpack attributes
|
||
vec3 positionHigh = positionHighAndScale.xyz;
|
||
vec3 positionLow = positionLowAndRotation.xyz;
|
||
float scale = positionHighAndScale.w;
|
||
|
||
#if defined(ROTATION) || defined(ALIGNED_AXIS)
|
||
float rotation = positionLowAndRotation.w;
|
||
#else
|
||
float rotation = 0.0;
|
||
#endif
|
||
|
||
float compressed = compressedAttribute0.x;
|
||
|
||
vec2 pixelOffset;
|
||
pixelOffset.x = floor(compressed * SHIFT_RIGHT7);
|
||
compressed -= pixelOffset.x * SHIFT_LEFT7;
|
||
pixelOffset.x -= UPPER_BOUND;
|
||
|
||
vec2 origin;
|
||
origin.x = floor(compressed * SHIFT_RIGHT5);
|
||
compressed -= origin.x * SHIFT_LEFT5;
|
||
|
||
origin.y = floor(compressed * SHIFT_RIGHT3);
|
||
compressed -= origin.y * SHIFT_LEFT3;
|
||
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
vec2 depthOrigin = origin.xy;
|
||
#endif
|
||
origin -= vec2(1.0);
|
||
|
||
float show = floor(compressed * SHIFT_RIGHT2);
|
||
compressed -= show * SHIFT_LEFT2;
|
||
|
||
#ifdef INSTANCED
|
||
vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w);
|
||
vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w);
|
||
vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange;
|
||
#else
|
||
vec2 direction;
|
||
direction.x = floor(compressed * SHIFT_RIGHT1);
|
||
direction.y = compressed - direction.x * SHIFT_LEFT1;
|
||
|
||
vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w);
|
||
#endif
|
||
|
||
float temp = compressedAttribute0.y * SHIFT_RIGHT8;
|
||
pixelOffset.y = -(floor(temp) - UPPER_BOUND);
|
||
|
||
vec2 translate;
|
||
translate.y = (temp - floor(temp)) * SHIFT_LEFT16;
|
||
|
||
temp = compressedAttribute0.z * SHIFT_RIGHT8;
|
||
translate.x = floor(temp) - UPPER_BOUND;
|
||
|
||
translate.y += (temp - floor(temp)) * SHIFT_LEFT8;
|
||
translate.y -= UPPER_BOUND;
|
||
|
||
temp = compressedAttribute1.x * SHIFT_RIGHT8;
|
||
float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2);
|
||
|
||
vec2 imageSize = vec2(floor(temp), temp2);
|
||
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2));
|
||
float applyTranslate = 0.0;
|
||
if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false
|
||
{
|
||
applyTranslate = 1.0;
|
||
labelHorizontalOrigin -= 2.0;
|
||
depthOrigin.x = labelHorizontalOrigin + 1.0;
|
||
}
|
||
|
||
depthOrigin = vec2(1.0) - (depthOrigin * 0.5);
|
||
#endif
|
||
|
||
#ifdef EYE_DISTANCE_TRANSLUCENCY
|
||
vec4 translucencyByDistance;
|
||
translucencyByDistance.x = compressedAttribute1.z;
|
||
translucencyByDistance.z = compressedAttribute1.w;
|
||
|
||
translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
|
||
|
||
temp = compressedAttribute1.y * SHIFT_RIGHT8;
|
||
translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
|
||
#endif
|
||
|
||
#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK)
|
||
temp = compressedAttribute3.w;
|
||
temp = temp * SHIFT_RIGHT12;
|
||
|
||
vec2 dimensions;
|
||
dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12;
|
||
dimensions.x = floor(temp);
|
||
#endif
|
||
|
||
#ifdef ALIGNED_AXIS
|
||
vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8));
|
||
temp = compressedAttribute2.z * SHIFT_RIGHT5;
|
||
bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0;
|
||
#else
|
||
vec3 alignedAxis = vec3(0.0);
|
||
bool validAlignedAxis = false;
|
||
#endif
|
||
|
||
vec4 pickColor;
|
||
vec4 color;
|
||
|
||
temp = compressedAttribute2.y;
|
||
temp = temp * SHIFT_RIGHT8;
|
||
pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
pickColor.r = floor(temp);
|
||
|
||
temp = compressedAttribute2.x;
|
||
temp = temp * SHIFT_RIGHT8;
|
||
color.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
color.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
color.r = floor(temp);
|
||
|
||
temp = compressedAttribute2.z * SHIFT_RIGHT8;
|
||
bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
|
||
pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
pickColor /= 255.0;
|
||
|
||
color.a = floor(temp);
|
||
color /= 255.0;
|
||
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
|
||
vec4 positionEC = czm_modelViewRelativeToEye * p;
|
||
|
||
#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK)
|
||
float eyeDepth = positionEC.z;
|
||
#endif
|
||
|
||
positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz);
|
||
positionEC.xyz *= show;
|
||
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE)
|
||
float lengthSq;
|
||
if (czm_sceneMode == czm_sceneMode2D)
|
||
{
|
||
// 2D camera distance is a special case
|
||
// treat all billboards as flattened to the z=0.0 plane
|
||
lengthSq = czm_eyeHeight2D.y;
|
||
}
|
||
else
|
||
{
|
||
lengthSq = dot(positionEC.xyz, positionEC.xyz);
|
||
}
|
||
#endif
|
||
|
||
#ifdef EYE_DISTANCE_SCALING
|
||
float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq);
|
||
scale *= distanceScale;
|
||
translate *= distanceScale;
|
||
// push vertex behind near plane for clipping
|
||
if (scale == 0.0)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
}
|
||
#endif
|
||
|
||
float translucency = 1.0;
|
||
#ifdef EYE_DISTANCE_TRANSLUCENCY
|
||
translucency = czm_nearFarScalar(translucencyByDistance, lengthSq);
|
||
// push vertex behind near plane for clipping
|
||
if (translucency == 0.0)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
}
|
||
#endif
|
||
|
||
#ifdef EYE_DISTANCE_PIXEL_OFFSET
|
||
float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq);
|
||
pixelOffset *= pixelOffsetScale;
|
||
#endif
|
||
|
||
#ifdef DISTANCE_DISPLAY_CONDITION
|
||
float nearSq = compressedAttribute3.x;
|
||
float farSq = compressedAttribute3.y;
|
||
if (lengthSq < nearSq || lengthSq > farSq)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
}
|
||
#endif
|
||
|
||
mat2 rotationMatrix;
|
||
float mpp;
|
||
|
||
#ifdef DISABLE_DEPTH_DISTANCE
|
||
float disableDepthTestDistance = compressedAttribute3.z;
|
||
#endif
|
||
|
||
#ifdef VERTEX_DEPTH_CHECK
|
||
if (lengthSq < disableDepthTestDistance) {
|
||
float depthsilon = 10.0;
|
||
|
||
vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy;
|
||
vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
|
||
float globeDepth1 = getGlobeDepth(pEC1);
|
||
|
||
if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1)
|
||
{
|
||
vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
|
||
float globeDepth2 = getGlobeDepth(pEC2);
|
||
|
||
if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2)
|
||
{
|
||
vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
|
||
float globeDepth3 = getGlobeDepth(pEC3);
|
||
if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp);
|
||
gl_Position = czm_projection * positionEC;
|
||
v_textureCoordinates = textureCoordinates;
|
||
|
||
#ifdef LOG_DEPTH
|
||
czm_vertexLogDepth();
|
||
#endif
|
||
|
||
#ifdef DISABLE_DEPTH_DISTANCE
|
||
if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)
|
||
{
|
||
disableDepthTestDistance = czm_minimumDisableDepthTestDistance;
|
||
}
|
||
|
||
if (disableDepthTestDistance != 0.0)
|
||
{
|
||
// Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w.
|
||
float zclip = gl_Position.z / gl_Position.w;
|
||
bool clipped = (zclip < -1.0 || zclip > 1.0);
|
||
if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance)))
|
||
{
|
||
// Position z on the near plane.
|
||
gl_Position.z = -gl_Position.w;
|
||
#ifdef LOG_DEPTH
|
||
v_depthFromNearPlusOne = 1.0;
|
||
#endif
|
||
}
|
||
}
|
||
#endif
|
||
|
||
#ifdef FRAGMENT_DEPTH_CHECK
|
||
if (sizeInMeters) {
|
||
translate /= mpp;
|
||
dimensions /= mpp;
|
||
imageSize /= mpp;
|
||
}
|
||
|
||
#if defined(ROTATION) || defined(ALIGNED_AXIS)
|
||
v_rotationMatrix = rotationMatrix;
|
||
#else
|
||
v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0);
|
||
#endif
|
||
|
||
float enableDepthCheck = 0.0;
|
||
if (lengthSq < disableDepthTestDistance)
|
||
{
|
||
enableDepthCheck = 1.0;
|
||
}
|
||
|
||
float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12));
|
||
float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12));
|
||
|
||
float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12));
|
||
float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12));
|
||
|
||
v_compressed.x = eyeDepth;
|
||
v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck;
|
||
v_compressed.z = dw * SHIFT_LEFT12 + dh;
|
||
v_compressed.w = iw * SHIFT_LEFT12 + ih;
|
||
v_originTextureCoordinateAndTranslate.xy = depthOrigin;
|
||
v_originTextureCoordinateAndTranslate.zw = translate;
|
||
v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate;
|
||
|
||
#endif
|
||
|
||
#ifdef SDF
|
||
vec4 outlineColor;
|
||
float outlineWidth;
|
||
|
||
temp = sdf.x;
|
||
temp = temp * SHIFT_RIGHT8;
|
||
outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
outlineColor.r = floor(temp);
|
||
|
||
temp = sdf.y;
|
||
temp = temp * SHIFT_RIGHT8;
|
||
float temp3 = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
outlineColor.a = floor(temp);
|
||
outlineColor /= 255.0;
|
||
|
||
v_outlineWidth = outlineWidth / 255.0;
|
||
v_outlineColor = outlineColor;
|
||
v_outlineColor.a *= translucency;
|
||
#endif
|
||
|
||
v_pickColor = pickColor;
|
||
|
||
v_color = color;
|
||
v_color.a *= translucency;
|
||
v_splitDirection = splitDirection;
|
||
}
|
||
`;var Yje=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),Ds=Yje;function hp(e){this._billboardCollection=e,this._id=void 0,this._loadState=Ds.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(hp.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===Ds.LOADED}},hasImage:{get:function(){return this._loadState!==Ds.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});hp.prototype.unload=async function(){this._loadState!==Ds.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=Ds.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};hp.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===Ds.LOADING||t.loadState===Ds.LOADED){hp.clone(o,this);return}l(o)||(o=new hp(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=Ds.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=Ds.ERROR,o._loadError=c,this._id!==e)return;this._loadState=Ds.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=Ds.FAILED,o._index=-1,this._id!==e)return;this._loadState=Ds.FAILED,this._index=-1;return}o._index=r,o._loadState=Ds.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=Ds.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};hp.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=Ds.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=Ds.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=Ds.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=Ds.LOADED,this.dirty=!0};hp.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};hp.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var w_=hp;function Bi(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._translate=new k(0,0),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._heightReference=e.heightReference??Ze.NONE,this._verticalOrigin=e.verticalOrigin??Wn.CENTER,this._horizontalOrigin=e.horizontalOrigin??Ri.CENTER,this._scale=e.scale??1,this._color=G.clone(e.color??G.WHITE),this._rotation=e.rotation??0,this._alignedAxis=d.clone(e.alignedAxis??d.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new w_(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Xn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ie.SCENE3D,this._clusterShow=!0,this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??wr.NONE}var ple=Bi.SHOW_INDEX=0,ik=Bi.POSITION_INDEX=1,Ele=Bi.PIXEL_OFFSET_INDEX=2,qje=Bi.EYE_OFFSET_INDEX=3,Kje=Bi.HORIZONTAL_ORIGIN_INDEX=4,Xje=Bi.VERTICAL_ORIGIN_INDEX=5,Jje=Bi.SCALE_INDEX=6,gle=Bi.IMAGE_INDEX_INDEX=7,_le=Bi.COLOR_INDEX=8,Zje=Bi.ROTATION_INDEX=9,$je=Bi.ALIGNED_AXIS_INDEX=10,eYe=Bi.SCALE_BY_DISTANCE_INDEX=11,tYe=Bi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,nYe=Bi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,iYe=Bi.DISTANCE_DISPLAY_CONDITION=14,oYe=Bi.DISABLE_DEPTH_DISTANCE=15;Bi.TEXTURE_COORDINATE_BOUNDS=16;var yle=Bi.SDF_INDEX=17,rYe=Bi.SPLIT_DIRECTION_INDEX=18;Bi.NUMBER_OF_PROPERTIES=19;function sr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(Bi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,sr(this,ple))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),sr(this,ik))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),sr(this,ik))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),sr(this,eYe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),sr(this,tYe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;Yt.equals(t,e)||(this._pixelOffsetScaleByDistance=Yt.clone(e,t),sr(this,nYe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),sr(this,qje))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,sr(this,Kje))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,sr(this,Xje))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,sr(this,Jje))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),sr(this,_le))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,sr(this,Zje))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),sr(this,$je))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,sr(this,gle))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,sr(this,gle))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,sr(this,_le))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),sr(this,iYe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,sr(this,oYe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof we?t=e._url:l(e.src)?t=e.src:t=Xn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),sr(this,ik)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,sr(this,ple))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),sr(this,yle))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,sr(this,yle))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,sr(this,rYe))}}});Bi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Bi.prototype._updateClamping=function(){Bi._updateClamping(this._billboardCollection,this)};var ok=new Ae;Bi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??te.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===Ze.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===Ze.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);rI(t._heightReference)&&(t._mode===ie.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),Ae.clone(s,ok);let c=n.getHeight(s,t._heightReference);l(c)&&(ok.height=c),a(ok)};Bi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};Bi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};Bi.prototype.setImageTexture=function(e){w_.clone(e,this._imageTexture)};Bi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};Bi.prototype._setTranslate=function(e){let t=this._translate;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))};Bi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};Bi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),sr(this,ik)};var Cle=new se;Bi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ie.SCENE3D?t:(R.multiplyByPoint(i,t,Cle),to.computeActualEllipsoidPosition(n,Cle))};var Ile=new d;Bi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=R.multiplyByPoint(e,t,Ile),a=to.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return k.add(a,i,a),a};var nk=new k(0,0);Bi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new k),k.clone(this._pixelOffset,nk),k.add(nk,this._translate,nk);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ie.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,ok);o=a.cartographicToCartesian(c,Ile),i=R.IDENTITY}return Bi._computeScreenSpacePosition(i,o,this._eyeOffset,nk,e,t)};Bi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===Ri.RIGHT?s-=i:e.horizontalOrigin===Ri.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?a-=o:e.verticalOrigin===Wn.CENTER&&(a-=o*.5),l(n)||(n=new Xe),n.x=s,n.y=a,n.width=i,n.height=o,n};Bi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&G.equals(this._color,e._color)&&k.equals(this._pixelOffset,e._pixelOffset)&&k.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Bi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var xo=Bi;var sYe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Vo=Object.freeze(sYe);var aYe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},Pa=Object.freeze(aYe);function KB({x:e,y:t,width:n,height:i}){this.rectangle=new Xe(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function Lj({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new KB({x:n,y:n,width:e-2*n,height:t-2*n})}Lj.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};Lj.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new KB({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new KB({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new KB({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new KB({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var XB=Lj;var xle=16;function Zl(e){e=e??V.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new k(xle,xle);this._pixelFormat=e.pixelFormat??et.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Xn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(Zl.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});Zl.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Xe),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};Zl.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Nt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new as({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,A=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],_=h[g];if(!l(m)||!l(_)||l(A.get(g)))continue;let{x:y,y:C,width:E,height:I}=m;a.copyTexSubImage2D(c,0,y,C,_.x,_.y,E,I)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};Zl.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((E,I)=>new ble({index:I,image:E})).filter((E,I)=>l(E.image)&&!l(c.get(I))),f=0,h=0,A=0;for(let E=t;E<o.length;++E){let{width:I,height:b}=o[E].image;f=Math.max(f,I),h=Math.max(h,b),A+=I*b,u.push(o[E])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=D.nextPowerOfTwo(s),a=D.nextPowerOfTwo(a));let g=A,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:E},{image:I})=>I.height*I.width-E.height*E.width);let _=new Array(this._nextIndex);for(let E of this._subRegions.keys())l(c.get(E))&&(_[E]=i[E]);let y,C=!1;for(;!C;){y=new XB({height:a,width:s,borderPadding:n});let E;for(E=0;E<u.length;++E){let{index:I,image:b}=u[E];if(!l(b))continue;let S=y.pack(I,b);if(!l(S)){s>a?a*=2:s*=2;break}_[I]=S.rectangle}C=E===u.length}this._texturePacker=y,this._texture=this._copyFromTexture(e,s,a,_),r.destroy(),this._rectangles=_,this._guid=Xn()};Zl.prototype.getImageIndex=function(e){return this._indexById.get(e)};Zl.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function ble({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}Zl.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new ble({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};Zl.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};Zl.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Nt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new XB({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function cYe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof we)&&(e=we.createIfNeeded(e).fetchImage()),e}Zl.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await cYe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};Zl.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new ce(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};Zl.prototype.isDestroyed=function(){return!1};Zl.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var zx=Zl;var lYe=xo.SHOW_INDEX,JB=xo.POSITION_INDEX,Tle=xo.PIXEL_OFFSET_INDEX,Sle=xo.EYE_OFFSET_INDEX,uYe=xo.HORIZONTAL_ORIGIN_INDEX,fYe=xo.VERTICAL_ORIGIN_INDEX,dYe=xo.SCALE_INDEX,aE=xo.IMAGE_INDEX_INDEX,wle=xo.COLOR_INDEX,hYe=xo.ROTATION_INDEX,mYe=xo.ALIGNED_AXIS_INDEX,Ble=xo.SCALE_BY_DISTANCE_INDEX,Dle=xo.TRANSLUCENCY_BY_DISTANCE_INDEX,vle=xo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,Ple=xo.DISTANCE_DISPLAY_CONDITION,AYe=xo.DISABLE_DEPTH_DISTANCE,pYe=xo.TEXTURE_COORDINATE_BOUNDS,Rle=xo.SDF_INDEX,Mle=xo.SPLIT_DIRECTION_INDEX,zj=xo.NUMBER_OF_PROPERTIES,Co,gYe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},_Ye={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function Wf(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new zx),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(zj),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW],this._highlightColor=G.clone(G.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(Wf.prototype,{length:{get:function(){return Vj(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function Nle(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Wf.prototype.add=function(e){let t=new xo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};Wf.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Wf.prototype.removeAll=function(){Nle(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function Vj(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}Wf.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};Wf.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};Wf.prototype.get=function(e){return Vj(this),this._billboards[e]};var Oj;function yYe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function CYe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function EYe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}Wf.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<zj;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function IYe(e,t,n,i,o,r){let s=[{index:Co.positionHighAndScale,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Tle]},{index:Co.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dle]},{index:Co.compressedAttribute2,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[wle]},{index:Co.eyeOffset,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Sle]},{index:Co.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ble]},{index:Co.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vle]},{index:Co.compressedAttribute3,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ple]},{index:Co.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[pYe]},{index:Co.splitDirection,componentsPerAttribute:1,componentDatatype:q.FLOAT,usage:n[Mle]}];i&&s.push({index:Co.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:EYe(e)}),l(o)&&s.push({index:Co.a_batchId,componentsPerAttribute:1,componentDatatype:q.FLOAT,bufferUsage:Qe.STATIC_DRAW}),r&&s.push({index:Co.sdf,componentsPerAttribute:2,componentDatatype:q.FLOAT,usage:n[Rle]});let a=i?t:4*t;return new S_(e,s,a,i)}var Fj=new ei;function Lle(e,t,n,i){let o,r=n[Co.positionHighAndScale],s=n[Co.positionLowAndRotation],a=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(a,Fj);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=Fj.high,h=Fj.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var $l=new k,Hf=32768,Vx=65536,Qj=4096,Nm=256,xYe=128,bYe=32,TYe=8,Ole=4,SYe=1/256,Fle=0,Qle=2,kle=3,Ule=1,Hj=new Xe;function Gle(e,t,n,i){let o,r=n[Co.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let A=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===Wn.BASELINE&&(g=Wn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&A===Ri.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===Wn.CENTER;let _=0,y=0,C=0,E=0;if(i.ready){let M=i.computeTextureCoordinates(Hj);_=M.x,y=M.y,C=M.width,E=M.height}let I=_+C,b=y+E,S=Math.floor(D.clamp(a,-Hf,Hf)+Hf)*xYe;S+=(A+1)*bYe,S+=(g+1)*TYe,S+=(m?1:0)*Ole;let B=Math.floor(D.clamp(c,-Hf,Hf)+Hf)*Nm,v=Math.floor(D.clamp(f,-Hf,Hf)+Hf)*Nm,P=(D.clamp(h,-Hf,Hf)+Hf)*SYe,N=Math.floor(P),L=Math.floor((P-N)*Nm);B+=N,v+=L,$l.x=_,$l.y=y;let p=Fn.compressTextureCoordinates($l);$l.x=I;let x=Fn.compressTextureCoordinates($l);$l.y=b;let T=Fn.compressTextureCoordinates($l);$l.x=_;let w=Fn.compressTextureCoordinates($l);e._instanced?(o=i._index,r(o,S,B,v,p)):(o=i._index*4,r(o+0,S+Fle,B,v,p),r(o+1,S+Qle,B,v,x),r(o+2,S+kle,B,v,T),r(o+3,S+Ule,B,v,w))}function zle(e,t,n,i){let o,r=n[Co.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let A=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,A);let g=D.clamp(A,0,Vx),m=0;Math.abs(d.magnitudeSquared(s)-1)<D.EPSILON6&&(m=Fn.octEncodeFloat(s)),c=D.clamp(c,0,1),c=c===1?255:c*255|0,g=g*Nm+c,f=D.clamp(f,0,1),f=f===1?255:f*255|0,m=m*Nm+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function Uj(e,t,n,i){let o,r=n[Co.compressedAttribute2],s=i.color,a=l(e._batchTable)?G.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<D.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=i.height??0;e._maxSize=Math.max(e._maxSize,f);let h=i._labelHorizontalOrigin??-2;h+=2;let A=f*Ole+h,g=G.floatToByte(s.red),m=G.floatToByte(s.green),_=G.floatToByte(s.blue),y=g*Vx+m*Nm+_;g=G.floatToByte(a.red),m=G.floatToByte(a.green),_=G.floatToByte(a.blue);let C=g*Vx+m*Nm+_,E=G.floatToByte(s.alpha)*Vx+G.floatToByte(a.alpha)*Nm;E+=c*2+u,e._instanced?(o=i._index,r(o,y,C,E,A)):(o=i._index*4,r(o+0,y,C,E,A),r(o+1,y,C,E,A),r(o+2,y,C,E,A),r(o+3,y,C,E,A))}function Gj(e,t,n,i){let o,r=n[Co.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==Ze.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if($l.x=0,$l.y=0,i.ready){let u=i.computeTextureCoordinates(Hj);$l.x=u.width,$l.y=u.height}let c=Fn.compressTextureCoordinates($l);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function Vle(e,t,n,i){let o,r=n[Co.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Hle(e,t,n,i){let o,r=n[Co.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Wle(e,t,n,i){let o,r=n[Co.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=_f(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,A;l(i._labelDimensions)?(A=i._labelDimensions.x,h=i._labelDimensions.y):(A=i.width??0,h=i.height??0);let g=Math.floor(D.clamp(A,0,Qj)),m=Math.floor(D.clamp(h,0,Qj)),_=g*Qj+m;e._instanced?(o=i._index,r(o,s,a,u,_)):(o=i._index*4,r(o+0,s,a,u,_),r(o+1,s,a,u,_),r(o+2,s,a,u,_),r(o+3,s,a,u,_))}function jle(e,t,n,i){if(_f(i.heightReference)){let A=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,_=l(A.globe)&&A.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&_}let o,r=n[Co.textureCoordinateBoundsOrLabelTranslate];if(qt.maximumVertexTextureImageUnits>0){let A=0,g=0;l(i._labelTranslate)&&(A=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,A,g,0,0)):(o=i._index*4,r(o+0,A,g,0,0),r(o+1,A,g,0,0),r(o+2,A,g,0,0),r(o+3,A,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let A=i.computeTextureCoordinates(Hj);s=A.x,a=A.y,c=A.width,u=A.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function wYe(e,t,n,i){if(!l(e._batchTable))return;let o=n[Co.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function Yle(e,t,n,i){if(!e._sdf)return;let o,r=n[Co.sdf],s=i.outlineColor,a=i.outlineWidth,c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue),h=c*Vx+u*Nm+f,A=a/Pa.RADIUS,g=G.floatToByte(s.alpha)*Vx+G.floatToByte(A)*Nm;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+Fle,g),r(o+1,h+Qle,g),r(o+2,h+kle,g),r(o+3,h+Ule,g))}function qle(e,t,n,i){let o=n[Co.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function BYe(e,t,n,i){Lle(e,t,n,i),Gle(e,t,n,i),zle(e,t,n,i),Uj(e,t,n,i),Gj(e,t,n,i),Vle(e,t,n,i),Hle(e,t,n,i),Wle(e,t,n,i),jle(e,t,n,i),wYe(e,t,n,i),Yle(e,t,n,i),qle(e,t,n,i)}function kj(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=xo._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DYe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,i,i.length,t,r,!0)):n===ie.MORPHING?kj(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,o,e._billboardsToUpdateIndex,t,r,!1)}function vYe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function PYe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture;
|
||
in vec2 v_textureCoordinates;
|
||
void main()
|
||
{
|
||
out_FragColor = texture(billboard_texture, v_textureCoordinates);
|
||
}
|
||
`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Be.OVERLAY,i}var RYe=[];Wf.prototype.update=function(e){if(Vj(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,Co=this._instanced?_Ye:gYe,Oj=this._instanced?CYe:yYe;let n=this._billboards,i=n.length,o=!0;for(let P=0;P<i;++P){let N=n[P];l(N.loadError)&&(console.error(`Error loading image for billboard: ${N.loadError}`),N.image=void 0),N.textureDirty&&this._updateBillboard(N,aE),N.show&&(o=o&&N.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;DYe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,A=e.passes,g=A.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let P=0;P<zj;++P)c[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=IYe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let P=0;P<i;++P){let N=this._billboards[P];N._dirty=!1,N.textureDirty=!1,BYe(this,e,h,N)}this._vaf.commit(Oj(t))}this._billboardsToUpdateIndex=0}else if(a>0){let P=RYe;P.length=0,(c[JB]||c[hYe]||c[dYe])&&P.push(Lle),(c[aE]||c[Tle]||c[uYe]||c[fYe]||c[lYe])&&(P.push(Gle),this._instanced&&P.push(Gj)),(c[aE]||c[mYe]||c[Dle])&&(P.push(zle),P.push(Uj)),(c[aE]||c[wle])&&P.push(Uj),(c[aE]||c[Sle])&&P.push(Gj),c[Ble]&&P.push(Vle),c[vle]&&P.push(Hle),(c[Ple]||c[AYe]||c[aE]||c[JB])&&P.push(Wle),(c[aE]||c[JB])&&P.push(jle),c[Rle]&&P.push(Yle),c[Mle]&&P.push(qle);let N=P.length;if(h=this._vaf.writers,a/i>.1){for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p)}this._vaf.commit(Oj(t))}else{for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p);this._instanced?this._vaf.subCommit(p._index,1):this._vaf.subCommit(p._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,_=R.IDENTITY;e.mode===ie.SCENE3D?(_=this.modelMatrix,m=le.clone(this._baseVolumeWC,this._boundingVolume)):m=le.clone(this._baseVolume2D,this._boundingVolume),vYe(this,e,m);let y=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,y){this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!0}):this._rsOpaque=void 0;let P=this._blendOption===Vo.TRANSLUCENT;this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:P?ee.LEQUAL:ee.LESS},depthMask:P,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let C,E,I,b,S,B=qt.maximumVertexTextureImageUnits>0;if(y||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){C=tk,E=ek,S=[],l(this._batchTable)&&(S.push("VECTOR_TILE"),C=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(C),E=this._batchTable.getFragmentShaderCallback(!1,void 0)(E)),I=new We({defines:S,sources:[C]}),this._instanced&&I.defines.push("INSTANCED"),this._shaderRotation&&I.defines.push("ROTATION"),this._shaderAlignedAxis&&I.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&I.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&I.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&I.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&I.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&I.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(B?I.defines.push("VERTEX_DEPTH_CHECK"):I.defines.push("FRAGMENT_DEPTH_CHECK"));let P=1-Pa.CUTOFF;this._sdf&&I.defines.push("SDF");let N=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(b=new We({defines:["OPAQUE",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co}),b=new We({defines:["TRANSLUCENT",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.OPAQUE&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.TRANSLUCENT&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let v=e.commandList;if(A.render||A.pick){let P=this._colorCommands,N=this._blendOption===Vo.OPAQUE,L=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT,p=this._vaf.va,x=p.length,T=this._uniforms,w;l(this._batchTable)?(T=this._batchTable.getUniformMapCallback()(T),w=this._batchTable.getPickId()):w="v_pickColor",P.length=x;let M=L?x*2:x;for(let O=0;O<M;++O){let U=P[O];l(U)||(U=P[O]=new nt);let Q=N||L&&O%2===0;U.pass=Q||!L?Be.OPAQUE:Be.TRANSLUCENT,U.owner=this;let z=L?Math.floor(O/2):O;U.boundingVolume=m,U.modelMatrix=_,U.count=p[z].indicesCount,U.shaderProgram=Q?this._sp:this._spTranslucent,U.uniformMap=T,U.vertexArray=p[z].va,U.renderState=Q?this._rsOpaque:this._rsTranslucent,U.debugShowBoundingVolume=this.debugShowBoundingVolume,U.pickId=w,this._instanced&&(U.count=6,U.instanceCount=i),v.push(U)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=PYe(this,e.context)),v.push(this.debugCommand))}this._allBillboardsReady=o};Wf.prototype.isDestroyed=function(){return!1};Wf.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Nle(this._billboards),ue(this)};var jf=Wf;function MYe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var Hx=MYe;function Ra(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),Wx(this)}var NYe=new Ae;Object.defineProperties(Ra.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=G.clone(e,this._color),Wx(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,Wx(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=G.clone(e,this._pointOutlineColor),Wx(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,Wx(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,NYe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=G.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&Wx(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Ra.defaultColor=G.WHITE;Ra.defaultPointOutlineColor=G.BLACK;Ra.defaultPointOutlineWidth=0;Ra.defaultPointSize=8;function Wx(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Ra.defaultColor,i=e._pointOutlineColor??Ra.defaultPointOutlineColor,o=e._pointOutlineWidth??Ra.defaultPointOutlineWidth,r=e._pointSize??Ra.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(G.equals(n,s)&&G.equals(i,a)&&o===c&&r===u)return;e._billboardColor=G.clone(n,e._billboardColor),e._billboardOutlineColor=G.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),A=i.toCssColorString(),g=JSON.stringify([h,r,A,o]);t.setImage(g,Hx(f,h,A,o,r))}Ra.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Ra.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Ra.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Ra.prototype.getPropertyInherited=function(e){return Sa.getPropertyInherited(this._content,this._batchId,e)};Ra.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Ra.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Ra.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Ra.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var B_=Ra;function LYe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,A=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,A)),o&&(g.fillStyle="black",g.fillText(t,u/2,A));let m=g.getImageData(0,0,f,h).data,_=m.length,y=f*4,C,E,I,b;for(C=0;C<_;++C)if(m[C]!==255){I=C/y|0;break}for(C=_-1;C>=0;--C)if(m[C]!==255){b=C/y|0;break}let S=-1;for(C=0;C<f&&S===-1;++C)for(E=0;E<h;++E){let B=C*4+E*y;if(m[B]!==255||m[B+1]!==255||m[B+2]!==255||m[B+3]!==255){S=C;break}}return{width:r.width,height:b-I,ascent:A-I,descent:b-A,minx:S-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var cE;function OYe(e,t){if(e==="")return;t=t??V.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??G.TRANSPARENT,a=t.padding??0,c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(cE)||(l(f.imageSmoothingEnabled)?cE="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?cE="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?cE="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(cE="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=LYe(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let A=-h.minx,g=Math.ceil(h.width)+A+c,m=h.height+c,_=m-h.ascent+a,y=m-_+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,s!==G.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let C=t.strokeColor??G.BLACK;f.strokeStyle=C.toCssColorString(),f.strokeText(e,A+a,y)}if(o){let C=t.fillColor??G.WHITE;f.fillStyle=C.toCssColorString(),f.fillText(e,A+a,y)}return u}var jx=OYe;var sue=Es(Zle(),1);var QYe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},ar=Object.freeze(QYe);var $le={},eue=0,kYe=256,UYe=new G(.165,.165,.165,.8),GYe=new k(7,5),vs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function lE(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function $B(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function eD(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function nue(e){let t=$le[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(eD(n,"line-height"));isNaN(i)&&(i=void 0),t={family:eD(n,"font-family"),size:eD(n,"font-size").replace("px",""),style:eD(n,"font-style"),weight:eD(n,"font-weight"),lineHeight:i},document.body.removeChild(n),eue<kYe&&($le[e._font]=t,eue++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Zd(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=G.clone(e.fillColor??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=G.clone(e.backgroundColor??UYe),this._backgroundPadding=k.clone(e.backgroundPadding??GYe),this._style=e.style??ar.FILL,this._verticalOrigin=e.verticalOrigin??Wn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??Ri.LEFT,this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._position=d.clone(e.position??d.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??Ze.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,nue(this),this._updateClamping()}Object.defineProperties(Zd.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),$B(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Zd.filterUnsupportedCharacters(e);this._renderedText=Zd.enableRightToLeftDetection?YYe(t):t,lE(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,lE(this),nue(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,lE(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,lE(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!G.equals(t,e)){G.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;k.equals(t,e)||(k.clone(e,t),$B(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,lE(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!k.equals(t,e)){k.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!Yt.equals(t,e)){this._translucencyByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!Yt.equals(t,e)){this._pixelOffsetScaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!Yt.equals(t,e)){this._scaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,$B(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),$B(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),$B(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Ut.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Zd.prototype._updateClamping=function(){xo._updateClamping(this._labelCollection,this)};Zd.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new k);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return xo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Zd.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?o-=s:e.verticalOrigin===Wn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,A=h.length;for(let g=0;g<A;++g){let m=h[g],_=m.billboard;if(!l(_))continue;let y=t.x+_._translate.x,C=t.y-_._translate.y,E=m.dimensions.width*a,I=m.dimensions.height*a;e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?C-=I:e.verticalOrigin===Wn.CENTER&&(C-=I*.5),e._verticalOrigin===Wn.TOP?C+=Pa.PADDING*a:(e._verticalOrigin===Wn.BOTTOM||e._verticalOrigin===Wn.BASELINE)&&(C-=Pa.PADDING*a),i=Math.min(i,y),o=Math.min(o,C),u=Math.max(u,y+E),f=Math.max(f,C+I)}r=u-i,s=f-o}return l(n)||(n=new Xe),n.x=i,n.y=o,n.width=r,n.height=s,n};Zd.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Zd.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&G.equals(this._fillColor,e._fillColor)&&G.equals(this._outlineColor,e._outlineColor)&&G.equals(this._backgroundColor,e._backgroundColor)&&k.equals(this._backgroundPadding,e._backgroundPadding)&&k.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Zd.prototype.isDestroyed=function(){return!1};Zd.enableRightToLeftDetection=!1;function zYe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=vs.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=vs.RTL:n.test(f)?a=vs.LTR:i.test(f)?a=vs.BRACKETS:a=vs.WEAK,u===0&&(s=a),s===a&&a!==vs.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function VYe(e){return e.split("").reverse().join("")}function tD(e,t,n){return e.slice(0,t)+n+e.slice(t)}function HYe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var WYe="\u05D0-\u05EA",jYe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",tue=new RegExp(`[${WYe}${jYe}]`);function YYe(e){let t=e.split(`
|
||
`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=tue.test(o.charAt(0)),s=zYe(o,tue),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===vs.BRACKETS?HYe(f.Word):VYe(f.Word);r?f.Type===vs.RTL?(c=h+c,a=0):f.Type===vs.LTR?(c=tD(c,a,f.Word),a+=f.Word.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(f.Type===vs.WEAK&&s[u-1].Type===vs.BRACKETS?c=h+c:s[u-1].Type===vs.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===vs.RTL?(c=h+c,a=0):(c=tD(c,a,f.Word),a+=f.Word.length):c=tD(c,0,h)):f.Type===vs.RTL?c=tD(c,a,h):f.Type===vs.LTR?(c+=f.Word,a=c.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(u>0&&s[u-1].Type===vs.RTL?s.length>u+1?s[u+1].Type===vs.RTL?c=tD(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=`
|
||
`)}return n}var uE=Zd;var aue=Es(iue(),1);function KYe(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var XYe=1.2,oue="ID_WHITE_PIXEL",Wj=new k(4,4),JYe=new Xe(1,1,1,1);function ZYe(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=Wj.x,o.height=Wj.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(oue,o),n.addImageSubRegion(oue,JYe)}let i=e.add({collection:t});return i.setImageTexture(n),i}var mp={};function $Ye(e,t,n,i,o,r){return mp.font=t,mp.fillColor=n,mp.strokeColor=i,mp.strokeWidth=o,mp.padding=Pa.PADDING,mp.fill=r===ar.FILL||r===ar.FILL_AND_OUTLINE,mp.stroke=r===ar.OUTLINE||r===ar.FILL_AND_OUTLINE,mp.backgroundColor=G.BLACK,jx(e,mp)}function jj(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var eqe=new aue.default,tqe=/\s/;function nqe(e,t){let n=t._renderedText,i=eqe.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/Pa.FONT_SIZE,o<s)for(let g=o;g<s;++g)jj(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(`
|
||
`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=ZYe(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=Ri.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,A=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],_=t._verticalOrigin,y=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+_]),C=A[y],E=h.get(y);if(!l(E)||!l(C)){E=new w_(f),h.set(y,E);let B=`${t._fontStyle} ${t._fontWeight} ${Pa.FONT_SIZE}px ${t._fontFamily}`,v=$Ye(m,B,G.WHITE,G.WHITE,0,ar.FILL);if(C=v.dimensions,A[y]=C,v.width>0&&v.height>0&&!tqe.test(m)){let P=(0,sue.default)(v,{cutoff:Pa.CUTOFF,radius:Pa.RADIUS}),N=v.getContext("2d"),L=v.width,p=v.height,x=N.getImageData(0,0,L,p);for(let T=0;T<L;T++)for(let w=0;w<p;w++){let M=w*L+T,O=P[M]*255,U=M*4;x.data[U+0]=O,x.data[U+1]=O,x.data[U+2]=O,x.data[U+3]=O}N.putImageData(x,0,0),E.loadImage(y,v)}}let I=r[g];if(l(I)||(I=new KYe,I.dimensions=C,I.billboardTexture=E,r[g]=I),I.billboardTexture.id!==y&&(I.billboardTexture=E,I.dimensions=C),!E.hasImage){jj(e,I);continue}let b=I.billboard,S=e._spareBillboards;l(b)||(S.length>0?b=S.pop():(b=f.add({collection:e}),b._labelDimensions=new k,b._labelTranslate=new k),I.billboard=b),b.setImageTexture(E),b.show=t._show,b.position=t._position,b.eyeOffset=t._eyeOffset,b.pixelOffset=t._pixelOffset,b.horizontalOrigin=Ri.LEFT,b.verticalOrigin=t._verticalOrigin,b.heightReference=t._heightReference,b.scale=t.totalScale,b.pickPrimitive=t,b.id=t._id,b.translucencyByDistance=t._translucencyByDistance,b.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,b.scaleByDistance=t._scaleByDistance,b.distanceDisplayCondition=t._distanceDisplayCondition,b.disableDepthTestDistance=t._disableDepthTestDistance,b._batchIndex=t._batchIndex,b.outlineColor=t.outlineColor,t.style===ar.FILL_AND_OUTLINE?(b.color=t._fillColor,b.outlineWidth=t.outlineWidth):t.style===ar.FILL?(b.color=t._fillColor,b.outlineWidth=0):t.style===ar.OUTLINE&&(b.color=G.TRANSPARENT,b.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function rue(e,t,n){return t===Ri.CENTER?-e/2:t===Ri.RIGHT?-(e+n.x):n.x}var Cr=new k,iqe=new k;function oqe(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=k.clone(l(f)?e._backgroundPadding:k.ZERO,iqe);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let N=0;N<u;++N){if(n.charAt(N)===`
|
||
`){r.push(i),++c,i=0;continue}let p=t[N].dimensions;l(p)&&(a=Math.max(a,p.height-p.descent),s=Math.max(s,p.descent),i+=p.width-p.minx,N<u-1&&(i+=t[N+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let A=a+s,g=e.totalScale,m=e._horizontalOrigin,_=e._verticalOrigin,y=0,C=r[y],E=rue(C,m,h),I=(l(e._lineHeight)?e._lineHeight:XYe*e._fontSize)/e._relativeSize,b=I*(c-1),S=o,B=A+b;l(f)&&(S+=h.x*2,B+=h.y*2,f._labelHorizontalOrigin=m),Cr.x=E*g,Cr.y=0;let v=!0,P=0;for(let N=0;N<u;++N){if(n.charAt(N)===`
|
||
`){++y,P+=I,C=r[y],E=rue(C,m,h),Cr.x=E*g,v=!0;continue}let L=t[N],p=L.dimensions;if(l(p)&&(_===Wn.TOP?(Cr.y=p.height-a-h.y,Cr.y+=Pa.PADDING):_===Wn.CENTER?Cr.y=(b+p.height-a)/2:_===Wn.BASELINE?(Cr.y=b,Cr.y-=Pa.PADDING):(Cr.y=b+s+h.y,Cr.y-=Pa.PADDING),Cr.y=(Cr.y-p.descent-P)*g,v&&(Cr.x-=Pa.PADDING*g,v=!1),l(L.billboard)&&(L.billboard._setTranslate(Cr),L.billboard._labelDimensions.x=S,L.billboard._labelDimensions.y=B,L.billboard._labelHorizontalOrigin=m),N<u-1)){let x=t[N+1];Cr.x+=(p.width-p.minx+x.dimensions.minx)*g}}if(l(f)&&n.split(`
|
||
`).join("").length>0&&(m===Ri.CENTER?E=-o/2-h.x:m===Ri.RIGHT?E=-(o+h.x*2):E=0,Cr.x=E*g,_===Wn.TOP?Cr.y=A-a-s:_===Wn.CENTER?Cr.y=(A-a)/2-s:_===Wn.BASELINE?Cr.y=-h.y-s:Cr.y=0,Cr.y=Cr.y*g,f.width=S,f.height=B,f._setTranslate(Cr),f._labelTranslate=k.clone(Cr,f._labelTranslate)),_f(e.heightReference))for(let N=0;N<u;++N){let p=t[N].billboard;l(p)&&(p._labelTranslate=k.clone(Cr,p._labelTranslate))}}function cue(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)jj(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function Lm(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new jf({scene:this._scene,textureAtlas:new zx({initialSize:Wj})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new w_(t),this._glyphBillboardCollection=new jf({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=G.clone(G.WHITE),this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT}Object.defineProperties(Lm.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});Lm.prototype.add=function(e){let t=new uE(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};Lm.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),cue(this,e),!0}return!1};Lm.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)cue(this,e[t]);e.length=0};Lm.prototype.contains=function(e){return l(e)&&e._labelCollection===this};Lm.prototype.get=function(e){return this._labels[e]};Lm.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(nqe(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(oqe(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Vo.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};Lm.prototype.isDestroyed=function(){return!1};Lm.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var Ap=Lm;var sk=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec3 position2DHigh;
|
||
in vec3 position2DLow;
|
||
in vec3 prevPosition3DHigh;
|
||
in vec3 prevPosition3DLow;
|
||
in vec3 prevPosition2DHigh;
|
||
in vec3 prevPosition2DLow;
|
||
in vec3 nextPosition3DHigh;
|
||
in vec3 nextPosition3DLow;
|
||
in vec3 nextPosition2DHigh;
|
||
in vec3 nextPosition2DLow;
|
||
in vec4 texCoordExpandAndBatchIndex;
|
||
|
||
out vec2 v_st;
|
||
out float v_width;
|
||
out vec4 v_pickColor;
|
||
out float v_polylineAngle;
|
||
|
||
void main()
|
||
{
|
||
float texCoord = texCoordExpandAndBatchIndex.x;
|
||
float expandDir = texCoordExpandAndBatchIndex.y;
|
||
bool usePrev = texCoordExpandAndBatchIndex.z < 0.0;
|
||
float batchTableIndex = texCoordExpandAndBatchIndex.w;
|
||
|
||
vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex);
|
||
float width = widthAndShow.x + 0.5;
|
||
float show = widthAndShow.y;
|
||
|
||
if (width < 1.0)
|
||
{
|
||
show = 0.0;
|
||
}
|
||
|
||
vec4 pickColor = batchTable_getPickColor(batchTableIndex);
|
||
|
||
vec4 p, prev, next;
|
||
if (czm_morphTime == 1.0)
|
||
{
|
||
p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz);
|
||
prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz);
|
||
next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz);
|
||
}
|
||
else if (czm_morphTime == 0.0)
|
||
{
|
||
p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy);
|
||
prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy);
|
||
next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy);
|
||
}
|
||
else
|
||
{
|
||
p = czm_columbusViewMorph(
|
||
czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),
|
||
czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz),
|
||
czm_morphTime);
|
||
prev = czm_columbusViewMorph(
|
||
czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy),
|
||
czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz),
|
||
czm_morphTime);
|
||
next = czm_columbusViewMorph(
|
||
czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy),
|
||
czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz),
|
||
czm_morphTime);
|
||
}
|
||
|
||
#ifdef DISTANCE_DISPLAY_CONDITION
|
||
vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex);
|
||
vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex);
|
||
vec3 centerLow = centerLowAndRadius.xyz;
|
||
float radius = centerLowAndRadius.w;
|
||
vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex);
|
||
|
||
float lengthSq;
|
||
if (czm_sceneMode == czm_sceneMode2D)
|
||
{
|
||
lengthSq = czm_eyeHeight2D.y;
|
||
}
|
||
else
|
||
{
|
||
vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz);
|
||
lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius);
|
||
}
|
||
|
||
float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x;
|
||
float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y;
|
||
if (lengthSq < nearSq || lengthSq > farSq)
|
||
{
|
||
show = 0.0;
|
||
}
|
||
#endif
|
||
|
||
float polylineAngle;
|
||
vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle);
|
||
gl_Position = czm_viewportOrthographic * positionWC * show;
|
||
|
||
v_st.s = texCoord;
|
||
v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w);
|
||
|
||
v_width = width;
|
||
v_pickColor = pickColor;
|
||
v_polylineAngle = polylineAngle;
|
||
}
|
||
`;var hl={};hl.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};hl.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var rqe=new Ae;hl.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,rqe).height}return i};var sqe=new R,aqe=new d,lue=new d,cqe=new mn(d.UNIT_X,0),uue=new d,lqe=new mn(d.UNIT_X,0),uqe=new d,fqe=new d,qj=[];function due(e,t,n){let i=qj;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var ck=new Ae,ak=new Ae,D_=new d,Kj=new d,dqe=new d,Yj=new Sg,nD=new Ic;function hqe(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,Kj),u=i.scaleToGeodeticSurface(t,dqe),f=hl.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,ck),A=i.cartesianToCartographic(u,ak),g=due(f,o,r);Yj.setEndPoints(h,A);let m=Yj.surfaceDistance/f,_=a;h.height=o;let y=i.cartographicToCartesian(h,D_);d.pack(y,s,_),_+=3;for(let C=1;C<f;C++){let E=Yj.interpolateUsingSurfaceDistance(C*m,ak);E.height=g[C],y=i.cartographicToCartesian(E,D_),d.pack(y,s,_),_+=3}return _}function mqe(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,ck),u=i.cartesianToCartographic(t,ak),f=hl.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=due(f,o,r);nD.ellipsoid.equals(i)||(nD=new Ic(void 0,void 0,i)),nD.setEndPoints(c,u);let A=nD.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,D_);d.pack(m,s,g),g+=3;for(let _=1;_<f;_++){let y=nD.interpolateUsingSurfaceDistance(_*A,ak);y.height=h[_],m=i.cartographicToCartesian(y,D_),d.pack(m,s,g),g+=3}return g}hl.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??R.IDENTITY;let o=R.inverseTransformation(t,sqe),r=R.multiplyByPoint(o,d.ZERO,aqe),s=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_Y,lue),lue),a=mn.fromPointNormal(r,s,cqe),c=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_X,uue),uue),u=mn.fromPointNormal(r,c,lqe),f=1;n.push(d.clone(e[0]));let h=n[0],A=e.length;for(let g=1;g<A;++g){let m=e[g];if(mn.getPointDistance(u,h)<0||mn.getPointDistance(u,m)<0){let _=Ai.lineSegmentPlane(h,m,a,uqe);if(l(_)){let y=d.multiplyByScalar(s,5e-9,fqe);mn.getPointDistance(a,h)<0&&d.negate(y,y),n.push(d.add(_,y,new d)),i.push(f+1),d.negate(y,y),n.push(d.add(_,y,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};hl.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let _=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let y=i.geodeticSurfaceNormal(_,D_);d.multiplyByScalar(y,o,y),d.add(_,y,_)}return[_.x,_.y,_.z]}let s=e.minDistance;if(!l(s)){let _=e.granularity??D.RADIANS_PER_DEGREE;s=D.chordLength(_,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=hl.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let _=t[c],y=t[c+1],C=r?o[c]:o,E=r?o[c+1]:o;h=hqe(_,y,s,i,C,E,f,h)}qj.length=0;let A=t[n-1],g=i.cartesianToCartographic(A,ck);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,D_);return d.pack(m,f,u-3),f};var fue=new Ae,Aqe=new Ae;hl.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let C=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let E=i.geodeticSurfaceNormal(C,D_);d.multiplyByScalar(E,o,E),d.add(C,E,C)}return[C.x,C.y,C.z]}let s=e.granularity??D.RADIANS_PER_DEGREE,a=0,c,u=i.cartesianToCartographic(t[0],fue),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],Aqe),a+=hl.numberOfPointsRhumbLine(u,f,s),u=Ae.clone(f,fue);let h=(a+1)*3,A=new Array(h),g=0;for(c=0;c<n-1;c++){let C=t[c],E=t[c+1],I=r?o[c]:o,b=r?o[c+1]:o;g=mqe(C,E,s,i,I,b,A,g)}qj.length=0;let m=t[n-1],_=i.cartesianToCartographic(m,ck);_.height=r?o[n-1]:o;let y=i.cartographicToCartesian(_,D_);return d.pack(y,A,h-3),A};hl.generateCartesianArc=function(e){let t=hl.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};hl.generateCartesianRhumbArc=function(e){let t=hl.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Xi=hl;function Mu(e,t){e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=No(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=R.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Xi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(mue),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=le.fromPoints(this._actualPositions),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new le}var hue=Mu.POSITION_INDEX=0,pqe=Mu.SHOW_INDEX=1,gqe=Mu.WIDTH_INDEX=2,_qe=Mu.MATERIAL_INDEX=3,iD=Mu.POSITION_SIZE_INDEX=4,yqe=Mu.DISTANCE_DISPLAY_CONDITION=5,mue=Mu.NUMBER_OF_PROPERTIES=6;function pp(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(Mu.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,pp(this,pqe))}},positions:{get:function(){return this._positions},set:function(e){let t=No(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&pp(this,iD),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=le.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),pp(this,hue),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,pp(this,_qe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,pp(this,gqe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,pp(this,iD)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),pp(this,yqe))}}});Mu.prototype.update=function(){let e=R.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[hue]>0||this._propertiesChanged[iD]>0;if((!R.equals(e,this._modelMatrix)||i)&&(this._segments=Xi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=le.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=R.clone(e,this._modelMatrix),this._segments.positions.length!==t)pp(this,iD);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){pp(this,iD);break}}};Mu.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};Mu.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<mue-1;++t)e[t]=0};Mu.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var $d=Mu;var Cqe=$d.SHOW_INDEX,Eqe=$d.WIDTH_INDEX,Jj=$d.POSITION_INDEX,Iqe=$d.MATERIAL_INDEX,Aue=$d.POSITION_SIZE_INDEX,xqe=$d.DISTANCE_DISPLAY_CONDITION,Iue=$d.NUMBER_OF_PROPERTIES,eu={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function eh(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Iue),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Qe.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=G.clone(G.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(eh.prototype,{length:{get:function(){return Zj(this),this._polylines.length}}});eh.prototype.add=function(e){let t=new $d(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};eh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};eh.prototype.removeAll=function(){$j(this),wue(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};eh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};eh.prototype.get=function(e){return Zj(this),this._polylines[e]};function bqe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:q.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:q.FLOAT,componentsPerAttribute:2}];e._batchTable=new yI(t,n,e._polylines.length)}var xue=new ei,bue=new se,Tue=new k;eh.prototype.update=function(e){if(Zj(this),this._polylines.length===0||!this.show)return;vqe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");bqe(this,t),this._createBatchTable=!1}if(this._createVertexArray||Sqe(this))_ue(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ie.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Aue]||o[Iqe])_ue(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let A=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===A){o[Jj]&&A.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[Cqe]||o[Eqe])&&this._batchTable.setBatchedAttribute(i._index,0,new k(i._width,i._show)),this._batchTable.attributes.length>2){if(o[Jj]||o[Aue]){let m=e.mode===ie.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,_=ei.fromCartesian(m.center,xue),y=se.fromElements(_.low.x,_.low.y,_.low.z,m.radius,bue);this._batchTable.setBatchedAttribute(i._index,2,_.high),this._batchTable.setBatchedAttribute(i._index,3,y)}if(o[xqe]){let m=Tue;m.x=0,m.y=Number.MAX_VALUE;let _=i.distanceDisplayCondition;l(_)&&(m.x=_.near,m.y=_.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Iue;++c)o[c]=0;let r=R.IDENTITY;e.mode===ie.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ue.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;Tqe(this,e,c,r)}};var oD=new le,pue=new le;function Tqe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,A=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let _=u[m],y=_.buckets,C=y.length;for(let E=0;E<C;++E){let I=y[E],b=I.offset,S=I.bucket.shaderProgram,B=I.bucket.polylines,v=B.length,P,N,L=0,p,x;for(let T=0;T<v;++T){let w=B[T],M=Bqe(w._material);if(M!==P){if(l(P)&&L>0){let z=N.isTranslucent();a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=z?e._translucentRS:e._opaqueRS,p.pass=z?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,b+=L,L=0,c=!0,r.push(p)}N=w._material,N.update(o),P=M}let O=w._locatorBuckets,U=O.length;for(let z=0;z<U;++z){let F=O[z];F.locator===I&&(L+=F.count)}let Q;t.mode===ie.SCENE3D?Q=w._boundingVolumeWC:t.mode===ie.COLUMBUS_VIEW?Q=w._boundingVolume2D:t.mode===ie.SCENE2D?l(w._boundingVolume2D)&&(Q=le.clone(w._boundingVolume2D,pue),Q.center.x=0):l(w._boundingVolumeWC)&&l(w._boundingVolume2D)&&(Q=le.union(w._boundingVolumeWC,w._boundingVolume2D,pue)),c?(c=!1,le.clone(Q,oD)):le.union(Q,oD,oD)}l(P)&&L>0&&(a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=N.isTranslucent()?e._translucentRS:e._opaqueRS,p.pass=N.isTranslucent()?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,c=!0,r.push(p)),P=void 0}}n.length=a}eh.prototype.isDestroyed=function(){return!1};eh.prototype.destroy=function(){return Sue(this),$j(this),wue(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function Sqe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[Jj]?(i.bufferUsage!==Qe.STREAM_DRAW&&(t=!0,i.bufferUsage=Qe.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Qe.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Qe.STATIC_DRAW):i.frameCount--),t}var gue=[0,0,0];function _ue(e,t,n){e._createVertexArray=!1,$j(e),Sue(e),Dqe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,A,g;for(A in h)h.hasOwnProperty(A)&&(g=h[A],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,_=new Float32Array(6*f*3),y=new Float32Array(f*4),C,E=0,I=0,b=0;for(A in h)if(h.hasOwnProperty(A)){g=h[A],g.write(_,y,E,I,b,r,t,n),m===ie.MORPHING&&(l(C)||(C=new Float32Array(6*f*3)),g.writeForMorph(C,E));let x=g.lengthOfPositions;E+=6*x*3,I+=x*4,b+=x*4,c=g.updateIndices(i,a,u,c)}let S=e._positionBufferUsage.bufferUsage,B=Qe.STATIC_DRAW;e._positionBuffer=Et.createVertexBuffer({context:t,typedArray:_,usage:S});let v;l(C)&&(v=Et.createVertexBuffer({context:t,typedArray:C,usage:S})),e._texCoordExpandAndBatchIndexBuffer=Et.createVertexBuffer({context:t,typedArray:y,usage:B});let P=3*Float32Array.BYTES_PER_ELEMENT,N=4*Float32Array.BYTES_PER_ELEMENT,L=0,p=i.length;for(let x=0;x<p;++x)if(o=i[x],o.length>0){let T=new Uint16Array(o),w=Et.createIndexBuffer({context:t,typedArray:T,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});L+=a[x];let M=6*(x*(P*D.SIXTY_FOUR_KILOBYTES)-L*P),O=P+M,U=P+O,Q=P+U,z=P+Q,F=P+z,H=x*(N*D.SIXTY_FOUR_KILOBYTES)-L*N,W=[{index:eu.position3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.position2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:q.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:H}],Z,Y,$,X;m===ie.SCENE3D?(Y=e._positionBuffer,Z="vertexBuffer",$=gue,X="value"):m===ie.SCENE2D||m===ie.COLUMBUS_VIEW?(Y=gue,Z="value",$=e._positionBuffer,X="vertexBuffer"):(Y=v,Z="vertexBuffer",$=e._positionBuffer,X="vertexBuffer"),W[0][Z]=Y,W[1][Z]=Y,W[2][X]=$,W[3][X]=$,W[4][Z]=Y,W[5][Z]=Y,W[6][X]=$,W[7][X]=$,W[8][Z]=Y,W[9][Z]=Y,W[10][X]=$,W[11][X]=$;let he=new li({context:t,attributes:W,indexBuffer:w});e._vertexArrays.push({va:he,buckets:u[x]})}}}function wqe(e,t){return t instanceof Nt?t.id:t}var lk=[];function Bqe(e){let t=ao._uniformList[e.type],n=t.length;lk.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];lk[i]=r,lk[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(lk,wqe)}`}function Dqe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new Om(c,t,n)),u.addPolyline(a)}}}function vqe(e,t){let n=t.mode;(e._mode!==n||!R.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=R.clone(e.modelMatrix),e._createVertexArray=!0)}function Zj(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function $j(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Sue(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}eh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function wue(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function Xj(e,t,n){this.count=e,this.offset=t,this.bucket=n}function Om(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}Om.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};Om.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),jt.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new We({defines:i,sources:[`in vec4 v_pickColor;
|
||
`,this.material.shaderSource,TI]}),r=t.getVertexShaderCallback()(sk),s=new We({defines:i,sources:[bf,r]});this.shaderProgram=ln.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:eu})};function Bue(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(mn.ORIGIN_ZX_PLANE)===nn.INTERSECTING}Om.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ie.SCENE3D||!Bue(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var js=new d,Yf=new d,qf=new d,uk=new d,Pqe=new se,Rqe=new k;Om.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*D.PI,f=this.polylines,h=f.length;for(let A=0;A<h;++A){let g=f[A],m=g.width,_=g.show&&m>0,y=g._index,C=this.getSegments(g,a),E=C.positions,I=C.lengths,b=E.length,S=g.getPickId(s).color,B=0,v=0,P;for(let U=0;U<b;++U){U===0?g._loop?P=E[b-2]:(P=uk,d.subtract(E[0],E[1],P),d.add(E[0],P,P)):P=E[U-1],d.clone(P,Yf),d.clone(E[U],js),U===b-1?g._loop?P=E[1]:(P=uk,d.subtract(E[b-1],E[b-2],P),d.add(E[b-1],P,P)):P=E[U+1],d.clone(P,qf);let Q=I[B];U===v+Q&&(v+=Q,++B);let z=U-v===0,F=U===v+I[B]-1;c===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(c===ie.SCENE2D||c===ie.MORPHING)&&(z||F)&&u-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let H=z?2:0,W=F?2:4;for(let Z=H;Z<W;++Z){ei.writeElements(js,e,n),ei.writeElements(Yf,e,n+6),ei.writeElements(qf,e,n+12);let Y=Z-2<0?-1:1;t[o]=U/(b-1),t[o+1]=2*(Z%2)-1,t[o+2]=Y,t[o+3]=y,n+=18,o+=4}}let N=Pqe;N.x=G.floatToByte(S.red),N.y=G.floatToByte(S.green),N.z=G.floatToByte(S.blue),N.w=G.floatToByte(S.alpha);let L=Rqe;L.x=m,L.y=_?1:0;let p=c===ie.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,x=ei.fromCartesian(p.center,xue),T=x.high,w=se.fromElements(x.low.x,x.low.y,x.low.z,p.radius,bue),M=Tue;M.x=0,M.y=Number.MAX_VALUE;let O=g.distanceDisplayCondition;l(O)&&(M.x=O.near,M.y=O.far),r.setBatchedAttribute(y,0,L),r.setBatchedAttribute(y,1,N),r.attributes.length>2&&(r.setBatchedAttribute(y,2,T),r.setBatchedAttribute(y,3,w),r.setBatchedAttribute(y,4,M))}};var Mqe=new d,Nqe=new d,Lqe=new d,yue=new d;Om.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let A=0;A<u;++A){let g;A===0?s._loop?g=a[u-2]:(g=yue,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[A-1],g=R.multiplyByPoint(n,g,Nqe);let m=R.multiplyByPoint(n,a[A],Mqe),_;A===u-1?s._loop?_=a[1]:(_=yue,d.subtract(a[u-1],a[u-2],_),d.add(a[u-1],_,_)):_=a[A+1],_=R.multiplyByPoint(n,_,Lqe);let y=c[f];A===h+y&&(h+=y,++f);let C=A-h===0,E=A===h+c[f]-1,I=C?2:0,b=E?2:4;for(let S=I;S<b;++S)ei.writeElements(m,e,t),ei.writeElements(g,e,t+6),ei.writeElements(_,e,t+12),t+=18}}};var Oqe=new Array(1);Om.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new Xj(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let A=u[h];A._locatorBuckets=[];let g;if(this.mode===ie.SCENE3D){g=Oqe;let _=A._actualPositions.length;if(_>0)g[0]=_;else continue}else g=A._segments.lengths;let m=g.length;if(m>0){let _=0;for(let y=0;y<m;++y){let C=g[y]-1;for(let E=0;E<C;++E)c+4>D.SIXTY_FOUR_KILOBYTES&&(A._locatorBuckets.push({locator:r,count:_}),_=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new Xj(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),_+=6,s+=6,i+=6,c+=4}A._locatorBuckets.push({locator:r,count:_}),c+4>D.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new Xj(0,0,this),n[++o]=[r])}A._clean()}return r.count=s,i};Om.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var Yx={positions:void 0,lengths:void 0},Cue=new Array(1),Fqe=new d,Qqe=new Ae;Om.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ie.SCENE3D)return Cue[0]=n.length,Yx.positions=n,Yx.lengths=Cue,Yx;Bue(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=Fqe;for(let u=0;u<s;++u)a=n[u],c=R.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,Qqe)));if(o.length>0){e._boundingVolume2D=le.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return Yx.positions=o,Yx.lengths=e._segments.lengths,Yx};var Eue;Om.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*D.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Eue,c=6*s*3;!l(a)||a.length<c?a=Eue=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,A=0,g=0,m=0,_;s=f.length;for(let y=0;y<s;++y){y===0?t._loop?_=f[s-2]:(_=uk,d.subtract(f[0],f[1],_),d.add(f[0],_,_)):_=f[y-1],d.clone(_,Yf),d.clone(f[y],js),y===s-1?t._loop?_=f[1]:(_=uk,d.subtract(f[s-1],f[s-2],_),d.add(f[s-1],_,_)):_=f[y+1],d.clone(_,qf);let C=h[g];y===m+C&&(m+=C,++g);let E=y-m===0,I=y===m+h[g]-1;o===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(o===ie.SCENE2D||o===ie.MORPHING)&&(E||I)&&r-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let b=E?2:0,S=I?2:4;for(let B=b;B<S;++B)ei.writeElements(js,a,A),ei.writeElements(Yf,a,A+6),ei.writeElements(qf,a,A+12),A+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Fm=eh;function v_(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new jf({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new Ap({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Fm,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(v_.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function kqe(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+te.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,te.pack(t,s,a),s}var Uqe=new mi("createVectorTilePoints",5),Gqe=new d;function zqe(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=kqe(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=Uqe.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,A=n.length/3,g=e._heightReference??Ze.NONE;for(let m=0;m<A;++m){let _=h[m],y=d.unpack(n,m*3,Gqe),C=c.add();C.position=y,C._batchIndex=_,C.heightReference=g;let E=u.add();E.text=" ",E.position=y,E._batchIndex=_,E.heightReference=g;let I=f.add();I.positions=[d.clone(y),d.clone(y)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}v_.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new B_(e,c,u,f,h)}};v_.prototype.applyDebugSettings=function(e,t){e?(G.clone(t,this._billboardCollection._highlightColor),G.clone(t,this._labelCollection._highlightColor),G.clone(t,this._polylineCollection._highlightColor)):(G.clone(G.WHITE,this._billboardCollection._highlightColor),G.clone(G.WHITE,this._labelCollection._highlightColor),G.clone(G.WHITE,this._polylineCollection._highlightColor))};function Vqe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=B_.defaultPointSize,s.color=B_.defaultColor,s.pointOutlineColor=B_.defaultPointOutlineColor,s.pointOutlineWidth=B_.defaultPointOutlineWidth,s.labelColor=G.WHITE,s.labelOutlineColor=G.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=ar.FILL,s.labelText=void 0,s.backgroundColor=new G(.165,.165,.165,.8),s.backgroundPadding=new k(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=G.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=Ri.CENTER,s.verticalOrigin=Wn.CENTER,s.labelHorizontalOrigin=Ri.RIGHT,s.labelVerticalOrigin=Wn.BASELINE}}var Hqe=new G,Wqe=new G,jqe=new G,Yqe=new G,qqe=new G,Kqe=new G,rD=new Yt,sD=new Yt,eY=new Ut;v_.prototype.applyStyle=function(e,t){if(!l(e)){Vqe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,Hqe)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,Wqe)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,jqe)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,Yqe)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,qqe)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(rD.near=a.x,rD.nearValue=a.y,rD.far=a.z,rD.farValue=a.w,s.scaleByDistance=rD):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(sD.near=a.x,sD.nearValue=a.y,sD.far=a.z,sD.farValue=a.w,s.translucencyByDistance=sD):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(eY.near=a.x,eY.far=a.y,s.distanceDisplayCondition=eY):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,Kqe)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};v_.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=zqe(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};v_.prototype.isDestroyed=function(){return!1};v_.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var fk=v_;function gp(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??d.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(gp.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function Xqe(e){let t=new Float64Array(3+d.packedLength+te.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,ae.pack(e._rectangle,t,n),t}function Jqe(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Qn.unpack(t,n),n+=Qn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=G.unpack(t,n);n+=G.packedLength;let u=t[n++],f=t[n++],h=t[n++],A=new Array(h);for(let g=0;g<h;++g)A[g]=t[n++];s[a]=new KA({color:c,offset:u,count:f,batchIds:A})}}var Zqe=new mi("createVectorTilePolygons",5),$qe=new G;function eKe(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let _=0;_<m;++_){let y=g.getColor(_,$qe);s[_]=y.toRgba()}a=e._packedBuffer=Xqe(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let A=Zqe.scheduleTask(u,c);if(l(A))return A.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),_=m[0];Jqe(e,m),e._indices=Fe.getSizeInBytes(_)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),tKe(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function tKe(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}gp.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};gp.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};gp.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};gp.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};gp.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=eKe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};gp.prototype.isDestroyed=function(){return!1};gp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var dk=gp;var hk=`in vec4 currentPosition;
|
||
in vec4 previousPosition;
|
||
in vec4 nextPosition;
|
||
in vec2 expandAndWidth;
|
||
in float a_batchId;
|
||
|
||
uniform mat4 u_modifiedModelView;
|
||
|
||
void main()
|
||
{
|
||
float expandDir = expandAndWidth.x;
|
||
float width = abs(expandAndWidth.y) + 0.5;
|
||
bool usePrev = expandAndWidth.y < 0.0;
|
||
|
||
vec4 p = u_modifiedModelView * currentPosition;
|
||
vec4 prev = u_modifiedModelView * previousPosition;
|
||
vec4 next = u_modifiedModelView * nextPosition;
|
||
|
||
float angle;
|
||
vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle);
|
||
gl_Position = czm_viewportOrthographic * positionWC;
|
||
}
|
||
`;function th(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(th.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function nKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var iKe=new mi("createVectorTilePolylines",5),qx={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function oKe(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=nKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=iKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),rKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function rKe(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),f=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),h=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),m=Et.createIndexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),_=[{index:qx.previousPosition,vertexBuffer:u,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.currentPosition,vertexBuffer:f,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.nextPosition,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.expandAndWidth,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:2},{index:qx.a_batchId,vertexBuffer:g,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:_,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var aD=new R,Due=new d;function sKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,aD),R.multiplyByPoint(aD,e._center,Due),R.setTranslation(aD,Due,aD),aD},u_highlightColor:function(){return e._highlightColor}})}function aKe(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var cKe=`uniform vec4 u_highlightColor;
|
||
void main()
|
||
{
|
||
out_FragColor = u_highlightColor;
|
||
}
|
||
`;function lKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(hk),o=n.getFragmentShaderCallback(!1,void 0,!1)(cKe),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:qx})}function uKe(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Be.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}th.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],A=o[r+1]-h;for(s=0;s<A;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};th.prototype.getPositions=function(e){return th.getPolylinePositions(this,e)};th.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};th.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function fKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var dKe=new G,hKe=G.WHITE,mKe=!0;th.prototype.applyStyle=function(e,t){if(!l(e)){fKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,dKe):hKe,s.show=l(e.show)?e.show.evaluate(s):mKe}};th.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=oKe(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}sKe(this,t),lKe(this,t),aKe(this);let n=e.passes;(n.render||n.pick)&&uKe(this,e)};th.prototype.isDestroyed=function(){return!1};th.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var Kx=th;var mk=`in vec3 startEllipsoidNormal;
|
||
in vec3 endEllipsoidNormal;
|
||
in vec4 startPositionAndHeight;
|
||
in vec4 endPositionAndHeight;
|
||
in vec4 startFaceNormalAndVertexCorner;
|
||
in vec4 endFaceNormalAndHalfWidth;
|
||
in float a_batchId;
|
||
|
||
uniform mat4 u_modifiedModelView;
|
||
uniform vec2 u_minimumMaximumVectorHeights;
|
||
|
||
out vec4 v_startPlaneEC;
|
||
out vec4 v_endPlaneEC;
|
||
out vec4 v_rightPlaneEC;
|
||
out float v_halfWidth;
|
||
out vec3 v_volumeUpEC;
|
||
|
||
void main()
|
||
{
|
||
// vertex corner IDs
|
||
// 3-----------7
|
||
// /| left /|
|
||
// / | 1 / |
|
||
// 2-----------6 5 end
|
||
// | / | /
|
||
// start |/ right |/
|
||
// 0-----------4
|
||
//
|
||
float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end
|
||
float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top
|
||
|
||
vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz;
|
||
vec3 right = normalize(cross(forward, startEllipsoidNormal));
|
||
|
||
vec4 position = vec4(startPositionAndHeight.xyz, 1.0);
|
||
position.xyz += forward * isEnd;
|
||
|
||
v_volumeUpEC = czm_normal * normalize(cross(right, forward));
|
||
|
||
// Push for volume height
|
||
float offset;
|
||
vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd);
|
||
|
||
// offset height to create volume
|
||
offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd);
|
||
offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset;
|
||
position.xyz += offset * ellipsoidNormal;
|
||
|
||
// move from RTC to EC
|
||
position = u_modifiedModelView * position;
|
||
right = czm_normal * right;
|
||
|
||
// Push for width in a direction that is in the start or end plane and in a plane with right
|
||
// N = normalEC ("right-facing" direction for push)
|
||
// R = right
|
||
// p = angle between N and R
|
||
// w = distance to push along R if R == N
|
||
// d = distance to push along N
|
||
//
|
||
// N R
|
||
// { p| } * cos(p) = dot(N, R) = w / d
|
||
// d | |w * d = w / dot(N, R)
|
||
// { | }
|
||
// o---------- polyline segment ---->
|
||
//
|
||
vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd);
|
||
scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd));
|
||
vec3 miterPushNormal = czm_normal * normalize(scratchNormal);
|
||
|
||
offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC
|
||
offset = offset / dot(miterPushNormal, right);
|
||
position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0)));
|
||
|
||
gl_Position = czm_depthClamp(czm_projection * position);
|
||
|
||
position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0);
|
||
vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz;
|
||
v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz));
|
||
v_rightPlaneEC = vec4(right, -dot(right, position.xyz));
|
||
|
||
position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0);
|
||
vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz;
|
||
v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz));
|
||
v_halfWidth = endFaceNormalAndHalfWidth.w;
|
||
}
|
||
`;var Ak=`in vec4 v_startPlaneEC;
|
||
in vec4 v_endPlaneEC;
|
||
in vec4 v_rightPlaneEC;
|
||
in float v_halfWidth;
|
||
in vec3 v_volumeUpEC;
|
||
|
||
uniform vec4 u_highlightColor;
|
||
void main()
|
||
{
|
||
float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)));
|
||
|
||
// Discard for sky
|
||
if (logDepthOrDepth == 0.0) {
|
||
#ifdef DEBUG_SHOW_VOLUME
|
||
out_FragColor = vec4(0.0, 0.0, 1.0, 0.5);
|
||
return;
|
||
#else // DEBUG_SHOW_VOLUME
|
||
discard;
|
||
#endif // DEBUG_SHOW_VOLUME
|
||
}
|
||
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
|
||
eyeCoordinate /= eyeCoordinate.w;
|
||
|
||
float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate);
|
||
|
||
// Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction
|
||
halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC));
|
||
|
||
// Check distance of the eye coordinate against the right-facing plane
|
||
float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz);
|
||
|
||
// Check eye coordinate against the mitering planes
|
||
float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz);
|
||
float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz);
|
||
|
||
if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) {
|
||
#ifdef DEBUG_SHOW_VOLUME
|
||
out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5);
|
||
return;
|
||
#else // DEBUG_SHOW_VOLUME
|
||
discard;
|
||
#endif // DEBUG_SHOW_VOLUME
|
||
}
|
||
out_FragColor = u_highlightColor;
|
||
|
||
czm_writeDepthClamp();
|
||
}
|
||
`;function _p(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new k(wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight),this._boundingVolume=Qn.fromRectangle(e.rectangle,wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(_p.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function AKe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Qn.fromRectangle(c,o,r,n,a)}function pKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var gKe=new mi("createVectorTileClampedPolylines"),P_={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function _Ke(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=pKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=gKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),yKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function yKe(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),m=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),_=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),y=Et.createVertexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW}),C=Et.createVertexBuffer({context:t,typedArray:c,usage:Qe.STATIC_DRAW}),E=Et.createIndexBuffer({context:t,typedArray:u,usage:Qe.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),I=[{index:P_.startEllipsoidNormal,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.endEllipsoidNormal,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.startPositionAndHeight,vertexBuffer:g,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endPositionAndHeight,vertexBuffer:m,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.startFaceNormalAndVertexCorner,vertexBuffer:_,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endFaceNormalAndHalfWidth,vertexBuffer:y,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.a_batchId,vertexBuffer:C,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:I,indexBuffer:E}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var cD=new R,vue=new d;function CKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,cD),R.multiplyByPoint(cD,e._center,vue),R.setTranslation(cD,vue,cD),cD},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function Pue(e){return Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function EKe(e){l(e._rs)||(e._rs=Pue(!1),e._rs3DTiles=Pue(!0))}function IKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(mk),o=n.getFragmentShaderCallback(!1,void 0,!0)(Ak),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:P_})}function xKe(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Be.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=nt.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===Jn.TERRAIN||i===Jn.BOTH)&&t.commandList.push(n),(i===Jn.CESIUM_3D_TILE||i===Jn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}_p.prototype.getPositions=function(e){return Kx.getPolylinePositions(this,e)};_p.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};_p.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function bKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var TKe=new G,SKe=G.WHITE,wKe=!0;_p.prototype.applyStyle=function(e,t){if(!l(e)){bKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,TKe):SKe,s.show=l(e.show)?e.show.evaluate(s):wKe}};function BKe(e){return wi.initialize().then(function(){AKe(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}_p.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=BKe(this).then(_Ke(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}CKe(this,t),IKe(this,t),EKe(this);let n=e.passes;(n.render||n.pick)&&xKe(this,e)};_p.prototype.isDestroyed=function(){return!1};_p.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var pk=_p;var tY=32767,DKe=new Ae,vKe=new d;function PKe(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Fn.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],A=a[f],g=c[f],m=D.lerp(t.west,t.east,h/tY),_=D.lerp(t.south,t.north,A/tY),y=D.lerp(n,i,g/tY),C=Ae.fromRadians(m,_,y,DKe),E=o.cartographicToCartesian(C,vKe);d.pack(E,u,f*3)}return u}var gk=PKe;function ih(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,OKe(this,i,o)}Object.defineProperties(ih.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function RKe(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function MKe(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let A=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,A,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let A=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,A,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let A=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,A,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let A=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=A++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=A++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=A++}return{polygons:n,polylines:i,points:o}}var nh=Uint32Array.BYTES_PER_ELEMENT;function NKe(e){return new Kx(e)}function LKe(e){return new pk(e)}function OKe(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=nh;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=nh;let s=o.getUint32(n,!0);if(n+=nh,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=nh,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=nh;let u=o.getUint32(n,!0);n+=nh;let f=o.getUint32(n,!0);n+=nh;let h=o.getUint32(n,!0);n+=nh;let A=o.getUint32(n,!0);n+=nh;let g=o.getUint32(n,!0);n+=nh;let m=o.getUint32(n,!0);n+=nh;let _=yr(i,n,a);n+=a;let y=new Uint8Array(t,n,c);n+=c;let C,E;u>0&&(C=yr(i,n,u),n+=u,f>0&&(E=new Uint8Array(t,n,f),E=new Uint8Array(E),n+=f));let I=_.POLYGONS_LENGTH??0,b=_.POLYLINES_LENGTH??0,S=_.POINTS_LENGTH??0,B=I+b+S,v=new Fg(e,B,C,E,RKe(e));if(e._batchTable=v,B===0)return;let P=new Sm(_,y),N=P.getGlobalProperty("REGION");if(!l(N))throw new ce("Feature table global property: REGION must be defined");let L=ae.unpack(N),p=N[4],x=N[5],T=e._tile.computedTransform,w=P.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(w)?(w=d.unpack(w),R.multiplyByPoint(T,w,w)):(w=ae.center(L),w.height=D.lerp(p,x,.5),w=te.WGS84.cartographicToCartesian(w));let M=MKe(_,y);if(n+=(4-n%4)%4,I>0){P.featuresLength=I;let U=P.getPropertyArray("POLYGON_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYGON_INDEX_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_INDEX_COUNT",q.UNSIGNED_INT,1);if(!l(Q))throw new ce("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let z=U.reduce(function($,X){return $+X*2},0),F=Q.reduce(function($,X){return $+X},0),H=new Uint32Array(t,n,F);n+=h;let W=new Uint16Array(t,n,z);n+=A;let Z,Y;l(_.POLYGON_MINIMUM_HEIGHTS)&&l(_.POLYGON_MAXIMUM_HEIGHTS)&&(Z=P.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",q.FLOAT,1),Y=P.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",q.FLOAT,1)),e._polygons=new dk({positions:W,counts:U,indexCounts:Q,indices:H,minimumHeight:p,maximumHeight:x,polygonMinimumHeights:Z,polygonMaximumHeights:Y,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,batchIds:M.polygons,modelMatrix:T})}let O=e._tileset;if(b>0){P.featuresLength=b;let U=P.getPropertyArray("POLYLINE_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYLINE_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYLINE_WIDTHS",q.UNSIGNED_SHORT,1);if(!l(Q)){Q=new Uint16Array(b);for(let Z=0;Z<b;++Z)Q[Z]=2}let z=U.reduce(function(Z,Y){return Z+Y*3},0),F=new Uint16Array(t,n,z);n+=g;let H=O.examineVectorLinesFunction;if(l(H)){let Z=gk(new Uint16Array(F),L,p,x,te.WGS84);FKe(Z,U,M.polylines,v,e.url,H)}let W=NKe;l(O.classificationType)&&(W=LKe),e._polylines=W({positions:F,widths:Q,counts:U,batchIds:M.polylines,minimumHeight:p,maximumHeight:x,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,classificationType:O.classificationType,keepDecodedPositions:O.vectorKeepDecodedPositions})}if(S>0){let U=new Uint16Array(t,n,S*3);n+=m,e._points=new fk({positions:U,batchIds:M.points,minimumHeight:p,maximumHeight:x,rectangle:L,batchTable:v,heightReference:O.heightReference,scene:O.scene})}}function nY(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}ih.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};ih.prototype.getFeature=function(e){return l(this._features)||nY(this),this._features[e]};ih.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};ih.prototype.applyStyle=function(e){l(this._features)||nY(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};ih.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||nY(this),this._batchTable.update(e,t),this._ready=!0)};ih.prototype.pick=function(e,t,n){};ih.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};ih.prototype.isDestroyed=function(){return!1};ih.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function FKe(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var _k=ih;function Ma(){}Ma._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Ma._sorterTaskProcessor=void 0;Ma._taskProcessorReady=!1;Ma._error=void 0;Ma._getSorterTaskProcessor=function(){if(!l(Ma._sorterTaskProcessor)){let e=new mi("gaussianSplatSorter",Ma._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ma._taskProcessorReady=!0:Ma._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ma._error=t}),Ma._sorterTaskProcessor=e}return Ma._sorterTaskProcessor};Ma.radixSortIndexes=function(e){let t=Ma._getSorterTaskProcessor();if(l(Ma._error))throw Ma._error;if(Ma._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var lD=Ma;function Na(){}Na._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Na._textureTaskProcessor=void 0;Na._taskProcessorReady=!1;Na._error=void 0;Na._getTextureTaskProcessor=function(){if(!l(Na._textureTaskProcessor)){let e=new mi("gaussianSplatTextureGenerator",Na._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Na._taskProcessorReady=!0:Na._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Na._error=t}),Na._textureTaskProcessor=e}return Na._textureTaskProcessor};Na.generateFromAttributes=function(e){let t=Na._getTextureTaskProcessor();if(l(Na._error))throw Na._error;if(!Na._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var yk=Na;function QKe(e){let t=new I_;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.alphaOptions=new Qx,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT)}var Ck=QKe;var Ek=`//
|
||
// Vertex shader for Gaussian splats.
|
||
|
||
// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance.
|
||
|
||
// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation.
|
||
//
|
||
// Discards splats outside the view frustum or with negligible screen size.
|
||
//
|
||
|
||
// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid
|
||
// which is used to calculate the vertex position in clip space.
|
||
vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) {
|
||
vec4 t = vec4(viewPos, 1.0);
|
||
float focal = czm_viewport.z * czm_projection[0][0];
|
||
|
||
float J1 = focal / t.z;
|
||
vec2 J2 = -J1 / t.z * t.xy;
|
||
mat3 J = mat3(
|
||
J1, 0.0, J2.x,
|
||
0.0, J1, J2.y,
|
||
0.0, 0.0, 0.0
|
||
);
|
||
|
||
mat3 R = mat3(czm_modelView);
|
||
|
||
//transform our covariance into view space
|
||
//ensures orientation is correct
|
||
mat3 Vrk_view = R * Vrk * transpose(R);
|
||
mat3 cov = transpose(J) * Vrk_view * J;
|
||
|
||
float diagonal1 = cov[0][0] + .3;
|
||
float offDiagonal = cov[0][1];
|
||
float diagonal2 = cov[1][1] + .3;
|
||
|
||
float mid = 0.5 * (diagonal1 + diagonal2);
|
||
float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal));
|
||
float lambda1 = mid + radius;
|
||
float lambda2 = max(mid - radius, 0.1);
|
||
|
||
vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1));
|
||
|
||
return vec4(
|
||
min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector,
|
||
min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x)
|
||
);
|
||
}
|
||
|
||
highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0);
|
||
|
||
void main() {
|
||
uint texIdx = uint(a_splatIndex);
|
||
ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10);
|
||
vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) );
|
||
|
||
vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0);
|
||
vec4 clipPosition = czm_projection * splatViewPos;
|
||
|
||
float clip = 1.2 * clipPosition.w;
|
||
if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip ||
|
||
clipPosition.y < -clip || clipPosition.y > clip) {
|
||
gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
|
||
return;
|
||
}
|
||
|
||
ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10);
|
||
uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0));
|
||
|
||
gl_Position = clipPosition;
|
||
|
||
vec2 u1 = unpackHalf2x16(covariance.x) ;
|
||
vec2 u2 = unpackHalf2x16(covariance.y);
|
||
vec2 u3 = unpackHalf2x16(covariance.z);
|
||
mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y);
|
||
|
||
vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk);
|
||
|
||
if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) {
|
||
gl_Position = discardVec;
|
||
return;
|
||
}
|
||
|
||
vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.;
|
||
|
||
gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0);
|
||
gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w));
|
||
|
||
v_vertPos = corner ;
|
||
v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0;
|
||
|
||
v_splitDirection = u_splitDirection;
|
||
}`;var Ik=`//
|
||
// Fragment shader for Gaussian splats.
|
||
// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle.
|
||
// Applies an approximate Gaussian falloff based on distance from the center and outputs
|
||
// a color modulated by the alpha and Gaussian weight.
|
||
//
|
||
void main() {
|
||
if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
|
||
if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
|
||
|
||
mediump float A = dot(v_vertPos, v_vertPos);
|
||
if(A > 1.0) {
|
||
discard;
|
||
}
|
||
mediump float scale = 4.0;
|
||
mediump float B = exp(-A * scale) * (v_splatColor.a);
|
||
out_FragColor = vec4(v_splatColor.rgb * B, B);
|
||
}
|
||
`;var uD=new R,Mue=new R,fE=new R,tu={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function Rue(e,t){return new Nt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:et.RGBA_INTEGER,pixelDatatype:He.UNSIGNED_INT,flipY:!1,sampler:on.NEAREST})}function Nu(e){e=e??V.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new R,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=wr.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(Ao.Y,Ao.X,new R),this._isDestroyed=!1,this._sorterState=tu.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(Nu.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});Nu.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};Nu.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),ue(this)};Nu.prototype.isDestroyed=function(){return this._isDestroyed};Nu.prototype.onTileLoad=function(e){this._dirty=!0};Nu.prototype.onTileVisible=function(e){};Nu.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=R.multiplyTransformation(t,i._axisCorrectionMatrix,uD);R.multiplyTransformation(o,e.content.worldTransform,o);let r=R.multiply(e.tileset.modelMatrix,R.fromArray(e.tileset.root.transform),Mue),s=R.inverse(r,fE),a=R.multiplyTransformation(s,o,uD),c=e.content._originalPositions,u=e.content._originalRotations,f=e.content._originalScales,h=Qt.getAttributeBySemantic(n,ct.POSITION).typedArray,A=Qt.getAttributeBySemantic(n,ct.ROTATION).typedArray,g=Qt.getAttributeBySemantic(n,ct.SCALE).typedArray,m=new d,_=new Le,y=new d;for(let C=0;C<c.length/3;++C)m.x=c[C*3],m.y=c[C*3+1],m.z=c[C*3+2],_.x=u[C*4],_.y=u[C*4+1],_.z=u[C*4+2],_.w=u[C*4+3],y.x=f[C*3],y.y=f[C*3+1],y.z=f[C*3+2],R.fromTranslationQuaternionRotationScale(m,_,y,fE),R.multiplyTransformation(a,fE,fE),R.getTranslation(fE,m),R.getRotation(fE,_),R.getScale(fE,y),h[C*3]=m.x,h[C*3+1]=m.y,h[C*3+2]=m.z,A[C*4]=_.x,A[C*4+1]=_.y,A[C*4+2]=_.z,A[C*4+3]=_.w,g[C*3]=y.x,g[C*3+1]=y.y,g[C*3+2]=y.z};Nu.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=yk.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=Rue(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=Rue(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};Nu.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new Ck(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=pn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Be.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",pe.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",pe.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=Me.TRIANGLE_STRIP,o.addVertexLines(Ek),o.addFragmentLines(Ik);let a=o.buildShaderProgram(t.context),c=ze(Ue.fromCache(i.renderStateOptions),!0);c.cull.face=Qt.getCullFace(n.modelMatrix,Me.TRIANGLE_STRIP),c=Ue.fromCache(c);let u={screenQuadPosition:0,splatIndex:2},f=new bn.Attribute;if(f.name="_SPLAT_INDEXES",f.typedArray=e._indexes,f.componentDatatype=q.UNSIGNED_INT,f.type=Ht.SCALAR,f.normalized=!1,f.count=i.instanceCount,f.constant=0,f.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new ht({attributes:{screenQuadPosition:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...f,variableName:"splatIndex"}},primitiveType:Me.TRIANGLE_STRIP});e._vertexArray=li.fromGeometry({context:t.context,geometry:g,attributeLocations:u,bufferUsage:Qe.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=R.multiply(n.modelMatrix,R.fromArray(n.root.transform),Mue),A=new nt({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Be.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:Me.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=A};Nu.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===tu.IDLE){if(!this._dirty&&R.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let u of n){let f=u.content.splatPrimitive,h=s(f);l(a)||(a=q.createTypedArray(r,i*Ht.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.POSITION)),this._scales=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.SCALE)),this._rotations=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.ROTATION)),this._colors=o(q.UNSIGNED_BYTE,r=>Qt.getAttributeBySemantic(r,ct.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||Nu.generateSplatTexture(this,e);return}if(R.clone(e.camera.viewMatrix,this._prevViewMatrix),R.multiply(e.camera.viewMatrix,this._rootTransform,uD),l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED})}else if(this._sorterState===tu.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED}),this._sorterState=tu.SORTING}else{if(this._sorterState===tu.SORTING)return;if(this._sorterState===tu.SORTED)Nu.buildGSplatDrawCommand(this,e),this._sorterState=tu.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===tu.ERROR)throw this._sorterError}this._dirty=!1}};var fD=Nu;function Kf(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new fD({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(Kf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Kf.fromGltf=async function(e,t,n,i){let o=n,r=we.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:Ao.Y,forwardAxis:Ao.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=we.createIfNeeded(i);let a=new Ff(s);try{await a.load()}catch(c){throw a.destroy(),new ce(`Failed to load glTF: ${c.message}`)}return new Kf(a,e,t,n)};Kf.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(fD.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.POSITION).typedArray),this._originalRotations=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.ROTATION).typedArray),this._originalScales=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};Kf.prototype.hasProperty=function(e,t){return!1};Kf.prototype.getFeature=function(e){};Kf.prototype.applyDebugSettings=function(e,t){};Kf.prototype.applyStyle=function(e){};Kf.prototype.pick=function(e,t,n){};Kf.prototype.isDestroyed=function(){return this.isDestroyed};Kf.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),ue(this)};var dD=Kf;var Nue={b3dm:function(e,t,n,i,o){return zf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return zf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return zf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return dO.fromTileType(e,t,n,i,o,Nue)},externalTileset:function(e,t,n,i){return $Q.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new yO(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new _k(e,t,n,i,o)},subt:function(e,t,n,i,o){return uB.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return uB.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new ce("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),u=!1;return e.isGltfExtensionRequired instanceof Function&&(u=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),u?dD.fromGltf(e,t,n,c):zf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?dD.fromGltf(e,t,n,i):zf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return zf.fromGeoJson(e,t,n,i)}},Xx=Nue;var kKe={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},cr=Object.freeze(kKe);var oh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};oh.isBinaryFormat=function(e){switch(e){case oh.BATCHED_3D_MODEL:case oh.INSTANCED_3D_MODEL:case oh.COMPOSITE:case oh.POINT_CLOUD:case oh.VECTOR:case oh.GEOMETRY:case oh.IMPLICIT_SUBTREE:case oh.VOXEL_BINARY:case oh.GLTF_BINARY:return!0;default:return!1}};var ua=Object.freeze(oh);var UKe={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},rh=Object.freeze(UKe);var fa={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},yp=new Array(fa.NUMBER_OF_PASSES);yp[fa.RENDER]=Object.freeze({pass:fa.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});yp[fa.PICK]=Object.freeze({pass:fa.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});yp[fa.SHADOW]=Object.freeze({pass:fa.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});yp[fa.PRELOAD]=Object.freeze({pass:fa.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.PRELOAD_FLIGHT]=Object.freeze({pass:fa.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:fa.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PRELOAD]=Object.freeze({pass:fa.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PICK]=Object.freeze({pass:fa.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});fa.getPassOptions=function(e){return yp[e]};var Zo=Object.freeze(fa);function Qm(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(Qm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});Qm.prototype.hasProperty=function(e,t){return!1};Qm.prototype.getFeature=function(e){};Qm.prototype.applyDebugSettings=function(e,t){};Qm.prototype.applyStyle=function(e){};Qm.prototype.update=function(e,t){};Qm.prototype.pick=function(e,t,n){};Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){return ue(this)};var hD=Qm;function Cp(e){e=e??V.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Cp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Cp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Cp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Cp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Cp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Cp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xk=Cp;function iY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){iY._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new xk({content:n,class:o})}}iY._oneTimeWarning=yt;var Jx=iY;function GKe(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var Zx=GKe;function Ep(e){e=e??V.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Ep.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Ep.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Ep.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Ep.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Ep.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Ep.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var bk=Ep;function oY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){oY._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new bk({tile:n,class:o})}}oY._oneTimeWarning=yt;var Tk=oY;function zKe(e){let t=new Uint8Array(e),n=gm(t);if(n==="glTF"&&(n="glb"),ua.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=VKe(t);if(l(i.root))return{contentType:ua.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:ua.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:ua.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:ua.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:ua.VOXEL_JSON,jsonPayload:i};throw new ce("Invalid tile content.")}function VKe(e){let t;try{t=yr(e)}catch{throw new ce("Invalid tile content.")}return t}var R_=zKe;function Xf(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Yc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(Xf.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function rY(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function Lue(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}Xf.prototype.requestInnerContents=function(){if(!HKe(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;rY(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=WKe(this,n,t,this._tile._contentState);return jKe(this)};function HKe(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Yc.serverHasOpenSlots(n,t[n]))return!1;return Yc.heapHasOpenSlots(e.length)}function WKe(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}return rY(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}rY(e,-1),Oue(e,t,f)}})}async function jKe(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>YKe(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function YKe(e,t,n){if(l(t))try{let i=R_(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===ua.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===ua.GEOMETRY||i.contentType===ua.VECTOR;let a,c=Xx[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,A=s.implicitCoordinates;a.metadata=h.getContentMetadataView(A,n)}else s.hasImplicitContent||(a.metadata=Jx(o,u));let f=Zx(o,u);return l(f)&&(a.group=new zI({metadata:f})),a}catch(i){Oue(e,n,i)}}function Oue(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}Xf.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};Xf.prototype.hasProperty=function(e,t){return!1};Xf.prototype.getFeature=function(e){};Xf.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Xf.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Xf.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Xf.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Xf.prototype.isDestroyed=function(){return!1};Xf.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Sk=Xf;var Fue=Math.cos,Que=Math.sin,qKe=Math.sqrt,sY={};sY.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=Fue(f),A=Que(f),g=a.z*A,m=c.longitude+i*e.granYSin+o*e.granXCos,_=h*Fue(m),y=h*Que(m),C=a.x*_,E=a.y*y,I=qKe(C*_+E*y+g*A);if(r.x=C/I,r.y=E/I,r.z=g/I,n){let b=e.stNwCorner;l(b)?(f=b.latitude-e.stGranYCos*i+o*e.stGranXSin,m=b.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var KKe=new Wi,Jf=new d,XKe=new Ae,wk=new d,mD=new Hi;function kue(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,A=n*f;mD._ellipsoid=te.default,Jf=mD.project(e,Jf),Jf=d.subtract(Jf,wk,Jf);let g=Wi.fromRotation(t,KKe);Jf=Wi.multiplyByVector(g,Jf,Jf),Jf=d.add(Jf,wk,Jf),e=mD.unproject(Jf,e),r-=1,s-=1;let m=e.latitude,_=m+r*A,y=m-c*s,C=m-c*s+r*A,E=Math.max(m,_,y,C),I=Math.min(m,_,y,C),b=e.longitude,S=b+r*u,B=b+s*h,v=b+s*h+r*u,P=Math.max(b,S,B,v),N=Math.min(b,S,B,v);return{north:E,south:I,east:P,west:N,granYCos:c,granYSin:h,granXCos:u,granXSin:A,nwCorner:e}}sY.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,A=!1;u===D.PI_OVER_TWO&&(h=!0),f===-D.PI_OVER_TWO&&(A=!0);let g,m=u-f;c>a?g=D.TWO_PI-c+a:g=a-c;let _=Math.ceil(g/t)+1,y=Math.ceil(m/t)+1,C=g/(_-1),E=m/(y-1),I=ae.northwest(e,r),b=ae.center(e,XKe);(n!==0||i!==0)&&(b.longitude<I.longitude&&(b.longitude+=D.TWO_PI),mD._ellipsoid=te.default,wk=mD.project(b,wk));let S=E,B=C,v=0,P=0,N=ae.clone(e,o),L={granYCos:S,granYSin:v,granXCos:B,granXSin:P,nwCorner:I,boundingRectangle:N,width:_,height:y,northCap:h,southCap:A};if(n!==0){let p=kue(I,n,C,E,b,_,y);u=p.north,f=p.south,a=p.east,c=p.west,L.granYCos=p.granYCos,L.granYSin=p.granYSin,L.granXCos=p.granXCos,L.granXSin=p.granXSin,N.north=u,N.south=f,N.east=a,N.west=c}if(i!==0){n=n-i;let p=ae.northwest(N,s),x=kue(p,n,C,E,b,_,y);L.stGranYCos=x.granYCos,L.stGranXCos=x.granXCos,L.stGranYSin=x.granYSin,L.stGranXSin=x.granXSin,L.stNwCorner=p,L.stWest=x.west,L.stSouth=x.south}return L};var da=sY;var JKe=new le,ZKe=new le,$Ke=new d,e7e=new ae;function Uue(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),A=0,g=0,m,_=$Ke;if(r)da.computePosition(t,n,!1,g,0,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;else for(m=0;m<o;m++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=o-1,g=1;g<i;g++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=0,g=i-2;g>0;g--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;let y=h.length/3*2,C=Fe.createTypedArray(h.length/3,y),E=0;for(let b=0;b<h.length/3-1;b++)C[E++]=b,C[E++]=b+1;C[E++]=h.length/3-1,C[E++]=0;let I=new ht({attributes:new En,primitiveType:Me.LINES});return I.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),I.indices=C,I}function t7e(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=Uue(e,t),s=t.height,a=t.width,c=xi.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=xi.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let A=t.northCap,g=t.southCap,m=4;A&&(m-=1),g&&(m-=1);let _=(f.length/3+m)*2,y=Fe.createTypedArray(f.length/3,_);u=f.length/6;let C=0;for(let I=0;I<u-1;I++)y[C++]=I,y[C++]=I+1,y[C++]=I+u,y[C++]=I+u+1;y[C++]=u-1,y[C++]=0,y[C++]=u+u-1,y[C++]=u,y[C++]=0,y[C++]=u;let E;if(A)E=s-1;else{let I=a-1;y[C++]=I,y[C++]=I+u,E=a+s-2}if(y[C++]=E,y[C++]=E+u,!g){let I=a+E-1;y[C++]=I,y[C]=I+u}return r.indices=y,r}function eb(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??D.RADIANS_PER_DEGREE,i=e.ellipsoid??te.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}eb.packedLength=ae.packedLength+te.packedLength+5;eb.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var Gue=new ae,zue=te.clone(te.UNIT_SPHERE),$x={rectangle:Gue,ellipsoid:zue,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};eb.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Gue);t+=ae.packedLength;let o=te.unpack(e,t,zue);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):($x.granularity=r,$x.height=s,$x.rotation=a,$x.extrudedHeight=c,$x.offsetAttribute=u===-1?void 0:u,new eb($x))};var n7e=new Ae;eb.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=da.computeOptions(t,e._granularity,e._rotation,0,e7e,n7e),o,r;if(D.equalsEpsilon(t.north,t.south,D.EPSILON10)||D.equalsEpsilon(t.east,t.west,D.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!D.equalsEpsilon(s,a,0,D.EPSILON2),u;if(c){if(o=t7e(e,i),l(e._offsetAttribute)){let A=o.attributes.position.values.length/3,g=new Uint8Array(A);e._offsetAttribute===hn.TOP?g=g.fill(1,0,A/2):(u=e._offsetAttribute===hn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=le.fromRectangle3D(t,n,s,ZKe),h=le.fromRectangle3D(t,n,a,JKe);r=le.union(f,h)}else{if(o=Uue(e,i),o.attributes.position.values=xi.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===hn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=le.fromRectangle3D(t,n,s)}return new ht({attributes:o.attributes,indices:o.indices,primitiveType:Me.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var tb=eb;function ib(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=e.ellipsoid??te.WGS84;a7e(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(ib.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});ib.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Qn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)};var Vue=new d,Bk=new d,Hue=new d,i7e=new d,o7e=new d,r7e=new d,s7e=new d,Zf=new Ae,Wue=new mn(d.UNIT_X,0),nb=new In;function a7e(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Zf.longitude=t.west,Zf.latitude=(t.south+t.north)*.5,Zf.height=0;let i=n.cartographicToCartesian(Zf,r7e),o=d.cross(i,d.UNIT_Z,i7e);d.normalize(o,e.westNormal),Zf.longitude=t.east;let r=n.cartographicToCartesian(Zf,s7e),s=d.cross(d.UNIT_Z,r,Vue);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,Vue);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,o7e),u=t.south,f;if(u>0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=u;let _=n.cartographicToCartesian(Zf,nb.origin);d.clone(c,nb.direction);let y=mn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Wue);Ai.rayPlane(nb,y,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(_,Bk)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),Bk);let h=d.cross(f,a,Hue);d.normalize(h,e.southNormal);let A=t.north,g;if(A<0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=A;let _=n.cartographicToCartesian(Zf,nb.origin);d.negate(c,nb.direction);let y=mn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Wue);Ai.rayPlane(nb,y,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(_,Bk)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),Bk);let m=d.cross(a,g,Hue);d.normalize(m,e.northNormal)}var c7e=new d,l7e=new d,u7e=new d(0,-1,0),f7e=new d(0,0,-1),jue=new d;function d7e(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,A=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ie.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),c7e),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),l7e),f.z=f.y,f.y=f.x,f.x=0,h=u7e,g=d.UNIT_Y,A=f7e,m=d.UNIT_Z);let _=d.subtract(i,u,jue),y=d.dot(_,h),C=d.dot(_,A),E=d.subtract(i,f,jue),I=d.dot(E,g),b=d.dot(E,m);y>0?r+=y*y:I>0&&(r+=I*I),C>0?r+=C*C:b>0&&(r+=b*b)}let s,a,c;if(t.mode===ie.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}ib.prototype.distanceToCamera=function(e){let t=d7e(this,e);if(e.mode===ie.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};ib.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};ib.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new tb({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Rt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var $f=ib;var AD={},h7e=new d,Yue=new d,que=new d,Kue=new d,Xue=new Qn;AD.validOutline=function(e){let n=Qn.fromPoints(e,Xue).halfAxes,i=J.getColumn(n,0,Yue),o=J.getColumn(n,1,que),r=J.getColumn(n,2,Kue),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};AD.computeProjectTo2DArguments=function(e,t,n,i){let o=Qn.fromPoints(e,Xue),r=o.halfAxes,s=J.getColumn(r,0,Yue),a=J.getColumn(r,1,que),c=J.getColumn(r,2,Kue),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),A=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(A===f||A===h)&&(g=s),A===u?g=a:A===h&&(m=a),(A===u||A===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Jue(e,t,n,i,o){let r=d.subtract(e,t,h7e),s=d.dot(n,r),a=d.dot(i,r);return k.fromElements(s,a,o)}AD.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Jue(i[r],e,t,n);return o}};AD.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Jue(i,e,t,n,o)}};var M_=AD;function m7e(e){let t=e.length,n=new Float64Array(t*3),i=Fe.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n})});return new ht({attributes:s,indices:i,primitiveType:Me.LINES})}function dE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+1}dE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new dE(t)};dE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var A7e={polygonHierarchy:{}};dE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new dE(A7e)),n._polygonHierarchy=i,n.packedLength=o,n};dE.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=No(n,d.equalsEpsilon,!0),n.length<3||!M_.validOutline(n))return;let o=$n.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Rt({geometry:m7e(o[c])});r.push(u)}let s=jn.combineInstances(r)[0],a=le.fromPoints(t.positions);return new ht({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var sh=dE;var Dk=new Ae;function pD(e){let t=Hg.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??te.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=b7e(t,n,i,o);this._boundingPlanes=r;let s=B7e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=mY(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=mY(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=mY(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();Dk=o.cartesianToCartographic(c,Dk),Dk.height=(i+n)/2,this.center=o.cartographicToCartesian(Dk,c),this._boundingSphere=le.fromPoints(s)}var p7e=new d,g7e=new Ae,_7e=new d,y7e=new Ae,C7e=new d,E7e=new d,I7e=new d,x7e=new d;function b7e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,p7e),a=i.cartesianToCartographic(r,g7e);a.height=n;let c=i.cartographicToCartesian(a,_7e),u=mn.fromPointNormal(c,s);o[0]=u;let f=0,h,A=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),A[h]=g,m=i.cartesianToCartographic(g,y7e),m.height=t;let y=mn.getPointDistance(u,i.cartographicToCartesian(m,C7e));y<f&&(f=y)}let _=mn.clone(u);for(_.normal=d.negate(_.normal,_.normal),_.distance=_.distance*-1+f,o[1]=_,h=0;h<4;h++){g=A[h];let y=A[(h+1)%4],C=i.geodeticSurfaceNormal(g,E7e),E=d.subtract(y,g,x7e),I=d.cross(E,C,I7e);I=d.normalize(I,I),o[2+h]=mn.fromPointNormal(g,I)}return o}var hE=new d,mE=new d,AE=new d,aY=new d,cY=new d,lY=new d,T7e=new d,S7e=new d,w7e=new d,uY=new d,fY=new d,dY=new d,N_=new d,km=new J;function Zue(e,t,n){hE=e.normal,mE=t.normal,AE=n.normal,aY=d.multiplyByScalar(e.normal,-e.distance,aY),cY=d.multiplyByScalar(t.normal,-t.distance,cY),lY=d.multiplyByScalar(n.normal,-n.distance,lY),uY=d.multiplyByScalar(d.cross(mE,AE,T7e),d.dot(aY,hE),uY),fY=d.multiplyByScalar(d.cross(AE,hE,S7e),d.dot(cY,mE),fY),dY=d.multiplyByScalar(d.cross(hE,mE,w7e),d.dot(lY,AE),dY),km[0]=hE.x,km[1]=mE.x,km[2]=AE.x,km[3]=hE.y,km[4]=mE.y,km[5]=AE.y,km[6]=hE.z,km[7]=mE.z,km[8]=AE.z;let i=J.determinant(km);return N_=d.add(uY,fY,N_),N_=d.add(N_,dY,N_),new d(N_.x/i,N_.y/i,N_.z/i)}function B7e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Zue(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Zue(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var hY=new d,ob=new d;function mY(e,t){let n=[];for(let i=0;i<4;i++)hY=d.subtract(t[(i+1)%4],t[i],hY),ob=d.cross(e.normal,hY,ob),ob=d.normalize(ob,ob),n[i]=d.clone(ob);return n}Object.defineProperties(pD.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var AY=new d;pD.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;mn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):mn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,mn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let A=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=$ue(t,A[0],A[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=pY(mn.projectPointOntoPlane(this._boundingPlanes[1],t,AY),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var D7e=new d,v7e=new d;function $ue(e,t,n){let i=d.subtract(n,t,D7e),o=d.subtract(e,t,v7e),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var P7e=new mn(d.UNIT_X,0);function pY(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=mn.fromPointNormal(t[c],i[c],P7e);mn.getPointDistance(u,e)<0||(a=$ue(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}pD.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?nn.INSIDE:n===this._vertices.length?nn.OUTSIDE:nn.INTERSECTING};pD.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new sh({polygonHierarchy:{positions:this._planeVertices[0]}}),i=sh.createGeometry(n),o=new Rt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),r=new sh({polygonHierarchy:{positions:this._planeVertices[1]}}),s=sh.createGeometry(r),a=new Rt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new sh({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=sh.createGeometry(f);c[u]=new Rt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}})}return new kn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var vk=pD;var R7e=new d(1,1,1),Pk=Math.cos,Rk=Math.sin;function rb(e){e=e??V.EMPTY_OBJECT;let t=e.radii??R7e,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),u=Math.round(e.subdivisions??128);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}rb.packedLength=2*d.packedLength+8;rb.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var efe=new d,tfe=new d,Ip={radii:efe,innerRadii:tfe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};rb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,efe);t+=d.packedLength;let o=d.unpack(e,t,tfe);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=A===-1?void 0:A,n):(Ip.minimumClock=r,Ip.maximumClock=s,Ip.minimumCone=a,Ip.maximumCone=c,Ip.stackPartitions=u,Ip.slicePartitions=f,Ip.subdivisions=h,Ip.offsetAttribute=A===-1?void 0:A,new rb(Ip))};rb.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=te.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/D.TWO_PI),f=Math.round(f*Math.abs(s-r)/D.PI),u<2&&(u=2),f<2&&(f=2);let h=0,A=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,_=!1;g&&(A=2,r>0&&(m=!0,h+=u),s<Math.PI&&(_=!0,h+=u));let y=a*A*(f+u),C=new Float64Array(y*3),E=2*(y+h-(u+f)*A),I=Fe.createTypedArray(y,E),b,S,B,v,P=0,N=new Array(f),L=new Array(f);for(b=0;b<f;b++)v=r+b*(s-r)/(f-1),N[b]=Rk(v),L[b]=Pk(v);let p=new Array(a),x=new Array(a);for(b=0;b<a;b++)B=i+b*(o-i)/(a-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(N.length=a,L.length=a,b=0;b<a;b++)v=r+b*(s-r)/(a-1),N[b]=Rk(v),L[b]=Pk(v);for(p.length=u,x.length=u,b=0;b<u;b++)B=i+b*(o-i)/(u-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(P=0,b=0;b<f*A;b++){let M=b*a;for(S=0;S<a-1;S++)I[P++]=M+S,I[P++]=M+S+1}let T=f*a*A;for(b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g)for(T=f*a*A+u*a,b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g){let M=f*a*A,O=M+a*u;if(m)for(b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b;if(_)for(M+=a*u-u,O+=a*u-u,b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b}let w=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C})});if(l(e._offsetAttribute)){let M=C.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}return new ht({attributes:w,indices:I,primitiveType:Me.LINES,boundingSphere:le.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var ed=rb;function sb(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new ed(i),this._workerName="createSphereOutlineGeometry"}sb.packedLength=ed.packedLength;sb.pack=function(e,t,n){return ed.pack(e._ellipsoidGeometry,t,n)};var M7e=new ed,pE={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};sb.unpack=function(e,t,n){let i=ed.unpack(e,t,M7e);return pE.stackPartitions=i._stackPartitions,pE.slicePartitions=i._slicePartitions,pE.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,pE.radii),n._ellipsoidGeometry=new ed(pE),n):(pE.radius=i._radii.x,new sb(pE))};sb.createGeometry=function(e){return ed.createGeometry(e._ellipsoidGeometry)};var L_=sb;function ab(e,t){t===0&&(t=D.EPSILON7),this._boundingSphere=new le(e,t)}Object.defineProperties(ab.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});ab.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};ab.prototype.intersectPlane=function(e){return le.intersectPlane(this._boundingSphere,e)};ab.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};ab.prototype.createDebugVolume=function(e){let t=new L_({radius:this.radius}),n=R.fromTranslation(this.center,new R.clone(R.IDENTITY)),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var O_=ab;var N7e=new d,L7e=new d,O7e=new d,F7e=new d;function gE(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,D.EPSILON7/i,n)}function gY(e,t){let n=d.normalize(e,F7e),i=d.equalsEpsilon(n,d.UNIT_X,D.EPSILON6)?d.UNIT_Y:d.UNIT_X;return gE(e,i,t)}function nfe(e){let t=J.getColumn(e,0,N7e),n=J.getColumn(e,1,L7e),i=J.getColumn(e,2,O7e),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=D.EPSILON7,e[4]=D.EPSILON7,e[8]=D.EPSILON7,e):(o&&!r&&!s?t=gE(n,i,t):!o&&r&&!s?n=gE(t,i,n):!o&&!r&&s?i=gE(n,t,i):o?r?s||(t=gY(i,t),n=gE(i,t,n)):(t=gY(n,t),i=gE(n,t,i)):(n=gY(t,n),i=gE(n,t,i)),J.setColumn(e,0,t,e),J.setColumn(e,1,n,e),J.setColumn(e,2,i,e),e)}function cb(e,t){t=nfe(t),this._orientedBoundingBox=new Qn(e,t),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(cb.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});cb.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};cb.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};cb.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=nfe(t),J.clone(t,this._orientedBoundingBox.halfAxes),le.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};cb.prototype.createDebugVolume=function(e){let t=new $h({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=R.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var Lu=cb;function lr(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ii(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?R.unpack(n.transform):R.clone(R.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=R.multiply(a,this.transform,new R),u=l(i)?i._initialTransform:R.IDENTITY;this._initialTransform=R.multiply(u,this.transform,new R),this.computedTransform=c,this.metadata=Tk(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,lr._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let A;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&lr._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),A=n.refine.toUpperCase()==="REPLACE"?rr.REPLACE:rr.ADD):l(i)?A=i.refine:A=rr.REPLACE,this.refine=A,this.children=[],this.parent=i;let g,m=!1,_,y,C;if(t=we.createIfNeeded(t),r)_=cr.UNLOADED,y=t.clone();else if(l(s)){let S=s.uri;l(s.url)&&(lr._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),S=s.url),S===""?(lr._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new hD(e,this),m=!0,_=cr.READY):(_=cr.UNLOADED,y=t.getDerivedResource({url:S}),C=Yc.getServerKey(y.getUrlComponent()))}else g=new hD(e,this),m=!0,_=cr.READY;this._content=g,this._contentResource=y,this._contentState=_,this._expiredContent=void 0,this._serverKey=C,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let E=n.expire,I,b;l(E)&&(I=E.duration,l(E.date)&&(b=K.fromIso8601(E.date))),this.expireDuration=I,this.expireDate=b,this.lastStyleTime=0,this._optimChildrenWithinParent=rh.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=G.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new K,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}lr._deprecationWarning=Pr;Object.defineProperties(lr.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new G),G.clone(this._color)},set:function(e){this._color=G.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===cr.READY}},contentUnloaded:{get:function(){return this._contentState===cr.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===cr.EXPIRED}},contentFailed:{get:function(){return this._contentState===cr.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var F_=new d;function Q7e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,F_),c=d.add(s.positionWC,a,F_),u=d.subtract(c,r,F_);if(d.magnitude(u)>o){let b=d.normalize(u,F_),S=d.multiplyByScalar(b,o,F_),B=d.add(r,S,F_),v=d.subtract(B,s.positionWC,F_),P=d.normalize(v,F_);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,P))}else e._foveatedFactor=0;let A=e.refine===rr.REPLACE,g=n.isSkippingLevelOfDetail;if(A&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&A&&g||n._pass===Zo.PRELOAD_FLIGHT||n._pass===Zo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),_=n.foveatedConeSize*m;if(e._foveatedFactor<=_)return!1;let y=m-_,C=D.clamp((e._foveatedFactor-_)/y,0,1),E=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,C),I=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-E<=I}var afe=new K;lr.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,A;if(e.mode===ie.SCENE2D||u instanceof An){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);A=s/m}else{let g=Math.max(this._distanceToCamera,D.EPSILON7),m=u.sseDenominator;if(A=s*h/(g*m),i.dynamicScreenSpaceError){let _=i._dynamicScreenSpaceErrorComputedDensity,y=i.dynamicScreenSpaceErrorFactor,C=D.fog(g,_)*y;A-=C}}return A/=e.pixelRatio,A};function k7e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function U7e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}lr.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:zs.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==zs.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=U7e(n,this),this._priorityProgressiveResolution=k7e(n,this),this.priorityDeferred=Q7e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};lr.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=K.now(afe);K.lessThan(this.expireDate,e)&&(this._contentState=cr.EXPIRED,this._expiredContent=this._content)}};function G7e(e){if(!l(e.expireDuration))return;let t=K.now(afe);K.addSeconds(t,e.expireDuration,t),l(e.expireDate)?K.lessThan(e.expireDate,t)&&K.clone(t,e.expireDate):e.expireDate=K.clone(t)}function z7e(e){return function(){return e._priority}}lr.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?V7e(this):W7e(this)};function V7e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ii(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new Sk(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=cr.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=cr.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=cr.FAILED,o})}async function H7e(e,t,n,i,o){let r=e._contentState;e._contentState=cr.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=cr.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await j7e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=cr.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=cr.FAILED,a}}function W7e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:z7e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return H7e(e,o,i,n,r)}async function j7e(e,t){let n=R_(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===ua.GEOMETRY||n.contentType===ua.VECTOR,(n.contentType===ua.IMPLICIT_SUBTREE||n.contentType===ua.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===ua.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=Xx[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=Jx(i,s));let a=Zx(i,s);return l(a)&&(o.group=new zI({metadata:a})),o}lr.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};lr.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=cr.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var cfe=new le;function yY(e,t){if(t.mode!==ie.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._boundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._boundingVolume2D:e._boundingVolume}function Y7e(e,t){if(t.mode!==ie.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._contentBoundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}lr.prototype.visibility=function(e,t){let n=e.cullingVolume,i=yY(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==nn.INSIDE,a===nn.OUTSIDE)return zs.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==nn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};lr.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return nn.INSIDE;if(this._visibilityPlaneMask===zs.MASK_INSIDE)return nn.INSIDE;let t=e.cullingVolume,n=Y7e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==nn.INSIDE,s===nn.OUTSIDE)return nn.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==nn.OUTSIDE,s===nn.INSIDE)return nn.OUTSIDE}return t.computeVisibility(n)};lr.prototype.distanceToTile=function(e){return yY(this,e).distanceToCamera(e)};var q7e=new d;lr.prototype.distanceToTileCenter=function(e){let n=yY(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,q7e);return d.dot(e.camera.directionWC,i)};lr.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var lfe=new J,ufe=new d,K7e=new J,CY=new d,ffe=new ae,dfe=new Qn,_Y=new R;function X7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=J.fromArray(e,3,K7e);i=R.multiplyByPoint(t,i,i);let r=R.getMatrix3(t,lfe);return o=J.multiply(r,o,o),l(n)?(n.update(i,o),n):new Lu(i,o)}function ife(e,t,n,i){let o=ae.unpack(e,0,ffe),r=e[4],s=e[5],a=Qn.fromRectangle(o,r,s,te.WGS84,dfe),c=a.center,u=a.halfAxes;t=R.multiplyTransformation(t,R.inverseTransformation(n,_Y),_Y),c=R.multiplyByPoint(t,c,c);let f=R.getMatrix3(t,lfe);return u=J.multiply(f,u,u),l(i)&&i instanceof Lu?(i.update(c,u),i):new Lu(c,u)}function J7e(e,t,n,i){if(!R.equalsEpsilon(t,n,D.EPSILON8))return i instanceof Lu?ife(e,t,n,i):ife(e,t,n,void 0);let o=ae.unpack(e,0,ffe);return i instanceof $f?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(te.WGS84),i):new $f({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function Z7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=e[3];i=R.multiplyByPoint(t,i,i);let r=R.getScale(t,ufe),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new O_(i,o)}lr.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=nx.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new ce("boundingVolume must be defined");if(Ii(e,"3DTILES_bounding_volume_S2"))return new vk(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=X7e(r,t,n);return this._verticalExaggeration!==1&&ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=J7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof Lu?ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Yr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Yr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(te.WGS84))),c}if(l(a)){let c=Z7e(a,t,n);if(this._verticalExaggeration!==1){let u=Yr.getPosition(c.center,te.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,CY),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new ce("boundingVolume must contain a sphere, region, or box")};var $7e=d.unpackArray(new Array(24).fill(0));function ofe(e,t,n){let i=e.boundingVolume.computeCorners($7e).map(r=>Yr.getPosition(r,te.WGS84,t,n,r)),o=Qn.fromPoints(i,dfe);e.update(o.center,o.halfAxes)}lr.prototype.updateTransform=function(e,t){e=e??R.IDENTITY;let n=R.multiplyTransformation(e,this.transform,_Y),i=!R.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&R.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};lr.prototype.updateGeometricErrorScale=function(){let e=R.getScale(this.computedTransform,ufe),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function eXe(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=G.WHITE:c=G.DARKGRAY:c=G.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=en.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(G.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(G.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=G.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function tXe(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=cr.FAILED,o}}function nXe(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function iXe(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}lr.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;nXe(this,e),iXe(this,e),eXe(this,e,t,n),tXe(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Be.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var rfe=[];lr.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(G7e(this),this._selectedFrame=0,this.lastStyleTime=0,K.now(this._loadTimestamp),this._contentState=cr.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=rfe;try{this._content.update(e,t)}catch(i){throw this._contentState=cr.FAILED,i}rfe.length=0,t.commandList=n};function sfe(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function Mk(e,t,n){return Math.max(D.normalize(e,t,n)-D.EPSILON7,0)}lr.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,A=Math.pow(10,f),g=f+h,m=r,_=Math.pow(10,g),y=g+m,C=Math.pow(10,y),E=Mk(this._depth,n.depth,i.depth);E=t?1-E:E;let b=!e.isSkippingLevelOfDetail&&this.refine===rr.REPLACE?Mk(this._priorityHolder._distanceToCamera,n.distance,i.distance):Mk(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),S=sfe(b,a,s),B=this._priorityProgressiveResolution?0:A,v=Mk(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),P=sfe(v,u,c),N=this.priorityDeferred?_:0,L=e._pass===Zo.PRELOAD_FLIGHT?0:C;this._priority=E+S+B+P+N+L};lr.prototype.isDestroyed=function(){return!1};lr.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var ah=lr;function xp(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(xp.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});xp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};xp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};xp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};xp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};xp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};xp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};xp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var gD=xp;function bp(e){e=e??V.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(bp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});bp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};bp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};bp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};bp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};bp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};bp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};bp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var Nk=bp;function hfe(e){e=e??V.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new Nk({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new gD({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new gD({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(hfe.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var lb=hfe;var mfe={},oXe=new d;mfe.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof Lu||i instanceof $f){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=rh.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof Lu||a instanceof $f)){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,oXe),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),A=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=A+f){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===rh.USE_OPTIMIZATION};var Lk=mfe;function _D(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(_D.prototype,{length:{get:function(){return this._length}}});function rXe(e,t,n){this.item=e,this.previous=t,this.next=n}_D.prototype.add=function(e){let t=new rXe(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Afe(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}_D.prototype.remove=function(e){l(e)&&(Afe(this,e),--this._length)};_D.prototype.splice=function(e,t){if(e===t)return;Afe(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var Ok=_D;function _E(){this._list=new Ok,this._sentinel=this._list.add(),this._trimTiles=!1}_E.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};_E.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};_E.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};_E.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};_E.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};_E.prototype.trim=function(){this._trimTiles=!0};var Fk=_E;function Qk(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function IY(e,t){let n;return t==="_loadTimestamp"?n=K.toDate(e).getTime():n=e,n}Qk.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=IY(e,n),this._referenceMaximum[n]=IY(t,n)};function sXe(e,t){let n=e.tilePropertyName;if(l(n)){let i=IY(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var EY=[new G(.1,.1,.1,1),new G(.153,.278,.878,1),new G(.827,.231,.49,1),new G(.827,.188,.22,1),new G(1,.592,.259,1),new G(1,.843,0,1)];Qk.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=sXe(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+D.EPSILON7,c=D.clamp(i-o,0,s)/s,u=EY.length-1,f=c*u,h=Math.floor(f),A=Math.ceil(f),g=f-h,m=EY[h],_=EY[A],y=G.clone(G.WHITE);y.red=D.lerp(m.red,_.red,g),y.green=D.lerp(m.green,_.green,g),y.blue=D.lerp(m.blue,_.blue,g),e._debugColor=y};Qk.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var kk=Qk;function ub(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}ub.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};ub.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};ub.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};ub.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};ub.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Um=ub;function yD(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(yD.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});yD.prototype.makeDirty=function(){this._styleDirty=!0};yD.prototype.resetDirty=function(){this._styleDirty=!1};yD.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var Uk=yD;function aXe(e,t,n){let i=Ii(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ii(o,"3DTILES_bounding_volume_S2")&&!Ii(o,"3DTILES_bounding_volume_cylinder"))throw new ce("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new we({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=cXe(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ze(a,!0));let c=new we({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=lXe(t),this.subdivisionScheme=Ts[i.subdivisionScheme],this.branchingFactor=Ts.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function cXe(e){if(Ii(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function lXe(e){let t=ze(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var fb=aXe;var CD={};function pfe(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function xY(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function gfe(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function bY(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}CD.encode2D=function(e,t){return(pfe(e)|pfe(t)<<1)>>>0};CD.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=gfe(e),t[1]=gfe(e>>1),t};CD.encode3D=function(e,t,n){return xY(e)|xY(t)<<1|xY(n)<<2};CD.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=bY(e),t[1]=bY(e>>1),t[2]=bY(e>>2),t};var yE=CD;function $o(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Ts.OCTREE&&(this.z=e.z)}Object.defineProperties($o.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Ts.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Ts.OCTREE?yE.encode3D(this.x,this.y,this.z):yE.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Ts.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});$o.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Ts.OCTREE){let o=(this.z<<e.level)+e.z;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Ts.OCTREE){let r=Math.floor(this.z/t);return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};$o.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Ts.OCTREE){let r=e.z%n;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};$o.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Ts.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};$o.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};$o.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Ts.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};$o.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Ts.OCTREE?this.z===e.z:!0)};$o.prototype.isImplicitTilesetRoot=function(){return this.level===0};$o.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};$o.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};$o.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Ts.OCTREE&&(e.z=this.z),e};var _fe=[0,0,0];$o.fromMortonIndex=function(e,t,n,i){let o;return e===Ts.OCTREE?(o=yE.decode3D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=yE.decode2D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};$o.fromTileIndex=function(e,t,n){let i,o,r;return e===Ts.OCTREE?(i=Math.floor(D.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(D.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),$o.fromMortonIndex(e,t,i,r)};var db=$o;function Tp(){}Tp.selectTiles=function(e,t){me.throwInstantiationError()};Tp.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};Tp.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};Tp.selectTile=function(e,t){if(e.contentVisibility(t)===nn.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};Tp.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};Tp.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};Tp.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!uXe(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function uXe(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}Tp.updateTile=function(e,t){yfe(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,hXe(e),e._shouldSelect=!1,e._finalResolution=!0};function yfe(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];yfe(r,t),e._visible=r._visible;return}if(fXe(e,t)){e._visible=!1;return}let i=e.refine===rr.REPLACE,o=e._optimChildrenWithinParent===rh.USE_OPTIMIZATION;if(i&&o&&n&&!dXe(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function fXe(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==rr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function dXe(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function hXe(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var La=Tp;function Cfe(){}var ED={stack:new kl,stackMaximumLength:0};Cfe.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=La,s=ED.stack;for(s.push(i);s.length>0;){ED.stackMaximumLength=Math.max(ED.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===rr.ADD,u=a.refine===rr.REPLACE,f=mXe(a);f&&AXe(a,s,t),(c||u&&!f)&&(pXe(e,a),o(a,t),gXe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return ED.stack.trim(ED.stackMaximumLength),n};function mXe(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function AXe(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function pXe(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function gXe(e,t){e.contentAvailable&&e.contentVisibility(t)!==nn.OUTSIDE&&e.tileset._selectedTiles.push(e)}var Gk=Cfe;function Efe(){}var ID={stack:new kl,stackMaximumLength:0},xD={stack:new kl,stackMaximumLength:0};Efe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;yXe(n,t),ID.stack.trim(ID.stackMaximumLength),xD.stack.trim(xD.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function TY(e,t){e.contentAvailable&&La.selectTile(e,t)}function _Xe(e,t,n){let i=e.refine===rr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=La;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(La.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,A=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let _=r[m];if(_.isVisible?(t.push(_),_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),h=!0):(u||o.loadSiblings)&&(_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),a(_,n),c(_,n)),u){let y;_._inRequestVolume?_.hasRenderableContent?y=_.contentAvailable:y=CXe(_,n):y=!1,f=f&&y}}if(h||(f=!1),A!==-1&&i){let m=r[A];m._wasMinPriorityChild=!0;let _=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;_._foveatedFactor=Math.min(m._foveatedFactor,_._foveatedFactor),_._distanceToCamera=Math.min(m._distanceToCamera,_._distanceToCamera);for(let y=0;y<r.length;++y)r[y]._priorityHolder=_}return f}function yXe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=La,a=ID.stack;for(a.push(e);a.length>0;){ID.stackMaximumLength=Math.max(ID.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?_Xe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===rr.ADD?(TY(c,t),o(c,t)):c.refine===rr.REPLACE&&(o(c,t),h&&TY(c,t)):(n._emptyTiles.push(c),o(c,t),h&&TY(c,t)),r(c,t),s(c,t)}}function CXe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=La,s=!0,a=xD.stack;for(a.push(e);a.length>0;){xD.stackMaximumLength=Math.max(xD.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let A=0;A<f;++A){let g=u[A];a.push(g)}}return e.hasEmptyContent||s}var zk=Efe;function Ife(){}var bD={stack:new kl,stackMaximumLength:0},TD={stack:new kl,stackMaximumLength:0},Sp={stack:new kl,stackMaximumLength:0,ancestorStack:new kl,ancestorStackMaximumLength:0},EXe=2;Ife.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;wXe(n,t),BXe(n,t),bD.stack.trim(bD.stackMaximumLength),TD.stack.trim(TD.stackMaximumLength),Sp.stack.trim(Sp.stackMaximumLength),Sp.ancestorStack.trim(Sp.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function IXe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=La,r=TD.stack;for(r.push(e);r.length>0;){TD.stackMaximumLength=Math.max(TD.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<EXe&&r.push(u))}}}function Vk(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:IXe(e,t)}function xXe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function bXe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function TXe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=La;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(La.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function SXe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function wXe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=La,c=bD.stack;for(c.push(e);c.length>0;){bD.stackMaximumLength=Math.max(bD.stackMaximumLength,c.length);let u=c.pop();xXe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?TXe(u,c,t)&&h:!1;let A=!u._refines&&h;u.hasRenderableContent?u.refine===rr.ADD?(Vk(u,t),r(u,t)):u.refine===rr.REPLACE&&(SXe(u,i)?(r(u,t),A&&Vk(u,t)):A?(Vk(u,t),r(u,t)):bXe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),A&&Vk(u,t)),s(u,t),a(u,t)}}function BXe(e,t){let{selectTile:n,canTraverse:i}=La,{stack:o,ancestorStack:r}=Sp,s;for(o.push(e);o.length>0||r.length>0;){if(Sp.stackMaximumLength=Math.max(Sp.stackMaximumLength,o.length),Sp.ancestorStackMaximumLength=Math.max(Sp.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===rr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var Hk=Ife;function Ys(){this._layers=[],this.layerAdded=new _e,this.layerRemoved=new _e,this.layerMoved=new _e,this.layerShownOrHidden=new _e}Object.defineProperties(Ys.prototype,{length:{get:function(){return this._layers.length}}});Ys.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};Ys.prototype.addImageryProvider=function(e,t){let n=new ds(e);return this.add(n,t),n};Ys.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};Ys.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};Ys.prototype.contains=function(e){return this.indexOf(e)!==-1};Ys.prototype.indexOf=function(e){return this._layers.indexOf(e)};Ys.prototype.get=function(e){return this._layers[e]};function Wk(e,t){return e.indexOf(t)}function xfe(e,t,n){let i=e._layers;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}Ys.prototype.raise=function(e){let t=Wk(this._layers,e);xfe(this,t,t+1)};Ys.prototype.lower=function(e){let t=Wk(this._layers,e);xfe(this,t,t-1)};Ys.prototype.raiseToTop=function(e){let t=Wk(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};Ys.prototype.lowerToBottom=function(e){let t=Wk(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var DXe=new ae;function bfe(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=DXe,A=1/1024;h.west=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-A),h.east=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+A),h.south=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-A),h.north=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+A),ae.contains(h,t)&&i(u)}}Ys.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(bfe(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};Ys.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(bfe(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let A=u[h];A.imageryLayer=f,l(A.position)||(A.position=i),a.push(A)}}return a})};Ys.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};Ys.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};Ys.prototype.isDestroyed=function(){return!1};Ys.prototype.destroy=function(){return this.removeAll(!0),ue(this)};Ys.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var hb=Ys;function Ho(e){e=e??V.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new Fk,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new kl,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new Uk,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?R.clone(e.modelMatrix):R.clone(R.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Um,this._statisticsLast=new Um,this._statisticsPerPass=new Array(Zo.NUMBER_OF_PASSES);for(let o=0;o<Zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Um;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new kk(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=D.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??te.WGS84,this._initialClippingPlanesOriginMatrix=R.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new hb(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??D.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Dn.ENABLED,this.show=e.show??!0,this.colorBlendMode=Su.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new op(e.pointCloudShading),this._pointCloudEyeDomeLighting=new u_,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e,this.tileLoad=new _e,this.tileUnload=new _e,this.tileFailed=new _e,this.tileVisible=new _e,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Vs.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&xm.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new GI,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new s_(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this.splitDirection=e.splitDirection??wr.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&yt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ho.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Pr("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(R.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):R.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,Rfe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ho.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return Ho.fromUrl(n,t)};Ho.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ho.loadJson(n),r=await vXe(n,o),s=new Ho(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Rfe(s);let c=l(o.asset.gltfUpAxis)?Ao.fromName(o.asset.gltfUpAxis):Ao.Y,u=t.modelUpAxis??c,f=t.modelForwardAxis??Ao.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let A=s._root.createBoundingVolume(o.root.boundingVolume,R.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(A);return l(g)&&g.height>wi._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=kt.eastNorthUpToFixedFrame(A)),s._clippingPlanesOriginMatrix=R.clone(s._initialClippingPlanesOriginMatrix),s};Ho.loadJson=function(e){return we.createIfNeeded(e).fetchJson()};Ho.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ho.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new ce("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new ce("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ho.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Tfe(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===rr.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],A=Tfe(this,e,h,c);c.children.push(A),A._depth=c._depth+1,a.push(A)}this._cullWithChildrenBounds&&Lk.checkChildrenWithinParent(c)}return s};function Tfe(e,t,n,i){if(!(l(n.implicitTiling)||Ii(n,"3DTILES_implicit_tiling")))return new ah(e,t,n,i);let r=e.schema,s=new fb(t,n,r),a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=ze(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new ah(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function vXe(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Qi.getSchemaLoader({resource:e});else if(l(n.schema))i=Qi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new lb({schema:i.schema,metadataJson:n});return Qi.unload(i),o}var Sfe=new d,PXe=new Ae,RXe=new R,MXe=new d,NXe=new d,LXe=new d,OXe=new d;function FXe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof $f)n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let _=R.inverseTransformation(c.computedTransform,RXe),y=t.mapProjection.ellipsoid,C=u.boundingVolume,E=R.multiplyByPoint(_,C.center,MXe);if(d.magnitude(E)>y.minimumRadius){let I=Ae.fromCartesian(E,y,PXe);n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=0,s=I.height*2}else{let I=R.multiplyByPoint(_,a.positionWC,NXe);if(n=d.UNIT_Z,i=R.multiplyByPointAsVector(_,a.directionWC,LXe),i=d.normalize(i,i),o=I.z,u instanceof Lu){let b=J.getColumn(C.halfAxes,2,OXe),S=d.magnitude(b);r=E.z-S,s=E.z+S}else if(u instanceof O_){let b=C.radius;r=E.z-b,s=E.z+b}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,A=s,g=D.clamp((o-h)/(A-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function QXe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Dfe(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?ZXe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function Bfe(e,t){return e._priority-t._priority}Ho.prototype.postPassesUpdate=function(e){l(this._root)&&(kXe(this,e),eJe(this,e),this._cache.unloadTiles(this,Pfe),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ho.prototype.prePassesUpdate=function(e){if(!l(this._root))return;jXe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time)),this._timeSinceLoad=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&FXe(this,e),e.newFrame&&this._cache.reset()};function kXe(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==cr.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function UXe(e){let t=e._requestedTiles;t.sort(Bfe);for(let n=0;n<t.length;++n)QXe(e,t[n])}function Dfe(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function GXe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==cr.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var zXe=new Ae,VXe=new Ae,HXe=new d;function WXe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=Ae.clone(r.positionCartographic,zXe),c=Ae.fromCartesian(o.center,s,VXe);l(c)&&(a.height=c.height);let u=Ae.toCartesian(a,s,HXe);d.distance(u,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function jXe(e,t){GXe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Dfe(f,e,u)}}e.totalMemoryUsageInBytes<i?qXe(e):a&&n.length>0&&YXe(e)}function YXe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(Bfe)}function qXe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var jk=new d,KXe={maximumFractionDigits:3};function wfe(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,KXe):Math.round(t).toLocaleString()}function SY(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,jk);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,jk);r=d.multiplyByScalar(r,.75*n,jk),o=d.add(r,i,jk)}return o}function wY(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=`
|
||
Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=`
|
||
Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=`
|
||
Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=`
|
||
Triangles: ${e.content.trianglesLength}`,o++),i+=`
|
||
Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=`
|
||
Texture Memory: ${wfe(e.content.texturesByteLength)}`,i+=`
|
||
Geometry Memory: ${wfe(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=`
|
||
Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=`
|
||
- ${s[a]}`;o+=s.length}else i+=`
|
||
Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function XXe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:SY(e.debugPickedTile),a=wY(e.debugPickedTile,e,s);a.pixelOffset=new k(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];wY(a,e,SY(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&wY(a,e,SY(a))}}e._tileDebugLabels.update(t)}function JXe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new Ei({stencil:0,pass:Be.CESIUM_3D_TILE,renderState:Ue.fromCache({stencilMask:Kt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let _=s[m];f&&u.raiseEvent(_),WXe(e,_,t),_.update(e,t,n),c.incrementSelectionCounts(_.content),++c.selected}let A=e._emptyTiles;for(let m=0;m<A.length;++m)A[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,_=m.length;i.length+=_;for(let y=g-1;y>=0;--y)i[h+_+y]=i[h+y];for(let y=0;y<_;++y)i[h+y]=m[y]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new Ap),XXe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var vfe=[];function ZXe(e,t){let n=t,i=vfe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&($Xe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function Pfe(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function $Xe(e,t){e._cache.unloadTile(e,t,Pfe),t.destroy()}Ho.prototype.trimLoadedTiles=function(){this._cache.trim()};function eJe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Um.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function tJe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function nJe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!R.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=R.clone(e.modelMatrix,e._previousModelMatrix)))}function iJe(e,t,n,i){if(t.mode===ie.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,tJe(e),nJe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&UXe(e),JXe(e,t,i),Um.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function Rfe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Dt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Dt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ho.prototype.getTraversal=function(e){let{pass:t}=e;return t===Zo.MOST_DETAILED_PRELOAD||t===Zo.MOST_DETAILED_PICK?Gk:this.isSkippingLevelOfDetail?Hk:zk};Ho.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ho.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===Zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===Zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===Zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=Zo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,u=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let A=this._environmentMapManager;l(this._root)&&(A.position=this.boundingSphere.center),A.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=iJe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};Ho.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ho.prototype.isDestroyed=function(){return!1};Ho.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=vfe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,ue(this)};Ho.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ho.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ho.supportedExtensions[e[t]])throw new ce(`Unsupported 3D Tiles Extension: ${e[t]}`)};var oJe=new In,rJe=new d,sJe=new Ae;Ho.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=te.WGS84);let i=oJe,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,rJe);if(l(r))return n.cartesianToCartographic(r,sJe)?.height};Ho.prototype.updateHeight=function(e,t,n){n=n??te.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var aJe=new _c,cJe=new d;Ho.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=Ai.raySphere(e,u.contentBoundingVolume.boundingSphere,aJe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=le.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=le.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,cJe);if(l(f))return a=d.clone(f,n),a}};Ho.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ho.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var qs=Ho;var lJe=new R;function Q_(e,t){t.collectionChanged.addEventListener(Q_.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}Q_.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,lJe),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)));let A=l(u)?u.tilesetPrimitive:void 0;if(!f){l(A)&&(A.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(A)&&i.removeAndDestroy(A),delete n[s.id],uJe(c,n,s,i)),l(A)&&(A.show=!0,l(h)&&(A.modelMatrix=h),A.maximumScreenSpaceError=j.getValueOrDefault(a.maximumScreenSpaceError,e,A.maximumScreenSpaceError))}return!0};Q_.prototype.isDestroyed=function(){return!1};Q_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Q_.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)BY(this,e[i],t,n);return ue(this)};Q_.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return mt.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(le.clone(i.boundingSphere,t),mt.DONE):mt.FAILED:mt.PENDING};Q_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(BY(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],BY(this,r,a,c),s.remove(r.id)};function BY(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function uJe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await qs.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var Yk=Q_;var fJe=G.WHITE,dJe=G.BLACK,hJe=new k(2,2);function mb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(mb.prototype,{isConstant:{get:function(){return j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:de("evenColor"),oddColor:de("oddColor"),repeat:de("repeat")});mb.prototype.getType=function(e){return"Checkerboard"};var mJe=new K;mb.prototype.getValue=function(e,t){return l(e)||(e=K.now(mJe)),l(t)||(t={}),t.lightColor=j.getValueOrClonedDefault(this._evenColor,e,fJe,t.lightColor),t.darkColor=j.getValueOrClonedDefault(this._oddColor,e,dJe,t.darkColor),t.repeat=j.getValueOrDefault(this._repeat,e,hJe),t};mb.prototype.equals=function(e){return this===e||e instanceof mb&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._repeat,e._repeat)};var SD=mb;var Mfe={id:void 0};function wD(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Rc(e){this._owner=e,this._entities=new Pt,this._addedEntities=new Pt,this._removedEntities=new Pt,this._changedEntities=new Pt,this._suspendCount=0,this._collectionChanged=new _e,this._id=Xn(),this._show=!0,this._firing=!1,this._refire=!1}Rc.prototype.suspendEvents=function(){this._suspendCount++};Rc.prototype.resumeEvents=function(){this._suspendCount--,wD(this)};Object.defineProperties(Rc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Rc.prototype.computeAvailability=function(){let e=je.MAXIMUM_VALUE,t=je.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;K.lessThan(a,e)&&!a.equals(je.MINIMUM_VALUE)&&(e=a),K.greaterThan(c,t)&&!c.equals(je.MAXIMUM_VALUE)&&(t=c)}}return je.MAXIMUM_VALUE.equals(e)&&(e=je.MINIMUM_VALUE),je.MINIMUM_VALUE.equals(t)&&(t=je.MAXIMUM_VALUE),new Rn({start:e,stop:t})};Rc.prototype.add=function(e){e instanceof _r||(e=new _r(e));let t=e.id,n=this._entities;if(n.contains(t))throw new me(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),e};Rc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Rc.prototype.contains=function(e){return this._entities.get(e.id)===e};Rc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),!0):!1};Rc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),wD(this)};Rc.prototype.getById=function(e){return this._entities.get(e)};Rc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(Mfe.id=e,t=new _r(Mfe),this.add(t)),t};Rc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),wD(this)};var Oa=Rc;var qk={id:void 0},Ab=new Array(2);function DY(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function Nfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id,t[JSON.stringify(Ab)]=i.definitionChanged.addEventListener(es.prototype._onDefinitionChanged,e)}function Lfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id;let o=JSON.stringify(Ab);t[o](),t[o]=void 0}function k_(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new Oa(e),A=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],Lfe(e,A,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],Nfe(e,A,g,s);let _=h.getById(s.id);l(_)||(_=f.getById(s.id),l(_)?DY(_):(qk.id=s.id,_=new _r(qk)),h.add(_)),_.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function es(e,t){this._owner=t,this._composite=new Oa(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Xn(),this._eventHash={},k_(this),this._shouldRecomposite=!1}Object.defineProperties(es.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});es.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),k_(this)};es.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),k_(this),!0):!1};es.prototype.removeAllCollections=function(){this._collections.length=0,k_(this)};es.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};es.prototype.contains=function(e){return this._composite.contains(e)};es.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};es.prototype.getCollection=function(e){return this._collections[e]};es.prototype.getCollectionsLength=function(){return this._collections.length};function Kk(e,t){return e.indexOf(t)}function Ofe(e,t,n){let i=e._collections;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,k_(e)}es.prototype.raiseCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t+1)};es.prototype.lowerCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t-1)};es.prototype.raiseCollectionToTop=function(e){let t=Kk(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),k_(this))};es.prototype.lowerCollectionToBottom=function(e){let t=Kk(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),k_(this))};es.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};es.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(k_(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};es.prototype.computeAvailability=function(){return this._composite.computeAvailability()};es.prototype.getById=function(e){return this._composite.getById(e)};es.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,A=e.id;for(s=0;s<f;s++){let m=n[s];Lfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),DY(u)),u.merge(c));l(u)||r.removeById(_),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];Nfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),l(u)?DY(u):(qk.id=_,u=new _r(qk),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};es.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let A=s-1;A>=0;A--){let g=o[A].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var Ffe=es;function vY(){this._removalFunctions=[]}vY.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};vY.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Lr=vY;function MY(e,t){return K.compare(e.start,t.start)}function ts(e){if(this._intervals=[],this._changedEvent=new _e,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(ts.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});ts.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof ts))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!Rn.equals(n[r],i[r],t))return!1;return!0};ts.prototype.get=function(e){return this._intervals[e]};ts.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};ts.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};ts.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};ts.prototype.contains=function(e){return this.indexOf(e)>=0};var PY=new Rn;ts.prototype.indexOf=function(e){let t=this._intervals;PY.start=e,PY.stop=e;let n=qo(t,PY,MY);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&Rn.contains(t[n-1],e)?n-1:~n)};ts.prototype.findInterval=function(e){e=e??V.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};ts.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||K.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=qo(n,e,MY);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=K.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(K.greaterThan(e.stop,n[i-1].stop)?e=new Rn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new Rn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=K.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new Rn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new Rn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=K.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new Rn({start:e.start,stop:K.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:K.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new Rn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};ts.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=qo(t,e,MY);n<0&&(n=~n);let i=!1;for(n>0&&(K.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(K.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new Rn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new Rn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new Rn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&K.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new Rn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new Rn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(K.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new Rn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};ts.prototype.intersect=function(e,t,n){let i=new ts,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if(K.lessThan(c.stop,u.start))++o;else if(K.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=Rn.intersect(c,u,new Rn,n);f.isEmpty||i.addInterval(f,t)}K.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};ts.fromJulianDateArray=function(e,t){l(t)||(t=new ts);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,u,f=0;a&&(++f,u=new Rn({start:je.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let A=n[h],g=n[h+1];u=new Rn({start:A,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),A=g}return c&&(u=new Rn({start:n[i-1],stop:je.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var Mc=new dg,BD=[0,31,28,31,30,31,30,31,31,30,31,30,31];function RY(e,t,n){l(n)||(n=new K),K.toGregorianDate(e,Mc);let i=Mc.millisecond+t.millisecond,o=Mc.second+t.second,r=Mc.minute+t.minute,s=Mc.hour+t.hour,a=Mc.day+t.day,c=Mc.month+t.month,u=Mc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),BD[2]=Yh(u)?29:28;a>BD[c]||c>=13;)a>BD[c]&&(a-=BD[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),BD[2]=Yh(u)?29:28;return Mc.millisecond=i,Mc.second=o,Mc.minute=r,Mc.hour=s,Mc.day=a,Mc.month=c,Mc.year=u,K.fromGregorianDate(Mc,n)}var AJe=new K,pJe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function Qfe(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(pJe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),K.toGregorianDate(K.fromIso8601(e,AJe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var DD=new dg;ts.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=[];if(!Qfe(n[2],DD))r.push(i,o);else{let s=K.clone(i);for(r.push(s);K.compare(s,o)<0;)s=RY(s,DD),K.compare(o,s)<=0&&K.clone(o,s),r.push(s)}return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DateArray=function(e,t){return ts.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return K.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let u=0;u<c;++u)(Qfe(i[u],DD)||u===0)&&(o&&l(a)?s=RY(a,DD):s=RY(n,DD),r.push(s),a=s);return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var hs=ts;function gJe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function CE(){this._eventHelper=new Lr,this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(CE.prototype._intervalsChanged,this)}Object.defineProperties(CE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var _Je=new K;CE.prototype.getValue=function(e,t){l(e)||(e=K.now(_Je));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};CE.prototype.equals=function(e){return this===e||e instanceof CE&&this._intervals.equals(e._intervals,j.equals)};CE.prototype._intervalsChanged=function(){gJe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var ml=CE;function U_(){this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(U_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(U_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});U_.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var yJe=new K;U_.prototype.getValue=function(e,t){l(e)||(e=K.now(yJe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};U_.prototype.equals=function(e){return this===e||e instanceof U_&&this._composite.equals(e._composite,j.equals)};U_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var vD=U_;function G_(e){this._referenceFrame=e??eo.FIXED,this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(G_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(G_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var CJe=new K;G_.prototype.getValue=function(e,t){return l(e)||(e=K.now(CJe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};G_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};G_.prototype.equals=function(e){return this===e||e instanceof G_&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,j.equals)};G_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var nc=G_;var EJe={ROUNDED:0,MITERED:1,BEVELED:2},Ji=Object.freeze(EJe);var Fa=[new d,new d],IJe=new d,xJe=new d,bJe=new d,TJe=new d,SJe=new d,wJe=new d,BJe=new d,DJe=new d,vJe=new d,pb=new d,Xk=new d,PD={},NY=new Ae;function PJe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];NY=t.cartesianToCartographic(o,NY),n[i]=NY.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function LY(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let A=t+u*h;c[u]=A}return c[0]=t,c.push(n),c}var Jk=new d,Zk=new d;function RJe(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk),a=k.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var MJe=new d(-1,0,0),EE=new R,NJe=new R,OY=new J,LJe=J.IDENTITY.clone(),OJe=new d,FJe=new se,kfe=new d;function wp(e,t,n,i,o,r,s,a){let c=OJe,u=FJe;EE=kt.eastNorthUpToFixedFrame(e,o,EE),c=R.multiplyByPointAsVector(EE,MJe,c),c=d.normalize(c,c);let f=RJe(c,t,e,o);OY=J.fromRotationZ(f,OY),kfe.z=r,EE=R.multiplyTransformation(EE,R.fromRotationTranslation(OY,kfe,NJe),EE);let h=LJe;h[0]=s;for(let A=0;A<a;A++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=J.multiplyByVector(h,u,u),u=R.multiplyByPoint(EE,u,u),i.push(u.x,u.y,u.z);return i}var QJe=new d;function FY(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,QJe);i=wp(c,t,n,i,o,r[a/3],s,1)}return i}function kJe(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function Ufe(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var Gfe=new Le,zfe=new d,Vfe=new J;function Hfe(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,pb),d.subtract(n,e,Xk)),h=i===Ji.BEVELED?0:Math.ceil(f/D.toRadians(5)),A;o?A=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,pb),f/(h+1),Gfe),Vfe):A=J.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),Gfe),Vfe);let g,m;if(t=d.clone(t,zfe),h>0){let _=u?2:1;for(let y=0;y<h;y++)t=J.multiplyByVector(A,t,t),g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,_)}else g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,1),n=d.clone(n,zfe),g=d.subtract(n,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,Xk),s=wp(m,g,a,s,r,c,1,1);return s}PD.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];k.equals(r,s)||n.push(s)}return n};PD.angleIsGreaterThanPi=function(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk);return s.x*r.y-s.y*r.x>=0};var UJe=new d,GJe=new d;PD.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=PJe(e,r),a=i._granularity,c=i._cornerType,u=o?kJe(t,n):Ufe(t,n),f=o?Ufe(t,n):void 0,h=n.height/2,A=n.width/2,g=e.length,m=[],_=o?[]:void 0,y=IJe,C=xJe,E=bJe,I=TJe,b=SJe,S=wJe,B=BJe,v=DJe,P=vJe,N=e[0],L=e[1];I=r.geodeticSurfaceNormal(N,I),y=d.subtract(L,N,y),y=d.normalize(y,y),v=d.cross(I,y,v),v=d.normalize(v,v);let p=s[0],x=s[1];o&&(_=wp(N,v,f,_,r,p+h,1,1)),P=d.clone(N,P),N=L,C=d.negate(y,C);let T,w;for(let U=1;U<g-1;U++){let Q=o?2:1;if(L=e[U+1],N.equals(L)){yt("Positions are too close and are considered equivalent with rounding error.");continue}y=d.subtract(L,N,y),y=d.normalize(y,y),I=r.geodeticSurfaceNormal(N,I);let z=d.multiplyByScalar(I,d.dot(y,I),UJe);d.subtract(y,z,z),d.normalize(z,z);let F=d.multiplyByScalar(I,d.dot(C,I),GJe);if(d.subtract(C,F,F),d.normalize(F,F),!D.equalsEpsilon(Math.abs(d.dot(z,F)),1,D.EPSILON7)){E=d.add(y,C,E),E=d.normalize(E,E),E=d.cross(E,I,E),E=d.cross(I,E,E),E=d.normalize(E,E);let W=1/Math.max(.25,d.magnitude(d.cross(E,C,pb))),Z=PD.angleIsGreaterThanPi(y,C,N,r);Z?(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):(E=d.negate(E,E),m=wp(N,E,u,m,r,x+h,W,Q)),P=d.clone(B,P)):(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,-A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,-A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):m=wp(N,E,u,m,r,x+h,W,Q),P=d.clone(B,P)),C=d.negate(y,C)}else m=wp(P,v,u,m,r,p+h,1,1),P=N;p=x,x=s[U+1],N=L}Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(N,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),o&&(_=wp(N,v,f,_,r,x+h,1,1)),g=m.length;let M=o?g+_.length:g,O=new Float64Array(M);return O.set(m),o&&O.set(_,g),O};var Gm=PD;var kY={},gb=new d,Kfe=new d,zJe=new d,Wfe=new d,Al=[new d,new d],Xfe=new d,Jfe=new d,Zfe=new d,VJe=new d,HJe=new d,WJe=new d,jJe=new d,YJe=new d,qJe=new d,KJe=new d,jfe=new Le,Yfe=new J;function $k(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,gb),d.subtract(n,e,Kfe)),s=i===Ji.BEVELED?1:Math.ceil(r/D.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,gb),r/s,jfe),Yfe):u=J.fromQuaternion(Le.fromAxisAngle(e,r/s,jfe),Yfe);let f=0;t=d.clone(t,gb);for(let h=0;h<s;h++)t=J.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function XJe(e){let t=Xfe,n=Jfe,i=Zfe,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=$k(t,n,i,Ji.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=$k(t,n,i,Ji.ROUNDED,!1);return[r,c]}function qfe(e,t,n,i){let o=gb;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function QY(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,gb),a=d.negate(s,Kfe),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,zJe),A=d.add(h,a,Wfe);o[c++]=A.x,o[c++]=A.y,o[c++]=A.z;let g=d.add(h,s,Wfe);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}kY.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var JJe=new d,ZJe=new d;kY.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=Xfe,c=Jfe,u=Zfe,f=VJe,h=HJe,A=WJe,g=jJe,m=YJe,_=qJe,y=KJe,C=[],E=s?[]:void 0,I=s?[]:void 0,b=n[0],S=n[1];c=d.normalize(d.subtract(S,b,c),c),a=i.geodeticSurfaceNormal(b,a),f=d.normalize(d.cross(a,c,f),f),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),g=d.clone(b,g),b=S,u=d.negate(c,u);let B,v=[],P,N=n.length;for(P=1;P<N-1;P++){a=i.geodeticSurfaceNormal(b,a),S=n[P+1],c=d.normalize(d.subtract(S,b,c),c);let p=d.multiplyByScalar(a,d.dot(c,a),JJe);d.subtract(c,p,p),d.normalize(p,p);let x=d.multiplyByScalar(a,d.dot(u,a),ZJe);if(d.subtract(u,x,x),d.normalize(x,x),!D.equalsEpsilon(Math.abs(d.dot(p,x)),1,D.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let w=o/Math.max(.25,d.magnitude(d.cross(h,u,gb))),M=Gm.angleIsGreaterThanPi(c,u,b,i);h=d.multiplyByScalar(h,w,h),M?(m=d.add(b,h,m),y=d.add(m,d.multiplyByScalar(f,o,y),y),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(_,A),f=d.normalize(d.cross(a,c,f),f),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({leftPositions:$k(m,A,_,r,M)}):v.push({leftPositions:qfe(b,d.negate(h,h),_,M)})):(_=d.add(b,h,_),y=d.add(_,d.negate(d.multiplyByScalar(f,o,y),y),y),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(m,A),f=d.normalize(d.cross(a,c,f),f),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(_,d.negate(d.multiplyByScalar(f,o,g),g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({rightPositions:$k(_,A,m,r,M)}):v.push({rightPositions:qfe(b,h,m,M)})),u=d.negate(c,u)}b=S}a=i.geodeticSurfaceNormal(b,a),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(b,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z));let L;return r===Ji.ROUNDED&&(L=XJe(C)),{positions:C,corners:v,lefts:E,normals:I,endPositions:L}};var no=kY;var tde=new d,nde=new d,e3=new d,t3=new d,$Je=new d,ide=new d,z_=new d,_b=new d;function ode(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function ch(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,z_),z_);r.normal&&no.addAttribute(s,t,i,o),r.tangent&&no.addAttribute(a,u,i,o),r.bitangent&&no.addAttribute(c,n,i,o)}function rde(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new En,u,f=0,h=0,A,g=0,m;for(A=0;A<i.length;A+=2)m=i[A].length-3,f+=m,g+=m*2,h+=i[A+1].length-3;for(f+=3,h+=3,A=0;A<o.length;A++){u=o[A];let X=o[A].leftPositions;l(X)?(m=X.length,f+=m,g+=m):(m=o[A].rightPositions.length,h+=m,g+=m)}let _=l(r),y;_&&(y=r[0].length-3,f+=y,h+=y,y/=3,g+=y*6);let C=f+h,E=new Float64Array(C),I=t.normal?new Float32Array(C):void 0,b=t.tangent?new Float32Array(C):void 0,S=t.bitangent?new Float32Array(C):void 0,B={normals:I,tangents:b,bitangents:S},v=0,P=C-1,N,L,p,x,T=tde,w=nde,M,O,U=y/2,Q=Fe.createTypedArray(C/3,g),z=0;if(_){O=e3,M=t3;let X=r[0];for(T=d.fromArray(a,0,T),w=d.fromArray(s,0,w),A=0;A<U;A++)O=d.fromArray(X,(U-1-A)*3,O),M=d.fromArray(X,(U+A)*3,M),no.addAttribute(E,M,v),no.addAttribute(E,O,void 0,P),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}let F=0,H=0,W=i[F++],Z=i[F++];E.set(W,v),E.set(Z,P-Z.length+1),w=d.fromArray(s,H,w);let Y,$;for(m=Z.length-3,A=0;A<m;A+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,A,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-A,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;for(Y=n.geodeticSurfaceNormal(d.fromArray(W,m,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m,_b),_b),T=d.normalize(d.add(Y,$,T),T),H+=3,A=0;A<o.length;A++){let X;u=o[A];let he=u.leftPositions,ge=u.rightPositions,fe,ye,Ie=ide,ve=e3,Te=t3;if(T=d.fromArray(a,H,T),l(he)){for(ch(B,T,w,void 0,P,t),P-=3,fe=x,ye=p,X=0;X<he.length/3;X++)Ie=d.fromArray(he,X*3,Ie),Q[z++]=fe,Q[z++]=ye-X-1,Q[z++]=ye-X,no.addAttribute(E,Ie,void 0,P),ve=d.fromArray(E,(ye-X-1)*3,ve),Te=d.fromArray(E,fe*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,void 0,P,t),P-=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,ye*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,(ye-X)*3,Te),Ie,Te),w=d.normalize(d.add(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3}else{for(ch(B,T,w,v,void 0,t),v+=3,fe=p,ye=x,X=0;X<ge.length/3;X++)Ie=d.fromArray(ge,X*3,Ie),Q[z++]=fe,Q[z++]=ye+X,Q[z++]=ye+X+1,no.addAttribute(E,Ie,v),ve=d.fromArray(E,fe*3,ve),Te=d.fromArray(E,(ye+X)*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,(ye+X)*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,ye*3,Te),Ie,Te),w=d.normalize(d.negate(d.add(Te,ve,w),w),w),ch(B,T,w,void 0,P,t),P-=3}for(W=i[F++],Z=i[F++],W.splice(0,3),Z.splice(Z.length-3,3),E.set(W,v),E.set(Z,P-Z.length+1),m=Z.length-3,H+=3,w=d.fromArray(s,H,w),X=0;X<Z.length;X+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,X,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-X,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;v-=3,P+=3}if(T=d.fromArray(a,a.length-3,T),ch(B,T,w,v,P,t),_){v+=3,P-=3,O=e3,M=t3;let X=r[1];for(A=0;A<U;A++)O=d.fromArray(X,(y-A-1)*3,O),M=d.fromArray(X,A*3,M),no.addAttribute(E,O,void 0,P),no.addAttribute(E,M,v),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}if(c.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:E}),t.st){let X=new Float32Array(C/3*2),he,ge,fe=0;if(_){f/=3,h/=3;let ye=Math.PI/(y+1);ge=1/(f-y+1),he=1/(h-y+1);let Ie,ve=y/2;for(A=ve+1;A<y+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=1;A<h-y+1;A++)X[fe++]=A*he,X[fe++]=0;for(A=y;A>ve;A--)Ie=D.PI_OVER_TWO-A*ye,X[fe++]=1-he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=ve;A>0;A--)Ie=D.PI_OVER_TWO-ye*A,X[fe++]=1-ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=f-y;A>0;A--)X[fe++]=A*ge,X[fe++]=1;for(A=1;A<ve+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie))}else{for(f/=3,h/=3,ge=1/(f-1),he=1/(h-1),A=0;A<h;A++)X[fe++]=A*he,X[fe++]=0;for(A=f;A>0;A--)X[fe++]=(A-1)*ge,X[fe++]=1}c.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:X})}return t.normal&&(c.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.normals})),t.tangent&&(c.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.tangents})),t.bitangent&&(c.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.bitangents})),{attributes:c,indices:Q}}function eZe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,A=t.bitangent?new Float32Array(s*6):void 0,g=tde,m=nde,_=e3,y=t3,C=$Je,E=ide,I=c;for(u=0;u<s;u+=3){let b=I+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),_=d.fromArray(n,(u+3)%s,_),m=d.subtract(m,g,m),_=d.subtract(_,g,_),y=d.normalize(d.cross(m,_,y),y),t.normal&&(no.addAttribute(f,y,b),no.addAttribute(f,y,b+3),no.addAttribute(f,y,I),no.addAttribute(f,y,I+3)),(t.tangent||t.bitangent)&&(E=d.fromArray(i,u,E),t.bitangent&&(no.addAttribute(A,E,b),no.addAttribute(A,E,b+3),no.addAttribute(A,E,I),no.addAttribute(A,E,I+3)),t.tangent&&(C=d.normalize(d.cross(E,y,C),C),no.addAttribute(h,C,b),no.addAttribute(h,C,b+3),no.addAttribute(h,C,I),no.addAttribute(h,C,I+3))),I+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(A.set(o),A.set(o,s),e.bitangent.values=A):e.bitangent=void 0,t.tangent){let b=e.tangent.values;h.set(b),h.set(b,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let A=a*2;for(let g=0;g<2;g++){for(h[A++]=f[0],h[A++]=f[1],u=2;u<a;u+=2){let m=f[u],_=f[u+1];h[A++]=m,h[A++]=_,h[A++]=m,h[A++]=_}h[A++]=f[0],h[A++]=f[1]}e.st.values=h}return e}function UY(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function tZe(e,t){let n=new Pe({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=no.computePositions(e),r=rde(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,A=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=xi.scaleToGeodeticHeight(f,s,i),m=UY(f,0,m),g=xi.scaleToGeodeticHeight(g,a,i),m=UY(g,h*2,m),A.set(f),A.set(g,h),A.set(m,h*2),c.position.values=A,c=eZe(c,t);let _,y=h/3;if(e.shadowVolume){let N=c.normal.values;h=N.length;let L=new Float32Array(h*6);for(_=0;_<h;_++)N[_]=-N[_];L.set(N,h),L=UY(N,h*4,L),c.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:L}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let N=new Uint8Array(y*6);if(e.offsetAttribute===hn.TOP)N=N.fill(1,0,y).fill(1,y*2,y*4);else{let L=e.offsetAttribute===hn.NONE?0:1;N=N.fill(L)}c.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:N})}let C=u.length,E=y+y,I=Fe.createTypedArray(A.length/3,C*2+E*3);I.set(u);let b=C;for(_=0;_<C;_+=3){let N=u[_],L=u[_+1],p=u[_+2];I[b++]=p+y,I[b++]=L+y,I[b++]=N+y}let S,B,v,P;for(_=0;_<E;_+=2)S=_+E,B=S+E,v=S+1,P=B+1,I[b++]=S,I[b++]=B,I[b++]=v,I[b++]=v,I[b++]=B,I[b++]=P;return{attributes:c,indices:I}}var $fe=new d,RD=new d,nd=new Ae;function ede(e,t,n,i,o,r){let s=d.subtract(t,e,$fe);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,RD),c=d.cross(s,a,$fe);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,A=r.longitude;d.add(e,c,RD),n.cartesianToCartographic(RD,nd);let g=nd.latitude,m=nd.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),d.subtract(e,c,RD),n.cartesianToCartographic(RD,nd),g=nd.latitude,m=nd.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=A}var td=new d,MD=new d,nu=new Ae,iu=new Ae;function sde(e,t,n,i,o){e=ode(e,t);let r=No(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;nu.latitude=Number.POSITIVE_INFINITY,nu.longitude=Number.POSITIVE_INFINITY,iu.latitude=Number.NEGATIVE_INFINITY,iu.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===Ji.ROUNDED){let A=r[0];d.subtract(A,r[1],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(A,td,MD),t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u)}for(let A=0;A<s-1;++A)ede(r[A],r[A+1],t,a,nu,iu);let f=r[s-1];d.subtract(f,r[s-2],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(f,td,MD),ede(f,MD,t,a,nu,iu),i===Ji.ROUNDED&&(t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u));let h=l(o)?o:new ae;return h.north=iu.latitude,h.south=nu.latitude,h.east=iu.longitude,h.west=nu.longitude,h}function Dp(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+te.packedLength+Pe.packedLength+7}Dp.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var ade=te.clone(te.UNIT_SPHERE),cde=new Pe,Bp={positions:void 0,ellipsoid:ade,vertexFormat:cde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Dp.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=te.unpack(e,t,ade);t+=te.packedLength;let s=Pe.unpack(e,t,cde);t+=Pe.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._vertexFormat=Pe.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=A,n._offsetAttribute=g===-1?void 0:g,n):(Bp.positions=o,Bp.width=a,Bp.height=c,Bp.extrudedHeight=u,Bp.cornerType=f,Bp.granularity=h,Bp.shadowVolume=A,Bp.offsetAttribute=g===-1?void 0:g,new Dp(Bp))};Dp.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??te.default,r=e.cornerType??Ji.ROUNDED;return sde(n,o,i,r,t)};Dp.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=ode(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=tZe(u,c);else{let g=no.computePositions(u);if(f=rde(g,c,i),f.attributes.position.values=xi.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===hn.NONE?0:1,_=f.attributes.position.values.length,y=new Uint8Array(_/3).fill(m);f.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}}let h=f.attributes,A=le.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ht({attributes:h,indices:f.indices,primitiveType:Me.TRIANGLES,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Dp.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Dp({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Dp.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=sde(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var yb=Dp;var lde=new d,ude=new d,nZe=new d;function iZe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function fde(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new En,a,c=0,u=0,f,h=0,A;for(f=0;f<i.length;f+=2)A=i[f].length-3,c+=A,h+=A/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let M=o[f].leftPositions;l(M)?(A=M.length,c+=A,h+=A/3*2):(A=o[f].rightPositions.length,u+=A,h+=A/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let _=c+u,y=new Float64Array(_),C=0,E=_-1,I,b,S,B,v,P,N=m/2,L=Fe.createTypedArray(_/3,h+4),p=0;if(L[p++]=C/3,L[p++]=(E-2)/3,g){n.push(C/3),P=lde,v=ude;let M=r[0];for(f=0;f<N;f++)P=d.fromArray(M,(N-1-f)*3,P),v=d.fromArray(M,(N+f)*3,v),no.addAttribute(y,v,C),no.addAttribute(y,P,void 0,E),b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3}let x=0,T=i[x++],w=i[x++];for(y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,n.push(C/3,(E-2)/3),f=0;f<A;f+=3)b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;for(f=0;f<o.length;f++){let M;a=o[f];let O=a.leftPositions,U=a.rightPositions,Q,z=nZe;if(l(O)){for(E-=3,Q=S,n.push(B),M=0;M<O.length/3;M++)z=d.fromArray(O,M*3,z),L[p++]=Q-M-1,L[p++]=Q-M,no.addAttribute(y,z,void 0,E),E-=3;n.push(Q-Math.floor(O.length/6)),t===Ji.BEVELED&&n.push((E-2)/3+1),C+=3}else{for(C+=3,Q=B,n.push(S),M=0;M<U.length/3;M++)z=d.fromArray(U,M*3,z),L[p++]=Q+M,L[p++]=Q+M+1,no.addAttribute(y,z,C),C+=3;n.push(Q+Math.floor(U.length/6)),t===Ji.BEVELED&&n.push(C/3-1),E-=3}for(T=i[x++],w=i[x++],T.splice(0,3),w.splice(w.length-3,3),y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,M=0;M<w.length;M+=3)B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;C-=3,E+=3,n.push(C/3,(E-2)/3)}if(g){C+=3,E-=3,P=lde,v=ude;let M=r[1];for(f=0;f<N;f++)P=d.fromArray(M,(m-f-1)*3,P),v=d.fromArray(M,f*3,v),no.addAttribute(y,P,void 0,E),no.addAttribute(y,v,C),B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;n.push(C/3)}else n.push(C/3,(E-2)/3);return L[p++]=C/3,L[p++]=(E-2)/3,s.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),{attributes:s,indices:L,wallIndices:n}}function oZe(e){let t=e.ellipsoid,n=no.computePositions(e),i=fde(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let A=new Float64Array(f*2);if(u=xi.scaleToGeodeticHeight(u,r,t),h=xi.scaleToGeodeticHeight(h,s,t),A.set(u),A.set(h,f),a.position.values=A,f/=3,l(e.offsetAttribute)){let I=new Uint8Array(f*2);if(e.offsetAttribute===hn.TOP)I=I.fill(1,0,f);else{let b=e.offsetAttribute===hn.NONE?0:1;I=I.fill(b)}a.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}let g,m=c.length,_=Fe.createTypedArray(A.length/3,(m+o.length)*2);_.set(c);let y=m;for(g=0;g<m;g+=2){let I=c[g],b=c[g+1];_[y++]=I+f,_[y++]=b+f}let C,E;for(g=0;g<o.length;g++)C=o[g],E=C+f,_[y++]=C,_[y++]=E;return{attributes:a,indices:_}}function ND(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+te.packedLength+6}ND.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var dde=te.clone(te.UNIT_SPHERE),V_={positions:void 0,ellipsoid:dde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};ND.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let A=0;A<i;++A,t+=d.packedLength)o[A]=d.unpack(e,t);let r=te.unpack(e,t,dde);t+=te.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(V_.positions=o,V_.width=s,V_.height=a,V_.extrudedHeight=c,V_.cornerType=u,V_.granularity=f,V_.offsetAttribute=h===-1?void 0:h,new ND(V_))};ND.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=iZe(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=oZe(c);else{let A=no.computePositions(c);if(u=fde(A,c.cornerType),u.attributes.position.values=xi.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}}let f=u.attributes,h=le.fromVertices(f.position.values,void 0,3);return new ht({attributes:f,indices:u.indices,primitiveType:Me.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var n3=ND;var rZe=new ci(0);function pl(e){Ci.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(pl.prototype=Object.create(Ci.prototype),pl.prototype.constructor=pl);Object.defineProperties(pl.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pl.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&Ll.isSupported(this._scene)};pl.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};pl.prototype._computeCenter=me.throwInstantiationError;pl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&yt(yt.geometryZIndex),this._zIndex=o.zIndex??rZe,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,a,r,s)}};pl.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),Ci.prototype.destroy.call(this)};pl.getGeometryHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryHeightReference);return}return _f(t)?0:e};pl.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryExtrudedHeightReference);return}return _f(t)?pl.CLAMP_TO_GROUND:e};pl.CLAMP_TO_GROUND="clamp";pl.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=Ze.NONE),(!l(n)||!l(i))&&(i=Ze.NONE);let o=0;if(t!==Ze.NONE&&o++,i===Ze.RELATIVE_TO_GROUND&&o++,o===2)return hn.ALL;if(o===1)return hn.TOP};var ti=pl;var hde=new G,mde=d.ZERO,Ade=new d,pde=new ae;function sZe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function lh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new sZe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(lh.prototype=Object.create(ti.prototype),lh.prototype.constructor=lh);lh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,hde)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new yb(this._options),attributes:i})};lh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hde),o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new n3(this._options),attributes:o})};lh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};lh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||Ci.prototype._isHidden.call(this,e,t)};lh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.width)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};lh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.cornerType=j.getValueOrUndefined(t.cornerType,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(yb.computeRectangle(s,pde)).minimumTerrainHeight),s.extrudedHeight=o};lh.DynamicGeometryUpdater=Cb;function Cb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Cb.prototype=Object.create(yi.prototype),Cb.prototype.constructor=Cb);Cb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||yi.prototype._isHidden.call(this,e,t,n)};Cb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.positions=j.getValueOrUndefined(t.positions,n),i.width=j.getValueOrUndefined(t.width,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(yb.computeRectangle(i,pde)).minimumTerrainHeight),i.extrudedHeight=s};var i3=lh;function o3(){me.throwInstantiationError()}Object.defineProperties(o3.prototype,{name:{get:me.throwInstantiationError},clock:{get:me.throwInstantiationError},entities:{get:me.throwInstantiationError},isLoading:{get:me.throwInstantiationError},changedEvent:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},loadingEvent:{get:me.throwInstantiationError},show:{get:me.throwInstantiationError},clustering:{get:me.throwInstantiationError}});o3.prototype.update=function(e){me.throwInstantiationError()};o3.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var ms=o3;function zm(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(zm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var gde=new d;zm.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,gde);return zY(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};zm.prototype.isScaledSpacePointVisible=function(e){return zY(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var aZe=new d;zm.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=aZe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),zY(e,o,i)};zm.prototype.computeHorizonCullingPoint=function(e,t,n){return Cde(this._ellipsoid,e,t,n)};var _de=te.clone(te.UNIT_SPHERE);zm.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=yde(this._ellipsoid,n,_de);return Cde(o,e,t,i)};zm.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Ede(this._ellipsoid,e,t,n,i,o)};zm.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=yde(this._ellipsoid,o,_de);return Ede(s,e,t,n,i,r)};var cZe=[];zm.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,cZe),o=le.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var lZe=new d;function yde(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,lZe);e=te.fromCartesian3(i,n)}return e}function Cde(e,t,n,i){l(i)||(i=new d);let o=bde(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=Ide(e,c,o);if(u<0)return;r=Math.max(r,u)}return xde(o,r,i)}var r3=new d;function Ede(e,t,n,i,o,r){l(r)||(r=new d),i=i??3,o=o??d.ZERO;let s=bde(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){r3.x=n[c]+o.x,r3.y=n[c+1]+o.y,r3.z=n[c+2]+o.z;let f=Ide(e,r3,s);if(f<0)return;a=Math.max(a,f)}return xde(s,a,r)}function zY(e,t,n){let i=t,o=n,r=d.subtract(e,i,gde),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var uZe=new d,fZe=new d;function Ide(e,t,n){let i=e.transformPositionToScaledSpace(t,uZe),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,fZe);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function xde(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var GY=new d;function bde(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,GY),d.normalize(GY,GY))}var H_=zm;function Or(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Ut.clone(o)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._color=G.clone(e.color??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??wr.NONE}var Tde=Or.SHOW_INDEX=0,Bde=Or.POSITION_INDEX=1,dZe=Or.COLOR_INDEX=2,hZe=Or.OUTLINE_COLOR_INDEX=3,mZe=Or.OUTLINE_WIDTH_INDEX=4,AZe=Or.PIXEL_SIZE_INDEX=5,pZe=Or.SCALE_BY_DISTANCE_INDEX=6,gZe=Or.TRANSLUCENCY_BY_DISTANCE_INDEX=7,_Ze=Or.DISTANCE_DISPLAY_CONDITION_INDEX=8,yZe=Or.DISABLE_DEPTH_DISTANCE_INDEX=9,CZe=Or.SPLIT_DIRECTION_INDEX=10;Or.NUMBER_OF_PROPERTIES=11;function Ou(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Or.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,Ou(this,Tde))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),Ou(this,Bde))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),Ou(this,pZe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),Ou(this,gZe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,Ou(this,AZe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),Ou(this,dZe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),Ou(this,hZe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,Ou(this,mZe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),Ou(this,_Ze))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,Ou(this,yZe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,Ou(this,Tde))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,Ou(this,CZe))}}});Or.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Or.prototype._getActualPosition=function(){return this._actualPosition};Or.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),Ou(this,Bde)};var Sde=new se;Or._computeActualPosition=function(e,t,n){return t.mode===ie.SCENE3D?e:(R.multiplyByPoint(n,e,Sde),to.computeActualEllipsoidPosition(t,Sde))};var wde=new se;Or._computeScreenSpacePosition=function(e,t,n,i){let o=R.multiplyByVector(e,se.fromElements(t.x,t.y,t.z,1,wde),wde);return to.worldToWindowCoordinates(n,o,i)};Or.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new k);let i=n.modelMatrix,o=Or._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Or.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Xe),n.x=r,n.y=s,n.width=a,n.height=c,n};Or.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&G.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&G.equals(this._outlineColor,e._outlineColor)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Or.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var ha=Or;var IE=`in vec4 v_color;
|
||
in vec4 v_outlineColor;
|
||
in float v_innerPercent;
|
||
in float v_pixelDistance;
|
||
in vec4 v_pickColor;
|
||
in float v_splitDirection;
|
||
|
||
void main()
|
||
{
|
||
if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
|
||
if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
|
||
|
||
// The distance in UV space from this fragment to the center of the point, at most 0.5.
|
||
float distanceToCenter = length(gl_PointCoord - vec2(0.5));
|
||
// The max distance stops one pixel shy of the edge to leave space for anti-aliasing.
|
||
float maxDistance = max(0.0, 0.5 - v_pixelDistance);
|
||
float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter);
|
||
float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter);
|
||
|
||
vec4 color = mix(v_outlineColor, v_color, innerAlpha);
|
||
color.a *= wholeAlpha;
|
||
|
||
// Fully transparent parts of the billboard are not pickable.
|
||
#if !defined(OPAQUE) && !defined(TRANSLUCENT)
|
||
if (color.a < 0.005) // matches 0/255 and 1/255
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
// The billboard is rendered twice. The opaque pass discards translucent fragments
|
||
// and the translucent pass discards opaque fragments.
|
||
#ifdef OPAQUE
|
||
if (color.a < 0.995) // matches < 254/255
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
if (color.a >= 0.995) // matches 254/255 and 255/255
|
||
{
|
||
discard;
|
||
}
|
||
#endif
|
||
#endif
|
||
|
||
out_FragColor = czm_gammaCorrect(color);
|
||
czm_writeLogDepth();
|
||
}
|
||
`;var s3=`uniform float u_maxTotalPointSize;
|
||
|
||
in vec4 positionHighAndSize;
|
||
in vec4 positionLowAndOutline;
|
||
in vec4 compressedAttribute0; // color, outlineColor, pick color
|
||
in vec4 compressedAttribute1; // show, translucency by distance, some free space
|
||
in vec4 scaleByDistance; // near, nearScale, far, farScale
|
||
in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection
|
||
|
||
out vec4 v_color;
|
||
out vec4 v_outlineColor;
|
||
out float v_innerPercent;
|
||
out float v_pixelDistance;
|
||
out vec4 v_pickColor;
|
||
out float v_splitDirection;
|
||
|
||
const float SHIFT_LEFT8 = 256.0;
|
||
const float SHIFT_RIGHT8 = 1.0 / 256.0;
|
||
|
||
void main()
|
||
{
|
||
// Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition
|
||
|
||
// unpack attributes
|
||
vec3 positionHigh = positionHighAndSize.xyz;
|
||
vec3 positionLow = positionLowAndOutline.xyz;
|
||
float outlineWidthBothSides = 2.0 * positionLowAndOutline.w;
|
||
float totalSize = positionHighAndSize.w + outlineWidthBothSides;
|
||
float outlinePercent = outlineWidthBothSides / totalSize;
|
||
// Scale in response to browser-zoom.
|
||
totalSize *= czm_pixelRatio;
|
||
|
||
float temp = compressedAttribute1.x * SHIFT_RIGHT8;
|
||
float show = floor(temp);
|
||
|
||
#ifdef EYE_DISTANCE_TRANSLUCENCY
|
||
vec4 translucencyByDistance;
|
||
translucencyByDistance.x = compressedAttribute1.z;
|
||
translucencyByDistance.z = compressedAttribute1.w;
|
||
|
||
translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
|
||
|
||
temp = compressedAttribute1.y * SHIFT_RIGHT8;
|
||
translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0;
|
||
#endif
|
||
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
vec4 color;
|
||
vec4 outlineColor;
|
||
vec4 pickColor;
|
||
|
||
// compressedAttribute0.z => pickColor.rgb
|
||
|
||
temp = compressedAttribute0.z * SHIFT_RIGHT8;
|
||
pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
pickColor.r = floor(temp);
|
||
|
||
// compressedAttribute0.x => color.rgb
|
||
|
||
temp = compressedAttribute0.x * SHIFT_RIGHT8;
|
||
color.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
color.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
color.r = floor(temp);
|
||
|
||
// compressedAttribute0.y => outlineColor.rgb
|
||
|
||
temp = compressedAttribute0.y * SHIFT_RIGHT8;
|
||
outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
outlineColor.r = floor(temp);
|
||
|
||
// compressedAttribute0.w => color.a, outlineColor.a, pickColor.a
|
||
|
||
temp = compressedAttribute0.w * SHIFT_RIGHT8;
|
||
pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
pickColor = pickColor / 255.0;
|
||
|
||
temp = floor(temp) * SHIFT_RIGHT8;
|
||
outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8;
|
||
outlineColor /= 255.0;
|
||
color.a = floor(temp);
|
||
color /= 255.0;
|
||
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
|
||
vec4 positionEC = czm_modelViewRelativeToEye * p;
|
||
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE)
|
||
float lengthSq;
|
||
if (czm_sceneMode == czm_sceneMode2D)
|
||
{
|
||
// 2D camera distance is a special case
|
||
// treat all billboards as flattened to the z=0.0 plane
|
||
lengthSq = czm_eyeHeight2D.y;
|
||
}
|
||
else
|
||
{
|
||
lengthSq = dot(positionEC.xyz, positionEC.xyz);
|
||
}
|
||
#endif
|
||
|
||
#ifdef EYE_DISTANCE_SCALING
|
||
totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq);
|
||
#endif
|
||
if (totalSize > 0.0) {
|
||
// Add padding for anti-aliasing on both sides.
|
||
totalSize += 3.0;
|
||
}
|
||
|
||
// Clamp to max point size.
|
||
totalSize = min(totalSize, u_maxTotalPointSize);
|
||
// If size is too small, push vertex behind near plane for clipping.
|
||
// Note that context.minimumAliasedPointSize "will be at most 1.0".
|
||
if (totalSize < 1.0)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
totalSize = 1.0;
|
||
}
|
||
|
||
float translucency = 1.0;
|
||
#ifdef EYE_DISTANCE_TRANSLUCENCY
|
||
translucency = czm_nearFarScalar(translucencyByDistance, lengthSq);
|
||
// push vertex behind near plane for clipping
|
||
if (translucency < 0.004)
|
||
{
|
||
positionEC.xyz = vec3(0.0);
|
||
}
|
||
#endif
|
||
|
||
#ifdef DISTANCE_DISPLAY_CONDITION
|
||
float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x;
|
||
float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y;
|
||
if (lengthSq < nearSq || lengthSq > farSq) {
|
||
// push vertex behind camera to force it to be clipped
|
||
positionEC.xyz = vec3(0.0, 0.0, 1.0);
|
||
}
|
||
#endif
|
||
|
||
gl_Position = czm_projection * positionEC;
|
||
czm_vertexLogDepth();
|
||
|
||
#ifdef DISABLE_DEPTH_DISTANCE
|
||
float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z;
|
||
if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0)
|
||
{
|
||
disableDepthTestDistance = czm_minimumDisableDepthTestDistance;
|
||
}
|
||
|
||
if (disableDepthTestDistance != 0.0)
|
||
{
|
||
// Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w.
|
||
float zclip = gl_Position.z / gl_Position.w;
|
||
bool clipped = (zclip < -1.0 || zclip > 1.0);
|
||
if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance)))
|
||
{
|
||
// Position z on the near plane.
|
||
gl_Position.z = -gl_Position.w;
|
||
#ifdef LOG_DEPTH
|
||
czm_vertexLogDepth(vec4(czm_currentFrustum.x));
|
||
#endif
|
||
}
|
||
}
|
||
#endif
|
||
|
||
v_color = color;
|
||
v_color.a *= translucency * show;
|
||
v_outlineColor = outlineColor;
|
||
v_outlineColor.a *= translucency * show;
|
||
|
||
v_innerPercent = 1.0 - outlinePercent;
|
||
v_pixelDistance = 2.0 / totalSize;
|
||
gl_PointSize = totalSize * show;
|
||
gl_Position *= show;
|
||
|
||
v_pickColor = pickColor;
|
||
v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w;
|
||
}
|
||
`;var EZe=ha.SHOW_INDEX,WY=ha.POSITION_INDEX,Dde=ha.COLOR_INDEX,IZe=ha.OUTLINE_COLOR_INDEX,xZe=ha.OUTLINE_WIDTH_INDEX,bZe=ha.PIXEL_SIZE_INDEX,vde=ha.SCALE_BY_DISTANCE_INDEX,Pde=ha.TRANSLUCENCY_BY_DISTANCE_INDEX,Rde=ha.DISTANCE_DISPLAY_CONDITION_INDEX,TZe=ha.DISABLE_DEPTH_DISTANCE_INDEX,SZe=ha.SPLIT_DIRECTION_INDEX,jY=ha.NUMBER_OF_PROPERTIES,Nc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function id(e){e=e??V.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(jY),this._maxPixelSize=1,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(id.prototype,{length:{get:function(){return YY(this),this._pointPrimitives.length}}});function Mde(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}id.prototype.add=function(e){let t=new ha(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};id.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};id.prototype.removeAll=function(){Mde(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function YY(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}id.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};id.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};id.prototype.get=function(e){return YY(this),this._pointPrimitives[e]};id.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<jY;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function wZe(e,t,n){return new S_(e,[{index:Nc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dde]},{index:Nc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Pde]},{index:Nc.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vde]},{index:Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Rde]}],t)}var VY=new ei;function Nde(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(r,VY);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[Nc.positionHighAndSize],u=VY.high;c(o,u.x,u.y,u.z,s);let f=n[Nc.positionLowAndOutline],h=VY.low;f(o,h.x,h.y,h.z,a)}var a3=65536,LD=256;function Lde(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=G.floatToByte(r.red),u=G.floatToByte(r.green),f=G.floatToByte(r.blue),h=c*a3+u*LD+f;c=G.floatToByte(a.red),u=G.floatToByte(a.green),f=G.floatToByte(a.blue);let A=c*a3+u*LD+f;c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue);let g=c*a3+u*LD+f,m=G.floatToByte(r.alpha)*a3+G.floatToByte(a.alpha)*LD+G.floatToByte(s.alpha),_=n[Nc.compressedAttribute0];_(o,h,A,g,m)}function Ode(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=D.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*LD+s;c=D.clamp(c,0,1),c=c===1?255:c*255|0;let A=c,g=n[Nc.compressedAttribute1];g(o,h,A,r,a)}function Fde(e,t,n,i){let o=i._index,r=n[Nc.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function Qde(e,t,n,i){let o=i._index,r=n[Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function BZe(e,t,n,i){Nde(e,t,n,i),Lde(e,t,n,i),Ode(e,t,n,i),Fde(e,t,n,i),Qde(e,t,n,i)}function HY(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ha._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DZe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,i,i.length,t,r,!0)):n===ie.MORPHING?HY(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function vZe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var PZe=[];id.prototype.update=function(e){if(YY(this),!this.show)return;this._maxTotalPointSize=qt.maximumAliasedPointSize,DZe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let S=0;S<jY;++S)r[S]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=wZe(c,n,this._buffersUsage),a=this._vaf.writers;for(let S=0;S<n;++S){let B=this._pointPrimitives[S];B._dirty=!1,BZe(this,c,a,B)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let S=PZe;S.length=0,(r[WY]||r[xZe]||r[bZe])&&S.push(Nde),(r[Dde]||r[IZe])&&S.push(Lde),(r[EZe]||r[Pde])&&S.push(Ode),r[vde]&&S.push(Fde),(r[Rde]||r[TZe]||r[SZe])&&S.push(Qde);let B=S.length;if(a=this._vaf.writers,o/n>.1){for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P)}this._vaf.commit()}else{for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P);this._vaf.subCommit(P._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,A=R.IDENTITY;e.mode===ie.SCENE3D?(A=this.modelMatrix,h=le.clone(this._baseVolumeWC,this._boundingVolume)):h=le.clone(this._baseVolume2D,this._boundingVolume),vZe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!1,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,_;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new We({sources:[s3]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(_=new We({defines:["OPAQUE"],sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc}),_=new We({defines:["TRANSLUCENT"],sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.OPAQUE&&(_=new We({sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.TRANSLUCENT&&(_=new We({sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let y,C,E,I,b=e.commandList;if(u.render||f){let S=this._colorCommands,B=this._blendOption===Vo.OPAQUE,v=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT;y=this._vaf.va,C=y.length,S.length=C;let P=v?C*2:C;for(I=0;I<P;++I){let N=B||v&&I%2===0;E=S[I],l(E)||(E=S[I]=new nt),E.primitiveType=Me.POINTS,E.pass=N||!v?Be.OPAQUE:Be.TRANSLUCENT,E.owner=this;let L=v?Math.floor(I/2):I;E.boundingVolume=h,E.modelMatrix=A,E.shaderProgram=N?this._sp:this._spTranslucent,E.uniformMap=this._uniforms,E.vertexArray=y[L].va,E.renderState=N?this._rsOpaque:this._rsTranslucent,E.debugShowBoundingVolume=this.debugShowBoundingVolume,E.pickId="v_pickColor",b.push(E)}}};id.prototype.isDestroyed=function(){return!1};id.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Mde(this._pointPrimitives),ue(this)};var OD=id;var kde=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],qY=1,FD=8,kD=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==qY)throw new Error(`Got v${o} data when expected v${qY}.`);let r=kde[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=kde.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(FD+s+a+c),this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(qY<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return XY(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,A=c.pop()||0;if(h-A<=a){for(let y=A;y<=h;y++){let C=s[2*y],E=s[2*y+1];C>=t&&C<=i&&E>=n&&E<=o&&u.push(r[y])}continue}let g=A+h>>1,m=s[2*g],_=s[2*g+1];m>=t&&m<=i&&_>=n&&_<=o&&u.push(r[g]),(f===0?t<=m:n<=_)&&(c.push(A),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=_)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,A=a.pop()||0;if(h-A<=s){for(let y=A;y<=h;y++)Ude(r[2*y],r[2*y+1],t,n)<=u&&c.push(o[y]);continue}let g=A+h>>1,m=r[2*g],_=r[2*g+1];Ude(m,_,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=_)&&(a.push(A),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=_)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function XY(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;Gde(e,t,s,i,o,r),XY(e,t,n,i,s-1,1-r),XY(e,t,n,s+1,o,1-r)}function Gde(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),A=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*A*(u-A)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*A/u+g)),_=Math.min(o,Math.floor(n+(u-f)*A/u+g));Gde(e,t,n,m,_,r)}let s=t[2*n+r],a=i,c=o;for(QD(e,t,i,n),t[2*o+r]>s&&QD(e,t,i,o);a<c;){for(QD(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?QD(e,t,i,c):(c++,QD(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function QD(e,t,n,i){KY(e,n,i),KY(t,2*n,2*i),KY(t,2*n+1,2*i+1)}function KY(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ude(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function uh(e){e=e??V.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new _e,this.show=e.show??!0}function zde(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var RZe=new Xe;function Vde(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=uE.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=xo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=ha.getScreenSpaceBoundingBox(e,t,o)),zde(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&Wde(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=uE.getScreenSpaceBoundingBox(s,t,RZe);zde(a,n),o=Xe.union(o,a,o)}return o}function MZe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&Wde(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function Hde(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function Wde(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function JY(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ie.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var NZe=new Xe,LZe=new Xe,OZe=new Xe;function FZe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new Ap({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new jf({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new OD;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,A=[],g=e._previousHeight,m=n.camera.positionCartographic.height,_=n.ellipsoid,y=n.camera.positionWC,C=new H_(_,y),E=[];e._clusterLabels&&JY(i,E,n,C,e),e._clusterBillboards&&JY(o,E,n,C,e),e._clusterPoints&&JY(r,E,n,C,e);let I,b,S,B,v,P,N,L,p,x,T,w;if(E.length>0){let M=new kD(E.length,64,Uint32Array);for(let O=0;O<E.length;++O)M.add(E[O].coord.x,E[O].coord.y);if(M.finish(),m<g)for(S=h.length,I=0;I<S;++I){let O=h[I];if(!C.isPointVisible(O.position))continue;let U=xo._computeScreenSpacePosition(R.IDENTITY,O.position,d.ZERO,k.ZERO,n);if(!l(U))continue;let Q=1-m/g,z=O.width=O.width*Q,F=O.height=O.height*Q;z=Math.max(z,O.minimumWidth),F=Math.max(F,O.minimumHeight);let H=U.x-z*.5,W=U.y-F*.5,Z=U.x+z,Y=U.y+F;for(v=M.range(H,W,Z,Y),P=v.length,x=0,p=[],b=0;b<P;++b)N=v[b],L=E[N],L.clustered||(++x,T=L.collection,w=L.index,p.push(T.get(w).id));if(x>=f)for(Hde(O.position,x,p,e),A.push(O),b=0;b<P;++b)E[v[b]].clustered=!0}for(S=E.length,I=0;I<S;++I){let O=E[I];if(O.clustered)continue;O.clustered=!0,T=O.collection,w=O.index;let U=T.get(w);B=Vde(U,O.coord,u,e,NZe);let Q=Xe.clone(B,LZe);v=M.range(B.x,B.y,B.x+B.width,B.y+B.height),P=v.length;let z=d.clone(U.position);for(x=1,p=[U.id],b=0;b<P;++b)if(N=v[b],L=E[N],!L.clustered){let F=L.collection.get(L.index),H=Vde(F,L.coord,u,e,OZe);d.add(F.position,z,z),Xe.union(Q,H,Q),++x,p.push(F.id)}if(x>=f){let F=d.multiplyByScalar(z,1/x,z);for(Hde(F,x,p,e),A.push({position:F,width:Q.width,height:Q.height,minimumWidth:B.width,minimumHeight:B.height}),b=0;b<P;++b)E[v[b]].clustered=!0}else MZe(U,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=A,e._previousHeight=m}}uh.prototype._initialize=function(e){this._scene=e;let t=FZe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(uh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function $Y(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function eq(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}uh.prototype.getLabel=$Y("_labelCollection",Ap,"_unusedLabelIndices","labelIndex");uh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,eq(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};uh.prototype.getBillboard=$Y("_billboardCollection",jf,"_unusedBillboardIndices","billboardIndex");uh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,eq(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};uh.prototype.getPoint=$Y("_pointCollection",OD,"_unusedPointIndices","pointIndex");uh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,eq(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function ZY(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function QZe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,ZY(e._labelCollection),ZY(e._billboardCollection),ZY(e._pointCollection))}uh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,QZe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};uh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var od=uh;function tq(e){this._name=e,this._clock=void 0,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._entityCluster=new od}Object.defineProperties(tq.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){ms.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});tq.prototype.update=function(e){return!0};var c3=tq;var jde={};jde.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,A=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let _=f/i*D.TWO_PI,y=Math.cos(_),C=Math.sin(_),E=y*n,I=C*n,b=y*t,S=C*t;u[A+g]=E,u[A+g+1]=I,u[A+g+2]=s,u[A+m]=b,u[A+m+1]=S,u[A+m+2]=r,A+=3,o&&(u[h++]=E,u[h++]=I,u[h++]=s,u[h++]=b,u[h++]=S,u[h++]=r)}return u};var Eb=jde;var nq=new k,kZe=new d,UZe=new d,GZe=new d,zZe=new d;function vp(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??Pe.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Pe.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}vp.packedLength=Pe.packedLength+5;vp.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var Yde=new Pe,Ib={vertexFormat:Yde,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};vp.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,Yde);t+=Pe.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(Ib.length=o,Ib.topRadius=r,Ib.bottomRadius=s,Ib.slices=a,Ib.offsetAttribute=c===-1?void 0:c,new vp(Ib))};vp.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=Eb.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,A=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,_=o.normal||o.tangent||o.bitangent;if(_){let v=o.tangent||o.bitangent,P=0,N=0,L=0,p=Math.atan2(i-n,t),x=kZe;x.z=Math.sin(p);let T=Math.cos(p),w=GZe,M=UZe;for(m=0;m<r;m++){let O=m/r*D.TWO_PI,U=T*Math.cos(O),Q=T*Math.sin(O);_&&(x.x=U,x.y=Q,v&&(w=d.normalize(d.cross(d.UNIT_Z,x,w),w)),o.normal&&(h[P++]=x.x,h[P++]=x.y,h[P++]=x.z,h[P++]=x.x,h[P++]=x.y,h[P++]=x.z),o.tangent&&(A[N++]=w.x,A[N++]=w.y,A[N++]=w.z,A[N++]=w.x,A[N++]=w.y,A[N++]=w.z),o.bitangent&&(M=d.normalize(d.cross(x,w,M),M),g[L++]=M.x,g[L++]=M.y,g[L++]=M.z,g[L++]=M.x,g[L++]=M.y,g[L++]=M.z))}for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=-1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=-1,g[L++]=0);for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=1,g[L++]=0)}let y=12*r-12,C=Fe.createTypedArray(c,y),E=0,I=0;for(m=0;m<r-1;m++)C[E++]=I,C[E++]=I+2,C[E++]=I+3,C[E++]=I,C[E++]=I+3,C[E++]=I+1,I+=2;for(C[E++]=s-2,C[E++]=0,C[E++]=1,C[E++]=s-2,C[E++]=1,C[E++]=s-1,m=1;m<r-1;m++)C[E++]=s+m+1,C[E++]=s+m,C[E++]=s;for(m=1;m<r-1;m++)C[E++]=a,C[E++]=a+m,C[E++]=a+m+1;let b=0;if(o.st){let v=Math.max(n,i);for(m=0;m<c;m++){let P=d.fromArray(u,m*3,zZe);f[b++]=(P.x+v)/(2*v),f[b++]=(P.y+v)/(2*v)}}let S=new En;o.position&&(S.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(S.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(S.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),o.bitangent&&(S.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(S.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),nq.x=t*.5,nq.y=Math.max(i,n);let B=new le(d.ZERO,k.magnitude(nq));if(l(e._offsetAttribute)){t=u.length;let v=e._offsetAttribute===hn.NONE?0:1,P=new Uint8Array(t/3).fill(v);S.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:P})}return new ht({attributes:S,indices:C,primitiveType:Me.TRIANGLES,boundingSphere:B,offsetAttribute:e._offsetAttribute})};var iq;vp.getUnitCylinder=function(){return l(iq)||(iq=vp.createGeometry(new vp({topRadius:1,bottomRadius:1,length:1,vertexFormat:Pe.POSITION_ONLY}))),iq};var l3=vp;var oq=new k;function xb(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}xb.packedLength=6;xb.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var xE={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};xb.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(xE.length=i,xE.topRadius=o,xE.bottomRadius=r,xE.slices=s,xE.numberOfVerticalLines=a,xE.offsetAttribute=c===-1?void 0:c,new xb(xE))};xb.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=Eb.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let _=Math.min(r,o);u=Math.round(o/_),c+=_}let f=Fe.createTypedArray(s,c*2),h=0,A;for(A=0;A<o-1;A++)f[h++]=A,f[h++]=A+1,f[h++]=A+o,f[h++]=A+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(A=0;A<o;A+=u)f[h++]=A,f[h++]=A+o;let g=new En;g.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:a}),oq.x=t*.5,oq.y=Math.max(i,n);let m=new le(d.ZERO,k.magnitude(oq));if(l(e._offsetAttribute)){t=a.length;let _=e._offsetAttribute===hn.NONE?0:1,y=new Uint8Array(t/3).fill(_);g.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}return new ht({attributes:g,indices:f,primitiveType:Me.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var u3=xb;var qde=d.ZERO,Kde=new d,VZe=new d,Xde=new G;function HZe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function Fu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new HZe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(Fu.prototype=Object.create(Ci.prototype),Fu.prototype.constructor=Fu);Object.defineProperties(Fu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Fu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Xde)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new l3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};Fu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Xde),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new u3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};Fu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Fu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||Ci.prototype._isHidden.call(this,e,t)};Fu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!j.isConstant(t.slices)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)};Fu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(je.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(je.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(je.MINIMUM_VALUE),i.slices=j.getValueOrUndefined(t.slices,je.MINIMUM_VALUE),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Fu.prototype._onEntityPropertyChanged=Rg;Fu.DynamicGeometryUpdater=bb;function bb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(bb.prototype=Object.create(yi.prototype),bb.prototype.constructor=bb);bb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,VZe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||yi.prototype._isHidden.call(this,e,t,n)};bb.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.length=j.getValueOrUndefined(t.length,n),o.topRadius=j.getValueOrUndefined(t.topRadius,n),o.bottomRadius=j.getValueOrUndefined(t.bottomRadius,n),o.slices=j.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var f3=Fu;var WZe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},As=Object.freeze(WZe);var jZe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},vo=Object.freeze(jZe);var YZe={NONE:0,HOLD:1,EXTRAPOLATE:2},rd=Object.freeze(YZe);var Jde=Es(_u(),1);function qZe(e){let t=new Jde.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var W_=qZe;var KZe=D.factorial;function rq(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=rq(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var d3={type:"Hermite"};d3.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};d3.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,A=new Array(i);for(r=0;r<i;r++){o[r]=0;let y=new Array(h);for(A[r]=y,s=0;s<h;s++)y[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let _=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,A[c][0].push(n[f]);for(r=1;r<g;r++){let y=!1;for(s=0;s<g-r;s++){let C=t[m[s]],E=t[m[s+r]],I;E-C<=0?(f=m[s]*i+i*r+c,I=n[f],A[c][r].push(I/KZe(r))):(I=A[c][r-1][s+1]-A[c][r-1][s],A[c][r].push(I/(E-C))),y=y||I!==0}y||(_=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=_;r++){let y=rq(e,m,t,a,r,[]);for(c=0;c<i;c++){let C=A[c][r][0];o[c+a*i]+=C*y}}return o};var XZe=[];d3.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let C=0;C<a;C++)s[C]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let C=0;C<o+1;C++)u[f*(o+1)+C]=f;let h=u.length,A=XZe,g=JZe(A,u,t,n,i,o),m=[],_=h*(h+1)/2,y=Math.min(g,r);for(let C=0;C<=y;C++)for(f=C;f<=g;f++){m.length=0;let E=rq(e,u,t,C,f,m),I=Math.floor(f*(1-f)/2)+h*f;for(let b=0;b<i;b++){let S=Math.floor(b*_),B=A[S+I];s[b+C*i]+=B*E}}return s};function JZe(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let A=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[A+s]=i[a];for(let g=1;g<u;g++){let m=0,_=Math.floor(g*(1-g)/2)+u*g,y=!1;for(s=0;s<u-g;s++){let C=n[t[s]],E=n[t[s+g]],I,b;if(E-C<=0)a=t[s]*o*(r+1)+o*g+h,I=i[a],b=I/D.factorial(g),e[A+_+m]=b,m++;else{let S=Math.floor((g-1)*(2-g)/2)+u*(g-1);I=e[A+S+s+1]-e[A+S+s],b=I/(E-C),e[A+_+m]=b,m++}y=y||I!==0}y&&(c=Math.max(c,g))}}return c}var h3=d3;var sq={type:"Lagrange"};sq.getRequiredDataPoints=function(e){return Math.max(e+1,2)};sq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var m3=sq;var aq={type:"Linear"};aq.getRequiredDataPoints=function(e){return 2};aq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var Tb=aq;function Lc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Lc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Lc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Lc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Lc(e.clock,e.cone,e.magnitude)};Lc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Lc(e.clock,e.cone,1)};Lc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Lc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Lc.prototype.equals=function(e){return Lc.equals(this,e)};Lc.prototype.clone=function(e){return Lc.clone(this,e)};Lc.prototype.equalsEpsilon=function(e,t){return Lc.equalsEpsilon(this,e,t)};Lc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var A3=Lc;var XD=Es(_u(),1);var cq;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?cq=function(){return performance.now()}:cq=function(){return Date.now()};var Oi=cq;function lq(e){e=e??V.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=K.clone(t):l(n)?t=K.clone(n):l(i)?t=K.addDays(i,-1,new K):t=K.now(),l(n)?n=K.clone(n):n=K.clone(t),l(i)?i=K.clone(i):i=K.addDays(n,1,new K),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??As.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new _e,this.onStop=new _e,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Oi(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??vo.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(lq.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){K.equals(this._currentTime,e)||(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===vo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=K.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});lq.prototype.tick=function(){let e=Oi(),t=K.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===vo.SYSTEM_CLOCK)t=K.now(t);else{let i=this._multiplier;if(n===vo.TICK_DEPENDENT)t=K.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=K.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===As.CLAMPED)K.lessThan(t,r)?t=K.clone(r,t):K.greaterThan(t,s)&&(t=K.clone(s,t),this.onStop.raiseEvent(this));else if(o===As.LOOP_STOP)for(K.lessThan(t,r)&&(t=K.clone(r,t));K.greaterThan(t,s);)t=K.addSeconds(r,K.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Vm=lq;function bE(){this._definitionChanged=new _e,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(bE.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:Fl("startTime"),stopTime:Fl("stopTime"),currentTime:Fl("currentTime"),clockRange:Fl("clockRange"),clockStep:Fl("clockStep"),multiplier:Fl("multiplier")});bE.prototype.clone=function(e){return l(e)||(e=new bE),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};bE.prototype.equals=function(e){return this===e||l(e)&&K.equals(this.startTime,e.startTime)&&K.equals(this.stopTime,e.stopTime)&&K.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};bE.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};bE.prototype.getValue=function(e){return l(e)||(e=new Vm),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Hm=bE;var ZZe=G.WHITE,$Ze=.1,e$e=new k(8,8),t$e=new k(0,0),n$e=new k(1,1);function Sb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(Sb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._cellAlpha)&&j.isConstant(this._lineCount)&&j.isConstant(this._lineThickness)&&j.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),cellAlpha:de("cellAlpha"),lineCount:de("lineCount"),lineThickness:de("lineThickness"),lineOffset:de("lineOffset")});Sb.prototype.getType=function(e){return"Grid"};var i$e=new K;Sb.prototype.getValue=function(e,t){return l(e)||(e=K.now(i$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,ZZe,t.color),t.cellAlpha=j.getValueOrDefault(this._cellAlpha,e,$Ze),t.lineCount=j.getValueOrClonedDefault(this._lineCount,e,e$e,t.lineCount),t.lineThickness=j.getValueOrClonedDefault(this._lineThickness,e,n$e,t.lineThickness),t.lineOffset=j.getValueOrClonedDefault(this._lineOffset,e,t$e,t.lineOffset),t};Sb.prototype.equals=function(e){return this===e||e instanceof Sb&&j.equals(this._color,e._color)&&j.equals(this._cellAlpha,e._cellAlpha)&&j.equals(this._lineCount,e._lineCount)&&j.equals(this._lineThickness,e._lineThickness)&&j.equals(this._lineOffset,e._lineOffset)};var UD=Sb;function wb(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(wb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});wb.prototype.getType=function(e){return"PolylineArrow"};var o$e=new K;wb.prototype.getValue=function(e,t){return l(e)||(e=K.now(o$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};wb.prototype.equals=function(e){return this===e||e instanceof wb&&j.equals(this._color,e._color)};var GD=wb;var r$e=G.WHITE,s$e=G.TRANSPARENT,a$e=16,c$e=255;function Bb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(Bb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._gapColor)&&j.isConstant(this._dashLength)&&j.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),gapColor:de("gapColor"),dashLength:de("dashLength"),dashPattern:de("dashPattern")});Bb.prototype.getType=function(e){return"PolylineDash"};var l$e=new K;Bb.prototype.getValue=function(e,t){return l(e)||(e=K.now(l$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,r$e,t.color),t.gapColor=j.getValueOrClonedDefault(this._gapColor,e,s$e,t.gapColor),t.dashLength=j.getValueOrDefault(this._dashLength,e,a$e,t.dashLength),t.dashPattern=j.getValueOrDefault(this._dashPattern,e,c$e,t.dashPattern),t};Bb.prototype.equals=function(e){return this===e||e instanceof Bb&&j.equals(this._color,e._color)&&j.equals(this._gapColor,e._gapColor)&&j.equals(this._dashLength,e._dashLength)&&j.equals(this._dashPattern,e._dashPattern)};var zD=Bb;var u$e=G.WHITE,f$e=.25,d$e=1;function Db(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(Db.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),glowPower:de("glowPower"),taperPower:de("taperPower")});Db.prototype.getType=function(e){return"PolylineGlow"};var h$e=new K;Db.prototype.getValue=function(e,t){return l(e)||(e=K.now(h$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,u$e,t.color),t.glowPower=j.getValueOrDefault(this._glowPower,e,f$e,t.glowPower),t.taperPower=j.getValueOrDefault(this._taperPower,e,d$e,t.taperPower),t};Db.prototype.equals=function(e){return this===e||e instanceof Db&&j.equals(this._color,e._color)&&j.equals(this._glowPower,e._glowPower)&&j.equals(this._taperPower,e._taperPower)};var VD=Db;var m$e=G.WHITE,A$e=G.BLACK,p$e=1;function vb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(vb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._outlineColor)&&j.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth")});vb.prototype.getType=function(e){return"PolylineOutline"};var g$e=new K;vb.prototype.getValue=function(e,t){return l(e)||(e=K.now(g$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,m$e,t.color),t.outlineColor=j.getValueOrClonedDefault(this._outlineColor,e,A$e,t.outlineColor),t.outlineWidth=j.getValueOrDefault(this._outlineWidth,e,p$e),t};vb.prototype.equals=function(e){return this===e||e instanceof vb&&j.equals(this._color,e._color)&&j.equals(this._outlineColor,e._outlineColor)&&j.equals(this._outlineWidth,e._outlineWidth)};var TE=vb;function Pp(e,t){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this._referenceFrame=t??eo.FIXED,this.setValue(e)}Object.defineProperties(Pp.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _$e=new K;Pp.prototype.getValue=function(e,t){return l(e)||(e=K.now(_$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Pp.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};Pp.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Pp.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Pp.prototype.equals=function(e){return this===e||e instanceof Pp&&this._referenceFrame===e._referenceFrame&&j.arrayEquals(this._value,e._value)};Pp.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var j_=Pp;function Y_(e){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this.setValue(e)}Object.defineProperties(Y_.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var y$e=new K;Y_.prototype.getValue=function(e,t){l(e)||(e=K.now(y$e));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};Y_.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Y_.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Y_.prototype.equals=function(e){return this===e||e instanceof Y_&&j.arrayEquals(this._value,e._value)};Y_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var HD=Y_;function SE(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(Qu.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function Qu(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new _e,e.collectionChanged.addEventListener(Qu.prototype._onCollectionChanged,this)}Object.defineProperties(Qu.prototype,{isConstant:{get:function(){return j.isConstant(SE(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=SE(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return SE(this)}}});Qu.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new Qu(e,n,i)};var C$e=new K;Qu.prototype.getValue=function(e,t){let n=SE(this);return l(e)||(e=K.now(C$e)),l(n)?n.getValue(e,t):void 0};Qu.prototype.getValueInReferenceFrame=function(e,t,n){let i=SE(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};Qu.prototype.getType=function(e){let t=SE(this);return l(t)?t.getType(e):void 0};Qu.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};Qu.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};Qu.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(Qu.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=SE(this),l(i)&&this._definitionChanged.raiseEvent(this))};var q_=Qu;var E$e={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-D.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+D.TWO_PI:o}},fh=E$e;var Zde={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function $de(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function ehe(e,t){return e instanceof K?e:typeof e=="string"?K.fromIso8601(e):K.addSeconds(t,e,new K)}var uq=[],fq=[];function p3(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=ehe(i[r],e),c=qo(t,f,K.compare);let A=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=ehe(i[r],e),!(l(a)&&K.compare(a,f)>=0||l(h)&&K.compare(f,h)>=0));){for(uq[A++]=f,r=r+1,s=0;s<o;s++)fq[g++]=i[r],r=r+1;a=f}A>0&&(fq.length=g,$de(n,u,fq),uq.length=A,$de(t,c,uq))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function sd(e,t){let n=e;n===Number&&(n=Zde);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=Zde);let f=u.packedLength;i+=f,o+=u.packedInterpolationLength??f,s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=Tb,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new _e,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=rd.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=rd.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(sd.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var I$e=new K;sd.prototype.getValue=function(e,t){l(e)||(e=K.now(I$e));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=qo(n,e,K.compare);if(a<0){if(a=~a,a===0){let b=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(b,e)>o)return;if(this._backwardExtrapolationType===rd.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let b=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(e,b)>o)return;if(this._forwardExtrapolationType===rd.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,A=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let b=Math.min(f.getRequiredDataPoints(this._interpolationDegree,A),i);b!==this._numberOfPoints&&(this._numberOfPoints=b,c.length=b,u.length=b*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,_=i-1;if(_-m+1>=g+1){let b=a-(g/2|0)-1;b<m&&(b=m);let S=b+g;S>_&&(S=_,b=S-g,b<m&&(b=m)),m=b,_=S}let C=_-m+1;for(let b=0;b<C;++b)c[b]=K.secondsDifference(n[m+b],n[_]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,_,u);else{let b=0,S=this._packedLength,B=m*S,v=(_+1)*S;for(;B<v;)u[b]=s[B],B++,b++}let E=K.secondsDifference(e,n[_]),I;if(A===0||!l(f.interpolate))I=f.interpolateOrderZero(E,c,u,h,this._interpolationResult);else{let b=Math.floor(h/(A+1));I=f.interpolate(E,c,u,b,A,A,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(I,s,m,_,t):r.unpack(I,0,t)}return r.unpack(s,a*this._packedLength,t)};sd.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};sd.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}p3(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}p3(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};sd.prototype.addSamplesPackedArray=function(e,t){p3(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.removeSample=function(e){let t=qo(this._times,e,K.compare);return t<0?!1:(the(this,t,1),!0)};function the(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}sd.prototype.removeSamples=function(e){let t=this._times,n=qo(t,e.start,K.compare);n<0?n=~n:e.isStartIncluded||++n;let i=qo(t,e.stop,K.compare);i<0?i=~i:e.isStopIncluded&&++i,the(this,n,i-n)};sd.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!K.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};sd._mergeNewSamples=p3;var ad=sd;function cd(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new ad(d,n),this._definitionChanged=new _e,this._referenceFrame=e??eo.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(cd.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var x$e=new K;cd.prototype.getValue=function(e,t){return l(e)||(e=K.now(x$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};cd.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return am.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};cd.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};cd.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};cd.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};cd.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};cd.prototype.removeSample=function(e){return this._property.removeSample(e)};cd.prototype.removeSamples=function(e){this._property.removeSamples(e)};cd.prototype.equals=function(e){return this===e||e instanceof cd&&j.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var ic=cd;var b$e={HORIZONTAL:0,VERTICAL:1},Wm=Object.freeze(b$e);var T$e=Wm.HORIZONTAL,S$e=G.WHITE,w$e=G.BLACK,B$e=0,D$e=1;function Pb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(Pb.prototype,{isConstant:{get:function(){return j.isConstant(this._orientation)&&j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._offset)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:de("orientation"),evenColor:de("evenColor"),oddColor:de("oddColor"),offset:de("offset"),repeat:de("repeat")});Pb.prototype.getType=function(e){return"Stripe"};var v$e=new K;Pb.prototype.getValue=function(e,t){return l(e)||(e=K.now(v$e)),l(t)||(t={}),t.horizontal=j.getValueOrDefault(this._orientation,e,T$e)===Wm.HORIZONTAL,t.evenColor=j.getValueOrClonedDefault(this._evenColor,e,S$e,t.evenColor),t.oddColor=j.getValueOrClonedDefault(this._oddColor,e,w$e,t.oddColor),t.offset=j.getValueOrDefault(this._offset,e,B$e),t.repeat=j.getValueOrDefault(this._repeat,e,D$e),t};Pb.prototype.equals=function(e){return this===e||e instanceof Pb&&j.equals(this._orientation,e._orientation)&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._offset,e._offset)&&j.equals(this._repeat,e._repeat)};var WD=Pb;function K_(e){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(K_.prototype._intervalsChanged,this),this._referenceFrame=e??eo.FIXED}Object.defineProperties(K_.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var P$e=new K;K_.prototype.getValue=function(e,t){return l(e)||(e=K.now(P$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};K_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};K_.prototype.equals=function(e){return this===e||e instanceof K_&&this._intervals.equals(e._intervals,j.equals)&&this._referenceFrame===e._referenceFrame};K_.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var X_=K_;function wE(){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(wE.prototype._intervalsChanged,this)}Object.defineProperties(wE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var R$e=new K;wE.prototype.getValue=function(e,t){l(e)||(e=K.now(R$e));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};wE.prototype.equals=function(e){return this===e||e instanceof wE&&this._intervals.equals(e._intervals,j.equals)};wE.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var J_=wE;function Rb(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new _e,this._normalize=t??!0,this.position=e}Object.defineProperties(Rb.prototype,{isConstant:{get:function(){return j.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var M$e=new d,nhe=new d,ihe=new K,N$e=new K,dq=1/60;Rb.prototype.getValue=function(e,t){return this._getValue(e,t)};Rb.prototype._getValue=function(e,t,n){l(e)||(e=K.now(N$e)),l(t)||(t=new d);let i=this._position;if(j.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,M$e),r=i.getValue(K.addSeconds(e,dq,ihe),nhe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(K.addSeconds(e,-dq,ihe),nhe),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,dq,t)};Rb.prototype.equals=function(e){return this===e||e instanceof Rb&&j.equals(this._position,e._position)};var Z_=Rb;function jD(e,t){this._velocityVectorProperty=new Z_(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new _e,this.ellipsoid=t??te.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(jD.prototype,{isConstant:{get:function(){return j.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var ohe=new d,L$e=new d,rhe=new J,O$e=new K;jD.prototype.getValue=function(e,t){l(e)||(e=K.now(O$e));let n=this._velocityVectorProperty._getValue(e,L$e,ohe);if(l(n))return kt.rotationMatrixFromPositionVelocity(ohe,n,this._ellipsoid,rhe),Le.fromRotationMatrix(rhe,t)};jD.prototype.equals=function(e){return this===e||e instanceof jD&&j.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var g3=jD;var Rp={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};Rp.validate=function(e){return e===Rp.COMPLETE||e===Rp.BELOW_ELLIPSOID_HORIZON||e===Rp.ABOVE_ELLIPSOID_HORIZON};Rp.toString=function(e){switch(e){case Rp.COMPLETE:return"COMPLETE";case Rp.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case Rp.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new me("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var YD=Rp;function $_(){}$_.packedLength=d.packedLength;$_.unpack=d.unpack;$_.pack=d.pack;var hq;function qD(e,t){return t[0]==="#"&&(t=hq+t),q_.fromString(e,t)}function she(e,t,n){if(l(n.reference))return qD(t,n.reference);if(l(n.velocityReference)){let i=qD(t,n.velocityReference);switch(e){case d:case $_:return new Z_(i,e===$_);case Le:return new g3(i)}}throw new ce(`${JSON.stringify(n)} is not valid CZML.`)}function F$e(e,t){return new fm(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var Zi=new d,gl=new A3,Oc=new Ae,BE=new Rn,_3=new Le;function Q$e(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===G.packedLength)return[G.byteToFloat(n[0]),G.byteToFloat(n[1]),G.byteToFloat(n[2]),G.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=G.byteToFloat(n[o+1]),t[o+2]=G.byteToFloat(n[o+2]),t[o+3]=G.byteToFloat(n[o+3]),t[o+4]=G.byteToFloat(n[o+4]);return t}function ahe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):we.createIfNeeded(n)}function k$e(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[D.toRadians(n[0]),D.toRadians(n[1]),D.toRadians(n[2]),D.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=D.toRadians(n[o+1]),t[o+2]=D.toRadians(n[o+2]),t[o+3]=D.toRadians(n[o+3]),t[o+4]=D.toRadians(n[o+4]);return t}function U$e(e){let t=e.length;if(gl.magnitude=1,t===2)return gl.clock=e[0],gl.cone=e[1],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],d.fromSpherical(gl,Zi),n[o+1]=Zi.x,n[o+2]=Zi.y,n[o+3]=Zi.z;return n}function G$e(e){let t=e.length;if(t===3)return gl.clock=e[0],gl.cone=e[1],gl.magnitude=e[2],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],gl.magnitude=e[i+3],d.fromSpherical(gl,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function z$e(e){let t=e.length;if(t===3)return Oc.longitude=e[0],Oc.latitude=e[1],Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=e[i+1],Oc.latitude=e[i+2],Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function V$e(e){let t=e.length;if(t===3)return Oc.longitude=D.toRadians(e[0]),Oc.latitude=D.toRadians(e[1]),Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=D.toRadians(e[i+1]),Oc.latitude=D.toRadians(e[i+2]),Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function mq(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return U$e(o);let r=e.spherical;if(l(r))return G$e(r);let s=e.cartographicRadians;if(l(s))return z$e(s);let a=e.cartographicDegrees;if(l(a))return V$e(a);throw new ce(`${JSON.stringify(e)} is not a valid CZML interval.`)}function che(e,t){d.unpack(e,t,Zi),d.normalize(Zi,Zi),d.pack(Zi,e,t)}function H$e(e){let t=mq(e);if(t.length===3)return che(t,0),t;for(let n=1;n<t.length;n+=4)che(t,n);return t}function lhe(e,t){Le.unpack(e,t,_3),Le.normalize(_3,_3),Le.pack(_3,e,t)}function W$e(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return lhe(t,0),t;for(let n=1;n<t.length;n+=5)lhe(t,n)}return t}function uhe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Xe:e.hasOwnProperty("cartesian2")?k:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?$_:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?G:e.hasOwnProperty("arcType")?un:e.hasOwnProperty("classificationType")?Jn:e.hasOwnProperty("colorBlendMode")?al:e.hasOwnProperty("cornerType")?Ji:e.hasOwnProperty("heightReference")?Ze:e.hasOwnProperty("horizontalOrigin")?Ri:e.hasOwnProperty("date")?K:e.hasOwnProperty("labelStyle")?ar:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?Yt:e.hasOwnProperty("distanceDisplayCondition")?Ut:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?Dn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Wm:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?XD.default:e.hasOwnProperty("verticalOrigin")?Wn:Object}function j$e(e,t,n){switch(e){case un:return un[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Xe:return t.boundingRectangle;case k:return t.cartesian2;case d:return mq(t);case $_:return H$e(t);case G:return Q$e(t);case Jn:return Jn[t.classificationType??t];case al:return al[t.colorBlendMode??t];case Ji:return Ji[t.cornerType??t];case Ze:return Ze[t.heightReference??t];case Ri:return Ri[t.horizontalOrigin??t];case Image:return ahe(t,n);case K:return K.fromIso8601(t.date??t);case ar:return ar[t.labelStyle??t];case Number:return t.number??t;case Yt:return t.nearFarScalar;case Ut:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Le:return W$e(t);case fh:return t.number??t;case YD:return YD[t.portionToDisplay??t];case Dn:return Dn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Wm:return Wm[t.stripeOrientation??t];case ae:return k$e(t);case XD.default:return ahe(t,n);case Wn:return Wn[t.verticalOrigin??t];default:throw new ce(`Unknown CzmlDataSource interval type: ${e}`)}}var Y$e={HERMITE:h3,LAGRANGE:m3,LINEAR:Tb};function y3(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:Y$e[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=rd[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=rd[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var fhe={iso8601:void 0};function Er(e){if(l(e))return fhe.iso8601=e,Rn.fromIso8601(fhe)}function Aq(e){let t=je.MAXIMUM_INTERVAL.clone();return t.data=e,t}function dhe(e){let t=new ml;return t.intervals.addInterval(Aq(e)),t}function hhe(e){let t=new nc(e.referenceFrame);return t.intervals.addInterval(Aq(e)),t}function C3(e,t,n,i,o,r,s){let a=Er(i.interval);l(o)&&(l(a)?a=Rn.intersect(a,o,BE):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),A=l(a)&&!a.equals(je.MAXIMUM_INTERVAL);if(i.delete===!0){if(!A){t[n]=void 0;return}return bhe(t[n],a)}let g=!1;if(h){if(u=j$e(e,i,r),!l(u))return;c=e.packedLength??1,f=u.length??1,g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==fh;if(!g&&!A){h?t[n]=new ci(m?e.unpack(u,0):u):t[n]=she(e,s,i);return}let _=t[n],y,C=i.epoch;if(l(C)&&(y=K.fromIso8601(C)),g&&!A){_ instanceof ad||(t[n]=_=new ad(e)),_.addSamplesPackedArray(u,y),y3(i,_);return}let E;if(!g&&A){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=she(e,s,i),l(_)||(t[n]=_=h?new J_:new ml),h&&_ instanceof J_?_.intervals.addInterval(a):_ instanceof ml?(h&&(a.data=new ci(a.data)),_.intervals.addInterval(a)):(t[n]=_=dhe(_),h&&(a.data=new ci(a.data)),_.intervals.addInterval(a));return}l(_)||(t[n]=_=new ml),_ instanceof ml||(t[n]=_=dhe(_));let I=_.intervals;E=I.findInterval(a),(!l(E)||!(E.data instanceof ad))&&(E=a.clone(),E.data=new ad(e),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(i,E.data)}function bhe(e,t){if(e instanceof ad){e.removeSamples(t);return}else if(e instanceof J_){e.intervals.removeInterval(t);return}else if(e instanceof ml){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||bhe(o.data,t)}n.removeInterval(t);return}}function Ce(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)C3(e,t,n,i[a],o,r,s);else C3(e,t,n,i,o,r,s)}function mhe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),A=l(s)&&!s.equals(je.MAXIMUM_INTERVAL);if(n.delete===!0){if(!A){e[t]=void 0;return}return The(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=eo[n.referenceFrame]),g=g??eo.FIXED,u=mq(n),f=u.length??1,m=f>c),!m&&!A){h?e[t]=new Ol(d.unpack(u),g):e[t]=qD(r,n.reference);return}let _=e[t],y,C=n.epoch;if(l(C)&&(y=K.fromIso8601(C)),m&&!A){(!(_ instanceof ic)||l(g)&&_.referenceFrame!==g)&&(e[t]=_=new ic(g,a)),_.addSamplesPackedArray(u,y),y3(n,_);return}let E;if(!m&&A){s=s.clone(),h?s.data=d.unpack(u):s.data=qD(r,n.reference),l(_)||(h?_=new X_(g):_=new nc(g),e[t]=_),h&&_ instanceof X_&&l(g)&&_.referenceFrame===g?_.intervals.addInterval(s):_ instanceof nc?(h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s)):(e[t]=_=hhe(_),h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s));return}l(_)?_ instanceof nc||(e[t]=_=hhe(_)):e[t]=_=new nc(g);let I=_.intervals;E=I.findInterval(s),(!l(E)||!(E.data instanceof ic)||l(g)&&E.data.referenceFrame!==g)&&(E=s.clone(),E.data=new ic(g,a),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(n,E.data)}function The(e,t){if(e instanceof ic){e.removeSamples(t);return}else if(e instanceof X_){e.intervals.removeInterval(t);return}else if(e instanceof nc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||The(o.data,t)}n.removeInterval(t);return}}function She(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)mhe(e,t,n[s],i,o,r);else mhe(e,t,n,i,o,r)}function Ahe(e,t,n,i){l(n.references)?E3(e,t,n.references,n.interval,i,HD,ml):(l(n.cartesian2)?n.array=k.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=k.unpackArray(n.cartesian)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function phe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=e[t],c,u;if(l(s)){a instanceof vD||(a=new vD,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof Jt||(c=new Jt),f=n.solidColor,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof UD||(c=new UD),f=n.grid,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),Ce(k,c,"lineCount",f.lineCount,void 0,o,r),Ce(k,c,"lineThickness",f.lineThickness,void 0,o,r),Ce(k,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof wC||(c=new wC),f=n.image,Ce(Image,c,"image",f.image,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r),Ce(G,c,"color",f.color,void 0,o,r),Ce(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof WD||(c=new WD),f=n.stripe,Ce(Wm,c,"orientation",f.orientation,void 0,o,r),Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(Number,c,"offset",f.offset,void 0,o,r),Ce(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof TE||(c=new TE),f=n.polylineOutline,Ce(G,c,"color",f.color,void 0,o,r),Ce(G,c,"outlineColor",f.outlineColor,void 0,o,r),Ce(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof VD||(c=new VD),f=n.polylineGlow,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"glowPower",f.glowPower,void 0,o,r),Ce(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof GD||(c=new GD),f=n.polylineArrow,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof zD||(c=new zD),f=n.polylineDash,Ce(G,c,"color",f.color,void 0,void 0,r),Ce(G,c,"gapColor",f.gapColor,void 0,void 0,r),Ce(Number,c,"dashLength",f.dashLength,void 0,o,r),Ce(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof SD||(c=new SD),f=n.checkerboard,Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function ku(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)phe(e,t,n[s],i,o,r);else phe(e,t,n,i,o,r)}function q$e(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function K$e(e,t,n,i){let o=t.description;l(o)&&Ce(String,e,"description",o,void 0,i,n)}function X$e(e,t,n,i){let o=t.position;l(o)&&She(e,"position",o,void 0,i,n)}function J$e(e,t,n,i){let o=t.viewFrom;l(o)&&Ce(d,e,"viewFrom",o,void 0,i,n)}function Z$e(e,t,n,i){let o=t.orientation;l(o)&&Ce(Le,e,"orientation",o,void 0,i,n)}function $$e(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new Ql);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)C3(uhe(s[a]),e.properties,r,s[a],void 0,i,n);else C3(uhe(s),e.properties,r,s,void 0,i,n)}}}function E3(e,t,n,i,o,r,s){let a=n.map(function(c){return qD(o,c)});if(l(i)){i=Er(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval(Aq(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function ghe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,HD,ml):Ce(Array,e,t,n,void 0,void 0,i)}function _he(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)ghe(e,t,n[o],i);else ghe(e,t,n,i)}function yhe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,j_,nc):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,te.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,te.default)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function JD(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)yhe(e,t,n[o],i);else yhe(e,t,n,i)}function eet(e){return d.unpackArray(e)}function tet(e){return d.fromRadiansArrayHeights(e,te.default)}function net(e){return d.fromDegreesArrayHeights(e,te.default)}function Che(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return E3(a,"positions",s,n.interval,i,j_,nc),a.positions});e[t]=new j_(r)}else l(n.cartesian)?n.array=n.cartesian.map(eet):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(tet):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(net)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i)}function iet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Che(e,t,n[o],i);else Che(e,t,n,i)}function oet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Ahe(e,t,n[o],i);else Ahe(e,t,n,i)}function ret(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new hs),r.addInterval(Er(o[s]));else r=new hs,r.addInterval(Er(o));e.availability=r}function set(e,t,n,i,o){l(t)&&Ce($_,e,"alignedAxis",t,n,i,o)}function aet(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=Er(o.interval),s=e.billboard;l(s)||(e.billboard=s=new jc),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Image,s,"image",o.image,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),set(s,o.alignedAxis,r,i,n),Ce(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Xe,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function cet(e,t,n,i){let o=t.box;if(!l(o))return;let r=Er(o.interval),s=e.box;l(s)||(e.box=s=new wI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"dimensions",o.dimensions,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function uet(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=Er(o.interval),s=e.corridor;l(s)||(e.corridor=s=new DI),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function fet(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=Er(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new vI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"length",o.length,r,i,n),Ce(Number,s,"topRadius",o.topRadius,r,i,n),Ce(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Number,s,"slices",o.slices,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function det(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new ce("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new ce("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function het(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=Er(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new PI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ce(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function met(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=Er(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new RI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"radii",o.radii,r,i,n),Ce(d,s,"innerRadii",o.innerRadii,r,i,n),Ce(Number,s,"minimumClock",o.minimumClock,r,i,n),Ce(Number,s,"maximumClock",o.maximumClock,r,i,n),Ce(Number,s,"minimumCone",o.minimumCone,r,i,n),Ce(Number,s,"maximumCone",o.maximumCone,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ce(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ce(Number,s,"subdivisions",o.subdivisions,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Aet(e,t,n,i){let o=t.label;if(!l(o))return;let r=Er(o.interval),s=e.label;l(s)||(e.label=s=new cm),Ce(Boolean,s,"show",o.show,r,i,n),Ce(String,s,"text",o.text,r,i,n),Ce(String,s,"font",o.font,r,i,n),Ce(ar,s,"style",o.style,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Boolean,s,"showBackground",o.showBackground,r,i,n),Ce(G,s,"backgroundColor",o.backgroundColor,r,i,n),Ce(k,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"fillColor",o.fillColor,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function pet(e,t,n,i){let o=t.model;if(!l(o))return;let r=Er(o.interval),s=e.model;l(s)||(e.model=s=new Dg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.gltf,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ce(Number,s,"maximumScale",o.maximumScale,r,i,n),Ce(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ce(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ce(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ce(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(al,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ce(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)Ehe(s,u[a],r,i,n);else Ehe(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)Ihe(s,f[a],r,i,n);else Ihe(s,f,r,i,n)}function Ehe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new Ql),s.hasProperty(f)||s.addProperty(f);let A=s[f];l(A)||(s[f]=A=new MI),Ce(d,A,"translation",h.translation,r,i,o),Ce(Le,A,"rotation",h.rotation,r,i,o),Ce(d,A,"scale",h.scale,r,i,o)}}function Ihe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new Ql),s.hasProperty(f)||s.addProperty(f),Ce(Number,s,f,h,r,i,o))}}function get(e,t,n,i){let o=t.path;if(!l(o))return;let r=Er(o.interval),s=e.path;l(s)||(e.path=s=new vg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"leadTime",o.leadTime,r,i,n),Ce(Number,s,"trailTime",o.trailTime,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"resolution",o.resolution,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function _et(e,t,n,i){let o=t.point;if(!l(o))return;let r=Er(o.interval),s=e.point;l(s)||(e.point=s=new LI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"pixelSize",o.pixelSize,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function KD(e){this.polygon=e,this._definitionChanged=new _e}Object.defineProperties(KD.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});KD.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new xc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new xc(n,i)};KD.prototype.equals=function(e){return this===e||e instanceof KD&&j.equals(this.polygon._positions,e.polygon._positions)&&j.equals(this.polygon._holes,e.polygon._holes)};function yet(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=Er(o.interval),s=e.polygon;l(s)||(e.polygon=s=new lm),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"_positions",o.positions,n),iet(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new KD(s)),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ce(Boolean,s,"closeTop",o.closeTop,r,i,n),Ce(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Cet(e){return e?un.GEODESIC:un.NONE}function Eet(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=Er(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new $c),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),ku(s,"material",o.material,r,i,n),ku(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ce(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=F$e(a.followSurface,Cet)}}function Iet(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=Er(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new OI),JD(s,"positions",o.positions,n),oet(s,"shape",o.shape,n),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xet(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=Er(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new um),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ae,s,"coordinates",o.coordinates,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function bet(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=Er(o.interval),s=e.tileset;l(s)||(e.tileset=s=new NI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.uri,r,i,n),Ce(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Tet(e,t,n,i){let o=t.wall;if(!l(o))return;let r=Er(o.interval),s=e.wall;l(s)||(e.wall=s=new Pg),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),_he(s,"minimumHeights",o.minimumHeights,n),_he(s,"maximumHeights",o.maximumHeights,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xhe(e,t,n,i,o){let r=e.id;if(l(r)||(r=Xn()),hq=r,!l(o._version)&&r!=="document")throw new ce("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")det(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}hq=void 0}function wet(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(je.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=K.secondsDifference(s,r),c=Math.round(a/120);return t=new Hm,t.startTime=K.clone(r),t.stopTime=K.clone(s),t.clockRange=As.LOOP_STOP,t.multiplier=c,t.currentTime=K.clone(r),t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Hm,t.startTime=je.MINIMUM_VALUE.clone(),t.stopTime=je.MAXIMUM_VALUE.clone(),t.currentTime=je.MINIMUM_VALUE.clone(),t.clockRange=As.LOOP_STOP,t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=Er(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=K.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=As[n.range]??As.LOOP_STOP),l(n.step)&&(t.clockStep=vo[n.step]??vo.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function whe(e,t,n,i){n=n??V.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Dt(s)),e._credit=s,typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=we.createIfNeeded(r),ms.setLoading(e,!0),Promise.resolve(o).then(function(a){return Bet(e,a,r,i)}).catch(function(a){return ms.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function Bet(e,t,n,i){ms.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new Bhe,o.removeAll()),Ps._processCzml(t,o,n,void 0,e);let r=wet(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=W_(n.getUrlComponent()),r=!0),ms.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function Bhe(){this.name=void 0,this.clock=void 0}function Ps(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._clock=void 0,this._documentPacket=new Bhe,this._version=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}Ps.load=function(e,t){return new Ps().load(e,t)};Object.defineProperties(Ps.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Ps.updaters=[aet,cet,uet,fet,het,met,Aet,pet,q$e,K$e,get,_et,yet,Eet,Iet,$$e,xet,X$e,bet,J$e,Tet,Z$e,ret];Ps.registerUpdater=function(e){Ps.updaters.includes(e)||Ps.updaters.push(e)};Ps.unregisterUpdater=function(e){if(Ps.updaters.includes(e)){let t=Ps.updaters.indexOf(e);Ps.updaters.splice(t,1)}};Ps.prototype.process=function(e,t){return whe(this,e,t,!1)};Ps.prototype.load=function(e,t){return whe(this,e,t,!0)};Ps.prototype.update=function(e){return!0};Ps.processPacketData=Ce;Ps.processPositionPacketData=She;Ps.processMaterialPacketData=ku;Ps._processCzml=function(e,t,n,i,o){if(i=i??Ps.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)xhe(e[r],t,i,n,o);else xhe(e,t,i,n,o)};var I3=Ps;function _l(){this._dataSources=[],this._dataSourceAdded=new _e,this._dataSourceRemoved=new _e,this._dataSourceMoved=new _e}Object.defineProperties(_l.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});_l.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};_l.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};_l.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};_l.prototype.contains=function(e){return this.indexOf(e)!==-1};_l.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};_l.prototype.get=function(e){return this._dataSources[e]};_l.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function x3(e,t){return e.indexOf(t)}function Dhe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=D.clamp(t,0,o),n=D.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}_l.prototype.raise=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t+1)};_l.prototype.lower=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t-1)};_l.prototype.raiseToTop=function(e){let t=x3(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};_l.prototype.lowerToBottom=function(e){let t=x3(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};_l.prototype.isDestroyed=function(){return!1};_l.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var b3=_l;function Qa(e){e=e??V.EMPTY_OBJECT,this._primitives=[],this._guid=Xn(),this._primitiveAdded=new _e,this._primitiveRemoved=new _e,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Qa.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Qa.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Qa.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Qa.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Qa.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Qa.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function T3(e,t){return e._primitives.indexOf(t)}Qa.prototype.raise=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Qa.prototype.raiseToTop=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Qa.prototype.lower=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Qa.prototype.lowerToBottom=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Qa.prototype.get=function(e){return this._primitives[e]};Qa.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Qa.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Qa.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Qa.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Qa.prototype.isDestroyed=function(){return!1};Qa.prototype.destroy=function(){return this.removeAll(),ue(this)};var ou=Qa;function jm(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(jm.prototype,{length:{get:function(){return this._length}}});jm.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new ou({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};jm.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};jm.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};jm.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};jm.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};jm.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};jm.prototype.isDestroyed=function(){return!1};jm.prototype.destroy=function(){return this.removeAll(),ue(this)};var S3=jm;function Mb(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new Pt}Mb.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};Mb.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};Mb.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};Mb.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};Mb.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):mt.FAILED};var Nb=Mb;var gq={},w3=new d,vhe=new d,Phe=new Le,Rhe=new J;function Lb(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),w3),d.multiplyByScalar(n,Math.sin(f),vhe),d.add(w3,vhe,w3);let h=Math.cos(e);h=h*h;let A=Math.sin(e);A=A*A;let m=r/Math.sqrt(s*h+o*A)/a;return Le.fromAxisAngle(w3,m,Phe),J.fromQuaternion(Phe,Rhe),J.multiplyByVector(Rhe,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var Mhe=new d,Nhe=new d,pq=new d,Det=new d;gq.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,A=f+2,g=d.fromArray(e,f,Mhe);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,Nhe),_=i.geodeticSurfaceNormal(g,Det),y=d.multiplyByScalar(_,o,pq);d.add(g,y,g),n&&(d.multiplyByScalar(_,r,y),d.add(m,y,m),a[f+u]=m.x,a[h+u]=m.y,a[A+u]=m.z),a[f]=g.x,a[h]=g.y,a[A]=g.z}return a};var vet=new d,Pet=new d,Ret=new d;gq.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),A=d.normalize(s,vet),g=d.cross(d.UNIT_Z,s,Pet);g=d.normalize(g,g);let m=d.cross(A,g,Ret),_=1+Math.ceil(D.PI_OVER_TWO/a),y=D.PI_OVER_TWO/(_-1),C=D.PI_OVER_TWO-_*y;C<0&&(_-=Math.ceil(Math.abs(C)/y));let E=2*(_*(_+2)),I=t?new Array(E*3):void 0,b=0,S=Mhe,B=Nhe,v=_*4*3,P=v-1,N=0,L=n?new Array(v):void 0,p,x,T,w,M;for(C=D.PI_OVER_TWO,S=Lb(C,r,m,g,c,f,u,h,A,S),t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x),C=D.PI_OVER_TWO-y,p=1;p<_+1;++p){if(S=Lb(C,r,m,g,c,f,u,h,A,S),B=Lb(Math.PI-C,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*p+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z),C=D.PI_OVER_TWO-(p+1)*y}for(p=_;p>1;--p){if(C=D.PI_OVER_TWO-(p-1)*y,S=Lb(-C,r,m,g,c,f,u,h,A,S),B=Lb(C+Math.PI,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*(p-1)+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z)}C=D.PI_OVER_TWO,S=Lb(-C,r,m,g,c,f,u,h,A,S);let O={};return t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,O.positions=I,O.numPts=_),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,O.outerPositions=L),O};var Uu=gq;var Ob=new d,_q=new d,yq=new d,Lhe=new d,Ks=new k,Ohe=new J,Met=new J,Cq=new Le,Fhe=new d,Qhe=new d,khe=new d,v3=new Ae,Uhe=new d,Ghe=new k,zhe=new k;function Vhe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,A=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,_=f?new Float32Array(u*3):void 0,y=0,C=Fhe,E=Qhe,I=khe,b=new Hi(a),S=b.project(a.cartesianToCartographic(o,v3),Uhe),B=a.scaleToGeodeticSurface(o,Ob);a.geodeticSurfaceNormal(B,B);let v=Ohe,P=Met;if(c!==0){let M=Le.fromAxisAngle(B,c,Cq);v=J.fromQuaternion(M,v),M=Le.fromAxisAngle(B,-c,Cq),P=J.fromQuaternion(M,P)}else v=J.clone(J.IDENTITY,v),P=J.clone(J.IDENTITY,P);let N=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),L=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),p=e.length,x=n?p:0,T=x/3*2;for(let M=0;M<p;M+=3){let O=M+1,U=M+2,Q=d.fromArray(e,M,Ob);if(i.st){let z=J.multiplyByVector(v,Q,_q),F=b.project(a.cartesianToCartographic(z,v3),yq);d.subtract(F,S,F),Ks.x=(F.x+r)/(2*r),Ks.y=(F.y+s)/(2*s),N.x=Math.min(Ks.x,N.x),N.y=Math.min(Ks.y,N.y),L.x=Math.max(Ks.x,L.x),L.y=Math.max(Ks.y,L.y),n&&(h[y+T]=Ks.x,h[y+1+T]=Ks.y),h[y++]=Ks.x,h[y++]=Ks.y}(i.normal||i.tangent||i.bitangent||f)&&(C=a.geodeticSurfaceNormal(Q,C),f&&(_[M+x]=-C.x,_[O+x]=-C.y,_[U+x]=-C.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(E=d.normalize(d.cross(d.UNIT_Z,C,E),E),J.multiplyByVector(P,E,E)),i.normal&&(A[M]=C.x,A[O]=C.y,A[U]=C.z,n&&(A[M+x]=-C.x,A[O+x]=-C.y,A[U+x]=-C.z)),i.tangent&&(g[M]=E.x,g[O]=E.y,g[U]=E.z,n&&(g[M+x]=-E.x,g[O+x]=-E.y,g[U+x]=-E.z)),i.bitangent&&(I=d.normalize(d.cross(C,E,I),I),m[M]=I.x,m[O]=I.y,m[U]=I.z,n&&(m[M+x]=I.x,m[O+x]=I.y,m[U+x]=I.z))))}if(i.st){p=h.length;for(let M=0;M<p;M+=2)h[M]=(h[M]-N.x)/(L.x-N.x),h[M+1]=(h[M+1]-N.y)/(L.y-N.y)}let w=new En;if(i.position){let M=Uu.raisePositionsToHeight(e,t,n);w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:M})}if(i.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),i.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),f&&(w.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),n&&l(t.offsetAttribute)){let M=new Uint8Array(u);if(t.offsetAttribute===hn.TOP)M=M.fill(1,0,u/2);else{let O=t.offsetAttribute===hn.NONE?0:1;M=M.fill(O)}w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}return w}function Hhe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var DE=new d;function Net(e){let t=e.center;DE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,DE),e.height,DE),DE=d.add(t,DE,DE);let n=new le(DE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=Vhe(o,e,!1),a=Hhe(r);return a=Fe.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Let(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),A=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,_=n.bitangent?new Float32Array(f*3):void 0,y=t.shadowVolume,C=y?new Float32Array(f*3):void 0,E=0,I=Fhe,b=Qhe,S=khe,B=new Hi(s),v=B.project(s.cartesianToCartographic(i,v3),Uhe),P=s.scaleToGeodeticSurface(i,Ob);s.geodeticSurfaceNormal(P,P);let N=Le.fromAxisAngle(P,u,Cq),L=J.fromQuaternion(N,Ohe),p=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),x=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),T=e.length,w=T/3*2;for(let O=0;O<T;O+=3){let U=O+1,Q=O+2,z=d.fromArray(e,O,Ob),F;if(n.st){let W=J.multiplyByVector(L,z,_q),Z=B.project(s.cartesianToCartographic(W,v3),yq);d.subtract(Z,v,Z),Ks.x=(Z.x+o)/(2*o),Ks.y=(Z.y+r)/(2*r),p.x=Math.min(Ks.x,p.x),p.y=Math.min(Ks.y,p.y),x.x=Math.max(Ks.x,x.x),x.y=Math.max(Ks.y,x.y),A[E+w]=Ks.x,A[E+1+w]=Ks.y,A[E++]=Ks.x,A[E++]=Ks.y}z=s.scaleToGeodeticSurface(z,z),F=d.clone(z,_q),I=s.geodeticSurfaceNormal(z,I),y&&(C[O+T]=-I.x,C[U+T]=-I.y,C[Q+T]=-I.z);let H=d.multiplyByScalar(I,a,Lhe);if(z=d.add(z,H,z),H=d.multiplyByScalar(I,c,H),F=d.add(F,H,F),n.position&&(h[O+T]=F.x,h[U+T]=F.y,h[Q+T]=F.z,h[O]=z.x,h[U]=z.y,h[Q]=z.z),n.normal||n.tangent||n.bitangent){S=d.clone(I,S);let W=d.fromArray(e,(O+3)%T,Lhe);d.subtract(W,z,W);let Z=d.subtract(F,z,yq);I=d.normalize(d.cross(Z,W,I),I),n.normal&&(g[O]=I.x,g[U]=I.y,g[Q]=I.z,g[O+T]=I.x,g[U+T]=I.y,g[Q+T]=I.z),n.tangent&&(b=d.normalize(d.cross(S,I,b),b),m[O]=b.x,m[U]=b.y,m[Q]=b.z,m[O+T]=b.x,m[O+1+T]=b.y,m[O+2+T]=b.z),n.bitangent&&(_[O]=S.x,_[U]=S.y,_[Q]=S.z,_[O+T]=S.x,_[U+T]=S.y,_[Q+T]=S.z)}}if(n.st){T=A.length;for(let O=0;O<T;O+=2)A[O]=(A[O]-p.x)/(x.x-p.x),A[O+1]=(A[O+1]-p.y)/(x.y-p.y)}let M=new En;if(n.position&&(M.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(M.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:A})),n.normal&&(M.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(M.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(M.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),y&&(M.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),l(t.offsetAttribute)){let O=new Uint8Array(f);if(t.offsetAttribute===hn.TOP)O=O.fill(1,0,f/2);else{let U=t.offsetAttribute===hn.NONE?0:1;O=O.fill(U)}M.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return M}function Oet(e){let t=e.length/3,n=Fe.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var B3=new le,D3=new le;function Fet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Ob),e.height,Ob);B3.center=d.add(t,o,B3.center),B3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),D3.center=d.add(t,o,D3.center),D3.radius=i;let r=Uu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=le.union(B3,D3),f=Vhe(s,e,!0),h=Hhe(a),A=h.length;h.length=A*2;let g=s.length/3;for(let b=0;b<A;b+=3)h[b+A]=h[b+2]+g,h[b+1+A]=h[b+1]+g,h[b+2+A]=h[b]+g;let m=Fe.createTypedArray(g*2/3,h),_=new ht({attributes:f,indices:m,primitiveType:Me.TRIANGLES}),y=Let(c,e);h=Oet(c);let C=Fe.createTypedArray(c.length*2/3,h),E=new ht({attributes:y,indices:C,primitiveType:Me.TRIANGLES}),I=jn.combineInstances([new Rt({geometry:_}),new Rt({geometry:E})]);return{boundingSphere:u,attributes:I[0].attributes,indices:I[0].indices}}function Whe(e,t,n,i,o,r,s){let c=Uu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let A=0;A<u;++A)f[A]=d.fromArray(c,A*3);let h=ae.fromCartesianArray(f,r,s);return h.width>D.PI&&(h.north=h.north>0?D.PI_OVER_TWO-D.EPSILON7:h.north,h.south=h.south<0?D.EPSILON7-D.PI_OVER_TWO:h.south,h.east=D.PI,h.west=-D.PI),h}function qm(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.vertexFormat??Pe.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Pe.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}qm.packedLength=d.packedLength+te.packedLength+Pe.packedLength+9;qm.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var jhe=new d,Yhe=new te,qhe=new Pe,Ym={center:jhe,ellipsoid:Yhe,vertexFormat:qhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};qm.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,jhe);t+=d.packedLength;let o=te.unpack(e,t,Yhe);t+=te.packedLength;let r=Pe.unpack(e,t,qhe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=A,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(Ym.height=f,Ym.extrudedHeight=A,Ym.granularity=h,Ym.stRotation=u,Ym.rotation=c,Ym.semiMajorAxis=s,Ym.semiMinorAxis=a,Ym.shadowVolume=g,Ym.offsetAttribute=m===-1?void 0:m,new qm(Ym))};qm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??te.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??D.RADIANS_PER_DEGREE,a=e.rotation??0;return Whe(n,o,r,a,s,i,t)};qm.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Fet(o);else if(r=Net(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};qm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new qm({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};function Qet(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Uu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ht._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(qm.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Whe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Qet(this)),this._textureCoordinateRotationPoints}}});var ru=qm;var Khe=new d,vE=new d;function ket(e){let t=e.center;vE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,vE),e.height,vE),vE=d.add(t,vE,vE);let n=new le(vE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!1,!0).outerPositions,o=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Fe.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var P3=new le,R3=new le;function Uet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Khe),e.height,Khe);P3.center=d.add(t,o,P3.center),P3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),R3.center=d.add(t,o,R3.center),R3.radius=i;let r=Uu.computeEllipsePositions(e,!1,!0).outerPositions,s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=le.union(P3,R3),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===hn.TOP)m=m.fill(1,0,c/2);else{let _=e.offsetAttribute===hn.NONE?0:1;m=m.fill(_)}s.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=e.numberOfVerticalLines??16;u=D.clamp(u,0,c/2);let f=Fe.createTypedArray(c,c*2+u*2);c/=2;let h=0,A;for(A=0;A<c;++A)f[h++]=A,f[h++]=(A+1)%c,f[h++]=A+c,f[h++]=(A+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let _=Math.min(g*u,c);for(A=0;A<_;A+=g)f[h++]=A,f[h++]=A+c}return{boundingSphere:a,attributes:s,indices:f}}function Fb(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}Fb.packedLength=d.packedLength+te.packedLength+8;Fb.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var Xhe=new d,Jhe=new te,Mp={center:Xhe,ellipsoid:Jhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};Fb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Xhe);t+=d.packedLength;let o=te.unpack(e,t,Jhe);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=A===-1?void 0:A,n):(Mp.height=c,Mp.extrudedHeight=f,Mp.granularity=u,Mp.rotation=a,Mp.semiMajorAxis=r,Mp.semiMinorAxis=s,Mp.numberOfVerticalLines=h,Mp.offsetAttribute=A===-1?void 0:A,new Fb(Mp))};Fb.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=Uet(o);else if(r=ket(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var ld=Fb;var Zhe=new G,$he=d.ZERO,eme=new d,tme=new ae;function Get(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function dh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Get(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(dh.prototype=Object.create(ti.prototype),dh.prototype.constructor=dh);dh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Zhe)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ru(this._options),attributes:i})};dh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Zhe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ld(this._options),attributes:r})};dh.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};dh.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||Ci.prototype._isHidden.call(this,e,t)};dh.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!j.isConstant(t.rotation)||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};dh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(je.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(je.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(je.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),s.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(ru.computeRectangle(s,tme)).minimumTerrainHeight),s.extrudedHeight=o};dh.DynamicGeometryUpdater=Qb;function Qb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Qb.prototype=Object.create(yi.prototype),Qb.prototype.constructor=Qb);Qb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t,n)};Qb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.center=j.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=j.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=j.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(ru.computeRectangle(i,tme)).minimumTerrainHeight),i.extrudedHeight=s};var M3=dh;var zet=new d,Vet=new d,Het=new d,Wet=new d,jet=new d,Yet=new d(1,1,1),nme=Math.cos,ime=Math.sin;function Np(e){e=e??V.EMPTY_OBJECT;let t=e.radii??Yet,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),u=e.vertexFormat??Pe.DEFAULT;this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Pe.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Np.packedLength=2*d.packedLength+Pe.packedLength+7;Np.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var ome=new d,rme=new d,sme=new Pe,ey={radii:ome,innerRadii:rme,vertexFormat:sme,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Np.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,ome);t+=d.packedLength;let o=d.unpack(e,t,rme);t+=d.packedLength;let r=Pe.unpack(e,t,sme);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=A===-1?void 0:A,n):(ey.minimumClock=s,ey.maximumClock=a,ey.minimumCone=c,ey.maximumCone=u,ey.stackPartitions=f,ey.slicePartitions=h,ey.offsetAttribute=A===-1?void 0:A,new Np(ey))};Np.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/D.TWO_PI),u=Math.round(u*Math.abs(s-r)/D.PI),c<2&&(c=2),u<2&&(u=2);let f,h,A=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let _=g.length,y=m.length,C=0,E=1,I=n.x!==t.x||n.y!==t.y||n.z!==t.z,b=!1,S=!1,B=!1;I&&(E=2,r>0&&(b=!0,C+=c-1),s<Math.PI&&(S=!0,C+=c-1),(o-i)%D.TWO_PI?(B=!0,C+=(u-1)*2+1):C+=1);let v=y*_*E,P=new Float64Array(v*3),N=new Array(v).fill(!1),L=new Array(v).fill(!1),p=c*u*E,x=6*(p+C+1-(c+u)*E),T=Fe.createTypedArray(p,x),w=a.normal?new Float32Array(v*3):void 0,M=a.tangent?new Float32Array(v*3):void 0,O=a.bitangent?new Float32Array(v*3):void 0,U=a.st?new Float32Array(v*2):void 0,Q=new Array(_),z=new Array(_);for(f=0;f<_;f++)Q[f]=ime(g[f]),z[f]=nme(g[f]);let F=new Array(y),H=new Array(y);for(h=0;h<y;h++)H[h]=nme(m[h]),F[h]=ime(m[h]);for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=t.x*Q[f]*H[h],P[A++]=t.y*Q[f]*F[h],P[A++]=t.z*z[f];let W=v/2;if(I)for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=n.x*Q[f]*H[h],P[A++]=n.y*Q[f]*F[h],P[A++]=n.z*z[f],N[W]=!0,f>0&&f!==_-1&&h!==0&&h!==y-1&&(L[W]=!0),W++;A=0;let Z,Y;for(f=1;f<_-2;f++)for(Z=f*y,Y=(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Y+h+1,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Z+h;if(I){let qe=_*y;for(f=1;f<_-2;f++)for(Z=qe+f*y,Y=qe+(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Z+h,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Y+h+1}let $,X;if(I){if(b)for(X=_*y,f=1;f<y-2;f++)T[A++]=f,T[A++]=f+1,T[A++]=X+f+1,T[A++]=f,T[A++]=X+f+1,T[A++]=X+f;if(S)for($=_*y-y,X=_*y*E-y,f=1;f<y-2;f++)T[A++]=$+f+1,T[A++]=$+f,T[A++]=X+f,T[A++]=$+f+1,T[A++]=X+f,T[A++]=X+f+1}if(B){for(f=1;f<_-2;f++)X=y*_+y*f,$=y*f,T[A++]=X,T[A++]=$+y,T[A++]=$,T[A++]=X,T[A++]=X+y,T[A++]=$+y;for(f=1;f<_-2;f++)X=y*_+y*(f+1)-1,$=y*(f+1)-1,T[A++]=$+y,T[A++]=X,T[A++]=$,T[A++]=$+y,T[A++]=X+y,T[A++]=X}let he=new En;a.position&&(he.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:P}));let ge=0,fe=0,ye=0,Ie=0,ve=v/2,Te,ke=te.fromCartesian3(t),Ge=te.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<v;f++){Te=N[f]?Ge:ke;let qe=d.fromArray(P,f*3,zet),tt=Te.geodeticSurfaceNormal(qe,Vet);if(L[f]&&d.negate(tt,tt),a.st){let $t=k.negate(tt,jet);U[ge++]=Math.atan2($t.y,$t.x)/D.TWO_PI+.5,U[ge++]=Math.asin(tt.z)/Math.PI+.5}if(a.normal&&(w[fe++]=tt.x,w[fe++]=tt.y,w[fe++]=tt.z),a.tangent||a.bitangent){let $t=Het,it=0,tn;if(N[f]&&(it=ve),!b&&f>=it&&f<it+y*2?tn=d.UNIT_X:tn=d.UNIT_Z,d.cross(tn,tt,$t),d.normalize($t,$t),a.tangent&&(M[ye++]=$t.x,M[ye++]=$t.y,M[ye++]=$t.z),a.bitangent){let Wt=d.cross(tt,$t,Wet);d.normalize(Wt,Wt),O[Ie++]=Wt.x,O[Ie++]=Wt.y,O[Ie++]=Wt.z}}}a.st&&(he.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:U})),a.normal&&(he.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:w})),a.tangent&&(he.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:M})),a.bitangent&&(he.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:O}))}if(l(e._offsetAttribute)){let qe=P.length,tt=e._offsetAttribute===hn.NONE?0:1,$t=new Uint8Array(qe/3).fill(tt);he.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:$t})}return new ht({attributes:he,indices:T,primitiveType:Me.TRIANGLES,boundingSphere:le.fromEllipsoid(ke),offsetAttribute:e._offsetAttribute})};var Eq;Np.getUnitEllipsoid=function(){return l(Eq)||(Eq=Np.createGeometry(new Np({radii:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),Eq};var ka=Np;var qet=new Jt(G.WHITE),Iq=d.ZERO,xq=new d,Ket=new d,Xet=new d,bq=new G,Jet=new d(1,1,1);function Zet(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function Gu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Zet(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(Gu.prototype=Object.create(Ci.prototype),Gu.prototype.constructor=Gu);Object.defineProperties(Gu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Gu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Kn.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,bq)),l(f)||(f=G.WHITE),r=en.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ka(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};Gu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,bq),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(r),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ed(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};Gu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Gu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||Ci.prototype._isHidden.call(this,e,t)};Gu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.radii.isConstant||!j.isConstant(t.innerRadii)||!j.isConstant(t.stackPartitions)||!j.isConstant(t.slicePartitions)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.minimumClock)||!j.isConstant(t.maximumClock)||!j.isConstant(t.minimumCone)||!j.isConstant(t.maximumCone)||!j.isConstant(t.subdivisions)};Gu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(je.MINIMUM_VALUE,i.radii),i.innerRadii=j.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=j.getValueOrUndefined(t.minimumClock,je.MINIMUM_VALUE),i.maximumClock=j.getValueOrUndefined(t.maximumClock,je.MINIMUM_VALUE),i.minimumCone=j.getValueOrUndefined(t.minimumCone,je.MINIMUM_VALUE),i.maximumCone=j.getValueOrUndefined(t.maximumCone,je.MINIMUM_VALUE),i.stackPartitions=j.getValueOrUndefined(t.stackPartitions,je.MINIMUM_VALUE),i.slicePartitions=j.getValueOrUndefined(t.slicePartitions,je.MINIMUM_VALUE),i.subdivisions=j.getValueOrUndefined(t.subdivisions,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Gu.prototype._onEntityPropertyChanged=Rg;Gu.DynamicGeometryUpdater=ZD;function ZD(e,t,n){yi.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new R,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&(ZD.prototype=Object.create(yi.prototype),ZD.prototype.constructor=ZD);ZD.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!j.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=j.getValueOrUndefined(n.radii,e,Ket),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=j.getValueOrDefault(n.fill,e,!0),s=j.getValueOrDefault(n.outline,e,!1),a=j.getValueOrClonedDefault(n.outlineColor,e,G.BLACK,bq),c=gr.getValue(e,n.material??qet,this._material),u=j.getValueOrUndefined(n.innerRadii,e,Xet),f=j.getValueOrUndefined(n.minimumClock,e),h=j.getValueOrUndefined(n.maximumClock,e),A=j.getValueOrUndefined(n.minimumCone,e),g=j.getValueOrUndefined(n.maximumCone,e),m=j.getValueOrUndefined(n.stackPartitions,e),_=j.getValueOrUndefined(n.slicePartitions,e),y=j.getValueOrUndefined(n.subdivisions,e),C=j.getValueOrDefault(n.outlineWidth,e,1),E=j.getValueOrDefault(n.heightReference,e,Ze.NONE),I=E!==Ze.NONE?hn.ALL:void 0,b=this._scene.mode,S=b===ie.SCENE3D&&E===Ze.NONE,B=this._options,v=this._geometryUpdater.shadowsProperty.getValue(e),N=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),L=j.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,Iq,xq);if(!S||this._lastSceneMode!==b||!l(this._primitive)||B.stackPartitions!==m||B.slicePartitions!==_||l(u)&&!d.equals(B.innerRadii!==u)||B.minimumClock!==f||B.maximumClock!==h||B.minimumCone!==A||B.maximumCone!==g||B.subdivisions!==y||this._lastOutlineWidth!==C||B.offsetAttribute!==I){let x=this._primitives;x.removeAndDestroy(this._primitive),x.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=b,this._lastOutlineWidth=C,B.stackPartitions=m,B.slicePartitions=_,B.subdivisions=y,B.offsetAttribute=I,B.radii=d.clone(S?Jet:i,B.radii),l(u)?S?B.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,B.innerRadii):B.innerRadii=d.clone(u,B.innerRadii):B.innerRadii=void 0,B.minimumClock=f,B.maximumClock=h,B.minimumCone=A,B.maximumCone=g;let T=new Io({material:c,translucent:c.isTranslucent(),closed:!0});B.vertexFormat=T.vertexFormat;let w=this._geometryUpdater.createFillGeometryInstance(e,S,this._modelMatrix);this._primitive=x.add(new kn({geometryInstances:w,appearance:T,asynchronous:!1,shadows:v}));let M=this._geometryUpdater.createOutlineGeometryInstance(e,S,this._modelMatrix);this._outlinePrimitive=x.add(new kn({geometryInstances:M,appearance:new gn({flat:!0,translucent:M.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(C)}}),asynchronous:!1,shadows:v})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=G.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=N,this._lastOffset=d.clone(L,this._lastOffset)}else if(this._primitive.ready){let x=this._primitive,T=this._outlinePrimitive;x.show=!0,T.show=!0,x.appearance.material=c;let w=this._attributes;l(w)||(w=x.getGeometryInstanceAttributes(t),this._attributes=w),r!==this._lastShow&&(w.show=Bn.toValue(r,w.show),this._lastShow=r);let M=this._outlineAttributes;l(M)||(M=T.getGeometryInstanceAttributes(t),this._outlineAttributes=M),s!==this._lastOutlineShow&&(M.show=Bn.toValue(s,M.show),this._lastOutlineShow=s),G.equals(a,this._lastOutlineColor)||(M.color=en.toValue(a,M.color),G.clone(a,this._lastOutlineColor)),Ut.equals(N,this._lastDistanceDisplayCondition)||(w.distanceDisplayCondition=Kn.toValue(N,w.distanceDisplayCondition),M.distanceDisplayCondition=Kn.toValue(N,M.distanceDisplayCondition),Ut.clone(N,this._lastDistanceDisplayCondition)),d.equals(L,this._lastOffset)||(w.offset=ho.toValue(L,w.offset),M.offset=ho.toValue(L,w.offset),d.clone(L,this._lastOffset))}S&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=R.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var N3=Gu;function kb(e){e=e??V.EMPTY_OBJECT;let t=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}kb.packedLength=Pe.packedLength;kb.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),t};var ame=new Pe,$et={vertexFormat:ame};kb.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,ame);return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n):new kb($et)};var L3=new d(-.5,-.5,0),O3=new d(.5,.5,0);kb.createGeometry=function(e){let t=e._vertexFormat,n=new En,i,o;if(t.position){if(o=new Float64Array(12),o[0]=L3.x,o[1]=L3.y,o[2]=0,o[3]=O3.x,o[4]=L3.y,o[5]=0,o[6]=O3.x,o[7]=O3.y,o[8]=0,o[9]=L3.x,o[10]=O3.y,o[11]=0,n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ht({attributes:n,indices:i,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var F3=kb;function Ub(){this._workerName="createPlaneOutlineGeometry"}Ub.packedLength=0;Ub.pack=function(e,t){return t};Ub.unpack=function(e,t,n){return l(n)?n:new Ub};var ty=new d(-.5,-.5,0),Q3=new d(.5,.5,0);Ub.createGeometry=function(){let e=new En,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=ty.x,n[1]=ty.y,n[2]=ty.z,n[3]=Q3.x,n[4]=ty.y,n[5]=ty.z,n[6]=Q3.x,n[7]=Q3.y,n[8]=ty.z,n[9]=ty.x,n[10]=Q3.y,n[11]=ty.z,e.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ht({attributes:e,indices:t,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var k3=Ub;var ett=new d,cme=new G;function ttt(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function ud(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new ttt(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(ud.prototype=Object.create(Ci.prototype),ud.prototype.constructor=ud);ud.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,cme)),l(g)||(g=G.WHITE),o=en.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=j.getValueOrDefault(c.plane,e,u.plane),A=j.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=A,f=Tq(h,A,f,f),new Rt({id:t,geometry:new F3(this._options),modelMatrix:f,attributes:i})};ud.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,cme),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=j.getValueOrDefault(r.plane,e,s.plane),u=j.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=Tq(c,u,a,a),new Rt({id:t,geometry:new k3,modelMatrix:a,attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};ud.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};ud.prototype._getIsClosed=function(e){return!1};ud.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};ud.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(je.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions)};ud.DynamicGeometryUpdater=Gb;function Gb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Gb.prototype=Object.create(yi.prototype),Gb.prototype.constructor=Gb);Gb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,ett);return!l(o)||!l(i.plane)||!l(i.dimensions)||yi.prototype._isHidden.call(this,e,t,n)};Gb.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=j.getValueOrDefault(t.plane,n,i.plane),i.dimensions=j.getValueOrUndefined(t.dimensions,n,i.dimensions)};var ntt=new d,itt=new d,ott=new d,rtt=new d,stt=new J,att=new J,ctt=new R;function Tq(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,ott),a=d.clone(d.UNIT_Z,itt);D.equalsEpsilon(Math.abs(d.dot(a,o)),1,D.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,ntt);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=stt;J.setColumn(u,0,c,u),J.setColumn(u,1,a,u),J.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,rtt),h=J.multiplyByScale(u,f,att),A=R.fromRotationTranslation(h,s,ctt);return R.multiplyTransformation(n,A,i)}ud.createPrimitiveMatrix=Tq;var U3=ud;var ltt=new d,utt=new Xe,ftt=new k,dtt=new k,htt=new d,mtt=new d,Att=new d,$D=new d,ptt=new d,gtt=new d,lme=new Le,_tt=new J,ytt=new J,Ctt=new d;function Ett(e,t,n,i,o,r,s,a,c){let u=e.positions,f=xi.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Fe.createTypedArray(u.length,f.length);h.set(f);let A=_tt;if(i!==0){let p=Le.fromAxisAngle(s,i,lme);if(A=J.fromQuaternion(p,A),t.tangent||t.bitangent){p=Le.fromAxisAngle(s,-i,lme);let x=J.fromQuaternion(p,ytt);a=d.normalize(J.multiplyByVector(x,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else A=J.clone(J.IDENTITY,A);let g=dtt;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,_=m*3,y=new Float64Array(_),C=t.normal?new Float32Array(_):void 0,E=t.tangent?new Float32Array(_):void 0,I=t.bitangent?new Float32Array(_):void 0,b=t.st?new Float32Array(m*2):void 0,S=0,B=0,v=0,P=0,N=0;for(let p=0;p<m;p++){let x=u[p];if(y[S++]=x.x,y[S++]=x.y,y[S++]=x.z,t.st)if(l(o)&&o.positions.length===m)b[N++]=o.positions[p].x,b[N++]=o.positions[p].y;else{let T=J.multiplyByVector(A,x,ltt),w=r(T,ftt);k.subtract(w,g,w);let M=D.clamp(w.x/n.width,0,1),O=D.clamp(w.y/n.height,0,1);b[N++]=M,b[N++]=O}t.normal&&(C[B++]=s.x,C[B++]=s.y,C[B++]=s.z),t.tangent&&(E[P++]=a.x,E[P++]=a.y,E[P++]=a.z),t.bitangent&&(I[v++]=c.x,I[v++]=c.y,I[v++]=c.z)}let L=new En;return t.position&&(L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y})),t.normal&&(L.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(L.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.bitangent&&(L.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:b})),new ht({attributes:L,indices:h,primitiveType:Me.TRIANGLES})}function PE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=Pe.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=$n.computeHierarchyPackedLength(t,d)+Pe.packedLength+te.packedLength+(l(n)?$n.computeHierarchyPackedLength(n,k):1)+2}PE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new PE(t)};PE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var Itt=te.clone(te.UNIT_SPHERE),xtt=new Pe,btt={polygonHierarchy:{}};PE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Itt);t+=te.packedLength;let r=Pe.unpack(e,t,xtt);t+=Pe.packedLength;let s=e[t++],a=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new PE(btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};PE.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=No(s,d.equalsEpsilon,!0),s.length<3)return;let a=htt,c=mtt,u=Att,f=ptt,h=gtt;if(!M_.computeProjectTo2DArguments(s,$D,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon($D,d.ZERO,D.EPSILON6)){let N=e._ellipsoid.geodeticSurfaceNormal($D,Ctt);d.dot(a,N)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=M_.createProjectPointsTo2DFunction($D,f,h),m=M_.createProjectPointTo2DFunction($D,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let _=$n.polygonsFromHierarchy(n,r,g,!1),y=_.hierarchy,C=_.polygons,E=function(N){return N},I=r?$n.polygonsFromHierarchy(o,!0,E,!1).polygons:void 0;if(y.length===0)return;s=y[0].outerRing;let b=le.fromPoints(s),S=$n.computeBoundingRectangle(a,m,s,i,utt),B=[];for(let N=0;N<C.length;N++){let L=new Rt({geometry:Ett(C[N],t,S,i,r?I[N]:void 0,m,a,c,u)});B.push(L)}let v=jn.combineInstances(B)[0];v.attributes.position.values=new Float64Array(v.attributes.position.values),v.indices=Fe.createTypedArray(v.attributes.position.values.length/3,v.indices);let P=v.attributes;return t.position||delete P.position,new ht({attributes:P,indices:v.indices,primitiveType:v.primitiveType,boundingSphere:b})};var G3=PE;var ume=[],z3=[];function Ttt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],_=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=_.x,c[h++]=_.y,c[h++]=_.z}else{let m=0;if(o===un.GEODESIC)for(u=0;u<f;u++)m+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)m+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let _;o===un.GEODESIC?_=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(_=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let y=_.length;for(let C=0;C<y;++C)c[h++]=_[C]}}f=c.length/3;let A=f*2,g=Fe.createTypedArray(f,A);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Me.LINES})})}function Stt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),A=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=A/3;let y=t[u],C=t[(u+1)%f];c[A++]=y.x,c[A++]=y.y,c[A++]=y.z,c[A++]=C.x,c[A++]=C.y,c[A++]=C.z}else{let y=0;if(o===un.GEODESIC)for(u=0;u<f;u++)y+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)y+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(y*3*2),u=0;u<f;++u){h[u]=A/3;let C;o===un.GEODESIC?C=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(C=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let E=C.length;for(let I=0;I<E;++I)c[A++]=C[I]}}f=c.length/6;let g=h.length,m=(f*2+g)*2,_=Fe.createTypedArray(f+g,m);for(A=0,u=0;u<f;++u)_[A++]=u,_[A++]=(u+1)%f,_[A++]=u+f,_[A++]=(u+1)%f+f;for(u=0;u<g;u++){let y=h[u];_[A++]=y,_[A++]=y+f}return new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:_,primitiveType:Me.LINES})})}function RE(e){let t=e.polygonHierarchy,n=e.ellipsoid??te.default,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??un.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=te.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+8}RE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var wtt=te.clone(te.UNIT_SPHERE),Btt={polygonHierarchy:{}};RE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,wtt);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],A=e[t];return l(n)||(n=new RE(Btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=A,n};RE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new RE(t)};RE.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=$n.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=D.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,A=e._perPositionHeightExtrude||!D.equalsEpsilon(f,h,0,D.EPSILON2),g,m;if(A)for(m=0;m<s.length;m++){if(a=Stt(t,s[m],u,o,r),a.geometry=$n.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length/3,E=new Uint8Array(C);e._offsetAttribute===hn.TOP?E=E.fill(1,0,C/2):(g=e._offsetAttribute===hn.NONE?0:1,E=E.fill(g)),a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}else for(m=0;m<s.length;m++){if(a=Ttt(t,s[m],u,o,r),a.geometry.attributes.position.values=xi.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length;g=e._offsetAttribute===hn.NONE?0:1;let E=new Uint8Array(C/3).fill(g);a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}let _=jn.combineInstances(c)[0],y=le.fromVertices(_.attributes.position.values);return new ht({attributes:_.attributes,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:y,offsetAttribute:e._offsetAttribute})};var V3=RE;var fme="Entity polygons cannot have both height and perPositionHeight. height will be ignored",dme="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",hme=new G,mme=d.ZERO,Ame=new d,pme=new ae,Dtt=[],vtt=new k;function Ptt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function zu(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Ptt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(zu.prototype=Object.create(ti.prototype),zu.prototype.constructor=zu);zu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,hme)),l(s)||(s=G.WHITE),o.color=en.fromColor(s)}l(i.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new G3(i):r=new o_(i),new Rt({id:t,geometry:r,attributes:o})};zu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hme),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(o),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new sh(i):a=new V3(i),new Rt({id:t,geometry:a,attributes:s})};zu.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=xs.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Dtt),a=s.length,c=0,u=a-1,f=new k;for(let A=0;A<a;u=A++){let g=s[A],m=s[u],_=g.x*m.y-m.x*g.y,y=k.add(g,m,vtt);y=k.multiplyByScalar(y,_,y),f=k.add(f,y,f),c+=_}let h=1/(c*3);return f=k.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};zu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||Ci.prototype._isHidden.call(this,e,t)};zu.prototype._isOnTerrain=function(e,t){let n=ti.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(je.MINIMUM_VALUE):!0);return n&&!o};zu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.textureCoordinates)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.perPositionHeight)||!j.isConstant(t.closeTop)||!j.isConstant(t.closeBottom)||!j.isConstant(t.zIndex)||!j.isConstant(t.arcType)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};zu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(je.MINIMUM_VALUE),r=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),c=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE),u=j.getValueOrDefault(t.perPositionHeight,je.MINIMUM_VALUE,!1);r=ti.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,yt(fme)),s!==Ze.NONE&&u&&(r=void 0,yt(dme))):(l(a)&&!l(r)&&(r=0),f=ti.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),i.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=j.getValueOrDefault(t.closeTop,je.MINIMUM_VALUE,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,je.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=j.getValueOrDefault(t.arcType,je.MINIMUM_VALUE,un.GEODESIC),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,je.MINIMUM_VALUE),a=ti.getGeometryExtrudedHeight(a,c),a===ti.CLAMP_TO_GROUND){let h=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};zu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};zu.DynamicGeometryUpdater=zb;function zb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(zb.prototype=Object.create(yi.prototype),zb.prototype.constructor=zb);zb.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||yi.prototype._isHidden.call(this,e,t,n)};zb.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=j.getValueOrUndefined(t.hierarchy,n);let o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,n),c=j.getValueOrUndefined(t.perPositionHeight,n);o=ti.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,yt(fme)),r!==Ze.NONE&&c&&(o=void 0,yt(dme))):(l(a)&&!l(o)&&(o=0),u=ti.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=j.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=j.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=j.getValueOrDefault(t.arcType,n,un.GEODESIC),a=ti.getGeometryExtrudedHeight(a,s),a===ti.CLAMP_TO_GROUND){let f=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var H3=zu;function Rtt(e,t,n,i){let o=new En;i.position&&(o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=xi.triangulate(t),u=(a-1)*r*6+c.length*2,f=Fe.createTypedArray(s,u),h,A,g,m,_,y,C=r*2,E=0;for(h=0;h<a-1;h++){for(A=0;A<r-1;A++)g=A*2+h*r*2,y=g+C,m=g+1,_=m+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y;g=r*2-2+h*r*2,m=g+1,_=m+C,y=g+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y}if(i.st||i.tangent||i.bitangent){let S=new Float32Array(s*2),B=1/(a-1),v=1/n.height,P=n.height/2,N,L,p=0;for(h=0;h<a;h++){for(N=h*B,L=v*(t[0].y+P),S[p++]=N,S[p++]=L,A=1;A<r;A++)L=v*(t[A].y+P),S[p++]=N,S[p++]=L,S[p++]=N,S[p++]=L;L=v*(t[0].y+P),S[p++]=N,S[p++]=L}for(A=0;A<r;A++)N=0,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;for(A=0;A<r;A++)N=(a-1)*B,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:new Float32Array(S)})}let I=s-r*2;for(h=0;h<c.length;h+=3){let S=c[h]+I,B=c[h+1]+I,v=c[h+2]+I;f[E++]=S,f[E++]=B,f[E++]=v,f[E++]=v+r,f[E++]=B+r,f[E++]=S+r}let b=new ht({attributes:o,indices:f,boundingSphere:le.fromVertices(e),primitiveType:Me.TRIANGLES});if(i.normal&&(b=jn.computeNormal(b)),i.tangent||i.bitangent){try{b=jn.computeTangentAndBitangent(b)}catch{yt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(b.attributes.tangent=void 0),i.bitangent||(b.attributes.bitangent=void 0),i.st||(b.attributes.st=void 0)}return b}function tv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+Pe.packedLength+2}tv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var gme=te.clone(te.UNIT_SPHERE),_me=new Pe,ev={polylinePositions:void 0,shapePositions:void 0,ellipsoid:gme,vertexFormat:_me,cornerType:void 0,granularity:void 0};tv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,gme);t+=te.packedLength;let c=Pe.unpack(e,t,_me);t+=Pe.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(ev.polylinePositions=r,ev.shapePositions=s,ev.cornerType=u,ev.granularity=f,new tv(ev))};var Mtt=new Xe;tv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Mtt),r=Gm.computePositions(n,i,o,e,!0);return Rtt(r,i,o,e._vertexFormat)};var W3=tv;function Ntt(e,t){let n=new En;n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Fe.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ht({attributes:n,indices:Fe.createTypedArray(o,a),boundingSphere:le.fromVertices(e),primitiveType:Me.LINES})}function iv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+2}iv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var yme=te.clone(te.UNIT_SPHERE),nv={polylinePositions:void 0,shapePositions:void 0,ellipsoid:yme,height:void 0,cornerType:void 0,granularity:void 0};iv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,yme);t+=te.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(nv.polylinePositions=r,nv.shapePositions=s,nv.cornerType=c,nv.granularity=u,new iv(nv))};var Ltt=new Xe;iv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Ltt),r=Gm.computePositions(n,i,o,e,!1);return Ntt(r,i)};var j3=iv;var Cme=new G;function Ott(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function Km(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Ott(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(Km.prototype=Object.create(Ci.prototype),Km.prototype.constructor=Km);Km.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Cme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new W3(this._options),attributes:i})};Km.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Cme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new j3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};Km.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||Ci.prototype._isHidden.call(this,e,t)};Km.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!j.isConstant(t.granularity)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)};Km.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof Jt;o.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(je.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(je.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(je.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(je.MINIMUM_VALUE):void 0};Km.DynamicGeometryUpdater=Vb;function Vb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Vb.prototype=Object.create(yi.prototype),Vb.prototype.constructor=Vb);Vb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||yi.prototype._isHidden.call(this,e,t,n)};Vb.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=j.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=j.getValueOrUndefined(t.shape,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n)};var Y3=Km;var Sq=new d,xme=new d,bme=new d,Tme=new d,Sme=new ae,Ftt=new k,Qtt=new le,ktt=new le;function wme(e,t){let n=new ht({attributes:new En,primitiveType:Me.TRIANGLES});return n.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function Utt(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=Tme,f=bme,h=xme;if(t.normal||t.tangent||t.bitangent)for(let A=0;A<o;A+=3){let g=d.fromArray(e,A,Sq),m=c+1,_=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),J.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[_]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[_]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[_]=u.z),c+=3}return wme(t,{positions:e,normals:r,tangents:s,bitangents:a})}var wq=new d,Bme=new d;function Gtt(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=Tme,A=bme,g=xme;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let _=d.fromArray(e,m,Sq),y=d.fromArray(e,(m+6)%i,wq);if(f){let C=d.fromArray(e,(m+3)%i,Bme);d.subtract(y,_,y),d.subtract(C,_,C),g=d.normalize(d.cross(C,y,g),g),f=!1}d.equalsEpsilon(y,_,D.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(_,h),t.tangent&&(A=d.normalize(d.cross(h,g,A),A))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=A.x,r[c++]=A.y,r[c++]=A.z,r[c++]=A.x,r[c++]=A.y,r[c++]=A.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return wme(t,{positions:e,normals:o,tangents:r,bitangents:s})}function Dme(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let A=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,_=0,y=Sq,C=Ftt,E=Number.MAX_VALUE,I=Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE;for(let x=c;x<u;++x)for(let T=0;T<r;++T)da.computePosition(t,i,n.st,x,T,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y));if(s&&(da.computePosition(t,i,n.st,0,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=C.x,I=C.y,b=C.x,S=C.y)),a&&(da.computePosition(t,i,n.st,o-1,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m]=y.z,n.st&&(g[_++]=C.x,g[_]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y))),n.st&&(E<0||I<0||b>1||S>1))for(let x=0;x<g.length;x+=2)g[x]=(g[x]-E)/(b-E),g[x+1]=(g[x+1]-I)/(S-I);let B=Utt(A,n,i,t.tangentRotationMatrix),v=6*(r-1)*(f-1);s&&(v+=3*(r-1)),a&&(v+=3*(r-1));let P=Fe.createTypedArray(h,v),N=0,L=0,p;for(p=0;p<f-1;++p){for(let x=0;x<r-1;++x){let T=N,w=T+r,M=w+1,O=T+1;P[L++]=T,P[L++]=w,P[L++]=O,P[L++]=O,P[L++]=w,P[L++]=M,++N}++N}if(s||a){let x=h-1,T=h-1;s&&a&&(x=h-2);let w,M;if(N=0,s)for(p=0;p<r-1;p++)w=N,M=w+1,P[L++]=x,P[L++]=w,P[L++]=M,++N;if(a)for(N=(f-1)*r,p=0;p<r-1;p++)w=N,M=w+1,P[L++]=w,P[L++]=T,P[L++]=M,++N}return B.indices=P,n.st&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),B}function Hb(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function Wb(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var Bq=new Pe;function ztt(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let it=Pe.clone(o,Bq);it.normal=!0,e._vertexFormat=it}let h=Dme(e,t);n&&(e._vertexFormat=o);let A=xi.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);A=new Float64Array(A);let g=A.length,m=g*2,_=new Float64Array(m);_.set(A);let y=xi.scaleToGeodeticHeight(h.attributes.position.values,r,a);_.set(y,g),h.attributes.position.values=_;let C=o.normal?new Float32Array(m):void 0,E=o.tangent?new Float32Array(m):void 0,I=o.bitangent?new Float32Array(m):void 0,b=o.st?new Float32Array(m/3*2):void 0,S,B;if(o.normal){for(B=h.attributes.normal.values,C.set(B),f=0;f<g;f++)B[f]=-B[f];C.set(B,g),h.attributes.normal.values=C}if(n){B=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let it=new Float32Array(m);for(f=0;f<g;f++)B[f]=-B[f];it.set(B,g),h.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:it})}let v,P=l(i);if(P){let it=g/3*2,tn=new Uint8Array(it);i===hn.TOP?tn=tn.fill(1,0,it/2):(v=i===hn.NONE?0:1,tn=tn.fill(v)),h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:tn})}if(o.tangent){let it=h.attributes.tangent.values;for(E.set(it),f=0;f<g;f++)it[f]=-it[f];E.set(it,g),h.attributes.tangent.values=E}if(o.bitangent){let it=h.attributes.bitangent.values;I.set(it),I.set(it,g),h.attributes.bitangent.values=I}o.st&&(S=h.attributes.st.values,b.set(S),b.set(S,g/3*2),h.attributes.st.values=b);let N=h.indices,L=N.length,p=g/3,x=Fe.createTypedArray(m/3,L*2);for(x.set(N),f=0;f<L;f+=3)x[f+L]=N[f+2]+p,x[f+1+L]=N[f+1]+p,x[f+2+L]=N[f]+p;h.indices=x;let T=t.northCap,w=t.southCap,M=c,O=2,U=0,Q=4,z=4;T&&(O-=1,M-=1,U+=1,Q-=2,z-=1),w&&(O-=1,M-=1,U+=1,Q-=2,z-=1),U+=O*u+2*M-Q;let F=(U+z)*2,H=new Float64Array(F*3),W=n?new Float32Array(F*3):void 0,Z=P?new Uint8Array(F):void 0,Y=o.st?new Float32Array(F*2):void 0,$=i===hn.TOP;P&&!$&&(v=i===hn.ALL?1:0,Z=Z.fill(v));let X=0,he=0,ge=0,fe=0,ye=u*M,Ie;for(f=0;f<ye;f+=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(w){let it=T?ye+1:ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=ye-u;f<ye;f++)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);for(f=ye-1;f>0;f-=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(T){let it=ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=u-1;f>=0;f--)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);let ve=Gtt(H,o,a);o.st&&(ve.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:Y})),n&&(ve.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:W})),P&&(ve.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:Z}));let Te=Fe.createTypedArray(F,U*6),ke,Ge,qe,tt;g=H.length/3;let $t=0;for(f=0;f<g-1;f+=2){ke=f,tt=(ke+2)%g;let it=d.fromArray(H,ke*3,wq),tn=d.fromArray(H,tt*3,Bme);d.equalsEpsilon(it,tn,D.EPSILON10)||(Ge=(ke+1)%g,qe=(Ge+2)%g,Te[$t++]=ke,Te[$t++]=Ge,Te[$t++]=tt,Te[$t++]=tt,Te[$t++]=Ge,Te[$t++]=qe)}return ve.indices=Te,ve=jn.combineInstances([new Rt({geometry:h}),new Rt({geometry:ve})]),ve[0]}var Vtt=[new d,new d,new d,new d],vme=new Ae,Htt=new Ae;function Dq(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=da.computeOptions(e,t,n,0,Sme,vme),s=r.height,a=r.width,c=Vtt;return da.computePosition(r,i,!1,0,0,c[0]),da.computePosition(r,i,!1,0,a-1,c[1]),da.computePosition(r,i,!1,s-1,0,c[2]),da.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function Xm(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=ae.clone(t),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}Xm.packedLength=ae.packedLength+te.packedLength+Pe.packedLength+7;Xm.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var Pme=new ae,Rme=te.clone(te.UNIT_SPHERE),ny={rectangle:Pme,ellipsoid:Rme,vertexFormat:Bq,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Xm.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Pme);t+=ae.packedLength;let o=te.unpack(e,t,Rme);t+=te.packedLength;let r=Pe.unpack(e,t,Bq);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,A=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=A===-1?void 0:A,n):(ny.granularity=s,ny.height=a,ny.rotation=c,ny.stRotation=u,ny.extrudedHeight=f,ny.shadowVolume=h,ny.offsetAttribute=A===-1?void 0:A,new Xm(ny))};Xm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.ellipsoid??te.default,r=e.rotation??0;return Dq(n,i,r,o,t)};var Wtt=new J,Eme=new Le,jtt=new Ae;Xm.createGeometry=function(e){if(D.equalsEpsilon(e._rectangle.north,e._rectangle.south,D.EPSILON10)||D.equalsEpsilon(e._rectangle.east,e._rectangle.west,D.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=da.computeOptions(t,e._granularity,i,o,Sme,vme,Htt),a=Wtt;if(o!==0||i!==0){let g=ae.center(t,jtt),m=n.geodeticSurfaceNormalCartographic(g,wq);Le.fromAxisAngle(m,-o,Eme),J.fromQuaternion(Eme,a)}else J.clone(J.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!D.equalsEpsilon(c,u,0,D.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,A;if(t=e._rectangle,f){h=ztt(e,s);let g=le.fromRectangle3D(t,n,c,ktt),m=le.fromRectangle3D(t,n,u,Qtt);A=le.union(g,m)}else{if(h=Dme(e,s),h.attributes.position.values=xi.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}A=le.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ht({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Xm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Xm({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};var Ime=new ae,Ytt=[new k,new k,new k],qtt=new Wi,Ktt=new Ae;function Xtt(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,Ime),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=Dq(t,n,o,i,Ime),s=Ytt;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Wi.fromRotation(e._stRotation,qtt),u=ae.center(a,Ktt);for(let m=0;m<3;++m){let _=s[m];_.x-=u.longitude,_.y-=u.latitude,Wi.multiplyByVector(c,_,_),_.x+=u.longitude,_.y+=u.latitude,_.x=(_.x-a.west)/a.width,_.y=(_.y-a.south)/a.height}let f=s[0],h=s[1],A=s[2],g=new Array(6);return k.pack(f,g),k.pack(h,g,2),k.pack(A,g,4),g}Object.defineProperties(Xm.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=Dq(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Xtt(this)),this._textureCoordinateRotationPoints}}});var jb=Xm;var Mme=new G,Nme=d.ZERO,Lme=new d,Ome=new ae,Jtt=new ae,Ztt=new Ae;function $tt(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function hh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new $tt(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(hh.prototype=Object.create(ti.prototype),hh.prototype.constructor=hh);hh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Mme)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new jb(this._options),attributes:i})};hh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Mme),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new tb(this._options),attributes:r})};hh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.rectangle.coordinates,e,Jtt);if(!l(n))return;let i=ae.center(n,Ztt);return Ae.toCartesian(i,te.default,t)};hh.prototype._isHidden=function(e,t){return!l(t.coordinates)||Ci.prototype._isHidden.call(this,e,t)};hh.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.rotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};hh.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),o=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),r=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(je.MINIMUM_VALUE,a.rectangle),a.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),a.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),a.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),a.offsetAttribute=ti.computeGeometryOffsetAttribute(i,o,r,s),a.height=ti.getGeometryHeight(i,o),r=ti.getGeometryExtrudedHeight(r,s),r===ti.CLAMP_TO_GROUND&&(r=wi.getMinimumMaximumHeights(jb.computeRectangle(a,Ome)).minimumTerrainHeight),a.extrudedHeight=r};hh.DynamicGeometryUpdater=Yb;function Yb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Yb.prototype=Object.create(yi.prototype),Yb.prototype.constructor=Yb);Yb.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||yi.prototype._isHidden.call(this,e,t,n)};Yb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=j.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(jb.computeRectangle(i,Ome)).minimumTerrainHeight),i.extrudedHeight=s};var q3=hh;var Fme={};function ent(e,t){return D.equalsEpsilon(e.latitude,t.latitude,D.EPSILON10)&&D.equalsEpsilon(e.longitude,t.longitude,D.EPSILON10)}var tnt=new Ae,nnt=new Ae;function int(e,t,n,i){t=No(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,tnt);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let A=c[0],g=u[0],m=A===g,_=1;for(let y=1;y<o;++y){let C=t[y],E=e.cartesianToCartographic(C,nnt);s&&(E.height=n[y]),m=m&&E.height===0,ent(h,E)?h.height<E.height&&(c[_-1]=E.height):(a[_]=C,c[_]=E.height,r?u[_]=i[y]:u[_]=0,m=m&&c[_]===u[_],Ae.clone(E,h),++_)}if(!(m||_<2))return a.length=_,c.length=_,u.length=_,{positions:a,topHeights:c,bottomHeights:u}}var ont=new Array(2),rnt=new Array(2),snt={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};Fme.computePositions=function(e,t,n,i,o,r){let s=int(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=D.chordLength(o,e.maximumRadius),A=snt;if(A.minDistance=h,A.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Xi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let _=ont,y=rnt;A.positions=_,A.height=y;let C=0;for(m=0;m<a-1;m++){_[0]=t[m],_[1]=t[m+1],y[0]=n[m],y[1]=n[m+1];let E=Xi.generateArc(A);u.set(E,C),y[0]=i[m],y[1]=i[m+1],f.set(Xi.generateArc(A),C),C+=E.length}}else A.positions=t,A.height=n,u=new Float64Array(Xi.generateArc(A)),A.height=i,f=new Float64Array(Xi.generateArc(A));return{bottomPositions:f,topPositions:u,numCorners:c}};var qb=Fme;var vq=new d,K3=new d,ant=new d,Qme=new d,cnt=new d,lnt=new d,unt=new d;function ME(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??Pe.DEFAULT,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Pe.clone(o),this._granularity=r,this._ellipsoid=te.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+te.packedLength+Pe.packedLength+1}ME.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._granularity,t};var kme=te.clone(te.UNIT_SPHERE),Ume=new Pe,ov={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:kme,vertexFormat:Ume,granularity:void 0};ME.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,kme);t+=te.packedLength;let u=Pe.unpack(e,t,Ume);t+=Pe.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._vertexFormat=Pe.clone(u,n._vertexFormat),n._granularity=f,n):(ov.positions=r,ov.minimumHeights=s,ov.maximumHeights=a,ov.granularity=f,new ME(ov))};ME.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new ME(c)};ME.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=qb.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,A=h*2,g=o.position?new Float64Array(A):void 0,m=o.normal?new Float32Array(A):void 0,_=o.tangent?new Float32Array(A):void 0,y=o.bitangent?new Float32Array(A):void 0,C=o.st?new Float32Array(A/3*2):void 0,E=0,I=0,b=0,S=0,B=0,v=unt,P=lnt,N=cnt,L=!0;h/=3;let p,x=0,T=1/(h-f-1);for(p=0;p<h;++p){let Q=p*3,z=d.fromArray(u,Q,vq),F=d.fromArray(c,Q,K3);if(o.position&&(g[E++]=F.x,g[E++]=F.y,g[E++]=F.z,g[E++]=z.x,g[E++]=z.y,g[E++]=z.z),o.st&&(C[B++]=x,C[B++]=0,C[B++]=x,C[B++]=1),o.normal||o.tangent||o.bitangent){let H=d.clone(d.ZERO,Qme),W=d.subtract(z,s.geodeticSurfaceNormal(z,K3),K3);if(p+1<h&&(H=d.fromArray(u,Q+3,Qme)),L){let Z=d.subtract(H,z,ant),Y=d.subtract(W,z,vq);v=d.normalize(d.cross(Y,Z,v),v),L=!1}d.equalsEpsilon(z,H,D.EPSILON10)?L=!0:(x+=T,o.tangent&&(P=d.normalize(d.subtract(H,z,P),P)),o.bitangent&&(N=d.normalize(d.cross(v,P,N),N))),o.normal&&(m[I++]=v.x,m[I++]=v.y,m[I++]=v.z,m[I++]=v.x,m[I++]=v.y,m[I++]=v.z),o.tangent&&(_[S++]=P.x,_[S++]=P.y,_[S++]=P.z,_[S++]=P.x,_[S++]=P.y,_[S++]=P.z),o.bitangent&&(y[b++]=N.x,y[b++]=N.y,y[b++]=N.z,y[b++]=N.x,y[b++]=N.y,y[b++]=N.z)}}let w=new En;o.position&&(w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),o.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:y})),o.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C}));let M=A/3;A-=6*(f+1);let O=Fe.createTypedArray(M,A),U=0;for(p=0;p<M-2;p+=2){let Q=p,z=p+2,F=d.fromArray(g,Q*3,vq),H=d.fromArray(g,z*3,K3);if(d.equalsEpsilon(F,H,D.EPSILON10))continue;let W=p+1,Z=p+3;O[U++]=W,O[U++]=Q,O[U++]=Z,O[U++]=Z,O[U++]=Q,O[U++]=z}return new ht({attributes:w,indices:O,primitiveType:Me.TRIANGLES,boundingSphere:new le.fromVertices(g)})};var X3=ME;var Gme=new d,zme=new d;function NE(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=te.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+te.packedLength+1}NE.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n]=e._granularity,t};var Vme=te.clone(te.UNIT_SPHERE),rv={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:Vme,granularity:void 0};NE.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,Vme);t+=te.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._granularity=u,n):(rv.positions=r,rv.minimumHeights=s,rv.maximumHeights=a,rv.granularity=u,new NE(rv))};NE.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new NE(c)};NE.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=qb.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),A=0;u/=3;let g;for(g=0;g<u;++g){let E=g*3,I=d.fromArray(c,E,Gme),b=d.fromArray(a,E,zme);h[A++]=b.x,h[A++]=b.y,h[A++]=b.z,h[A++]=I.x,h[A++]=I.y,h[A++]=I.z}let m=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})}),_=f/3;f=2*_-4+_;let y=Fe.createTypedArray(_,f),C=0;for(g=0;g<_-2;g+=2){let E=g,I=g+2,b=d.fromArray(h,E*3,Gme),S=d.fromArray(h,I*3,zme);if(d.equalsEpsilon(b,S,D.EPSILON10))continue;let B=g+1,v=g+3;y[C++]=B,y[C++]=E,y[C++]=B,y[C++]=v,y[C++]=E,y[C++]=I}return y[C++]=_-2,y[C++]=_-1,new ht({attributes:m,indices:y,primitiveType:Me.LINES,boundingSphere:new le.fromVertices(h)})};var J3=NE;var Hme=new G;function fnt(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function mh(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new fnt(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(mh.prototype=Object.create(Ci.prototype),mh.prototype.constructor=mh);mh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Hme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new X3(this._options),attributes:i})};mh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Hme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new J3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};mh.prototype._isHidden=function(e,t){return!l(t.positions)||Ci.prototype._isHidden.call(this,e,t)};mh.prototype._getIsClosed=function(e){return!1};mh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.minimumHeights)||!j.isConstant(t.maximumHeights)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.granularity)};mh.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof Jt,s=this._options;s.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(je.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(je.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(je.MINIMUM_VALUE):void 0};mh.DynamicGeometryUpdater=Kb;function Kb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Kb.prototype=Object.create(yi.prototype),Kb.prototype.constructor=Kb);Kb.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||yi.prototype._isHidden.call(this,e,t,n)};Kb.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=j.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=j.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=j.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=j.getValueOrUndefined(t.granularity,n)};var Z3=mh;var LE=[rO,f3,i3,M3,N3,U3,H3,Y3,q3,Z3];function OE(e,t){this.entity=e,this.scene=t;let n=new Array(LE.length),i=new _e,o=new Lr;for(let r=0;r<n.length;r++){let s=new LE[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(OE.prototype._onEntityPropertyChanged,this)}OE.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};OE.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};OE.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};OE.registerUpdater=function(e){LE.includes(e)||LE.push(e)};OE.unregisterUpdater=function(e){if(LE.includes(e)){let t=LE.indexOf(e);LE.splice(t,1)}};var Xb=OE;var Wme=new G,dnt=new Ut,hnt=new Ut,mnt=d.ZERO,Ant=new d;function Ah(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(Ah.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}Ah.prototype.onMaterialChanged=function(){this.invalidated=!0};Ah.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};Ah.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Ah.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Ah.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let y=u.fillMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof Jt&&(!u.depthFailMaterialProperty.isConstant||c)){let y=u.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,hnt,dnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,mnt,Ant);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Ah.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Ah.prototype.contains=function(e){return this.updaters.contains(e.id)};Ah.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ah.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function Jb(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Jb.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new Ah(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function jme(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}Jb.prototype.remove=function(e){jme(this._solidItems,e)||jme(this._translucentItems,e)};function Yme(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function $3(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}Jb.prototype.update=function(e){let t=$3(this,this._solidItems,e,!0);t=$3(this,this._translucentItems,e,t)&&t;let n=Yme(this,this._solidItems,e),i=Yme(this,this._translucentItems,e);return(n||i)&&(t=$3(this,this._solidItems,e,t)&&t,t=$3(this,this._translucentItems,e,t)&&t),t};function qme(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return mt.FAILED}Jb.prototype.getBoundingSphere=function(e,t){let n=qme(this._solidItems,e,t);return n===mt.FAILED?qme(this._translucentItems,e,t):n};function Kme(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}Jb.prototype.removeAllPrimitives=function(){Kme(this._solidItems),Kme(this._translucentItems)};var ph=Jb;var pnt=new Ut,gnt=new Ut,_nt=d.ZERO,ynt=new d;function gh(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(gh.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt}gh.prototype.onMaterialChanged=function(){this.invalidated=!0};gh.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};gh.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty)||!j.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};gh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Cnt=new G;gh.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new kn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof Jt&&!c.depthFailMaterialProperty.isConstant){let y=c.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Cnt);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,gnt,pnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=c.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,_nt,ynt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};gh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};gh.prototype.contains=function(e){return this.updaters.contains(e.id)};gh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};gh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function Zb(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Zb.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new gh(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};Zb.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};Zb.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};Zb.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};Zb.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var _h=Zb;function eU(e,t,n=0,i=e.length-1,o=Ent){for(;i>n;){if(i-n>600){let c=i-n+1,u=t-n+1,f=Math.log(c),h=.5*Math.exp(2*f/3),A=.5*Math.sqrt(f*h*(c-h)/c)*(u-c/2<0?-1:1),g=Math.max(n,Math.floor(t-u*h/c+A)),m=Math.min(i,Math.floor(t+(c-u)*h/c+A));eU(e,t,g,m,o)}let r=e[t],s=n,a=i;for(sv(e,n,t),o(e[i],r)>0&&sv(e,n,i);s<a;){for(sv(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?sv(e,n,a):(a++,sv(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function sv(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ent(e,t){return e<t?-1:e>t?1:0}var lv=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!nU(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;nU(t,c)&&(n.leaf?i.push(a):Rq(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!nU(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(nU(t,s)){if(n.leaf||Rq(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=eT([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,u;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),u=!0),i.leaf){let f=Int(t,i.children,n);if(f!==-1)return i.children.splice(f,1),r.push(i),this._condense(r),this}!u&&!i.leaf&&Rq(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],u=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=eT(t.slice(n,i+1)),$b(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=eT([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),u=c*Math.ceil(Math.sqrt(s));Xme(t,n,i,u,this.compareMinX);for(let f=n;f<=i;f+=u){let h=Math.min(f+u-1,i);Xme(t,f,h,c,this.compareMinY);for(let A=f;A<=h;A+=c){let g=Math.min(A+c-1,h);a.children.push(this._build(t,A,g,o-1))}}return $b(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let u=n.children[c],f=Pq(u),h=Tnt(t,u)-f;h<s?(s=h,r=f<r?f:r,a=u):h===s&&f<r&&(r=f,a=u)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),cv(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=eT(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,$b(i,this.toBBox),$b(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=eT([t,n]),this.data.height=t.height+1,this.data.leaf=!1,$b(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=av(t,0,a,this.toBBox),u=av(t,a,i,this.toBBox),f=Snt(c,u),h=Pq(c)+Pq(u);f<r?(r=f,o=a,s=h<s?h:s):f===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:xnt,r=t.leaf?this.compareMinY:bnt,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=av(t,0,n,r),a=av(t,i-n,i,r),c=tU(s)+tU(a);for(let u=n;u<i-n;u++){let f=t.children[u];cv(s,t.leaf?r(f):f),c+=tU(s)}for(let u=i-n-1;u>=n;u--){let f=t.children[u];cv(a,t.leaf?r(f):f),c+=tU(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)cv(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():$b(t[n],this.toBBox)}};function Int(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function $b(e,t){av(e,0,e.children.length,t,e)}function av(e,t,n,i,o){o||(o=eT(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];cv(o,e.leaf?i(s):s)}return o}function cv(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function xnt(e,t){return e.minX-t.minX}function bnt(e,t){return e.minY-t.minY}function Pq(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function tU(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Tnt(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Snt(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function Rq(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function nU(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function eT(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Xme(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;eU(e,s,t,n,o),r.push(t,s,s,n)}}function iU(){this._tree=new lv}function FE(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}FE.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};iU.prototype.insert=function(e,t){let n=FE.fromRectangleAndId(e,t,new FE);this._tree.insert(n)};function wnt(e,t){return e.id===t.id}var Bnt=new FE;iU.prototype.remove=function(e,t){let n=FE.fromRectangleAndId(e,t,Bnt);this._tree.remove(n,wnt)};var Dnt=new FE;iU.prototype.collides=function(e){let t=FE.fromRectangleAndId("",e,Dnt);return this._tree.collides(t)};var tT=iU;var vnt=new G,Pnt=new Ut,Rnt=new Ut;function Lp(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new tT}Lp.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Lp.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Lp.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Lp.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Ll({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let _=u.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,vnt);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Rnt,Pnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Lp.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Lp.prototype.contains=function(e){return this.updaters.contains(e.id)};Lp.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),mt.DONE):mt.FAILED};Lp.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function nT(e,t){this._batches=[],this._primitives=e,this._classificationType=t}nT.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=j.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Lp(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};nT.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};nT.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};nT.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};nT.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var uv=nT;var Mnt=new Ut,Nnt=new Ut;function Jm(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new tT}Jm.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Jm.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Jm.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Jm.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};Jm.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material),n=new Ll({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Nnt,Mnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Jm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Jm.prototype.contains=function(e){return this.updaters.contains(e.id)};Jm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Jm.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function iT(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}iT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=xf.shouldUseSphericalCoordinates(o.geometry.rectangle),s=j.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new Jm(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};iT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};iT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};iT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};iT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var oU=iT;var Lnt=new G,Ont=new Ut,Fnt=new Ut,Qnt=d.ZERO,knt=new d;function Op(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.itemsToRemove=[],this.subscriptions=new Pt,this.showsUpdated=new Pt}Op.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Op.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Op.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new gn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let y=u.outlineColorProperty,C=j.getValueOrDefault(y,e,G.WHITE,Lnt);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let A=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Fnt,Ont);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Qnt,knt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Op.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Op.prototype.contains=function(e){return this.updaters.contains(e.id)};Op.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Op.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function oT(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new Pt,this._translucentBatches=new Pt}oT.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};oT.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};oT.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};oT.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return mt.FAILED};oT.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var fv=oT;var Unt=[];function su(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o=Dn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=_r.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new fv(n,e,s,!1),this._outlineBatches[o+s]=new fv(n,e,s,!0),this._closedColorBatches[s]=new ph(n,gn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new ph(n,gn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new _h(n,Io,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new _h(n,Io,void 0,!0,s,!1),this._openColorBatches[s]=new ph(n,gn,void 0,!1,s,!0),this._openColorBatches[o+s]=new ph(n,gn,void 0,!1,s,!1),this._openMaterialBatches[s]=new _h(n,Io,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new _h(n,Io,void 0,!1,s,!1);let a=Jn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new oU(i,s,Io)),c[s]=new uv(i,s);else for(s=0;s<a;++s)c[s]=new uv(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new Nb(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new Pt,this._updaterSets=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(su.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,Unt)}su.registerUpdater=function(e){Xb.registerUpdater(e)};su.unregisterUpdater=function(e){Xb.unregisterUpdater(e)};su.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(_){h._removeUpdater(_),h._insertUpdaterIntoBatch(e,_)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new Xb(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(_){h._insertUpdaterIntoBatch(e,_)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(su._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let A=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)A=g[a].update(e)&&A;return A};var Gnt=[],znt=new le;su.prototype.getBoundingSphere=function(e,t){let n=Gnt,i=znt,o=0,r=mt.DONE,s=this._batches,a=s.length,c=e.id,u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let A=0;A<a;A++){if(r=s[A].getBoundingSphere(h,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};su.prototype.isDestroyed=function(){return!1};su.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(su.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};su.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};su.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Dn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof Jt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};su._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};su.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var rU=su;var Vnt=1,Hnt="30px sans-serif",Wnt=ar.FILL,jnt=G.WHITE,Ynt=G.BLACK,qnt=1,Knt=!1,Xnt=new G(.165,.165,.165,.8),Jnt=new k(7,5),Znt=k.ZERO,$nt=d.ZERO,eit=Ze.NONE,tit=Ri.CENTER,nit=Wn.CENTER,iit=new d,oit=new G,rit=new G,sit=new G,ait=new k,cit=new d,lit=new k,uit=new Yt,fit=new Yt,dit=new Yt,hit=new Ut;function Jme(e){this.entity=e,this.label=void 0,this.index=void 0}function iy(e,t){t.collectionChanged.addEventListener(iy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}iy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,iit),c=j.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){Mq(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let A=!1,g=j.getValueOrDefault(a._heightReference,e,eit);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,A=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=j.getValueOrDefault(a._scale,e,Vnt),u.font=j.getValueOrDefault(a._font,e,Hnt),u.style=j.getValueOrDefault(a._style,e,Wnt),u.fillColor=j.getValueOrDefault(a._fillColor,e,jnt,oit),u.outlineColor=j.getValueOrDefault(a._outlineColor,e,Ynt,rit),u.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,qnt),u.showBackground=j.getValueOrDefault(a._showBackground,e,Knt),u.backgroundColor=j.getValueOrDefault(a._backgroundColor,e,Xnt,sit),u.backgroundPadding=j.getValueOrDefault(a._backgroundPadding,e,Jnt,ait),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,Znt,lit),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,$nt,cit),u.heightReference=g,u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,tit),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,nit),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,uit),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,fit),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,dit),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,hit),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),A&&u._updateClamping()}return!0};iy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return mt.FAILED;let i=n.label;return t.center=d.clone(i._clampedPosition??i.position,t.center),t.radius=0,mt.DONE};iy.prototype.isDestroyed=function(){return!1};iy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(iy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};iy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new Jme(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Jme(r)):(Mq(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Mq(s.get(r.id),r,a),s.remove(r.id)};function Mq(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var sU=iy;var mit=1,Ait=!0,pit=0,git=!0,_it=!0,yit=Dn.ENABLED,Cit=Ze.NONE,Eit=G.RED,Iit=0,xit=G.WHITE,bit=al.HIGHLIGHT,Tit=.5,Sit=new k(1,1),Zme={maximumPositionEpsilon:Number.POSITIVE_INFINITY},wit=new R,Bit=new R,$me=new G,eAe=new Array(4),Dit=new d;function oy(e,t){t.collectionChanged.addEventListener(oy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}async function vit(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Mm.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}oy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,wit),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u?.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...Zme}},n[s.id]=u;let m=j.getValueOrDefault(a._incrementallyLoadTextures,e,git),_=j.getValueOrDefault(a._environmentMapOptions,e,Zme,u.environmentMapOptionsScratch);vit(this,s,c,m,_)}let A=u.modelPrimitive;if(!l(A))continue;A.show=!0,A.scale=j.getValueOrDefault(a._scale,e,mit),A.enableVerticalExaggeration=j.getValueOrDefault(a._enableVerticalExaggeration,e,Ait),A.minimumPixelSize=j.getValueOrDefault(a._minimumPixelSize,e,pit),A.maximumScale=j.getValueOrUndefined(a._maximumScale,e),A.modelMatrix=R.clone(h,A.modelMatrix),A.shadows=j.getValueOrDefault(a._shadows,e,yit),A.heightReference=j.getValueOrDefault(a._heightReference,e,Cit),A.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e),A.silhouetteColor=j.getValueOrDefault(a._silhouetteColor,e,Eit,$me),A.silhouetteSize=j.getValueOrDefault(a._silhouetteSize,e,Iit),A.color=j.getValueOrDefault(a._color,e,xit,$me),A.colorBlendMode=j.getValueOrDefault(a._colorBlendMode,e,bit),A.colorBlendAmount=j.getValueOrDefault(a._colorBlendAmount,e,Tit),A.clippingPlanes=j.getValueOrUndefined(a._clippingPlanes,e),A.clampAnimations=j.getValueOrDefault(a._clampAnimations,e,_it),A.imageBasedLighting.imageBasedLightingFactor=j.getValueOrDefault(a._imageBasedLightingFactor,e,Sit);let g=j.getValueOrUndefined(a._lightColor,e);if(l(g)&&(G.pack(g,eAe,0),g=d.unpack(eAe,0,Dit)),A.lightColor=g,A.customShader=j.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,A.ready){let m=j.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?A.activeAnimations.addAll({loop:vu.REPEAT}):A.activeAnimations.removeAll(),u.animationsRunning=m);let _=j.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(_)){let E=Object.keys(_);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=_[S];if(!l(B))continue;let v=A.getNode(S);if(!l(v))continue;let P=R.fromTranslationRotationScale(B,Bit);v.matrix=R.multiply(v.originalMatrix,P,P)}}let y=!1,C=j.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(C)){let E=Object.keys(C);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=C[S];l(B)&&(y=!0,A.setArticulationStage(S,B))}}y&&A.applyArticulations()}}return!0};oy.prototype.isDestroyed=function(){return!1};oy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(oy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)Nq(this,e[i],t,n);return ue(this)};var aU=new d,Pit=new Ae;oy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return mt.FAILED;if(n.loadFailed)return mt.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return mt.PENDING;if(!i.ready||!n.modelUpdated)return mt.PENDING;let o=this._scene,r=o.ellipsoid??te.default;if(i.heightReference!==Ze.NONE){let a=i.modelMatrix;aU.x=a[12],aU.y=a[13],aU.z=a[14];let c=r.cartesianToCartographic(aU,Pit),u=o.getHeight(c,i.heightReference);return l(u)&&(_f(i.heightReference)?c.height=u:c.height+=u),le.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),mt.DONE}return le.clone(i.boundingSphere,t),mt.DONE};oy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(Rit(r,a),s.set(r.id,r)):(Nq(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Nq(this,r,a,c),s.remove(r.id)};function Nq(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function Rit(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var cU=oy;function ry(e){this._definitionChanged=new _e,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(ry.prototype,{isConstant:{get:function(){return j.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:eo.FIXED}}});var Mit=new K;ry.prototype.getValue=function(e,t){return l(e)||(e=K.now(Mit)),this.getValueInReferenceFrame(e,eo.FIXED,t)};ry.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};ry.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?te.default.scaleToGeodeticSurface(n,n):void 0};ry.prototype.equals=function(e){return this===e||e instanceof ry&&this._value===e._value};ry.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Fp=ry;var Nit=60,Lit=1,nAe=new Rn,Lq=new Rn,Oq=new Rn;function tAe(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Oit(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||K.lessThanOrEquals(o,t)||K.greaterThanOrEquals(o,n),A=0,g=i.length,m=i[A],_=n,y=!1,C,E,I;for(;A<g;){if(!h&&K.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),K.greaterThan(m,t)&&K.lessThan(m,_)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),A<g-1){if(s>0&&!y){let b=i[A+1],S=K.secondsDifference(b,m);y=S>s,y&&(C=Math.ceil(S/s),E=0,I=S/Math.max(C,2),C=Math.max(C-1,1))}if(y&&E<C){m=K.addSeconds(m,I,new K),E++;continue}}y=!1,A++,m=i[A]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function Fit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!A&&K.greaterThanOrEquals(h,i)&&(A=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,r*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function Qit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=Math.max(r,60),g=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!g&&K.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,A*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function kit(e,t,n,i,o,r,s,a){Oq.start=t,Oq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Oq,nAe).isEmpty){let A=h.start;h.isStartIncluded||(h.isStopIncluded?A=h.stop:A=K.addSeconds(h.start,K.secondsDifference(h.stop,h.start)/2,new K));let g=e.getValueInReferenceFrame(A,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function Uit(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function Git(e,t,n,i,o,r,s,a){Lq.start=t,Lq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Lq,nAe).isEmpty){let A=h.start,g=h.stop,m=t;K.greaterThan(A,m)&&(m=A);let _=n;K.lessThan(g,_)&&(_=g),c=iAe(h.data,m,_,i,o,r,c,a)}}return c}function iAe(e,t,n,i,o,r,s,a){for(;e instanceof q_;)e=e.resolvedProperty;if(e instanceof ic){let c=e._property._times;s=Oit(e,t,n,c,i,o,r,s,a)}else e instanceof sO?s=Fit(e,t,n,i,o,r,s,a):e instanceof nc?s=Git(e,t,n,i,o,r,s,a):e instanceof X_?s=kit(e,t,n,i,o,r,s,a):e instanceof Ol||e instanceof Fp&&j.isConstant(e)?s=Uit(e,t,n,i,o,r,s,a):s=Qit(e,t,n,i,o,r,s,a);return s}function oAe(e,t,n,i,o,r,s){l(s)||(s=[]);let a=iAe(e,t,n,i,o,r,0,s);return s.length=a,s}var zit=new J;function dv(e,t){this._unusedIndexes=[],this._polylineCollection=new Fm,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}dv.prototype.update=function(e){if(this._referenceFrame===eo.INERTIAL){let t=kt.computeIcrfToCentralBodyFixedMatrix(e,zit);R.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};dv.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=j.getValueOrUndefined(i._leadTime,e),A=j.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),_=l(h),y=l(A);if(u=m||_&&y,u){if(y&&(r=K.addSeconds(e,-A,new K)),_&&(s=K.addSeconds(e,h,new K)),m){let C=g.start,E=g.stop;(!y||K.greaterThan(C,r))&&(r=C),(!_||K.lessThan(E,s))&&(s=E)}u=K.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=j.getValueOrDefault(i._resolution,e,Nit);c.show=!0,c.positions=oAe(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=gr.getValue(e,i._material,c.material),c.width=j.getValueOrDefault(i._width,e,Lit),c.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};dv.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};dv.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function sy(e,t){t.collectionChanged.addEventListener(sy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}sy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=eo.FIXED;this._scene.mode===ie.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new dv(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};sy.prototype.isDestroyed=function(){return!1};sy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(sy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};sy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new tAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new tAe(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};sy._subSample=oAe;var lU=sy;var rAe=G.WHITE,sAe=G.BLACK,aAe=0,cAe=1,lAe=0,uAe=wr.NONE,fAe=new G,Vit=new d,dAe=new G,hAe=new Yt,mAe=new Yt,AAe=new Ut;function pAe(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function ay(e,t){t.collectionChanged.addEventListener(ay.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}ay.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=j.getValueOrDefault(a._heightReference,e,Ze.NONE),h=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),A;if(h&&(A=j.getValueOrUndefined(s._position,e,Vit),h=l(A)),!h){hv(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==Ze.NONE&&!l(u)?(l(c)&&(hv(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,A)&&u.heightReference===f):f===Ze.NONE&&!l(c)&&(l(u)&&(hv(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=A,c.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),c.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),c.color=j.getValueOrDefault(a._color,e,rAe,fAe),c.outlineColor=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),c.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,aAe),c.pixelSize=j.getValueOrDefault(a._pixelSize,e,cAe),c.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),c.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),c.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe);else if(l(u)){u.show=!0,u.position=A,u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),u.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe),u.heightReference=f;let _=j.getValueOrDefault(a._color,e,rAe,fAe),y=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),C=Math.round(j.getValueOrDefault(a._outlineWidth,e,aAe)),E=Math.max(1,Math.round(j.getValueOrDefault(a._pixelSize,e,cAe)));if(C>0?(u.scale=1,g=g||C!==r.outlineWidth||E!==r.pixelSize||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)):(u.scale=E/50,E=50,g=g||C!==r.outlineWidth||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)),g){r.color=G.clone(_,r.color),r.outlineColor=G.clone(y,r.outlineColor),r.pixelSize=E,r.outlineWidth=C;let I=_.alpha,b=_.toCssColorString(),S=y.toCssColorString(),B=JSON.stringify([b,E,S,C]);u.setImage(B,Hx(I,b,S,C,E))}m&&u._updateClamping()}}return!0};ay.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return mt.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};ay.prototype.isDestroyed=function(){return!1};ay.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(ay.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};ay.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new pAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new pAe(r)):(hv(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],hv(s.get(r.id),r,a),s.remove(r.id)};function hv(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var uU=ay;var EAe=[];function Hit(e,t,n,i,o){let r=EAe;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,A=i.green,g=i.blue,m=i.alpha;if(G.equals(n,i)){for(s=0;s<o;s++)r[s]=G.clone(n);return r}let _=(h-a)/o,y=(A-c)/o,C=(g-u)/o,E=(m-f)/o;for(s=0;s<o;s++)r[s]=new G(a+s*_,c+s*y,u+s*C,f+s*E);return r}function mv(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*G.packedLength:1,this.packedLength=r+te.packedLength+Pe.packedLength+4}mv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var IAe=te.clone(te.UNIT_SPHERE),xAe=new Pe,QE={positions:void 0,colors:void 0,ellipsoid:IAe,vertexFormat:xAe,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};mv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t,IAe);t+=te.packedLength;let c=Pe.unpack(e,t,xAe);t+=Pe.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],A=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=A,n):(QE.positions=r,QE.colors=s,QE.width=u,QE.colorsPerVertex=f,QE.arcType=h,QE.granularity=A,new mv(QE))};var gAe=new d,_Ae=new d,yAe=new d,CAe=new d;mv.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],A=No(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let M=0,O=h[0];i=i.filter(function(U,Q){let z=!1;return o?z=Q===O||Q===0&&O===1:z=Q+1===O,z?(M++,O=h[M],!1):!0})}let g=A.length;if(g<2||t<=0)return;if(r===un.GEODESIC||r===un.RHUMB){let M,O;r===un.GEODESIC?(M=D.chordLength(s,a.maximumRadius),O=Xi.numberOfPoints):(M=s,O=Xi.numberOfPointsRhumbLine);let U=Xi.extractHeights(A,a);if(l(i)){let Q=1;for(c=0;c<g-1;++c)Q+=O(A[c],A[c+1],M);let z=new Array(Q),F=0;for(c=0;c<g-1;++c){let H=A[c],W=A[c+1],Z=i[c],Y=O(H,W,M);if(o&&c<Q){let $=i[c+1],X=Hit(H,W,Z,$,Y),he=X.length;for(u=0;u<he;++u)z[F++]=X[u]}else for(u=0;u<Y;++u)z[F++]=G.clone(Z)}z[F]=G.clone(i[i.length-1]),i=z,EAe.length=0}r===un.GEODESIC?A=Xi.generateCartesianArc({positions:A,minDistance:M,ellipsoid:a,height:U}):A=Xi.generateCartesianRhumbArc({positions:A,granularity:M,ellipsoid:a,height:U})}g=A.length;let m=g*4-4,_=new Float64Array(m*3),y=new Float64Array(m*3),C=new Float64Array(m*3),E=new Float32Array(m*2),I=n.st?new Float32Array(m*2):void 0,b=l(i)?new Uint8Array(m*4):void 0,S=0,B=0,v=0,P=0,N;for(u=0;u<g;++u){u===0?(N=gAe,d.subtract(A[0],A[1],N),d.add(A[0],N,N)):N=A[u-1],d.clone(N,yAe),d.clone(A[u],_Ae),u===g-1?(N=gAe,d.subtract(A[g-1],A[g-2],N),d.add(A[g-1],N,N)):N=A[u+1],d.clone(N,CAe);let M,O;l(b)&&(u!==0&&!o?M=i[u-1]:M=i[u],u!==g-1&&(O=i[u]));let U=u===0?2:0,Q=u===g-1?2:4;for(f=U;f<Q;++f){d.pack(_Ae,_,S),d.pack(yAe,y,S),d.pack(CAe,C,S),S+=3;let z=f-2<0?-1:1;if(E[B++]=2*(f%2)-1,E[B++]=z*t,n.st&&(I[v++]=u/(g-1),I[v++]=Math.max(E[B-2],0)),l(b)){let F=f<2?M:O;b[P++]=G.floatToByte(F.red),b[P++]=G.floatToByte(F.green),b[P++]=G.floatToByte(F.blue),b[P++]=G.floatToByte(F.alpha)}}}let L=new En;L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:_}),L.prevPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),L.nextPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C}),L.expandAndWidth=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:E}),n.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:I})),l(b)&&(L.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0}));let p=Fe.createTypedArray(m,g*6-6),x=0,T=0,w=g-1;for(u=0;u<w;++u)p[T++]=x,p[T++]=x+2,p[T++]=x+1,p[T++]=x+1,p[T++]=x+2,p[T++]=x+3,x+=4;return new ht({attributes:L,indices:p,primitiveType:Me.TRIANGLES,boundingSphere:le.fromPoints(A),geometryType:Ld.POLYLINES})};var cy=mv;var Wit=new ci(0),fU={},bAe=new G,jit=new Jt(G.WHITE),Yit=new ci(!0),qit=new ci(Dn.DISABLED),Kit=new ci(new Ut),Xit=new ci(Jn.BOTH);function Jit(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function Zit(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function yh(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(yh.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new Jit,this._groundGeometryOptions=new Zit,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=_r.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(yh.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});yh.prototype.isOutlineVisible=function(e){return!1};yh.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};yh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof Jt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)),this.clampToGround?new Rt({id:t,geometry:new bI(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof Jt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.depthFailColor=en.fromColor(a)),new Rt({id:t,geometry:new cy(this._geometryOptions),attributes:s}))};yh.prototype.createOutlineGeometryInstance=function(e){};yh.prototype.isDestroyed=function(){return!1};yh.prototype.destroy=function(){this._entitySubscription(),ue(this)};yh.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(je.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??jit,u=c instanceof Jt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??Yit,this._shadowsProperty=o.shadows??qit,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??Kit,this._classificationTypeProperty=o.classificationType??Xit,this._fillEnabled=!0,this._zIndex=a??Wit;let f=o.width,h=o.arcType,A=o.clampToGround,g=o.granularity;if(!r.isConstant||!j.isConstant(f)||!j.isConstant(h)||!j.isConstant(g)||!j.isConstant(A)||!j.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,_=r.getValue(je.MINIMUM_VALUE,m.positions);if(!l(_)||_.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let y;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof Jt)?y=bs.VERTEX_FORMAT:y=Za.VERTEX_FORMAT,m.vertexFormat=y,m.positions=_,m.width=l(f)?f.getValue(je.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(je.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(je.MINIMUM_VALUE):void 0;let C=this._groundGeometryOptions;C.positions=_,C.width=m.width,C.arcType=m.arcType,C.granularity=m.granularity,this._clampToGround=l(A)?A.getValue(je.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&yt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};yh.prototype.createDynamicUpdater=function(e,t){return new Av(e,t,this)};var rT={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function Av(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function TAe(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=fU[n];!l(i)||i.isDestroyed()?(i=new Fm,fU[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}Av.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=j.getValueOrUndefined(o,e,this._positions);t._clampToGround=j.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=j.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=j.getValueOrDefault(i._arcType,e,un.GEODESIC),t._groundGeometryOptions.granularity=j.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,A;if(h instanceof Jt)A=new bs;else{let g=gr.getValue(e,h,this._material);A=new Za({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new sm({geometryInstances:t.createFillGeometryInstance(e),appearance:A,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),j.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=TAe(this);if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=un.GEODESIC;c=j.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==un.NONE&&l(u)&&(rT.ellipsoid=f,rT.positions=r,rT.granularity=j.getValueOrUndefined(i._granularity,e),rT.height=Xi.extractHeights(r,f),c===un.GEODESIC?r=Xi.generateCartesianArc(rT):r=Xi.generateCartesianRhumbArc(rT)),a.show=!0,a.positions=r.slice(),a.material=gr.getValue(e,t.fillMaterialProperty,a.material),a.width=j.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};Av.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return le.clone(n.boundingSphere,e),mt.DONE}return l(t)&&!t.ready?mt.PENDING:mt.DONE}else{let t=TAe(this);if(t.show&&t.positions.length>0)return le.fromPoints(t.positions,e),mt.DONE}return mt.FAILED};Av.prototype.isDestroyed=function(){return!1};Av.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=fU[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete fU[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var dU=yh;var $it=new G,eot=new Ut,tot=new Ut;function Ch(e,t,n,i,o){let r;n instanceof Jt?r=bs:r=Za,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Ch.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt,this.zIndex=i,this._asynchronous=o}Ch.prototype.onMaterialChanged=function(){this.invalidated=!0};Ch.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Ch.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Ch.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};Ch.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new sm({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let _=c.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,$it);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,tot,eot);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Ch.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Ch.prototype.contains=function(e){return this.updaters.contains(e.id)};Ch.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ch.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function sT(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}sT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=j.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new Ch(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};sT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};sT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};sT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};sT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var hU=sT;var not=[];function SAe(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function wAe(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof Jt?1:2);let r;l(i)&&(r=i+o*Dn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof Jt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function Zm(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o,r=Dn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new ph(n,bs,void 0,!1,o),this._materialBatches[o]=new _h(n,Za,void 0,!1,o),this._colorBatches[o+r]=new ph(n,bs,bs,!1,o),this._materialBatches[o+r]=new _h(n,Za,bs,!1,o),this._colorBatches[o+r*2]=new ph(n,bs,Za,!1,o),this._materialBatches[o+r*2]=new _h(n,Za,Za,!1,o);this._dynamicBatch=new Nb(n,i);let s=Jn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new hU(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new Pt,this._updaters=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(Zm.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,not)}Zm.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(SAe(this,f),wAe(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),SAe(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new dU(c,this._scene),this._updaters.set(u,f),wAe(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(Zm._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,A=this._batches,g=A.length;for(a=0;a<g;a++)h=A[a].update(e)&&h;return h};var iot=[],oot=new le;Zm.prototype.getBoundingSphere=function(e,t){let n=iot,i=oot,o=0,r=mt.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};Zm.prototype.isDestroyed=function(){return!1};Zm.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Zm.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};Zm._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Zm.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var mU=Zm;function au(e){Ll.initializeTerrainHeights(),sm.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Lr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??au.defaultVisualizersCallback;let i=!1,o=new ou,r=new ou;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new c3;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var aT=[];au.registerVisualizer=function(e){aT.includes(e)||aT.push(e)};au.unregisterVisualizer=function(e){if(aT.includes(e)){let t=aT.indexOf(e);aT.splice(t,1)}};au.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new sM(t,i),new rU(e,i,n._primitives,n._groundPrimitives),new sU(t,i),new cU(e,i),new Yk(e,i),new uU(t,i),new lU(e,i),new mU(e,i,n._primitives,n._groundPrimitives),...aT.map(o=>new o(e,i))]};Object.defineProperties(au.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});au.prototype.isDestroyed=function(){return!1};au.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};au.prototype.update=function(e){if(!wi.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};au.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var rot=[],sot=new le;au.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return mt.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let A=this._dataSourceCollection;for(o=A.length,i=0;i<o;i++){let g=A.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return mt.FAILED;let s=rot,a=sot,c=0,u=mt.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let A=f[i];if(l(A.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===mt.PENDING)return mt.PENDING;u===mt.DONE&&(s[c]=le.clone(a,s[c]),c++)}}return c===0?mt.FAILED:(s.length=c,le.fromBoundingSpheres(s,n),mt.DONE)};au.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new ou),s=o.add(new S3);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};au.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};au.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var AU=au;function Fq(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}Fq.clone=function(e,t){if(l(e))return l(t)||(t=new Fq),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Eh=Fq;var BAe=new J,DAe=new J,vAe=new J,aot=new R,pU=new d,PAe=new d,Qq=new d,kq=new d,RAe=new d,MAe=new d,cot=new Le,lot=new d,uot=new J,cT=new K,fot=1.25;function dot(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let A=!1,g=!1,m,_,y;if(f===ie.SCENE3D){K.addSeconds(c,.001,cT);let v=o.getValue(cT,pU);if(l(v)||(K.addSeconds(c,-.001,cT),v=o.getValue(cT,pU),g=!0),l(v)){let P=kt.computeFixedToIcrfMatrix(c,BAe),N=kt.computeFixedToIcrfMatrix(cT,DAe),L;!l(P)||!l(N)?(L=kt.computeTemeToPseudoFixedMatrix(c,vAe),P=J.transpose(L,BAe),N=kt.computeTemeToPseudoFixedMatrix(cT,DAe),J.transpose(N,N)):L=J.transpose(P,vAe);let p=J.multiplyByVector(P,h,RAe),x=J.multiplyByVector(N,v,MAe);d.subtract(p,x,kq);let T=d.magnitude(kq)*1e3,w=D.GRAVITATIONALPARAMETER,M=-w/(T*T-2*w/d.magnitude(p));M<0||M>fot*u.maximumRadius?(m=PAe,d.normalize(h,m),d.negate(m,m),y=d.clone(d.UNIT_Z,Qq),_=d.cross(y,m,pU),d.magnitude(_)>D.EPSILON7&&(d.normalize(m,m),d.normalize(_,_),y=d.cross(m,_,Qq),d.normalize(y,y),A=!0)):d.equalsEpsilon(h,v,D.EPSILON7)||(y=PAe,d.normalize(p,y),d.normalize(x,x),_=d.cross(y,x,Qq),g&&(_=d.multiplyByScalar(_,-1,_)),d.equalsEpsilon(_,d.ZERO,D.EPSILON7)||(m=d.cross(_,y,pU),J.multiplyByVector(L,m,m),J.multiplyByVector(L,_,_),J.multiplyByVector(L,y,y),d.normalize(m,m),d.normalize(_,_),d.normalize(y,y),A=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let C,E,I;i&&(C=d.clone(t.position,kq),E=d.clone(t.direction,RAe),I=d.clone(t.up,MAe));let b=aot,S;l(s)&&(S=s.getValue(c,cot));let B=r.getValue(c,lot);if(a===Tg.INERTIAL&&l(S))R.fromTranslationQuaternionRotationScale(h,S,d.ONE,b);else if(a===Tg.VELOCITY&&l(B)){let v=kt.rotationMatrixFromPositionVelocity(h,B,u,uot);R.fromRotationTranslation(v,h,b)}else a===Tg.ENU||!A?kt.eastNorthUpToFixedFrame(h,u,b):(b[0]=m.x,b[1]=m.y,b[2]=m.z,b[3]=0,b[4]=_.x,b[5]=_.y,b[6]=_.z,b[7]=0,b[8]=y.x,b[9]=y.y,b[10]=y.z,b[11]=0,b[12]=h.x,b[13]=h.y,b[14]=h.z,b[15]=0);t._setTransform(b),i&&(d.clone(C,t.position),d.clone(E,t.direction),d.clone(I,t.up),d.cross(E,I,t.right))}if(n){let A=f===ie.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,A)}}function pv(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??te.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Z_(e.position,!0),this._offset3D=new d}Object.defineProperties(pv,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});pv.defaultOffset3D=new d(-14e3,3500,3500);var gU=new Eh,hot=new d;pv.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ie.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,A=n.camera,g=f||h,m=!0;if(f){let _=r.viewFrom,y=l(_);if(!y&&l(t)){gU.pitch=-D.PI_OVER_FOUR,gU.range=0;let C=a.getValue(e,hot);if(l(C)){let E=2-1/Math.max(1,d.magnitude(C)/i.maximumRadius);gU.pitch*=E}A.viewBoundingSphere(t,gU),this.boundingSphere=t,g=!1,m=!1}else(!y||!l(_.getValue(e,this._offset3D)))&&d.clone(pv._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ie.SCENE2D&&d.clone(A.position,this._offset3D);this._lastEntity=r,this._mode=o,dot(this,A,g,m,a,c,u,s,e,i)};var _U=pv;function _v(){this._cache={}}_v.prototype.fromColor=function(e,t){return yU(void 0,void 0,e,t,this._cache)};_v.prototype.fromUrl=function(e,t,n){return yU(e,void 0,t,n,this._cache)};_v.prototype.fromMakiIconId=function(e,t,n){return yU(fn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};_v.prototype.fromText=function(e,t,n){return yU(void 0,e,t,n,this._cache)};var mot=new G;function Aot(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,mot).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function NAe(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var gv=new Array(4);function yU(e,t,n,i,o){gv[0]=e,gv[1]=t,gv[2]=n,gv[3]=i;let r=JSON.stringify(gv),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Aot(c,n,i),l(e)){let f=we.createIfNeeded(e).fetchImage().then(function(h){return NAe(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=jx(t,{font:`bold ${i}px sans-serif`});NAe(c,u,i)}return o[r]=a,a}var ly=_v;function Uq(e){return e}function CU(e){if(e==null)return Uq;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var u=2,f=a.length,h=new Array(f);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;u<f;)h[u]=a[u],++u;return h}}function LAe(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Gq(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return OAe(e,n)})}:OAe(e,t)}function OAe(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=zq(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function zq(e,t){var n=CU(e.transform),i=e.arcs;function o(f,h){h.length&&h.pop();for(var A=i[f<0?~f:f],g=0,m=A.length;g<m;++g)h.push(n(A[g],g));f<0&&LAe(h,m)}function r(f){return n(f)}function s(f){for(var h=[],A=0,g=f.length;A<g;++A)o(f[A],h);return h.length<2&&h.push(h[0]),h}function a(f){for(var h=s(f);h.length<4;)h.push(h[0]);return h}function c(f){return f.map(a)}function u(f){var h=f.type,A;switch(h){case"GeometryCollection":return{type:h,geometries:f.geometries.map(u)};case"Point":A=r(f.coordinates);break;case"MultiPoint":A=f.coordinates.map(r);break;case"LineString":A=s(f.arcs);break;case"MultiLineString":A=f.arcs.map(s);break;case"Polygon":A=c(f.arcs);break;case"MultiPolygon":A=f.arcs.map(c);break;default:return null}return{type:h,coordinates:A}}return u(t)}function EU(e){return d.fromDegrees(e[0],e[1],e[2])}var Vq={"urn:ogc:def:crs:OGC:1.3:CRS84":EU,"EPSG:4326":EU,"urn:ogc:def:crs:EPSG::4326":EU},FAe={},QAe={},Hq=48,Wq,jq=G.ROYALBLUE,Yq=G.YELLOW,qq=2,Kq=G.fromBytes(255,255,0,100),Xq=!1,Cot={small:24,medium:48,large:64},Eot=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function kAe(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Eot.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${kAe(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Iot(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function xot(e,t){return new fm(Iot(kAe,e,t),!0)}function IU(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Xn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new ci(c):n(r,s))}return o}function Jq(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var UAe={Feature:zAe,FeatureCollection:bot,GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae},GAe={GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae};function zAe(e,t,n,i,o){if(t.geometry===null){IU(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new ce("feature.geometry is required.");let r=t.geometry.type,s=GAe[r];if(!l(s))throw new ce(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function bot(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)zAe(e,r[s],void 0,i,o)}function VAe(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=GAe[u];if(!l(f))throw new ce(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function HAe(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=G.fromCssColorString(g)),a=Cot[c["marker-size"]]??a;let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new jc;f.verticalOrigin=new ci(Wn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=Ze.CLAMP_TO_GROUND);let h=IU(t,e._entityCollection,o.describe);h.billboard=f,h.position=new Ol(n(i));let A=Promise.resolve(u).then(function(g){f.image=new ci(g)}).catch(function(){f.image=new ci(e._pinBuilder.fromColor(s,a))});e._promises.push(A)}function WAe(e,t,n,i,o){HAe(e,t,i,n.coordinates,o)}function jAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)HAe(e,t,i,r[s],o)}function YAe(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new ci(f));let h,A=a.stroke;l(A)&&(h=G.fromCssColorString(A));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new Jt(h))}let c=IU(t,e._entityCollection,o.describe),u=new $c;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new ci(Jq(i,n)),u.arcType=un.RHUMB}function qAe(e,t,n,i,o){YAe(e,t,i,n.coordinates,o)}function KAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)YAe(e,t,i,r[s],o)}function XAe(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new ci(g));let m,_=c.stroke;l(_)&&(m=G.fromCssColorString(_));let y=c["stroke-opacity"];l(y)&&y!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=y),l(m)&&(r=new ci(m));let C,E=c.fill,I=s.color.getValue();l(E)&&(C=G.fromCssColorString(E),C.alpha=I.alpha),y=c["fill-opacity"],l(y)&&y!==I.alpha&&(l(C)||(C=I.clone()),C.alpha=y),l(C)&&(s=new Jt(C))}let u=new lm;u.outline=new ci(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=un.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new xc(Jq(i[g],n)));let h=i[0];u.hierarchy=new ci(new xc(Jq(h,n),f)),h[0].length>2?u.perPositionHeight=new ci(!0):o.clampToGround||(u.height=0);let A=IU(t,e._entityCollection,o.describe);A.polygon=u}function JAe(e,t,n,i,o){XAe(e,t,i,n.coordinates,o)}function ZAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)XAe(e,t,i,r[s],o)}function $Ae(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Gq(n,n.objects[r]),a=UAe[s.type];a(e,s,s,i,o)}}function uy(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._promises=[],this._pinBuilder=new ly,this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}uy.load=function(e,t){return new uy().load(e,t)};Object.defineProperties(uy,{markerSize:{get:function(){return Hq},set:function(e){Hq=e}},markerSymbol:{get:function(){return Wq},set:function(e){Wq=e}},markerColor:{get:function(){return jq},set:function(e){jq=e}},stroke:{get:function(){return Yq},set:function(e){Yq=e}},strokeWidth:{get:function(){return qq},set:function(e){qq=e}},fill:{get:function(){return Kq},set:function(e){Kq=e}},clampToGround:{get:function(){return Xq},set:function(e){Xq=e}},crsNames:{get:function(){return Vq}},crsLinkHrefs:{get:function(){return FAe}},crsLinkTypes:{get:function(){return QAe}}});Object.defineProperties(uy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});uy.prototype.load=function(e,t){return epe(this,e,t,!0)};uy.prototype.process=function(e,t){return epe(this,e,t,!1)};function epe(e,t,n,i){ms.setLoading(e,!0),n=n??V.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Dt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:n.describe??xot,markerSize:n.markerSize??Hq,markerSymbol:n.markerSymbol??Wq,markerColor:n.markerColor??jq,strokeWidthProperty:new ci(n.strokeWidth??qq),strokeMaterialProperty:new Jt(n.stroke??Yq),fillMaterialProperty:new Jt(n.fill??Kq),clampToGround:n.clampToGround??Xq},Promise.resolve(r).then(function(a){return Tot(e,a,n,s,i)}).catch(function(a){throw ms.setLoading(e,!1),e._error.raiseEvent(e,a),a})}uy.prototype.update=function(e){return!0};function Tot(e,t,n,i,o){let r;l(i)&&(r=W_(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=UAe[t.type];if(!l(s))throw new ce(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?EU:null;if(l(a)){if(!l(a.properties))throw new ce("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=Vq[u.name],!l(c))throw new ce(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=FAe[u.href];if(l(f)||(f=QAe[u.type]),!l(f))throw new ce(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=Vq[`EPSG:${u.code}`],!l(c))throw new ce(`Unknown crs EPSG code: ${u.code}`)}else throw new ce(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,ms.setLoading(e,!1),e})})}var kE=uy;var Zq=function(e,t){return Zq=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},Zq(e,t)};function $m(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Zq(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Rs=function(){return Rs=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Rs.apply(this,arguments)};function tpe(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function npe(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var ipe="4.1.5";var ope=Object.prototype.hasOwnProperty;function Vu(e){return typeof e=="boolean"}function rpe(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function fy(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function Ih(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var xU=/\s+/,bU=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)ope.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();function ape(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=Sot(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=spe(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=spe(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):$q(c,r,n).substr(0,r+i);var u="";if(s.path&&(u+="/"+s.path),s.query&&(u+="?"+s.query),u)if((c+u).length>=r){if((c+u).length==t)return(c+u).substr(0,t);var f=r-c.length;return(c+$q(u,f,n)).substr(0,r+i)}else c+=u;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var A=r-c.length;return(c+$q(h,A,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var m="";return r>0&&(m=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+m).substr(0,r+i)}function Sot(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function spe(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function $q(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}function cpe(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}function lpe(e,t,n){return rpe(e,t,n)}var upe=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new bU({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?ape(t,i):o==="middle"?cpe(t,i):lpe(t,i)},e}();var eA=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();function fpe(e){return e>=0&&e<=31||e==127}function Qp(e){return e>=65&&e<=90||e>=97&&e<=122}function Ms(e){return e>=48&&e<=57}function TU(e){return e==34||e==39}function dy(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function xh(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function dpe(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function hpe(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function SU(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function mpe(e){return e<91?e==40:e==91||e==123}function eK(e){return e<93?e==41:e==93||e==125}var Ape=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/;var tK=/https?:\/\//i,ppe=new RegExp("^"+tK.source,"i"),wot=/^(javascript|vbscript):/i,Bot=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Dot=/^(?:\/\/)?([^/#?:]+)/,lT=Qp;function nK(e){return Qp(e)||Ms(e)||e===43||e===45||e===46}var kp=xh;function wU(e){return e===95||kp(e)}function iK(e){return xh(e)||hpe(e)||SU(e)}function BU(e){return e===47||e===63||e===35}function oK(e){return Ape.test(e.toLowerCase())}function gpe(e){if(wot.test(e))return!1;var t=e.match(Bot);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function _pe(e){var t=e.match(Dot);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!oK(o)}var vot=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Pot=/[:/?#]/;function ype(e){var t=e.split(Pot,1)[0];return vot.test(t)}var Rot=/^(https?:\/\/)?(?:www\.)?/i,Mot=/^\/\//,Cpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Oot(n)),this.stripPrefix.scheme&&(n=Not(n)),this.stripPrefix.www&&(n=Lot(n)),this.stripTrailingSlash&&(n=Fot(n)),this.decodePercentEncoding&&(n=Qot(n)),n},t}(eA);function Not(e){return e.replace(ppe,"")}function Lot(e){return e.includes("www.")?e.replace(Rot,"$1"):e}function Oot(e){return e.replace(Mot,"")}function Fot(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Qot(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}var Epe=/^mailto:/i,rK=xh;function DU(e){return rK(e)||dpe(e)}function Ipe(e){var t=e.split(".").pop();return oK(t)}var xpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(eA);function sK(e){return e===95||xh(e)}function bpe(e){return e.length<=140}var Tpe=["twitter","facebook","instagram","tiktok","youtube"];var Spe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:Ih(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var kot={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function aK(e){return e===45||e===46||e===95||Qp(e)||Ms(e)}function wpe(e,t){var n=kot[t];return n.test(e)}var Bpe=["twitter","instagram","soundcloud","tiktok","youtube"];var Dpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:Ih(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var Uot=/[-. ()]/,Got=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,zot=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,Vot=new RegExp("^".concat(Got.source,"|").concat(zot.source,"$"));function cK(e){return e===45||e===46||e===32}function vU(e){return e===44||e===59}function vpe(e){var t=e.charAt(0)==="+"||Uot.test(e);return t&&Vot.test(e)}var Ppe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(eA);var Hot=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),Mpe(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),Mpe(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function Npe(e,t){for(var n=new Hot(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)PU(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:Xot(n,s,o);break;case 12:Jot(n,s,o);break;case 0:Wot(n,s,o);break;case 1:jot(n,s,o);break;case 2:Yot(n,s,o);break;case 3:qot(n,s,o);break;case 4:Kot(n,s,i,o);break;case 5:Zot(n,s,o);break;case 6:$ot(n,s,i,o);break;case 7:ert(n,s,i,o);break;case 13:trt(n,s,o);break;case 14:nrt(n,s,o);break;case 8:irt(n,s,o);break;case 9:ort(n,s,o);break;case 10:rrt(n,s,o);break;case 15:srt(n,s,i,o);break;case 16:art(n,s,i,o);break;case 17:crt(n,s,i,o);break;case 18:lrt(n,s,i,o);break;case 19:urt(n,s,i,o);break;case 20:frt(n,s,o);break;case 21:drt(n,s,o);break;case 22:UE(n,s,o);break;case 23:hrt(n,s,o);break;case 24:mrt(n,s,o);break;case 25:Art(n,s,o);break;case 26:prt(n,s,o);break;case 27:grt(n,s,o);break;case 28:_rt(n,s,o);break;case 29:yrt(n,s,o);break;case 30:Crt(n,s,o);break;case 31:Ert(n,s,o);break;case 32:xrt(n,s,i,o);break;case 33:brt(n,s,o);break;case 34:Trt(n,s,o);break;case 35:Srt(n,s,o);break;case 36:wrt(n,s,i,o);break;case 37:Irt(n,s,i,o);break;case 38:Brt(n,s,i,o);break;case 39:Drt(n,s,i,o);break;case 40:vrt(n,s,o);break;case 41:Prt(n,s,o);break;default:Ih(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&lT(o)){var a=n.text.charCodeAt(n.charIdx-1);lT(a)||n.addMachine(RU(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(u){return ns(n,u)});return n.matches}function PU(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(Ort(i,28));else if(n===64)e.addMachine(Frt(i,30));else if(n===47)e.addMachine(uK(i,11));else if(n===43)e.addMachine(lK(i,37));else if(n===40)e.addMachine(lK(i,32));else{if(Ms(n)&&(e.addMachine(lK(i,38)),e.addMachine(Nrt(i,13))),rK(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(Lrt(i,o))}lT(n)&&e.addMachine(RU(i,0)),xh(n)&&e.addMachine(uK(i,5))}}function Wot(e,t,n){n===58?t.state=2:n===45?t.state=1:nK(n)||e.removeMachine(t)}function jot(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(uK(i,11))):nK(n)?t.state=0:e.removeMachine(t))}function Yot(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):kp(n)?(t.state=5,lT(n)&&e.addMachine(RU(i,0))):e.removeMachine(t)}function qot(e,t,n){n===47?t.state=4:iK(n)?(t.state=10,t.acceptStateReached=!0):ns(e,t)}function Kot(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):kp(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function Xot(e,t,n){n===47?t.state=12:e.removeMachine(t)}function Jot(e,t,n){kp(n)?t.state=5:e.removeMachine(t)}function Zot(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:BU(n)?t.state=10:wU(n)||ns(e,t)}function $ot(e,t,n,i){i===45||(i===46?ns(e,t):kp(i)?t.state=5:ns(e,t))}function ert(e,t,n,i){i===46?ns(e,t):kp(i)?(t.state=5,t.acceptStateReached=!0):ns(e,t)}function trt(e,t,n){n===46?t.state=14:n===58?t.state=8:Ms(n)||(BU(n)?t.state=10:xh(n)?e.removeMachine(t):ns(e,t))}function nrt(e,t,n){Ms(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ns(e,t)}function irt(e,t,n){Ms(n)?t.state=9:ns(e,t)}function ort(e,t,n){Ms(n)||(BU(n)?t.state=10:ns(e,t))}function rrt(e,t,n){iK(n)||ns(e,t)}function srt(e,t,n,i){n.toLowerCase()==="a"?t.state=16:UE(e,t,i)}function art(e,t,n,i){n.toLowerCase()==="i"?t.state=17:UE(e,t,i)}function crt(e,t,n,i){n.toLowerCase()==="l"?t.state=18:UE(e,t,i)}function lrt(e,t,n,i){n.toLowerCase()==="t"?t.state=19:UE(e,t,i)}function urt(e,t,n,i){n.toLowerCase()==="o"?t.state=20:UE(e,t,i)}function frt(e,t,n){n===58?t.state=21:UE(e,t,n)}function drt(e,t,n){DU(n)?t.state=22:e.removeMachine(t)}function UE(e,t,n){n===46?t.state=23:n===64?t.state=24:DU(n)?t.state=22:e.removeMachine(t)}function hrt(e,t,n){n===46||n===64?e.removeMachine(t):DU(n)?t.state=22:e.removeMachine(t)}function mrt(e,t,n){kp(n)?t.state=25:e.removeMachine(t)}function Art(e,t,n){n===46?t.state=27:n===45?t.state=26:wU(n)||ns(e,t)}function prt(e,t,n){n===45||n===46?ns(e,t):wU(n)?t.state=25:ns(e,t)}function grt(e,t,n){n===46||n===45?ns(e,t):kp(n)?(t.state=25,t.acceptStateReached=!0):ns(e,t)}function _rt(e,t,n){sK(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function yrt(e,t,n){sK(n)||ns(e,t)}function Crt(e,t,n){aK(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Ert(e,t,n){aK(n)||(xh(n)?e.removeMachine(t):ns(e,t))}function Irt(e,t,n,i){Ms(i)?t.state=38:(e.removeMachine(t),PU(e,n,i))}function xrt(e,t,n,i){Ms(i)?t.state=33:e.removeMachine(t),PU(e,n,i)}function brt(e,t,n){Ms(n)?t.state=34:e.removeMachine(t)}function Trt(e,t,n){Ms(n)?t.state=35:e.removeMachine(t)}function Srt(e,t,n){n===41?t.state=36:e.removeMachine(t)}function wrt(e,t,n,i){Ms(i)?t.state=38:cK(i)?t.state=39:e.removeMachine(t)}function Brt(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,vU(i)?t.state=40:i===35?t.state=41:Ms(i)||(i===40?t.state=32:cK(i)?t.state=39:(ns(e,t),lT(i)&&e.addMachine(RU(o,0))))}function Drt(e,t,n,i){Ms(i)?t.state=38:i===40?t.state=32:(ns(e,t),PU(e,n,i))}function vrt(e,t,n){vU(n)||(n===35?t.state=41:Ms(n)?t.state=38:ns(e,t))}function Prt(e,t,n){vU(n)?t.state=40:Ms(n)?e.removeMachine(t):ns(e,t)}function ns(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,f=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,A=i.slice(t.startIdx,o);switch(A=Mrt(A),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var m=tK.exec(A);if(m&&(h=h+m.index,A=A.slice(m.index)),!gpe(A))return;break}case 1:{if(!_pe(A))return;break}case 2:{if(!ype(A))return;break}default:Ih(t)}n.push(new Cpe({tagBuilder:r,matchedText:A,offset:h,urlMatchType:Rrt(t.matchType),url:A,protocolRelativeMatch:A.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{Ipe(A)&&n.push(new xpe({tagBuilder:r,matchedText:A,offset:h,email:A.replace(Epe,"")}));break}case 2:{bpe(A)&&n.push(new Spe({tagBuilder:r,matchedText:A,offset:h,serviceName:u,hashtag:A.slice(1)}));break}case 3:{wpe(A,f)&&n.push(new Dpe({tagBuilder:r,matchedText:A,offset:h,serviceName:f,mention:A.slice(1)}));break}case 4:{if(A=A.replace(/ +$/g,""),vpe(A)){var _=A.replace(/[^0-9,;#]/g,"");n.push(new Ppe({tagBuilder:r,matchedText:A,offset:h,number:_,plusSign:A.charAt(0)==="+"}))}break}default:Ih(t)}}}function Rrt(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:Ih(e)}}var Rpe={")":"(","}":"{","]":"["};function Mrt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);mpe(o)?t[i]++:eK(o)&&t[Rpe[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if(eK(o)){var s=Rpe[i];if(t[s]<0)t[s]++,r--;else break}else if(SU(o))r--;else break}return e.slice(0,r+1)}function RU(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function uK(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function Nrt(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function Lrt(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function Ort(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function Frt(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function lK(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function Mpe(e){return e.type===0&&e.matchType===0}var tA=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),dK=new tA,Qrt=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=dK,this.html=t,this.callbacks=n}return e}();function Lpe(e,t){for(var n=new Qrt(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:krt(n,o);break;case 1:Urt(n,o,r);break;case 2:zrt(n,o,r);break;case 3:Grt(n,o,r);break;case 4:Vrt(n,o,r);break;case 5:Hrt(n,o,r);break;case 6:Wrt(n,o,r);break;case 7:jrt(n,o,r);break;case 8:Yrt(n,o);break;case 9:qrt(n,o);break;case 10:Krt(n,o,r);break;case 11:Xrt(n,o,r);break;case 12:Jrt(n,o);break;case 13:Zrt(n);break;case 14:$rt(n,o);break;case 15:est(n,o);break;case 16:tst(n,o);break;case 17:nst(n,o);break;case 18:ist(n,o);break;case 19:ost(n,o);break;case 20:rst(n,o);break;default:Ih(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&sst(n)}function krt(e,t){t==="<"&&nA(e)}function Urt(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0}))):t==="<"?nA(e):Qp(n)?(e.state=3,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=dK)}function Grt(e,t,n){dy(n)?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=4):t==="<"?nA(e):t==="/"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=12):t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),iA(e)):!Qp(n)&&!Ms(n)&&t!==":"&&fd(e)}function zrt(e,t,n){t===">"?fd(e):Qp(n)?e.state=3:fd(e)}function Vrt(e,t,n){dy(n)||(t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):t==="="||TU(n)||fpe(n)?fd(e):e.state=5)}function Hrt(e,t,n){dy(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)&&fd(e)}function Wrt(e,t,n){dy(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)?fd(e):e.state=5)}function jrt(e,t,n){dy(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?fd(e):t==="<"?nA(e):e.state=10)}function Yrt(e,t){t==='"'&&(e.state=11)}function qrt(e,t){t==="'"&&(e.state=11)}function Krt(e,t,n){dy(n)?e.state=4:t===">"?iA(e):t==="<"&&nA(e)}function Xrt(e,t,n){dy(n)?e.state=4:t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):(e.state=4,ast(e))}function Jrt(e,t){t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0})),iA(e)):fd(e)}function Zrt(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"doctype"})),e.state=20):fd(e)}function $rt(e,t){t==="-"?e.state=15:t===">"?fd(e):e.state=16}function est(e,t){t==="-"?e.state=18:t===">"?fd(e):e.state=16}function tst(e,t){t==="-"&&(e.state=17)}function nst(e,t){t==="-"?e.state=18:e.state=16}function ist(e,t){t===">"?iA(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function ost(e,t){t==="-"?e.state=17:t===">"?iA(e):e.state=16}function rst(e,t){t===">"?iA(e):t==="<"&&nA(e)}function fd(e){e.state=0,e.currentTag=dK}function nA(e){e.state=1,e.currentTag=new tA({idx:e.charIdx})}function iA(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),fd(e),e.currentDataIdx=e.charIdx+1}function sst(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function fK(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function ast(e){e.charIdx--}var cst=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=lst(t.urls),this.email=Vu(t.email)?t.email:this.email,this.phone=Vu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=Vu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=ust(t.stripPrefix),this.stripTrailingSlash=Vu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Vu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&Bpe.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Tpe.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=fst(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return Lpe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,u=s.split(c),f=a;u.forEach(function(h,A){if(A%2===0){var g=n.parseText(h,f);r.push.apply(r,npe([],tpe(g),!1))}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(dst);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||fy(t,function(n){return n.getType()==="hashtag"}),this.email||fy(t,function(n){return n.getType()==="email"}),this.phone||fy(t,function(n){return n.getType()==="phone"}),this.mention||fy(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=Npe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof bU)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new upe({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=ipe,e}(),Ope=cst;function lst(e){return e==null&&(e=!0),Vu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:Vu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:Vu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:Vu(e.ipV4Matches)?e.ipV4Matches:!0}}function ust(e){return e==null&&(e=!0),Vu(e)?{scheme:e,www:e}:{scheme:Vu(e.scheme)?e.scheme:!0,www:Vu(e.www)?e.www:!0}}function fst(e){return typeof e=="number"?{length:e,location:"end"}:Rs({length:Number.POSITIVE_INFINITY,location:"end"},e)}function dst(e,t){return e.getOffset()-t.getOffset()}var MU=Ope;var Wpe;typeof DOMParser<"u"&&(Wpe=new DOMParser);var hst=new MU({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),NU=32,Fpe=2414016,Qpe=1,kpe=16093e3,Upe=.1,mst=[null,void 0,"http://www.topografix.com/GPX/1/1"],Oo={gpx:mst};function Ast(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function hK(e,t){let n=Ev(e,"id");return n=l(n)?n:Xn(),t.getOrCreateEntity(n)}function mK(e){let t=Gpe(e,"lon"),n=Gpe(e,"lat"),i=yv(e,"ele",Oo.gpx);return d.fromDegrees(t,n,i)}function Gpe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Ev(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function hy(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function AK(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function yv(e,t,n){let i=hy(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function cu(e,t,n){let i=hy(e,t,n);if(l(i))return i.textContent.trim()}function jpe(e){let t=new jc;return t.width=NU,t.height=NU,t.scaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.pixelOffsetScaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.verticalOrigin=new ci(Wn.BOTTOM),t.image=e,t}function pst(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function Ype(e){let t=new $c;return t.width=4,t.material=new TE,t.material.color=l(e)?e:G.RED,t.material.outlineWidth=2,t.material.outlineColor=G.BLACK,t}var zpe={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},Cv;typeof document<"u"&&(Cv=document.createElement("div"));function pK(e,t){let n,i="",o=Object.keys(zpe),r=o.length;for(n=0;n<r;n++){let f=o[n],h=zpe[f];h.value=cu(e,h.tag,Oo.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=hst.link(i),Cv.innerHTML=i;let s=Cv.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=G.WHITE,c=G.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${Cv.innerHTML}</div>`,Cv.innerHTML="",u}function qpe(e,t,n,i){let o=mK(t),r=hK(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);r.billboard=jpe(s);let a=cu(t,"name",Oo.gpx);r.name=a,r.label=pst(),r.label.text=a,r.description=pK(t,r),i.clampToGround&&(r.billboard.heightReference=Ze.CLAMP_TO_GROUND,r.label.heightReference=Ze.CLAMP_TO_GROUND)}function gst(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"rtept",Oo.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)qpe(e,r[a],n,i),s[a]=mK(r[a]);o.polyline=Ype(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function _st(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"trkseg",Oo.gpx),s=[],a=[],c,u=!0,f=new ic;for(let h=0;h<r.length;h++)c=yst(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);o.billboard=jpe(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=Ze.CLAMP_TO_GROUND),o.availability=new hs,o.availability.addInterval(new Rn({start:a[0],stop:a[a.length-1]}))}o.polyline=Ype(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function yst(e){let t={positions:[],times:[]},n=AK(e,"trkpt",Oo.gpx),i;for(let o=0;o<n.length;o++){let r=mK(n[o]);t.positions.push(r),i=cu(n[o],"time",Oo.gpx),l(i)&&t.times.push(K.fromIso8601(i))}return t}function Cst(e){let t=hy(e,"metadata",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),desc:cu(t,"desc",Oo.gpx),author:Est(t),copyright:xst(t),link:Kpe(t),time:cu(t,"time",Oo.gpx),keywords:cu(t,"keywords",Oo.gpx),bounds:bst(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Est(e){let t=hy(e,"author",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),email:Ist(t),link:Kpe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Ist(e){let t=hy(e,"email",Oo.gpx);if(l(t)){let n=cu(t,"id",Oo.gpx),i=cu(t,"domain",Oo.gpx);return`${n}@${i}`}}function Kpe(e){let t=hy(e,"link",Oo.gpx);if(l(t)){let n={href:Ev(t,"href"),text:cu(t,"text",Oo.gpx),mimeType:cu(t,"type",Oo.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function xst(e){let t=hy(e,"copyright",Oo.gpx);if(l(t)){let n={author:Ev(t,"author"),year:cu(t,"year",Oo.gpx),license:cu(t,"license",Oo.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function bst(e){let t=hy(e,"bounds",Oo.gpx);if(l(t)){let n={minLat:yv(t,"minlat",Oo.gpx),maxLat:yv(t,"maxlat",Oo.gpx),minLon:yv(t,"minlon",Oo.gpx),maxLon:yv(t,"maxlon",Oo.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var Vpe={wpt:qpe,rte:gst,trk:_st};function Tst(e,t,n,i){let o=Object.keys(Vpe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Vpe[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let A=u[h];A.localName===a&&Oo.gpx.indexOf(A.namespaceURI)!==-1&&c(e,A,n,i)}}}function Hpe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=Ev(o,"version"),s=Ev(o,"creator"),a,c=Cst(o);l(c)&&(a=c.name),o.localName==="gpx"?Tst(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,A=f.stop,g=K.equals(h,je.MINIMUM_VALUE),m=K.equals(A,je.MAXIMUM_VALUE);if(!g||!m){let y;g&&(y=new Date,y.setHours(0,0,0,0),h=K.fromDate(y)),m&&(y=new Date,y.setHours(24,0,0,0),A=K.fromDate(y)),u=new Hm,u.startTime=h,u.stopTime=A,u.currentTime=K.clone(h),u.clockRange=As.LOOP_STOP,u.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(A,h)/60,1),31556900))}let _=!1;return e._name!==a&&(e._name=a,_=!0),e._creator!==s&&(e._creator=s,_=!0),Sst(e._metadata,c)&&(e._metadata=c,_=!0),e._version!==r&&(e._version=r,_=!0),u!==e._clock&&(_=!0,e._clock=u),_&&e._changed.raiseEvent(e),ms.setLoading(e,!1),e}function Sst(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function wst(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Ast(r).then(function(s){let a,c;try{a=Wpe.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new ce(u)}return Hpe(e,a,i)}):Hpe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function uT(){this._changed=new _e,this._error=new _e,this._loading=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new ly}uT.load=function(e,t){return new uT().load(e,t)};Object.defineProperties(uT.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});uT.prototype.update=function(e){return!0};uT.prototype.load=function(e,t){if(!l(e))throw new me("data is required.");t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name,i=this;return wst(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var LU=uT;function Bst(e,t){this.position=e,this.headingPitchRoll=t}var OU=Bst;var jv=Es(_u(),1);function VU(e){return HU(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function HU(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?HU(n):n),[])}var Xpe=[0,1,2,3].concat(...VU([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Ir(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,A,g,m,_,y=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,y++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),_=r[h*2],o.opt_len+=_*(g+m),s&&(o.static_len+=_*(s[h*2+1]+m)));if(y!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,y-=2}while(y>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)A=o.heap[--f],!(A>e.max_code)&&(r[A*2+1]!=g&&(o.opt_len+=(g-r[A*2+1])*r[A*2],r[A*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Ir._length_code=[0,1,2,3,4,5,6,7].concat(...VU([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Ir.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Ir.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Ir.d_code=function(e){return e<256?Xpe[e]:Xpe[256+(e>>>7)]};Ir.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Ir.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Ir.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Ir.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function oc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var Dst=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],vst=VU([[144,8],[112,9],[24,7],[8,8]]);oc.static_ltree=HU(Dst.map((e,t)=>[e,vst[t]]));var Pst=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],Rst=VU([[30,5]]);oc.static_dtree=HU(Pst.map((e,t)=>[e,Rst[t]]));oc.static_l_desc=new oc(oc.static_ltree,Ir.extra_lbits,257,286,15);oc.static_d_desc=new oc(oc.static_dtree,Ir.extra_dbits,0,30,15);oc.static_bl_desc=new oc(null,Ir.extra_blbits,0,19,7);var Mst=9,Nst=8;function oA(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var Zpe=0,GU=1,GE=2,bh=[new oA(0,0,0,0,Zpe),new oA(4,4,8,4,GU),new oA(4,5,16,8,GU),new oA(4,6,32,32,GU),new oA(4,4,16,16,GE),new oA(8,16,32,32,GE),new oA(8,16,128,128,GE),new oA(8,32,128,256,GE),new oA(32,128,258,1024,GE),new oA(32,258,258,4096,GE)],FU=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],dd=0,QU=1,Iv=2,kU=3,Lst=32,gK=42,UU=113,xv=666,_K=8,Ost=0,yK=1,Fst=2,Fr=3,zU=258,Hu=zU+Fr+1;function Jpe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function Qst(){let e=this,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_,y,C,E,I,b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q=new Ir,z=new Ir,F=new Ir;e.depth=[];let H,W,Z,Y,$,X;e.bl_count=[],e.heap=[],M=[],O=[],U=[];function he(){u=2*r,h[g-1]=0;for(let Oe=0;Oe<g-1;Oe++)h[Oe]=0;L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain,S=0,C=0,v=0,E=P=Fr-1,b=0,A=0}function ge(){let Oe;for(Oe=0;Oe<286;Oe++)M[Oe*2]=0;for(Oe=0;Oe<30;Oe++)O[Oe*2]=0;for(Oe=0;Oe<19;Oe++)U[Oe*2]=0;M[256*2]=1,e.opt_len=e.static_len=0,W=Z=0}function fe(){Q.dyn_tree=M,Q.stat_desc=oc.static_l_desc,z.dyn_tree=O,z.stat_desc=oc.static_d_desc,F.dyn_tree=U,F.stat_desc=oc.static_bl_desc,$=0,X=0,Y=8,ge()}e.pqdownheap=function(Oe,lt){let Ke=e.heap,$e=Ke[lt],pt=lt<<1;for(;pt<=e.heap_len&&(pt<e.heap_len&&Jpe(Oe,Ke[pt+1],Ke[pt],e.depth)&&pt++,!Jpe(Oe,$e,Ke[pt],e.depth));)Ke[lt]=Ke[pt],lt=pt,pt<<=1;Ke[lt]=$e};function ye(Oe,lt){let Ke=-1,$e,pt=Oe[1],Xt=0,xn=7,lo=4;pt===0&&(xn=138,lo=3),Oe[(lt+1)*2+1]=65535;for(let ro=0;ro<=lt;ro++)$e=pt,pt=Oe[(ro+1)*2+1],!(++Xt<xn&&$e==pt)&&(Xt<lo?U[$e*2]+=Xt:$e!==0?($e!=Ke&&U[$e*2]++,U[32]++):Xt<=10?U[34]++:U[36]++,Xt=0,Ke=$e,pt===0?(xn=138,lo=3):$e==pt?(xn=6,lo=3):(xn=7,lo=4))}function Ie(){let Oe;for(ye(M,Q.max_code),ye(O,z.max_code),F.build_tree(e),Oe=18;Oe>=3&&U[Ir.bl_order[Oe]*2+1]===0;Oe--);return e.opt_len+=3*(Oe+1)+5+5+4,Oe}function ve(Oe){e.pending_buf[e.pending++]=Oe}function Te(Oe){ve(Oe&255),ve(Oe>>>8&255)}function ke(Oe){ve(Oe>>8&255),ve(Oe&255&255)}function Ge(Oe,lt){let Ke,$e=lt;X>16-$e?(Ke=Oe,$|=Ke<<X&65535,Te($),$=Ke>>>16-X,X+=$e-16):($|=Oe<<X&65535,X+=$e)}function qe(Oe,lt){let Ke=Oe*2;Ge(lt[Ke]&65535,lt[Ke+1]&65535)}function tt(Oe,lt){let Ke,$e=-1,pt,Xt=Oe[1],xn=0,lo=7,ro=4;for(Xt===0&&(lo=138,ro=3),Ke=0;Ke<=lt;Ke++)if(pt=Xt,Xt=Oe[(Ke+1)*2+1],!(++xn<lo&&pt==Xt)){if(xn<ro)do qe(pt,U);while(--xn!==0);else pt!==0?(pt!=$e&&(qe(pt,U),xn--),qe(16,U),Ge(xn-3,2)):xn<=10?(qe(17,U),Ge(xn-3,3)):(qe(18,U),Ge(xn-11,7));xn=0,$e=pt,Xt===0?(lo=138,ro=3):pt==Xt?(lo=6,ro=3):(lo=7,ro=4)}}function $t(Oe,lt,Ke){let $e;for(Ge(Oe-257,5),Ge(lt-1,5),Ge(Ke-4,4),$e=0;$e<Ke;$e++)Ge(U[Ir.bl_order[$e]*2+1],3);tt(M,Oe-1),tt(O,lt-1)}function it(){X==16?(Te($),$=0,X=0):X>=8&&(ve($&255),$>>>=8,X-=8)}function tn(){Ge(yK<<1,3),qe(256,oc.static_ltree),it(),1+Y+10-X<9&&(Ge(yK<<1,3),qe(256,oc.static_ltree),it()),Y=7}function Wt(Oe,lt){let Ke,$e,pt;if(e.dist_buf[W]=Oe,e.lc_buf[W]=lt&255,W++,Oe===0?M[lt*2]++:(Z++,Oe--,M[(Ir._length_code[lt]+256+1)*2]++,O[Ir.d_code(Oe)*2]++),(W&8191)===0&&p>2){for(Ke=W*8,$e=S-C,pt=0;pt<30;pt++)Ke+=O[pt*2]*(5+Ir.extra_dbits[pt]);if(Ke>>>=3,Z<Math.floor(W/2)&&Ke<Math.floor($e/2))return!0}return W==H-1}function vt(Oe,lt){let Ke,$e,pt=0,Xt,xn;if(W!==0)do Ke=e.dist_buf[pt],$e=e.lc_buf[pt],pt++,Ke===0?qe($e,Oe):(Xt=Ir._length_code[$e],qe(Xt+256+1,Oe),xn=Ir.extra_lbits[Xt],xn!==0&&($e-=Ir.base_length[Xt],Ge($e,xn)),Ke--,Xt=Ir.d_code(Ke),qe(Xt,lt),xn=Ir.extra_dbits[Xt],xn!==0&&(Ke-=Ir.base_dist[Xt],Ge(Ke,xn)));while(pt<W);qe(256,Oe),Y=Oe[256*2+1]}function bi(){X>8?Te($):X>0&&ve($&255),$=0,X=0}function di(Oe,lt,Ke){bi(),Y=8,Ke&&(Te(lt),Te(~lt)),e.pending_buf.set(c.subarray(Oe,Oe+lt),e.pending),e.pending+=lt}function Ot(Oe,lt,Ke){Ge((Ost<<1)+(Ke?1:0),3),di(Oe,lt,!0)}function Tt(Oe,lt,Ke){let $e,pt,Xt=0;p>0?(Q.build_tree(e),z.build_tree(e),Xt=Ie(),$e=e.opt_len+3+7>>>3,pt=e.static_len+3+7>>>3,pt<=$e&&($e=pt)):$e=pt=lt+5,lt+4<=$e&&Oe!=-1?Ot(Oe,lt,Ke):pt==$e?(Ge((yK<<1)+(Ke?1:0),3),vt(oc.static_ltree,oc.static_dtree)):(Ge((Fst<<1)+(Ke?1:0),3),$t(Q.max_code+1,z.max_code+1,Xt+1),vt(M,O)),ge(),Ke&&bi()}function ii(Oe){Tt(C>=0?C:-1,S-C,Oe),C=S,t.flush_pending()}function Ct(){let Oe,lt,Ke,$e;do{if($e=u-v-S,$e===0&&S===0&&v===0)$e=r;else if($e==-1)$e--;else if(S>=r+r-Hu){c.set(c.subarray(r,r+r),0),B-=r,S-=r,C-=r,Oe=g,Ke=Oe;do lt=h[--Ke]&65535,h[Ke]=lt>=r?lt-r:0;while(--Oe!==0);Oe=r,Ke=Oe;do lt=f[--Ke]&65535,f[Ke]=lt>=r?lt-r:0;while(--Oe!==0);$e+=r}if(t.avail_in===0)return;Oe=t.read_buf(c,S+v,$e),v+=Oe,v>=Fr&&(A=c[S]&255,A=(A<<y^c[S+1]&255)&_)}while(v<Hu&&t.avail_in!==0)}function Ro(Oe){let lt=65535,Ke;for(lt>i-5&&(lt=i-5);;){if(v<=1){if(Ct(),v===0&&Oe==0)return dd;if(v===0)break}if(S+=v,v=0,Ke=C+lt,(S===0||S>=Ke)&&(v=S-Ke,S=Ke,ii(!1),t.avail_out===0)||S-C>=r-Hu&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Qo(Oe){let lt=N,Ke=S,$e,pt,Xt=P,xn=S>r-Hu?S-(r-Hu):0,lo=w,ro=a,$s=S+zU,ea=c[Ke+Xt-1],Vn=c[Ke+Xt];P>=T&&(lt>>=2),lo>v&&(lo=v);do if($e=Oe,!(c[$e+Xt]!=Vn||c[$e+Xt-1]!=ea||c[$e]!=c[Ke]||c[++$e]!=c[Ke+1])){Ke+=2,$e++;do;while(c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&Ke<$s);if(pt=zU-($s-Ke),Ke=$s-zU,pt>Xt){if(B=Oe,Xt=pt,pt>=lo)break;ea=c[Ke+Xt-1],Vn=c[Ke+Xt]}}while((Oe=f[Oe&ro]&65535)>xn&&--lt!==0);return Xt<=v?Xt:v}function ya(Oe){let lt=0,Ke;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),lt!==0&&(S-lt&65535)<=r-Hu&&x!=2&&(E=Qo(lt)),E>=Fr)if(Ke=Wt(S-B,E-Fr),v-=E,E<=L&&v>=Fr){E--;do S++,A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S;while(--E!==0);S++}else S+=E,E=0,A=c[S]&255,A=(A<<y^c[S+1]&255)&_;else Ke=Wt(0,c[S]&255),v--,S++;if(Ke&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function mr(Oe){let lt=0,Ke,$e;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),P=E,I=B,E=Fr-1,lt!==0&&P<L&&(S-lt&65535)<=r-Hu&&(x!=2&&(E=Qo(lt)),E<=5&&(x==1||E==Fr&&S-B>4096)&&(E=Fr-1)),P>=Fr&&E<=P){$e=S+v-Fr,Ke=Wt(S-1-I,P-Fr),v-=P-1,P-=2;do++S<=$e&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S);while(--P!==0);if(b=0,E=Fr-1,S++,Ke&&(ii(!1),t.avail_out===0))return dd}else if(b!==0){if(Ke=Wt(0,c[S-1]&255),Ke&&ii(!1),S++,v--,t.avail_out===0)return dd}else b=1,S++,v--}return b!==0&&(Ke=Wt(0,c[S-1]&255),b=0),ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Tr(Oe){return Oe.total_in=Oe.total_out=0,Oe.msg=null,e.pending=0,e.pending_out=0,n=UU,o=0,fe(),he(),0}e.deflateInit=function(Oe,lt,Ke,$e,pt,Xt){return $e||($e=_K),pt||(pt=Nst),Xt||(Xt=0),Oe.msg=null,lt==-1&&(lt=6),pt<1||pt>Mst||$e!=_K||Ke<9||Ke>15||lt<0||lt>9||Xt<0||Xt>2?-2:(Oe.dstate=e,s=Ke,r=1<<s,a=r-1,m=pt+7,g=1<<m,_=g-1,y=Math.floor((m+Fr-1)/Fr),c=new Uint8Array(r*2),f=[],h=[],H=1<<pt+6,e.pending_buf=new Uint8Array(H*4),i=H*4,e.dist_buf=new Uint16Array(H),e.lc_buf=new Uint8Array(H),p=lt,x=Xt,Tr(Oe))},e.deflateEnd=function(){return n!=gK&&n!=UU&&n!=xv?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==UU?-3:0)},e.deflateParams=function(Oe,lt,Ke){let $e=0;return lt==-1&&(lt=6),lt<0||lt>9||Ke<0||Ke>2?-2:(bh[p].func!=bh[lt].func&&Oe.total_in!==0&&($e=Oe.deflate(1)),p!=lt&&(p=lt,L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain),x=Ke,$e)},e.deflateSetDictionary=function(Oe,lt,Ke){let $e=Ke,pt,Xt=0;if(!lt||n!=gK)return-2;if($e<Fr)return 0;for($e>r-Hu&&($e=r-Hu,Xt=Ke-$e),c.set(lt.subarray(Xt,Xt+$e),0),S=$e,C=$e,A=c[0]&255,A=(A<<y^c[1]&255)&_,pt=0;pt<=$e-Fr;pt++)A=(A<<y^c[pt+(Fr-1)]&255)&_,f[pt&a]=h[A],h[A]=pt;return 0},e.deflate=function(Oe,lt){let Ke,$e,pt,Xt,xn;if(lt>4||lt<0)return-2;if(!Oe.next_out||!Oe.next_in&&Oe.avail_in!==0||n==xv&<!=4)return Oe.msg=FU[4],-2;if(Oe.avail_out===0)return Oe.msg=FU[7],-5;if(t=Oe,Xt=o,o=lt,n==gK&&($e=_K+(s-8<<4)<<8,pt=(p-1&255)>>1,pt>3&&(pt=3),$e|=pt<<6,S!==0&&($e|=Lst),$e+=31-$e%31,n=UU,ke($e)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&<<=Xt&<!=4)return t.msg=FU[7],-5;if(n==xv&&t.avail_in!==0)return Oe.msg=FU[7],-5;if(t.avail_in!==0||v!==0||lt!=0&&n!=xv){switch(xn=-1,bh[p].func){case Zpe:xn=Ro(lt);break;case GU:xn=ya(lt);break;case GE:xn=mr(lt);break;default:}if((xn==Iv||xn==kU)&&(n=xv),xn==dd||xn==Iv)return t.avail_out===0&&(o=-1),0;if(xn==QU){if(lt==1)tn();else if(Ot(0,0,!1),lt==3)for(Ke=0;Ke<g;Ke++)h[Ke]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return lt!=4?0:1}}function $pe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}$pe.prototype={deflateInit(e,t){let n=this;return n.dstate=new Qst,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function ege(e){let t=this,n=new $pe,i=kst(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,A=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(_){f.set(_,A),A+=_.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(A){c.set(A,u),u+=A.length}),c}}function kst(e){return e+5*(Math.floor(e/16383)+1)}var Wu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Cge=1440,Ust=0,Gst=4,zst=9,Vst=5,Hst=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Wst=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],jst=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Yst=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],qst=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],Kst=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],my=15;function xK(){let e=this,t,n,i,o,r,s;function a(u,f,h,A,g,m,_,y,C,E,I){let b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q;T=0,P=h;do i[u[f+T]]++,T++,P--;while(P!==0);if(i[0]==h)return _[0]=-1,y[0]=0,0;for(p=y[0],N=1;N<=my&&i[N]===0;N++);for(L=N,p<N&&(p=N),P=my;P!==0&&i[P]===0;P--);for(B=P,p>P&&(p=P),y[0]=p,U=1<<N;N<P;N++,U<<=1)if((U-=i[N])<0)return-3;if((U-=i[P])<0)return-3;for(i[P]+=U,s[1]=N=0,T=1,O=2;--P!==0;)s[O]=N+=i[T],O++,T++;P=0,T=0;do(N=u[f+T])!==0&&(I[s[N]++]=P),T++;while(++P<h);for(h=s[B],s[0]=P=0,T=0,v=-1,M=-p,r[0]=0,w=0,Q=0;L<=B;L++)for(b=i[L];b--!==0;){for(;L>M+p;){if(v++,M+=p,Q=B-M,Q=Q>p?p:Q,(S=1<<(N=L-M))>b+1&&(S-=b+1,O=L,N<Q))for(;++N<Q&&!((S<<=1)<=i[++O]);)S-=i[O];if(Q=1<<N,E[0]+Q>Cge)return-3;r[v]=w=E[0],E[0]+=Q,v!==0?(s[v]=P,o[0]=N,o[1]=p,N=P>>>M-p,o[2]=w-r[v-1]-N,C.set(o,(r[v-1]+N)*3)):_[0]=w}for(o[1]=L-M,T>=h?o[0]=192:I[T]<A?(o[0]=I[T]<256?0:96,o[2]=I[T++]):(o[0]=m[I[T]-A]+16+64,o[2]=g[I[T++]-A]),S=1<<L-M,N=P>>>M;N<Q;N+=S)C.set(o,(w+N)*3);for(N=1<<L-1;(P&N)!==0;N>>>=1)P^=N;for(P^=N,x=(1<<M)-1;(P&x)!=s[v];)v--,M-=p,x=(1<<M)-1}return U!==0&&B!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(my+1),o=[],r=new Int32Array(my),s=new Int32Array(my+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<my+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,my),0),s.set(i.subarray(0,my+1),0)}e.inflate_trees_bits=function(u,f,h,A,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,A,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,A,g,m,_,y,C){let E;return c(288),t[0]=0,E=a(h,0,u,257,jst,Yst,m,A,y,t,n),E!=0||A[0]===0?(E==-3?C.msg="oversubscribed literal/length tree":E!=-4&&(C.msg="incomplete literal/length tree",E=-3),E):(c(288),E=a(h,u,f,0,qst,Kst,_,g,y,t,n),E!=0||g[0]===0&&u>257?(E==-3?C.msg="oversubscribed distance tree":E==-5?(C.msg="incomplete distance tree",E=-3):E!=-4&&(C.msg="empty distance tree with lengths",E=-3),E):0)}}xK.inflate_trees_fixed=function(e,t,n,i){return e[0]=zst,t[0]=Vst,n[0]=Hst,i[0]=Wst,0};var WU=0,tge=1,nge=2,ige=3,oge=4,rge=5,sge=6,CK=7,age=8,jU=9;function Xst(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,A=0,g,m=0;function _(y,C,E,I,b,S,B,v){let P,N,L,p,x,T,w,M,O,U,Q,z,F,H,W,Z;w=v.next_in_index,M=v.avail_in,x=B.bitb,T=B.bitk,O=B.write,U=O<B.read?B.read-O-1:B.end-O,Q=Wu[y],z=Wu[C];do{for(;T<20;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(P=x&Q,N=E,L=I,Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;continue}do{if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15,F=N[Z+2]+(x&Wu[p]),x>>=p,T-=p;T<15;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;P=x&z,N=b,L=S,Z=(L+P)*3,p=N[Z];do if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15;T<p;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(H=N[Z+2]+(x&Wu[p]),x>>=p,T-=p,U-=F,O>=H)W=O-H,O-W>0&&2>O-W?(B.win[O++]=B.win[W++],B.win[O++]=B.win[W++],F-=2):(B.win.set(B.win.subarray(W,W+2),O),O+=2,W+=2,F-=2);else{W=O-H;do W+=B.end;while(W<0);if(p=B.end-W,F>p){if(F-=p,O-W>0&&p>O-W)do B.win[O++]=B.win[W++];while(--p!==0);else B.win.set(B.win.subarray(W,W+p),O),O+=p,W+=p,p=0;W=0}}if(O-W>0&&F>O-W)do B.win[O++]=B.win[W++];while(--F!==0);else B.win.set(B.win.subarray(W,W+F),O),O+=F,W+=F,F=0;break}else if((p&64)===0)P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,p=N[Z];else return v.msg="invalid distance code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3;while(!0);break}if((p&64)===0){if(P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;break}}else return(p&32)!==0?(F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,1):(v.msg="invalid literal/length code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3)}while(!0)}while(U>=258&&M>=10);return F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,0}e.init=function(y,C,E,I,b,S){t=WU,u=y,f=C,h=E,A=I,g=b,m=S,i=null},e.proc=function(y,C,E){let I,b,S,B=0,v=0,P=0,N,L,p,x;for(P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L;;)switch(t){case WU:if(p>=258&&N>=10&&(y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,E=_(u,f,h,A,g,m,y,C),P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L,E!=0)){t=E==1?CK:jU;break}r=u,i=h,o=A,t=tge;case tge:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>>=i[b+1],v-=i[b+1],S=i[b],S===0){s=i[b+2],t=sge;break}if((S&16)!==0){a=S&15,n=i[b+2],t=nge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}if((S&32)!==0){t=CK;break}return t=jU,C.msg="invalid literal/length code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case nge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}n+=B&Wu[I],B>>=I,v-=I,r=f,i=g,o=m,t=ige;case ige:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>=i[b+1],v-=i[b+1],S=i[b],(S&16)!==0){a=S&15,c=i[b+2],t=oge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}return t=jU,C.msg="invalid distance code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case oge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}c+=B&Wu[I],B>>=I,v-=I,t=rge;case rge:for(x=L-c;x<0;)x+=y.end;for(;n!==0;){if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);y.win[L++]=y.win[x++],p--,x==y.end&&(x=0),n--}t=WU;break;case sge:if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);E=0,y.win[L++]=s,p--,t=WU;break;case CK:if(v>7&&(v-=8,N++,P--),y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,y.read!=y.write)return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);t=age;case age:return E=1,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case jU:return E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);default:return E=-2,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E)}},e.free=function(){}}var cge=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fT=0,EK=1,lge=2,uge=3,fge=4,dge=5,YU=6,qU=7,hge=8,zE=9;function Jst(e,t){let n=this,i=fT,o=0,r=0,s=0,a,c=[0],u=[0],f=new Xst,h=0,A=new Int32Array(Cge*3),g=0,m=new xK;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(_,y){y&&(y[0]=g),i==YU&&f.free(_),i=fT,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(_,y){let C,E,I;return E=_.next_out_index,I=n.read,C=(I<=n.write?n.write:n.end)-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C,I==n.end&&(I=0,n.write==n.end&&(n.write=0),C=n.write-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C),_.next_out_index=E,n.read=I,y},n.proc=function(_,y){let C,E,I,b,S,B,v,P;for(b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B;;){let N,L,p,x,T,w,M,O;switch(i){case fT:for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}switch(C=E&7,h=C&1,C>>>1){case 0:E>>>=3,I-=3,C=I&7,E>>>=C,I-=C,i=EK;break;case 1:N=[],L=[],p=[[]],x=[[]],xK.inflate_trees_fixed(N,L,p,x),f.init(N[0],L[0],p[0],0,x[0],0),E>>>=3,I-=3,i=YU;break;case 2:E>>>=3,I-=3,i=uge;break;case 3:return E>>>=3,I-=3,i=zE,_.msg="invalid block type",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}break;case EK:for(;I<32;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if((~E>>>16&65535)!=(E&65535))return i=zE,_.msg="invalid stored block lengths",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);o=E&65535,E=I=0,i=o!==0?lge:h!==0?qU:fT;break;case lge:if(S===0||v===0&&(B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0&&(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0)))return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(y=0,C=o,C>S&&(C=S),C>v&&(C=v),n.win.set(_.read_buf(b,C),B),b+=C,S-=C,B+=C,v-=C,(o-=C)!==0)break;i=h!==0?qU:fT;break;case uge:for(;I<14;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(r=C=E&16383,(C&31)>29||(C>>5&31)>29)return i=zE,_.msg="too many length or distance symbols",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(C=258+(C&31)+(C>>5&31),!a||a.length<C)a=[];else for(P=0;P<C;P++)a[P]=0;E>>>=14,I-=14,s=0,i=fge;case fge:for(;s<4+(r>>>10);){for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}a[cge[s++]]=E&7,E>>>=3,I-=3}for(;s<19;)a[cge[s++]]=0;if(c[0]=7,C=m.inflate_trees_bits(a,c,u,A,_),C!=0)return y=C,y==-3&&(a=null,i=zE),n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);s=0,i=dge;case dge:for(;C=r,!(s>=258+(C&31)+(C>>5&31));){let U,Q;for(C=c[0];I<C;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(C=A[(u[0]+(E&Wu[C]))*3+1],Q=A[(u[0]+(E&Wu[C]))*3+2],Q<16)E>>>=C,I-=C,a[s++]=Q;else{for(P=Q==18?7:Q-14,U=Q==18?11:3;I<C+P;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(E>>>=C,I-=C,U+=E&Wu[P],E>>>=P,I-=P,P=s,C=r,P+U>258+(C&31)+(C>>5&31)||Q==16&&P<1)return a=null,i=zE,_.msg="invalid bit length repeat",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);Q=Q==16?a[P-1]:0;do a[P++]=Q;while(--U!==0);s=P}}if(u[0]=-1,T=[],w=[],M=[],O=[],T[0]=9,w[0]=6,C=r,C=m.inflate_trees_dynamic(257+(C&31),1+(C>>5&31),a,T,w,M,O,A,_),C!=0)return C==-3&&(a=null,i=zE),y=C,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);f.init(T[0],w[0],A,M[0],A,O[0]),i=YU;case YU:if(n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,(y=f.proc(n,_,y))!=1)return n.inflate_flush(_,y);if(y=0,f.free(_),b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B,h===0){i=fT;break}i=qU;case qU:if(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,n.read!=n.write)return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);i=hge;case hge:return y=1,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);case zE:return y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);default:return y=-2,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}}},n.free=function(_){n.reset(_,null),n.win=null,A=null},n.set_dictionary=function(_,y,C){n.win.set(_.subarray(y,y+C),0),n.read=n.write=C},n.sync_point=function(){return i==EK?1:0}}var Zst=32,$st=8,eat=0,mge=1,Age=2,pge=3,gge=4,_ge=5,IK=6,bv=7,yge=12,Ay=13,tat=[0,0,255,255];function nat(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=bv,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new Jst(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Gst?-5:0,o=-5;;)switch(s.mode){case eat:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=$st){s.mode=Ay,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=Ay,n.msg="invalid win size",s.marker=5;break}s.mode=mge;case mge:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=Ay,n.msg="incorrect header check",s.marker=5;break}if((r&Zst)===0){s.mode=bv;break}s.mode=Age;case Age:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=pge;case pge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=gge;case gge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=_ge;case _ge:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=IK,2);case IK:return s.mode=Ay,n.msg="need dictionary",s.marker=0,-2;case bv:if(o=s.blocks.proc(n,o),o==-3){s.mode=Ay,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=yge;case yge:return n.avail_in=0,1;case Ay:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=IK)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=bv,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=Ay&&(c.mode=Ay,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==tat[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=bv,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function Ege(){}Ege.prototype={inflateInit(e){let t=this;return t.istate=new nat,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function Ige(e){let t=this,n=new Ege,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Ust,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,A=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=A&&(c(n.next_in_index),A=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(_){h.set(_,g),g+=_.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var bK=new Date(2107,11,31),TK=new Date(1980,0,1),ni=void 0,ju="undefined",Up="function";var Tv=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var iat=64,xge=2;try{typeof navigator!=ju&&navigator.hardwareConcurrency&&(xge=navigator.hardwareConcurrency)}catch{}var oat={chunkSize:512*1024,maxWorkers:xge,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ni,CompressionStreamNative:typeof CompressionStream!=ju&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=ju&&DecompressionStream},gy=Object.assign({},oat);function Sv(){return gy}function KU(e){return Math.max(e.chunkSize,iat)}function dT(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(py("baseURL",t),py("chunkSize",n),py("maxWorkers",i),py("terminateWorkerTimeout",o),py("useCompressionStream",r),py("useWebWorkers",s),a&&(gy.CompressionStream=new Tv(a)),c&&(gy.DecompressionStream=new Tv(c)),py("CompressionStream",u),py("DecompressionStream",f),h!==ni){let{deflate:A,inflate:g}=h;if((A||g)&&(gy.workerScripts||(gy.workerScripts={})),A){if(!Array.isArray(A))throw new Error("workerScripts.deflate must be an array");gy.workerScripts.deflate=A}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");gy.workerScripts.inflate=g}}}function py(e,t){t!==ni&&(gy[e]=t)}var bge=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;bge[e]=t}var Gp=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^bge[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var wv=class extends TransformStream{constructor(){let t,n=new Gp;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function hT(e){if(typeof TextEncoder==ju){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var yl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=yl.getPartial(n);return i===32?e.concat(t):yl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+yl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=yl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=yl.getPartial(o);return i.push(yl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},Bv={bytes:{fromBits(e){let n=yl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(yl.partial(8*(n&3),i)),t}}},Tge={};Tge.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=Bv.utf8String.toBits(e));let n=t._buffer=yl.concat(t._buffer,e),i=t._length,o=t._length=i+yl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=yl.concat(t,[yl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var SK={};SK.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let A=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=A=A<<24^A>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],A=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],_=4,y,C,E;for(let I=0;I<i;I++)y=s[h>>>24]^a[A>>16&255]^c[g>>8&255]^u[m&255]^n[_],C=s[A>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[_+1],E=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[A&255]^n[_+2],m=s[m>>>24]^a[h>>16&255]^c[A>>8&255]^u[g&255]^n[_+3],_+=4,h=y,A=C,g=E;for(let I=0;I<4;I++)o[t?3&-I:I]=f[h>>>24]<<24^f[A>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[_++],y=h,h=A,A=g,g=m,m=y;return o}};var Sge={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},wK={};wK.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=yl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return yl.clamp(t,o)}};var _y={importKey(e){return new _y.hmacSha1(Bv.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),A=0,g=yl;for(t=Bv.bytes.toBits(t),u=1;A<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;A<(o||1)&&a<r.length;a++)h.setInt32(A,r[a]),A+=4}return f.slice(0,i/8)}};_y.hmacSha1=class{constructor(e){let t=this,n=t._hash=Tge.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var rat=typeof crypto!=ju&&typeof crypto.getRandomValues==Up,yy="Invalid password",VE="Invalid signature",zp="zipjs-abort-check-password";function XU(e){return rat?crypto.getRandomValues(e):Sge.getRandomValues(e)}var mT=16,sat="raw",Dge={name:"PBKDF2"},aat={name:"HMAC"},cat="SHA-1",lat=Object.assign({hash:aat},Dge),BK=Object.assign({iterations:1e3,hash:{name:cat}},Dge),uat=["deriveBits"],vv=[8,12,16],Dv=[16,24,32],Cy=10,fat=[0,0,0,0],$U=typeof crypto!=ju,Mv=$U&&crypto.subtle,vge=$U&&typeof Mv!=ju,rA=Bv.bytes,dat=SK.aes,hat=wK.ctrGladman,mat=_y.hmacSha1,wge=$U&&vge&&typeof Mv.importKey==Up,Bge=$U&&vge&&typeof Mv.deriveBits==Up,JU=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:Mge(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:A}=c;u?(await Aat(c,f,u,hd(s,0,vv[f]+2)),s=hd(s,vv[f]+2),r?a.error(new Error(zp)):h()):await A;let g=new Uint8Array(s.length-Cy-(s.length-Cy)%mT);a.enqueue(Pge(c,s,g,0,Cy,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let A=hd(f,0,f.length-Cy),g=hd(f,f.length-Cy),m=new Uint8Array;if(A.length){let _=Rv(rA,A);u.update(_);let y=c.update(_);m=Pv(rA,y)}if(a){let _=hd(Pv(rA,u.digest()),0,Cy);for(let y=0;y<Cy;y++)if(_[y]!=g[y])throw new Error(VE)}s.enqueue(m)}}})}},ZU=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:Mge(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,A=new Uint8Array;c?(A=await pat(a,u,c),f()):await h;let g=new Uint8Array(A.length+r.length-r.length%mT);g.set(A,0),s.enqueue(Pge(a,r,g,A.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(Rv(rA,c));a.update(h),f=Pv(rA,h)}o.signature=Pv(rA,a.digest()).slice(0,Cy),r.enqueue(DK(f,o.signature))}}}),o=this}};function Pge(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=DK(c,t),n=yat(n,u-u%mT));let f;for(f=0;f<=u-mT;f+=mT){let h=Rv(rA,hd(t,f,f+mT));r&&a.update(h);let A=s.update(h);r||a.update(A),n.set(Pv(rA,A),f+i)}return e.pending=hd(t,f),n}async function Aat(e,t,n,i){let o=await Rge(e,t,n,hd(i,0,vv[t])),r=hd(i,vv[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(yy)}async function pat(e,t,n){let i=XU(new Uint8Array(vv[t])),o=await Rge(e,t,n,i);return DK(i,o)}async function Rge(e,t,n,i){e.password=null;let o=await gat(sat,n,lat,!1,uat),r=await _at(Object.assign({salt:i},BK),o,8*(Dv[t]*2+2)),s=new Uint8Array(r),a=Rv(rA,hd(s,0,Dv[t])),c=Rv(rA,hd(s,Dv[t],Dv[t]*2)),u=hd(s,Dv[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new hat(new dat(a),Array.from(fat)),hmac:new mat(c)}),u}async function gat(e,t,n,i,o){if(wge)try{return await Mv.importKey(e,t,n,i,o)}catch{return wge=!1,_y.importKey(t)}else return _y.importKey(t)}async function _at(e,t,n){if(Bge)try{return await Mv.deriveBits(e,t,n)}catch{return Bge=!1,_y.pbkdf2(t,e.salt,BK.iterations,n)}else return _y.pbkdf2(t,e.salt,BK.iterations,n)}function Mge(e,t){return t===ni?hT(e):t}function DK(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function yat(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function hd(e,t,n){return e.subarray(t,n)}function Pv(e,t){return e.fromBits(t)}function Rv(e,t){return e.toBits(t)}var AT=12,eG=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(o,r){let s=this;if(s.password){let a=Nge(s,o.subarray(0,AT));if(s.password=null,a[AT-1]!=s.passwordVerification)throw new Error(yy);o=o.subarray(AT)}i?r.error(new Error(zp)):r.enqueue(Nge(s,o))}})}},tG=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=XU(new Uint8Array(AT));c[AT-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(Lge(r,c),0),a=AT}else s=new Uint8Array(i.length),a=0;s.set(Lge(r,i),a),o.enqueue(s)}})}};function Nge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,n[i]);return n}function Lge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,t[i]);return n}function Fge(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Gp(n[0]),crcKey2:new Gp(n[2])});for(let i=0;i<t.length;i++)vK(e,t.charCodeAt(i))}function vK(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=Oge(Math.imul(Oge(i+kge(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function Qge(e){let t=e.keys[2]|2;return kge(Math.imul(t,t^1)>>>8)}function kge(e){return e&255}function Oge(e){return e&4294967295}var Nv="Invalid uncompressed size",Cat="deflate-raw",nG=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,A,g,m=super.readable;(!s||c)&&u&&(A=new wv,m=Ey(m,A)),r&&(m=Gge(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=Ey(m,new tG(t)):(g=new ZU(t),m=Ey(m,g))),Uge(h,m,()=>{let _;s&&!c&&(_=g.signature),(!s||c)&&u&&(_=new DataView(A.value.buffer).getUint32(0)),h.signature=_})}},iG=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,A,g=super.readable;s&&(r?g=Ey(g,new eG(t)):(A=new JU(t),g=Ey(g,A))),u&&(g=Gge(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new wv,g=Ey(g,h)),Uge(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(VE)}})}};function Uge(e,t,n){t=Ey(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function Gge(e,t,n,i,o){let r=t&&i?i:o;return Ey(e,new r(Cat,n))}function Ey(e,t){return e.pipeThrough(t)}var zge="message",Vge="start",Hge="pull",PK="data",Wge="ack",RK="close",sG="deflate",aG="inflate";var oG=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(sG)?r=nG:o.startsWith(aG)&&(r=iG),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,u=new TransformStream({transform(h,A){h&&h.length&&(s+=h.length,A.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),f=new TransformStream({transform(h,A){if(h&&h.length&&(A.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(Nv)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(u).pipeThrough(a).pipeThrough(f)}})}},rG=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var qge=typeof Worker!=ju;var pT=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new rG(r.chunkSize)).pipeThrough(new NK(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(A=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=A:(g.terminate(),A()),t.interface=null):A()})},onTaskFinished(){let{resolveTerminated:A}=t;A&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),A()),t.busy=!1,f(t)}}),(a&&qge?Eat:Kge)(t,r)}},NK=class extends TransformStream{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await MK(t,i)},async transform(s,a){r+=s.length,n&&await MK(n,r,i),a.enqueue(s)},async flush(){o&&await MK(o,r)}})}};async function MK(e,...t){try{await e(...t)}catch{}}function Kge(e,t){return{run:()=>Iat(e,t)}}function Eat(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Tat(e.scripts[0],n,e)}catch{return qge=!1,Kge(e,t)}Object.assign(e,{worker:o,interface:{run:()=>xat(e,{chunkSize:i})}})}return e.interface}async function Iat({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new oG(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function xat(e,t){let n,i,o=new Promise((A,g)=>{n=A,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=bat(e.writable),f=cG({type:Vge,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function bat(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var jge=!0,Yge=!0;function Tat(e,t,n){let i={type:"module"},o,r;typeof e==Up&&(e=e());try{o=new URL(e,t)}catch{o=e}if(jge)try{r=new Worker(o)}catch{jge=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(zge,s=>Sat(s,n)),r}function cG(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&Yge?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{Yge=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Sat({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:_,name:y,outputSize:C}=s,E=new Error(g);Object.assign(E,{stack:m,code:_,name:y,outputSize:C}),A(E)}else{if(n==Hge){let{value:g,done:m}=await a.read();cG({type:PK,value:g,done:m,messageId:o},t)}n==PK&&(await c.ready,await c.write(new Uint8Array(i)),cG({type:Wge,messageId:o},t)),n==RK&&A(null,r)}}catch(g){cG({type:RK,messageId:o},t),A(g)}function A(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var HE=[],LK=[];var Xge=0;async function lG(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:A}=i;t.transferStreams=o||o===ni;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ni&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ni&&i.useCompressionStream,(await m()).run();async function m(){let y=HE.find(C=>!C.busy);if(y)return Jge(y),new pT(y,e,t,_);if(HE.length<A){let C={indexWorker:Xge};return Xge++,HE.push(C),new pT(C,e,t,_)}else return new Promise(C=>LK.push({resolve:C,stream:e,workerOptions:t}))}function _(y){if(LK.length){let[{resolve:C,stream:E,workerOptions:I}]=LK.splice(0,1);C(new pT(y,E,I,_))}else y.worker?(Jge(y),wat(y,t)):HE=HE.filter(C=>C!=y)}}function wat(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{HE=HE.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function Jge(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var Bat="Writer iterator completed too soon",Dat="Writer not initialized",vat="text/plain";var Pat="Content-Type";var Rat=64*1024,QK="writable",gT=class{constructor(){this.size=0}init(){this.initialized=!0}},uG=class extends gT{get readable(){let t=this,{chunkSize:n=Rat}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,u=s===ni?n:Math.min(n,s-c),f=await Ua(t,r+c,u,a);o.enqueue(f),c+n>s||s===ni&&!f.length&&u?o.close():this.chunkOffset+=n}});return i}},OK=class extends gT{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(Dat);return t.writeUint8Array(i)}});Object.defineProperty(t,QK,{get(){return n}})}writeUint8Array(){}};var fG=class extends OK{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},Vp=class extends uG{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},Lv=class extends gT{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Pat,t]),Object.defineProperty(n,QK,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},dG=class extends Vp{constructor(t){super(new Blob([t],{type:vat}))}},hG=class extends Lv{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var FK=class extends uG{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let u=r[a];if(u){let f=u.size;if(c+n<=f)s=await Ua(u,c,n);else{let h=f-c;s=new Uint8Array(n);let A=await Ua(u,c,h);s.set(A,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),A.length+g.length<n&&(s=s.subarray(0,A.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},mG=class extends gT{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.subarray(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.subarray(h))):await c(f);else{let{value:A,done:g}=await t.next();if(g&&!A)throw new Error(Bat);o=A,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await aA(o),r=A.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,QK,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){await s.close()}}},WE=class{constructor(t){return Array.isArray(t)&&(t=new FK(t)),t instanceof ReadableStream&&(t={readable:t}),t}},_T=class{constructor(t){return t.writable===ni&&typeof t.next==Up&&(t=new mG(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ni&&(t.size=0),t instanceof mG||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function aA(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function Ua(e,t,n,i){return e.readUint8Array(t,n,i)}var Zge="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Mat=Zge.length==256;function $ge(e){if(Mat){let t="";for(let n=0;n<e.length;n++)t+=Zge[e[n]];return t}else return new TextDecoder().decode(e)}function Ov(e,t){return t&&t.trim().toLowerCase()=="cp437"?$ge(e):new TextDecoder(t).decode(e)}var kK="filename",UK="rawFilename",Fv="comment",GK="rawComment",Qv="uncompressedSize",zK="compressedSize",VK="offset",AG="diskNumberStart",yT="lastModDate",pG="rawLastModDate",kv="lastAccessDate",e_e="rawLastAccessDate",Uv="creationDate",t_e="rawCreationDate",HK="internalFileAttribute",WK="internalFileAttributes",jK="externalFileAttribute",YK="externalFileAttributes",qK="msDosCompatible",gG="zip64",KK="encrypted",XK="version",JK="versionMadeBy",ZK="zipCrypto",Gv="directory",$K="executable",e7="compressionMethod",t7="signature",n7="extraField",Nat=[kK,UK,zK,Qv,yT,pG,Fv,GK,kv,Uv,VK,AG,AG,HK,WK,jK,YK,qK,gG,KK,XK,JK,ZK,Gv,$K,e7,t7,n7,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],Iy=class{constructor(t){Nat.forEach(n=>this[n]=t[n])}};var n_e="filenameEncoding",i_e="commentEncoding",o_e="decodeText",r_e="extractPrependedData",s_e="extractAppendedData",_G="password",yG="rawPassword",CG="passThrough",EG="signal",a_e="checkPasswordOnly",c_e="checkOverlappingEntryOnly",l_e="checkOverlappingEntry",u_e="checkSignature",IG="useWebWorkers",xG="useCompressionStream",f_e="transferStreams",bG="preventClose",d_e="encryptionStrength",h_e="extendedTimestamp",m_e="keepOrder",A_e="level",p_e="bufferedWrite",g_e="dataDescriptorSignature",__e="useUnicodeFileNames",y_e="dataDescriptor",i7="supportZip64SplitFile",C_e="encodeText",o7="offset",r7="usdz";var s7="File format is not recognized",kat="End of central directory not found",Uat="End of Zip64 central directory locator not found",Gat="Central directory header not found",zat="Local file header not found",Vat="Zip64 extra field not found",Hat="File contains encrypted entry",Wat="Encryption method not supported",E_e="Compression method not supported",I_e="Split zip file",jat="Overlapping entry found",x_e="utf-8",b_e="cp437",Yat=[[Qv,4294967295],[zK,4294967295],[VK,4294967295],[AG,65535]],qat={65535:{getValue:xr,bytes:4},4294967295:{getValue:ET,bytes:8}},xT=class{constructor(t,n={}){Object.assign(this,{reader:new WE(t),options:n,config:Sv(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await aA(i),(i.size===ni||!i.readUint8Array)&&(i=new Vp(await new Response(i.readable).blob()),await aA(i)),i.size<22)throw new Error(s7);i.chunkSize=KU(o);let r=await ect(i,101010256,i.size,22,65535*16);if(!r){let L=await Ua(i,0,4),p=Qr(L);throw xr(p)==134695760?new Error(I_e):new Error(kat)}let s=Qr(r),a=xr(s,12),c=xr(s,16),u=r.offset,f=Ga(s,20),h=u+22+f,A=Ga(s,4),g=i.lastDiskNumber||0,m=Ga(s,6),_=Ga(s,8),y=0,C=0;if(c==4294967295||a==4294967295||_==65535||m==65535){let L=await Ua(i,r.offset-20,20),p=Qr(L);if(xr(p,0)==117853008){c=ET(p,8);let x=await Ua(i,c,56,-1),T=Qr(x),w=r.offset-20-56;if(xr(T,0)!=101075792&&c!=w){let M=c;c=w,c>M&&(y=c-M),x=await Ua(i,c,56,-1),T=Qr(x)}if(xr(T,0)!=101075792)throw new Error(Uat);A==65535&&(A=xr(T,16)),m==65535&&(m=xr(T,20)),_==65535&&(_=ET(T,32)),a==4294967295&&(a=ET(T,40)),c-=a}}if(c>=i.size&&(y=i.size-c-a-22,c=i.size-a-22),g!=A)throw new Error(I_e);if(c<0)throw new Error(s7);let E=0,I=await Ua(i,c,a,m),b=Qr(I);if(a){let L=r.offset-a;if(xr(b,E)!=33639248&&c!=L){let p=c;c=L,c>p&&(y+=c-p),I=await Ua(i,c,a,m),b=Qr(I)}}let S=r.offset-c-(i.lastDiskOffset||0);if(a!=S&&S>=0&&(a=S,I=await Ua(i,c,a,m),b=Qr(I)),c<0||c>=i.size)throw new Error(s7);let B=rc(n,t,n_e),v=rc(n,t,i_e);for(let L=0;L<_;L++){let p=new c7(i,o,n.options);if(xr(b,E)!=33639248)throw new Error(Gat);S_e(p,b,E+6);let x=!!p.bitFlag.languageEncodingFlag,T=E+46,w=T+p.filenameLength,M=w+p.extraFieldLength,O=Ga(b,E+4),U=O>>8==0,Q=O>>8==3,z=I.subarray(T,w),F=Ga(b,E+32),H=M+F,W=I.subarray(M,H),Z=x,Y=x,$=xr(b,E+38),X=U&&(CT(b,E+38)&16)==16||Q&&($>>16&61440)==16384||z.length&&z[z.length-1]=="/".charCodeAt(0),he=Q&&($>>16&73)!=0,ge=xr(b,E+42)+y;Object.assign(p,{versionMadeBy:O,msDosCompatible:U,compressedSize:0,uncompressedSize:0,commentLength:F,directory:X,offset:ge,diskNumberStart:Ga(b,E+34),internalFileAttributes:Ga(b,E+36),externalFileAttributes:$,rawFilename:z,filenameUTF8:Z,commentUTF8:Y,rawExtraField:I.subarray(w,M),executable:he}),p.internalFileAttribute=p.internalFileAttributes,p.externalFileAttribute=p.externalFileAttributes;let fe=rc(n,t,o_e)||Ov,ye=Z?x_e:B||b_e,Ie=Y?x_e:v||b_e,ve=fe(z,ye);ve===ni&&(ve=Ov(z,ye));let Te=fe(W,Ie);Te===ni&&(Te=Ov(W,Ie)),Object.assign(p,{rawComment:W,filename:ve,comment:Te,directory:X||ve.endsWith("/")}),C=Math.max(ge,C),w_e(p,p,b,E+6),p.zipCrypto=p.encrypted&&!p.extraFieldAES;let ke=new Iy(p);ke.getData=(qe,tt)=>p.getData(qe,ke,n.readRanges,tt),ke.arrayBuffer=async qe=>{let tt=new TransformStream,[$t]=await Promise.all([new Response(tt.readable).arrayBuffer(),p.getData(tt,ke,n.readRanges,qe)]);return $t},E=H;let{onprogress:Ge}=t;if(Ge)try{await Ge(L+1,_,new Iy(p))}catch{}yield ke}let P=rc(n,t,r_e),N=rc(n,t,s_e);return P&&(n.prependedData=C>0?await Ua(i,0,C):new Uint8Array),n.comment=f?await Ua(i,u+22,f):new Uint8Array,N&&(n.appendedData=h<i.size?await Ua(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var c7=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:u,extraFieldZip64:f,compressionMethod:h,config:A,bitFlag:g,signature:m,rawLastModDate:_,uncompressedSize:y,compressedSize:C}=r,{dataDescriptor:E}=g,I=n.localDirectory={},b=await Ua(s,a,30,c),S=Qr(b),B=rc(r,o,_G),v=rc(r,o,yG),P=rc(r,o,CG);if(B=B&&B.length&&B,v=v&&v.length&&v,u&&u.originalCompressionMethod!=99)throw new Error(E_e);if(h!=0&&h!=8&&!P)throw new Error(E_e);if(xr(S,0)!=67324752)throw new Error(zat);S_e(I,S,4);let{extraFieldLength:N,filenameLength:L,lastAccessDate:p,creationDate:x}=I;I.rawExtraField=N?await Ua(s,a+30+L,N,c):new Uint8Array,w_e(r,I,S,4,!0),Object.assign(n,{lastAccessDate:p,creationDate:x});let T=r.encrypted&&I.encrypted&&!P,w=T&&!u;if(P||(n.zipCrypto=w),T){if(!w&&u.strength===ni)throw new Error(Wat);if(!B&&!v)throw new Error(Hat)}let M=a+30+L+N,O=C,U=s.readable;Object.assign(U,{diskNumberStart:c,offset:M,size:O});let Q=rc(r,o,EG),z=rc(r,o,a_e),F=rc(r,o,l_e),H=rc(r,o,c_e);H&&(F=!0);let{onstart:W,onprogress:Z,onend:Y}=o,$={options:{codecType:aG,password:B,rawPassword:v,zipCrypto:w,encryptionStrength:u&&u.strength,signed:rc(r,o,u_e)&&!P,passwordVerification:w&&(E?_>>>8&255:m>>>24&255),outputSize:y,signature:m,compressed:h!=0&&!P,encrypted:r.encrypted&&!P,useWebWorkers:rc(r,o,IG),useCompressionStream:rc(r,o,xG),transferStreams:rc(r,o,f_e),checkPasswordOnly:z},config:A,streamOptions:{signal:Q,size:O,onstart:W,onprogress:Z,onend:Y}};F&&await $at({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:m,compressedSize:C,uncompressedSize:y,dataOffset:M,dataDescriptor:E||I.bitFlag.dataDescriptor,extraFieldZip64:f||I.extraFieldZip64,readRanges:i});let X;try{if(!H){z&&(t=new WritableStream),t=new _T(t),await aA(t,P?C:y),{writable:X}=t;let{outputSize:he}=await lG({readable:U,writable:X},$);if(t.size+=he,he!=(P?C:y))throw new Error(Nv)}}catch(he){if(he.outputSize!==ni&&(t.size+=he.outputSize),!z||he.message!=zp)throw he}finally{!rc(r,o,bG)&&X&&!X.locked&&await X.getWriter().close()}return z||H?ni:t.getData?t.getData():X}};function S_e(e,t,n){let i=e.rawBitFlag=Ga(t,n+2),o=(i&1)==1,r=xr(t,n+6);Object.assign(e,{encrypted:o,version:Ga(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:tct(r),filenameLength:Ga(t,n+22),extraFieldLength:Ga(t,n+24)})}function w_e(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Qr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let C=Ga(a,c),E=Ga(a,c+2);s.set(C,{type:C,data:r.slice(c+4,c+4+E)}),c+=4+E}}catch{}let u=Ga(n,i+4);Object.assign(t,{signature:xr(n,i+10),compressedSize:xr(n,i+14),uncompressedSize:xr(n,i+18)});let f=s.get(1);f&&(Kat(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(T_e(h,kK,UK,t,e),t.extraFieldUnicodePath=h);let A=s.get(25461);A&&(T_e(A,Fv,GK,t,e),t.extraFieldUnicodeComment=A);let g=s.get(39169);g?(Xat(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(Jat(m,t),t.extraFieldNTFS=m);let _=s.get(21589);_&&(Zat(_,t,o),t.extraFieldExtendedTimestamp=_);let y=s.get(6534);y&&(t.extraFieldUSDZ=y)}function Kat(e,t){t.zip64=!0;let n=Qr(e.data),i=Yat.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=qat[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(Vat)}}function T_e(e,t,n,i,o){let r=Qr(e.data),s=new Gp;s.append(o[n]);let a=Qr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=xr(r,1);Object.assign(e,{version:CT(r,0),[t]:Ov(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==xr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Xat(e,t,n){let i=Qr(e.data),o=CT(i,4);Object.assign(e,{vendorVersion:CT(i,0),vendorId:CT(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ga(i,5)}),t.compressionMethod=e.compressionMethod}function Jat(e,t){let n=Qr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ga(n,i),s=Ga(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Qr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=a7(s),f=a7(a),h=a7(c),A={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,A),Object.assign(t,A)}}catch{}}function Zat(e,t,n){let i=Qr(e.data),o=CT(i,0),r=[],s=[];n?((o&1)==1&&(r.push(yT),s.push(pG)),(o&2)==2&&(r.push(kv),s.push(e_e)),(o&4)==4&&(r.push(Uv),s.push(t_e))):e.data.length>=5&&(r.push(yT),s.push(pG));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=xr(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function $at({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:u,readRanges:f}){let h=0;if(i)for(let m=0;m<i;m++){let _=e.readers[m];h+=_.size}let A=0;if(c&&(u?A=20:A=12),A){let m=await Ua(e,a+r,A+4,i);if(xr(Qr(m),0)==134695760){let y=xr(Qr(m),4),C,E;u?(C=ET(Qr(m),8),E=ET(Qr(m),16)):(C=xr(Qr(m),8),E=xr(Qr(m),12)),(t.encrypted&&!t.zipCrypto||y==o)&&C==r&&E==s&&(A+=4)}}let g={start:h+n,end:h+a+r+A,fileEntry:t};for(let m of f)if(m.fileEntry!=t&&g.start>=m.start&&g.start<m.end){let _=new Error(jat);throw _.overlappingEntry=m.fileEntry,_}f.push(g)}async function ect(e,t,n,i,o){let r=new Uint8Array(4),s=Qr(r);nct(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await Ua(e,f,u);for(let A=h.length-i;A>=0;A--)if(h[A]==r[0]&&h[A+1]==r[1]&&h[A+2]==r[2]&&h[A+3]==r[3])return{offset:f+A,buffer:h.slice(A,A+i).buffer}}}function rc(e,t,n){return t[n]===ni?e.options[n]:t[n]}function tct(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function a7(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function CT(e,t){return e.getUint8(t)}function Ga(e,t){return e.getUint16(t,!0)}function xr(e,t){return e.getUint32(t,!0)}function ET(e,t){return Number(e.getBigUint64(t,!0))}function nct(e,t,n){e.setUint32(t,n,!0)}function Qr(e){return new DataView(e.buffer)}var lct="File already exists",uct="Zip file comment exceeds 64KB",fct="File entry comment exceeds 64KB",dct="File entry name exceeds 64KB",v_e="Version exceeds 65535",hct="The strength must equal 1, 2, or 3",mct="Extra field type exceeds 65535",Act="Extra field data exceeds 64KB",B7="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",pct="Undefined uncompressed size",gct="Zip file not empty",P_e=new Uint8Array([7,0,2,0,65,69,3,0,0]),T7=0,R_e=[],LG=class{constructor(t,n={}){t=new _T(t);let i=t.availableSize!==ni&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ni&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:Sv(),files:new Map,filenames:new Set,offset:n[o7]===ni?t.size||t.writable.size||0:n[o7],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(gct);t=new WE(t);let n=new xT(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:u,rawFilename:f,bitFlag:h,encrypted:A,uncompressedSize:g,compressedSize:m,diskOffset:_,diskNumber:y,zip64:C}=o,{rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B}=o,{level:v,languageEncodingFlag:P,dataDescriptor:N}=h;E=E||new Uint8Array,I=I||new Uint8Array,b=b||new Uint8Array,S=S||new Uint8Array,B=B||new Uint8Array;let L=Ui(E,I,b,S,B),p=C&&g>4294967295,x=C&&m>4294967295,{headerArray:T,headerView:w}=L_e({version:r,bitFlag:O_e(v,P,N,A,s),compressionMethod:s,uncompressedSize:g,compressedSize:m,lastModDate:a,rawFilename:f,zip64CompressedSize:x,zip64UncompressedSize:p,extraFieldLength:L});return Object.assign(o,{zip64UncompressedSize:p,zip64CompressedSize:x,zip64Offset:C&&this.offset-_>4294967295,zip64DiskNumberStart:C&&y>65535,rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B,extendedTimestamp:b.length>0||S.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(u?4:0),headerArray:T,headerView:w}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;T7<s.maxWorkers?T7++:await new Promise(c=>R_e.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(lct);return o.filenames.add(t),a=_ct(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=R_e.shift();c?c():T7--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ni){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Sct(this,t,n),io(i,n,bG)||await s.getWriter().close(),r.getData?r.getData():s}};async function _ct(e,t,n,i){t=t.trim();let o=io(e,i,qK),r=io(e,i,JK,o?20:768),s=io(e,i,$K);if(r>65535)throw new Error(v_e);let a=io(e,i,YK,0);a===0&&(a=io(e,i,jK,0)),!i[Gv]&&t.endsWith("/")&&(i[Gv]=!0),io(e,i,Gv)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=io(e,i,C_e,hT),f=u(t);if(f===ni&&(f=hT(t)),Ui(f)>65535)throw new Error(dct);let h=i[Fv]||"",A=u(h);if(A===ni&&(A=hT(h)),Ui(A)>65535)throw new Error(fct);let g=io(e,i,XK,20);if(g>65535)throw new Error(v_e);let m=io(e,i,yT,new Date),_=io(e,i,kv),y=io(e,i,Uv),C=io(e,i,WK,0);C===0&&(C=io(e,i,HK,0));let E=io(e,i,CG),I,b;E||(I=io(e,i,_G),b=io(e,i,yG));let S=io(e,i,d_e,3),B=io(e,i,ZK),v=io(e,i,h_e,!0),P=io(e,i,m_e,!0),N=io(e,i,A_e),L=io(e,i,IG),p=io(e,i,p_e),x=io(e,i,g_e,!1),T=io(e,i,EG),w=io(e,i,__e,!0),M=io(e,i,xG),O=io(e,i,e7),U=io(e,i,y_e);p&&U===ni&&(U=!1),(U===ni||B)&&(U=!0);let Q=io(e,i,gG);if(!B&&(I!==ni||b!==ni)&&!(S>=1&&S<=3))throw new Error(hct);let z=new Uint8Array,F=i[n7];if(F){let $t=0,it=0;F.forEach(tn=>$t+=4+Ui(tn)),z=new Uint8Array($t),F.forEach((tn,Wt)=>{if(Wt>65535)throw new Error(mct);if(Ui(tn)>65535)throw new Error(Act);Ns(z,new Uint16Array([Wt]),it),Ns(z,new Uint16Array([Ui(tn)]),it+2),Ns(z,tn,it+4),it+=4+Ui(tn)})}let H=0,W=0,Z=0;if(E&&(Z=i[Qv],Z===ni))throw new Error(pct);let Y=Q===!0;n&&(n=new WE(n),await aA(n),E?(i.uncompressedSize=Z,H=N_e(Z)):n.size===ni?(U=!0,(Q||Q===ni)&&(Q=!0,Z=H=4294967296)):(i.uncompressedSize=Z=n.size,H=N_e(Z)));let{diskOffset:$,diskNumber:X,maxSize:he}=e.writer,ge=Y||Z>4294967295,fe=Y||H>4294967295,ye=Y||e.offset+e.pendingEntriesSize-$>4294967295,ve=io(e,i,i7,!0)&&Y||X+Math.ceil(e.pendingEntriesSize/he)>65535;if(ye||ge||fe||ve){if(Q===!1||!P)throw new Error(B7);Q=!0}Q=Q||!1;let Te=io(e,i,KK);i=Object.assign({},i,{rawFilename:f,rawComment:A,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:_,creationDate:y,rawExtraField:z,zip64:Q,zip64UncompressedSize:ge,zip64CompressedSize:fe,zip64Offset:ye,zip64DiskNumberStart:ve,password:I,rawPassword:b,level:!M&&e.config.CompressionStream===ni&&e.config.CompressionStreamNative===ni?0:N,useWebWorkers:L,encryptionStrength:S,extendedTimestamp:v,zipCrypto:B,bufferedWrite:p,keepOrder:P,useUnicodeFileNames:w,dataDescriptor:U,dataDescriptorSignature:x,signal:T,msDosCompatible:o,internalFileAttribute:C,internalFileAttributes:C,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:M,passThrough:E,encrypted:!!(I&&Ui(I)||b&&Ui(b))||E&&Te,signature:i[t7],compressionMethod:O,uncompressedSize:Z,offset:e.offset-$,diskNumberStart:X});let ke=Ect(i),Ge=xct(i),qe=Ui(ke.localHeaderArray,Ge.dataDescriptorArray);W=qe+H,e.options[r7]&&(W+=W+64),e.pendingEntriesSize+=W;let tt;try{tt=await yct(e,t,n,{headerInfo:ke,dataDescriptorInfo:Ge,metadataSize:qe},i)}finally{e.pendingEntriesSize-=W}return Object.assign(tt,{name:t,comment:h,extraField:F}),new Iy(tt)}async function yct(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,h=e.options[r7],A=Array.from(r.values()).pop(),g={},m,_,y,C,E,I,b;r.set(t,g);try{let P;a&&(P=A&&A.lock,S()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(I=new TransformStream,I.size=0,m=!0,e.bufferedWrites++,await aA(s)):(I=s,await B()),await aA(I);let{writable:N,diskOffset:L}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let M=new Uint8Array(4),O=sc(M);ki(O,0,134695760),await Hp(s,M),e.offset+=4}h&&Ict(i,e.offset-L);let{localHeaderView:p,localHeaderArray:x}=f;m||(await P,await v(N));let{diskNumber:T}=s;E=!0,g.diskNumberStart=T,m?b=new Response(I.readable).blob():await Hp(I,x),g=await Cct(n,I,g,i,e.config,o);let{zip64:w}=g;if(E=!1,r.set(t,g),g.filename=t,m){let[M]=await Promise.all([b,I.writable.getWriter().close(),P]);await B(),C=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,w&&M_e(g),Tct(g,p,o),await v(N),await Hp(s,x),await M.stream().pipeTo(N,{preventClose:!0,preventAbort:!0,signal:u}),s.size+=I.size,C=!1}else g.offset=e.offset-L,w&&M_e(g);if(g.offset>4294967295&&!w)throw new Error(B7);return e.offset+=g.size,g}catch(P){if(m&&C||!m&&E){if(e.hasCorruptedEntries=!0,P)try{P.corruptedEntry=!0}catch{}m?e.offset+=I.size:e.offset=I.size}throw r.delete(t),P}finally{m&&e.bufferedWrites--,y&&y(),_&&_()}function S(){g.lock=new Promise(P=>y=P)}async function B(){e.writerLocked=!0;let{lockWriter:P}=e;e.lockWriter=new Promise(N=>_=()=>{e.writerLocked=!1,N()}),await P}async function v(P){Ui(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Hp(P,new Uint8Array))}}async function Cct(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{headerArray:f,headerView:h,lastModDate:A,rawLastModDate:g,encrypted:m,compressed:_,version:y,compressionMethod:C,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:B,rawExtraFieldAES:v}=a,{dataDescriptorArray:P}=c,{rawFilename:N,lastAccessDate:L,creationDate:p,password:x,rawPassword:T,level:w,zip64:M,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z,zipCrypto:F,dataDescriptor:H,directory:W,executable:Z,versionMadeBy:Y,rawComment:$,rawExtraField:X,useWebWorkers:he,onstart:ge,onprogress:fe,onend:ye,signal:Ie,encryptionStrength:ve,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,useCompressionStream:tt,passThrough:$t}=s,it={lock:i,versionMadeBy:Y,zip64:M,directory:!!W,executable:!!Z,filenameUTF8:!0,rawFilename:N,commentUTF8:!0,rawComment:$,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:B,rawExtraFieldAES:v,rawExtraField:X,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,diskNumberStart:n},{signature:tn,uncompressedSize:Wt}=s,vt=0;$t||(Wt=0);let{writable:bi}=t;if(e){e.chunkSize=KU(r);let di=e.readable,Ot=e.size,Tt={options:{codecType:sG,level:w,rawPassword:T,password:x,encryptionStrength:ve,zipCrypto:m&&F,passwordVerification:m&&F&&g>>8&255,signed:!$t,compressed:_&&!$t,encrypted:m&&!$t,useWebWorkers:he,useCompressionStream:tt,transferStreams:!1},config:r,streamOptions:{signal:Ie,size:Ot,onstart:ge,onprogress:fe,onend:ye}};try{let ii=await lG({readable:di,writable:bi},Tt);vt=ii.outputSize,t.size+=vt,$t||(Wt=ii.inputSize,tn=ii.signature)}catch(ii){throw ii.outputSize!==ni&&(t.size+=ii.outputSize),ii}}return bct({signature:tn,compressedSize:vt,uncompressedSize:Wt,headerInfo:a,dataDescriptorInfo:c},s),H&&await Hp(t,P),Object.assign(it,{uncompressedSize:Wt,compressedSize:vt,lastModDate:A,rawLastModDate:g,creationDate:p,lastAccessDate:L,encrypted:m,zipCrypto:F,size:u+vt,compressionMethod:C,version:y,headerArray:f,headerView:h,signature:tn,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z}),it}function Ect(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:A,extendedTimestamp:g,passThrough:m,encrypted:_,zip64UncompressedSize:y,zip64CompressedSize:C,zip64Offset:E,zip64DiskNumberStart:I,uncompressedSize:b,offset:S,diskNumberStart:B}=e,{version:v,compressionMethod:P}=e,N=!f&&(r>0||r===ni&&P!==0),L,p=m||!N,x=s&&(e.bufferedWrite||!y&&!C||p);if(s){let $=4;y&&($+=8),C&&($+=8),E&&($+=8),I&&($+=4),L=new Uint8Array($);let X=sc(L);if(po(X,0,1),po(X,2,Ui(L)-4),x){let he=sc(L),ge=4;y&&(Xs(he,ge,BigInt(b)),ge+=8),C&&p&&(Xs(he,ge,BigInt(b)),ge+=8),E&&(Xs(he,ge,BigInt(S)),ge+=8),I&&(ki(he,ge,B),ge+=4)}}else L=new Uint8Array;let T;if(_&&!a){T=new Uint8Array(Ui(P_e)+2);let $=sc(T);po($,0,39169),Ns(T,P_e,2),w7($,8,A)}else T=new Uint8Array;let w,M,O;if(g){M=new Uint8Array(9+(i?4:0)+(o?4:0));let $=sc(M);po($,0,21589),po($,2,Ui(M)-4),O=1+(i?2:0)+(o?4:0),w7($,4,O);let X=5;ki($,X,Math.floor(n.getTime()/1e3)),X+=4,i&&(ki($,X,Math.floor(i.getTime()/1e3)),X+=4),o&&ki($,X,Math.floor(o.getTime()/1e3));try{w=new Uint8Array(36);let he=sc(w),ge=S7(n);po(he,0,10),po(he,2,32),po(he,8,1),po(he,10,24),Xs(he,12,ge),Xs(he,20,S7(i)||ge),Xs(he,28,S7(o)||ge)}catch{w=new Uint8Array}}else w=M=new Uint8Array;P===ni&&(P=N?8:0),s&&(v=v>45?v:45),_&&!a&&(v=v>51?v:51,T[9]=P,P=99);let U=x?Ui(L):0,Q=U+Ui(T,M,w,h),{headerArray:z,headerView:F,rawLastModDate:H}=L_e({version:v,bitFlag:O_e(r,c,u,_,P),compressionMethod:P,uncompressedSize:b,lastModDate:n<TK?TK:n>bK?bK:n,rawFilename:t,zip64CompressedSize:C,zip64UncompressedSize:y,extraFieldLength:Q}),W=30,Z=new Uint8Array(W+Ui(t)+Q),Y=sc(Z);return ki(Y,0,67324752),Ns(Z,z,4),Ns(Z,t,W),W+=Ui(t),x&&Ns(Z,L,W),W+=U,Ns(Z,T,W),W+=Ui(T),Ns(Z,M,W),W+=Ui(M),Ns(Z,w,W),W+=Ui(w),Ns(Z,h,W),u&&(ki(Y,18,0),ki(Y,22,0)),{localHeaderArray:Z,localHeaderView:Y,headerArray:z,headerView:F,lastModDate:n,rawLastModDate:H,encrypted:_,compressed:N,version:v,compressionMethod:P,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:L,localExtraFieldZip64Length:U,rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:w,rawExtraFieldAES:T,extraFieldLength:Q}}function Ict(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=sc(i),s=64-(t+Ui(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=sc(a);po(c,0,6534),po(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(Ui(u)+s),Ns(i,u),Ns(i,a,Ui(u)),r=sc(i),po(r,28,o+s),e.metadataSize+=s}function xct({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=sc(i),n&&(r=4,ki(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function bct({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:u}=i,{dataDescriptorView:f,dataDescriptorOffset:h}=o;(!u||s)&&e!==ni&&(ki(c,10,e),a&&ki(f,h,e)),r?a&&(Xs(f,h+4,BigInt(t)),Xs(f,h+12,BigInt(n))):(ki(c,14,t),ki(c,18,n),a&&(ki(f,h+4,t),ki(f,h+8,n)))}function Tct({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:u,zip64CompressedSize:f,zip64Offset:h,zip64DiskNumberStart:A},g,{dataDescriptor:m}){if(m||(t||ki(g,14,o),n||(ki(g,18,r),ki(g,22,s))),n&&i){let _=30+Ui(e)+4;u&&(Xs(g,_,BigInt(s)),_+=8),f&&(Xs(g,_,BigInt(r)),_+=8),h&&(Xs(g,_,BigInt(a)),_+=8),A&&ki(g,_,c)}}function M_e({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let u=sc(c),f=4;o&&(Xs(u,f,BigInt(t)),f+=8),r&&(Xs(u,f,BigInt(e)),f+=8),s&&(Xs(u,f,BigInt(n)),f+=8),a&&ki(u,f,i)}async function Sct(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,u=e.offset-r,f=i.size;for(let[,b]of i){let{rawFilename:S,rawExtraFieldZip64:B,rawExtraFieldAES:v,rawComment:P,rawExtraFieldNTFS:N,rawExtraField:L,extendedTimestamp:p,extraFieldExtendedTimestampFlag:x,lastModDate:T}=b,w;if(p){w=new Uint8Array(9);let M=sc(w);po(M,0,21589),po(M,2,5),w7(M,4,x),ki(M,5,Math.floor(T.getTime()/1e3))}else w=new Uint8Array;b.rawExtraFieldExtendedTimestamp=w,c+=46+Ui(S,P,B,v,N,w,L)}let h=new Uint8Array(c),A=sc(h);await aA(o);let g=0;for(let[b,S]of Array.from(i.values()).entries()){let{offset:B,rawFilename:v,rawExtraFieldZip64:P,rawExtraFieldAES:N,rawExtraFieldExtendedTimestamp:L,rawExtraFieldNTFS:p,rawExtraField:x,rawComment:T,versionMadeBy:w,headerArray:M,headerView:O,zip64:U,zip64UncompressedSize:Q,zip64CompressedSize:z,zip64DiskNumberStart:F,zip64Offset:H,internalFileAttributes:W,externalFileAttributes:Z,diskNumberStart:Y,uncompressedSize:$,compressedSize:X}=S,he=Ui(P,N,L,p,x);ki(A,a,33639248),po(A,a+4,w),Q||ki(O,18,$),z||ki(O,14,X),Ns(h,M,a+6);let ge=a+30;if(po(A,ge,he),ge+=2,po(A,ge,Ui(T)),ge+=2,po(A,ge,U&&F?65535:Y),ge+=2,po(A,ge,W),ge+=2,Z&&ki(A,ge,Z),ge+=4,ki(A,ge,U&&H?4294967295:B),ge+=4,Ns(h,v,ge),ge+=Ui(v),Ns(h,P,ge),ge+=Ui(P),Ns(h,N,ge),ge+=Ui(N),Ns(h,L,ge),ge+=Ui(L),Ns(h,p,ge),ge+=Ui(p),Ns(h,x,ge),ge+=Ui(x),Ns(h,T,ge),a-g>o.availableSize&&(o.availableSize=0,await Hp(o,h.slice(g,a)),g=a),a=ge,n.onprogress)try{await n.onprogress(b+1,i.size,new Iy(S))}catch{}}await Hp(o,g?h.slice(g):h);let m=o.diskNumber,{availableSize:_}=o;_<22&&m++;let y=io(e,n,gG);if(u>4294967295||c>4294967295||f>65535||m>65535){if(y===!1)throw new Error(B7);y=!0}let C=new Uint8Array(y?98:22),E=sc(C);a=0,y&&(ki(E,0,101075792),Xs(E,4,BigInt(44)),po(E,12,45),po(E,14,45),ki(E,16,m),ki(E,20,s),Xs(E,24,BigInt(f)),Xs(E,32,BigInt(f)),Xs(E,40,BigInt(c)),Xs(E,48,BigInt(u)),ki(E,56,117853008),Xs(E,64,BigInt(u)+BigInt(c)),ki(E,72,m+1),io(e,n,i7,!0)&&(m=65535,s=65535),f=65535,u=4294967295,c=4294967295,a+=76),ki(E,a,101010256),po(E,a+4,m),po(E,a+6,s),po(E,a+8,f),po(E,a+10,f),ki(E,a+12,c),ki(E,a+16,u);let I=Ui(t);if(I)if(I<=65535)po(E,a+20,I);else throw new Error(uct);await Hp(o,C),I&&await Hp(o,t)}async function Hp(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=Ui(t),await i.write(t)}finally{i.releaseLock()}}function S7(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function io(e,t,n,i){let o=t[n]===ni?e.options[n]:t[n];return o===ni?i:o}function N_e(e){return e+5*(Math.floor(e/16383)+1)}function w7(e,t,n){e.setUint8(t,n)}function po(e,t,n){e.setUint16(t,n,!0)}function ki(e,t,n){e.setUint32(t,n,!0)}function Xs(e,t,n){e.setBigUint64(t,n,!0)}function Ns(e,t,n){e.set(t,n)}function sc(e){return new DataView(e.buffer)}function Ui(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function L_e({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:u}){let f=new Uint8Array(26),h=sc(f);po(h,0,e),po(h,2,t),po(h,4,n);let A=new Uint32Array(1),g=sc(A);po(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),po(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let m=A[0];return ki(h,6,m),(a||o!==ni)&&ki(h,14,a?4294967295:o),(c||i!==ni)&&ki(h,18,c?4294967295:i),po(h,22,Ui(s)),po(h,24,u),{headerArray:f,headerView:h,rawLastModDate:m}}function O_e(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}dT({Deflate:ege,Inflate:Ige});function wct(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Gn=wct;function Bct(e,t){this.position=e,this.headingPitchRange=t}var OG=Bct;function FG(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new _e,this.tourEnd=new _e,this.entryStart=new _e,this.entryEnd=new _e,this._activeEntries=[]}FG.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};FG.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;k_e.call(this,e,t,function(i){n.playlistIndex=0,i||Q_e(n._activeEntries),n.tourEnd.raiseEvent(i)})};FG.prototype.stop=function(){Q_e(this._activeEntries)};function Q_e(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function k_e(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=Dct.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function Dct(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,k_e.call(this,e,t,n)}}var QG=FG;var Gi=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Gi.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Gi.Bounce.In(e*2)*.5:Gi.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),Wv=function(){return performance.now()},vct=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=Wv()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),bT={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=bT.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=bT.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},U_e=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),D7=new vct,G_e=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Gi.Linear.None,this._interpolationFunction=bT.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=U_e.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=D7,D7.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=Wv()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var A=[a],g=0,m=h.length;g<m;g+=1){var _=this._handleRelativeValue(a,h[g]);if(isNaN(_)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}A.push(_)}f&&(i[s]=A)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var y=a;for(var C in y)n[s][C]=y[C];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var E={};for(var C in h)E[C]=h[C];i[s]=h=E}this._setupProperties(y,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=Wv()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=Wv()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Gi.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=bT.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=Wv()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var _=Math.trunc(s/a),y=s-_*a,C=Math.min(y/i._duration,1);return C===0&&s===i._duration?1:C},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var A=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=A);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*A,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var xui=U_e.nextId,cA=D7,bui=cA.getAll.bind(cA),Tui=cA.removeAll.bind(cA),Sui=cA.add.bind(cA),wui=cA.remove.bind(cA),Bui=cA.update.bind(cA);var Pct={LINEAR_NONE:Gi.Linear.None,QUADRATIC_IN:Gi.Quadratic.In,QUADRATIC_OUT:Gi.Quadratic.Out,QUADRATIC_IN_OUT:Gi.Quadratic.InOut,CUBIC_IN:Gi.Cubic.In,CUBIC_OUT:Gi.Cubic.Out,CUBIC_IN_OUT:Gi.Cubic.InOut,QUARTIC_IN:Gi.Quartic.In,QUARTIC_OUT:Gi.Quartic.Out,QUARTIC_IN_OUT:Gi.Quartic.InOut,QUINTIC_IN:Gi.Quintic.In,QUINTIC_OUT:Gi.Quintic.Out,QUINTIC_IN_OUT:Gi.Quintic.InOut,SINUSOIDAL_IN:Gi.Sinusoidal.In,SINUSOIDAL_OUT:Gi.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Gi.Sinusoidal.InOut,EXPONENTIAL_IN:Gi.Exponential.In,EXPONENTIAL_OUT:Gi.Exponential.Out,EXPONENTIAL_IN_OUT:Gi.Exponential.InOut,CIRCULAR_IN:Gi.Circular.In,CIRCULAR_OUT:Gi.Circular.Out,CIRCULAR_IN_OUT:Gi.Circular.InOut,ELASTIC_IN:Gi.Elastic.In,ELASTIC_OUT:Gi.Elastic.Out,ELASTIC_IN_OUT:Gi.Elastic.InOut,BACK_IN:Gi.Back.In,BACK_OUT:Gi.Back.Out,BACK_IN_OUT:Gi.Back.InOut,BOUNCE_IN:Gi.Bounce.In,BOUNCE_OUT:Gi.Bounce.Out,BOUNCE_IN_OUT:Gi.Bounce.InOut},ps=Object.freeze(Pct);function kG(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}kG.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new le(this.view.position);t.flyToBoundingSphere(o,i)}};kG.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};kG.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ps.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=wt(t,e)),t};var UG=kG;function v7(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}v7.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};v7.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var GG=v7;var J_e={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=j0(t),J_e[t]}},F7;typeof DOMParser<"u"&&(F7=new DOMParser);var Rct=new MU({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),by=32,z_e=2414016,V_e=1,H_e=16093e3,W_e=.1,j_e=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],Y_e=["http://www.google.com/kml/ext/2.2"],Mct=["http://www.w3.org/2005/Atom"],Ne={kml:j_e,gx:Y_e,atom:Mct,kmlgx:j_e.concat(Y_e)},Q7={Document:aye,Folder:Zct,Placemark:$ct,NetworkLink:clt,GroundOverlay:rlt,PhotoOverlay:uye,ScreenOverlay:olt,Tour:tlt};function lA(e){this._dataSource=e,this._deferred=yu(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(lA.prototype,{dataSource:{get:function(){return this._dataSource}}});lA.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};lA.prototype.addPromise=function(e){this._promises.push(e)};lA.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};lA.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=Ku._getTimestamp()),this._process(e)};lA.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=Ku._getTimestamp(),e._process(!0)},0)};lA.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};lA.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};lA.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=Q7[i.localName];if(l(o)&&(Ne.kml.indexOf(i.namespaceURI)!==-1||Ne.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||Ku._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function Nct(e){let t=e.slice(0,Math.min(4,e.size)),n=yu(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function Lct(e){let t=yu(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function Z_e(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function $_e(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function Oct(e,t){return Promise.resolve(e.getData(new hG)).then(function(n){n=Z_e(n),n=$_e(n),t.kml=F7.parseFromString(n,"application/xml")})}function P7(e,t){let n=J_e.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new fG(n))).then(function(i){t[e.filename]=i})}function Yu(e,t,n,i){let o=i.keys,r=new jv.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new jv.default(u).absoluteTo(r).toString(),A=o.indexOf(h);if(A!==-1){let g=o[A];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function qu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=k7(a,i);l(c)&&s.setAttribute(n,c.url)}}function eye(e,t,n){let i=Js(e,"id");i=l(i)&&i.length!==0?i:Xn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Xn(),l(n)&&(i=n+i)),o=t.add(new _r({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new dlt),o}function Yv(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function WG(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function zG(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=WG(n[s],t);return o}function Ty(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Js(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function zi(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function q_e(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function Th(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function fi(e,t,n){let i=zi(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function On(e,t,n){let i=zi(e,t,n);if(l(i))return i.textContent.trim()}function Sh(e,t,n){let i=zi(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function k7(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new we({url:o});else{let r=new jv.default(t.getUrlComponent()),s=new jv.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new we({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var lu={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function L7(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(lu.maximumRed=r,lu.red=void 0):(lu.maximumRed=void 0,lu.red=0),o>0?(lu.maximumGreen=o,lu.green=void 0):(lu.maximumGreen=void 0,lu.green=0),i>0?(lu.maximumBlue=i,lu.blue=void 0):(lu.maximumBlue=void 0,lu.blue=0),lu.alpha=n,G.fromRandom(lu)):new G(r,o,i,n)}function qE(e,t,n){let i=On(e,t,n);if(l(i))return L7(i,On(e,"colorMode",n)==="random")}function Fct(e){let t=zi(e,"TimeStamp",Ne.kmlgx),n=On(t,"when",Ne.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=K.fromIso8601(n),o=new hs;return o.addInterval(new Rn({start:i,stop:je.MAXIMUM_VALUE})),o}function Qct(e){let t=zi(e,"TimeSpan",Ne.kmlgx);if(!l(t))return;let n,i=zi(t,"begin",Ne.kmlgx),o=l(i)?K.fromIso8601(i.textContent):void 0,r=zi(t,"end",Ne.kmlgx),s=l(r)?K.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(K.lessThan(s,o)){let a=o;o=s,s=a}n=new hs,n.addInterval(new Rn({start:o,stop:s}))}else l(o)?(n=new hs,n.addInterval(new Rn({start:o,stop:je.MAXIMUM_VALUE}))):l(s)&&(n=new hs,n.addInterval(new Rn({start:je.MINIMUM_VALUE,stop:s})));return n}function tye(){let e=new jc;return e.width=by,e.height=by,e.scaleByDistance=new Yt(z_e,V_e,H_e,W_e),e.pixelOffsetScaleByDistance=new Yt(z_e,V_e,H_e,W_e),e}function U7(){let e=new lm;return e.outline=!0,e.outlineColor=G.WHITE,e}function nye(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function G7(e,t,n,i,o){let r=On(e,"href",Ne.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=fi(e,"x",Ne.gx)??0,u=fi(e,"y",Ne.gx)??0;c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=k7(r,n,i);if(o){let a=On(e,"refreshMode",Ne.kml),c=On(e,"viewRefreshMode",Ne.kml);a==="onInterval"||a==="onExpire"?yt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&yt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=On(e,"viewBoundScale",Ne.kml)??1,f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=On(e,"viewFormat",Ne.kml)??f,A=On(e,"httpQuery",Ne.kml);l(h)&&s.setQueryParameters(Af(HG(h))),l(A)&&s.setQueryParameters(Af(HG(A)));let g=t._ellipsoid;return V7(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function kct(e,t,n,i,o){let r=fi(t,"scale",Ne.kml),s=fi(t,"heading",Ne.kml),a=qE(t,"color",Ne.kml),c=zi(t,"Icon",Ne.kml),u=G7(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=fi(c,"x",Ne.gx),h=fi(c,"y",Ne.gx),A=fi(c,"w",Ne.gx),g=fi(c,"h",Ne.gx),m=zi(t,"hotSpot",Ne.kml),_=Ty(m,"x"),y=Ty(m,"y"),C=Js(m,"xunits"),E=Js(m,"yunits"),I=n.billboard;l(I)||(I=tye(),n.billboard=I),I.image=u,I.scale=r,I.color=a,(l(f)||l(h)||l(A)||l(g))&&(I.imageSubRegion=new Xe(f,h,A,g)),l(s)&&s!==0&&(I.rotation=D.toRadians(-s),I.alignedAxis=d.UNIT_Z),r=r??1;let b,S;l(_)&&(C==="pixels"?b=-_*r:C==="insetPixels"?b=(_-by)*r:C==="fraction"&&(b=-_*by*r),b+=by*.5*r),l(y)&&(E==="pixels"?S=y*r:E==="insetPixels"?S=(-y+by)*r:E==="fraction"&&(S=y*by*r),S-=by*.5*r),(l(b)||l(S))&&(I.pixelOffset=new k(b,S))}function VG(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")kct(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=nye(),n.label=c),c.scale=fi(a,"scale",Ne.kml)??c.scale,c.fillColor=qE(a,"color",Ne.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new $c,n.polyline=c),c.width=fi(a,"width",Ne.kml),c.material=qE(a,"color",Ne.kml),l(qE(a,"outerColor",Ne.gx))&&yt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(fi(a,"outerWidth",Ne.gx))&&yt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(fi(a,"physicalWidth",Ne.gx))&&yt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(Sh(a,"labelVisibility",Ne.gx))&&yt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=U7(),n.polygon=c),c.material=qE(a,"color",Ne.kml)??c.material,c.fill=Sh(a,"fill",Ne.kml)??c.fill,c.outline=Sh(a,"outline",Ne.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=L7(On(a,"bgColor",Ne.kml))??G.WHITE,u=L7(On(a,"textColor",Ne.kml))??G.BLACK,f=On(a,"text",Ne.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=On(a,"listItemType",Ne.kml);(c==="radioFolder"||c==="checkOffOnly")&&yt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Uct(e,t,n,i,o){let r=new _r,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let A=c[h];(A.localName==="Style"||A.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")VG(e,h,r,i,o);else{let A=Th(h,"Pair",Ne.kml);for(let g=0;g<A.length;g++){let m=A[g],_=On(m,"key",Ne.kml);if(_==="normal"){let y=On(m,"styleUrl",Ne.kml);if(l(y))s=n.getById(y),l(s)||(s=n.getById(`#${y}`)),l(s)&&r.merge(s);else{let C=zi(m,"Style",Ne.kml);VG(e,C,r,i,o)}}else yt(`kml-styleMap-${_}`,`KML - Unsupported StyleMap key: ${_}`)}}}let f=On(t,"styleUrl",Ne.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let A=f.split("#"),g=A[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${A[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Gct(e,t,n){return t.fetchXML().then(function(i){return iye(e,i,n,t,!0)})}function iye(e,t,n,i,o,r){let s,a,c,u,f=q_e(t,"Style",Ne.kml);if(l(f)){let _=f.length;for(s=0;s<_;s++)u=f[s],a=Js(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new _r({id:a}),n.add(c),VG(e,u,c,i,r)))}let h=q_e(t,"StyleMap",Ne.kml);if(l(h)){let _=h.length;for(s=0;s<_;s++){let y=h[s];if(a=Js(y,"id"),l(a)){let C=Th(y,"Pair",Ne.kml);for(let E=0;E<C.length;E++){let I=C[E],b=On(I,"key",Ne.kml);if(b==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let S=On(I,"styleUrl",Ne.kml);if(l(S)){S[0]!=="#"&&(S=`#${S}`),o&&l(i)&&(S=i.getUrlComponent()+S);let B=n.getById(S);l(B)&&c.merge(B)}else u=zi(I,"Style",Ne.kml),VG(e,u,c,i,r)}}else yt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}}let A=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let _=g[s].textContent;if(_[0]!=="#"){let y=_.split("#");if(y.length===2){let C=y[0],E=i.getDerivedResource({url:C});A.push(Gct(e,E,n))}}}return A}function z7(e,t,n){let i=new q_(e,t.id,["position"]),o=new Fp(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new $c,t.polyline.positions=new j_([i,o])}function oye(e,t){return!l(e)&&!l(t)||e==="clampToGround"?Ze.CLAMP_TO_GROUND:e==="relativeToGround"?Ze.RELATIVE_TO_GROUND:e==="absolute"?Ze.NONE:t==="clampToSeaFloor"?(yt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),Ze.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(yt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),Ze.RELATIVE_TO_GROUND):(l(e)?yt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):yt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),Ze.CLAMP_TO_GROUND)}function zct(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new Fp(e))}function Vct(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function jG(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():nye(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():tye(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(G.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new k(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function rye(e,t){let n=e.path;l(n)||(n=new vg,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Hct(e,t,n,i,o){let r=On(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=e._ellipsoid,f=WG(r,u);return i.position=f,jG(e,i,o,oye(s,a)),c&&Yv(s,a)&&z7(t,i,o),!0}function K_e(e,t,n,i,o){let r=zi(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=Sh(n,"tessellate",Ne.kml),f=Yv(s,a),h=fi(n,"drawOrder",Ne.gx),A=e._ellipsoid,g=zG(r,A),m=o.polyline;if(f&&c){let _=new Pg;i.wall=_,_.positions=g;let y=o.polygon;l(y)&&(_.fill=y.fill,_.material=y.material),_.outline=!0,l(m)?(_.outlineColor=l(m.material)?m.material.color:G.WHITE,_.outlineWidth=m.width):l(y)&&(_.outlineColor=l(y.material)?y.material.color:G.WHITE)}else if(e._clampToGround&&!f&&u){let _=new $c;_.clampToGround=!0,i.polyline=_,_.positions=g,l(m)?(_.material=l(m.material)?m.material.color.getValue(je.MINIMUM_VALUE):G.WHITE,_.width=m.width??1):(_.material=G.WHITE,_.width=1),_.zIndex=h}else l(h)&&yt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&yt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new $c,i.polyline=m,m.positions=Vct(g,s,a,A),(!u||f)&&(m.arcType=un.NONE);return!0}function Wct(e,t,n,i,o){let r=zi(n,"outerBoundaryIs",Ne.kml),s=zi(r,"LinearRing",Ne.kml),a=zi(s,"coordinates",Ne.kml),c=e._ellipsoid,u=zG(a,c),f=Sh(n,"extrude",Ne.kml),h=On(n,"altitudeMode",Ne.kml),A=On(n,"altitudeMode",Ne.gx),g=Yv(h,A),m=l(o.polygon)?o.polygon.clone():U7(),_=o.polyline;if(l(_)&&(m.outlineColor=l(_.material)?_.material.color:G.WHITE,m.outlineWidth=_.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let y=new xc(u),C=Th(n,"innerBoundaryIs",Ne.kml);for(let E=0;E<C.length;E++){s=Th(C[E],"LinearRing",Ne.kml);for(let I=0;I<s.length;I++)a=zi(s[I],"coordinates",Ne.kml),u=zG(a,c),l(u)&&y.holes.push(new xc(u))}m.hierarchy=y}return!0}function jct(e,t,n,i,o){let r=On(n,"altitudeMode",Ne.kml),s=On(n,"altitudeMode",Ne.gx),a=Th(n,"coord",Ne.gx),c=Th(n,"angles",Ne.gx),u=Th(n,"when",Ne.kml),f=Sh(n,"extrude",Ne.kml),h=Yv(r,s),A=e._ellipsoid;c.length>0&&yt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],_=[];for(let C=0;C<g;C++){let E=WG(a[C].textContent,A);m.push(E),_.push(K.fromIso8601(u[C].textContent))}let y=new ic;return y.addSamples(_,m),i.position=y,jG(e,i,o,oye(r,s)),rye(i,o),i.availability=new hs,u.length>0&&i.availability.addInterval(new Rn({start:_[0],stop:_[_.length-1]})),h&&f&&z7(t,i,o),!0}function X_e(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new ic;h.addSamples(e,t),n.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:zct(h,s,a)})),i.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Yct(e,t,n,i,o){let r=Sh(n,"interpolate",Ne.gx),s=Th(n,"Track",Ne.gx),a,c,u,f=!1,h=new J_,A=new hs,g=new nc,m=e._ellipsoid;for(let _=0,y=s.length;_<y;_++){let C=s[_],E=Th(C,"when",Ne.kml),I=Th(C,"coord",Ne.gx),b=On(C,"altitudeMode",Ne.kml),S=On(C,"altitudeMode",Ne.gx),B=Yv(b,S),v=Sh(C,"extrude",Ne.kml),P=Math.min(I.length,E.length),N=[];a=[];for(let L=0;L<P;L++){let p=WG(I[L].textContent,m);N.push(p),a.push(K.fromIso8601(E[L].textContent))}r&&(l(c)&&X_e([c,a[0]],[u,N[0]],g,A,h,!1,"absolute",void 0,!1),c=a[P-1],u=N[N.length-1]),X_e(a,N,g,A,h,B&&v,b,S,!0),f=f||B&&v}return i.availability=A,i.position=g,jG(e,i,o),rye(i,o),f&&(z7(t,i,o),i.polyline.show=h),!0}var sye={Point:Hct,LineString:K_e,LinearRing:K_e,Polygon:Wct,Track:jct,MultiTrack:Yct,MultiGeometry:qct,Model:Kct};function qct(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=sye[f.localName];if(l(h)){let A=eye(f,t,r);A.parent=i,A.name=i.name,A.availability=i.availability,A.description=i.description,A.kml=i.kml,h(e,t,f,A,o)&&(a=!0)}}return a}function Kct(e,t,n,i,o){return yt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function Xct(e,t){let n=zi(e,"ExtendedData",Ne.kml);if(!l(n))return;l(zi(n,"SchemaData",Ne.kml))&&yt("kml-schemaData","KML - SchemaData is unsupported"),l(Js(n,"xmlns:prefix"))&&yt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=Th(n,"Data",Ne.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Js(a,"name");l(c)&&(i[c]={displayName:On(a,"displayName",Ne.kml),value:On(a,"value",Ne.kml)})}}t.kml.extendedData=i}var bo;typeof document<"u"&&(bo=document.createElement("div"));function Jct(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=On(e,"description",Ne.kml),h=t.balloonStyle??n.balloonStyle,A=G.WHITE,g=G.BLACK,m=f;l(h)&&(A=h.bgColor??G.WHITE,g=h.textColor??G.BLACK,m=h.text??f);let _;if(l(m)){if(m=m.replace("$[name]",t.name??""),m=m.replace("$[description]",f??""),m=m.replace("$[address]",c.address??""),m=m.replace("$[Snippet]",c.snippet??""),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let E=m.match(/\$\[.+?\]/g);if(E!==null)for(r=0;r<E.length;r++){let I=E[r],b=I.substr(2,I.length-3),S=/\/displayName$/.test(b);b=b.replace(/\/displayName$/,""),_=u[b],l(_)&&(_=S?_.displayName:_.value),l(_)&&(m=m.replace(I,_??""))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],_=u[s],m+=`<tr><th>${_.displayName??s}</th><td>${_.value??""}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=Rct.link(m),bo.innerHTML=m;let y=bo.querySelectorAll("a");for(r=0;r<y.length;r++)y[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(Yu(bo,"a","href",i),Yu(bo,"link","href",i),Yu(bo,"area","href",i),Yu(bo,"img","src",i),Yu(bo,"iframe","src",i),Yu(bo,"video","src",i),Yu(bo,"audio","src",i),Yu(bo,"source","src",i),Yu(bo,"track","src",i),Yu(bo,"input","src",i),Yu(bo,"embed","src",i),Yu(bo,"script","src",i),Yu(bo,"video","poster",i)),qu(bo,"a","href",o),qu(bo,"link","href",o),qu(bo,"area","href",o),qu(bo,"img","src",o),qu(bo,"iframe","src",o),qu(bo,"video","src",o),qu(bo,"audio","src",o),qu(bo,"source","src",o),qu(bo,"track","src",o),qu(bo,"input","src",o),qu(bo,"embed","src",o),qu(bo,"script","src",o),qu(bo,"video","poster",o);let C='<div class="cesium-infoBox-description-lighter" style="';C+="overflow:auto;",C+="word-wrap:break-word;",C+=`background-color:${A.toCssColorString()};`,C+=`color:${g.toCssColorString()};`,C+='">',C+=`${bo.innerHTML}</div>`,bo.innerHTML="",t.description=C}function YG(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=eye(t,i,n.context),c=a.kml,u=Uct(e,t,n.styleCollection,r,s),f=On(t,"name",Ne.kml);a.name=f,a.parent=o;let h=Qct(t);l(h)||(h=Fct(t)),a.availability=h,W7(a);function A(I){return I?I.show&&A(I.parent):!0}let g=Sh(t,"visibility",Ne.kml);a.show=A(o)&&(g??!0);let m=zi(t,"author",Ne.atom),_=c.author;_.name=On(m,"name",Ne.atom),_.uri=On(m,"uri",Ne.atom),_.email=On(m,"email",Ne.atom);let y=zi(t,"link",Ne.atom),C=c.link;C.href=Js(y,"href"),C.hreflang=Js(y,"hreflang"),C.rel=Js(y,"rel"),C.type=Js(y,"type"),C.title=Js(y,"title"),C.length=Js(y,"length"),c.address=On(t,"address",Ne.kml),c.phoneNumber=On(t,"phoneNumber",Ne.kml),c.snippet=On(t,"Snippet",Ne.kml),Xct(t,a),Jct(t,a,u,s,r);let E=e._ellipsoid;return lye(t,a,E),cye(t,a,E),l(zi(t,"Region",Ne.kml))&&yt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function aye(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Zct(e,t,n,i){let o=YG(e,t,n),r=ze(n);r.parentEntity=o.entity,aye(e,t,r,i)}function $ct(e,t,n,i){let o=YG(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),A=sye[h.localName];l(A)&&(A(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),jG(e,r,s))}var elt={FlyTo:ilt,Wait:nlt,SoundCue:R7,AnimatedUpdate:R7,TourControl:R7};function tlt(e,t,n,i){let o=On(t,"name",Ne.kml),r=Js(t,"id"),s=new QG(o,r),a=zi(t,"Playlist",Ne.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let A=elt[h.localName];A?A(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function R7(e,t){yt(`KML Tour unsupported node ${t.localName}`)}function nlt(e,t){let n=fi(t,"duration",Ne.gx);e.addPlaylistEntry(new GG(n))}function ilt(e,t,n){let i=fi(t,"duration",Ne.gx),o=On(t,"flyToMode",Ne.gx),r={kml:{}};lye(t,r,n),cye(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new UG(i,o,s);e.addPlaylistEntry(a)}function cye(e,t,n){let i=zi(e,"Camera",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml)??0,c=fi(i,"tilt",Ne.kml)??0,u=fi(i,"roll",Ne.kml)??0,f=d.fromDegrees(o,r,s,n),h=pc.fromDegrees(a,c-90,u);t.kml.camera=new OU(f,h)}}function lye(e,t,n){let i=zi(e,"LookAt",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml),c=fi(i,"tilt",Ne.kml),u=fi(i,"range",Ne.kml)??0;c=D.toRadians(c??0),a=D.toRadians(a??0);let f=new Eh(a,c-D.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new OG(h,f)}}function olt(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=zi(t,"Icon",Ne.kml),c=G7(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=zi(t,"screenXY",Ne.kml),A=zi(t,"overlayXY",Ne.kml),g=zi(t,"size",Ne.kml),m,_,y,C,E,I;l(g)&&(m=Ty(g,"x"),_=Ty(g,"y"),y=Js(g,"xunits"),C=Js(g,"yunits"),l(m)&&m!==-1&&m!==0&&(y==="fraction"?E=`width: ${Math.floor(m*100)}%`:y==="pixels"&&(E=`width: ${m}px`),f.push(E)),l(_)&&_!==-1&&_!==0&&(C==="fraction"?I=`height: ${Math.floor(_*100)}%`:C==="pixels"&&(I=`height: ${_}px`),f.push(I))),u.style=f.join(";");let b=0,S=u.height;l(A)&&(m=Ty(A,"x"),_=Ty(A,"y"),y=Js(A,"xunits"),C=Js(A,"yunits"),l(m)&&(y==="fraction"?b=m*u.width:(y==="pixels"||y==="insetPixels")&&(b=m)),l(_)&&(C==="fraction"?S=_*u.height:(C==="pixels"||C==="insetPixels")&&(S=_))),l(h)&&(m=Ty(h,"x"),_=Ty(h,"y"),y=Js(h,"xunits"),C=Js(h,"yunits"),l(m)&&(y==="fraction"?E=`left: calc(${Math.floor(m*100)}% - ${b}px)`:y==="pixels"?E=`left: ${m-b}px`:y==="insetPixels"&&(E=`right: ${m-b}px`),f.push(E)),l(_)&&(C==="fraction"?I=`bottom: calc(${Math.floor(_*100)}% - ${S}px)`:C==="pixels"?I=`bottom: ${_-S}px`:C==="insetPixels"&&(I=`top: ${_-S}px`),f.push(I))),u.style=f.join(";")},o.appendChild(u)}function rlt(e,t,n,i){let r=YG(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=zG(zi(t,"LatLonQuad",Ne.gx),c),f=fi(t,"drawOrder",Ne.kml);if(l(u))s=U7(),s.hierarchy=new xc(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new um,s.zIndex=f,r.rectangle=s;let m=zi(t,"LatLonBox",Ne.kml);if(l(m)){let _=fi(m,"west",Ne.kml),y=fi(m,"south",Ne.kml),C=fi(m,"east",Ne.kml),E=fi(m,"north",Ne.kml);l(_)&&(_=D.negativePiToPi(D.toRadians(_))),l(y)&&(y=D.clampToLatitudeRange(D.toRadians(y))),l(C)&&(C=D.negativePiToPi(D.toRadians(C))),l(E)&&(E=D.clampToLatitudeRange(D.toRadians(E))),s.coordinates=new ae(_,y,C,E);let I=fi(m,"rotation",Ne.kml);if(l(I)){let b=D.toRadians(I);s.rotation=b,s.stRotation=b}}}let h=zi(t,"Icon",Ne.kml),A=G7(h,e,n.sourceResource,n.uriResolver,!0);if(l(A)){a&&yt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=fi(h,"x",Ne.gx),_=fi(h,"y",Ne.gx),y=fi(h,"w",Ne.gx),C=fi(h,"h",Ne.gx);(l(m)||l(_)||l(y)||l(C))&&yt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=A,s.material.color=qE(t,"color",Ne.kml),s.material.transparent=!0}else s.material=qE(t,"color",Ne.kml);let g=On(t,"altitudeMode",Ne.kml);l(g)?g==="absolute"?(s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g!=="clampToGround"&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=On(t,"altitudeMode",Ne.gx),g==="relativeToSeaFloor"?(yt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g==="clampToSeaFloor"?yt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function uye(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),yt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var Sy={INTERVAL:0,EXPIRE:1,STOP:2};function HG(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var slt=new ae,TT=new Ae,M7=new k,alt=new d;function V7(e,t,n,i,o,r){function s(u){return u<-D.PI_OVER_TWO?-D.PI_OVER_TWO:u>D.PI_OVER_TWO?D.PI_OVER_TWO:u}function a(u){return u>D.PI?u-D.TWO_PI:u<-D.PI?u+D.TWO_PI:u}let c=K0(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ie.MORPHING){let u,f;if(o=o??slt,l(n)&&(M7.x=n.clientWidth*.5,M7.y=n.clientHeight*.5,u=t.pickEllipsoid(M7,r,alt)),l(u)?f=r.cartesianToCartographic(u,TT):(f=ae.center(o,TT),u=r.cartographicToCartesian(f)),l(i)&&!D.equalsEpsilon(i,1,D.EPSILON9)){let C=o.width*i*.5,E=o.height*i*.5;o=new ae(a(f.longitude-C),s(f.latitude-E),a(f.longitude+C),s(f.latitude+E))}c=c.replace("[bboxWest]",D.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",D.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",D.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",D.toDegrees(o.north).toString());let h=D.toDegrees(f.longitude).toString(),A=D.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",A),c=c.replace("[lookatTilt]",D.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",D.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",A),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,TT),c=c.replace("[cameraLon]",D.toDegrees(TT.longitude).toString()),c=c.replace("[cameraLat]",D.toDegrees(TT.latitude).toString()),c=c.replace("[cameraAlt]",D.toDegrees(TT.height).toString());let g=t.frustum,m=g.aspectRatio,_="",y="";if(l(m)){let C=D.toDegrees(g.fov);m>1?(_=C,y=C/m):(y=C,_=C*m)}c=c.replace("[horizFov]",_.toString()),c=c.replace("[vertFov]",y.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Af(c))}function clt(e,t,n,i){let r=YG(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=zi(t,"Link",Ne.kml);if(l(c)||(c=zi(t,"Url",Ne.kml)),l(c)){let u=On(c,"href",Ne.kml),f,h;if(l(u)){let A=u;if(u=k7(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(A=s.getDerivedResource({url:A}));else{if(A=u.clone(),f=On(c,"viewRefreshMode",Ne.kml),f==="onRegion"){yt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=On(c,"viewBoundScale",Ne.kml)??1;let y=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",C=On(c,"viewFormat",Ne.kml)??y,E=On(c,"httpQuery",Ne.kml);l(C)&&u.setQueryParameters(Af(HG(C))),l(E)&&u.setQueryParameters(Af(HG(E)));let I=e._ellipsoid;V7(u,e.camera,e.canvas,h,e._lastCameraView.bbox,I)}let g={sourceUri:A,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new Oa,_=H7(e,m,u,g).then(function(y){let C=e._entityCollection,E=m.values;C.suspendEvents();for(let S=0;S<E.length;S++){let B=E[S];l(B.parent)||(B.parent=r,W7(B)),C.add(B)}C.resumeEvents();let I=On(c,"refreshMode",Ne.kml),b=fi(c,"refreshInterval",Ne.kml)??0;if(I==="onInterval"&&b>0||I==="onExpire"||f==="onStop"){let S=zi(y,"NetworkLinkControl",Ne.kml),B=l(S),v=K.now(),P={id:Xn(),href:u,cookie:{},lastUpdated:v,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:v},N=0;if(B&&(P.cookie=Af(On(S,"cookie",Ne.kml)??""),N=fi(S,"minRefreshPeriod",Ne.kml)??0),I==="onInterval")B&&(b=Math.max(N,b)),P.refreshMode=Sy.INTERVAL,P.time=b;else if(I==="onExpire"){let L;if(B&&(L=On(S,"expires",Ne.kml)),l(L))try{let p=K.fromIso8601(L),x=K.secondsDifference(p,v);x>0&&x<N&&K.addSeconds(v,N,p),P.refreshMode=Sy.EXPIRE,P.time=p}catch{yt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(P.refreshMode=Sy.STOP,P.time=fi(c,"viewRefreshTime",Ne.kml)??0):yt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(P.refreshMode)&&e._networkLinks.set(P.id,P)}}).catch(function(y){yt(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,y)});i.addPromise(_)}}}function llt(e,t,n,i){let o=Q7[t.localName];return l(o)?o(e,t,n,i):uye(e,t,n,i)}function O7(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:zi(a,"Document",Ne.kml),u=On(c,"name",Ne.kml);l(u)||(u=W_(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new Ku._DeferredLoading(e),h=new Oa(e);return Promise.all(iye(e,n,h,i,!1,o)).then(function(){let A=n.documentElement;if(A.localName==="kml"){let m=A.childNodes;for(let _=0;_<m.length;_++){let y=m[_];if(l(Q7[y.localName])){A=y;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),llt(e,A,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function ult(e,t,n,i,o){let r=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new xT(new Vp(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let A=a[h];A.directory||(/\.kml$/i.test(A.filename)&&(!l(f)||!/\//i.test(A.filename))?(l(f)&&c.push(P7(f,u)),f=A):c.push(P7(A,u)))}return l(f)&&c.push(Oct(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new ce("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),O7(e,t,u.kml,i,u,o)})})}function H7(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let A=0;A<h;A++)u.push(f[A])}}else o=o??we.DEFAULT.clone();return o=we.createIfNeeded(o),l(a)&&(a=Gn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?Nct(u).then(function(f){return f?ult(e,t,u,o,a):Lct(u).then(function(h){h=Z_e(h),h=$_e(h);let A,g;try{A=F7.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||A.body||A.documentElement.tagName==="parsererror"){let m=l(g)?g:A.documentElement.firstChild.nodeValue;throw m||(m=A.body.innerText),new ce(m)}return O7(e,t,A,o,r,a,s)})}):O7(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function Ku(e){e=e??V.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new _e,this._error=new _e,this._loading=new _e,this._refresh=new _e,this._unsupportedNode=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new ly,this._networkLinks=new Pt,this._entityCluster=new od,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=e.ellipsoid??te.default;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}Ku.load=function(e,t){return t=t??V.EMPTY_OBJECT,new Ku(t).load(e,t)};Object.defineProperties(Ku.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});Ku.prototype.load=function(e,t){t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return H7(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};Ku.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function W7(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function flt(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=zi(r,"NetworkLinkControl",Ne.kml),c=l(a),u=0;if(c){if(l(zi(a,"Update",Ne.kml))){yt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Af(On(a,"cookie",Ne.kml)??""),u=fi(a,"minRefreshPeriod",Ne.kml)??0}let f=K.now(),h=t.refreshMode;if(h===Sy.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===Sy.EXPIRE){let v;if(l(a)&&(v=On(a,"expires",Ne.kml)),l(v))try{let P=K.fromIso8601(v),N=K.secondsDifference(P,f);N>0&&N<u&&K.addSeconds(f,u,P),t.time=P}catch{yt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let A=t.entity,g=e._entityCollection,m=n.values;function _(v){g.remove(v);let P=v._children,N=P.length;for(let L=0;L<N;++L)_(P[L])}g.suspendEvents();let y=g.values.slice(),C;for(C=0;C<y.length;++C){let v=y[C];v.parent===A&&(v.parent=void 0,_(v))}for(g.resumeEvents(),g.suspendEvents(),C=0;C<m.length;C++){let v=m[C];l(v.parent)||(v.parent=A,W7(v)),g.add(v)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let E=g.computeAvailability(),I=E.start,b=E.stop,S=K.equals(I,je.MINIMUM_VALUE),B=K.equals(b,je.MAXIMUM_VALUE);if(!S||!B){let v=e._clock;(v.startTime!==I||v.stopTime!==b)&&(v.startTime=I,v.stopTime=b,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var N7=new Pt;Ku.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=K.now(),i=this;N7.removeAll();function o(f){let h=f._children,A=h.length;for(let g=0;g<A;++g){let m=h[g];N7.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,D.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,D.EPSILON7)&&a.upWC.equalsEpsilon(s.up,D.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new Pt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!N7.contains(h.id)){if(!f.updating){let A=!1;if(f.refreshMode===Sy.INTERVAL?K.secondsDifference(n,f.lastUpdated)>f.time&&(A=!0):f.refreshMode===Sy.EXPIRE?K.greaterThan(n,f.time)&&(A=!0):f.refreshMode===Sy.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&K.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(A=!0)),A){o(h),f.updating=!0;let g=new Oa,m=f.href.clone();m.setQueryParameters(f.cookie);let _=i._ellipsoid??te.default;V7(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,_),H7(i,g,m,{context:h.id}).then(flt(i,f,g,c,m)).catch(function(y){let C=`NetworkLink ${f.href} refresh failed: ${y}`;console.log(C),i._error.raiseEvent(i,C)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function dlt(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}Ku._DeferredLoading=lA;Ku._getTimestamp=Oi;var ST=Ku;function qv(){me.throwInstantiationError()}qv.prototype.update=me.throwInstantiationError;qv.prototype.getBoundingSphere=me.throwInstantiationError;qv.prototype.isDestroyed=me.throwInstantiationError;qv.prototype.destroy=me.throwInstantiationError;var fye=qv;var j7=32,hlt="http://www.opengis.net/kml/2.2",Bh="http://www.google.com/kml/ext/2.2",mlt="http://www.w3.org/2000/xmlns/";function qG(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Alt=/^data:image\/([^,;]+)/;qG.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof we){if(e=we.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Alt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function plt(e,t){return function(n){e._files[t]=n}}qG.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new ce("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(plt(this,r))}return o};Object.defineProperties(qG.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function KG(e){this._time=e}KG.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};KG.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return XE(n)};KG.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function Y7(){this._ids={},this._styles={},this._count=0}Y7.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};Y7.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function mye(){this._ids={}}mye.prototype.get=function(e){if(!l(e))return this.get(Xn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function q7(e){e=e??V.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=q7._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(mlt,"xmlns:gx",Bh);let a=r.createElement("Document");s.appendChild(a),pye(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?glt(f,c.files):{kml:f,externalFiles:c.files}})}function glt(e,t){let n=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new Lv,o=new LG(i);return o.add("doc.kml",new dG(e)).then(function(){let r=Object.keys(t);return Aye(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function Aye(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new Vp(n[o])).then(function(){return Aye(e,t,n,i+1)})}q7._createState=function(e){let t=e.entities,n=new Y7,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===je.MINIMUM_VALUE?r.stop===je.MAXIMUM_VALUE?r=new Rn:K.addSeconds(r.stop,-10*s,r.start):r.stop===je.MAXIMUM_VALUE&&K.addSeconds(r.start,10*s,r.stop);let a=new qG(e.modelCallback);return{kmlDoc:document.implementation.createDocument(hlt,"kml"),ellipsoid:e.ellipsoid??te.default,idManager:new mye,styleCache:n,externalFileHandler:a,time:o,valueGetter:new KG(o),sampleDuration:s,defaultAvailability:new hs([r])}};function pye(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let A=n[h];c=[],u=[],f=[],_lt(e,A,u,f),ylt(e,A.polyline,u,f),hye(e,A.rectangle,u,f,c),hye(e,A.polygon,u,f,c),xlt(e,A,A.model,u,f);let g,m=A.availability;l(m)&&(g=i.createElement("TimeSpan"),K.equals(m.start,je.MINIMUM_VALUE)||g.appendChild(yn(i,"begin",K.toIso8601(m.start))),K.equals(m.stop,je.MAXIMUM_VALUE)||g.appendChild(yn(i,"end",K.toIso8601(m.stop))));for(let C=0;C<c.length;++C){let E=c[C];E.setAttribute("id",s.get(A.id)),E.appendChild(yn(i,"name",A.name)),E.appendChild(yn(i,"visibility",A.show)),E.appendChild(yn(i,"description",A.description)),l(g)&&E.appendChild(g),t.appendChild(E)}let _=u.length;if(_>0){let C=i.createElement("Placemark");C.setAttribute("id",s.get(A.id));let E=A.name,I=A.label;if(l(I)){let S=i.createElement("LabelStyle"),B=r.get(I.text);E=l(B)&&B.length>0?B:E;let v=r.getColor(I.fillColor);l(v)&&(S.appendChild(yn(i,"color",v)),S.appendChild(yn(i,"colorMode","normal")));let P=r.get(I.scale);l(P)&&S.appendChild(yn(i,"scale",P)),f.push(S)}C.appendChild(yn(i,"name",E)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),l(g)&&C.appendChild(g),t.appendChild(C);let b=f.length;if(b>0){let S=i.createElement("Style");for(let B=0;B<b;++B)S.appendChild(f[B]);C.appendChild(yn(i,"styleUrl",o.get(S)))}if(u.length===1)C.appendChild(u[0]);else if(u.length>1){let S=i.createElement("MultiGeometry");for(let B=0;B<_;++B)S.appendChild(u[B]);C.appendChild(S)}}let y=A._children;if(y.length>0){let C=i.createElement("Folder");C.setAttribute("id",s.get(A.id)),C.appendChild(yn(i,"name",A.name)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),t.appendChild(C),pye(e,C,y)}}}var uu=new d,Cl=new Ae,wh=new K;function _lt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){gye(e,t,a,n,i);return}s.get(c,void 0,uu);let u=yn(o,"coordinates",KE(uu,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(JE(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let A=a instanceof jc?yye(e,a):_ye(e,a);i.push(A)}function gye(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof nc?(c=u.intervals,f=!1):c=t.availability??e.defaultAvailability;let h=n instanceof Dg,A,g,m,_=[];for(A=0;A<c.length;++A){let C=c.get(A),E=f?u:C.data,I=r.createElement("altitudeMode");E instanceof Fp?(E=E._value,I.appendChild(JE(e,Ze.CLAMP_TO_GROUND))):l(n)?I.appendChild(JE(e,n.heightReference)):I.appendChild(JE(e,Ze.NONE));let b=[],S=[];if(E.isConstant){a.get(E,void 0,uu);let v=yn(r,"coordinates",KE(uu,s));b.push(K.toIso8601(C.start)),S.push(v),b.push(K.toIso8601(C.stop)),S.push(v)}else if(E instanceof ic)for(m=E._property._times,g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),E.getValueInReferenceFrame(m[g],eo.FIXED,uu),S.push(KE(uu,s));else if(E instanceof ad){m=E._times;let v=E._values;for(g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),d.fromArray(v,g*3,uu),S.push(KE(uu,s))}else{let v=e.sampleDuration;C.start.clone(wh),C.isStartIncluded||K.addSeconds(wh,v,wh);let P=C.stop;for(;K.lessThan(wh,P);)E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)),K.addSeconds(wh,v,wh);C.isStopIncluded&&K.equals(wh,P)&&(E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)))}let B=r.createElementNS(Bh,"Track");B.appendChild(I);for(let v=0;v<b.length;++v){let P=yn(r,"when",b[v]),N=yn(r,"coord",S[v],Bh);B.appendChild(P),B.appendChild(N)}h&&B.appendChild(Cye(e,n)),_.push(B)}if(_.length===1)i.push(_[0]);else if(_.length>1){let C=r.createElementNS(Bh,"MultiTrack");for(A=0;A<_.length;++A)C.appendChild(_[A]);i.push(C)}if(l(n)&&!h){let C=n instanceof jc?yye(e,n):_ye(e,n);o.push(C)}let y=t.path;if(l(y)){let C=a.get(y.width),E=y.material;if(l(E)||l(C)){let I=r.createElement("LineStyle");l(C)&&I.appendChild(yn(r,"width",C)),K7(e,E,I),o.push(I)}}}function _ye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(yn(n,"color",r)),o.appendChild(yn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(yn(n,"scale",s/j7)),o}function yye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let A=n.createElement("Icon");A.appendChild(yn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(A.appendChild(yn(n,"x",g.x,Bh)),A.appendChild(yn(n,"y",g.y,Bh)),A.appendChild(yn(n,"w",g.width,Bh)),A.appendChild(yn(n,"h",g.height,Bh))),r.appendChild(A)}let a=i.getColor(t.color);l(a)&&(r.appendChild(yn(n,"color",a)),r.appendChild(yn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(yn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=c??1,k.divideByScalar(u,c,u);let A=i.get(t.width,j7),g=i.get(t.height,j7),m=i.get(t.horizontalOrigin,Ri.CENTER);m===Ri.CENTER?u.x-=A*.5:m===Ri.RIGHT&&(u.x-=A);let _=i.get(t.verticalOrigin,Wn.CENTER);_===Wn.TOP?u.y+=g:_===Wn.CENTER&&(u.y+=g*.5);let y=n.createElement("hotSpot");y.setAttribute("x",-u.x),y.setAttribute("y",u.y),y.setAttribute("xunits","pixels"),y.setAttribute("yunits","pixels"),r.appendChild(y)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=D.toDegrees(-f),f===0&&(f=360),r.appendChild(yn(n,"heading",f))),r}function ylt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(yn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,A=s.get(h),g=yn(o,"coordinates",KE(A,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(yn(o,"drawOrder",m,Bh)),n.push(a);let _=o.createElement("LineStyle"),y=s.get(t.width);l(y)&&_.appendChild(yn(o,"width",y)),K7(e,t.material,_),i.push(_)}function Clt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,Cl),c.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${r}`);let f=yn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),A=i.createElement("LinearRing");return A.appendChild(f),h.appendChild(A),[h]}function dye(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)Ae.fromCartesian(t[f],r,Cl),s.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${i?Cl.height:n}`);let c=yn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function Elt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(dye(e,f,r,s)),a.push(h);let A=u.holes;if(l(A)){let g=A.length;for(let m=0;m<g;++m){let _=i.createElement("innerBoundaryIs");_.appendChild(dye(e,A[m].positions,r,s)),a.push(_)}}return a}function hye(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof um;if(a&&s.getMaterialType(t.material)==="Image"){Ilt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(yn(r,"extrude",!0));let f=a?Clt(e,t,u):Elt(e,t,u),h=f.length;for(let y=0;y<h;++y)c.appendChild(f[y]);let A=r.createElement("altitudeMode");A.appendChild(JE(e,t.heightReference)),c.appendChild(A),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(yn(r,"fill",m)),K7(e,t.material,g);let _=s.get(t.outline,!1);if(_){g.appendChild(yn(r,"outline",_));let y=r.createElement("LineStyle"),C=s.get(t.outlineWidth,1);y.appendChild(yn(r,"width",C));let E=s.getColor(t.outlineColor,G.BLACK);y.appendChild(yn(r,"color",E)),y.appendChild(yn(r,"colorMode","normal")),i.push(y)}i.push(g)}function Ilt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(JE(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(yn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(yn(i,"north",D.toDegrees(u.north))),f.appendChild(yn(i,"south",D.toDegrees(u.south))),f.appendChild(yn(i,"east",D.toDegrees(u.east))),f.appendChild(yn(i,"west",D.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),A=r.texture(h.image),g=i.createElement("Icon");g.appendChild(yn(i,"href",A)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(yn(i,"color",XE(h.color))),n.push(s)}function Cye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(yn(n,"x",s)),u.appendChild(yn(n,"y",s)),u.appendChild(yn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(yn(n,"href",c)),r.appendChild(a),r}function xlt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){gye(e,t,n,i,o);return}let u=Cye(e,n),f=r.createElement("altitudeMode");f.appendChild(JE(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,uu),Ae.fromCartesian(uu,s,Cl);let h=r.createElement("Location");h.appendChild(yn(r,"longitude",D.toDegrees(Cl.longitude))),h.appendChild(yn(r,"latitude",D.toDegrees(Cl.latitude))),h.appendChild(yn(r,"altitude",Cl.height)),u.appendChild(h),i.push(u)}function K7(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=XE(G.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=XE(r.color);break;case"PolylineOutline":s=XE(r.color),c=XE(r.outlineColor),u=r.outlineWidth,n.appendChild(yn(i,"outerColor",c,Bh)),n.appendChild(yn(i,"outerWidth",u,Bh));break;case"Stripe":s=XE(r.oddColor);break}l(s)&&(n.appendChild(yn(i,"color",s)),n.appendChild(yn(i,"colorMode","normal")))}function JE(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,Ze.NONE),r;switch(o){case Ze.NONE:r=n.createTextNode("absolute");break;case Ze.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case Ze.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function KE(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)Ae.fromCartesian(e[o],t,Cl),i.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${Cl.height}`);return i.join(" ")}function yn(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function XE(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var Eye=q7;var wT=`in vec4 position;
|
||
in vec2 textureCoordinates;
|
||
|
||
out vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
gl_Position = position;
|
||
v_textureCoordinates = textureCoordinates;
|
||
}
|
||
`;function XG(e){this._context=e}var Kv,blt=new nt({primitiveType:Me.TRIANGLES}),Tlt=new Ei({color:new G(0,0,0,0)});function Slt(e,t){return new as({context:e,colorTextures:[t],destroyAttachments:!1})}function wlt(e,t){return ln.fromCache({context:e,vertexShaderSource:wT,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function Blt(e,t){return(!l(Kv)||Kv.viewport.width!==e||Kv.viewport.height!==t)&&(Kv=Ue.fromCache({viewport:new Xe(0,0,e,t)})),Kv}XG.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:wlt(o,e.fragmentShaderSource),a=Slt(o,t),c=Blt(n,i),u=e.uniformMap,f=Tlt;f.framebuffer=a,f.renderState=c,f.execute(o);let h=blt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};XG.prototype.isDestroyed=function(){return!1};XG.prototype.destroy=function(){return ue(this)};var JG=XG;function Dlt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var El=Dlt;function Dh(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(Dh.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});Dh.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function vlt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}Dh.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new We({sources:[t]})),typeof n=="string"&&(n=new We({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?vlt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),A=new ln({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:A,keyword:a,derivedKeywords:[],count:0},A._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};Dh.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){X7(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};Dh.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};Dh.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new We({sources:[r]})),typeof s=="string"&&(s=new We({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new ln({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),A={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=A,this._shaders[o]=A,h};function X7(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];X7(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}Dh.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];X7(this,n),--this._numberOfShaders}this._shadersToRelease={}};Dh.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};Dh.prototype.isDestroyed=function(){return!1};Dh.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var ZG=Dh;function ZE(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(ZE.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});ZE.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};ZE.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};ZE.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};ZE.prototype.isDestroyed=function(){return!1};ZE.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var $G=ZE;var J7={};function Plt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Rlt=32.184,Mlt=2451545;function Uye(e,t){t=K.addSeconds(e,Rlt,t);let n=K.totalDays(t)-Mlt;return t=K.addSeconds(t,Plt(n),t),t}var ez=new K(2451545,0,oi.TAI),Nlt=1e3,md=D.RADIANS_PER_DEGREE,Xu=D.RADIANS_PER_ARCSECOND,ac=14959787e4,Iye=new J;function Gye(e,t,n,i,o,r,s){n<0&&(n=-n,o+=D.PI);let a=e*(1-t),c=i-o,u=o,f=Olt(r-i,t),h=Llt(t,0);Glt(c,n,u,Iye);let A=a*(1+t),g=Math.cos(f),m=Math.sin(f),_=1+t*g,y=A/_;return l(s)?(s.x=y*g,s.y=y*m,s.z=0):s=new d(y*g,y*m,0),J.multiplyByVector(Iye,s,s)}function Llt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function Olt(e,t){let n=klt(e,t);return Ult(n,t)}var Flt=50,Qlt=D.EPSILON8;function klt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<Flt&&Math.abs(o-i)>Qlt;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*D.TWO_PI,o}function Ult(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=D.zeroToTwoPi(r),e<0&&(r-=D.TWO_PI),r+=n*D.TWO_PI,r}function Glt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new J(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var zlt=1.0000010178*ac,Vlt=100.46645683*md,Hlt=129597742283429e-5*Xu,xye=16002,bye=21863,Tye=32004,Sye=10931,wye=14529,Bye=16368,Dye=15318,vye=32794,Wlt=64*1e-7*ac,jlt=-152*1e-7*ac,Ylt=62*1e-7*ac,qlt=-8*1e-7*ac,Klt=32*1e-7*ac,Xlt=-41*1e-7*ac,Jlt=19*1e-7*ac,Zlt=-11*1e-7*ac,$lt=-150*1e-7*ac,eut=-46*1e-7*ac,tut=68*1e-7*ac,nut=54*1e-7*ac,iut=14*1e-7*ac,out=24*1e-7*ac,rut=-28*1e-7*ac,sut=22*1e-7*ac,Pye=10,Rye=16002,Mye=21863,Nye=10931,Lye=1473,Oye=32004,Fye=4387,Qye=73,aut=-325*1e-7,cut=-322*1e-7,lut=-79*1e-7,uut=232*1e-7,fut=-52*1e-7,dut=97*1e-7,hut=55*1e-7,mut=-41*1e-7,Aut=-105*1e-7,put=-137*1e-7,gut=258*1e-7,_ut=35*1e-7,yut=-116*1e-7,Cut=-88*1e-7,Eut=-112*1e-7,Iut=-80*1e-7,BT=new K(0,0,oi.TAI);function xut(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/(ri.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=zlt+Wlt*Math.cos(xye*o)+$lt*Math.sin(xye*o)+jlt*Math.cos(bye*o)+eut*Math.sin(bye*o)+Ylt*Math.cos(Tye*o)+tut*Math.sin(Tye*o)+qlt*Math.cos(Sye*o)+nut*Math.sin(Sye*o)+Klt*Math.cos(wye*o)+iut*Math.sin(wye*o)+Xlt*Math.cos(Bye*o)+out*Math.sin(Bye*o)+Jlt*Math.cos(Dye*o)+rut*Math.sin(Dye*o)+Zlt*Math.cos(vye*o)+sut*Math.sin(vye*o),s=Vlt+Hlt*i+aut*Math.cos(Pye*o)+Aut*Math.sin(Pye*o)+cut*Math.cos(Rye*o)+put*Math.sin(Rye*o)+lut*Math.cos(Mye*o)+gut*Math.sin(Mye*o)+uut*Math.cos(Nye*o)+_ut*Math.sin(Nye*o)+fut*Math.cos(Lye*o)+yut*Math.sin(Lye*o)+dut*Math.cos(Oye*o)+Cut*Math.sin(Oye*o)+hut*Math.cos(Fye*o)+Eut*Math.sin(Fye*o)+mut*Math.cos(Qye*o)+Iut*Math.sin(Qye*o),a=.0167086342-.0004203654*i,c=102.93734808*md+11612.3529*Xu*i,u=469.97289*Xu*i,f=174.87317577*md-8679.27034*Xu*i;return Gye(r,a,u,c,f,s,t)}function zye(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/ri.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*md,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*md,A=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*md,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,_=218.31664563*md,y=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,C=297.85019547*md+Xu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),E=93.27209062*md+Xu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),I=134.96340251*md+Xu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),b=357.52910918*md+Xu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),S=310.17137918*md-Xu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),B=2*C,v=4*C,P=6*C,N=2*I,L=3*I,p=4*I,x=2*E;a+=3400.4*Math.cos(B)-635.6*Math.cos(B-I)-235.6*Math.cos(I)+218.1*Math.cos(B-b)+181*Math.cos(B+I),c+=.014216*Math.cos(B-I)+.008551*Math.cos(B-N)-.001383*Math.cos(I)+.001356*Math.cos(B+I)-.001147*Math.cos(v-L)-914e-6*Math.cos(v-N)+869e-6*Math.cos(B-b-I)-627e-6*Math.cos(B)-394e-6*Math.cos(v-p)+282e-6*Math.cos(B-b-N)-279e-6*Math.cos(C-I)-236e-6*Math.cos(N)+231e-6*Math.cos(v)+229e-6*Math.cos(P-p)-201e-6*Math.cos(N-x),f+=486.26*Math.cos(B-x)-40.13*Math.cos(B)+37.51*Math.cos(x)+25.73*Math.cos(N-x)+19.97*Math.cos(B-b-x),A+=-55609*Math.sin(B-I)-34711*Math.sin(B-N)-9792*Math.sin(I)+9385*Math.sin(v-L)+7505*Math.sin(v-N)+5318*Math.sin(B+I)+3484*Math.sin(v-p)-3417*Math.sin(B-b-I)-2530*Math.sin(P-p)-2376*Math.sin(B)-2075*Math.sin(B-L)-1883*Math.sin(N)-1736*Math.sin(P-5*I)+1626*Math.sin(b)-1370*Math.sin(P-L),m+=-5392*Math.sin(B-x)-540*Math.sin(b)-441*Math.sin(B)+423*Math.sin(x)-288*Math.sin(N-x),y+=-3332.9*Math.sin(B)+1197.4*Math.sin(B-I)-662.5*Math.sin(b)+396.3*Math.sin(I)-218*Math.sin(B-b);let T=2*S,w=3*S;f+=46.997*Math.cos(S)*i-.614*Math.cos(B-x+S)*i+.614*Math.cos(B-x-S)*i-.0297*Math.cos(T)*o-.0335*Math.cos(S)*o+.0012*Math.cos(B-x+T)*o-16e-5*Math.cos(S)*r+4e-5*Math.cos(w)*r+4e-5*Math.cos(T)*r;let M=2.116*Math.sin(S)*i-.111*Math.sin(B-x-S)*i-.0015*Math.sin(S)*o;A+=M,y+=M,m+=-520.77*Math.sin(S)*i+13.66*Math.sin(B-x+S)*i+1.12*Math.sin(B-S)*i-1.06*Math.sin(x-S)*i+.66*Math.sin(T)*o+.371*Math.sin(S)*o-.035*Math.sin(B-x+T)*o-.015*Math.sin(B-x+S)*o+.0014*Math.sin(S)*r-.0011*Math.sin(w)*r-9e-4*Math.sin(T)*r,a*=Nlt;let O=u+f*Xu,U=h+A*Xu,Q=_+y*Xu,z=g+m*Xu;return Gye(a,c,O,U,z,Q,t)}var kye=.012300034,but=kye/(kye+1)*-1;function Tut(e,t){return t=zye(e,t),d.multiplyByScalar(t,but,t)}var Vye=new J(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),Xv=new d;J7.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),l(t)||(t=new d),Xv=xut(e,Xv),t=d.negate(Xv,t),Tut(e,Xv),d.subtract(t,Xv,t),J.multiplyByVector(Vye,t,t),t};J7.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),t=zye(e,t),J.multiplyByVector(Vye,t,t),t};var $E=J7;function Sut(e){e=e??V.EMPTY_OBJECT,this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??2}var wy=Sut;function DT(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Xe,this._viewportCartesian4=new se,this._viewportDirty=!1,this._viewportOrthographicMatrix=R.clone(R.IDENTITY),this._viewportTransformation=R.clone(R.IDENTITY),this._model=R.clone(R.IDENTITY),this._view=R.clone(R.IDENTITY),this._inverseView=R.clone(R.IDENTITY),this._projection=R.clone(R.IDENTITY),this._infiniteProjection=R.clone(R.IDENTITY),this._entireFrustum=new k,this._currentFrustum=new k,this._frustumPlanes=new se,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=J.clone(R.IDENTITY),this._view3DDirty=!0,this._view3D=new R,this._inverseView3DDirty=!0,this._inverseView3D=new R,this._inverseModelDirty=!0,this._inverseModel=new R,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new J,this._viewRotation=new J,this._inverseViewRotation=new J,this._viewRotation3D=new J,this._inverseViewRotation3D=new J,this._inverseProjectionDirty=!0,this._inverseProjection=new R,this._modelViewDirty=!0,this._modelView=new R,this._modelView3DDirty=!0,this._modelView3D=new R,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new R,this._inverseModelViewDirty=!0,this._inverseModelView=new R,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new R,this._viewProjectionDirty=!0,this._viewProjection=new R,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new R,this._modelViewProjectionDirty=!0,this._modelViewProjection=new R,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new R,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new R,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new R,this._normalDirty=!0,this._normal=new J,this._normal3DDirty=!0,this._normal3D=new J,this._inverseNormalDirty=!0,this._inverseNormal=new J,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new J,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ei,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new k,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new k,this._modelToEnu=new R,this._enuToModel=new R,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new G,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(DT.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Xe.equals(e,this._viewport)){Xe.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return Wye(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return Wye(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){R.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,R.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,R.getMatrix3(this.inverseModel,e),J.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return $7(this),this._view3D}},viewRotation:{get:function(){return $7(this),this._viewRotation}},viewRotation3D:{get:function(){return $7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return qye(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return qye(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return Fut(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return Qut(this),this._modelView}},modelView3D:{get:function(){return kut(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Wut(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Uut(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Gut(this),this._inverseModelView3D}},viewProjection:{get:function(){return zut(this),this._viewProjection}},inverseViewProjection:{get:function(){return Vut(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Hut(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return jut(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return Yut(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return qut(this),this._modelViewInfiniteProjection}},normal:{get:function(){return Kut(this),this._normal}},normal3D:{get:function(){return Xut(this),this._normal3D}},inverseNormal:{get:function(){return Jut(this),this._inverseNormal}},inverseNormal3D:{get:function(){return Zut(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return Yye(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return Yye(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??te.default}}});function wut(e,t){R.clone(t,e._view),R.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function But(e,t){R.clone(t,e._inverseView),R.getMatrix3(t,e._inverseViewRotation)}function Dut(e,t){R.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function vut(e,t){R.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var Hye=new d,Put=new R;function Rut(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,Hye)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,Hye)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=J.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=kt.eastNorthUpToFixedFrame(i,n,Put);e._enuToModel=R.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=R.inverseTransformation(e._enuToModel,e._modelToEnu),D.equalsEpsilon(n._radii.x,n._radii.y,D.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var Z7=new J,Mut=new Ae;function Nut(e,t){kt.computeIcrfToCentralBodyFixedMatrix(t.time,Z7);let n=$E.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);J.multiplyByVector(Z7,n,n),d.normalize(n,e._sunDirectionWC),n=J.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=$E.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),J.multiplyByVector(Z7,n,n),J.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Mut);i.project(r,e._sunPositionColumbusView)}DT.prototype.updateCamera=function(e){wut(this,e.viewMatrix),But(this,e.inverseViewMatrix),Rut(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ie.SCENE2D&&e.frustum instanceof An};DT.prototype.updateFrustum=function(e){Dut(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&vut(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=D.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};DT.prototype.updatePass=function(e){this._pass=e};var Lut=[],Out=new wy;DT.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ie.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),Nut(this,e);let n=e.light??Out;n instanceof wy?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=J.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??Lut,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=kt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,G.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function Wye(e){if(e._viewportDirty){let t=e._viewport;R.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),R.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function Fut(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ie.SCENE2D&&e._mode!==ie.MORPHING&&!e._orthographicIn3D?R.inverse(e._projection,e._inverseProjection):R.clone(R.ZERO,e._inverseProjection))}function Qut(e){e._modelViewDirty&&(e._modelViewDirty=!1,R.multiplyTransformation(e._view,e._model,e._modelView))}function kut(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,R.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Uut(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,R.inverse(e.modelView,e._inverseModelView))}function Gut(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,R.inverse(e.modelView3D,e._inverseModelView3D))}function zut(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,R.multiply(e._projection,e._view,e._viewProjection))}function Vut(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,R.inverse(e.viewProjection,e._inverseViewProjection))}function Hut(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,R.multiply(e._projection,e.modelView,e._modelViewProjection))}function Wut(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function jut(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,R.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function Yut(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,R.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function qut(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,R.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function Kut(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;R.getMatrix3(e.inverseModelView,t),J.transpose(t,t)}}function Xut(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;R.getMatrix3(e.inverseModelView3D,t),J.transpose(t,t)}}function Jut(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;R.getMatrix3(e.modelView,t),J.transpose(t,t)}}function Zut(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;R.getMatrix3(e.modelView3D,t),J.transpose(t,t)}}var jye=new d;function Yye(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,R.multiplyByPoint(e.inverseModel,e._cameraPosition,jye),ei.fromCartesian(jye,e._encodedCameraPositionMC))}var $ut=new d,eft=new d,tft=new d,nft=new d,ift=new Ae,oft=new d,rft=new R;function sft(e,t,n,i,o,r,s,a){let c=$ut;c.x=e.y,c.y=e.z,c.z=e.x;let u=eft;u.x=n.y,u.y=n.z,u.z=n.x;let f=tft;f.x=i.y,f.y=i.z,f.z=i.x;let h=nft;h.x=t.y,h.y=t.z,h.z=t.x,r===ie.SCENE2D&&(c.z=o*.5);let A=s.unproject(c,ift);A.longitude=D.clamp(A.longitude,-Math.PI,Math.PI),A.latitude=D.clamp(A.latitude,-D.PI_OVER_TWO,D.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(A,oft),_=kt.eastNorthUpToFixedFrame(m,g,rft);return R.multiplyByPointAsVector(_,u,u),R.multiplyByPointAsVector(_,f,f),R.multiplyByPointAsVector(_,h,h),l(a)||(a=new R),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function $7(e){e._view3DDirty&&(e._mode===ie.SCENE3D?R.clone(e._view,e._view3D):sft(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),R.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function qye(e){e._inverseView3DDirty&&(R.inverseTransformation(e.view3D,e._inverseView3D),R.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var tz=DT;function Ju(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):aft(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Xn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new ZG(this),this._textureCache=new $G;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),qt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),qt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),qt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),qt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),qt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),qt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),qt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),qt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),qt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),qt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),qt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);qt._minimumAliasedLineWidth=f[0],qt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);qt._minimumAliasedPointSize=h[0],qt._maximumAliasedPointSize=h[1];let A=u.getParameter(u.MAX_VIEWPORT_DIMS);qt._maximumViewportWidth=A[0],qt._maximumViewportHeight=A[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);qt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);qt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Ur(u,["OES_standard_derivatives"]),this._blendMinmax=!!Ur(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Ur(u,["OES_element_index_uint"]),this._depthTexture=!!Ur(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Ur(u,["EXT_frag_depth"]),this._debugShaders=Ur(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Ur(u,["OES_texture_float"]),this._textureHalfFloat=!!Ur(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Ur(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Ur(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Ur(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Ur(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Ur(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Ur(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Ur(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Ur(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Ur(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Ur(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Ur(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Ur(u,["EXT_texture_compression_bptc"]),Iu.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let _=r?Ur(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=_,qt._maximumTextureFilterAnisotropy=l(_)?u.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let y,C,E,I,b,S,B,v,P,N;if(c){let T=this;y=function(){return T._gl.createVertexArray()},C=function(w){T._gl.bindVertexArray(w)},E=function(w){T._gl.deleteVertexArray(w)},I=function(w,M,O,U,Q){u.drawElementsInstanced(w,M,O,U,Q)},b=function(w,M,O,U){u.drawArraysInstanced(w,M,O,U)},S=function(w,M){u.vertexAttribDivisor(w,M)},B=function(w){u.drawBuffers(w)}}else v=Ur(u,["OES_vertex_array_object"]),l(v)&&(y=function(){return v.createVertexArrayOES()},C=function(T){v.bindVertexArrayOES(T)},E=function(T){v.deleteVertexArrayOES(T)}),P=Ur(u,["ANGLE_instanced_arrays"]),l(P)&&(I=function(T,w,M,O,U){P.drawElementsInstancedANGLE(T,w,M,O,U)},b=function(T,w,M,O){P.drawArraysInstancedANGLE(T,w,M,O)},S=function(T,w){P.vertexAttribDivisorANGLE(T,w)}),N=Ur(u,["WEBGL_draw_buffers"]),l(N)&&(B=function(T){N.drawBuffersWEBGL(T)});this.glCreateVertexArray=y,this.glBindVertexArray=C,this.glDeleteVertexArray=E,this.glDrawElementsInstanced=I,this.glDrawArraysInstanced=b,this.glVertexAttribDivisor=S,this.glDrawBuffers=B,this._vertexArrayObject=!!v,this._instancedArrays=!!P,this._drawBuffers=!!N,qt._maximumDrawBuffers=this.drawBuffers?u.getParameter(ee.MAX_DRAW_BUFFERS):1,qt._maximumColorAttachments=this.drawBuffers?u.getParameter(ee.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new G(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let L=new tz,p=new El(this),x=Ue.fromCache();this._defaultPassState=p,this._defaultRenderState=x,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=L,this._currentRenderState=x,this._currentPassState=p,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let T=0;T<qt._maximumVertexAttributes;T++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ue.apply(u,x,p)}function aft(e,t,n){if(typeof WebGLRenderingContext>"u")throw new ce("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new ce("The browser supports WebGL, but initialization failed.");return r}function cft(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function lft(e,t,n,i){let o=`${cft(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function uft(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new ce(lft(e,t,n,i))}function fft(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function dft(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,fft(e,o,t))}return i}function Ur(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var hft={};Object.defineProperties(Ju.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=dft(this._originalGLContext,e?uft:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Nt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new jr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return hft}}});function Kye(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ue.partialApply(e._gl,o,t,r,n,i)}var eX;typeof WebGLRenderingContext<"u"&&(eX=[ee.BACK]);function tX(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=eX;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var mft=new Ei;Ju.prototype.clear=function(e,t){e=e??mft,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(G.equals(this._clearColor,o)||(G.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;Kye(this,a,t,!0);let c=e.framebuffer??t.framebuffer;tX(this,c),n.clear(i)};function Aft(e,t,n,i,o){tX(e,t),Kye(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function pft(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??R.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}Ju.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Aft(this,o,t,n,r),pft(this,e,n,i)};Ju.prototype.beginFrame=function(){};Ju.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=eX;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};Ju.prototype.readPixels=function(e){let t=this._gl;e=e??V.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=He.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=et.createTypedArray(et.RGBA,a,o,r);return tX(this,s),t.readPixels(n,i,o,r,et.RGBA,He.toWebGLConstant(a,this),c),c};var Xye={position:0,textureCoordinates:1};Ju.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Me.TRIANGLES});e=li.fromGeometry({context:this,geometry:t,attributeLocations:Xye,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};Ju.prototype.createViewportQuadCommand=function(e,t){return t=t??V.EMPTY_OBJECT,new nt({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Me.TRIANGLES,renderState:t.renderState,shaderProgram:ln.fromCache({context:this,vertexShaderSource:wT,fragmentShaderSource:e,attributeLocations:Xye}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};Ju.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function nX(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(nX.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});nX.prototype.destroy=function(){delete this._pickObjects[this.key]};Ju.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new ce("Out of unique Pick IDs.");return this._pickObjects[t]=e,new nX(this._pickObjects,t,G.fromRgba(t))};Ju.prototype.isDestroyed=function(){return!1};Ju.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var vT=Ju;function nz(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new vT(this._canvas,ze(e?.contextOptions)),this._canvases=[]}nz.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,u=this.drawingBufferWidth;c.width<u&&(c.width=u);let f=this.drawingBufferHeight;c.height<f&&(c.height=f)},s=function(){let c=this.drawingBufferWidth,u=this.drawingBufferHeight,f=n._context.canvas.height-u;t.drawImage(n._context.canvas,0,f,c,u,0,0,c,u),n._context.endFrame()};return new Proxy(this._context,{get(c,u,f){if(u==="isDestroyed")return function(){return i};switch(u){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,u,f)}}})};nz.prototype.destroy=function(){this._context.destroy(),ue(this)};nz.prototype.isDestroyed=function(){return!1};var iz=nz;function e0(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e;if(!t.webgl2)throw new me("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:u,depth:f}=e;l(n)&&(l(c)||(c=n.width),l(u)||(u=n.height),l(f)||(f=n.depth));let h=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,A=et.toInternalFormat(i,o,t),g=et.isCompressedFormat(A),m=t._gl,_=et.texture3DSizeInBytes(i,o,c,u,f);if(this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=m.TEXTURE_3D,this._texture=m.createTexture(),this._internalFormat=A,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._depth=f,this._dimensions=new d(c,u,f),this._hasMipmap=!1,this._sizeInBytes=_,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Jye(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(this._textureTarget,this._texture),l(n)){if(s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new me("For Texture3D, options.source.arrayBufferView must be defined");gft(this,n),this._initialized=!0}else _ft(this);m.bindTexture(this._textureTarget,null)}function gft(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:u,pixelDatatype:f,flipY:h}=e,A=et.alignmentInBytes(u,f,s);i.pixelStorei(i.UNPACK_ALIGNMENT,A),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let m=1;if(t.mipLevels&&t.mipLevels.length&&(m=t.mipLevels.length+1),i.texStorage3D(o,m,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,u,He.toWebGLConstant(f,n),g),m>1){let _=s,y=a,C=c;for(let E=0;E<t.mipLevels.length;++E)_=iX(_),y=iX(y),C=iX(C),i.texSubImage3D(o,E+1,0,0,0,_,y,C,u,He.toWebGLConstant(f,n),t.mipLevels[E])}}function iX(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function _ft(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}e0.create=function(e){return new e0(e)};Object.defineProperties(e0.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Jye(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Jye(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}e0.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};e0.prototype.isDestroyed=function(){return!1};e0.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Zye=e0;function yft(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[we.createIfNeeded(t.positiveX).fetchImage(i),we.createIfNeeded(t.negativeX).fetchImage(i),we.createIfNeeded(t.positiveY).fetchImage(i),we.createIfNeeded(t.negativeY).fetchImage(i),we.createIfNeeded(t.positiveZ).fetchImage(i),we.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new jr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var oz=yft;var Jv=`#ifdef MRT
|
||
layout (location = 0) out vec4 out_FragData_0;
|
||
layout (location = 1) out vec4 out_FragData_1;
|
||
#else
|
||
layout (location = 0) out vec4 out_FragColor;
|
||
#endif
|
||
|
||
uniform vec4 u_bgColor;
|
||
uniform sampler2D u_depthTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
if (texture(u_depthTexture, v_textureCoordinates).r < 1.0)
|
||
{
|
||
#ifdef MRT
|
||
out_FragData_0 = u_bgColor;
|
||
out_FragData_1 = vec4(u_bgColor.a);
|
||
#else
|
||
out_FragColor = u_bgColor;
|
||
#endif
|
||
return;
|
||
}
|
||
|
||
discard;
|
||
}
|
||
`;var rz=`in vec2 v_textureCoordinates;
|
||
const float M_PI = 3.141592653589793;
|
||
|
||
float vdcRadicalInverse(int i)
|
||
{
|
||
float r;
|
||
float base = 2.0;
|
||
float value = 0.0;
|
||
float invBase = 1.0 / base;
|
||
float invBi = invBase;
|
||
for (int x = 0; x < 100; x++)
|
||
{
|
||
if (i <= 0)
|
||
{
|
||
break;
|
||
}
|
||
r = mod(float(i), base);
|
||
value += r * invBi;
|
||
invBi *= invBase;
|
||
i = int(float(i) * invBase);
|
||
}
|
||
return value;
|
||
}
|
||
|
||
vec2 hammersley2D(int i, int N)
|
||
{
|
||
return vec2(float(i) / float(N), vdcRadicalInverse(i));
|
||
}
|
||
|
||
vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N)
|
||
{
|
||
float alphaRoughnessSquared = alphaRoughness * alphaRoughness;
|
||
float phi = 2.0 * M_PI * xi.x;
|
||
float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y));
|
||
float sinTheta = sqrt(1.0 - cosTheta * cosTheta);
|
||
vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta);
|
||
vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
||
vec3 tangentX = normalize(cross(upVector, N));
|
||
vec3 tangentY = cross(N, tangentX);
|
||
return tangentX * H.x + tangentY * H.y + N * H.z;
|
||
}
|
||
|
||
/**
|
||
* Estimate the geometric self-shadowing of the microfacets in a surface,
|
||
* using the Smith Joint GGX visibility function.
|
||
* Note: Vis = G / (4 * NdotL * NdotV)
|
||
* see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3
|
||
* see Real-Time Rendering. Page 331 to 336.
|
||
* see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg)
|
||
*
|
||
* @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness.
|
||
* @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source.
|
||
* @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera.
|
||
*/
|
||
float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV)
|
||
{
|
||
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
|
||
|
||
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
|
||
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
|
||
|
||
float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0
|
||
if (GGX > 0.0)
|
||
{
|
||
return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0
|
||
}
|
||
return 0.0;
|
||
}
|
||
|
||
vec2 integrateBrdf(float roughness, float NdotV)
|
||
{
|
||
vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV);
|
||
float A = 0.0;
|
||
float B = 0.0;
|
||
const int NumSamples = 1024;
|
||
float alphaRoughness = roughness * roughness;
|
||
for (int i = 0; i < NumSamples; i++)
|
||
{
|
||
vec2 xi = hammersley2D(i, NumSamples);
|
||
vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0));
|
||
vec3 L = 2.0 * dot(V, H) * H - V;
|
||
float NdotL = clamp(L.z, 0.0, 1.0);
|
||
float NdotH = clamp(H.z, 0.0, 1.0);
|
||
float VdotH = clamp(dot(V, H), 0.0, 1.0);
|
||
if (NdotL > 0.0)
|
||
{
|
||
float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV);
|
||
float G_Vis = 4.0 * G * VdotH * NdotL / NdotH;
|
||
float Fc = pow(1.0 - VdotH, 5.0);
|
||
A += (1.0 - Fc) * G_Vis;
|
||
B += Fc * G_Vis;
|
||
}
|
||
}
|
||
return vec2(A, B) / float(NumSamples);
|
||
}
|
||
|
||
void main()
|
||
{
|
||
out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0);
|
||
}
|
||
`;var sz=`uniform sampler2D u_noiseTexture;
|
||
uniform vec3 u_noiseTextureDimensions;
|
||
uniform float u_noiseDetail;
|
||
in vec2 v_offset;
|
||
in vec3 v_maximumSize;
|
||
in vec4 v_color;
|
||
in float v_slice;
|
||
in float v_brightness;
|
||
|
||
float wrap(float value, float rangeLength) {
|
||
if(value < 0.0) {
|
||
float absValue = abs(value);
|
||
float modValue = mod(absValue, rangeLength);
|
||
return mod(rangeLength - modValue, rangeLength);
|
||
}
|
||
return mod(value, rangeLength);
|
||
}
|
||
|
||
vec3 wrapVec(vec3 value, float rangeLength) {
|
||
return vec3(wrap(value.x, rangeLength),
|
||
wrap(value.y, rangeLength),
|
||
wrap(value.z, rangeLength));
|
||
}
|
||
|
||
vec2 voxelToUV(vec3 voxelIndex) {
|
||
float textureSliceWidth = u_noiseTextureDimensions.x;
|
||
float noiseTextureRows = u_noiseTextureDimensions.y;
|
||
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
|
||
|
||
float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth;
|
||
vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared,
|
||
inverseNoiseTextureRows / textureSliceWidth);
|
||
vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth);
|
||
float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows);
|
||
float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows);
|
||
|
||
float xPixelCoord = wrappedIndex.x + column * textureSliceWidth;
|
||
float yPixelCoord = wrappedIndex.y + row * textureSliceWidth;
|
||
return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions;
|
||
}
|
||
|
||
// Interpolate a voxel with its neighbor (along the positive X-axis)
|
||
vec4 lerpSamplesX(vec3 voxelIndex, float x) {
|
||
vec2 uv0 = voxelToUV(voxelIndex);
|
||
vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0));
|
||
vec4 sample0 = texture(u_noiseTexture, uv0);
|
||
vec4 sample1 = texture(u_noiseTexture, uv1);
|
||
return mix(sample0, sample1, x);
|
||
}
|
||
|
||
vec4 sampleNoiseTexture(vec3 position) {
|
||
float textureSliceWidth = u_noiseTextureDimensions.x;
|
||
vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0);
|
||
vec3 lerpValue = fract(recenteredPos);
|
||
vec3 voxelIndex = floor(recenteredPos);
|
||
|
||
vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x);
|
||
vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x);
|
||
vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x);
|
||
vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x);
|
||
|
||
vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y);
|
||
vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y);
|
||
return mix(yLerp0, yLerp1, lerpValue.z);
|
||
}
|
||
|
||
// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0).
|
||
bool intersectSphere(vec3 origin, vec3 dir, float slice,
|
||
out vec3 point, out vec3 normal) {
|
||
float A = dot(dir, dir);
|
||
float B = dot(origin, dir);
|
||
float C = dot(origin, origin) - 0.25;
|
||
float discriminant = (B * B) - (A * C);
|
||
if(discriminant < 0.0) {
|
||
return false;
|
||
}
|
||
float root = sqrt(discriminant);
|
||
float t = (-B - root) / A;
|
||
if(t < 0.0) {
|
||
t = (-B + root) / A;
|
||
}
|
||
point = origin + t * dir;
|
||
|
||
if(slice >= 0.0) {
|
||
point.z = (slice / 2.0) - 0.5;
|
||
if(length(point) > 0.5) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
normal = normalize(point);
|
||
point -= czm_epsilon2 * normal;
|
||
return true;
|
||
}
|
||
|
||
// Transforms the ray origin and direction into unit sphere space,
|
||
// then transforms the result back into the ellipsoid's space.
|
||
bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice,
|
||
out vec3 point, out vec3 normal) {
|
||
if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) {
|
||
return false;
|
||
}
|
||
|
||
vec3 o = (origin - center) / scale;
|
||
vec3 d = dir / scale;
|
||
vec3 p, n;
|
||
bool intersected = intersectSphere(o, d, slice, p, n);
|
||
if(intersected) {
|
||
point = (p * scale) + center;
|
||
normal = n;
|
||
}
|
||
return intersected;
|
||
}
|
||
|
||
// Assume that if phase shift is being called for octave i,
|
||
// the frequency is of i - 1. This saves us from doing extra
|
||
// division / multiplication operations.
|
||
vec2 phaseShift2D(vec2 p, vec2 freq) {
|
||
return (czm_pi / 2.0) * sin(freq.yx * p.yx);
|
||
}
|
||
|
||
vec2 phaseShift3D(vec3 p, vec2 freq) {
|
||
return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z));
|
||
}
|
||
|
||
// The cloud texture function derived from Gardner's 1985 paper,
|
||
// "Visual Simulation of Clouds."
|
||
// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf
|
||
const float T0 = 0.6; // contrast of the texture pattern
|
||
const float k = 0.1; // computed to produce a maximum value of 1
|
||
const float C0 = 0.8; // coefficient
|
||
const float FX0 = 0.6; // frequency X
|
||
const float FY0 = 0.6; // frequency Y
|
||
const int octaves = 5;
|
||
|
||
float T(vec3 point) {
|
||
vec2 sum = vec2(0.0);
|
||
float Ci = C0;
|
||
vec2 FXY = vec2(FX0, FY0);
|
||
vec2 PXY = vec2(0.0);
|
||
for(int i = 1; i <= octaves; i++) {
|
||
PXY = phaseShift3D(point, FXY);
|
||
Ci *= 0.707;
|
||
FXY *= 2.0;
|
||
vec2 sinTerm = sin(FXY * point.xy + PXY);
|
||
sum += Ci * sinTerm + vec2(T0);
|
||
}
|
||
return k * sum.x * sum.y;
|
||
}
|
||
|
||
const float a = 0.5; // fraction of surface reflection due to ambient or scattered light,
|
||
const float t = 0.4; // fraction of texture shading
|
||
const float s = 0.25; // fraction of specular reflection
|
||
|
||
float I(float Id, float Is, float It) {
|
||
return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a;
|
||
}
|
||
|
||
const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7));
|
||
|
||
vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice,
|
||
float brightness) {
|
||
vec3 cloudPoint, cloudNormal;
|
||
if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice,
|
||
cloudPoint, cloudNormal)) {
|
||
return vec4(0.0);
|
||
}
|
||
|
||
float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection
|
||
float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection
|
||
float It = T(cloudPoint); // texture function
|
||
float intensity = I(Id, Is, It);
|
||
vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0));
|
||
|
||
vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint);
|
||
float W = noise.x;
|
||
float W2 = noise.y;
|
||
float W3 = noise.z;
|
||
|
||
// The dot product between the cloud's normal and the ray's direction is greatest
|
||
// in the center of the ellipsoid's surface. It decreases towards the edge.
|
||
// Thus, it is used to blur the areas leading to the edges of the ellipsoid,
|
||
// so that no harsh lines appear.
|
||
|
||
// The first (and biggest) layer of worley noise is then subtracted from this.
|
||
// The final result is scaled up so that the base cloud is not too translucent.
|
||
float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0);
|
||
float TR = pow(ndDot, 3.0) - W; // translucency
|
||
TR *= 1.3;
|
||
|
||
// Subtracting the second and third layers of worley noise is more complicated.
|
||
// If these layers of noise were simply subtracted from the current translucency,
|
||
// the shape derived from the first layer of noise would be completely deleted.
|
||
// The erosion of this noise should thus be constricted to the edges of the cloud.
|
||
// However, because the edges of the ellipsoid were already blurred away, mapping
|
||
// the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance.
|
||
// The value of (0.5 - ndDot) provides the best compromise.
|
||
float minusDot = 0.5 - ndDot;
|
||
|
||
// Even with the previous calculation, subtracting the second layer of wnoise
|
||
// erode too much of the cloud. The addition of it, however, will detailed
|
||
// volume to the cloud. As long as the noise is only added and not subtracted,
|
||
// the results are aesthetically pleasing.
|
||
|
||
// The minusDot product is mapped in a way that it is larger at the edges of
|
||
// the ellipsoid, so a subtraction and min operation are used instead of
|
||
// an addition and max one.
|
||
TR -= min(minusDot * W2, 0.0);
|
||
|
||
// The third level of worley noise is subtracted from the result, with some
|
||
// modifications. First, a scalar is added to minusDot so that the noise
|
||
// starts affecting the shape farther away from the center of the ellipsoid's
|
||
// surface. Then, it is scaled down so its impact is not too intense.
|
||
TR -= 0.8 * (minusDot + 0.25) * W3;
|
||
|
||
// The texture function's shading does not correlate with the shape of the cloud
|
||
// produced by the layers of noise, so an extra shading scalar is calculated.
|
||
// The darkest areas of the cloud are assigned to be where the noise erodes
|
||
// the cloud the most. This is then interpolated based on the translucency
|
||
// and the diffuse shading term of that point in the cloud.
|
||
float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR);
|
||
|
||
// To avoid values that are too dark, this scalar is increased by a small amount
|
||
// and clamped so it never goes to zero.
|
||
shading = clamp(shading + 0.2, 0.3, 1.0);
|
||
|
||
// Finally, the contrast of the cloud's color is increased.
|
||
vec3 finalColor = mix(vec3(0.5), shading * color, 1.15);
|
||
return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color;
|
||
}
|
||
|
||
void main() {
|
||
#ifdef DEBUG_BILLBOARDS
|
||
out_FragColor = vec4(0.0, 0.5, 0.5, 1.0);
|
||
#endif
|
||
// To avoid calculations with high values,
|
||
// we raycast from an arbitrarily smaller space.
|
||
vec2 coordinate = v_maximumSize.xy * v_offset;
|
||
|
||
vec3 ellipsoidScale = 0.82 * v_maximumSize;
|
||
vec3 ellipsoidCenter = vec3(0.0);
|
||
|
||
float zOffset = max(ellipsoidScale.z - 10.0, 0.0);
|
||
vec3 eye = vec3(0, 0, -10.0 - zOffset);
|
||
vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye);
|
||
vec3 rayOrigin = eye;
|
||
#ifdef DEBUG_ELLIPSOIDS
|
||
vec3 point, normal;
|
||
if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice,
|
||
point, normal)) {
|
||
out_FragColor = v_brightness * v_color;
|
||
}
|
||
#else
|
||
#ifndef DEBUG_BILLBOARDS
|
||
vec4 cloud = drawCloud(rayOrigin, rayDir,
|
||
ellipsoidCenter, ellipsoidScale, v_slice, v_brightness);
|
||
if(cloud.w < 0.01) {
|
||
discard;
|
||
}
|
||
out_FragColor = cloud;
|
||
#endif
|
||
#endif
|
||
}
|
||
`;var az=`#ifdef INSTANCED
|
||
in vec2 direction;
|
||
#endif
|
||
in vec4 positionHighAndScaleX;
|
||
in vec4 positionLowAndScaleY;
|
||
in vec4 packedAttribute0;
|
||
in vec4 packedAttribute1;
|
||
in vec4 color;
|
||
|
||
out vec2 v_offset;
|
||
out vec3 v_maximumSize;
|
||
out vec4 v_color;
|
||
out float v_slice;
|
||
out float v_brightness;
|
||
|
||
void main() {
|
||
// Unpack attributes.
|
||
vec3 positionHigh = positionHighAndScaleX.xyz;
|
||
vec3 positionLow = positionLowAndScaleY.xyz;
|
||
vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w);
|
||
|
||
float show = packedAttribute0.x;
|
||
float brightness = packedAttribute0.y;
|
||
vec2 coordinates = packedAttribute0.wz;
|
||
vec3 maximumSize = packedAttribute1.xyz;
|
||
float slice = packedAttribute1.w;
|
||
|
||
#ifdef INSTANCED
|
||
vec2 dir = direction;
|
||
#else
|
||
vec2 dir = coordinates;
|
||
#endif
|
||
|
||
vec2 offset = dir - vec2(0.5, 0.5);
|
||
vec2 scaledOffset = scale * offset;
|
||
vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);
|
||
vec4 positionEC = czm_modelViewRelativeToEye * p;
|
||
positionEC.xy += scaledOffset;
|
||
|
||
positionEC.xyz *= show;
|
||
gl_Position = czm_projection * positionEC;
|
||
|
||
v_offset = offset;
|
||
v_maximumSize = maximumSize;
|
||
v_color = color;
|
||
v_slice = slice;
|
||
v_brightness = brightness;
|
||
}
|
||
`;var cz=`uniform vec3 u_noiseTextureDimensions;
|
||
uniform float u_noiseDetail;
|
||
uniform vec3 u_noiseOffset;
|
||
in vec2 v_position;
|
||
|
||
float wrap(float value, float rangeLength) {
|
||
if(value < 0.0) {
|
||
float absValue = abs(value);
|
||
float modValue = mod(absValue, rangeLength);
|
||
return mod(rangeLength - modValue, rangeLength);
|
||
}
|
||
return mod(value, rangeLength);
|
||
}
|
||
|
||
vec3 wrapVec(vec3 value, float rangeLength) {
|
||
return vec3(wrap(value.x, rangeLength),
|
||
wrap(value.y, rangeLength),
|
||
wrap(value.z, rangeLength));
|
||
}
|
||
|
||
vec3 random3(vec3 p) {
|
||
float dot1 = dot(p, vec3(127.1, 311.7, 932.8));
|
||
float dot2 = dot(p, vec3(269.5, 183.3, 421.4));
|
||
return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2));
|
||
}
|
||
|
||
// Frequency corresponds to cell size.
|
||
// The higher the frequency, the smaller the cell size.
|
||
vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) {
|
||
float textureSliceWidth = u_noiseTextureDimensions.x;
|
||
vec3 cell = centerCell + offset;
|
||
cell = wrapVec(cell, textureSliceWidth / u_noiseDetail);
|
||
cell += floor(u_noiseOffset / u_noiseDetail);
|
||
vec3 p = offset + random3(cell);
|
||
return p;
|
||
}
|
||
|
||
float worleyNoise(vec3 p, float freq) {
|
||
vec3 centerCell = floor(p * freq);
|
||
vec3 pointInCell = fract(p * freq);
|
||
float shortestDistance = 1000.0;
|
||
|
||
for(float z = -1.0; z <= 1.0; z++) {
|
||
for(float y = -1.0; y <= 1.0; y++) {
|
||
for(float x = -1.0; x <= 1.0; x++) {
|
||
vec3 offset = vec3(x, y, z);
|
||
vec3 point = getWorleyCellPoint(centerCell, offset, freq);
|
||
|
||
float distance = length(pointInCell - point);
|
||
if(distance < shortestDistance) {
|
||
shortestDistance = distance;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return shortestDistance;
|
||
}
|
||
|
||
const float MAX_FBM_ITERATIONS = 10.0;
|
||
|
||
float worleyFBMNoise(vec3 p, float octaves, float scale) {
|
||
float noise = 0.0;
|
||
float freq = 1.0;
|
||
float persistence = 0.625;
|
||
for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) {
|
||
if(i >= octaves) {
|
||
break;
|
||
}
|
||
|
||
noise += worleyNoise(p * scale, freq * scale) * persistence;
|
||
persistence *= 0.5;
|
||
freq *= 2.0;
|
||
}
|
||
return noise;
|
||
}
|
||
|
||
void main() {
|
||
float textureSliceWidth = u_noiseTextureDimensions.x;
|
||
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
|
||
float x = mod(v_position.x, textureSliceWidth);
|
||
float y = mod(v_position.y, textureSliceWidth);
|
||
float sliceRow = floor(v_position.y / textureSliceWidth);
|
||
float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth;
|
||
|
||
vec3 position = vec3(x, y, z);
|
||
position /= u_noiseDetail;
|
||
float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0);
|
||
float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0);
|
||
float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0);
|
||
out_FragColor = vec4(worley0, worley1, worley2, 1.0);
|
||
}
|
||
`;var lz=`uniform vec3 u_noiseTextureDimensions;
|
||
in vec2 position;
|
||
|
||
out vec2 v_position;
|
||
|
||
void main()
|
||
{
|
||
gl_Position = vec4(position, 0.1, 1.0);
|
||
|
||
float textureSliceWidth = u_noiseTextureDimensions.x;
|
||
float noiseTextureRows = u_noiseTextureDimensions.y;
|
||
float inverseNoiseTextureRows = u_noiseTextureDimensions.z;
|
||
vec2 transformedPos = (position * 0.5) + vec2(0.5);
|
||
transformedPos *= textureSliceWidth;
|
||
transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows;
|
||
transformedPos.y *= noiseTextureRows;
|
||
v_position = transformedPos;
|
||
}
|
||
`;var uz=`uniform sampler2D u_opaqueDepthTexture;
|
||
uniform sampler2D u_translucentDepthTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r;
|
||
float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r;
|
||
translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth);
|
||
out_FragColor = czm_packDepth(translucentDepth);
|
||
}
|
||
`;var fz=`/**
|
||
* Compositing for Weighted Blended Order-Independent Transparency. See:
|
||
* - http://jcgt.org/published/0002/02/09/
|
||
* - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html
|
||
*/
|
||
|
||
uniform sampler2D u_opaque;
|
||
uniform sampler2D u_accumulation;
|
||
uniform sampler2D u_revealage;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
vec4 opaque = texture(u_opaque, v_textureCoordinates);
|
||
vec4 accum = texture(u_accumulation, v_textureCoordinates);
|
||
float r = texture(u_revealage, v_textureCoordinates).r;
|
||
|
||
#ifdef MRT
|
||
vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);
|
||
#else
|
||
vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r);
|
||
#endif
|
||
|
||
out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque;
|
||
|
||
if (opaque != czm_backgroundColor)
|
||
{
|
||
out_FragColor.a = 1.0;
|
||
}
|
||
}
|
||
`;var dz=`in vec4 positionEC;
|
||
|
||
void main()
|
||
{
|
||
vec3 position;
|
||
vec3 direction;
|
||
if (czm_orthographicIn3D == 1.0)
|
||
{
|
||
vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw;
|
||
vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom
|
||
vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top
|
||
position = vec3(mix(minPlane, maxPlane, uv), 0.0);
|
||
direction = vec3(0.0, 0.0, -1.0);
|
||
}
|
||
else
|
||
{
|
||
position = vec3(0.0);
|
||
direction = normalize(positionEC.xyz);
|
||
}
|
||
|
||
czm_ray ray = czm_ray(position, direction);
|
||
|
||
vec3 ellipsoid_center = czm_view[3].xyz;
|
||
|
||
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii);
|
||
if (!czm_isEmpty(intersection))
|
||
{
|
||
out_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
|
||
}
|
||
else
|
||
{
|
||
discard;
|
||
}
|
||
|
||
czm_writeLogDepth();
|
||
}
|
||
`;var hz=`in vec4 position;
|
||
|
||
out vec4 positionEC;
|
||
|
||
void main()
|
||
{
|
||
positionEC = czm_modelView * position;
|
||
gl_Position = czm_projection * positionEC;
|
||
|
||
czm_vertexLogDepth();
|
||
}
|
||
`;var Zv=`uniform vec3 u_radii;
|
||
uniform vec3 u_oneOverEllipsoidRadiiSquared;
|
||
|
||
in vec3 v_positionEC;
|
||
|
||
vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side)
|
||
{
|
||
vec3 positionEC = czm_pointAlongRay(ray, intersection);
|
||
vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz;
|
||
vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared));
|
||
vec3 sphericalNormal = normalize(positionMC / u_radii);
|
||
vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates
|
||
vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates
|
||
|
||
vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal);
|
||
vec3 positionToEyeEC = -positionEC;
|
||
|
||
czm_materialInput materialInput;
|
||
materialInput.s = st.s;
|
||
materialInput.st = st;
|
||
materialInput.str = (positionMC + u_radii) / u_radii;
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC);
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef ONLY_SUN_LIGHTING
|
||
return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC);
|
||
#else
|
||
return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
#endif
|
||
}
|
||
|
||
void main()
|
||
{
|
||
// PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii
|
||
// in the vertex shader. Only when it is larger than some constant, march along the ray.
|
||
// Otherwise perform one intersection test which will be the common case.
|
||
|
||
// Test if the ray intersects a sphere with the ellipsoid's maximum radius.
|
||
// For very oblate ellipsoids, using the ellipsoid's radii for an intersection test
|
||
// may cause false negatives. This will discard fragments before marching the ray forward.
|
||
float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5;
|
||
vec3 direction = normalize(v_positionEC);
|
||
vec3 ellipsoidCenter = czm_modelView[3].xyz;
|
||
|
||
float t1 = -1.0;
|
||
float t2 = -1.0;
|
||
|
||
float b = -2.0 * dot(direction, ellipsoidCenter);
|
||
float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius;
|
||
|
||
float discriminant = b * b - 4.0 * c;
|
||
if (discriminant >= 0.0) {
|
||
t1 = (-b - sqrt(discriminant)) * 0.5;
|
||
t2 = (-b + sqrt(discriminant)) * 0.5;
|
||
}
|
||
|
||
if (t1 < 0.0 && t2 < 0.0) {
|
||
discard;
|
||
}
|
||
|
||
float t = min(t1, t2);
|
||
if (t < 0.0) {
|
||
t = 0.0;
|
||
}
|
||
|
||
// March ray forward to intersection with larger sphere and find
|
||
czm_ray ray = czm_ray(t * direction, direction);
|
||
|
||
vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z);
|
||
|
||
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii);
|
||
|
||
if (czm_isEmpty(intersection))
|
||
{
|
||
discard;
|
||
}
|
||
|
||
// If the viewer is outside, compute outsideFaceColor, with normals facing outward.
|
||
vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0);
|
||
|
||
// If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward.
|
||
vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0);
|
||
|
||
out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a);
|
||
out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a);
|
||
|
||
#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth)))
|
||
t = (intersection.start != 0.0) ? intersection.start : intersection.stop;
|
||
vec3 positionEC = czm_pointAlongRay(ray, t);
|
||
vec4 positionCC = czm_projection * vec4(positionEC, 1.0);
|
||
#ifdef LOG_DEPTH
|
||
czm_writeLogDepth(1.0 + positionCC.w);
|
||
#else
|
||
float z = positionCC.z / positionCC.w;
|
||
|
||
float n = czm_depthRange.near;
|
||
float f = czm_depthRange.far;
|
||
|
||
gl_FragDepth = (z * (f - n) + f + n) * 0.5;
|
||
#endif
|
||
#endif
|
||
}
|
||
`;var $v=`in vec3 position;
|
||
|
||
uniform vec3 u_radii;
|
||
|
||
out vec3 v_positionEC;
|
||
|
||
void main()
|
||
{
|
||
// In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates.
|
||
// Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry,
|
||
// but doing it here allows us to change the radii without rewriting the vertex data, and
|
||
// allows all ellipsoids to reuse the same vertex data.
|
||
vec4 p = vec4(u_radii * position, 1.0);
|
||
|
||
vec4 pEC = czm_modelView * p;
|
||
v_positionEC = pEC.xyz; // position in eye coordinates
|
||
gl_Position = czm_projection * pEC;
|
||
// With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums
|
||
// and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the
|
||
// ellipsoid (does not write depth) that was rendered in the farther frustum.
|
||
//
|
||
// Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates
|
||
// artifacts since some fragments can be alpha blended twice. This is solved by only rendering
|
||
// the ellipsoid in the closest frustum to the viewer.
|
||
gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far);
|
||
|
||
czm_vertexLogDepth();
|
||
}
|
||
`;/**
|
||
* @license
|
||
* Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions
|
||
* are met:
|
||
* * Redistributions of source code must retain the above copyright
|
||
* notice, this list of conditions and the following disclaimer.
|
||
* * Redistributions in binary form must reproduce the above copyright
|
||
* notice, this list of conditions and the following disclaimer in the
|
||
* documentation and/or other materials provided with the distribution.
|
||
* * Neither the name of NVIDIA CORPORATION nor the names of its
|
||
* contributors may be used to endorse or promote products derived
|
||
* from this software without specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
*/var mz=`/**
|
||
* @license
|
||
* Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions
|
||
* are met:
|
||
* * Redistributions of source code must retain the above copyright
|
||
* notice, this list of conditions and the following disclaimer.
|
||
* * Redistributions in binary form must reproduce the above copyright
|
||
* notice, this list of conditions and the following disclaimer in the
|
||
* documentation and/or other materials provided with the distribution.
|
||
* * Neither the name of NVIDIA CORPORATION nor the names of its
|
||
* contributors may be used to endorse or promote products derived
|
||
* from this software without specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY
|
||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
*/
|
||
|
||
// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples
|
||
// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master
|
||
// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h
|
||
// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h
|
||
|
||
// Steps used to integrate into Cesium:
|
||
// * The following defines are set:
|
||
// #define FXAA_PC 1
|
||
// #define FXAA_WEBGL_1 1
|
||
// #define FXAA_GREEN_AS_LUMA 1
|
||
// #define FXAA_EARLY_EXIT 1
|
||
// #define FXAA_GLSL_120 1
|
||
// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed.
|
||
// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace
|
||
// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/.
|
||
// * There are no implicit conversions from ivec* to vec* so replace:
|
||
// #define FxaaInt2 ivec2
|
||
// with
|
||
// #define FxaaInt2 vec2
|
||
// * The texture2DLod function is only available in vertex shaders so replace:
|
||
// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
|
||
// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
|
||
// with
|
||
// #define FxaaTexTop(t, p) texture(t, p)
|
||
// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))
|
||
// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future.
|
||
// * The following parameters to FxaaPixelShader are unused and can be removed:
|
||
// fxaaConsolePosPos
|
||
// fxaaConsoleRcpFrameOpt
|
||
// fxaaConsoleRcpFrameOpt2
|
||
// fxaaConsole360RcpFrameOpt2
|
||
// fxaaConsoleEdgeSharpness
|
||
// fxaaConsoleEdgeThreshold
|
||
// fxaaConsoleEdgeThresholdMi
|
||
// fxaaConsole360ConstDir
|
||
|
||
//
|
||
// Choose the quality preset.
|
||
// This needs to be compiled into the shader as it effects code.
|
||
// Best option to include multiple presets is to
|
||
// in each shader define the preset, then include this file.
|
||
//
|
||
// OPTIONS
|
||
// -----------------------------------------------------------------------
|
||
// 10 to 15 - default medium dither (10=fastest, 15=highest quality)
|
||
// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
|
||
// 39 - no dither, very expensive
|
||
//
|
||
// NOTES
|
||
// -----------------------------------------------------------------------
|
||
// 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
|
||
// 13 = about same speed as FXAA 3.9 and better than 12
|
||
// 23 = closest to FXAA 3.9 visually and performance wise
|
||
// _ = the lowest digit is directly related to performance
|
||
// _ = the highest digit is directly related to style
|
||
//
|
||
//#define FXAA_QUALITY_PRESET 12
|
||
|
||
|
||
#if (FXAA_QUALITY_PRESET == 10)
|
||
#define FXAA_QUALITY_PS 3
|
||
#define FXAA_QUALITY_P0 1.5
|
||
#define FXAA_QUALITY_P1 3.0
|
||
#define FXAA_QUALITY_P2 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 11)
|
||
#define FXAA_QUALITY_PS 4
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 3.0
|
||
#define FXAA_QUALITY_P3 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 12)
|
||
#define FXAA_QUALITY_PS 5
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 4.0
|
||
#define FXAA_QUALITY_P4 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 13)
|
||
#define FXAA_QUALITY_PS 6
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 4.0
|
||
#define FXAA_QUALITY_P5 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 14)
|
||
#define FXAA_QUALITY_PS 7
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 4.0
|
||
#define FXAA_QUALITY_P6 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 15)
|
||
#define FXAA_QUALITY_PS 8
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 4.0
|
||
#define FXAA_QUALITY_P7 12.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 20)
|
||
#define FXAA_QUALITY_PS 3
|
||
#define FXAA_QUALITY_P0 1.5
|
||
#define FXAA_QUALITY_P1 2.0
|
||
#define FXAA_QUALITY_P2 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 21)
|
||
#define FXAA_QUALITY_PS 4
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 22)
|
||
#define FXAA_QUALITY_PS 5
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 23)
|
||
#define FXAA_QUALITY_PS 6
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 24)
|
||
#define FXAA_QUALITY_PS 7
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 3.0
|
||
#define FXAA_QUALITY_P6 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 25)
|
||
#define FXAA_QUALITY_PS 8
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 4.0
|
||
#define FXAA_QUALITY_P7 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 26)
|
||
#define FXAA_QUALITY_PS 9
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 2.0
|
||
#define FXAA_QUALITY_P7 4.0
|
||
#define FXAA_QUALITY_P8 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 27)
|
||
#define FXAA_QUALITY_PS 10
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 2.0
|
||
#define FXAA_QUALITY_P7 2.0
|
||
#define FXAA_QUALITY_P8 4.0
|
||
#define FXAA_QUALITY_P9 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 28)
|
||
#define FXAA_QUALITY_PS 11
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 2.0
|
||
#define FXAA_QUALITY_P7 2.0
|
||
#define FXAA_QUALITY_P8 2.0
|
||
#define FXAA_QUALITY_P9 4.0
|
||
#define FXAA_QUALITY_P10 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 29)
|
||
#define FXAA_QUALITY_PS 12
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.5
|
||
#define FXAA_QUALITY_P2 2.0
|
||
#define FXAA_QUALITY_P3 2.0
|
||
#define FXAA_QUALITY_P4 2.0
|
||
#define FXAA_QUALITY_P5 2.0
|
||
#define FXAA_QUALITY_P6 2.0
|
||
#define FXAA_QUALITY_P7 2.0
|
||
#define FXAA_QUALITY_P8 2.0
|
||
#define FXAA_QUALITY_P9 2.0
|
||
#define FXAA_QUALITY_P10 4.0
|
||
#define FXAA_QUALITY_P11 8.0
|
||
#endif
|
||
#if (FXAA_QUALITY_PRESET == 39)
|
||
#define FXAA_QUALITY_PS 12
|
||
#define FXAA_QUALITY_P0 1.0
|
||
#define FXAA_QUALITY_P1 1.0
|
||
#define FXAA_QUALITY_P2 1.0
|
||
#define FXAA_QUALITY_P3 1.0
|
||
#define FXAA_QUALITY_P4 1.0
|
||
#define FXAA_QUALITY_P5 1.5
|
||
#define FXAA_QUALITY_P6 2.0
|
||
#define FXAA_QUALITY_P7 2.0
|
||
#define FXAA_QUALITY_P8 2.0
|
||
#define FXAA_QUALITY_P9 2.0
|
||
#define FXAA_QUALITY_P10 4.0
|
||
#define FXAA_QUALITY_P11 8.0
|
||
#endif
|
||
|
||
#define FxaaBool bool
|
||
#define FxaaFloat float
|
||
#define FxaaFloat2 vec2
|
||
#define FxaaFloat3 vec3
|
||
#define FxaaFloat4 vec4
|
||
#define FxaaHalf float
|
||
#define FxaaHalf2 vec2
|
||
#define FxaaHalf3 vec3
|
||
#define FxaaHalf4 vec4
|
||
#define FxaaInt2 vec2
|
||
#define FxaaTex sampler2D
|
||
|
||
#define FxaaSat(x) clamp(x, 0.0, 1.0)
|
||
#define FxaaTexTop(t, p) texture(t, p)
|
||
#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))
|
||
|
||
FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
|
||
|
||
FxaaFloat4 FxaaPixelShader(
|
||
//
|
||
// Use noperspective interpolation here (turn off perspective interpolation).
|
||
// {xy} = center of pixel
|
||
FxaaFloat2 pos,
|
||
//
|
||
// Input color texture.
|
||
// {rgb_} = color in linear or perceptual color space
|
||
// if (FXAA_GREEN_AS_LUMA == 0)
|
||
// {___a} = luma in perceptual color space (not linear)
|
||
FxaaTex tex,
|
||
//
|
||
// Only used on FXAA Quality.
|
||
// This must be from a constant/uniform.
|
||
// {x_} = 1.0/screenWidthInPixels
|
||
// {_y} = 1.0/screenHeightInPixels
|
||
FxaaFloat2 fxaaQualityRcpFrame,
|
||
//
|
||
// Only used on FXAA Quality.
|
||
// This used to be the FXAA_QUALITY_SUBPIX define.
|
||
// It is here now to allow easier tuning.
|
||
// Choose the amount of sub-pixel aliasing removal.
|
||
// This can effect sharpness.
|
||
// 1.00 - upper limit (softer)
|
||
// 0.75 - default amount of filtering
|
||
// 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
|
||
// 0.25 - almost off
|
||
// 0.00 - completely off
|
||
FxaaFloat fxaaQualitySubpix,
|
||
//
|
||
// Only used on FXAA Quality.
|
||
// This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.
|
||
// It is here now to allow easier tuning.
|
||
// The minimum amount of local contrast required to apply algorithm.
|
||
// 0.333 - too little (faster)
|
||
// 0.250 - low quality
|
||
// 0.166 - default
|
||
// 0.125 - high quality
|
||
// 0.063 - overkill (slower)
|
||
FxaaFloat fxaaQualityEdgeThreshold,
|
||
//
|
||
// Only used on FXAA Quality.
|
||
// This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.
|
||
// It is here now to allow easier tuning.
|
||
// Trims the algorithm from processing darks.
|
||
// 0.0833 - upper limit (default, the start of visible unfiltered edges)
|
||
// 0.0625 - high quality (faster)
|
||
// 0.0312 - visible limit (slower)
|
||
// Special notes when using FXAA_GREEN_AS_LUMA,
|
||
// Likely want to set this to zero.
|
||
// As colors that are mostly not-green
|
||
// will appear very dark in the green channel!
|
||
// Tune by looking at mostly non-green content,
|
||
// then start at zero and increase until aliasing is a problem.
|
||
FxaaFloat fxaaQualityEdgeThresholdMin
|
||
) {
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat2 posM;
|
||
posM.x = pos.x;
|
||
posM.y = pos.y;
|
||
FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
|
||
#define lumaM rgbyM.y
|
||
FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat maxSM = max(lumaS, lumaM);
|
||
FxaaFloat minSM = min(lumaS, lumaM);
|
||
FxaaFloat maxESM = max(lumaE, maxSM);
|
||
FxaaFloat minESM = min(lumaE, minSM);
|
||
FxaaFloat maxWN = max(lumaN, lumaW);
|
||
FxaaFloat minWN = min(lumaN, lumaW);
|
||
FxaaFloat rangeMax = max(maxWN, maxESM);
|
||
FxaaFloat rangeMin = min(minWN, minESM);
|
||
FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
|
||
FxaaFloat range = rangeMax - rangeMin;
|
||
FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
|
||
FxaaBool earlyExit = range < rangeMaxClamped;
|
||
/*--------------------------------------------------------------------------*/
|
||
if(earlyExit)
|
||
return rgbyM;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
|
||
FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat lumaNS = lumaN + lumaS;
|
||
FxaaFloat lumaWE = lumaW + lumaE;
|
||
FxaaFloat subpixRcpRange = 1.0/range;
|
||
FxaaFloat subpixNSWE = lumaNS + lumaWE;
|
||
FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
|
||
FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat lumaNESE = lumaNE + lumaSE;
|
||
FxaaFloat lumaNWNE = lumaNW + lumaNE;
|
||
FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
|
||
FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat lumaNWSW = lumaNW + lumaSW;
|
||
FxaaFloat lumaSWSE = lumaSW + lumaSE;
|
||
FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
|
||
FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
|
||
FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
|
||
FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
|
||
FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
|
||
FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
|
||
FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
|
||
FxaaBool horzSpan = edgeHorz >= edgeVert;
|
||
FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
|
||
/*--------------------------------------------------------------------------*/
|
||
if(!horzSpan) lumaN = lumaW;
|
||
if(!horzSpan) lumaS = lumaE;
|
||
if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
|
||
FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat gradientN = lumaN - lumaM;
|
||
FxaaFloat gradientS = lumaS - lumaM;
|
||
FxaaFloat lumaNN = lumaN + lumaM;
|
||
FxaaFloat lumaSS = lumaS + lumaM;
|
||
FxaaBool pairN = abs(gradientN) >= abs(gradientS);
|
||
FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
|
||
if(pairN) lengthSign = -lengthSign;
|
||
FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat2 posB;
|
||
posB.x = posM.x;
|
||
posB.y = posM.y;
|
||
FxaaFloat2 offNP;
|
||
offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
|
||
offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
|
||
if(!horzSpan) posB.x += lengthSign * 0.5;
|
||
if( horzSpan) posB.y += lengthSign * 0.5;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat2 posN;
|
||
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
|
||
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
|
||
FxaaFloat2 posP;
|
||
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
|
||
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
|
||
FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
|
||
FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
|
||
FxaaFloat subpixE = subpixC * subpixC;
|
||
FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
|
||
/*--------------------------------------------------------------------------*/
|
||
if(!pairN) lumaNN = lumaSS;
|
||
FxaaFloat gradientScaled = gradient * 1.0/4.0;
|
||
FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
|
||
FxaaFloat subpixF = subpixD * subpixE;
|
||
FxaaBool lumaMLTZero = lumaMM < 0.0;
|
||
/*--------------------------------------------------------------------------*/
|
||
lumaEndN -= lumaNN * 0.5;
|
||
lumaEndP -= lumaNN * 0.5;
|
||
FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
|
||
FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
|
||
FxaaBool doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
|
||
/*--------------------------------------------------------------------------*/
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 3)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 4)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 5)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 6)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 7)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 8)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 9)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 10)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 11)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
|
||
/*--------------------------------------------------------------------------*/
|
||
#if (FXAA_QUALITY_PS > 12)
|
||
if(doneNP) {
|
||
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
|
||
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
|
||
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
||
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
||
doneN = abs(lumaEndN) >= gradientScaled;
|
||
doneP = abs(lumaEndP) >= gradientScaled;
|
||
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
|
||
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
|
||
doneNP = (!doneN) || (!doneP);
|
||
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
|
||
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
#endif
|
||
/*--------------------------------------------------------------------------*/
|
||
}
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat dstN = posM.x - posN.x;
|
||
FxaaFloat dstP = posP.x - posM.x;
|
||
if(!horzSpan) dstN = posM.y - posN.y;
|
||
if(!horzSpan) dstP = posP.y - posM.y;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
|
||
FxaaFloat spanLength = (dstP + dstN);
|
||
FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
|
||
FxaaFloat spanLengthRcp = 1.0/spanLength;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaBool directionN = dstN < dstP;
|
||
FxaaFloat dst = min(dstN, dstP);
|
||
FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
|
||
FxaaFloat subpixG = subpixF * subpixF;
|
||
FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
|
||
FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
|
||
/*--------------------------------------------------------------------------*/
|
||
FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
|
||
FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
|
||
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
|
||
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
|
||
return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
|
||
}
|
||
`;var Az=`uniform vec4 u_initialColor;
|
||
|
||
#if TEXTURE_UNITS > 0
|
||
uniform sampler2D u_dayTextures[TEXTURE_UNITS];
|
||
uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS];
|
||
uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS];
|
||
|
||
#ifdef APPLY_ALPHA
|
||
uniform float u_dayTextureAlpha[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_DAY_NIGHT_ALPHA
|
||
uniform float u_dayTextureNightAlpha[TEXTURE_UNITS];
|
||
uniform float u_dayTextureDayAlpha[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_SPLIT
|
||
uniform float u_dayTextureSplit[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_BRIGHTNESS
|
||
uniform float u_dayTextureBrightness[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_CONTRAST
|
||
uniform float u_dayTextureContrast[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_HUE
|
||
uniform float u_dayTextureHue[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_SATURATION
|
||
uniform float u_dayTextureSaturation[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_GAMMA
|
||
uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_IMAGERY_CUTOUT
|
||
uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#ifdef APPLY_COLOR_TO_ALPHA
|
||
uniform vec4 u_colorsToAlpha[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS];
|
||
#endif
|
||
|
||
#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))
|
||
uniform sampler2D u_waterMask;
|
||
uniform vec4 u_waterMaskTranslationAndScale;
|
||
uniform float u_zoomedOutOceanSpecularIntensity;
|
||
#endif
|
||
|
||
#ifdef SHOW_OCEAN_WAVES
|
||
uniform sampler2D u_oceanNormalMap;
|
||
#endif
|
||
|
||
#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE)
|
||
uniform vec2 u_lightingFadeDistance;
|
||
#endif
|
||
|
||
#ifdef TILE_LIMIT_RECTANGLE
|
||
uniform vec4 u_cartographicLimitRectangle;
|
||
#endif
|
||
|
||
#ifdef GROUND_ATMOSPHERE
|
||
uniform vec2 u_nightFadeDistance;
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_PLANES
|
||
uniform highp sampler2D u_clippingPlanes;
|
||
uniform mat4 u_clippingPlanesMatrix;
|
||
uniform vec4 u_clippingPlanesEdgeStyle;
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
uniform highp sampler2D u_clippingDistance;
|
||
in vec2 v_clippingPosition;
|
||
flat in int v_regionIndex;
|
||
#endif
|
||
|
||
#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
|
||
uniform float u_minimumBrightness;
|
||
#endif
|
||
|
||
// Based on colorCorrect
|
||
// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift
|
||
// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider
|
||
// - The tileProvider.hue/saturation/brightnessShift are just passed through
|
||
// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift
|
||
// - The applyFog depends on enableFog, and some tile distance from the viewer
|
||
// - The showGroundAtmosphere is a flag that is passed through from the Globe,
|
||
// and is true by default when the ellipsoid is WGS84
|
||
#ifdef COLOR_CORRECT
|
||
uniform vec3 u_hsbShift; // Hue, saturation, brightness
|
||
#endif
|
||
|
||
// Based on highlightFillTile
|
||
// This is set for terrain tiles when they are "fill" tiles, and
|
||
// the terrainProvider.fillHighlightColor was set to a value with
|
||
// nonzero alpha
|
||
#ifdef HIGHLIGHT_FILL_TILE
|
||
uniform vec4 u_fillHighlightColor;
|
||
#endif
|
||
|
||
// Based on translucent
|
||
// This is set depending on the GlobeTranslucencyState
|
||
#ifdef TRANSLUCENT
|
||
uniform vec4 u_frontFaceAlphaByDistance;
|
||
uniform vec4 u_backFaceAlphaByDistance;
|
||
uniform vec4 u_translucencyRectangle;
|
||
#endif
|
||
|
||
// Based on showUndergroundColor
|
||
// This is set when GlobeSurfaceTileProvider.isUndergroundVisible
|
||
// returns true, AND the tileProvider.undergroundColor had a value with
|
||
// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance
|
||
// was in the right range
|
||
#ifdef UNDERGROUND_COLOR
|
||
uniform vec4 u_undergroundColor;
|
||
uniform vec4 u_undergroundColorAlphaByDistance;
|
||
#endif
|
||
|
||
// Based on enableLighting && hasVertexNormals
|
||
// The enableLighting flag is passed in directly from the Globe.
|
||
// The hasVertexNormals flag is from the tileProvider
|
||
#ifdef ENABLE_VERTEX_LIGHTING
|
||
uniform float u_lambertDiffuseMultiplier;
|
||
uniform float u_vertexShadowDarkness;
|
||
#endif
|
||
|
||
in vec3 v_positionMC;
|
||
in vec3 v_positionEC;
|
||
in vec3 v_textureCoordinates;
|
||
in vec3 v_normalMC;
|
||
in vec3 v_normalEC;
|
||
|
||
#ifdef APPLY_MATERIAL
|
||
in float v_height;
|
||
in float v_slope;
|
||
in float v_aspect;
|
||
#endif
|
||
|
||
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
|
||
in float v_distance;
|
||
#endif
|
||
|
||
#if defined(GROUND_ATMOSPHERE) || defined(FOG)
|
||
in vec3 v_atmosphereRayleighColor;
|
||
in vec3 v_atmosphereMieColor;
|
||
in float v_atmosphereOpacity;
|
||
#endif
|
||
|
||
#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
|
||
float interpolateByDistance(vec4 nearFarScalar, float distance)
|
||
{
|
||
float startDistance = nearFarScalar.x;
|
||
float startValue = nearFarScalar.y;
|
||
float endDistance = nearFarScalar.z;
|
||
float endValue = nearFarScalar.w;
|
||
float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0);
|
||
return mix(startValue, endValue, t);
|
||
}
|
||
#endif
|
||
|
||
#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL)
|
||
vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor)
|
||
{
|
||
return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a);
|
||
}
|
||
#endif
|
||
|
||
#ifdef TRANSLUCENT
|
||
bool inTranslucencyRectangle()
|
||
{
|
||
return
|
||
v_textureCoordinates.x > u_translucencyRectangle.x &&
|
||
v_textureCoordinates.x < u_translucencyRectangle.z &&
|
||
v_textureCoordinates.y > u_translucencyRectangle.y &&
|
||
v_textureCoordinates.y < u_translucencyRectangle.w;
|
||
}
|
||
#endif
|
||
|
||
vec4 sampleAndBlend(
|
||
vec4 previousColor,
|
||
sampler2D textureToSample,
|
||
vec2 tileTextureCoordinates,
|
||
vec4 textureCoordinateRectangle,
|
||
vec4 textureCoordinateTranslationAndScale,
|
||
float textureAlpha,
|
||
float textureNightAlpha,
|
||
float textureDayAlpha,
|
||
float textureBrightness,
|
||
float textureContrast,
|
||
float textureHue,
|
||
float textureSaturation,
|
||
float textureOneOverGamma,
|
||
float split,
|
||
vec4 colorToAlpha,
|
||
float nightBlend)
|
||
{
|
||
// This crazy step stuff sets the alpha to 0.0 if this following condition is true:
|
||
// tileTextureCoordinates.s < textureCoordinateRectangle.s ||
|
||
// tileTextureCoordinates.s > textureCoordinateRectangle.p ||
|
||
// tileTextureCoordinates.t < textureCoordinateRectangle.t ||
|
||
// tileTextureCoordinates.t > textureCoordinateRectangle.q
|
||
// In other words, the alpha is zero if the fragment is outside the rectangle
|
||
// covered by this texture. Would an actual 'if' yield better performance?
|
||
vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates);
|
||
textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;
|
||
|
||
alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates);
|
||
textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y;
|
||
|
||
#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING)
|
||
textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend);
|
||
#endif
|
||
|
||
vec2 translation = textureCoordinateTranslationAndScale.xy;
|
||
vec2 scale = textureCoordinateTranslationAndScale.zw;
|
||
vec2 textureCoordinates = tileTextureCoordinates * scale + translation;
|
||
vec4 value = texture(textureToSample, textureCoordinates);
|
||
vec3 color = value.rgb;
|
||
float alpha = value.a;
|
||
|
||
#ifdef APPLY_COLOR_TO_ALPHA
|
||
vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);
|
||
colorDiff.r = czm_maximumComponent(colorDiff);
|
||
alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);
|
||
#endif
|
||
|
||
#if !defined(APPLY_GAMMA)
|
||
vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));
|
||
color = tempColor.rgb;
|
||
alpha = tempColor.a;
|
||
#else
|
||
color = pow(color, vec3(textureOneOverGamma));
|
||
#endif
|
||
|
||
#ifdef APPLY_SPLIT
|
||
float splitPosition = czm_splitPosition;
|
||
// Split to the left
|
||
if (split < 0.0 && gl_FragCoord.x > splitPosition) {
|
||
alpha = 0.0;
|
||
}
|
||
// Split to the right
|
||
else if (split > 0.0 && gl_FragCoord.x < splitPosition) {
|
||
alpha = 0.0;
|
||
}
|
||
#endif
|
||
|
||
#ifdef APPLY_BRIGHTNESS
|
||
color = mix(vec3(0.0), color, textureBrightness);
|
||
#endif
|
||
|
||
#ifdef APPLY_CONTRAST
|
||
color = mix(vec3(0.5), color, textureContrast);
|
||
#endif
|
||
|
||
#ifdef APPLY_HUE
|
||
color = czm_hue(color, textureHue);
|
||
#endif
|
||
|
||
#ifdef APPLY_SATURATION
|
||
color = czm_saturation(color, textureSaturation);
|
||
#endif
|
||
|
||
float sourceAlpha = alpha * textureAlpha;
|
||
float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);
|
||
outAlpha += sign(outAlpha) - 1.0;
|
||
|
||
vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;
|
||
|
||
// When rendering imagery for a tile in multiple passes,
|
||
// some GPU/WebGL implementation combinations will not blend fragments in
|
||
// additional passes correctly if their computation includes an unmasked
|
||
// divide-by-zero operation,
|
||
// even if it's not in the output or if the output has alpha zero.
|
||
//
|
||
// For example, without sanitization for outAlpha,
|
||
// this renders without artifacts:
|
||
// if (outAlpha == 0.0) { outColor = vec3(0.0); }
|
||
//
|
||
// but using czm_branchFreeTernary will cause portions of the tile that are
|
||
// alpha-zero in the additional pass to render as black instead of blending
|
||
// with the previous pass:
|
||
// outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor);
|
||
//
|
||
// So instead, sanitize against divide-by-zero,
|
||
// store this state on the sign of outAlpha, and correct on return.
|
||
|
||
return vec4(outColor, max(outAlpha, 0.0));
|
||
}
|
||
|
||
vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend);
|
||
vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade);
|
||
|
||
const float fExposure = 2.0;
|
||
|
||
vec3 computeEllipsoidPosition()
|
||
{
|
||
float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0);
|
||
vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0);
|
||
xy *= czm_viewport.zw * mpp * 0.5;
|
||
|
||
vec3 direction;
|
||
if (czm_orthographicIn3D == 1.0)
|
||
{
|
||
direction = vec3(0.0, 0.0, -1.0);
|
||
}
|
||
else
|
||
{
|
||
direction = normalize(vec3(xy, -czm_currentFrustum.x));
|
||
}
|
||
|
||
czm_ray ray = czm_ray(vec3(0.0), direction);
|
||
|
||
vec3 ellipsoid_center = czm_view[3].xyz;
|
||
|
||
czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii);
|
||
|
||
vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start);
|
||
return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz;
|
||
}
|
||
|
||
void main()
|
||
{
|
||
#ifdef TILE_LIMIT_RECTANGLE
|
||
if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x ||
|
||
v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y)
|
||
{
|
||
discard;
|
||
}
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_PLANES
|
||
float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix);
|
||
#endif
|
||
|
||
#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR)
|
||
vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates
|
||
vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates
|
||
#endif
|
||
|
||
#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING)
|
||
float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0);
|
||
#else
|
||
float nightBlend = 0.0;
|
||
#endif
|
||
|
||
// The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0
|
||
// where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the
|
||
// fragments on the edges of tiles even though the vertex shader is outputting
|
||
// coordinates strictly in the 0-1 range.
|
||
vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend);
|
||
|
||
#ifdef SHOW_TILE_BOUNDARIES
|
||
if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) ||
|
||
v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0))
|
||
{
|
||
color = vec4(1.0, 0.0, 0.0, 1.0);
|
||
}
|
||
#endif
|
||
|
||
#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE)
|
||
float cameraDist;
|
||
if (czm_sceneMode == czm_sceneMode2D)
|
||
{
|
||
cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5;
|
||
}
|
||
else if (czm_sceneMode == czm_sceneModeColumbusView)
|
||
{
|
||
cameraDist = -czm_view[3].z;
|
||
}
|
||
else
|
||
{
|
||
cameraDist = length(czm_view[3]);
|
||
}
|
||
float fadeOutDist = u_lightingFadeDistance.x;
|
||
float fadeInDist = u_lightingFadeDistance.y;
|
||
if (czm_sceneMode != czm_sceneMode3D) {
|
||
vec3 radii = czm_ellipsoidRadii;
|
||
float maxRadii = max(radii.x, max(radii.y, radii.z));
|
||
fadeOutDist -= maxRadii;
|
||
fadeInDist -= maxRadii;
|
||
}
|
||
float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0);
|
||
#else
|
||
float fade = 0.0;
|
||
#endif
|
||
|
||
#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))
|
||
vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy;
|
||
vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw;
|
||
vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation;
|
||
waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y;
|
||
|
||
float mask = texture(u_waterMask, waterMaskTextureCoordinates).r;
|
||
|
||
#ifdef SHOW_REFLECTIVE_OCEAN
|
||
if (mask > 0.0)
|
||
{
|
||
mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC);
|
||
|
||
vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC);
|
||
vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx);
|
||
|
||
vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z));
|
||
|
||
color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade);
|
||
}
|
||
#endif
|
||
#endif
|
||
|
||
#ifdef APPLY_MATERIAL
|
||
czm_materialInput materialInput;
|
||
materialInput.st = v_textureCoordinates.st;
|
||
materialInput.normalEC = normalize(v_normalEC);
|
||
materialInput.positionToEyeEC = -v_positionEC;
|
||
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC));
|
||
materialInput.slope = v_slope;
|
||
materialInput.height = v_height;
|
||
materialInput.aspect = v_aspect;
|
||
#ifdef HAS_WATER_MASK
|
||
materialInput.waterMask = mask;
|
||
#endif
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
vec4 materialColor = vec4(material.diffuse, material.alpha);
|
||
color = alphaBlend(materialColor, color);
|
||
#endif
|
||
|
||
#ifdef ENABLE_VERTEX_LIGHTING
|
||
float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0);
|
||
vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a);
|
||
#elif defined(ENABLE_DAYNIGHT_SHADING)
|
||
float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0);
|
||
diffuseIntensity = mix(1.0, diffuseIntensity, fade);
|
||
vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a);
|
||
#else
|
||
vec4 finalColor = color;
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_PLANES
|
||
vec4 clippingPlanesEdgeColor = vec4(1.0);
|
||
clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb;
|
||
float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a;
|
||
|
||
if (clipDistance < clippingPlanesEdgeWidth)
|
||
{
|
||
finalColor = clippingPlanesEdgeColor;
|
||
}
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
vec2 clippingPosition = v_clippingPosition;
|
||
int regionIndex = v_regionIndex;
|
||
clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex);
|
||
#endif
|
||
|
||
#ifdef HIGHLIGHT_FILL_TILE
|
||
finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a);
|
||
#endif
|
||
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN)
|
||
vec3 atmosphereLightDirection = czm_sunDirectionWC;
|
||
#else
|
||
vec3 atmosphereLightDirection = czm_lightDirectionWC;
|
||
#endif
|
||
|
||
#if defined(GROUND_ATMOSPHERE) || defined(FOG)
|
||
if (!czm_backFacing())
|
||
{
|
||
bool dynamicLighting = false;
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING))
|
||
dynamicLighting = true;
|
||
#endif
|
||
|
||
vec3 rayleighColor;
|
||
vec3 mieColor;
|
||
float opacity;
|
||
|
||
vec3 positionWC;
|
||
vec3 lightDirection;
|
||
|
||
// When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader.
|
||
// Otherwise, the scattering is computed in the vertex shader.
|
||
#ifdef PER_FRAGMENT_GROUND_ATMOSPHERE
|
||
positionWC = computeEllipsoidPosition();
|
||
lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC));
|
||
computeAtmosphereScattering(
|
||
positionWC,
|
||
lightDirection,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
#else
|
||
positionWC = v_positionMC;
|
||
lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC));
|
||
rayleighColor = v_atmosphereRayleighColor;
|
||
mieColor = v_atmosphereMieColor;
|
||
opacity = v_atmosphereOpacity;
|
||
#endif
|
||
|
||
#ifdef COLOR_CORRECT
|
||
const bool ignoreBlackPixels = true;
|
||
rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels);
|
||
mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels);
|
||
#endif
|
||
|
||
vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity);
|
||
|
||
// Fog is applied to tiles selected for fog, close to the Earth.
|
||
#ifdef FOG
|
||
vec3 fogColor = groundAtmosphereColor.rgb;
|
||
|
||
// If there is lighting, apply that to the fog.
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
|
||
float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0);
|
||
fogColor *= darken;
|
||
#endif
|
||
|
||
#ifndef HDR
|
||
fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);
|
||
fogColor.rgb = czm_inverseGamma(fogColor.rgb);
|
||
#endif
|
||
|
||
finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a);
|
||
|
||
#else
|
||
// Apply ground atmosphere. This happens when the camera is far away from the earth.
|
||
|
||
// The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere.
|
||
// This value is larger near the "circumference", as it is further away from the camera. We use it to
|
||
// brighten up that area of the ground atmosphere.
|
||
const float transmittanceModifier = 0.5;
|
||
float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0);
|
||
|
||
vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance;
|
||
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING))
|
||
float fadeInDist = u_nightFadeDistance.x;
|
||
float fadeOutDist = u_nightFadeDistance.y;
|
||
|
||
float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0);
|
||
float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0);
|
||
vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken);
|
||
|
||
finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity);
|
||
#endif
|
||
|
||
#ifndef HDR
|
||
finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb);
|
||
#else
|
||
finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6);
|
||
#endif
|
||
|
||
finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade);
|
||
#endif
|
||
}
|
||
#endif
|
||
|
||
#ifdef UNDERGROUND_COLOR
|
||
if (czm_backFacing())
|
||
{
|
||
float distanceFromEllipsoid = max(czm_eyeHeight, 0.0);
|
||
float distance = max(v_distance - distanceFromEllipsoid, 0.0);
|
||
float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance);
|
||
vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount);
|
||
finalColor = alphaBlend(undergroundColor, finalColor);
|
||
}
|
||
#endif
|
||
|
||
#ifdef TRANSLUCENT
|
||
if (inTranslucencyRectangle())
|
||
{
|
||
vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance;
|
||
finalColor.a *= interpolateByDistance(alphaByDistance, v_distance);
|
||
}
|
||
#endif
|
||
|
||
out_FragColor = finalColor;
|
||
}
|
||
|
||
|
||
#ifdef SHOW_REFLECTIVE_OCEAN
|
||
|
||
float waveFade(float edge0, float edge1, float x)
|
||
{
|
||
float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
|
||
return pow(1.0 - y, 5.0);
|
||
}
|
||
|
||
float linearFade(float edge0, float edge1, float x)
|
||
{
|
||
return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
|
||
}
|
||
|
||
// Based on water rendering by Jonas Wagner:
|
||
// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog
|
||
|
||
// low altitude wave settings
|
||
const float oceanFrequencyLowAltitude = 825000.0;
|
||
const float oceanAnimationSpeedLowAltitude = 0.004;
|
||
const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0;
|
||
const float oceanSpecularIntensity = 0.5;
|
||
|
||
// high altitude wave settings
|
||
const float oceanFrequencyHighAltitude = 125000.0;
|
||
const float oceanAnimationSpeedHighAltitude = 0.008;
|
||
const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0;
|
||
|
||
vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade)
|
||
{
|
||
vec3 positionToEyeEC = -positionEyeCoordinates;
|
||
float positionToEyeECLength = length(positionToEyeEC);
|
||
|
||
// The double normalize below works around a bug in Firefox on Android devices.
|
||
vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC));
|
||
|
||
// Fade out the waves as the camera moves far from the surface.
|
||
float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength);
|
||
|
||
#ifdef SHOW_OCEAN_WAVES
|
||
// high altitude waves
|
||
float time = czm_frameNumber * oceanAnimationSpeedHighAltitude;
|
||
vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0);
|
||
vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude);
|
||
|
||
// low altitude waves
|
||
time = czm_frameNumber * oceanAnimationSpeedLowAltitude;
|
||
noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0);
|
||
vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude);
|
||
|
||
// blend the 2 wave layers based on distance to surface
|
||
float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength);
|
||
float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength);
|
||
vec3 normalTangentSpace =
|
||
(highAltitudeFade * normalTangentSpaceHighAltitude) +
|
||
(lowAltitudeFade * normalTangentSpaceLowAltitude);
|
||
normalTangentSpace = normalize(normalTangentSpace);
|
||
|
||
// fade out the normal perturbation as we move farther from the water surface
|
||
normalTangentSpace.xy *= waveIntensity;
|
||
normalTangentSpace = normalize(normalTangentSpace);
|
||
#else
|
||
vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0);
|
||
#endif
|
||
|
||
vec3 normalEC = enuToEye * normalTangentSpace;
|
||
|
||
const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6);
|
||
|
||
// Use diffuse light to highlight the waves
|
||
float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue;
|
||
vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade);
|
||
|
||
#ifdef SHOW_OCEAN_WAVES
|
||
// Where diffuse light is low or non-existent, use wave highlights based solely on
|
||
// the wave bumpiness and no particular light direction.
|
||
float tsPerturbationRatio = normalTangentSpace.z;
|
||
vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity);
|
||
#else
|
||
vec3 nonDiffuseHighlight = vec3(0.0);
|
||
#endif
|
||
|
||
// Add specular highlights in 3D, and in all modes when zoomed in.
|
||
float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0);
|
||
float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue);
|
||
float specular = specularIntensity * surfaceReflectance;
|
||
|
||
#ifdef HDR
|
||
specular *= 1.4;
|
||
|
||
float e = 0.2;
|
||
float d = 3.3;
|
||
float c = 1.7;
|
||
|
||
vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular));
|
||
#else
|
||
vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular;
|
||
#endif
|
||
|
||
return vec4(color, imageryColor.a);
|
||
}
|
||
|
||
#endif // #ifdef SHOW_REFLECTIVE_OCEAN
|
||
`;var pz=`#ifdef QUANTIZATION_BITS12
|
||
in vec4 compressed0;
|
||
in float compressed1;
|
||
#else
|
||
in vec4 position3DAndHeight;
|
||
in vec4 textureCoordAndEncodedNormals;
|
||
#endif
|
||
|
||
#ifdef GEODETIC_SURFACE_NORMALS
|
||
in vec3 geodeticSurfaceNormal;
|
||
#endif
|
||
|
||
#ifdef EXAGGERATION
|
||
uniform vec2 u_verticalExaggerationAndRelativeHeight;
|
||
#endif
|
||
|
||
uniform vec3 u_center3D;
|
||
uniform mat4 u_modifiedModelView;
|
||
uniform mat4 u_modifiedModelViewProjection;
|
||
uniform vec4 u_tileRectangle;
|
||
|
||
// Uniforms for 2D Mercator projection
|
||
uniform vec2 u_southAndNorthLatitude;
|
||
uniform vec2 u_southMercatorYAndOneOverHeight;
|
||
|
||
out vec3 v_positionMC;
|
||
out vec3 v_positionEC;
|
||
|
||
out vec3 v_textureCoordinates;
|
||
out vec3 v_normalMC;
|
||
out vec3 v_normalEC;
|
||
|
||
#ifdef APPLY_MATERIAL
|
||
out float v_slope;
|
||
out float v_aspect;
|
||
out float v_height;
|
||
#endif
|
||
|
||
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
|
||
out float v_distance;
|
||
#endif
|
||
|
||
#if defined(FOG) || defined(GROUND_ATMOSPHERE)
|
||
out vec3 v_atmosphereRayleighColor;
|
||
out vec3 v_atmosphereMieColor;
|
||
out float v_atmosphereOpacity;
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
uniform highp sampler2D u_clippingExtents;
|
||
out vec2 v_clippingPosition;
|
||
flat out int v_regionIndex;
|
||
#endif
|
||
|
||
// These functions are generated at runtime.
|
||
vec4 getPosition(vec3 position, float height, vec2 textureCoordinates);
|
||
float get2DYPositionFraction(vec2 textureCoordinates);
|
||
|
||
vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates)
|
||
{
|
||
return u_modifiedModelViewProjection * vec4(position, 1.0);
|
||
}
|
||
|
||
float get2DMercatorYPositionFraction(vec2 textureCoordinates)
|
||
{
|
||
// The width of a tile at level 11, in radians and assuming a single root tile, is
|
||
// 2.0 * czm_pi / pow(2.0, 11.0)
|
||
// We want to just linearly interpolate the 2D position from the texture coordinates
|
||
// when we're at this level or higher. The constant below is the expression
|
||
// above evaluated and then rounded up at the 4th significant digit.
|
||
const float maxTileWidth = 0.003068;
|
||
float positionFraction = textureCoordinates.y;
|
||
float southLatitude = u_southAndNorthLatitude.x;
|
||
float northLatitude = u_southAndNorthLatitude.y;
|
||
if (northLatitude - southLatitude > maxTileWidth)
|
||
{
|
||
float southMercatorY = u_southMercatorYAndOneOverHeight.x;
|
||
float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y;
|
||
|
||
float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y);
|
||
currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude);
|
||
positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight);
|
||
}
|
||
return positionFraction;
|
||
}
|
||
|
||
float get2DGeographicYPositionFraction(vec2 textureCoordinates)
|
||
{
|
||
return textureCoordinates.y;
|
||
}
|
||
|
||
vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates)
|
||
{
|
||
float yPositionFraction = get2DYPositionFraction(textureCoordinates);
|
||
vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0);
|
||
return u_modifiedModelViewProjection * rtcPosition2D;
|
||
}
|
||
|
||
vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates)
|
||
{
|
||
return getPositionPlanarEarth(position, 0.0, textureCoordinates);
|
||
}
|
||
|
||
vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates)
|
||
{
|
||
return getPositionPlanarEarth(position, height, textureCoordinates);
|
||
}
|
||
|
||
vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates)
|
||
{
|
||
// We do not do RTC while morphing, so there is potential for jitter.
|
||
// This is unlikely to be noticeable, though.
|
||
vec3 position3DWC = position + u_center3D;
|
||
float yPositionFraction = get2DYPositionFraction(textureCoordinates);
|
||
vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0);
|
||
vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime);
|
||
vec4 morphPositionEC = czm_modelView * morphPosition;
|
||
return czm_projection * morphPositionEC;
|
||
}
|
||
|
||
#ifdef QUANTIZATION_BITS12
|
||
uniform vec2 u_minMaxHeight;
|
||
uniform mat4 u_scaleAndBias;
|
||
#endif
|
||
|
||
void main()
|
||
{
|
||
#ifdef QUANTIZATION_BITS12
|
||
vec2 xy = czm_decompressTextureCoordinates(compressed0.x);
|
||
vec2 zh = czm_decompressTextureCoordinates(compressed0.y);
|
||
vec3 position = vec3(xy, zh.x);
|
||
float height = zh.y;
|
||
vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z);
|
||
|
||
height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x;
|
||
position = (u_scaleAndBias * vec4(position, 1.0)).xyz;
|
||
|
||
#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL)
|
||
float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x;
|
||
float encodedNormal = compressed1;
|
||
#elif defined(INCLUDE_WEB_MERCATOR_Y)
|
||
float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x;
|
||
float encodedNormal = 0.0;
|
||
#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)
|
||
float webMercatorT = textureCoordinates.y;
|
||
float encodedNormal = compressed0.w;
|
||
#else
|
||
float webMercatorT = textureCoordinates.y;
|
||
float encodedNormal = 0.0;
|
||
#endif
|
||
|
||
#else
|
||
// A single float per element
|
||
vec3 position = position3DAndHeight.xyz;
|
||
float height = position3DAndHeight.w;
|
||
vec2 textureCoordinates = textureCoordAndEncodedNormals.xy;
|
||
|
||
#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y)
|
||
float webMercatorT = textureCoordAndEncodedNormals.z;
|
||
float encodedNormal = textureCoordAndEncodedNormals.w;
|
||
#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)
|
||
float webMercatorT = textureCoordinates.y;
|
||
float encodedNormal = textureCoordAndEncodedNormals.z;
|
||
#elif defined(INCLUDE_WEB_MERCATOR_Y)
|
||
float webMercatorT = textureCoordAndEncodedNormals.z;
|
||
float encodedNormal = 0.0;
|
||
#else
|
||
float webMercatorT = textureCoordinates.y;
|
||
float encodedNormal = 0.0;
|
||
#endif
|
||
|
||
#endif
|
||
|
||
vec3 position3DWC = position + u_center3D;
|
||
|
||
#ifdef GEODETIC_SURFACE_NORMALS
|
||
vec3 ellipsoidNormal = geodeticSurfaceNormal;
|
||
#else
|
||
vec3 ellipsoidNormal = normalize(position3DWC);
|
||
#endif
|
||
|
||
#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS)
|
||
float exaggeration = u_verticalExaggerationAndRelativeHeight.x;
|
||
float relativeHeight = u_verticalExaggerationAndRelativeHeight.y;
|
||
float newHeight = (height - relativeHeight) * exaggeration + relativeHeight;
|
||
|
||
// stop from going through center of earth
|
||
float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z);
|
||
newHeight = max(newHeight, -minRadius);
|
||
|
||
vec3 offset = ellipsoidNormal * (newHeight - height);
|
||
position += offset;
|
||
position3DWC += offset;
|
||
height = newHeight;
|
||
#endif
|
||
|
||
gl_Position = getPosition(position, height, textureCoordinates);
|
||
|
||
v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz;
|
||
v_positionMC = position3DWC; // position in model coordinates
|
||
|
||
v_textureCoordinates = vec3(textureCoordinates, webMercatorT);
|
||
|
||
#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)
|
||
vec3 normalMC = czm_octDecode(encodedNormal);
|
||
|
||
#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS)
|
||
vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal;
|
||
vec3 rejection = normalMC - projection;
|
||
normalMC = normalize(projection + rejection * exaggeration);
|
||
#endif
|
||
|
||
v_normalMC = normalMC;
|
||
v_normalEC = czm_normal3D * v_normalMC;
|
||
#endif
|
||
|
||
#ifdef ENABLE_CLIPPING_POLYGONS
|
||
vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC);
|
||
sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi);
|
||
|
||
vec2 minDistance = vec2(czm_infinity);
|
||
v_clippingPosition = vec2(czm_infinity);
|
||
v_regionIndex = -1;
|
||
|
||
for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) {
|
||
vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex);
|
||
vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz;
|
||
|
||
vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0));
|
||
vec2 distance = abs(rectUv - clamped) * extents.wz;
|
||
|
||
float threshold = 0.01;
|
||
if (minDistance.x > distance.x || minDistance.y > distance.y) {
|
||
minDistance = distance;
|
||
v_clippingPosition = rectUv;
|
||
if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) {
|
||
v_regionIndex = regionIndex;
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE))
|
||
|
||
bool dynamicLighting = false;
|
||
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING))
|
||
dynamicLighting = true;
|
||
#endif
|
||
|
||
#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN)
|
||
vec3 atmosphereLightDirection = czm_sunDirectionWC;
|
||
#else
|
||
vec3 atmosphereLightDirection = czm_lightDirectionWC;
|
||
#endif
|
||
|
||
vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC));
|
||
|
||
computeAtmosphereScattering(
|
||
position3DWC,
|
||
lightDirection,
|
||
v_atmosphereRayleighColor,
|
||
v_atmosphereMieColor,
|
||
v_atmosphereOpacity
|
||
);
|
||
#endif
|
||
|
||
#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT)
|
||
v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz);
|
||
#endif
|
||
|
||
#ifdef APPLY_MATERIAL
|
||
float northPoleZ = czm_ellipsoidRadii.z;
|
||
vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ);
|
||
vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal));
|
||
float dotProd = abs(dot(ellipsoidNormal, v_normalMC));
|
||
v_slope = acos(dotProd);
|
||
vec3 normalRejected = ellipsoidNormal * dotProd;
|
||
vec3 normalProjected = v_normalMC - normalRejected;
|
||
vec3 aspectVector = normalize(normalProjected);
|
||
v_aspect = acos(dot(aspectVector, vectorEastMC));
|
||
float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal);
|
||
v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect);
|
||
v_height = height;
|
||
#endif
|
||
}
|
||
`;var eP=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) {
|
||
|
||
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
|
||
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
|
||
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
|
||
|
||
float atmosphereInnerRadius = length(positionWC);
|
||
|
||
computeScattering(
|
||
primaryRay,
|
||
length(cameraToPositionWC),
|
||
lightDirection,
|
||
atmosphereInnerRadius,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
}
|
||
`;var tP=`float interpolateByDistance(vec4 nearFarScalar, float distance)
|
||
{
|
||
float startDistance = nearFarScalar.x;
|
||
float startValue = nearFarScalar.y;
|
||
float endDistance = nearFarScalar.z;
|
||
float endValue = nearFarScalar.w;
|
||
float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0);
|
||
return mix(startValue, endValue, t);
|
||
}
|
||
|
||
void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe)
|
||
{
|
||
float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z;
|
||
|
||
// Adjustment to the atmosphere radius applied based on the camera height.
|
||
float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0;
|
||
float distanceAdjustMax = czm_ellipsoidRadii.x;
|
||
float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0;
|
||
float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0);
|
||
|
||
// Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit
|
||
// for the position on the ellipsoid.
|
||
float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust;
|
||
float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust;
|
||
|
||
// Setup the primary ray: from the camera position to the vertex position.
|
||
vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC;
|
||
vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC);
|
||
czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection);
|
||
|
||
underTranslucentGlobe = 0.0;
|
||
|
||
// Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled.
|
||
#if defined(GLOBE_TRANSLUCENT)
|
||
|
||
// Check for intersection with the inner radius of the atmopshere.
|
||
czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust);
|
||
if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) {
|
||
|
||
// Compute position on globe.
|
||
vec3 direction = normalize(positionWC);
|
||
czm_ray ellipsoidRay = czm_ray(positionWC, -direction);
|
||
czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii);
|
||
vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start);
|
||
|
||
// Control the color using the camera angle.
|
||
float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth));
|
||
|
||
// Control the opacity using the distance from Earth.
|
||
opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth));
|
||
vec3 horizonColor = vec3(0.1, 0.2, 0.3);
|
||
vec3 nearColor = vec3(0.0);
|
||
|
||
rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity);
|
||
|
||
// Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton.
|
||
underTranslucentGlobe = 1.0;
|
||
return;
|
||
}
|
||
#endif
|
||
|
||
computeScattering(
|
||
primaryRay,
|
||
length(cameraToPositionWC),
|
||
lightDirection,
|
||
atmosphereInnerRadius,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity
|
||
);
|
||
|
||
// Alter the opacity based on how close the viewer is to the ground.
|
||
// (0.0 = At edge of atmosphere, 1.0 = On ground)
|
||
float cameraHeight = czm_eyeHeight + atmosphereInnerRadius;
|
||
float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS;
|
||
opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0);
|
||
|
||
// Alter alpha based on time of day (0.0 = night , 1.0 = day)
|
||
float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0;
|
||
opacity *= pow(nightAlpha, 0.5);
|
||
}
|
||
`;var gz=`in vec3 v_outerPositionWC;
|
||
|
||
uniform vec3 u_hsbShift;
|
||
|
||
#ifndef PER_FRAGMENT_ATMOSPHERE
|
||
in vec3 v_mieColor;
|
||
in vec3 v_rayleighColor;
|
||
in float v_opacity;
|
||
in float v_translucent;
|
||
#endif
|
||
|
||
void main (void)
|
||
{
|
||
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
|
||
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum);
|
||
|
||
vec3 mieColor;
|
||
vec3 rayleighColor;
|
||
float opacity;
|
||
float translucent;
|
||
|
||
#ifdef PER_FRAGMENT_ATMOSPHERE
|
||
computeAtmosphereScattering(
|
||
v_outerPositionWC,
|
||
lightDirection,
|
||
rayleighColor,
|
||
mieColor,
|
||
opacity,
|
||
translucent
|
||
);
|
||
#else
|
||
mieColor = v_mieColor;
|
||
rayleighColor = v_rayleighColor;
|
||
opacity = v_opacity;
|
||
translucent = v_translucent;
|
||
#endif
|
||
|
||
vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity);
|
||
|
||
#ifndef HDR
|
||
color.rgb = czm_pbrNeutralTonemapping(color.rgb);
|
||
color.rgb = czm_inverseGamma(color.rgb);
|
||
#endif
|
||
|
||
#ifdef COLOR_CORRECT
|
||
const bool ignoreBlackPixels = true;
|
||
color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels);
|
||
#endif
|
||
|
||
// For the parts of the sky atmosphere that are not behind a translucent globe,
|
||
// we mix in the default opacity so that the sky atmosphere still appears at distance.
|
||
// This is needed because the opacity in the sky atmosphere is initially adjusted based
|
||
// on the camera height.
|
||
if (translucent == 0.0) {
|
||
color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime);
|
||
}
|
||
|
||
out_FragColor = color;
|
||
}
|
||
`;var _z=`in vec4 position;
|
||
|
||
out vec3 v_outerPositionWC;
|
||
|
||
#ifndef PER_FRAGMENT_ATMOSPHERE
|
||
out vec3 v_mieColor;
|
||
out vec3 v_rayleighColor;
|
||
out float v_opacity;
|
||
out float v_translucent;
|
||
#endif
|
||
|
||
void main(void)
|
||
{
|
||
vec4 positionWC = czm_model * position;
|
||
float lightEnum = u_radiiAndDynamicAtmosphereColor.z;
|
||
vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum);
|
||
|
||
#ifndef PER_FRAGMENT_ATMOSPHERE
|
||
computeAtmosphereScattering(
|
||
positionWC.xyz,
|
||
lightDirection,
|
||
v_rayleighColor,
|
||
v_mieColor,
|
||
v_opacity,
|
||
v_translucent
|
||
);
|
||
#endif
|
||
|
||
v_outerPositionWC = positionWC.xyz;
|
||
vec4 positionEC = czm_modelView * position;
|
||
gl_Position = czm_projection * positionEC;
|
||
}
|
||
`;var yz=`uniform samplerCube u_cubeMap;
|
||
|
||
in vec3 v_texCoord;
|
||
|
||
void main()
|
||
{
|
||
vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord));
|
||
out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime);
|
||
}
|
||
`;var Cz=`in vec3 position;
|
||
out vec3 v_texCoord;
|
||
|
||
void main()
|
||
{
|
||
vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position));
|
||
gl_Position = czm_projection * vec4(p, 1.0);
|
||
v_texCoord = position.xyz;
|
||
}
|
||
`;var Ez=`uniform sampler2D u_texture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
vec4 color = texture(u_texture, v_textureCoordinates);
|
||
out_FragColor = czm_gammaCorrect(color);
|
||
}
|
||
`;var Iz=`uniform float u_radiusTS;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
vec2 rotate(vec2 p, vec2 direction)
|
||
{
|
||
return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x);
|
||
}
|
||
|
||
vec4 addBurst(vec2 position, vec2 direction, float lengthScalar)
|
||
{
|
||
vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75);
|
||
float radius = length(rotatedPosition) * lengthScalar;
|
||
float burst = 1.0 - smoothstep(0.0, 0.55, radius);
|
||
return vec4(burst);
|
||
}
|
||
|
||
void main()
|
||
{
|
||
float lengthScalar = 2.0 / sqrt(2.0);
|
||
vec2 position = v_textureCoordinates - vec2(0.5);
|
||
float radius = length(position) * lengthScalar;
|
||
float surface = step(radius, u_radiusTS);
|
||
vec4 color = vec4(vec2(1.0), surface + 0.2, surface);
|
||
|
||
float glow = 1.0 - smoothstep(0.0, 0.55, radius);
|
||
color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75;
|
||
|
||
vec4 burst = vec4(0.0);
|
||
|
||
// The following loop has been manually unrolled for speed, to
|
||
// avoid sin() and cos().
|
||
//
|
||
//for (float i = 0.4; i < 3.2; i += 1.047) {
|
||
// vec2 direction = vec2(sin(i), cos(i));
|
||
// burst += 0.4 * addBurst(position, direction, lengthScalar);
|
||
//
|
||
// direction = vec2(sin(i - 0.08), cos(i - 0.08));
|
||
// burst += 0.3 * addBurst(position, direction, lengthScalar);
|
||
//}
|
||
|
||
burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4
|
||
burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047
|
||
burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0
|
||
|
||
burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08
|
||
burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08
|
||
burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08
|
||
|
||
// End of manual loop unrolling.
|
||
|
||
color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15;
|
||
|
||
out_FragColor = clamp(color, vec4(0.0), vec4(1.0));
|
||
}
|
||
`;var xz=`in vec2 direction;
|
||
|
||
uniform float u_size;
|
||
|
||
out vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
vec4 position;
|
||
if (czm_morphTime == 1.0)
|
||
{
|
||
position = vec4(czm_sunPositionWC, 1.0);
|
||
}
|
||
else
|
||
{
|
||
position = vec4(czm_sunPositionColumbusView.zxy, 1.0);
|
||
}
|
||
|
||
vec4 positionEC = czm_view * position;
|
||
vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
|
||
|
||
vec2 halfSize = vec2(u_size * 0.5);
|
||
halfSize *= ((direction * 2.0) - 1.0);
|
||
|
||
gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0);
|
||
|
||
v_textureCoordinates = direction;
|
||
}
|
||
`;var bz=`
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
czm_materialInput materialInput;
|
||
|
||
materialInput.s = v_textureCoordinates.s;
|
||
materialInput.st = v_textureCoordinates;
|
||
materialInput.str = vec3(v_textureCoordinates, 0.0);
|
||
materialInput.normalEC = vec3(0.0, 0.0, -1.0);
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
}
|
||
`;async function Cft(e,t,n,i){return l(i)||(i=!1),xft(e,t,n,i)}function Eft(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(eCe(i)):r=o.then(eCe(i)).catch(bft(i)),e.shift(),t.push(r),!0}function Ift(e){return new Promise(function(t){setTimeout(t,e)})}function oX(e,t,n){return e.length?Eft(e,t,n)?oX(e,t,n):Ift(100).then(()=>oX(e,t,n)):Promise.resolve()}function xft(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return oX(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function $ye(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function eCe(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!$ye(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];$ye(s,i,n)}}):Promise.resolve()}}function bft(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var Tz=Cft;var rX=new k;async function tCe(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,rX);let A=e.loadTileDataAvailability(rX.x,rX.y,1);l(A)&&s.push(A)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return Tz(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await tCe(e,a,n),t}var PT=tCe;async function sX(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ie.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ie.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await sX._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),A=r;return f&&(A.height+=h),A}sX._sampleTerrainMostDetailed=PT;var RT=sX;var Tft={NONE:0,LERC:1},vh=Object.freeze(Tft);var Sft={NONE:0,BITS12:1},za=Object.freeze(Sft);var t0=new d,wft=new d,Ad=new k,Sz=new R,Bft=new R,Dft=Math.pow(2,12);function Fc(e,t,n,i,o,r,s,a,c,u){let f=za.NONE,h,A;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,_=d.subtract(m,g,wft),y=i-n;Math.max(d.maximumComponent(_),y)<Dft-1?f=za.BITS12:f=za.NONE,h=R.inverseTransformation(o,new R);let E=d.negate(g,t0);R.multiply(R.fromTranslation(E,Sz),h,h);let I=t0;I.x=1/_.x,I.y=1/_.y,I.z=1/_.z,R.multiply(R.fromScale(I,Sz),h,h),A=R.clone(o),R.setTranslation(A,d.ZERO,A),o=R.clone(o,new R);let b=R.fromTranslation(g,Sz),S=R.fromScale(_,Bft),B=R.multiply(b,S,Sz);R.multiply(o,B,o),R.multiply(A,B,A)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=A,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=u??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}Fc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===za.BITS12){n=R.multiplyByPoint(this.toScaledENU,n,t0),n.x=D.clamp(n.x,0,1),n.y=D.clamp(n.y,0,1),n.z=D.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=D.clamp((o-this.minimumHeight)/f,0,1);k.fromElements(n.x,n.y,Ad);let A=Fn.compressTextureCoordinates(Ad);k.fromElements(n.z,h,Ad);let g=Fn.compressTextureCoordinates(Ad);k.fromElements(c,u,Ad);let m=Fn.compressTextureCoordinates(Ad);if(e[t++]=A,e[t++]=g,e[t++]=m,this.hasWebMercatorT){k.fromElements(s,0,Ad);let _=Fn.compressTextureCoordinates(Ad);e[t++]=_}}else d.subtract(n,this.center,t0),e[t++]=t0.x,e[t++]=t0.y,e[t++]=t0.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Fn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var vft=new d,nCe=new d;Fc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,A=s*r+f;t[A]=e[h]}let a=this.decodePosition(t,s,vft),c=n.geodeticSurfaceNormal(a,nCe),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};Fc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};Fc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===za.BITS12){let i=Fn.decompressTextureCoordinates(e[t],Ad);n.x=i.x,n.y=i.y;let o=Fn.decompressTextureCoordinates(e[t+1],Ad);return n.z=o.x,R.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};Fc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,nCe),a=this.decodeHeight(e,t),c=Yr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};Fc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new k),t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+2],n):k.fromElements(e[t+4],e[t+5],n)};Fc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+1],Ad).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};Fc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+3],Ad).x:e[t+6]};Fc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return k.fromElements(o,r,n)};Fc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};Fc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case za.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var wz={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},Bz={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};Fc.prototype.getAttributes=function(e){let t=q.FLOAT,n=q.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===za.NONE){s(wz.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(wz.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(wz.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(Bz.compressed0,a?4:3),c&&s(Bz.compressed1,1),this.hasGeodeticSurfaceNormals&&s(Bz.geodeticSurfaceNormal,3)}return r};Fc.prototype.getAttributeLocations=function(){return this.quantization===za.NONE?wz:Bz};Fc.clone=function(e,t){if(l(e))return l(t)||(t=new Fc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=R.clone(e.toScaledENU),t.fromScaledENU=R.clone(e.fromScaledENU),t.matrix=R.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Il=Fc;var uA={};uA.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var aX=new d,Pft=new R,Rft=new d,Mft=new d;uA.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=D.PI_OVER_TWO,a=D.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,A=h>0,g=e.isGeographic??!0,m=e.ellipsoid??te.default,_=1/m.maximumRadius,y=ae.clone(e.nativeRectangle),C=ae.clone(e.rectangle),E,I,b,S;l(C)?(E=C.west,I=C.south,b=C.east,S=C.north):g?(E=a(y.west),I=a(y.south),b=a(y.east),S=a(y.north)):(E=y.west*_,I=s-2*o(r(-y.south*_)),b=y.east*_,S=s-2*o(r(-y.north*_)));let B=e.relativeToCenter,v=l(B);B=v?B:d.ZERO;let P=e.includeWebMercatorT??!1,N=e.exaggeration??1,L=e.exaggerationRelativeHeight??0,x=N!==1,T=e.structure??uA.DEFAULT_STRUCTURE,w=T.heightScale??uA.DEFAULT_STRUCTURE.heightScale,M=T.heightOffset??uA.DEFAULT_STRUCTURE.heightOffset,O=T.elementsPerHeight??uA.DEFAULT_STRUCTURE.elementsPerHeight,U=T.stride??uA.DEFAULT_STRUCTURE.stride,Q=T.elementMultiplier??uA.DEFAULT_STRUCTURE.elementMultiplier,z=T.isBigEndian??uA.DEFAULT_STRUCTURE.isBigEndian,F=ae.computeWidth(y),H=ae.computeHeight(y),W=F/(u-1),Z=H/(f-1);g||(F*=_,H*=_);let Y=m.radiiSquared,$=Y.x,X=Y.y,he=Y.z,ge=65536,fe=-65536,ye=kt.eastNorthUpToFixedFrame(B,m),Ie=R.inverseTransformation(ye,Pft),ve,Te;P&&(ve=Yi.geodeticLatitudeToMercatorAngle(I),Te=1/(Yi.geodeticLatitudeToMercatorAngle(S)-ve));let ke=Rft;ke.x=Number.POSITIVE_INFINITY,ke.y=Number.POSITIVE_INFINITY,ke.z=Number.POSITIVE_INFINITY;let Ge=Mft;Ge.x=Number.NEGATIVE_INFINITY,Ge.y=Number.NEGATIVE_INFINITY,Ge.z=Number.NEGATIVE_INFINITY;let qe=Number.POSITIVE_INFINITY,tt=u*f,$t=h>0?u*2+f*2:0,it=tt+$t,tn=new Array(it),Wt=new Array(it),vt=new Array(it),bi=P?new Array(it):[],di=x?new Array(it):[],Ot=0,Tt=f,ii=0,Ct=u;A&&(--Ot,++Tt,--ii,++Ct);let Ro=1e-5;for(let $e=Ot;$e<Tt;++$e){let pt=$e;pt<0&&(pt=0),pt>=f&&(pt=f-1);let Xt=y.north-Z*pt;g?Xt=a(Xt):Xt=s-2*o(r(-Xt*_));let xn=(Xt-I)/(S-I);xn=D.clamp(xn,0,1);let lo=$e===Ot,ro=$e===Tt-1;h>0&&(lo?Xt+=Ro*H:ro&&(Xt-=Ro*H));let $s=t(Xt),ea=n(Xt),Vn=he*ea,_i;P&&(_i=(Yi.geodeticLatitudeToMercatorAngle(Xt)-ve)*Te);for(let _s=ii;_s<Ct;++_s){let Wo=_s;Wo<0&&(Wo=0),Wo>=u&&(Wo=u-1);let Ca=pt*(u*U)+Wo*U,uo;if(O===1)uo=c[Ca];else{uo=0;let wo;if(z)for(wo=0;wo<O;++wo)uo=uo*Q+c[Ca+wo];else for(wo=O-1;wo>=0;--wo)uo=uo*Q+c[Ca+wo]}uo=uo*w+M,fe=Math.max(fe,uo),ge=Math.min(ge,uo);let jo=y.west+W*Wo;g?jo=a(jo):jo=jo*_;let df=(jo-E)/(b-E);df=D.clamp(df,0,1);let Ar=pt*u+Wo;if(h>0){let wo=_s===ii,cn=_s===Ct-1,Se=lo||ro||wo||cn;if((lo||ro)&&(wo||cn))continue;Se&&(uo-=h,wo?(Ar=tt+(f-pt-1),jo-=Ro*F):ro?Ar=tt+f+(u-Wo-1):cn?(Ar=tt+f+u+pt,jo+=Ro*F):lo&&(Ar=tt+f+u+f+Wo))}let ys=$s*t(jo),Qs=$s*n(jo),vd=$*ys,rs=X*Qs,Ka=1/i(vd*ys+rs*Qs+Vn*ea),Sr=vd*Ka,Bl=rs*Ka,Dl=Vn*Ka,ta=new d;ta.x=Sr+ys*uo,ta.y=Bl+Qs*uo,ta.z=Dl+ea*uo,R.multiplyByPoint(Ie,ta,aX),d.minimumByComponent(aX,ke,ke),d.maximumByComponent(aX,Ge,Ge),qe=Math.min(qe,uo),tn[Ar]=ta,vt[Ar]=new k(df,xn),Wt[Ar]=uo,P&&(bi[Ar]=_i),x&&(di[Ar]=m.geodeticSurfaceNormal(ta))}}let Qo=le.fromPoints(tn),ya;l(C)&&(ya=Qn.fromRectangle(C,ge,fe,m));let mr;v&&(mr=new H_(m).computeHorizonCullingPointPossiblyUnderEllipsoid(B,tn,ge));let Tr=new CC(ke,Ge,B),Oe=new Il(B,Tr,qe,fe,ye,!1,P,x,N,L),lt=new Float32Array(it*Oe.stride),Ke=0;for(let $e=0;$e<it;++$e)Ke=Oe.encode(lt,Ke,tn[$e],vt[$e],Wt[$e],void 0,bi[$e],di[$e]);return{vertices:lt,maximumHeight:fe,minimumHeight:ge,encoding:Oe,boundingSphere3D:Qo,orientedBoundingBox:ya,occludeePointInScaledSpace:mr}};var nP=uA;function By(){me.throwInstantiationError()}Object.defineProperties(By.prototype,{credits:{get:me.throwInstantiationError},waterMask:{get:me.throwInstantiationError}});By.prototype.interpolateHeight=me.throwInstantiationError;By.prototype.isChildAvailable=me.throwInstantiationError;By.prototype.createMesh=me.throwInstantiationError;By.prototype.upsample=me.throwInstantiationError;By.prototype.wasCreatedByUpsampling=me.throwInstantiationError;By.maximumAsynchronousTasks=5;var fA=By;function Nft(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this.center=e,this.vertices=t,this.stride=u??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=A,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=_}var Ph=Nft;function Wp(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??vh.NONE;let t=nP.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===vh.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Wp.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var iCe="createVerticesFromHeightmap",Lft=new mi(iCe),Oft=new mi(iCe,fA.maximumAsynchronousTasks);Wp.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),A=this._structure,m=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let y=(a?Oft:Lft).scheduleTask({heightmap:this._buffer,structure:A,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(y))return;let C=this;return Promise.resolve(y).then(function(E){let I;C._skirtHeight>0?I=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(E.gridWidth,E.gridHeight):I=Bs.getRegularGridIndicesAndEdgeIndices(E.gridWidth,E.gridHeight);let b=E.gridWidth*E.gridHeight;return C._mesh=new Ph(h,new Float32Array(E.vertices),I.indices,I.indexCountWithoutSkirts,b,E.minimumHeight,E.maximumHeight,le.clone(E.boundingSphere3D),d.clone(E.occludeePointInScaledSpace),E.numberOfAttributes,Qn.clone(E.orientedBoundingBox),Il.clone(E.encoding),I.westIndicesSouthToNorth,I.southIndicesEastToWest,I.eastIndicesNorthToSouth,I.northIndicesWestToEast),C._buffer=void 0,C._mesh})};Wp.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=nP.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let _;this._skirtHeight>0?_=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):_=Bs.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let y=m.gridWidth*m.gridHeight;return this._mesh=new Ph(f,m.vertices,_.indices,_.indexCountWithoutSkirts,y,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),this._mesh};Wp.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,A=l(this._mesh),g=this._encoding===vh.LERC;if(!A&&g)return;let _;if(A){let y=this._mesh.vertices,C=this._mesh.encoding;_=oCe(y,C,f,h,e,i,o,t,n)}else _=Fft(this._buffer,a,c,s,u,e,i,o,t,n),_=_*h+f;return _};Wp.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,A=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,_=e.tileXYToRectangle(t,n,i),y=e.tileXYToRectangle(o,r,s),C=f.heightOffset,E=f.heightScale,I=f.elementsPerHeight,b=f.elementMultiplier,S=f.isBigEndian,B=Math.pow(b,I-1);for(let v=0;v<u;++v){let P=D.lerp(y.north,y.south,v/(u-1));for(let N=0;N<c;++N){let L=D.lerp(y.west,y.east,N/(c-1)),p=oCe(g,m,C,E,_,c,u,L,P);p=p<f.lowestEncodedHeight?f.lowestEncodedHeight:p,p=p>f.highestEncodedHeight?f.highestEncodedHeight:p,Qft(A,I,b,B,h,S,v*c+N,p)}}return Promise.resolve(new Wp({buffer:A,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Wp.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Wp.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function Fft(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),A=f|0,g=A+1;g>=s&&(g=s-1,A=s-2);let m=h|0,_=m+1;_>=a&&(_=a-1,m=a-2);let y=f-A,C=h-m;m=a-1-m,_=a-1-_;let E=Dz(e,t,n,i,o,m*s+A),I=Dz(e,t,n,i,o,m*s+g),b=Dz(e,t,n,i,o,_*s+A),S=Dz(e,t,n,i,o,_*s+g);return rCe(y,C,E,I,b,S)}function oCe(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,A=h+1;A>=r&&(A=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let _=u-h,y=f-g;g=s-1-g,m=s-1-m;let C=(t.decodeHeight(e,g*r+h)-n)/i,E=(t.decodeHeight(e,g*r+A)-n)/i,I=(t.decodeHeight(e,m*r+h)-n)/i,b=(t.decodeHeight(e,m*r+A)-n)/i;return rCe(_,y,C,E,I,b)}function rCe(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function Dz(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function Qft(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var Qc=Wp;function MT(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e}Object.defineProperties(MT.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});MT.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}))};MT.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};MT.prototype.getTileDataAvailable=function(e,t,n){};MT.prototype.loadTileDataAvailability=function(e,t,n){};var jp=MT;var kft=new k;function Uft(e,t){let n=e.unionClippingRegions,i=e.length,o=Vs.useFloatTexture(t),r=Vs.getTextureResolution(e,t,kft),s=r.x,a=r.y,c=o?Vft(s,a):Hft(s,a);return c+=`
|
||
`,c+=n?Gft(i):zft(i),c}function Gft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix)
|
||
{
|
||
vec4 position = czm_windowToEyeCoordinates(fragCoord);
|
||
vec3 clipNormal = vec3(0.0);
|
||
vec3 clipPosition = vec3(0.0);
|
||
float clipAmount;
|
||
float pixelWidth = czm_metersPerPixel(position);
|
||
bool breakAndDiscard = false;
|
||
for (int i = 0; i < ${e}; ++i)
|
||
{
|
||
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
|
||
clipNormal = clippingPlane.xyz;
|
||
clipPosition = -clippingPlane.w * clipNormal;
|
||
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
|
||
clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount));
|
||
if (amount <= 0.0)
|
||
{
|
||
breakAndDiscard = true;
|
||
break;
|
||
}
|
||
}
|
||
if (breakAndDiscard) {
|
||
discard;
|
||
}
|
||
return clipAmount;
|
||
}
|
||
`}function zft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix)
|
||
{
|
||
bool clipped = true;
|
||
vec4 position = czm_windowToEyeCoordinates(fragCoord);
|
||
vec3 clipNormal = vec3(0.0);
|
||
vec3 clipPosition = vec3(0.0);
|
||
float clipAmount = 0.0;
|
||
float pixelWidth = czm_metersPerPixel(position);
|
||
for (int i = 0; i < ${e}; ++i)
|
||
{
|
||
vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix);
|
||
clipNormal = clippingPlane.xyz;
|
||
clipPosition = -clippingPlane.w * clipNormal;
|
||
float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth;
|
||
clipAmount = max(amount, clipAmount);
|
||
clipped = clipped && (amount <= 0.0);
|
||
}
|
||
if (clipped)
|
||
{
|
||
discard;
|
||
}
|
||
return clipAmount;
|
||
}
|
||
`}function Vft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform)
|
||
{
|
||
int pixY = clippingPlaneNumber / ${e};
|
||
int pixX = clippingPlaneNumber - (pixY * ${e});
|
||
float u = (float(pixX) + 0.5) * ${o};
|
||
float v = (float(pixY) + 0.5) * ${r};
|
||
vec4 plane = texture(packedClippingPlanes, vec2(u, v));
|
||
return czm_transformPlane(plane, transform);
|
||
}
|
||
`}function Hft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform)
|
||
{
|
||
int clippingPlaneStartIndex = clippingPlaneNumber * 2;
|
||
int pixY = clippingPlaneStartIndex / ${e};
|
||
int pixX = clippingPlaneStartIndex - (pixY * ${e});
|
||
float u = (float(pixX) + 0.5) * ${o};
|
||
float v = (float(pixY) + 0.5) * ${r};
|
||
vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0;
|
||
vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w);
|
||
vec4 plane;
|
||
plane.xyz = czm_octDecode(oct, 65535.0);
|
||
plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v)));
|
||
return czm_transformPlane(plane, transform);
|
||
}
|
||
`}var Dy=Uft;function Wft(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function cX(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function jft(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ie.SCENE3D:o=t;break;case ie.SCENE2D:case ie.COLUMBUS_VIEW:o=n;break;case ie.MORPHING:o=i;break}return o}function Yft(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
|
||
czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex);
|
||
}`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
|
||
}`}function qft(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
|
||
return czm_unpackClippingExtents(extentsTexture, index);
|
||
}`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
|
||
return vec4();
|
||
}`}function Kft(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}cX.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,A=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,_=e.enableLighting,y=e.dynamicAtmosphereLighting,C=e.dynamicAtmosphereLightingFromSun,E=e.showGroundAtmosphere,I=e.perFragmentGroundAtmosphere,b=e.hasVertexNormals,S=e.useWebMercatorProjection,B=e.enableFog,v=e.enableClippingPlanes,P=e.clippingPlanes,N=e.enableClippingPolygons,L=e.clippingPolygons,p=e.clippedByBoundaries,x=e.hasImageryLayerCutout,T=e.colorCorrect,w=e.highlightFillTile,M=e.colorToAlpha,O=e.hasGeodeticSurfaceNormals,U=e.hasExaggeration,Q=e.showUndergroundColor,z=e.translucent,F=0,H="",Z=n.renderedMesh.encoding;Z.quantization===za.BITS12&&(F=1,H="QUANTIZATION_BITS12");let $=0,X="";p&&($=1,X="TILE_LIMIT_RECTANGLE");let he=0,ge="";x&&(he=1,ge="APPLY_IMAGERY_CUTOUT");let fe=t.mode,ye=fe|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|A<<8|g<<9|m<<10|_<<11|y<<12|C<<13|E<<14|I<<15|b<<16|S<<17|B<<18|F<<19|h<<20|v<<21|N<<22|$<<23|he<<24|T<<25|w<<26|M<<27|O<<28|U<<29|Q<<30|z<<31|f<<32,Ie=0;l(P)&&P.length>0&&(Ie=v?P.clippingPlanesState:0);let ve=0;l(L)&&L.length>0&&(ve=N?L.clippingPolygonsState:0);let Te=n.surfaceShader;if(l(Te)&&Te.numberOfDayTextures===i&&Te.flags===ye&&Te.material===this.material&&Te.clippingShaderState===Ie&&Te.clippingPolygonShaderState===ve)return Te.shaderProgram;let ke=this._shadersByTexturesFlags[i];if(l(ke)||(ke=this._shadersByTexturesFlags[i]=[]),Te=ke[ye],!l(Te)||Te.material!==this.material||Te.clippingShaderState!==Ie||Te.clippingPolygonShaderState!==ve){let Ge=this.baseVertexShaderSource.clone(),qe=this.baseFragmentShaderSource.clone();Ie!==0&&qe.sources.unshift(Dy(P,t.context)),ve!==0&&(qe.sources.unshift(Yft(t.context)),Ge.sources.unshift(qft(t.context))),Ge.defines.push(H),qe.defines.push(`TEXTURE_UNITS ${i}`,X,ge),o&&qe.defines.push("APPLY_BRIGHTNESS"),r&&qe.defines.push("APPLY_CONTRAST"),s&&qe.defines.push("APPLY_HUE"),a&&qe.defines.push("APPLY_SATURATION"),c&&qe.defines.push("APPLY_GAMMA"),u&&qe.defines.push("APPLY_ALPHA"),f&&qe.defines.push("APPLY_DAY_NIGHT_ALPHA"),A&&qe.defines.push("HAS_WATER_MASK"),g&&(qe.defines.push("SHOW_REFLECTIVE_OCEAN"),Ge.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&qe.defines.push("SHOW_OCEAN_WAVES"),M&&qe.defines.push("APPLY_COLOR_TO_ALPHA"),Q&&(Ge.defines.push("UNDERGROUND_COLOR"),qe.defines.push("UNDERGROUND_COLOR")),z&&(Ge.defines.push("TRANSLUCENT"),qe.defines.push("TRANSLUCENT")),_&&(b?(Ge.defines.push("ENABLE_VERTEX_LIGHTING"),qe.defines.push("ENABLE_VERTEX_LIGHTING")):(Ge.defines.push("ENABLE_DAYNIGHT_SHADING"),qe.defines.push("ENABLE_DAYNIGHT_SHADING"))),y&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),C&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),E&&(Ge.defines.push("GROUND_ATMOSPHERE"),qe.defines.push("GROUND_ATMOSPHERE"),I&&(Ge.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),qe.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ge.defines.push("INCLUDE_WEB_MERCATOR_Y"),qe.defines.push("INCLUDE_WEB_MERCATOR_Y"),B&&(Ge.defines.push("FOG"),qe.defines.push("FOG")),h&&qe.defines.push("APPLY_SPLIT"),v&&qe.defines.push("ENABLE_CLIPPING_PLANES"),N&&(qe.defines.push("ENABLE_CLIPPING_POLYGONS"),Ge.defines.push("ENABLE_CLIPPING_POLYGONS"),L.inverse&&qe.defines.push("CLIPPING_INVERSE"),qe.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`),Ge.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`)),T&&qe.defines.push("COLOR_CORRECT"),w&&qe.defines.push("HIGHLIGHT_FILL_TILE"),O&&Ge.defines.push("GEODETIC_SURFACE_NORMALS"),U&&Ge.defines.push("EXAGGERATION");let tt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend)
|
||
{
|
||
vec4 color = initialColor;
|
||
`;x&&(tt+=` vec4 cutoutAndColorResult;
|
||
bool texelUnclipped;
|
||
`);for(let it=0;it<i;++it)x?tt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${it}];
|
||
texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y;
|
||
cutoutAndColorResult = sampleAndBlend(
|
||
`:tt+=` color = sampleAndBlend(
|
||
`,tt+=` color,
|
||
u_dayTextures[${it}],
|
||
u_dayTextureUseWebMercatorT[${it}] ? textureCoordinates.xz : textureCoordinates.xy,
|
||
u_dayTextureTexCoordsRectangle[${it}],
|
||
u_dayTextureTranslationAndScale[${it}],
|
||
${u?`u_dayTextureAlpha[${it}]`:"1.0"},
|
||
${f?`u_dayTextureNightAlpha[${it}]`:"1.0"},
|
||
${f?`u_dayTextureDayAlpha[${it}]`:"1.0"},
|
||
${o?`u_dayTextureBrightness[${it}]`:"0.0"},
|
||
${r?`u_dayTextureContrast[${it}]`:"0.0"},
|
||
${s?`u_dayTextureHue[${it}]`:"0.0"},
|
||
${a?`u_dayTextureSaturation[${it}]`:"0.0"},
|
||
${c?`u_dayTextureOneOverGamma[${it}]`:"0.0"},
|
||
${h?`u_dayTextureSplit[${it}]`:"0.0"},
|
||
${M?`u_colorsToAlpha[${it}]`:"vec4(0.0)"},
|
||
nightBlend);
|
||
`,x&&(tt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color);
|
||
`);tt+=` return color;
|
||
}`,qe.sources.push(tt),Ge.sources.push(jft(fe)),Ge.sources.push(Kft(S));let $t=ln.fromCache({context:t.context,vertexShaderSource:Ge,fragmentShaderSource:qe,attributeLocations:Z.getAttributeLocations()});Te=ke[ye]=new Wft(i,ye,this.material,$t,Ie,ve)}return n.surfaceShader=Te,Te.shaderProgram};cX.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var vz=cX;var Xft={NONE:-1,PARTIAL:0,FULL:1},Gr=Object.freeze(Xft);var Jft={START:0,LOADING:1,DONE:2,FAILED:3},Va=Object.freeze(Jft);var Zft={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},To=Object.freeze(Zft);function ur(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new le,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(ur.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===To.RECEIVING||e===To.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==qn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var $ft=new Ae;function lX(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ie.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,$ft);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var edt=new d,tdt=new d,ndt=new d;ur.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let A=a[h],g=a[h+1],m=a[h+2],_=lX(c,t,n,s,A,edt),y=lX(c,t,n,s,g,tdt),C=lX(c,t,n,s,m,ndt),E=Ai.rayTriangleParametric(e,_,y,C,i);l(E)&&E<f&&E>=0&&(f=E)}return f!==Number.MAX_VALUE?In.getPoint(e,f,o):void 0};ur.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};ur.prototype.freeVertexArray=function(){ur._freeVertexArray(this.vertexArray),this.vertexArray=void 0,ur._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};ur.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new ur),e.state===Va.START&&(idt(e,t,n),e.state=Va.LOADING)};ur.processStateMachine=function(e,t,n,i,o,r,s){ur.initialize(e,n,i);let a=e.data;if(e.state===Va.LOADING&&odt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===To.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,A={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(A[g]=h[g]));e._loadedCallbacks=A,e.state=Va.DONE}c&&(e.renderable=!0)};ur.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===qn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let A=h.processStateMachine(e,n,i);a=a&&A,s=s||A||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===qn.FAILED||h.loadingImagery.state===qn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function sCe(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Il.clone(s);c.hasGeodeticSurfaceNormals=t,c=Il.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(ur._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=ur._createVertexArrayForMesh(i.context,o)):(ur._freeVertexArray(e.vertexArray),e.vertexArray=ur._createVertexArrayForMesh(i.context,o)),ur._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}ur.prototype.addGeodeticSurfaceNormals=function(e,t){sCe(this,!0,e,t)};ur.prototype.removeGeodeticSurfaceNormals=function(e){sCe(this,!1,void 0,e)};ur.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,A=h.length;for(let g=0;g<A;g++){let m=h[g];m.level=-1}}}};function idt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=To.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function odt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===To.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||ur.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===To.FAILED&&rdt(s,e,t,n,e.x,e.y,e.level),s.terrainState===To.UNLOADED&&sdt(s,n,e.x,e.y,e.level),s.terrainState===To.RECEIVED&&cdt(s,t,n,e.x,e.y,e.level),s.terrainState===To.TRANSFORMED&&(ldt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=To.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)fdt(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function rdt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=Va.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let A=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(A)&&(e.terrainState=To.RECEIVING,Promise.resolve(A).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=To.RECEIVED)}).catch(function(){e.terrainState=To.FAILED}))}function sdt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=To.RECEIVED,e.request=void 0}function s(c){if(e.request.state===hi.CANCELLED){e.terrainData=void 0,e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainState=To.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=zo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=To.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=To.UNLOADED,e.request=void 0)}a()}var adt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function cdt(e,t,n,i,o,r){let s=n.tilingScheme,a=adt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=To.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=To.TRANSFORMED}).catch(function(){e.terrainState=To.FAILED}))}ur._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Et.createVertexBuffer({context:e,typedArray:n,usage:Qe.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Et.createIndexBuffer({context:e,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new li({context:e,attributes:o,indexBuffer:s})};ur._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function ldt(e,t,n,i,o,r,s){e.vertexArray=ur._createVertexArrayForMesh(t,e.mesh),e.terrainState=To.READY,e.fill=e.fill&&e.fill.destroy(s)}function udt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function fdt(e,t){let n=t.terrainData.waterMask,i=udt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,se.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}ur.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};ur.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Rh=ur;var ddt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Sn=ddt;var aCe={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=aCe.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},ai=aCe;function LT(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se}LT.prototype.update=function(e,t,n){this.changedThisFrame&&(mCe(e,t,this.tile,n),this.changedThisFrame=!1)};LT.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};LT.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Rh._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var hdt=new HC;LT.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=hdt;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),A=c.findTileToNorth(r);Zs(e,n,c,u,s,Sn.EAST,!1,a,i),Zs(e,n,c,f,s,Sn.NORTH,!1,a,i),Zs(e,n,c,h,s,Sn.WEST,!1,a,i),Zs(e,n,c,A,s,Sn.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),_=h.findTileToNorth(r),y=h.findTileToSouth(r);Zs(e,n,c,g,s,Sn.SOUTHEAST,!1,a,i),Zs(e,n,c,_,s,Sn.SOUTHWEST,!1,a,i),Zs(e,n,c,m,s,Sn.NORTHEAST,!1,a,i),Zs(e,n,c,y,s,Sn.NORTHWEST,!1,a,i),c=a.dequeue()}};function Zs(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||ai.wasKicked(u._lastSelectionResult)||ai.originalResult(u._lastSelectionResult)===ai.CULLED);){if(s)return;let f=u.parent;if(r>=Sn.NORTHWEST&&f!==void 0)switch(r){case Sn.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case Sn.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case Sn.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case Sn.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===ai.RENDERED){if(l(u.data.vertexArray))return;mdt(e,t,n,u,r,o,a,c);return}if(ai.originalResult(i._lastSelectionResult)!==ai.CULLED)switch(r){case Sn.WEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c),Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.EAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c),Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTH:Zs(e,t,n,i.southwestChild,o,r,!0,a,c),Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Sn.NORTH:Zs(e,t,n,i.northeastChild,o,r,!0,a,c),Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHWEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHEAST:Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTHWEST:Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.SOUTHEAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new me("Invalid edge")}}}function mdt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new LT(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Adt(e,t,n,i,o,a)}function Adt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(mCe(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case Sn.WEST:u=s.westMeshes,f=s.westTiles;break;case Sn.SOUTH:u=s.southMeshes,f=s.southTiles;break;case Sn.EAST:u=s.eastMeshes,f=s.eastTiles;break;case Sn.NORTH:u=s.northMeshes,f=s.northTiles;break;case Sn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Sn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Sn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Sn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,A,g,m,_=n.rectangle,y,C=i.rectangle;switch(o){case Sn.WEST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.north,m.south,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.south,m.north,y));++A);break;case Sn.SOUTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.west,m.east,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.east,m.west,y));++A);break;case Sn.EAST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.south,m.north,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.north,m.south,y));++A);break;case Sn.NORTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.east,m.west,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.west,m.east,y));++A);break}A-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,A-h,a),f.splice(h,A-h,n))}var n0=new Ae,pdt=new Ae,NT=new d,hX=new d,uX=new k,fX=new k,Zu=new k;function Fz(){this.height=0,this.encodedNormal=new k}function Pz(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,A=0,g=0;l(h)&&(A=h.minimumHeight,g=h.maximumHeight),u=(A+g)*.5}return ACe(e,t,n,i,u,c),c}var gdt={minimumHeight:0,maximumHeight:0},_dt=new d,cCe=new Fz,lCe=new Fz,uCe=new Fz,fCe=new Fz,ydt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,Cdt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function mCe(e,t,n,i){Rh.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=Mz(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,uCe),A=Mz(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,cCe),g=Mz(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,lCe),m=Mz(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,fCe);h=Pz(r,f,0,1,h,A,m,g,uCe),A=Pz(r,f,0,0,A,h,g,m,cCe),g=Pz(r,f,1,1,g,A,m,h,lCe),m=Pz(r,f,1,1,m,g,h,A,fCe);let _=A.height,y=g.height,C=h.height,E=m.height,I=Math.min(_,y,C,E),b=Math.max(_,y,C,E),S=(I+b)*.5,B,v,P=e.getLevelMaximumGeometricError(n.level),N=f.maximumRadius-P,L=Math.acos(N/f.maximumRadius)*4;if(L*=1.5,s.width>L&&b-I<=P){let T=new Qc({width:9,height:9,buffer:ydt,structure:{heightOffset:b}}),w=Cdt;w.tilingScheme=n.tilingScheme,w.x=n.x,w.y=n.y,w.level=n.level,w.exaggeration=a,w.exaggerationRelativeHeight=c,r.mesh=T._createMeshSync(w)}else{let T=u,w=ae.center(s,pdt);w.height=S;let M=f.cartographicToCartesian(w,_dt),O=new Il(M,void 0,void 0,void 0,void 0,!0,!0,T,a,c),U=5,Q;for(Q=r.westMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].eastIndicesNorthToSouth.length;for(Q=r.southMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].northIndicesWestToEast.length;for(Q=r.eastMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].westIndicesSouthToNorth.length;for(Q=r.northMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].southIndicesEastToWest.length;let z=gdt;z.minimumHeight=I,z.maximumHeight=b;let F=O.stride,H=new Float32Array(U*F),W=0,Z=W;W=Rz(f,s,O,H,W,0,1,h.height,h.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.westTiles,r.westMeshes,Sn.EAST,z);let Y=W;W=Rz(f,s,O,H,W,0,0,A.height,A.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.southTiles,r.southMeshes,Sn.NORTH,z);let $=W;W=Rz(f,s,O,H,W,1,0,g.height,g.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.eastTiles,r.eastMeshes,Sn.WEST,z);let X=W;W=Rz(f,s,O,H,W,1,1,m.height,m.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.northTiles,r.northMeshes,Sn.SOUTH,z),I=z.minimumHeight,b=z.maximumHeight;let he=Qn.fromRectangle(s,I,b,n.tilingScheme.ellipsoid),ge=Yi.geodeticLatitudeToMercatorAngle(s.south),fe=1/(Yi.geodeticLatitudeToMercatorAngle(s.north)-ge),ye=(Yi.geodeticLatitudeToMercatorAngle(w.latitude)-ge)*fe,Ie=f.geodeticSurfaceNormalCartographic(n0,hX),ve=Fn.octEncode(Ie,uX),Te=W;O.encode(H,W*F,he.center,k.fromElements(.5,.5,Zu),S,ve,ye,Ie),++W;let ke=W,Ge=ke<256?1:2,qe=(ke-1)*3,tt=qe*Ge,$t=(H.length-ke*F)*Float32Array.BYTES_PER_ELEMENT,it;if($t>=tt){let Ot=ke*F*Float32Array.BYTES_PER_ELEMENT;it=ke<256?new Uint8Array(H.buffer,Ot,qe):new Uint16Array(H.buffer,Ot,qe)}else it=ke<256?new Uint8Array(qe):new Uint16Array(qe);H=new Float32Array(H.buffer,0,ke*F);let tn=0;for(B=0;B<ke-2;++B)it[tn++]=Te,it[tn++]=B,it[tn++]=B+1;it[tn++]=Te,it[tn++]=B,it[tn++]=0;let Wt=[];for(B=Y;B>=Z;--B)Wt.push(B);let vt=[];for(B=$;B>=Y;--B)vt.push(B);let bi=[];for(B=X;B>=$;--B)bi.push(B);let di=[];for(di.push(0),B=Te-1;B>=X;--B)di.push(B);r.mesh=new Ph(O.center,H,it,qe,ke,I,b,le.fromOrientedBoundingBox(he),wdt(e,he.center,s,I,b),O.stride,he,O,Wt,vt,bi,di)}let p=t.context;r._destroyVertexArray(i),r.vertexArray=Rh._createVertexArrayForMesh(p,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let x=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let T=o._findAncestorTileWithTerrainData(n);l(T)&&l(T.data.waterMaskTexture)&&(r.waterMaskTexture=T.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,T,r.waterMaskTranslationAndScale))}l(x)&&(--x.referenceCount,x.referenceCount===0&&x.destroy())}function Rz(e,t,n,i,o,r,s,a,c,u,f){let h=n0;h.longitude=D.lerp(t.west,t.east,r),h.latitude=D.lerp(t.south,t.north,s),h.height=a;let A=e.cartographicToCartesian(h,NT),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(A,hX));let m=fX;return m.x=r,m.y=s,n.encode(i,o*n.stride,A,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var Oz=new ae;function iP(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,Oz),o.west-=D.TWO_PI,o.east-=D.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,Oz),o.west+=D.TWO_PI,o.east+=D.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,A=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(A)<Math.EPSILON5?A=0:Math.abs(A-1)<Math.EPSILON5&&(A=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=A,i.y=g,i}var Edt=new k;function dX(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var Idt=new k,xdt=new d;function bdt(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,A=iP(t,n,f.decodeTextureCoordinates(h,o,Zu),Zu),g=iP(t,n,f.decodeTextureCoordinates(h,r,fX),fX),m;c?m=(s-A.x)/(g.x-A.x):m=(a-A.y)/(g.y-A.y);let _=f.decodeHeight(h,o),y=f.decodeHeight(h,r),C=n.rectangle;n0.longitude=D.lerp(C.west,C.east,s),n0.latitude=D.lerp(C.south,C.north,a),u.height=n0.height=D.lerp(_,y,m);let E;if(f.hasVertexNormals){let I=f.getOctEncodedNormal(h,o,Edt),b=f.getOctEncodedNormal(h,r,Idt),S=Fn.octDecode(I.x,I.y,NT),B=Fn.octDecode(b.x,b.y,xdt);E=d.lerp(S,B,m,NT),d.normalize(E,E),Fn.octEncode(E,u.encodedNormal)}else E=e.geodeticSurfaceNormalCartographic(n0,NT),Fn.octEncode(E,u.encodedNormal)}function ACe(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(n0,NT);Fn.octEncode(s,r.encodedNormal)}function Mz(e,t,n,i,o,r,s,a,c,u,f){if(hCe(e,t,a,s,!1,n,i,f)||hCe(e,t,u,c,!0,n,i,f))return f;let A;if(mX(o,r))return n===0?i===0?A=r.eastIndicesNorthToSouth[0]:A=r.southIndicesEastToWest[0]:i===0?A=r.northIndicesWestToEast[0]:A=r.westIndicesSouthToNorth[0],dX(r,A,n,i,f),f;let g;if(n===0?i===0?g=Nz(e.westMeshes,e.westTiles,Sn.EAST,e.southMeshes,e.southTiles,Sn.NORTH,n,i):g=Nz(e.northMeshes,e.northTiles,Sn.SOUTH,e.westMeshes,e.westTiles,Sn.EAST,n,i):i===0?g=Nz(e.southMeshes,e.southTiles,Sn.NORTH,e.eastMeshes,e.eastTiles,Sn.WEST,n,i):g=Nz(e.eastMeshes,e.eastTiles,Sn.WEST,e.northMeshes,e.northTiles,Sn.SOUTH,n,i),l(g))return ACe(e,t,n,i,g,f),f}function Nz(e,t,n,i,o,r,s,a){let c=dCe(e,t,!1,n,s,a),u=dCe(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function Lz(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=Tdt(e,t,n,i,o,r[u],s[u],a,c);return o}function Tdt(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===Sn.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,Oz),u.west-=D.TWO_PI,u.east-=D.TWO_PI):a===Sn.WEST&&r.x===0&&(u=ae.clone(r.rectangle,Oz),u.west+=D.TWO_PI,u.east+=D.TWO_PI);let f=e.tile.rectangle,h,A;o>0&&(n.decodeTextureCoordinates(i,o-1,Zu),h=Zu.x,A=Zu.y);let g,m;switch(a){case Sn.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case Sn.NORTH:g=s.northIndicesWestToEast,m=!0;break;case Sn.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case Sn.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let _=r,y=e.tile,C=s.encoding,E=s.vertices,I=n.stride,b,S;C.hasWebMercatorT&&(b=Yi.geodeticLatitudeToMercatorAngle(f.south),S=1/(Yi.geodeticLatitudeToMercatorAngle(f.north)-b));for(let B=0;B<g.length;++B){let v=g[B],P=C.decodeTextureCoordinates(E,v,Zu);iP(_,y,P,P);let N=P.x,L=P.y,p=m?N:L;if(p<0||p>1||Math.abs(N-h)<D.EPSILON5&&Math.abs(L-A)<D.EPSILON5)continue;let x=Math.abs(N)<D.EPSILON5||Math.abs(N-1)<D.EPSILON5,T=Math.abs(L)<D.EPSILON5||Math.abs(L-1)<D.EPSILON5;if(x&&T)continue;let w=C.decodePosition(E,v,NT),M=C.decodeHeight(E,v),O;C.hasVertexNormals?O=C.getOctEncodedNormal(E,v,uX):(O=uX,O.x=0,O.y=0);let U=L;if(C.hasWebMercatorT){let z=D.lerp(f.south,f.north,L);U=(Yi.geodeticLatitudeToMercatorAngle(z)-b)*S}let Q;n.hasGeodeticSurfaceNormals&&(Q=t.geodeticSurfaceNormal(w,hX)),n.encode(i,o*I,w,P,M,O,U,Q),c.minimumHeight=Math.min(c.minimumHeight,M),c.maximumHeight=Math.max(c.maximumHeight,M),++o}return o}function dCe(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!mX(h,f))continue;let A;switch(i){case Sn.WEST:A=f.westIndicesSouthToNorth;break;case Sn.SOUTH:A=f.southIndicesEastToWest;break;case Sn.EAST:A=f.eastIndicesNorthToSouth;break;case Sn.NORTH:A=f.northIndicesWestToEast;break}let g=A[n?0:A.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function mX(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function hCe(e,t,n,i,o,r,s,a){let c,u,f,h,A,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(mX(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,A=c[h],m.encoding.decodeTextureCoordinates(m.vertices,A,Zu);let _=iP(g,e.tile,Zu,Zu);if(_.x===r&&_.y===s)return dX(m,A,r,s,a),!0;if(h=qo(c,u?r:s,function(y,C){m.encoding.decodeTextureCoordinates(m.vertices,y,Zu);let E=iP(g,e.tile,Zu,Zu);return f?u?E.x-r:E.y-s:u?r-E.x:s-E.y}),h<0){if(h=~h,h>0&&h<c.length)return bdt(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return dX(m,c[h],r,s,a),!0}return!1}var Sdt=[new d,new d,new d,new d];function wdt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Sdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var oP=LT;function fr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Dn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new _e,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(fr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(fr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(fr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(fr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new _e,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new G(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(fr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=se.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}}});function Bdt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}fr.prototype.update=function(e){this._imageryLayers._update()};function Ddt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}fr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(Bdt)})),Ddt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Rh._freeVertexArray(t[i]);t.length=0};fr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};fr.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS}}),this._blendRenderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},blending:pn.ALPHA_BLEND});let s=ze(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Ue.fromCache(s),s=ze(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Ue.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&oP.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let u=0,f=c.length;u<f;++u){let h=c[u],A=h.data.tileBoundingRegion;$dt(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,A.minimumHeight)}}};function CCe(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}fr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)CCe(t[n],e)};fr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};fr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};fr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===ai.CULLED_BUT_NEEDED,o=n.terrainState),Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Gr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var vdt=new le,ECe=new ae,Pdt=new ae,Rdt=new Ae;function kz(e,t){if(t.west<t.east)return t;let n=ae.clone(t,Pdt);return ae.center(e,Rdt).longitude>0?n.east=D.PI:n.west=-D.PI,n}function ICe(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}fr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=ICe(this,t);if(t.fog.enabled&&!o&&D.fog(i,t.fog.density)>=1)return Gr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Gr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=kz(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,ECe);if(!l(f))return Gr.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ie.SCENE3D&&(c=vdt,le.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ie.MORPHING&&l(r.renderedMesh)&&(c=le.union(s.boundingSphere,c,c))),!l(c))return Gr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let y=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=y!==nn.INSIDE,y===nn.OUTSIDE)return Gr.NONE}let A=this._clippingPolygons;if(l(A)&&A.enabled){let y=A.computeIntersectionWithBoundingVolume(s);e.isClipped=y!==nn.OUTSIDE}let g,m=a.computeVisibility(c);if(m===nn.OUTSIDE?g=Gr.NONE:m===nn.INTERSECTING?g=Gr.PARTIAL:m===nn.INSIDE&&(g=Gr.FULL),g===Gr.NONE)return g;let _=t.mode===ie.SCENE3D&&t.camera.frustum instanceof An;if(t.mode===ie.SCENE3D&&!_&&l(n)&&!o){let y=r.occludeePointInScaledSpace;return!l(y)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(y,s.minimumHeight)?g:Gr.NONE}return g};fr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Mdt=[],Ndt=[];fr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Mdt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===To.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],A=h.loadingImagery,g=!l(A)||A.state===qn.FAILED||A.state===qn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=Ndt;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),A=h._lastSelectionResultFrame===u?h._lastSelectionResult:ai.NONE;if(A===ai.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===To.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let _=m[a],y=_.loadingImagery,C=!l(y)||y.state===qn.FAILED||y.state===qn.INVALID,E=(_.loadingImagery||_.readyImagery).imageryLayer._layerIndex;if(C&&!i[E])return!1}}else A===ai.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Ldt=new d;fr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,Ldt),a=d.magnitude(s);return a<D.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var pCe=new R,Qz=new R,Odt=new se,Fdt=new se,Qdt=new se,kdt=new d,gCe=new d,Udt=new d,Gdt=new d;fr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var zdt=[new d,new d,new d,new d];function _Ce(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=zdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}fr.prototype.computeDistanceToTile=function(e,t){Vdt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function Vdt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Rh);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new $f({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=i.mesh,h=i.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0)r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let g=A.data;if(g!==void 0){let m=g.mesh,_=g.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0){r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight;break}else if(_!==void 0&&_._minimumHeight!==void 0&&_._maximumHeight!==void 0){r.minimumHeight=_._minimumHeight,r.maximumHeight=_._maximumHeight;break}}A=A.parent}u=A}if(u!==void 0){let A=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(A!==1&&(c=!1,r.minimumHeight=Yr.getHeight(r.minimumHeight,A,g),r.maximumHeight=Yr.getHeight(r.maximumHeight,A,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Qn.clone(f.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=le.clone(f.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(f.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let _=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||_)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}fr.prototype.isDestroyed=function(){return!1};fr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function Hdt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}fr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let A=f+h;e._createTileImagerySkeletons(s,n,A)&&(s._loadedCallbacks[e._layerIndex]=Hdt(h,e,n),s.state=Va.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=Va.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==ai.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};fr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Wdt=new R,jdt=new R;function yCe(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,o,pCe),pCe},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,r,Qz),R.multiply(o,Qz,Qz),Qz},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?R.multiply(e.context.uniformState.view,i.modelMatrix,Wdt):R.IDENTITY;return R.inverseTranspose(o,jdt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new se(0,0,.5,1),fillHighlightColor:new G(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new k(65e5,9e6),nightFadeDistance:new k(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new R,tileRectangle:new se,verticalExaggerationAndRelativeHeight:new k(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new k,southMercatorYAndOneOverHeight:new k,waterMask:void 0,waterMaskTranslationAndScale:new se,minMaxHeight:new k,scaleAndBias:new R,clippingPlanesEdgeColor:G.clone(G.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new se,frontFaceAlphaByDistance:new se,backFaceAlphaByDistance:new se,localizedTranslucencyRectangle:new se,undergroundColor:G.clone(G.TRANSPARENT),undergroundColorAlphaByDistance:new se,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?wt(n,t.materialUniformMap):n}function Ydt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=qdt(e,r,o),i.wireframeVertexArray.mesh=o}}function qdt(e,t,n){let o={indices:n.indices,primitiveType:Me.TRIANGLES};jn.toWireframe(o);let r=o.indices,s=Et.createIndexBuffer({context:e,typedArray:r,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new li({context:e,attributes:t._attributes,indexBuffer:s})}var xCe,bCe,Uz;(function(){let e=new Rt({geometry:$h.fromDimensions({dimensions:new d(2,2,2)})}),t=new Rt({geometry:new L_({radius:1})}),n=new R,i,o;function r(s){return new kn({geometryInstances:s,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}xCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=en.fromColor(a),o=r(e)),o},bCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromTranslation(s.center,n),n=R.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=en.fromColor(a),o=r(t)),o},Uz=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var Kdt=new se(0,0,0,0),Xdt={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},Jdt=G.TRANSPARENT,Zdt=new Yt;function $dt(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new oP(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let Ot=r.credits;for(let Tt=0,ii=Ot.length;Tt<ii;++Tt)o.addCreditToNextFrame(Ot[Tt])}let s=qt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let u=n.cameraUnderground,f=n.globeTranslucencyState,h=f.translucent,A=f.frontFaceAlphaByDistance,g=f.backFaceAlphaByDistance,m=f.rectangle,_=e.undergroundColor??Jdt,y=e.undergroundColorAlphaByDistance??Zdt,C=ICe(e,n)&&n.mode===ie.SCENE3D&&_.alpha>0&&(y.nearValue>0||y.farValue>0),E=e.lambertDiffuseMultiplier,I=e.vertexShadowDarkness,b=e.hasWaterMask&&l(a),S=b&&e.showWaterEffect,B=e.oceanNormalMap,v=S&&l(B),P=e.terrainProvider,N=l(P)&&e.terrainProvider.hasVertexNormals,L=n.fog.enabled&&n.fog.renderable&&!u,p=e.showGroundAtmosphere&&n.mode===ie.SCENE3D,x=Dn.castShadows(e.shadows)&&!h,T=Dn.receiveShadows(e.shadows)&&!h,w=e.hueShift,M=e.saturationShift,O=e.brightnessShift,U=!(D.equalsEpsilon(w,0,D.EPSILON7)&&D.equalsEpsilon(M,0,D.EPSILON7)&&D.equalsEpsilon(O,0,D.EPSILON7)),Q=!1;if(p){let Ot=d.magnitude(n.camera.positionWC),Tt=e.nightFadeOutDistance;Q=Ot>Tt}b&&--s,v&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=f.numberOfTextureUniforms;let z=i.renderedMesh,F=z.center,H=z.encoding,W=i.tileBoundingRegion,Z=n.verticalExaggeration,Y=n.verticalExaggerationRelativeHeight,$=Z!==1,X=H.hasGeodeticSurfaceNormals,he=Odt,ge=0,fe=0,ye=0,Ie=0,ve=!1;if(n.mode!==ie.SCENE3D){let Ot=n.mapProjection,Tt=Ot.project(ae.southwest(t.rectangle),Udt),ii=Ot.project(ae.northeast(t.rectangle),Gdt);if(he.x=Tt.x,he.y=Tt.y,he.z=ii.x,he.w=ii.y,n.mode!==ie.MORPHING&&(F=kdt,F.x=0,F.y=(he.z+he.x)*.5,F.z=(he.w+he.y)*.5,he.x-=F.y,he.y-=F.z,he.z-=F.y,he.w-=F.z),n.mode===ie.SCENE2D&&H.quantization===za.BITS12){let Ct=1/(Math.pow(2,12)-1)*.5,Ro=(he.z-he.x)*Ct,Qo=(he.w-he.y)*Ct;he.x-=Ro,he.y-=Qo,he.z+=Ro,he.w+=Qo}Ot instanceof Yi&&(ge=t.rectangle.south,fe=t.rectangle.north,ye=Yi.geodeticLatitudeToMercatorAngle(ge),Ie=1/(Yi.geodeticLatitudeToMercatorAngle(fe)-ye),ve=!0)}let Te=Xdt;Te.frameState=n,Te.surfaceTile=i,Te.hasWaterMask=b,Te.showReflectiveOcean=S,Te.showOceanWaves=v,Te.enableLighting=e.enableLighting,Te.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Te.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Te.showGroundAtmosphere=p,Te.atmosphereLightIntensity=e.atmosphereLightIntensity,Te.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Te.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Te.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Te.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Te.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Te.perFragmentGroundAtmosphere=Q,Te.hasVertexNormals=N,Te.useWebMercatorProjection=ve,Te.clippedByBoundaries=i.clippedByBoundaries,Te.hasGeodeticSurfaceNormals=X,Te.hasExaggeration=$;let ke=i.imagery,Ge=0,qe=ke.length,tt=e.showSkirts&&!u&&!h,$t=e.backFaceCulling&&!u&&!h,it=$t?e._renderState:e._disableCullingRenderState,tn=$t?e._blendRenderState:e._disableCullingBlendRenderState,Wt=it,vt=e._firstPassInitialColor,bi=n.context;if(l(e._debug.boundingSphereTile)||Uz(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let Ot=e._drawCommands.length;for(let Tt=0;Tt<Ot;++Tt)e._uniformMaps[Tt]=yCe(n,e)}do{let Ot=0,Tt,ii;if(e._drawCommands.length<=e._usedDrawCommands?(Tt=new nt,Tt.owner=t,Tt.cull=!1,Tt.boundingVolume=new le,Tt.orientedBoundingBox=void 0,ii=yCe(n,e),e._drawCommands.push(Tt),e._uniformMaps.push(ii)):(Tt=e._drawCommands[e._usedDrawCommands],ii=e._uniformMaps[e._usedDrawCommands]),Tt.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let rs=W.boundingVolume,qa=W.boundingSphere;l(rs)?xCe(rs,G.RED).update(n):l(qa)&&bCe(qa,G.RED).update(n)}let Ct=ii.properties;se.clone(vt,Ct.initialColor),Ct.oceanNormalMap=B,Ct.lightingFadeDistance.x=e.lightingFadeOutDistance,Ct.lightingFadeDistance.y=e.lightingFadeInDistance,Ct.nightFadeDistance.x=e.nightFadeOutDistance,Ct.nightFadeDistance.y=e.nightFadeInDistance,Ct.atmosphereLightIntensity=e.atmosphereLightIntensity,Ct.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Ct.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Ct.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Ct.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Ct.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Ct.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Ro=u?g:A,Qo=u?A:g;l(Ro)&&(se.fromElements(Ro.near,Ro.nearValue,Ro.far,Ro.farValue,Ct.frontFaceAlphaByDistance),se.fromElements(Qo.near,Qo.nearValue,Qo.far,Qo.farValue,Ct.backFaceAlphaByDistance)),se.fromElements(y.near,y.nearValue,y.far,y.farValue,Ct.undergroundColorAlphaByDistance),G.clone(_,Ct.undergroundColor),Ct.lambertDiffuseMultiplier=E,Ct.vertexShadowDarkness=I;let ya=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;ya&&G.clone(e.fillHighlightColor,Ct.fillHighlightColor),Ct.verticalExaggerationAndRelativeHeight.x=Z,Ct.verticalExaggerationAndRelativeHeight.y=Y,Ct.center3D=z.center,d.clone(F,Ct.rtc),se.clone(he,Ct.tileRectangle),Ct.southAndNorthLatitude.x=ge,Ct.southAndNorthLatitude.y=fe,Ct.southMercatorYAndOneOverHeight.x=ye,Ct.southMercatorYAndOneOverHeight.y=Ie;let mr=Fdt,Tr=kz(t.rectangle,e.cartographicLimitRectangle),Oe=Qdt,lt=kz(t.rectangle,m);d.fromElements(w,M,O,Ct.hsbShift);let Ke=t.rectangle,$e=1/Ke.width,pt=1/Ke.height;mr.x=(Tr.west-Ke.west)*$e,mr.y=(Tr.south-Ke.south)*pt,mr.z=(Tr.east-Ke.west)*$e,mr.w=(Tr.north-Ke.south)*pt,se.clone(mr,Ct.localizedCartographicLimitRectangle),Oe.x=(lt.west-Ke.west)*$e,Oe.y=(lt.south-Ke.south)*pt,Oe.z=(lt.east-Ke.west)*$e,Oe.w=(lt.north-Ke.south)*pt,se.clone(Oe,Ct.localizedTranslucencyRectangle);let Xt=L&&D.fog(t._distance,n.fog.density)>D.EPSILON3;U=U&&(Xt||p);let xn=!1,lo=!1,ro=!1,$s=!1,ea=!1,Vn=!1,_i=!1,_s=!1,Wo=!1,Ca=!1;for(;Ot<s&&Ge<qe;){let rs=ke[Ge],qa=rs.readyImagery;if(++Ge,!l(qa)||qa.imageryLayer.alpha===0)continue;let Ka=rs.useWebMercatorT?qa.textureWebMercator:qa.texture,Sr=qa.imageryLayer;l(rs.textureTranslationAndScale)||(rs.textureTranslationAndScale=Sr._calculateTextureTranslationAndScale(t,rs)),Ct.dayTextures[Ot]=Ka,Ct.dayTextureTranslationAndScale[Ot]=rs.textureTranslationAndScale,Ct.dayTextureTexCoordsRectangle[Ot]=rs.textureCoordinateRectangle,Ct.dayTextureUseWebMercatorT[Ot]=rs.useWebMercatorT,Ct.dayTextureAlpha[Ot]=Sr.alpha,Vn=Vn||Ct.dayTextureAlpha[Ot]!==1,Ct.dayTextureNightAlpha[Ot]=Sr.nightAlpha,_i=_i||Ct.dayTextureNightAlpha[Ot]!==1,Ct.dayTextureDayAlpha[Ot]=Sr.dayAlpha,_i=_i||Ct.dayTextureDayAlpha[Ot]!==1,Ct.dayTextureBrightness[Ot]=Sr.brightness,xn=xn||Ct.dayTextureBrightness[Ot]!==ds.DEFAULT_BRIGHTNESS,Ct.dayTextureContrast[Ot]=Sr.contrast,lo=lo||Ct.dayTextureContrast[Ot]!==ds.DEFAULT_CONTRAST,Ct.dayTextureHue[Ot]=Sr.hue,ro=ro||Ct.dayTextureHue[Ot]!==ds.DEFAULT_HUE,Ct.dayTextureSaturation[Ot]=Sr.saturation,$s=$s||Ct.dayTextureSaturation[Ot]!==ds.DEFAULT_SATURATION,Ct.dayTextureOneOverGamma[Ot]=1/Sr.gamma,ea=ea||Ct.dayTextureOneOverGamma[Ot]!==1/ds.DEFAULT_GAMMA,Ct.dayTextureSplit[Ot]=Sr.splitDirection,_s=_s||Ct.dayTextureSplit[Ot]!==0;let Bl=Ct.dayTextureCutoutRectangles[Ot];if(l(Bl)||(Bl=Ct.dayTextureCutoutRectangles[Ot]=new se),se.clone(se.ZERO,Bl),l(Sr.cutoutRectangle)){let wo=kz(Ke,Sr.cutoutRectangle),cn=ae.simpleIntersection(wo,Ke,ECe);Wo=l(cn)||Wo,Bl.x=(wo.west-Ke.west)*$e,Bl.y=(wo.south-Ke.south)*pt,Bl.z=(wo.east-Ke.west)*$e,Bl.w=(wo.north-Ke.south)*pt}let Dl=Ct.colorsToAlpha[Ot];l(Dl)||(Dl=Ct.colorsToAlpha[Ot]=new se);let ta=l(Sr.colorToAlpha)&&Sr.colorToAlphaThreshold>0;if(Ca=Ca||ta,ta){let wo=Sr.colorToAlpha;Dl.x=wo.red,Dl.y=wo.green,Dl.z=wo.blue,Dl.w=Sr.colorToAlphaThreshold}else Dl.w=-1;if(l(qa.credits)){let wo=qa.credits;for(let cn=0,Se=wo.length;cn<Se;++cn)o.addCreditToNextFrame(wo[cn])}++Ot}Ct.dayTextures.length=Ot,Ct.waterMask=a,se.clone(c,Ct.waterMaskTranslationAndScale),Ct.minMaxHeight.x=H.minimumHeight,Ct.minMaxHeight.y=H.maximumHeight,R.clone(H.matrix,Ct.scaleAndBias);let uo=e._clippingPlanes,jo=l(uo)&&uo.enabled&&t.isClipped;jo&&(Ct.clippingPlanesEdgeColor=G.clone(uo.edgeColor,Ct.clippingPlanesEdgeColor),Ct.clippingPlanesEdgeWidth=uo.edgeWidth);let df=e._clippingPolygons,Ar=l(df)&&df.enabled&&t.isClipped;Te.numberOfDayTextures=Ot,Te.applyBrightness=xn,Te.applyContrast=lo,Te.applyHue=ro,Te.applySaturation=$s,Te.applyGamma=ea,Te.applyAlpha=Vn,Te.applyDayNightAlpha=_i,Te.applySplit=_s,Te.enableFog=Xt,Te.enableClippingPlanes=jo,Te.clippingPlanes=uo,Te.enableClippingPolygons=Ar,Te.clippingPolygons=df,Te.hasImageryLayerCutout=Wo,Te.colorCorrect=U,Te.highlightFillTile=ya,Te.colorToAlpha=Ca,Te.showUndergroundColor=C,Te.translucent=h;let ys=i.renderedMesh.indices.length;tt||(ys=i.renderedMesh.indexCountWithoutSkirts),Tt.shaderProgram=e._surfaceShaderSet.getShaderProgram(Te),Tt.castShadows=x,Tt.receiveShadows=T,Tt.renderState=Wt,Tt.primitiveType=Me.TRIANGLES,Tt.vertexArray=i.vertexArray||i.fill.vertexArray,Tt.count=ys,Tt.uniformMap=ii,Tt.pass=Be.GLOBE,e._debug.wireframe&&(Ydt(bi,e,t),l(i.wireframeVertexArray)&&(Tt.vertexArray=i.wireframeVertexArray,Tt.primitiveType=Me.LINES,Tt.count=ys*2));let Qs=Tt.boundingVolume,vd=Tt.orientedBoundingBox;n.mode!==ie.SCENE3D?(le.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,W.minimumHeight,W.maximumHeight,Qs),d.fromElements(Qs.center.z,Qs.center.x,Qs.center.y,Qs.center),n.mode===ie.MORPHING&&(Qs=le.union(W.boundingSphere,Qs,Qs))):(Tt.boundingVolume=le.clone(W.boundingSphere,Qs),Tt.orientedBoundingBox=Qn.clone(W.boundingVolume,vd)),Tt.dirty=!0,h&&f.updateDerivedCommands(Tt,n),CCe(Tt,n),Wt=tn,vt=Kdt}while(Ge<qe)}var Gz=fr;function TCe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(TCe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=Yt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=Yt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var zz=TCe;function SCe(e){this._ellipsoid=new H_(e.ellipsoid,d.ZERO)}Object.defineProperties(SCe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Vz=SCe;var AX=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},eht=1e3;function ma(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=ai.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new AX(eht),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}ma.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new ma({tilingScheme:e,x:s,y:r,level:0});return i};var tht=256;function nht(e,t,n,i){let o=n.width/tht*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}ma.prototype._getCacheKey=function(e,t){return nht(e.longitude,e.latitude,this._rectangle,t)};ma.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};ma.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};ma.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};ma.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(ma.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Va.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});ma.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};ma.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};ma.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};ma.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};ma.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};ma.prototype.freeResources=function(){this.clearPositionCache(),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),Hz(this._southwestChild),this._southwestChild=void 0,Hz(this._southeastChild),this._southeastChild=void 0,Hz(this._northwestChild),this._northwestChild=void 0,Hz(this._northeastChild),this._northeastChild=void 0};function Hz(e){l(e)&&e.freeResources()}var Wz=ma;function jz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}jz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};jz.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),wCe(this,t)),t=i}};function wCe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}jz.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&wCe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var Yz=jz;function pd(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new Yz,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new Vz({ellipsoid:n}),this._tileLoadProgressEvent=new _e,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(pd.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});pd.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function iht(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,DCe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}pd.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==Va.START&&e(t),t=t.replacementNext};pd.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};pd.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};pd.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function DCe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}pd.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(iht(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),DCe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};pd.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),aht(this,e),ght(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function oht(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=_e.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}pd.prototype.endFrame=function(e){!e.passes.render||e.mode===ie.MORPHING||(hht(this,e),pht(this,e),oht(this,e))};pd.prototype.isDestroyed=function(){return!1};pd.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var sP,BCe=new Ae;function rht(e,t){let n=ae.center(e.rectangle,BCe),i=n.longitude-sP.longitude,o=n.latitude-sP.latitude;n=ae.center(t.rectangle,BCe);let r=n.longitude-sP.longitude,s=n.latitude-sP.latitude;return i*i+o*o-(r*r+s*s)}var sht=new d,rP=[];function aht(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let _=r.tilingScheme;if(l(_)){let y=r.tilingScheme;e._levelZeroTiles=Wz.createLevelZeroTiles(y);let C=e._levelZeroTiles.length;if(rP.length<C)for(rP=new Array(C),o=0;o<C;++o)rP[o]===void 0&&(rP[o]=new aP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;sP=t.camera.positionCartographic,a.sort(rht);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,A;if(u.length>0||f.length>0){for(o=0,A=a.length;o<A;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=R.getTranslation(g.transform,sht);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,A=a.length;o<A;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?cc(e,s,r,t,c,!1,rP[o]):(Yp(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Yp(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function aP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function vCe(){this.southwest=new aP,this.southeast=new aP,this.northwest=new aP,this.northeast=new aP}vCe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var gX=new Array(31);for(let e=0;e<gX.length;++e)gX[e]=new vCe;function cht(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=fht(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,A=n._lastSelectionResultFrame===h?n._lastSelectionResult:ai.NONE,g=e.tileProvider;if(s||i){let m=ai.originalResult(A)===ai.RENDERED,_=ai.originalResult(A)===ai.CULLED||A===ai.NONE,y=n.state===Va.DONE,C=m||_||y;if(C||l(g.canRenderWithoutLosingDetail)&&(C=g.canRenderWithoutLosingDetail(n)),C){s&&Yp(e,e._tileLoadQueueMedium,n,t),qz(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Yp(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){qz(e,n),Yp(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.REFINED;let _=e._tilesToRender.length,y=e._tileLoadQueueLow.length,C=e._tileLoadQueueMedium.length,E=e._tileLoadQueueHigh.length,I=e._tileToUpdateHeights.length;if(lht(e,a,c,u,f,t,i,o),_!==e._tilesToRender.length){let b=o.allAreRenderable,S=o.anyWereRenderedLastFrame,B=o.notYetRenderableCount,v=!1;if(!b&&!S){let P=e._tilesToRender;for(let L=_;L<P.length;++L){let p=P[L];for(;p!==void 0&&p._lastSelectionResult!==ai.KICKED&&p!==n;)p._lastSelectionResult=ai.kick(p._lastSelectionResult),p=p.parent}e._tilesToRender.length=_,e._tileToUpdateHeights.length=I,qz(e,n),n._lastSelectionResult=ai.RENDERED;let N=A===ai.RENDERED;!N&&B>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=y,e._tileLoadQueueMedium.length=C,e._tileLoadQueueHigh.length=E,Yp(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,v=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=N,N||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!v&&Yp(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,qz(e,n),Yp(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function lht(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=gX[t.level],A=h.southwest,g=h.southeast,m=h.northwest,_=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(cc(e,t,u,r,f,s,A),cc(e,n,u,r,f,s,g),cc(e,i,u,r,f,s,m),cc(e,o,u,r,f,s,_)):(cc(e,i,u,r,f,s,m),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m)):(cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m),cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A)),h.combine(a)}function uht(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function cc(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Gr.NONE)return cht(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,uht(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Yp(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:ai.NONE;c!==ai.CULLED_BUT_NEEDED&&c!==ai.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=ai.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Yp(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=ai.CULLED):t._lastSelectionResult=ai.CULLED;t._lastSelectionResultFrame=i.frameNumber}function fht(e,t,n){if(t.mode===ie.SCENE2D||t.camera.frustum instanceof An||t.camera.frustum instanceof ls)return dht(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=D.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function dht(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ie.SCENE2D&&(h-=D.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function qz(e,t){e._tilesToRender.push(t)}function hht(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Oi()+e._loadQueueTimeSlice,s=e._tileProvider,a=pX(e,t,s,r,n,!1);a=pX(e,t,s,r,i,a),pX(e,t,s,r,o,a)}function mht(e,t){return e._loadPriority-t._loadPriority}function pX(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(mht);for(let s=0,a=o.length;s<a&&(Oi()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var OT=new In,Kz=new Ae,vy=new d,Aht=[];function pht(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=Aht;n.length=0;let i=e._tileToUpdateHeights,o=Oi(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let _=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:ai.NONE;(_===ai.RENDERED||_===ai.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let A=h.customData,g=A.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let _=A[f],y=h.data.terrainData,C=l(y)&&y.wasCreatedByUpsampling();if(h.level>_.level&&!C){let E,I=h.getPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError);if(l(I))E=I;else{if(l(_.positionOnEllipsoidSurface)||(_.positionOnEllipsoidSurface=d.fromRadians(_.positionCartographic.longitude,_.positionCartographic.latitude,0,u)),a===ie.SCENE3D){let b=u.geodeticSurfaceNormal(_.positionOnEllipsoidSurface,OT.direction),S=u.getSurfaceNormalIntersectionWithZAxis(_.positionOnEllipsoidSurface,11500,OT.origin);if(!l(S)){let B=0;l(h.data.tileBoundingRegion)&&(B=h.data.tileBoundingRegion.minimumHeight);let v=Math.min(B,-11500),P=d.multiplyByScalar(b,Math.abs(v)+1,vy);d.subtract(_.positionOnEllipsoidSurface,P,OT.origin)}}else Ae.clone(_.positionCartographic,Kz),Kz.height=-11500,c.project(Kz,vy),d.fromElements(vy.z,vy.x,vy.y,vy),d.clone(vy,OT.origin),d.clone(d.UNIT_X,OT.direction);E=h.data.pick(OT,a,c,!1,vy),l(E)&&h.setPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError,E)}if(l(E)){if(l(_.callback)){let b=u.cartesianToCartographic(E,Kz);_.callback(b)}_.level=h.level}}if(Oi()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function ght(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var Xz=pd;function Mh(e){e=e??te.default;let t=new jp({ellipsoid:e}),n=new hb;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new vz,this._material=void 0,this._surface=new Xz({tileProvider:new Gz({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new _e,this._undergroundColor=G.clone(G.BLACK),this._undergroundColorAlphaByDistance=new Yt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new zz,yX(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new we({url:fn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=te.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=D.PI*e.minimumRadius,this.nightFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*D.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Dn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(Mh.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&yX(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,yX(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=G.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=Yt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function yX(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[bm,eP];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(Az),e._surfaceShaderSet.baseVertexShaderSource=new We({sources:[bm,eP,pz],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new We({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function _ht(e){return function(t,n){let i=le.distanceSquaredTo(t.pickBoundingSphere,e),o=le.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var yht=[],Cht={start:0,stop:0};Mh.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=yht;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let A=u.data;if(!l(A))continue;let g=A.pickBoundingSphere;if(o!==ie.SCENE3D)A.pickBoundingSphere=g=le.fromRectangleWithHeights2D(u.rectangle,r,A.tileBoundingRegion.minimumHeight,A.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(A.renderedMesh))le.clone(A.tileBoundingRegion.boundingSphere,g);else continue;let m=Ai.raySphere(e,g,Cht);l(m)&&s.push(A)}s.sort(_ht(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var Eht=new Ae;Mh.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ie.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,Eht);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var Iht=new d,PCe=new d,xht=new Ae,bht=new In;function _X(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}Mh.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=_X(n._southwestChild,e)||_X(n._southeastChild,e)||_X(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,Iht),u=bht,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(g??0,-11500),_=d.multiplyByScalar(f,Math.abs(m)+1,PCe);d.subtract(c,_,u.origin)}let A=n.data.pick(u,void 0,s,!1,PCe);if(l(A))return a.cartesianToCartographic(A,xht).height};Mh.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};Mh.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Nt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ie.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};Mh.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};Mh.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};Mh.prototype.isDestroyed=function(){return!1};Mh.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var Jz=Mh;function Tht(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var Zz=Tht;var WCe={},Sht=32.184,wht=2451545,RCe=-.0529921,MCe=-.1059842,NCe=13.0120009,LCe=13.3407154,OCe=.9856003,FCe=26.4057084,QCe=13.064993,kCe=.3287146,UCe=1.7484877,GCe=-.1589763,zCe=.0036096,VCe=.1643573,HCe=12.9590088,CX=new K;WCe.ComputeMoon=function(e,t){l(e)||(e=K.now()),CX=K.addSeconds(e,Sht,CX);let n=K.totalDays(CX)-wht,i=n/ri.DAYS_PER_JULIAN_CENTURY,o=(125.045+RCe*n)*D.RADIANS_PER_DEGREE,r=(250.089+MCe*n)*D.RADIANS_PER_DEGREE,s=(260.008+NCe*n)*D.RADIANS_PER_DEGREE,a=(176.625+LCe*n)*D.RADIANS_PER_DEGREE,c=(357.529+OCe*n)*D.RADIANS_PER_DEGREE,u=(311.589+FCe*n)*D.RADIANS_PER_DEGREE,f=(134.963+QCe*n)*D.RADIANS_PER_DEGREE,h=(276.617+kCe*n)*D.RADIANS_PER_DEGREE,A=(34.226+UCe*n)*D.RADIANS_PER_DEGREE,g=(15.134+GCe*n)*D.RADIANS_PER_DEGREE,m=(119.743+zCe*n)*D.RADIANS_PER_DEGREE,_=(239.961+VCe*n)*D.RADIANS_PER_DEGREE,y=(25.053+HCe*n)*D.RADIANS_PER_DEGREE,C=Math.sin(o),E=Math.sin(r),I=Math.sin(s),b=Math.sin(a),S=Math.sin(c),B=Math.sin(u),v=Math.sin(f),P=Math.sin(h),N=Math.sin(A),L=Math.sin(g),p=Math.sin(m),x=Math.sin(_),T=Math.sin(y),w=Math.cos(o),M=Math.cos(r),O=Math.cos(s),U=Math.cos(a),Q=Math.cos(c),z=Math.cos(u),F=Math.cos(f),H=Math.cos(h),W=Math.cos(A),Z=Math.cos(g),Y=Math.cos(m),$=Math.cos(_),X=Math.cos(y),he=(269.9949+.0031*i-3.8787*C-.1204*E+.07*I-.0172*b+.0072*B-.0052*L+.0043*T)*D.RADIANS_PER_DEGREE,ge=(66.5392+.013*i+1.5419*w+.0239*M-.0278*O+.0068*U-.0029*z+9e-4*F+8e-4*Z-9e-4*X)*D.RADIANS_PER_DEGREE,fe=(38.3213+13.17635815*n-14e-13*n*n+3.561*C+.1208*E-.0642*I+.0158*b+.0252*S-.0066*B-.0047*v-.0046*P+.0028*N+.0052*L+.004*p+.0019*x-.0044*T)*D.RADIANS_PER_DEGREE,ye=(13.17635815-14e-13*(2*n)+3.561*w*RCe+.1208*M*MCe-.0642*O*NCe+.0158*U*LCe+.0252*Q*OCe-.0066*z*FCe-.0047*F*QCe-.0046*H*kCe+.0028*W*UCe+.0052*Z*GCe+.004*Y*zCe+.0019*$*VCe-.0044*X*HCe)/86400*D.RADIANS_PER_DEGREE;return l(t)||(t=new Zz),t.rightAscension=he,t.declination=ge,t.rotation=fe,t.rotationRate=ye,t};var $z=WCe;function jCe(e){(!l(e)||typeof e!="function")&&(e=$z.ComputeMoon),this._computeFunction=e}var Bht=new d,Dht=new d,vht=new d;function Pht(e,t,n){let i=Bht;i.x=Math.cos(e+D.PI_OVER_TWO),i.y=Math.sin(e+D.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=vht;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,Dht);return l(n)||(n=new J),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var Rht=new J,Mht=new Le;jCe.prototype.evaluate=function(e,t){l(e)||(e=K.now());let n=this._computeFunction(e),i=Pht(n.rightAscension,n.declination,t),o=D.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,Mht),s=J.fromQuaternion(Le.conjugate(r,r),Rht);return J.multiply(s,i,i)};var eV=jCe;var EX={position:0};function tV(e){e=e??V.EMPTY_OBJECT,this.center=d.clone(e.center??d.ZERO),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new le,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this._computedModelMatrix=new R,this.show=e.show??!0,this.material=e.material??ao.fromType(ao.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new nt({owner:e._owner??this}),this._pickCommand=new nt({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function Nht(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY}));return t=li.fromGeometry({context:e,geometry:n,attributeLocations:EX,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}tV.prototype.update=function(e){if(!this.show||e.mode!==ie.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?pn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=Nht(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let _=this._oneOverEllipsoidRadiiSquared;_.x=1/(r.x*r.x),_.y=1/(r.y*r.y),_.z=1/(r.z*r.z),o=!0}(!R.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(R.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),R.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),le.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,A;(s||a||i||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv]}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=wt(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(f)),m.pick){let _=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv],pickColorQualifier:"uniform"}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._pickSP=ln.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),_.vertexArray=this._va,_.renderState=this._rs,_.shaderProgram=this._pickSP,_.uniformMap=wt(wt(this._uniforms,this._pickUniforms),this.material._uniforms),_.executeInClosestFrustum=n),_.boundingVolume=this._boundingSphere,_.modelMatrix=this._computedModelMatrix,_.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(_)}};tV.prototype.isDestroyed=function(){return!1};tV.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var nV=tV;function cP(e){e=e??V.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=fn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??te.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new nV({radii:this.ellipsoid.radii,material:ao.fromType(ao.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new eV}Object.defineProperties(cP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var iV=new J,Lht=new J,Oht=new d,oV=[];cP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(kt.computeIcrfToFixedMatrix(n,iV))||kt.computeTemeToPseudoFixedMatrix(n,iV);let i=this._axes.evaluate(n,Lht);J.transpose(i,i),J.multiply(iV,i,i);let o=$E.computeMoonPositionInEarthInertialFrame(n,Oht);J.multiplyByVector(iV,o,o),R.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=oV,oV.length=0,t.update(e),e.commandList=r,oV.length===1?oV[0]:void 0};cP.prototype.isDestroyed=function(){return!1};cP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var rV=cP;var IX=[],xX=[];function Fht(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=IX,u=xX,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let A=i;A<=r;++A){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[A]=g,++f):h<a&&(e[A]=m,++h)}}function bX(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);bX(e,t,n,i,r),bX(e,t,n,r+1,o),Fht(e,t,n,i,r,o)}function Qht(e,t,n){let i=e.length,o=Math.ceil(i*.5);IX.length=o,xX.length=o,bX(e,t,n,0,i-1),IX.length=0,xX.length=0}var qp=Qht;function kc(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var sV=new d;Object.defineProperties(kc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,sV),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,sV);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,sV),sV)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});kc.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new kc(e,t)};var qCe=new d;kc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,qCe),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var kht=new d;kc.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,kht),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,qCe),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Uht=new d;kc.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Gr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Uht),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Gr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Gr.FULL:Gr.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Gr.PARTIAL:Gr.FULL))}}return Gr.NONE};var aV=new d;kc.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,aV),aV),c=-d.dot(a,o),u=kc._anyRotationVector(o,a,c),f=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let A=r/f;return d.add(o,d.multiplyByScalar(a,A,aV),aV)};var Ght=[];kc.computeOccludeePointFromRectangle=function(e,t){t=t??te.default;let n=ae.subsample(e,t,0,Ght),i=le.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return kc.computeOccludeePoint(new le(o,t.minimumRadius),i.center,n)};var zht=new d;kc._anyRotationVector=function(e,t,n){let i=d.abs(t,zht),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var Vht=new d;kc._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,Vht);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>D.EPSILON13)return d.normalize(s,new d)}return o};var TX=new d,Hht=new d,cV=new d,YCe=new d;kc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,TX),s=d.clone(e.center,Hht),a=e.radius,c=d.subtract(s,r,cV),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,A=Math.sqrt(h),m=1/Math.sqrt(u),y=A*m*A;c=d.normalize(c,c);let C=d.add(r,d.multiplyByScalar(c,y,YCe),YCe),E=Math.sqrt(h-y*y),I=this._rotationVector(s,t,n,r,i),b=d.fromElements(I.x*I.x*c.x+(I.x*I.y-I.z)*c.y+(I.x*I.z+I.y)*c.z,(I.x*I.y+I.z)*c.x+I.y*I.y*c.y+(I.y*I.z-I.x)*c.z,(I.x*I.z-I.y)*c.x+(I.y*I.z+I.x)*c.y+I.z*I.z*c.z,TX);b=d.normalize(b,b);let S=d.multiplyByScalar(b,E,TX);I=d.normalize(d.subtract(d.add(C,S,cV),s,cV),cV);let B=d.dot(t,I);I=d.normalize(d.subtract(d.subtract(C,S,I),s,I),I);let v=d.dot(t,I);return B<v?B:v};var lV=kc;function dA(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._perspectiveMatrix=new R,this._infinitePerspective=new R}function SX(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=R.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=R.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(dA.prototype,{projectionMatrix:{get:function(){return SX(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return SX(this),this._infinitePerspective}}});var Wht=new d,jht=new d,Yht=new d,qht=new d;dA.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Wht),h=jht;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=Yht;d.multiplyByScalar(t,u,A),d.add(e,A,A);let g=qht;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new se),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,A),this._cullingVolume};dA.prototype.getPixelDimensions=function(e,t,n,i,o){SX(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};dA.prototype.clone=function(e){return l(e)||(e=new dA),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};dA.prototype.equals=function(e){return l(e)&&e instanceof dA&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};dA.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof dA&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var fu=dA;function du(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new fu,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}du.packedLength=6;du.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};du.unpack=function(e,t,n){return t=t??0,l(n)||(n=new du),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function Nh(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(du.prototype,{projectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return Nh(this),this._fovy}},sseDenominator:{get:function(){return Nh(this),this._sseDenominator}},offCenterFrustum:{get:function(){return Nh(this),this._offCenterFrustum}}});du.prototype.computeCullingVolume=function(e,t,n){return Nh(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};du.prototype.getPixelDimensions=function(e,t,n,i,o){return Nh(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};du.prototype.clone=function(e){return l(e)||(e=new du),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};du.prototype.equals=function(e){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};du.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),D.equalsEpsilon(this.fov,e.fov,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Vi=du;function lP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(lP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function Kht(e,t,n){let i=t.createViewportQuadCommand(rz,{framebuffer:n,renderState:Ue.fromCache({viewport:new Xe(0,0,256,256)})});e._drawCommand=i}lP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Nt({context:t,width:256,height:256,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST});this._colorTexture=n;let i=new as({context:t,colorTextures:[n],destroyAttachments:!1});Kht(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};lP.prototype.isDestroyed=function(){return!1};lP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var uV=lP;var ZCe={};function Xht(e,t,n){let i,o,r;if(e instanceof Vi){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof fu)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Jht=new d,KCe=new d;function $Ce(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let A=(f-o)/a;return D.lerp(e,-D.PI_OVER_TWO,A)}let h=(f-r)/c;return D.lerp(-D.PI_OVER_TWO,t,1-h)}}return function(o){return D.lerp(e,t,o)}}function BX(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,A=d.subtract(a,c,Jht),g=d.magnitude(d.multiplyByScalar(u,d.dot(A,u),KCe)),m=d.magnitude(d.multiplyByScalar(f,d.dot(A,f),KCe));r=Math.min(Xht(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let A=h*(f-u)+u;return-Math.pow(A,8)/1e6+r}}return function(a){return D.lerp(n,i,a)}}function uP(e,t){return D.equalsEpsilon(e,D.TWO_PI,D.EPSILON11)&&(e=0),t>e+Math.PI?e+=D.TWO_PI:t<e-Math.PI&&(e-=D.TWO_PI),e}var eEe=new d;function Zht(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,eEe),f=c.pitch,h=uP(c.heading,i),A=uP(c.roll,r),g=BX(c,n,u.z,n.z,s),m=$Ce(f,o,g,a);function _(y){let C=y.time/t;c.setView({orientation:{heading:D.lerp(h,i,C),pitch:m(C),roll:D.lerp(A,r,C)}}),k.lerp(u,n,C,c.position),c.position.z=g(C)}return _}function $ht(e,t){e.longitude<t.longitude?e.longitude+=D.TWO_PI:t.longitude+=D.TWO_PI}function emt(e,t){let n=e.longitude-t.longitude;n<-D.PI?e.longitude+=D.TWO_PI:n>D.PI&&(t.longitude+=D.TWO_PI)}var tmt=new Ae,nmt=new Ae;function imt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,A=e.mapProjection.ellipsoid,g=Ae.clone(f.positionCartographic,tmt),m=f.pitch,_=uP(f.heading,i),y=uP(f.roll,r),C=A.cartesianToCartographic(n,nmt);g.longitude=D.zeroToTwoPi(g.longitude),C.longitude=D.zeroToTwoPi(C.longitude);let E=!1;if(l(a)){let B=D.zeroToTwoPi(a),v=Math.min(g.longitude,C.longitude),P=Math.max(g.longitude,C.longitude),N=B>=v&&B<=P;if(l(c)){let L=Math.abs(g.longitude-C.longitude),p=D.TWO_PI-L;(N?L:p)<(N?p:L)*c&&!N&&(E=!0)}else N||(E=!0)}E?$ht(g,C):emt(g,C);let I=BX(f,n,g.height,C.height,s),b=$Ce(m,o,I,u);function S(){let B=g.longitude,v=C.longitude,P=g.latitude,N=C.latitude;return function(p){let x=p.time/t,T=d.fromRadians(D.lerp(B,v,x),D.lerp(P,N,x),I(x),A);f.setView({destination:T,orientation:{heading:D.lerp(_,i,x),pitch:b(x),roll:D.lerp(y,r,x)}})}}return S()}function omt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,eEe),u=uP(a.heading,i),f=a.frustum.right-a.frustum.left,h=BX(a,n,f,n.z,s);function A(g){let m=g.time/t;a.setView({orientation:{heading:D.lerp(u,i,m)}}),k.lerp(c,n,m,a.position);let _=h(m),y=a.frustum,C=y.top/y.right,E=(_-(y.right-y.left))*.5;y.right+=E,y.left-=E,y.top=C*y.right,y.bottom=-y.top}return A}var XCe=new Ae,rmt=new d;function wX(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function JCe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}ZCe.createTween=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===ie.MORPHING)return wX();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ie.SCENE3D&&(s.cartesianToCartographic(n,XCe),n=r.project(XCe,rmt));let A=e.camera,g=t.endTransform;l(g)&&A._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(A.position,n)/1e6)+2,m=Math.min(m,3));let _=t.heading??0,y=t.pitch??-D.PI_OVER_TWO,C=t.roll??0,E=e.screenSpaceCameraController;E.enableInputs=!1;let I=JCe(E,t.complete),b=JCe(E,t.cancel),S=A.frustum,B=e.mode===ie.SCENE2D;if(B=B&&k.equalsEpsilon(A.position,n,D.EPSILON6),B=B&&D.equalsEpsilon(Math.max(S.right-S.left,S.top-S.bottom),n.z,D.EPSILON6),B=B||e.mode!==ie.SCENE2D&&d.equalsEpsilon(n,A.position,D.EPSILON10),B=B&&D.equalsEpsilon(D.negativePiToPi(_),D.negativePiToPi(A.heading),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(y),D.negativePiToPi(A.pitch),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(C),D.negativePiToPi(A.roll),D.EPSILON10),B)return wX(I,b);let v=new Array(4);if(v[ie.SCENE2D]=omt,v[ie.SCENE3D]=imt,v[ie.COLUMBUS_VIEW]=Zht,m<=0)return wX(function(){v[i](e,1,n,_,y,C,a,c,u,f)({time:1}),typeof I=="function"&&I()},b);let P=v[i](e,m,n,_,y,C,a,c,u,f);if(!l(h)){let N=A.positionCartographic.height,L=i===ie.SCENE3D?s.cartesianToCartographic(n).height:n.z;N>L&&N>11500?h=ps.CUBIC_OUT:h=ps.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:P,complete:I,cancel:b}};var fV=ZCe;var smt={ROTATE:0,INFINITE_SCROLL:1},$u=Object.freeze(smt);function an(e){this._scene=e,this._transform=R.clone(R.IDENTITY),this._invTransform=R.clone(R.IDENTITY),this._actualTransform=R.clone(R.IDENTITY),this._actualInvTransform=R.clone(R.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new Ae,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new _e,this._moveEnd=new _e,this._changed=new _e,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new R,this._invViewMatrix=new R,cEe(this),this._mode=ie.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._max2Dfrustum=void 0,CEe(this,an.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*an.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}an.TRANSFORM_2D=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);an.TRANSFORM_2D_INVERSE=R.inverseTransformation(an.TRANSFORM_2D,new R);an.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);an.DEFAULT_VIEW_FACTOR=.5;an.DEFAULT_OFFSET=new Eh(0,-D.PI_OVER_FOUR,0);function cEe(e){R.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),R.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),R.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function amt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Oi()):e.timeSinceMoved=Math.max(Oi()-e._lastMovedTimestamp,0)/1e3}}an.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ie.SCENE2D};an.prototype._updateCameraChanged=function(){let e=this;if(amt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%D.TWO_PI;i=i>D.PI?D.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%D.TWO_PI;s=s>D.PI?D.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ie.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let A=e.position,g=e._changedPosition,m=e.frustum,_=e._changedFrustum,y=A.x+m.left,C=A.x+m.right,E=g.x+_.left,I=g.x+_.right,b=A.y+m.bottom,S=A.y+m.top,B=g.y+_.bottom,v=g.y+_.top,P=Math.max(y,E),N=Math.min(C,I),L=Math.max(b,B),p=Math.min(S,v),x;if(P>=N||L>=S)x=1;else{let T=_;y<E&&C>I&&b<B&&S>v&&(T=m),x=1-(N-P)*(p-L)/((T.right-T.left)*(T.top-T.bottom))}x>t&&(e._changed.raiseEvent(x),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=D.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function cmt(e){kt.basisTo2D(e._projection,e._transform,e._actualTransform)}var lmt=new Ae,umt=new d,dV=new d,fmt=new se,dmt=new se,hmt=new se,mmt=new se,Amt=new se;function pmt(e){let t=e._projection,n=t.ellipsoid,i=R.getColumn(e._transform,3,fmt),o=n.cartesianToCartographic(i,lmt),r=t.project(o,umt),s=dmt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=se.clone(se.UNIT_X,Amt),c=se.add(R.getColumn(e._transform,0,dV),i,dV);n.cartesianToCartographic(c,o),t.project(o,r);let u=hmt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=mmt;if(d.magnitudeSquared(u)>D.EPSILON10)d.cross(a,u,f);else{let h=se.add(R.getColumn(e._transform,1,dV),i,dV);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<D.EPSILON10&&(se.clone(se.UNIT_Y,u),se.clone(se.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),R.setColumn(e._actualTransform,0,u,e._actualTransform),R.setColumn(e._actualTransform,1,f,e._actualTransform),R.setColumn(e._actualTransform,2,a,e._actualTransform),R.setColumn(e._actualTransform,3,s,e._actualTransform)}var DX=new d;function Gc(e){let t=e._mode,n=!1,i=0;t===ie.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let A=e._transformChanged||e._modeChanged;e._transformChanged=!1,A&&(R.inverseTransformation(e._transform,e._invTransform),e._mode===ie.COLUMBUS_VIEW||e._mode===ie.SCENE2D?R.equals(R.IDENTITY,e._transform)?R.clone(an.TRANSFORM_2D,e._actualTransform):e._mode===ie.COLUMBUS_VIEW?cmt(e):pmt(e):R.clone(e._transform,e._actualTransform),R.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||A)if(e._positionWC=R.multiplyByPoint(g,o,e._positionWC),t===ie.SCENE3D||t===ie.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=DX;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ie.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,DX));if(Math.abs(1-m)>D.EPSILON2){let _=1/d.magnitudeSquared(c),y=d.dot(c,s)*_,C=d.multiplyByScalar(s,y,DX);c=d.normalize(d.subtract(c,C,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||A)&&(e._directionWC=R.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||A)&&(e._upWC=R.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||A)&&(e._rightWC=R.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||A)&&cEe(e)}function lEe(e,t){let n;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)?n=Math.atan2(t.y,t.x)-D.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-D.PI_OVER_TWO,D.TWO_PI-D.zeroToTwoPi(n)}function uEe(e){return D.PI_OVER_TWO-D.acosClamped(e.z)}function fEe(e,t,n){let i=0;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=D.zeroToTwoPi(i+D.TWO_PI)),i}var AV=new R,pV=new R;Object.defineProperties(an.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return Gc(this),this._invTransform}},viewMatrix:{get:function(){return Gc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return Gc(this),this._invViewMatrix}},positionCartographic:{get:function(){return Gc(this),this._positionCartographic}},positionWC:{get:function(){return Gc(this),this._positionWC}},directionWC:{get:function(){return Gc(this),this._directionWC}},upWC:{get:function(){return Gc(this),this._upWC}},rightWC:{get:function(){return Gc(this),this._rightWC}},heading:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=lEe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=uEe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=fEe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});an.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ie.MORPHING,t=this._mode===ie.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ie.SCENE2D&&AEe(this,this.position)};var gmt=new d,_mt=new d,ymt=new d;an.prototype._setTransform=function(e){let t=d.clone(this.positionWC,gmt),n=d.clone(this.upWC,_mt),i=d.clone(this.directionWC,ymt);R.clone(e,this._transform),this._transformChanged=!0,Gc(this);let o=this._actualInvTransform;R.multiplyByPoint(o,t,this.position),R.multiplyByPointAsVector(o,i,this.direction),R.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),Gc(this)};var Cmt=new k,Emt=new In,Imt=new d,xmt=new d;function dEe(e){if(!R.equals(R.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=Cmt;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,Emt);o=n.pickWorldCoordinates(a,t,!0,Imt)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,xmt));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}an.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof An&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=dEe(this)))};var gV=new d,NX=new R,bmt=new R,LX=new Le,OX=new J,hEe=new Ae;function Tmt(e,t,n){let i=R.clone(e.transform,NX),o=kt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,bmt);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function Smt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,hEe);t=a.project(c,gV)}d.clone(t,e.position)}n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function wmt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,hEe);t=c.project(u,gV)}k.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===$u.ROTATE){n.heading=n.heading-D.PI_OVER_TWO,n.pitch=-D.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var Bmt=new d,Dmt=new d,vmt=new d;function mEe(e,t,n,i){let o=d.clone(n.direction,Bmt),r=d.clone(n.up,Dmt);if(e._scene.mode===ie.SCENE3D){let a=e._projection.ellipsoid,c=kt.eastNorthUpToFixedFrame(t,a,AV),u=R.inverseTransformation(c,pV);R.multiplyByPointAsVector(u,o,o),R.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,vmt);return i.heading=lEe(o,r),i.pitch=uEe(o),i.roll=fEe(o,r,s),i}var MX={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},FT=new pc;an.prototype.setView=function(e){e=e??V.EMPTY_OBJECT;let t=e.orientation??V.EMPTY_OBJECT,n=this._mode;if(n===ie.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??d.clone(this.positionWC,gV);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,gV),i=!1),l(t.direction)&&(t=mEe(this,o,t,MX.orientation)),FT.heading=t.heading??0,FT.pitch=t.pitch??-D.PI_OVER_TWO,FT.roll=t.roll??0,n===ie.SCENE3D?Tmt(this,o,FT):n===ie.SCENE2D?wmt(this,o,FT,i):Smt(this,o,FT,i)};var Pmt=new d;an.prototype.flyHome=function(e){let t=this._mode;if(t===ie.MORPHING&&this._scene.completeMorph(),t===ie.SCENE2D)this.flyTo({destination:an.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:R.IDENTITY});else if(t===ie.SCENE3D){let n=this.getRectangleCameraCoordinates(an.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*an.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:R.IDENTITY})}else if(t===ie.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,Pmt).z),roll:0},endTransform:R.IDENTITY,convert:!1})}};an.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualInvTransform,e,t)};an.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualTransform,e,t)};function AEe(e,t){let n=e._scene.mapMode2D===$u.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var tEe=new d;an.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,tEe),d.add(n,tEe,n),this._mode===ie.SCENE2D&&AEe(this,n),this._adjustOrthographicFrustum(!0)};an.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,e):this.move(this.direction,e)};an.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,-e):this.move(this.direction,-e)};an.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};an.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};an.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};an.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};an.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,-e)};an.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,e)};an.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,-e)};an.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,e)};var Rmt=new Le,Mmt=new J;an.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Le.fromAxisAngle(e,-n,Rmt),o=J.fromQuaternion(i,Mmt),r=this.direction,s=this.up,a=this.right;J.multiplyByVector(o,r,r),J.multiplyByVector(o,s,s),J.multiplyByVector(o,a,a)};an.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};an.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var Nmt=new Le,Lmt=new J;an.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Le.fromAxisAngle(e,-n,Nmt),o=J.fromQuaternion(i,Lmt);J.multiplyByVector(o,this.position,this.position),J.multiplyByVector(o,this.direction,this.direction),J.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};an.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,pEe(this,e)};an.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,pEe(this,-e)};var Omt=new d,Fmt=new d,Qmt=new d,nEe=new d;function pEe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,D.EPSILON2)){let i=d.normalize(n,Omt),o=d.equalsEpsilon(i,e.constrainedAxis,D.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,nEe),D.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,Fmt),a=d.dot(i,s),c=D.acosClamped(a);t>0&&t>c&&(t=c-D.EPSILON4),a=d.dot(i,d.negate(s,nEe)),c=D.acosClamped(a),t<0&&-t>c&&(t=-c+D.EPSILON4);let u=d.cross(s,i,Qmt);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}an.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,gEe(this,-e)};an.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,gEe(this,e)};function gEe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function _V(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function _Ee(e,t){e.move(e.direction,t)}an.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,e):_Ee(this,e)};an.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,-e):_Ee(this,-e)};an.prototype.getMagnitude=function(){if(this._mode===ie.SCENE3D)return d.magnitude(this.position);if(this._mode===ie.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ie.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var kmt=new R;an.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??te.default,o=kt.eastNorthUpToFixedFrame(e,i,kmt);this.lookAtTransform(o,t)};var Umt=new d,Gmt=new Le,zmt=new Le,Vmt=new J;function yEe(e,t,n){t=D.clamp(t,-D.PI_OVER_TWO,D.PI_OVER_TWO),e=D.zeroToTwoPi(e)-D.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,Gmt),o=Le.fromAxisAngle(d.UNIT_Z,-e,zmt),r=Le.multiply(o,i,o),s=J.fromQuaternion(r,Vmt),a=d.clone(d.UNIT_X,Umt);return J.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}an.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=yEe(t.heading,t.pitch,t.range):n=t,this._mode===ie.SCENE2D){k.clone(k.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<D.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(R.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<D.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var fP=new Ae,Hmt=new Ae,Wmt=new d,jmt=new d,Ymt=new d,qmt=new d,Kmt=new d,Xmt=new d,Jmt=new d,vX=new d,Zmt={direction:new d,right:new d,up:new d},iEe;function Uc(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function CEe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:Zmt,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=D.TWO_PI);let f=(c+u)*.5,h;if(a<-D.PI_OVER_TWO+D.RADIANS_PER_DEGREE&&s>D.PI_OVER_TWO-D.RADIANS_PER_DEGREE)h=0;else{let N=fP;N.longitude=f,N.latitude=s,N.height=0;let L=Hmt;L.longitude=f,L.latitude=a,L.height=0;let p=iEe;(!l(p)||p.ellipsoid!==o)&&(iEe=p=new Sg(void 0,void 0,o)),p.setEndPoints(N,L),h=p.interpolateUsingFraction(.5,fP).latitude}let A=fP;A.longitude=f,A.latitude=h,A.height=0;let g=o.cartographicToCartesian(A,Jmt),m=fP;m.longitude=u,m.latitude=s;let _=o.cartographicToCartesian(m,Wmt);m.longitude=c;let y=o.cartographicToCartesian(m,Ymt);m.longitude=f;let C=o.cartographicToCartesian(m,Kmt);m.latitude=a;let E=o.cartographicToCartesian(m,Xmt);m.longitude=u;let I=o.cartographicToCartesian(m,qmt);m.longitude=c;let b=o.cartographicToCartesian(m,jmt);d.subtract(y,g,y),d.subtract(I,g,I),d.subtract(_,g,_),d.subtract(b,g,b),d.subtract(C,g,C),d.subtract(E,g,E);let S=o.geodeticSurfaceNormal(g,r.direction);d.negate(S,S);let B=d.cross(S,d.UNIT_Z,r.right);d.normalize(B,B);let v=d.cross(B,S,r.up),P;if(e.frustum instanceof An){let N=Math.max(d.distance(_,y),d.distance(I,b)),L=Math.max(d.distance(_,I),d.distance(y,b)),p,x,T=e.frustum._offCenterFrustum,w=T.right/T.top,M=L*w;N>M?(p=N,x=p/w):(x=L,p=M),P=Math.max(p,x)}else{let N=Math.tan(e.frustum.fovy*.5),L=e.frustum.aspectRatio*N;if(P=Math.max(Uc(S,v,y,N),Uc(S,v,I,N),Uc(S,v,_,N),Uc(S,v,b,N),Uc(S,v,C,N),Uc(S,v,E,N),Uc(S,B,y,L),Uc(S,B,I,L),Uc(S,B,_,L),Uc(S,B,b,L),Uc(S,B,C,L),Uc(S,B,E,L)),a<0&&s>0){let p=fP;p.longitude=c,p.latitude=0,p.height=0;let x=o.cartographicToCartesian(p,vX);d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L)),p.longitude=u,x=o.cartographicToCartesian(p,vX),d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L))}}return d.add(g,d.multiplyByScalar(S,-P,vX),n)}var $mt=new Ae,eAt=new d,tAt=new d;function nAt(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=$mt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,eAt);R.multiplyByPoint(o,a,a),R.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,tAt);if(R.multiplyByPoint(o,c,c),R.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var iAt=new Ae,oAt=new d,rAt=new d;function sAt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===$u.INFINITE_SCROLL?o+=D.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=iAt;r.longitude=o,r.latitude=t.north;let s=i.project(r,oAt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,rAt),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,A=e.frustum.right/e.frustum.top,g=u*A;return c>g?(f=c,h=f/A):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}an.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ie.SCENE3D)return CEe(this,e,t);if(n===ie.COLUMBUS_VIEW)return nAt(this,e,t);if(n===ie.SCENE2D)return sAt(this,e,t)};var aAt=new In;function cAt(e,t,n,i){n=n??te.default;let o=e.getPickRay(t,aAt),r=Ai.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return In.getPoint(o,s,i)}var lAt=new In;function uAt(e,t,n,i){let r=e.getPickRay(t,lAt).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var fAt=new In;function dAt(e,t,n,i){let o=e.getPickRay(t,fAt),r=-o.origin.x/o.direction.x;In.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}an.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=t??te.default,this._mode===ie.SCENE3D)n=cAt(this,e,t,n);else if(this._mode===ie.SCENE2D)n=uAt(this,e,this._projection,n);else if(this._mode===ie.COLUMBUS_VIEW)n=dAt(this,e,this._projection,n);else return;return n}};var hAt=new d,mAt=new d,AAt=new d;function pAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let A=d.multiplyByScalar(e.directionWC,c,hAt);d.add(h,A,A);let g=d.multiplyByScalar(e.rightWC,u*c*a,mAt),m=d.multiplyByScalar(e.upWC,f*c*s,AAt),_=d.add(A,g,n.direction);return d.add(_,m,_),d.subtract(_,h,_),d.normalize(_,_),n}var hV=new d;function gAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.positionWC,f),d.multiplyByScalar(e.rightWC,c,hV),d.add(hV,f,f),d.multiplyByScalar(e.upWC,u,hV),d.add(hV,f,f),d.clone(e.directionWC,n.direction),n}an.prototype.getPickRay=function(e,t){l(t)||(t=new In);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?pAt(this,e,t):gAt(this,e,t)};var _At=new d,yAt=new d;an.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,_At),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),yAt);return Math.max(0,d.magnitude(n)-e.radius)};var CAt=new k;an.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,CAt);return Math.max(o.x,o.y)};function EAt(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:ps.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var IAt=new d,oEe=new d,xAt=new d,bAt=new d;function TAt(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,IAt),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,oEe),oEe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,xAt);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,bAt)),f=c*u,h=a*u,A=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-A,A),_=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-_||n.y>_){let y=s.y<-m||s.y>m,C=s.z<-_||s.z>_;if(y||C)return EAt(e,n,s,m,_,t)}}an.prototype.createCorrectPositionTween=function(e){if(this._mode===ie.COLUMBUS_VIEW)return TAt(this,e)};var SAt=new d,Aa={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};an.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};an.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=Aa.destination,e.orientation.heading=Aa.heading,e.orientation.pitch=Aa.pitch,e.orientation.roll=Aa.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};an.prototype.flyTo=function(e){e=e??V.EMPTY_OBJECT;let t=e.destination;if(this._mode===ie.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,SAt));let o=e.orientation??V.EMPTY_OBJECT;if(l(o.direction)&&(o=mEe(this,t,o,MX.orientation)),l(e.duration)&&e.duration<=0){let f=MX;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;Aa.destination=t,Aa.heading=o.heading,Aa.pitch=o.pitch,Aa.roll=o.roll,Aa.duration=e.duration,Aa.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},Aa.cancel=e.cancel,Aa.endTransform=e.endTransform,Aa.convert=i?!1:e.convert,Aa.maximumHeight=e.maximumHeight,Aa.pitchAdjustHeight=e.pitchAdjustHeight,Aa.flyOverLongitude=e.flyOverLongitude,Aa.flyOverLongitudeWeight=e.flyOverLongitudeWeight,Aa.easingFunction=e.easingFunction;let a=this._scene,c=fV.createTween(a,Aa);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ie.SCENE2D&&(l(u)||(u=an.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function wAt(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function BAt(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var DAt=100;function EEe(e,t,n){n=Eh.clone(l(n)?n:an.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=DAt:e.frustum instanceof An||e._mode===ie.SCENE2D?n.range=BAt(e,s):n.range=wAt(e,s),n.range=D.clamp(n.range,i,o)}return n}an.prototype.viewBoundingSphere=function(e,t){t=EEe(this,e,t),this.lookAt(e.center,t)};var vAt=new R,PAt=new d,RAt=new d,MAt=new d,NAt=new d,LAt=new se,OAt=new Le,FAt=new J;an.prototype.flyToBoundingSphere=function(e,t){t=t??V.EMPTY_OBJECT;let n=this._mode===ie.SCENE2D||this._mode===ie.COLUMBUS_VIEW;this._setTransform(R.IDENTITY);let i=EEe(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,PAt):o=yEe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??te.default,a=kt.eastNorthUpToFixedFrame(e.center,s,vAt);R.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,RAt),d.normalize(c,c),u=R.multiplyByPointAsVector(a,d.UNIT_Z,MAt),1-Math.abs(d.dot(c,u))<D.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,OAt),A=J.fromQuaternion(h,FAt);d.fromCartesian4(R.getColumn(a,1,LAt),u),J.multiplyByVector(A,u,u)}let f=d.cross(c,u,NAt);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var rEe=new d,sEe=new d,PX=new d,aEe=new d,dP=[new d,new d,new d,new d];function QAt(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,rEe),r=d.magnitude(o),s=d.normalize(o,sEe),a,c;d.equalsEpsilon(s,d.UNIT_Z,D.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,PX),PX),c=d.normalize(d.cross(s,a,aEe),aEe));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,rEe),h=u/r,A=d.multiplyByScalar(a,h,sEe),g=d.multiplyByScalar(c,h,PX),m=d.add(f,g,dP[0]);d.subtract(m,A,m),d.multiplyComponents(n,m,m);let _=d.subtract(f,g,dP[1]);d.subtract(_,A,_),d.multiplyComponents(n,_,_);let y=d.subtract(f,g,dP[2]);d.add(y,A,y),d.multiplyComponents(n,y,y);let C=d.add(f,g,dP[3]);return d.add(C,A,C),d.multiplyComponents(n,C,C),dP}var RX=new k,kAt=new d,Py=[new Ae,new Ae,new Ae,new Ae];function mV(e,t,n,i,o,r){RX.x=e,RX.y=t;let s=i.pickEllipsoid(RX,o,kAt);return l(s)?(Py[n]=o.cartesianToCartographic(s,Py[n]),1):(Py[n]=o.cartesianToCartographic(r[n],Py[n]),0)}an.prototype.computeViewRectangle=function(e,t){e=e??te.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new le(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===nn.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=QAt(this,e);if(c+=mV(0,0,0,this,e,u),c+=mV(0,a,1,this,e,u),c+=mV(s,a,2,this,e,u),c+=mV(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(Py,t);let f=0,h=Py[3].longitude;for(let A=0;A<4;++A){let g=Py[A].longitude,m=Math.abs(g-h);m>D.PI?f+=D.TWO_PI-m:f+=m,h=g}return D.equalsEpsilon(Math.abs(f),D.TWO_PI,D.EPSILON9)&&(t.west=-D.PI,t.east=D.PI,Py[0].latitude>=0?t.north=D.PI_OVER_TWO:t.south=-D.PI_OVER_TWO),t};an.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof Vi)return;let e=this._scene;this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60)};an.prototype.switchToOrthographicFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof An)return;let e=dEe(this),t=this._scene;this.frustum=new An,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};an.clone=function(e,t){return l(t)||(t=new an(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),R.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var Eo=an;function UAt(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var Lh=UAt;var SEe=Es(_u(),1),IEe=576,GAt=100,hP="#ffffff",yV="#48b";function wEe(e,t){this.credit=e,this.count=t??1}function zAt(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Dt.equals(o,t))return!0}return!1}function VAt(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Dt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var BEe="cesium-credit-delimiter";function xEe(e){let t=document.createElement("span");return t.textContent=e,t.className=BEe,t}function bEe(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function TEe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(xEe(n));else{let f=o[u];f.className!==BEe&&e.replaceChild(xEe(n),f)}}let c=a.element;if(o.length<=r)e.appendChild(bEe(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild(bEe(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function HAt(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<IEe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=IEe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function WAt(e){let t=`
|
||
.cesium-credit-lightbox-overlay {
|
||
display: none;
|
||
z-index: 1;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-color: rgba(80, 80, 80, 0.8);
|
||
}
|
||
|
||
.cesium-credit-lightbox {
|
||
background-color: #303336;
|
||
color: ${hP};
|
||
position: relative;
|
||
min-height: ${GAt}px;
|
||
margin: auto;
|
||
}
|
||
.cesium-credit-lightbox > ul > li a,
|
||
.cesium-credit-lightbox > ul > li a:visited,
|
||
.cesium-credit-wrapper a,
|
||
.cesium-credit-wrapper a:visited {
|
||
color: ${hP};
|
||
}
|
||
.cesium-credit-lightbox > ul > li a:hover {
|
||
color: ${yV};
|
||
}
|
||
.cesium-credit-lightbox.cesium-credit-lightbox-expanded {
|
||
border: 1px solid #444;
|
||
border-radius: 5px;
|
||
max-width: 370px;
|
||
}
|
||
.cesium-credit-lightbox.cesium-credit-lightbox-mobile {
|
||
height: 100%;
|
||
width: 100%;
|
||
}
|
||
.cesium-credit-lightbox-title {
|
||
padding: 20px 20px 0 20px;
|
||
}
|
||
.cesium-credit-lightbox-close {
|
||
font-size: 18pt;
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 0;
|
||
right: 6px;
|
||
color: ${hP};
|
||
}
|
||
.cesium-credit-lightbox-close:hover {
|
||
color: ${yV};
|
||
}
|
||
.cesium-credit-lightbox > ul {
|
||
margin: 0;
|
||
padding: 12px 20px 12px 40px;
|
||
font-size: 13px;
|
||
}
|
||
.cesium-credit-lightbox > ul > li {
|
||
padding-bottom: 6px;
|
||
}
|
||
.cesium-credit-lightbox > ul > li * {
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.cesium-credit-expand-link {
|
||
padding-left: 5px;
|
||
cursor: pointer;
|
||
text-decoration: underline;
|
||
color: ${hP};
|
||
}
|
||
.cesium-credit-expand-link:hover {
|
||
color: ${yV};
|
||
}
|
||
|
||
.cesium-credit-text {
|
||
color: ${hP};
|
||
}
|
||
|
||
.cesium-credit-delimiter {
|
||
padding: 0 5px;
|
||
}
|
||
|
||
.cesium-credit-textContainer *,
|
||
.cesium-credit-logoContainer * {
|
||
display: inline;
|
||
}
|
||
|
||
.cesium-credit-textContainer a:hover {
|
||
color: ${yV}
|
||
}
|
||
|
||
.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type {
|
||
padding-left: 5px;
|
||
}
|
||
`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function br(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let A=document.createElement("a");A.className="cesium-credit-expand-link",A.onclick=this.showLightbox.bind(this),A.textContent="Data attribution",e.appendChild(A),WAt(e);let g=Dt.clone(br.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=A,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new Pt,lightboxCredits:new Pt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function DEe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new wEe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}br.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Dt.clone(vEe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,DEe(this,t,e)};br.prototype.addStaticCredit=function(e){let t=this._staticCredits;zAt(t,e)||t.push(e)};br.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};br.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};br.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};br.prototype.update=function(){this._expanded&&HAt(this)};br.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Dt.equals(br.cesiumCredit,this._cesiumCredit)||DEe(this,s,r,Number.MAX_VALUE)}Dt.equals(br.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Dt.clone(br.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};br.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;TEe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",TEe(this._creditList,t,void 0,"li"),VAt(this)};br.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};br.prototype.isDestroyed=function(){return!1};br._cesiumCredit=void 0;br._cesiumCreditInitialized=!1;var CV;function vEe(){if(!l(CV)){let e=fn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new SEe.default(e).path()),CV=new Dt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return br._cesiumCreditInitialized||(br._cesiumCredit=CV,br._cesiumCreditInitialized=!0),CV}Object.defineProperties(br,{cesiumCredit:{get:function(){return vEe(),br._cesiumCredit},set:function(e){br._cesiumCredit=e,br._cesiumCreditInitialized=!0}}});br.CreditDisplayElement=wEe;var EV=br;var IV=0,jAt=1;function i0(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??Pe.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof Vi?(s=IV,a=Vi.packedLength):t instanceof An&&(s=jAt,a=An.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Pe.packedLength}i0.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===IV?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var YAt=new Vi,qAt=new An,KAt=new Le,XAt=new d,JAt=new Pe;i0.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===IV?(o=Vi.unpack(e,t,YAt),t+=Vi.packedLength):(o=An.unpack(e,t,qAt),t+=An.packedLength);let r=d.unpack(e,t,XAt);t+=d.packedLength;let s=Le.unpack(e,t,KAt);t+=Le.packedLength;let a=Pe.unpack(e,t,JAt);t+=Pe.packedLength;let c=e[t]===1;if(!l(n))return new i0({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Pe.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function QT(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var ZAt=new J,$At=new R,FX=new R,PEe=new d,REe=new d,MEe=new d,ept=new d,tpt=new d,npt=new d,Ry=new Array(3),mP=new Array(4);mP[0]=new se(-1,-1,1,1);mP[1]=new se(1,-1,1,1);mP[2]=new se(1,1,1,1);mP[3]=new se(-1,1,1,1);var NEe=new Array(4);for(let e=0;e<4;++e)NEe[e]=new se;i0._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=J.fromQuaternion(t,ZAt),u=r??PEe,f=s??REe,h=a??MEe;u=J.getColumn(c,0,u),f=J.getColumn(c,1,f),h=J.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let A=R.computeView(e,h,f,u,$At),g,m,_=i.projectionMatrix;if(n===IV){let y=R.multiply(_,A,FX);m=R.inverse(y,FX)}else g=R.inverseTransformation(A,FX);l(m)?(Ry[0]=i.near,Ry[1]=i.far):(Ry[0]=0,Ry[1]=i.near,Ry[2]=i.far);for(let y=0;y<2;++y)for(let C=0;C<4;++C){let E=se.clone(mP[C],NEe[C]);if(l(m)){E=R.multiplyByVector(m,E,E);let I=1/E.w;d.multiplyByScalar(E,I,E),d.subtract(E,e,E),d.normalize(E,E);let b=d.dot(h,E);d.multiplyByScalar(E,Ry[y]/b,E),d.add(E,e,E)}else{let I=i.offCenterFrustum;l(I)&&(i=I);let b=Ry[y],S=Ry[y+1];E.x=(E.x*(i.right-i.left)+i.left+i.right)*.5,E.y=(E.y*(i.top-i.bottom)+i.bottom+i.top)*.5,E.z=(E.z*(b-S)-b-S)*.5,E.w=1,R.multiplyByVector(g,E,E)}o[12*y+C*3]=E.x,o[12*y+C*3+1]=E.y,o[12*y+C*3+2]=E.z}};i0.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);i0._computeNearFarPlanes(i,o,t,n,c);let u=24;c[u]=c[12],c[u+1]=c[13],c[u+2]=c[14],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[9],c[u+7]=c[10],c[u+8]=c[11],c[u+9]=c[21],c[u+10]=c[22],c[u+11]=c[23],u+=12,c[u]=c[15],c[u+1]=c[16],c[u+2]=c[17],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[12],c[u+10]=c[13],c[u+11]=c[14],u+=12,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[15],c[u+4]=c[16],c[u+5]=c[17],c[u+6]=c[18],c[u+7]=c[19],c[u+8]=c[20],c[u+9]=c[6],c[u+10]=c[7],c[u+11]=c[8],u+=12,c[u]=c[6],c[u+1]=c[7],c[u+2]=c[8],c[u+3]=c[18],c[u+4]=c[19],c[u+5]=c[20],c[u+6]=c[21],c[u+7]=c[22],c[u+8]=c[23],c[u+9]=c[9],c[u+10]=c[10],c[u+11]=c[11],r||(c=c.subarray(12));let f=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let A=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,m=l(s.bitangent)?new Float32Array(12*a):void 0,_=l(s.st)?new Float32Array(8*a):void 0,y=PEe,C=REe,E=MEe,I=d.negate(y,ept),b=d.negate(C,tpt),S=d.negate(E,npt);u=0,r&&(QT(u,A,g,m,_,S,y,C),u+=12),QT(u,A,g,m,_,E,I,C),u+=12,QT(u,A,g,m,_,I,S,C),u+=12,QT(u,A,g,m,_,b,S,I),u+=12,QT(u,A,g,m,_,y,E,C),u+=12,QT(u,A,g,m,_,C,E,I),l(A)&&(f.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),l(g)&&(f.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),l(_)&&(f.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:_}))}let h=new Uint16Array(6*a);for(let A=0;A<a;++A){let g=A*6,m=A*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ht({attributes:f,indices:h,primitiveType:Me.TRIANGLES,boundingSphere:le.fromVertices(c)})};var kT=i0;var QX=0,ipt=1;function AP(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof Vi?(r=QX,s=Vi.packedLength):t instanceof An&&(r=ipt,s=An.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}AP.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===QX?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var opt=new Vi,rpt=new An,spt=new Le,apt=new d;AP.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===QX?(o=Vi.unpack(e,t,opt),t+=Vi.packedLength):(o=An.unpack(e,t,rpt),t+=An.packedLength);let r=d.unpack(e,t,apt);t+=d.packedLength;let s=Le.unpack(e,t,spt);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new AP({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};AP.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);kT._computeNearFarPlanes(i,o,t,n,s);let a=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),A=r?0:1;for(;A<2;++A)c=r?A*8:0,u=A*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(A=0;A<2;++A)c=(f+A)*8,u=A*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ht({attributes:a,indices:h,primitiveType:Me.LINES,boundingSphere:le.fromVertices(s)})};var xV=AP;function bV(e){e=e??V.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??G.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var cpt=new d,lpt=new J,upt=new Le,fpt=new Vi,dpt=new fu,hpt=new An,mpt=new ls,Apt=new G,ppt=[1,1e5];bV.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Vi?a=fpt:s instanceof fu?a=dpt:s instanceof An?a=hpt:a=mpt,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=ppt,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,A=r.upWC,g=r.rightWC;g=d.negate(g,cpt);let m=lpt;J.setColumn(m,0,g,m),J.setColumn(m,1,A,m),J.setColumn(m,2,h,m);let _=Le.fromRotationMatrix(m,upt);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new kn({geometryInstances:new Rt({geometry:new kT({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(G.fromAlpha(this._color,.1,Apt))},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new kn({geometryInstances:new Rt({geometry:new xV({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};bV.prototype.isDestroyed=function(){return!1};bV.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var Kp=bV;function gP(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var pP=jt.supportsTypedArrays()?new Float32Array(12):[],LEe=new d,OEe=new d,kX=new d,FEe=new d,TV=new d;function gpt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof An)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,A=d.multiplyComponents(e.oneOverRadii,h,LEe),g=d.normalize(A,OEe),m=d.normalize(d.cross(d.UNIT_Z,A,kX),kX),_=d.normalize(d.cross(g,m,FEe),FEe),y=d.magnitude(A),C=Math.sqrt(y*y-1);o=d.multiplyByScalar(g,1/y,LEe);let E=C/y;r=d.multiplyByScalar(m,E,OEe),s=d.multiplyByScalar(_,E,kX)}let a=d.add(o,s,TV);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,pP,0);let c=d.subtract(o,s,TV);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,pP,3);let u=d.add(o,s,TV);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,pP,6);let f=d.subtract(o,s,TV);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,pP,9),pP}gP.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ie.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new te(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new nt({renderState:this._rs,boundingVolume:new le(d.ZERO,i.maximumRadius),pass:Be.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new We({sources:[hz]}),a=new We({sources:[dz]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=gpt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Me.TRIANGLES});this._va=li.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Qe.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};gP.prototype.execute=function(e,t){this._mode===ie.SCENE3D&&this._command.execute(e,t)};gP.prototype.isDestroyed=function(){return!1};gP.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var SV=gP;function GT(){}var _pt=/\bgl_FragDepth\b/,ypt=/\bdiscard\b/;function Cpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(_pt.test(r[a])||ypt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main()
|
||
{
|
||
out_FragColor = vec4(1.0);
|
||
}
|
||
`;i=new We({sources:[a]})}else if(!o&&s){let a=`void main()
|
||
{
|
||
out_FragColor = vec4(1.0);
|
||
czm_writeLogDepth();
|
||
}
|
||
`;i=new We({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function Ept(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=nt.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=Cpt(n,t.shaderProgram),i.depthOnlyCommand.renderState=Ept(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var Ipt=/\s+czm_writeLogDepth\(/,xpt=/\s+czm_vertexLogDepth\(/;function bpt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(xpt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=We.replaceMain(c[h],"czm_log_depth_main");c.push(`
|
||
|
||
void main()
|
||
{
|
||
czm_log_depth_main();
|
||
czm_vertexLogDepth();
|
||
}
|
||
`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)Ipt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=We.replaceMain(c[f],"czm_log_depth_main");u=`
|
||
void main()
|
||
{
|
||
czm_log_depth_main();
|
||
czm_writeLogDepth();
|
||
}
|
||
`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}GT.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=bpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function Tpt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main ()
|
||
{
|
||
czm_non_pick_main();
|
||
if (${c}.a == 0.0) {
|
||
discard;
|
||
}
|
||
${c} = ${n};
|
||
} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=We.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let A=new We({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:A,attributeLocations:o})}function QEe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=nt.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=Tpt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function UT(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function kEe(e){return e.isArray?e.arrayLength:gt.getComponentCount(e.type)}function Spt(e){let t=kEe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function UEe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function GEe(e,t){let n=zt.getMaximum(t);return`(${e}) / float(${n})`}function wpt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=UEe(n,i,o)}return e.normalized||(n=GEe(n,e.componentType)),n}function Bpt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=UEe(o,r,s)}return e.normalized||(o=GEe(o,e.componentType)),o}function Dpt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=Spt(u),h=["0.0","0.0","0.0","0.0"],A=kEe(u);if(A===1)h[0]=wpt(u,c);else{let y=["x","y","z","w"];for(let C=0;C<A;C++)h[C]=Bpt(u,c,y[C])}let g=t.fragmentShaderSource.defines.slice();g.push(Gf.METADATA_PICKING_ENABLED),UT(g,Gf.METADATA_PICKING_VALUE_TYPE,f),UT(g,Gf.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new We({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}GT.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=nt.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=Dpt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function vpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}GT.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=vpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var Xp=GT;function wV(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=D.toRadians(o),t._beta=D.toRadians(i.beta),t._gamma=D.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var Ppt=new Le,zEe=new Le,Rpt=new J;function Mpt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,zEe),c=Le.fromAxisAngle(r,i,Ppt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,zEe);Le.multiply(f,u,u);let h=J.fromQuaternion(u,Rpt);J.multiplyByVector(h,r,r),J.multiplyByVector(h,s,s),J.multiplyByVector(h,o,o)}wV.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;Mpt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};wV.prototype.isDestroyed=function(){return!1};wV.prototype.destroy=function(){return this._removeListener(),ue(this)};var BV=wV;function UX(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(UX.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var Npt=new d;UX.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ie.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,D.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,Npt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var DV=UX;function Lpt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ie.SCENE3D,this.morphTime=ie.getMorphTime(ie.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var vV=Lpt;var Ha={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},o0=Ha.DERIVED_COMMANDS_MAXIMUM_LENGTH,ZEe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function r0(){this._frontFaceAlphaByDistance=new Yt(0,1,0,1),this._backFaceAlphaByDistance=new Yt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(o0),this._derivedBlendCommandTypes=new Array(o0),this._derivedPickCommandTypes=new Array(o0),this._derivedCommandTypesToUpdate=new Array(o0),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(r0.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});r0.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=HEe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=HEe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=kpt(this,e,t),this._sunVisibleThroughGlobe=Opt(this,e),this._environmentVisible=Fpt(this,e),this._useDepthPlane=Qpt(this,e),this._numberOfTextureUniforms=Upt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),Gpt(this,e)};function VEe(e,t,n,i){return e?l(n)?(Yt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function HEe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function Opt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function Fpt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function Qpt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function kpt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ie.SCENE2D&&t.context.depthTexture}function Upt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function Gpt(e,t){e._derivedCommandsLength=GX(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=GX(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=GX(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<o0;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=ngt())}function GX(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Ha.PICK_FRONT_FACE:u?Ha.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_FRONT_FACE,h=i?Ha.PICK_BACK_FACE:u?Ha.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_BACK_FACE;return t.mode===ie.SCENE2D?(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Ha.DEPTH_ONLY_BACK_FACE),o[r++]=Ha.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE),o[r++]=Ha.OPAQUE_BACK_FACE,o[r++]=f),r)}function gd(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function WEe(e,t){return e.indexOf(t)>-1}function zpt(e,t){gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function Vpt(e,t){gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG"),gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function zX(e,t){if(WEe(t.defines,"TILE_LIMIT_RECTANGLE")||WEe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main()
|
||
{
|
||
out_FragColor = vec4(1.0);
|
||
}
|
||
`;t.sources=[n]}function VX(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=We.replaceMain(n[r],"czm_globe_translucency_main");n.push(`
|
||
|
||
uniform sampler2D u_classificationTexture;
|
||
void main()
|
||
{
|
||
vec2 st = gl_FragCoord.xy / czm_viewport.zw;
|
||
#ifdef MANUAL_DEPTH_TEST
|
||
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st));
|
||
if (logDepthOrDepth != 0.0)
|
||
{
|
||
vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth);
|
||
float depthEC = eyeCoordinate.z / eyeCoordinate.w;
|
||
if (v_positionEC.z < depthEC)
|
||
{
|
||
discard;
|
||
}
|
||
}
|
||
#endif
|
||
czm_globe_translucency_main();
|
||
vec4 classificationColor = texture(u_classificationTexture, st);
|
||
if (classificationColor.a > 0.0)
|
||
{
|
||
// Reverse premultiplication process to get the correct composited result of the classification primitives
|
||
classificationColor.rgb /= classificationColor.a;
|
||
}
|
||
out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a);
|
||
}
|
||
`)}function $Ee(e,t){VX(e,t),gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG")}function Hpt(e,t){VX(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Wpt(e,t){$Ee(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function jEe(e,t){let n=`uniform sampler2D u_classificationTexture;
|
||
void main()
|
||
{
|
||
vec2 st = gl_FragCoord.xy / czm_viewport.zw;
|
||
vec4 pickColor = texture(u_classificationTexture, st);
|
||
if (pickColor == vec4(0.0))
|
||
{
|
||
discard;
|
||
}
|
||
out_FragColor = pickColor;
|
||
}
|
||
`;t.sources=[n]}function jpt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Ypt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0}function qpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0}function Kpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Xpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Jpt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function YEe(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function qEe(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function Zpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function $pt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function egt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ue.getState(e);i(s),r=Ue.fromCache(s),o[e.id]=r}return r}function zT(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function tgt(e,t,n,i,o){return l(o)?!i&&l(n)?n:wt(t,o(e),!1):t}function Oh(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function ngt(){return[new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zpt,getRenderStateFunction:Ypt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:Vpt,getRenderStateFunction:qpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Kpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Xpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Jpt,getUniformMapFunction:void 0}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:VX,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:$Ee,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Hpt,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Wpt,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:Zpt,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:$pt,getUniformMapFunction:zT})]}var KEe=new Array(o0),XEe=new Array(o0);r0.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)XEe[o]=this._derivedCommandPacks[n[o]],KEe[o]=ZEe[n[o]];igt(this,e,i,n,KEe,XEe,t)}};function igt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,A=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,_=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),_&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let y=0;y<n;++y){let C=r[y],E=i[y],I=o[y],b=a[I],S,B,v;l(b)?(S=b.uniformMap,B=b.shaderProgram,v=b.renderState):(S=void 0,B=void 0,v=void 0),b=nt.shallowClone(t,b),a[I]=b;let P=b.derivedCommands.uniformMapDirtyFrame??0,N=b.derivedCommands.shaderProgramDirtyFrame??0,L=b.derivedCommands.renderStateDirtyFrame??0,p=g||P<f,x=m||N<h,T=_||L<A;p&&(b.derivedCommands.uniformMapDirtyFrame=u),x&&(b.derivedCommands.shaderProgramDirtyFrame=u),T&&(b.derivedCommands.renderStateDirtyFrame=u),b.derivedCommands.type=E,b.pass=C.pass,b.pickOnly=C.pickOnly,b.uniformMap=tgt(e,t.uniformMap,S,p,C.getUniformMapFunction),b.shaderProgram=jpt(s.context,t.shaderProgram,B,x,C.getShaderProgramFunction,I),b.renderState=egt(t.renderState,v,T,C.getRenderStateFunction,C.renderStateCache)}}}r0.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=ZEe[o[a]];n.commandList.push(s[c])}};function e0e(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function JEe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var ogt=[Ha.OPAQUE_FRONT_FACE,Ha.OPAQUE_BACK_FACE],rgt=[Ha.DEPTH_ONLY_FRONT_FACE,Ha.DEPTH_ONLY_BACK_FACE,Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE];r0.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Be.GLOBE],a=e.indices[Be.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),e0e(s,a,t,i,o,ogt))};r0.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Be.GLOBE],c=e.indices[Be.GLOBE],u=e.commands[Be.TERRAIN_CLASSIFICATION],f=e.indices[Be.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,A=this._backFaceTranslucent;if((!h||!A)&&JEe(u,f,t,i,o),!h&&!A)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,e0e(a,c,t,i,o,rgt),r.depthTexture){let _=n.packDepth(r,o);s.globeDepthTexture=_}JEe(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var PV=r0;var ef=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
out_FragColor = texture(colorTexture, v_textureCoordinates);
|
||
}
|
||
`;function hA(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new vi({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new vi({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(hA.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});hA.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var sgt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},agt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},cgt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK,blending:pn.ALPHA_BLEND},lgt=`uniform sampler2D colorTexture;
|
||
uniform sampler2D depthTexture;
|
||
uniform sampler2D classifiedTexture;
|
||
in vec2 v_textureCoordinates;
|
||
void main()
|
||
{
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
if (color.a == 0.0)
|
||
{
|
||
discard;
|
||
}
|
||
bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0)));
|
||
#ifdef UNCLASSIFIED
|
||
vec4 highlightColor = czm_invertClassificationColor;
|
||
if (isClassified)
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
vec4 highlightColor = vec4(1.0);
|
||
if (!isClassified)
|
||
{
|
||
discard;
|
||
}
|
||
#endif
|
||
out_FragColor = color * highlightColor;
|
||
gl_FragDepth = texture(depthTexture, v_textureCoordinates).r;
|
||
}
|
||
`,ugt=`uniform sampler2D colorTexture;
|
||
in vec2 v_textureCoordinates;
|
||
void main()
|
||
{
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
if (color.a == 0.0)
|
||
{
|
||
discard;
|
||
}
|
||
#ifdef UNCLASSIFIED
|
||
out_FragColor = color * czm_invertClassificationColor;
|
||
#else
|
||
out_FragColor = color;
|
||
#endif
|
||
}
|
||
`;hA.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Nt({context:e,width:s,height:a,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:s,height:a,format:Yl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ue.fromCache(sgt),this._rsClassified=Ue.fromCache(agt),this._rsDefault=Ue.fromCache(cgt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?ugt:lgt,f=new We({defines:["UNCLASSIFIED"],sources:[u]}),h=new We({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(ef,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};hA.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};hA.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};hA.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};hA.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};hA.prototype.isDestroyed=function(){return!1};hA.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var _P=hA;function RV(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(RV.prototype,{total:{get:function(){return this._total}}});function My(e){let t=new Array(Tc.NUMBER_OF_JOB_TYPES);t[Tc.TEXTURE]=new RV(l(e)?e[Tc.TEXTURE]:10),t[Tc.PROGRAM]=new RV(l(e)?e[Tc.PROGRAM]:10),t[Tc.BUFFER]=new RV(l(e)?e[Tc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}My.getTimestamp=Oi;Object.defineProperties(My.prototype,{totalBudget:{get:function(){return this._totalBudget}}});My.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};My.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};My.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=My.getTimestamp();e.execute();let a=My.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var MV=My;function NV(e){e=e??V.EMPTY_OBJECT;let t=Gn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Oi(),this._lastMsSampleTime=Oi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(NV.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});NV.prototype.update=function(e){let t=Oi(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};NV.prototype.destroy=function(){return ue(this)};var Ny=NV;var Wa={};Wa.decodeRawMetadataValue=function(e,t,n){switch(e){case zt.INT8:return t.getInt8(n);case zt.UINT8:return t.getUint8(n);case zt.INT16:return t.getInt16(n,!0);case zt.UINT16:return t.getUint16(n,!0);case zt.INT32:return t.getInt32(n,!0);case zt.UINT32:return t.getUint32(n,!0);case zt.INT64:return t.getBigInt64(n,!0);case zt.UINT64:return t.getBigUint64(n,!0);case zt.FLOAT32:return t.getFloat32(n,!0);case zt.FLOAT64:return t.getFloat64(n,!0)}throw new ce(`Invalid component type: ${e}`)};Wa.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=Wa.decodeRawMetadataValue(i,t,n);return e.normalized?zt.normalize(o,i):o};Wa.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=zt.getSizeInBytes(i),r=e.type,s=gt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let A=n*a+h*o,g=Wa.decodeRawMetadataValueComponent(e,t,A);f[h]=g}return f}let c=n*a;return Wa.decodeRawMetadataValueComponent(e,t,c)};Wa.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=Wa.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return Wa.decodeRawMetadataValueElement(e,n,0)};Wa.convertToObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case gt.VEC2:return k.unpack(n,0,new k);case gt.VEC3:return d.unpack(n,0,new d);case gt.VEC4:return se.unpack(n,0,new se);case gt.MAT2:return Wi.unpack(n,0,new Wi);case gt.MAT3:return J.unpack(n,0,new J);case gt.MAT4:return R.unpack(n,0,new R)}throw new ce(`Invalid metadata object type: ${e}`)};Wa.convertFromObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;switch(e){case gt.VEC2:return k.pack(t,Array(2));case gt.VEC3:return d.pack(t,Array(3));case gt.VEC4:return se.pack(t,Array(4));case gt.MAT2:return Wi.pack(t,Array(4));case gt.MAT3:return J.pack(t,Array(9));case gt.MAT4:return R.pack(t,Array(16))}throw new ce(`Invalid metadata object type: ${e}`)};Wa.decodeMetadataValues=function(e,t,n){let i=Wa.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=Wa.convertFromObjectType(e.type,t.offset),s=Wa.convertFromObjectType(e.type,t.scale);i=$A.valueTransformInPlace(i,r,s,zt.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=Wa.convertToObjectType(e.type,c);s[a]=u}return s}return Wa.convertToObjectType(e.type,i)};var LV=Object.freeze(Wa);function s0(){this._framebuffer=new vi,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(s0.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function fgt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function dgt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates);
|
||
float globeDepth = czm_unpackDepth(globeDepthPacked);
|
||
float depth = texture(colorTexture, v_textureCoordinates).r;
|
||
out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0,
|
||
czm_packDepth(depth), globeDepthPacked);
|
||
}
|
||
`,{renderState:Ue.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}s0.prototype.update=function(e,t){fgt(this,e,t),dgt(this,e,t)};var hgt=new se,mgt=new se(1,1/255,1/65025,1/16581375);s0.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=se.unpack(i,0,hgt);return se.divideByScalar(o,255,o),se.dot(o,mgt)};s0.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};s0.prototype.isDestroyed=function(){return!1};s0.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var OV=s0;function Agt(e,t){this.near=e??0,this.far=t??0;let n=Be.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var FV=Agt;var a0=`uniform highp sampler2D u_depthTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r);
|
||
}
|
||
`;function mA(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new vi,this._tempCopyDepthFramebuffer=new vi,this._updateDepthFramebuffer=new vi({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(mA.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function t0e(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Xe.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Xe.equals(r,e._rs.viewport)||a)&&(e._rs=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND}),e._rsUpdate=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new Ei({color:new G(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}mA.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),t0e(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};mA.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};mA.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};mA.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),t0e(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};mA.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};mA.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(G.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};mA.prototype.isDestroyed=function(){return!1};mA.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var QV=mA;function c0(){this._framebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new vi,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Xe,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(c0.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function pgt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function ggt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function _gt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Xe.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Xe.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}c0.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;ggt(this,n,o,r,e),_gt(this,n,o,r,i),this._useHdr=e};c0.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};c0.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};c0.prototype.isDestroyed=function(){return!1};c0.prototype.destroy=function(){return pgt(this),ue(this)};var kV=c0;function Jp(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new vi({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new vi({createColorAttachments:!1}),this._opaqueClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new Ei({color:new G(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._alphaClearCommand=new Ei({color:new G(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function n0e(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function HX(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function i0e(e){n0e(e),HX(e)}function ygt(e,t,n,i){n0e(e),e._accumulationTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT}),e._revealageTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,width:n,height:i,flipY:!1})}function Cgt(e,t){HX(e);let n=ee.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(HX(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(i0e(e),e._translucentMultipassSupport=!1,i=!1)}return i}Jp.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,ygt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!Cgt(this,e))return;this._useHDR=i;let f=this,h,A;l(this._compositeCommand)||(h=new We({sources:[fz]}),this._translucentMRTSupport&&h.defines.push("MRT"),A={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new We({defines:["MRT"],sources:[Jv]}),A={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})):this._translucentMultipassSupport&&(h=new We({sources:[Jv]}),A={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}),A={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Xe.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,Xe.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Xe.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!Xe.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ue.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var Egt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA},Igt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationAlpha:Uo.ONE},xgt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ZERO,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA};function WX(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ue.getState(i);r.depthMask=!1,r.blending=t,o=Ue.fromCache(r),n[i.id]=o}return o}function bgt(e,t,n){return WX(t,Egt,e._translucentRenderStateCache,n)}function Tgt(e,t,n){return WX(t,Igt,e._translucentRenderStateCache,n)}function Sgt(e,t,n){return WX(t,xgt,e._alphaRenderStateCache,n)}var wgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a;
|
||
float ai = czm_out_FragColor.a;
|
||
float wzi = czm_alphaWeight(ai);
|
||
out_FragData_0 = vec4(Ci * wzi, ai);
|
||
out_FragData_1 = vec4(ai * wzi);
|
||
`,Bgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a;
|
||
float ai = czm_out_FragColor.a;
|
||
float wzi = czm_alphaWeight(ai);
|
||
out_FragColor = vec4(Ci, ai) * wzi;
|
||
`,Dgt=` float ai = czm_out_FragColor.a;
|
||
out_FragColor = vec4(ai);
|
||
`;function jX(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return We.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor;
|
||
bool czm_discard = false;
|
||
`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]};
|
||
${u}`}return a.sources.push(u),a.sources.push(`void main()
|
||
{
|
||
czm_translucent_main();
|
||
if (czm_discard)
|
||
{
|
||
discard;
|
||
}
|
||
${i}}
|
||
`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function vgt(e,t){return jX(e,t,"translucentMRT",wgt)}function Pgt(e,t){return jX(e,t,"translucentMultipass",Bgt)}function Rgt(e,t){return jX(e,t,"alphaMultipass",Dgt)}Jp.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=vgt(t,e.shaderProgram),n.translucentCommand.renderState=bgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),n.alphaCommand=nt.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Pgt(t,e.shaderProgram),n.translucentCommand.renderState=Tgt(this,t,e.renderState),n.alphaCommand.shaderProgram=Rgt(t,e.shaderProgram),n.alphaCommand.renderState=Sgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function Mgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.alphaCommand:_.derivedCommands.oit.alphaCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(_,t,i,g)}i.framebuffer=h}function Ngt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=h}Jp.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){Ngt(this,e,t,n,i,o);return}Mgt(this,e,t,n,i,o)};Jp.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Jp.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,G.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Jp.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Jp.prototype.isDestroyed=function(){return!1};Jp.prototype.destroy=function(){return i0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var UV=Jp;function yP(){this._framebuffer=new vi({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(yP.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Lgt(e){e._framebuffer.destroy()}function Ogt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new El(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Xe},o.viewport=new Xe,e._passState=o}yP.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Ogt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};yP.prototype.isDestroyed=function(){return!1};yP.prototype.destroy=function(){return Lgt(this),ue(this)};var GV=yP;function VT(e){let t=new El(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Xe},t.viewport=new Xe,this._context=e,this._fb=new vi({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}VT.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Xe.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var CP=new G;VT.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,A=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);CP.red=G.byteToFloat(o[m]),CP.green=G.byteToFloat(o[m+1]),CP.blue=G.byteToFloat(o[m+2]),CP.alpha=G.byteToFloat(o[m+3]);let _=i.getObjectByPickColor(CP);if(l(_))return _}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-A,A=m}u+=h,f+=A}};VT.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};VT.prototype.isDestroyed=function(){return!1};VT.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var zV=VT;function Zp(){this._numSamples=1,this._colorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new G(0,0,0,0),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,owner:this})}function Fgt(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Zp.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Zp.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Zp.prototype.clear=function(e,t,n){G.clone(n,this._clearCommand.color),G.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Zp.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Zp.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Zp.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Zp.prototype.isDestroyed=function(){return!1};Zp.prototype.destroy=function(){return Fgt(this),ue(this)};var HT=Zp;function l0(){}l0.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};l0.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=We.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=We.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC;
|
||
void main()
|
||
{
|
||
czm_shadow_cast_main();
|
||
v_positionEC = (czm_inverseProjection * gl_Position).xyz;
|
||
}`)}return new We({defines:i,sources:o})};l0.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=We.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=We.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC;
|
||
`),u+=`uniform vec4 shadowMap_lightPositionEC;
|
||
`),i?u+=`void main()
|
||
{
|
||
`:u+=`void main()
|
||
{
|
||
czm_shadow_cast_main();
|
||
if (out_FragColor.a == 0.0)
|
||
{
|
||
discard;
|
||
}
|
||
`,t?u+=` float distance = length(${s});
|
||
if (distance >= shadowMap_lightPositionEC.w)
|
||
{
|
||
discard;
|
||
}
|
||
distance /= shadowMap_lightPositionEC.w; // radius
|
||
out_FragColor = czm_packDepth(distance);
|
||
`:n?u+=` out_FragColor = vec4(1.0);
|
||
`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z);
|
||
`,u+=`}
|
||
`,r.push(u),new We({defines:o,sources:r})};l0.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};l0.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new We({defines:i,sources:o})};l0.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=We.findNormalVarying(e),s=!i&&l(r)||i&&o,a=We.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,A=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,_=t.softShadows,y=h?t._pointBias:i?t._terrainBias:t._primitiveBias,C=e.defines.slice(0),E=e.sources.slice(0),I=E.length;for(let B=0;B<I;++B)E[B]=We.replaceMain(E[B],"czm_shadow_receive_main");h?C.push("USE_CUBE_MAP_SHADOW"):u&&C.push("USE_SHADOW_DEPTH_TEXTURE"),_&&!h&&C.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?C.push("ENABLE_VERTEX_LIGHTING"):C.push("ENABLE_DAYNIGHT_SHADING")),n&&y.normalShading&&s&&(C.push("USE_NORMAL_SHADING"),y.normalShadingSmooth>0&&C.push("USE_NORMAL_SHADING_SMOOTH"));let b="";h?b+=`uniform samplerCube shadowMap_textureCube;
|
||
`:b+=`uniform sampler2D shadowMap_texture;
|
||
`;let S;return c?S=` return vec4(${a}, 1.0);
|
||
`:S=`#ifndef LOG_DEPTH
|
||
return czm_windowToEyeCoordinates(gl_FragCoord);
|
||
#else
|
||
return vec4(v_logPositionEC, 1.0);
|
||
#endif
|
||
`,b+=`uniform mat4 shadowMap_matrix;
|
||
uniform vec3 shadowMap_lightDirectionEC;
|
||
uniform vec4 shadowMap_lightPositionEC;
|
||
uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness;
|
||
uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth;
|
||
#ifdef LOG_DEPTH
|
||
in vec3 v_logPositionEC;
|
||
#endif
|
||
vec4 getPositionEC()
|
||
{
|
||
${S}}
|
||
vec3 getNormalEC()
|
||
{
|
||
${s?` return normalize(${r});
|
||
`:` return vec3(1.0);
|
||
`}}
|
||
void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL)
|
||
{
|
||
${y.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x;
|
||
float normalOffsetScale = 1.0 - nDotL;
|
||
vec3 offset = normalOffset * normalOffsetScale * normalEC;
|
||
positionEC.xyz += offset;
|
||
`:""}}
|
||
`,b+=`void main()
|
||
{
|
||
czm_shadow_receive_main();
|
||
vec4 positionEC = getPositionEC();
|
||
vec3 normalEC = getNormalEC();
|
||
float depth = -positionEC.z;
|
||
`,b+=` czm_shadowParameters shadowParameters;
|
||
shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy;
|
||
shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z;
|
||
shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w;
|
||
shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w;
|
||
`,i?b+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0);
|
||
`:f||(b+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015);
|
||
`),h?b+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz;
|
||
float distance = length(directionEC);
|
||
directionEC = normalize(directionEC);
|
||
float radius = shadowMap_lightPositionEC.w;
|
||
// Stop early if the fragment is beyond the point light radius
|
||
if (distance > radius)
|
||
{
|
||
return;
|
||
}
|
||
vec3 directionWC = czm_inverseViewRotation * directionEC;
|
||
shadowParameters.depth = distance / radius;
|
||
shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);
|
||
shadowParameters.texCoords = directionWC;
|
||
float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters);
|
||
`:A?b+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);
|
||
float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);
|
||
applyNormalOffset(positionEC, normalEC, nDotL);
|
||
vec4 shadowPosition = shadowMap_matrix * positionEC;
|
||
// Spot light uses a perspective projection, so perform the perspective divide
|
||
shadowPosition /= shadowPosition.w;
|
||
// Stop early if the fragment is not in the shadow bounds
|
||
if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0))))
|
||
{
|
||
return;
|
||
}
|
||
shadowParameters.texCoords = shadowPosition.xy;
|
||
shadowParameters.depth = shadowPosition.z;
|
||
shadowParameters.nDotL = nDotL;
|
||
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
|
||
`:g?b+=` float maxDepth = shadowMap_cascadeSplits[1].w;
|
||
// Stop early if the eye depth exceeds the last cascade
|
||
if (depth > maxDepth)
|
||
{
|
||
return;
|
||
}
|
||
// Get the cascade based on the eye-space depth
|
||
vec4 weights = czm_cascadeWeights(depth);
|
||
// Apply normal offset
|
||
float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0);
|
||
applyNormalOffset(positionEC, normalEC, nDotL);
|
||
// Transform position into the cascade
|
||
vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC;
|
||
// Get visibility
|
||
shadowParameters.texCoords = shadowPosition.xy;
|
||
shadowParameters.depth = shadowPosition.z;
|
||
shadowParameters.nDotL = nDotL;
|
||
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
|
||
// Fade out shadows that are far away
|
||
float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z;
|
||
float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0);
|
||
visibility = mix(visibility, 1.0, fade);
|
||
${m?` // Draw cascade colors for debugging
|
||
out_FragColor *= czm_cascadeColor(weights);
|
||
`:""}`:b+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0);
|
||
applyNormalOffset(positionEC, normalEC, nDotL);
|
||
vec4 shadowPosition = shadowMap_matrix * positionEC;
|
||
// Stop early if the fragment is not in the shadow bounds
|
||
if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0))))
|
||
{
|
||
return;
|
||
}
|
||
shadowParameters.texCoords = shadowPosition.xy;
|
||
shadowParameters.depth = shadowPosition.z;
|
||
shadowParameters.nDotL = nDotL;
|
||
float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters);
|
||
`,b+=` out_FragColor.rgb *= visibility;
|
||
}
|
||
`,E.push(b),new We({defines:C,sources:E})};var $p=l0;function AA(e){e=e??V.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(jt.isInternetExplorer()||jt.isEdge()||(jt.isChrome()||jt.isFirefox())&&jt.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new R,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new se,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new VV,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new le,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new k,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new ls:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new se,new se],this._cascadeMatrices=[new R,new R,new R,new R],this._cascadeDistances=new se;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new Qgt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,qX(this),this._clearCommand=new Ei({depth:1,color:new G}),this._clearPassState=new El(t),this._size=e.size??2048,this.size=this._size}AA.MAXIMUM_DISTANCE=2e4;function Qgt(e){this.camera=new VV,this.passState=new El(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function YX(e,t){return Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function qX(e){let t=!e._usesDepthTexture;e._primitiveRenderState=YX(t,e._primitiveBias),e._terrainRenderState=YX(t,e._terrainBias),e._pointRenderState=YX(t,e._pointBias)}AA.prototype.debugCreateRenderStates=function(){qX(this)};Object.defineProperties(AA.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Hgt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function KX(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function kgt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=new as({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Ugt(e,t){let n=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),i=new as({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function Ggt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new jr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new as({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function s0e(e,t){e._isPointLight?Ggt(e,t):e._usesDepthTexture?Ugt(e,t):kgt(e,t)}function zgt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ee.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,qX(e),KX(e),s0e(e,t))}function Vgt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(KX(e),s0e(e,t),zgt(e,t),a0e(e,t))}function a0e(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Hgt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=qt.maximumCubeMapSize>=t?t:qt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Xe(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=qt.maximumTextureSize>=t?t:qt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Xe(0,0,t,t)):i===4&&(t=qt.maximumTextureSize>=t*2?t:qt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Xe(0,0,t,t),n[1].passState.viewport=new Xe(t,0,t,t),n[2].passState.viewport=new Xe(0,t,t,t),n[3].passState.viewport=new Xe(t,t,t,t));e._clearPassState.viewport=new Xe(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new R(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var Wgt=new Xe;function jgt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube;
|
||
in vec2 v_textureCoordinates;
|
||
void main()
|
||
{
|
||
vec2 uv = v_textureCoordinates;
|
||
vec3 dir;
|
||
|
||
if (uv.y < 0.5)
|
||
{
|
||
if (uv.x < 0.333)
|
||
{
|
||
dir.x = -1.0;
|
||
dir.y = uv.x * 6.0 - 1.0;
|
||
dir.z = uv.y * 4.0 - 1.0;
|
||
}
|
||
else if (uv.x < 0.666)
|
||
{
|
||
dir.y = -1.0;
|
||
dir.x = uv.x * 6.0 - 3.0;
|
||
dir.z = uv.y * 4.0 - 1.0;
|
||
}
|
||
else
|
||
{
|
||
dir.z = -1.0;
|
||
dir.x = uv.x * 6.0 - 5.0;
|
||
dir.y = uv.y * 4.0 - 1.0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (uv.x < 0.333)
|
||
{
|
||
dir.x = 1.0;
|
||
dir.y = uv.x * 6.0 - 1.0;
|
||
dir.z = uv.y * 4.0 - 3.0;
|
||
}
|
||
else if (uv.x < 0.666)
|
||
{
|
||
dir.y = 1.0;
|
||
dir.x = uv.x * 6.0 - 3.0;
|
||
dir.z = uv.y * 4.0 - 3.0;
|
||
}
|
||
else
|
||
{
|
||
dir.z = 1.0;
|
||
dir.x = uv.x * 6.0 - 5.0;
|
||
dir.y = uv.y * 4.0 - 3.0;
|
||
}
|
||
}
|
||
|
||
float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir));
|
||
out_FragColor = vec4(vec3(shadow), 1.0);
|
||
}
|
||
`:n=`uniform sampler2D shadowMap_texture;
|
||
in vec2 v_textureCoordinates;
|
||
void main()
|
||
{
|
||
${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r;
|
||
`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates));
|
||
`} out_FragColor = vec4(vec3(shadow), 1.0);
|
||
}
|
||
`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Be.OVERLAY,i}function Ygt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Wgt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=jgt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Xe.equals(a.renderState.viewport,s))&&(a.renderState=Ue.fromCache({viewport:Xe.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var pA=new Array(8);pA[0]=new se(-1,-1,-1,1);pA[1]=new se(1,-1,-1,1);pA[2]=new se(1,1,-1,1);pA[3]=new se(-1,1,-1,1);pA[4]=new se(-1,-1,1,1);pA[5]=new se(1,-1,1,1);pA[6]=new se(1,1,1,1);pA[7]=new se(-1,1,1,1);var Ly=new R,XX=new Array(8);for(let e=0;e<8;++e)XX[e]=new se;function qgt(e,t){let n=new Rt({geometry:new $h({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:en.fromColor(t)}}),i=new Rt({geometry:new L_({radius:.5}),attributes:{color:en.fromColor(t)}});return new kn({geometryInstances:[n,i],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var Kgt=[G.RED,G.GREEN,G.BLUE,G.MAGENTA],Xgt=new d;function Jgt(e,t){Ygt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new Kp({camera:e._sceneCamera,color:G.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new Kp({camera:e._passes[i].camera,color:Kgt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,Xgt),a=R.fromTranslationQuaternionRotationScale(i,o,s,Ly);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=qgt(a,G.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function VV(){this.viewMatrix=new R,this.inverseViewMatrix=new R,this.frustum=void 0,this.positionCartographic=new Ae,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new R}VV.prototype.clone=function(e){R.clone(e.viewMatrix,this.viewMatrix),R.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),Ae.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var Zgt=new R(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);VV.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return R.multiply(t,e,this.viewProjectionMatrix),R.multiply(Zgt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var $gt=new Array(5),e_t=new Vi,t_t=new Array(4),c0e=new d,l0e=new d;function n_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let A=t_t,g=$gt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let L=(a+1)/s,p=o*Math.pow(u,L),x=o+c*L,T=D.lerp(x,p,f);g[a+1]=T,A[a]=T-g[a]}if(h){for(a=0;a<s;++a)A[a]=Math.min(A[a],e._maximumCascadeDistances[a]);let L=g[0];for(a=0;a<s-1;++a)L+=A[a],g[a+1]=L}se.unpack(g,0,e._cascadeSplits[0]),se.unpack(g,1,e._cascadeSplits[1]),se.unpack(A,0,e._cascadeDistances);let m=n.frustum,_=m.left,y=m.right,C=m.bottom,E=m.top,I=m.near,b=m.far,S=n.positionWC,B=n.directionWC,v=n.upWC,P=i.frustum.clone(e_t),N=n.getViewProjection();for(a=0;a<s;++a){P.near=g[a],P.far=g[a+1];let L=R.multiply(P.projectionMatrix,i.viewMatrix,Ly),p=R.inverse(L,Ly),x=R.multiply(N,p,Ly),T=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),w=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let z=0;z<8;++z){let F=se.clone(pA[z],XX[z]);R.multiplyByVector(x,F,F),d.divideByScalar(F,F.w,F),d.minimumByComponent(F,T,T),d.maximumByComponent(F,w,w)}T.x=Math.max(T.x,0),T.y=Math.max(T.y,0),T.z=0,w.x=Math.min(w.x,1),w.y=Math.min(w.y,1),w.z=Math.min(w.z,1);let M=e._passes[a],O=M.camera;O.clone(n);let U=O.frustum;U.left=_+T.x*(y-_),U.right=_+w.x*(y-_),U.bottom=C+T.y*(E-C),U.top=C+w.y*(E-C),U.near=I+T.z*(b-I),U.far=I+w.z*(b-I),M.cullingVolume=O.frustum.computeCullingVolume(S,B,v);let Q=e._cascadeMatrices[a];R.multiply(O.getViewProjection(),i.inverseViewMatrix,Q),R.multiply(M.textureOffsets,Q,Q)}}var i_t=new R,o_t=new d,r_t=new d,o0e=new d;function s_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=R.multiply(i.frustum.projectionMatrix,i.viewMatrix,Ly),r=R.inverse(o,Ly),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,D.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,o_t);a=d.cross(c,s,r_t),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,o0e),f=R.computeView(u,s,a,c,i_t),h=R.multiply(f,r,Ly),A=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let b=0;b<8;++b){let S=se.clone(pA[b],XX[b]);R.multiplyByVector(h,S,S),d.divideByScalar(S,S.w,S),d.minimumByComponent(S,A,A),d.maximumByComponent(S,g,g)}g.z+=1e3,A.z-=10;let m=o0e;m.x=-(.5*(A.x+g.x)),m.y=-(.5*(A.y+g.y)),m.z=-g.z;let _=R.fromTranslation(m,Ly);f=R.multiply(_,f,f);let y=.5*(g.x-A.x),C=.5*(g.y-A.y),E=g.z-A.z,I=n.frustum;I.left=-y,I.right=y,I.bottom=-C,I.top=C,I.near=.01,I.far=E,R.clone(f,n.viewMatrix),R.inverse(f,n.inverseViewMatrix),R.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var a_t=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],c_t=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],l_t=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function u_t(e,t){let n=new Vi;n.fov=D.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=a_t[i],o.upWC=c_t[i],o.rightWC=l_t[i],R.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),R.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var f_t=new d,d_t=new d,u0e=new le,r0e=u0e.center;function h_t(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=u0e;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,f_t),s=d.negate(i.directionWC,d_t),a=d.dot(r,s);if(e.fadingEnabled){let c=D.clamp(a/.1,0,1);e._darkness=D.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,r0e),r0e);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere)}}function m_t(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;R.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),R.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=Eo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,h_t(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}AA.prototype.update=function(e){if(m_t(this,e),this._needsUpdate)if(Vgt(this,e.context),this._isPointLight&&u_t(this,e),this._cascadesEnabled&&(s_t(this,e),this._numberOfCascades>1&&n_t(this,e)),this._isPointLight)this._shadowMapCullingVolume=zs.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;R.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&Jgt(this,e)};AA.prototype.updatePass=function(e,t){a0e(this,e,t)};var A_t=new k;function f0e(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=A_t;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,se.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return se.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new se,combinedUniforms2:new se};return wt(t,o,!1)}function p_t(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=nt.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===Be.GLOBE,h=n.pass!==Be.TRANSLUCENT,A=e._isPointLight,g=e._usesDepthTexture,m=$p.getShadowCastShaderKeyword(A,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let y=u.vertexShaderSource,C=u.fragmentShaderSource,E=$p.createShadowCastVertexShader(y,A,f),I=$p.createShadowCastFragmentShader(C,A,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:E,fragmentShaderSource:I,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,A?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ze(a,!1),a.cull=ze(a.cull,!1),a.cull.enabled=!1,a=Ue.fromCache(a)),c=f0e(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}AA.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===Be.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,A;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,A=o.receiveCommand.uniformMap),o.receiveCommand=nt.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let _=$p.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,_),!l(h)){let y=$p.createShadowReceiveVertexShader(a,u,f),C=$p.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,_,{vertexShaderSource:y,fragmentShaderSource:C,attributeLocations:s._attributeLocations})}A=f0e(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=A,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};AA.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=p_t(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};AA.prototype.isDestroyed=function(){return!1};AA.prototype.destroy=function(){KX(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var Oy=AA;var WT=`uniform sampler2D colorTexture;
|
||
|
||
#ifdef DEBUG_SHOW_DEPTH
|
||
uniform sampler2D u_packedTranslucentDepth;
|
||
#endif
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
#ifdef DEBUG_SHOW_DEPTH
|
||
if (v_textureCoordinates.x < 0.5)
|
||
{
|
||
out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates)));
|
||
out_FragColor.a = 1.0;
|
||
}
|
||
#else
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
|
||
#ifdef PICK
|
||
if (color == vec4(0.0))
|
||
{
|
||
discard;
|
||
}
|
||
#else
|
||
// Reverse premultiplication process to get the correct composited result of the classification primitives
|
||
color.rgb /= color.a;
|
||
#endif
|
||
out_FragColor = color;
|
||
#endif
|
||
}
|
||
`;var g_t=!1;function Fy(e){this._drawClassificationFBO=new vi({createDepthAttachments:!1}),this._accumulationFBO=new vi({createDepthAttachments:!1}),this._packFBO=new vi,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new Ei({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Xe,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(Fy.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function d0e(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function h0e(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function __t(e,t,n,i){d0e(e),e._translucentDepthStencilTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST})}function y_t(e,t,n,i){h0e(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function C_t(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(__t(e,t,o,r),y_t(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new We({sources:[uz]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new We({sources:[WT]}),a={colorTexture:function(){return e._textureToComposite}},g_t&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,A=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new We({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=nt.shallowClone(f);g.shaderProgram=A,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Xe.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,Xe.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Xe.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!Xe.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Xe.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,reference:Kt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Xe.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}Fy.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){C_t(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};Fy.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Be.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Be.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[Be.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};Fy.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),E_t(this,e,t)};function E_t(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}Fy.prototype.isSupported=function(){return this._supported};Fy.prototype.isDestroyed=function(){return!1};Fy.prototype.destroy=function(){return d0e(this),h0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var HV=Fy;function I_t(){this.command=void 0,this.near=void 0,this.far=void 0}function WV(e,t,n){let i=e.context,o;i.depthTexture&&(o=new QV);let r;e._useOIT&&i.depthTexture&&(r=new UV(i));let s=new El(i);s.viewport=Xe.clone(n),this.camera=t,this._cameraClone=Eo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new zV(i),this.pickDepthFramebuffer=new GV,this.sceneFramebuffer=new HT,this.globeDepth=o,this.globeTranslucencyFramebuffer=new kV,this.oit=r,this.translucentTileClassification=new HV(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var JX=new d,ZX=new d;function x_t(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,JX)),d.maximumComponent(d.abs(t.position,ZX))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,JX),d.multiplyByScalar(t.position,o,ZX),d.equalsEpsilon(JX,ZX,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&R.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}WV.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return x_t(t,n,D.EPSILON15)?(this._cameraStartFired&&Oi()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Oi(),Eo.clone(t,n),!0)};function b_t(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ie.SCENE2D,u=t.nearToFarDistance2D;i*=1+D.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let A=0;A<f;++A){let g,m;c?(g=Math.min(i-u,n+A*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,A)*n),m=Math.min(i,a*g));let _=h[A];l(_)?(_.near=g,_.far=m):_=h[A]=new FV(g,m)}}function T_t(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var m0e=new zs,S_t=new _c;WV.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let N=0;N<f.length;++N)for(let L=0;L<Be.NUMBER_OF_PASSES;++L)f[N].indices[L]=0;c.length=0,u.length=0;let h=this._commandExtents,A=h.length,g=0,m=+Number.MAX_VALUE,_=-Number.MAX_VALUE,{shadowsEnabled:y}=o,C=+Number.MAX_VALUE,E=-Number.MAX_VALUE,I=Number.MAX_VALUE,b=t.mode===ie.SCENE3D?t.occluder:void 0,{cullingVolume:S}=t,B=m0e.planes;for(let N=0;N<5;++N)B[N]=S.planes[N];S=m0e;for(let N=0;N<i.length;++N){let L=i[N],{pass:p,boundingVolume:x}=L;if(p===Be.COMPUTE)c.push(L);else if(p===Be.OVERLAY)u.push(L);else{let T,w;if(l(x)){if(!e.isVisible(S,L,b))continue;let O=x.computePlaneDistances(r,s,S_t);if(T=O.start,w=O.stop,m=Math.min(m,T),_=Math.max(_,w),y&&L.receiveShadows&&T<Oy.MAXIMUM_DISTANCE&&!(p===Be.GLOBE&&T<-100&&w>100)){let U=w-T;p!==Be.GLOBE&&T<100&&(I=Math.min(I,U)),C=Math.min(C,T),E=Math.max(E,w)}}else L instanceof Ei?(T=a.near,w=a.far):(T=a.near,w=a.far,m=Math.min(m,T),_=Math.max(_,w));let M=h[g];l(M)||(M=h[g]=new I_t),M.command=L,M.near=T,M.far=w,g++}}y&&(C=Math.min(Math.max(C,a.near),a.far),E=Math.max(Math.min(E,a.far),C),o.nearPlane=C,o.farPlane=E,o.closestObjectSize=I),b_t(this,e,m,_);for(let N=0;N<g;N++)T_t(this,e,h[N]);if(g<A)for(let N=g;N<A;N++){let L=h[N];if(!l(L.command))break;L.command=void 0}let v=f.length,{frustumSplits:P}=t;P.length=v+1;for(let N=0;N<v;++N)P[N]=f[N].near,N===v-1&&(P[N+1]=f[N].far)};WV.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var jT=WV;var p0e=.1,w_t=new Lh({pass:Zo.MOST_DETAILED_PRELOAD}),B_t=new Lh({pass:Zo.MOST_DETAILED_PICK}),EP=new Lh({pass:Zo.PICK});function pa(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Xe(0,0,1,1),n=new Eo(e);n.frustum=new An({width:p0e,aspectRatio:1,near:.1}),this._pickOffscreenView=new jT(e,n,t)}pa.prototype.update=function(){this._pickPositionCacheDirty=!0};pa.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new OV,n[t]=i),i};var D_t=new ls,v_t=new d,jV=new d,P_t=new k,R_t=new R;function M_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=R.clone(r.transform,R_t);r._setTransform(R.IDENTITY);let h=d.clone(r.position,v_t);d.multiplyByScalar(r.right,c,jV),d.add(jV,h,h),d.multiplyByScalar(r.up,u,jV),d.add(jV,h,h),r._setTransform(f),e.mode===ie.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let A=s.getPixelDimensions(o.width,o.height,1,1,P_t),g=D_t;return g.right=A.x*.5,g.left=-g.right,g.top=A.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var N_t=new fu,L_t=new k;function O_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,A=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,L_t),_=m.x*n*.5,y=m.y*i*.5,C=N_t;return C.top=g+y,C.bottom=g-y,C.right=A+_,C.left=A-_,C.near=a,C.far=s.far,C.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function YV(e,t,n,i,o){let r=e.camera.frustum;return r instanceof An||r instanceof ls?M_t(e,t,n,i,o):O_t(e,t,n,i,o)}var qV=new Xe(0,0,3,3),KV=new k,IP=new G(0,0,0,0);function $X(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}pa.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.end(h);return o.endFrame(),A};pa.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.readCenterPixel(h);return o.endFrame(),A};pa.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Xe.clone(s,c.viewport);let u=to.transformWindowToDrawingBuffer(e,t,KV),f=$X(i.drawingBufferHeight,u,1,1,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=YV(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=EP,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,IP);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let A=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,LV.decodeMetadataValues(n.classProperty,n.metadataProperty,A)};function F_t(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Xe.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=YV(e,t,1,1,s),o.tilesetPassState=EP,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,IP),e.resolveFramebuffers(c),i.endFrame()}var Q_t=new Vi,k_t=new fu,U_t=new An,G_t=new ls;pa.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=to.transformWindowToDrawingBuffer(e,t,KV);e.pickTranslucentDepth?F_t(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(Q_t):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(k_t):l(s.frustum.width)?f=s.frustum.clone(U_t):f=s.frustum.clone(G_t);let{frustumCommandsList:h}=a,A=h.length;for(let g=0;g<A;++g){let _=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(_)&&_>0&&_<1){let y=h[g],C;return e.mode===ie.SCENE2D?(C=s.position.z,s.position.z=C-y.near+1,f.far=Math.max(1,y.far-y.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=y.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=y.far,c.updateFrustum(f)),n=to.drawingBufferToWorldCoordinates(e,u,_,n),e.mode===ie.SCENE2D&&(s.position.z=C,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var z_t=new Ae;pa.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ie.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,z_t);o.cartographicToCartesian(r,n)}return n};function g0e(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let A=u.primitive,g=!1;typeof A.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=A.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=Bn.toValue(!1,i.show),s.push(i))),u instanceof Sa&&(g=!0,u.show=!1,a.push(u)),g||(A.show=!1,r.push(A)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=Bn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}pa.prototype.drillPick=function(e,t,n,i,o){let r=this;return g0e(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var A0e=new d,V_t=new d;function H_t(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function _0e(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,A0e),s=d.cross(o,r,A0e),a=d.cross(o,s,V_t);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??p0e,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function W_t(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=_0e(e,o,r,a),u=w_t;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let A=0;A<h;++A){let g=s[A];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}pa.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)W_t(this,e,t[n])&&t.splice(n--,1)};function y0e(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof ou&&y0e(o,t,n))}}function XV(e,t,n,i,o,r){let s=[];if(y0e(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new H_t(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function j_t(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function Y_t(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,_0e(e,n,o,f.camera);let h=Xe.clone(f.viewport,qV),A=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=B_t:c.tilesetPassState=EP,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(A,IP),t.resolveFramebuffers(A);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:_}=f,y=_.length;for(let C=0;C<y;++C){let I=e.getPickDepth(t,C).getDepth(a,0,0);if(l(I)&&I>0&&I<1){let b=_[C],S=b.near*(C!==0?t.opaqueFrustumNearOffset:1),B=b.far,v=S+I*(B-S);g=In.getPoint(n,v);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||j_t(m,i)}}function C0e(e,t,n,i,o,r,s,a){return g0e(i,function(){return Y_t(e,t,n,o,r,s,a)})}function YT(e,t,n,i,o,r,s){let a=C0e(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function E0e(e,t,n,i,o,r,s,a){return C0e(e,t,n,i,o,r,s,a)}function JV(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}pa.prototype.pickFromRay=function(e,t,n,i){return YT(this,e,t,n,i,!1,!1)};pa.prototype.drillPickFromRay=function(e,t,n,i,o){return E0e(this,e,t,n,i,o,!1,!1)};pa.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=In.clone(t),n=l(n)?n.slice():n,JV(e,XV(o,e,t,n,i,function(){return YT(o,e,t,n,i,!1,!0)}))};pa.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=In.clone(t),i=l(i)?i.slice():i,JV(e,XV(r,e,t,i,o,function(){return E0e(r,e,t,n,i,o,!1,!0)}))};var q_t=new d,K_t=new d,X_t=new In,I0e=new Ae;function eJ(e,t){let n=e.ellipsoid,i=wi._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,K_t),r=Ae.toCartesian(t,n,q_t),s=X_t;s.origin=r,s.direction=o;let a=new In;return In.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function x0e(e,t){let n=e.ellipsoid,i=Ae.fromCartesian(t,n,I0e);return eJ(e,i)}function b0e(e,t){let n=e.ellipsoid;return Ae.fromCartesian(t,n,I0e).height}function J_t(e,t,n,i,o){let r=eJ(t,n);return XV(e,t,r,i,o,function(){let s=YT(e,t,r,i,o,!0,!0);if(l(s))return b0e(t,s.position)})}function Z_t(e,t,n,i,o,r){let s=x0e(t,n);return XV(e,t,s,i,o,function(){let a=YT(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}pa.prototype.sampleHeight=function(e,t,n,i){let o=eJ(e,t),r=YT(this,e,o,n,i,!0,!1);if(l(r))return b0e(e,r.position)};pa.prototype.clampToHeight=function(e,t,n,i,o){let r=x0e(e,t),s=YT(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};pa.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=J_t(this,e,t[s],n,i);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};pa.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=Z_t(this,e,t[s],n,i,t[s]);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};pa.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var ZV=pa;var $V=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
uniform sampler2D autoExposure;
|
||
#else
|
||
uniform float exposure;
|
||
#endif
|
||
|
||
void main()
|
||
{
|
||
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 color = fragmentColor.rgb;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
color /= texture(autoExposure, vec2(0.5)).r;
|
||
#else
|
||
color *= vec3(exposure);
|
||
#endif
|
||
color = czm_acesTonemapping(color);
|
||
color = czm_inverseGamma(color);
|
||
|
||
out_FragColor = vec4(color, fragmentColor.a);
|
||
}
|
||
`;var e8=`precision highp float;
|
||
|
||
uniform sampler2D randomTexture;
|
||
uniform sampler2D depthTexture;
|
||
uniform float intensity;
|
||
uniform float bias;
|
||
uniform float lengthCap;
|
||
uniform int stepCount;
|
||
uniform int directionCount;
|
||
|
||
vec4 pixelToEye(vec2 screenCoordinate)
|
||
{
|
||
vec2 uv = screenCoordinate / czm_viewport.zw;
|
||
float depth = czm_readDepth(depthTexture, uv);
|
||
vec2 xy = 2.0 * uv - vec2(1.0);
|
||
vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0);
|
||
posEC = posEC / posEC.w;
|
||
// Avoid numerical error at far plane
|
||
if (depth >= 1.0) {
|
||
posEC.z = czm_currentFrustum.y;
|
||
}
|
||
return posEC;
|
||
}
|
||
|
||
// Reconstruct surface normal in eye coordinates, avoiding edges
|
||
vec3 getNormalXEdge(vec3 positionEC)
|
||
{
|
||
// Find the 3D surface positions at adjacent screen pixels
|
||
vec2 centerCoord = gl_FragCoord.xy;
|
||
vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz;
|
||
vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz;
|
||
vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz;
|
||
vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz;
|
||
|
||
// Compute potential tangent vectors
|
||
vec3 dx0 = positionEC - positionLeft;
|
||
vec3 dx1 = positionRight - positionEC;
|
||
vec3 dy0 = positionEC - positionDown;
|
||
vec3 dy1 = positionUp - positionEC;
|
||
|
||
// The shorter tangent is more likely to be on the same surface
|
||
vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1;
|
||
vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1;
|
||
|
||
return normalize(cross(dx, dy));
|
||
}
|
||
|
||
const float sqrtTwoPi = sqrt(czm_twoPi);
|
||
|
||
float gaussian(float x, float standardDeviation) {
|
||
float argument = x / standardDeviation;
|
||
return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation);
|
||
}
|
||
|
||
void main(void)
|
||
{
|
||
vec4 positionEC = pixelToEye(gl_FragCoord.xy);
|
||
|
||
// Exit if we are too close to the back of the frustum, where the depth value is invalid.
|
||
float maxValidDepth = czm_currentFrustum.y - lengthCap;
|
||
if (-positionEC.z > maxValidDepth)
|
||
{
|
||
out_FragColor = vec4(1.0);
|
||
return;
|
||
}
|
||
|
||
vec3 normalEC = getNormalXEdge(positionEC.xyz);
|
||
float gaussianVariance = lengthCap * sqrt(-positionEC.z);
|
||
// Choose a step length such that the marching stops just before 3 * variance.
|
||
float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0);
|
||
float metersPerPixel = czm_metersPerPixel(positionEC, 1.0);
|
||
// Minimum step is 1 pixel to avoid double sampling
|
||
float pixelsPerStep = max(stepLength / metersPerPixel, 1.0);
|
||
stepLength = pixelsPerStep * metersPerPixel;
|
||
|
||
float angleStepScale = 1.0 / float(directionCount);
|
||
float angleStep = angleStepScale * czm_twoPi;
|
||
float cosStep = cos(angleStep);
|
||
float sinStep = sin(angleStep);
|
||
mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep);
|
||
|
||
// Initial sampling direction (different for each pixel)
|
||
const float randomTextureSize = 255.0;
|
||
vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize);
|
||
float randomVal = texture(randomTexture, randomTexCoord).x;
|
||
vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal));
|
||
|
||
float ao = 0.0;
|
||
// Loop over sampling directions
|
||
#if __VERSION__ == 300
|
||
for (int i = 0; i < directionCount; i++)
|
||
{
|
||
#else
|
||
for (int i = 0; i < 16; i++)
|
||
{
|
||
if (i >= directionCount) {
|
||
break;
|
||
}
|
||
#endif
|
||
sampleDirection = rotateStep * sampleDirection;
|
||
|
||
float localAO = 0.0;
|
||
vec2 radialStep = pixelsPerStep * sampleDirection;
|
||
|
||
#if __VERSION__ == 300
|
||
for (int j = 0; j < stepCount; j++)
|
||
{
|
||
#else
|
||
for (int j = 0; j < 64; j++)
|
||
{
|
||
if (j >= stepCount) {
|
||
break;
|
||
}
|
||
#endif
|
||
// Step along sampling direction, away from output pixel
|
||
vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5);
|
||
|
||
// Exit if we stepped off the screen
|
||
if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) {
|
||
break;
|
||
}
|
||
|
||
// Compute step vector from output point to sampled point
|
||
vec4 samplePositionEC = pixelToEye(samplePixel);
|
||
vec3 stepVector = samplePositionEC.xyz - positionEC.xyz;
|
||
|
||
// Estimate the angle from the surface normal.
|
||
float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0);
|
||
dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0);
|
||
dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0);
|
||
|
||
// Weight contribution based on the distance from the output point
|
||
float sampleDistance = length(stepVector);
|
||
float weight = gaussian(sampleDistance, gaussianVariance);
|
||
localAO += weight * dotVal;
|
||
}
|
||
ao += localAO;
|
||
}
|
||
|
||
ao *= angleStepScale * stepLength;
|
||
ao = 1.0 - clamp(ao, 0.0, 1.0);
|
||
ao = pow(ao, intensity);
|
||
out_FragColor = vec4(vec3(ao), 1.0);
|
||
}
|
||
`;var t8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D ambientOcclusionTexture;
|
||
uniform bool ambientOcclusionOnly;
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates);
|
||
out_FragColor = ambientOcclusionOnly ? ao : ao * color;
|
||
}
|
||
`;var n8=`uniform sampler2D colorTexture;
|
||
uniform float gradations;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
|
||
#ifdef CZM_SELECTED_FEATURE
|
||
if (czm_selected()) {
|
||
out_FragColor = vec4(rgb, 1.0);
|
||
return;
|
||
}
|
||
#endif
|
||
float luminance = czm_luminance(rgb);
|
||
float darkness = luminance * gradations;
|
||
darkness = (darkness - fract(darkness)) / gradations;
|
||
out_FragColor = vec4(vec3(darkness), 1.0);
|
||
}
|
||
`;var i8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D bloomTexture;
|
||
uniform bool glowOnly;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
|
||
#ifdef CZM_SELECTED_FEATURE
|
||
if (czm_selected()) {
|
||
out_FragColor = color;
|
||
return;
|
||
}
|
||
#endif
|
||
|
||
vec4 bloom = texture(bloomTexture, v_textureCoordinates);
|
||
out_FragColor = glowOnly ? bloom : bloom + color;
|
||
}
|
||
`;var o8=`uniform sampler2D colorTexture;
|
||
uniform float brightness;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
|
||
vec3 target = vec3(0.0);
|
||
out_FragColor = vec4(mix(target, rgb, brightness), 1.0);
|
||
}
|
||
`;var r8=`uniform sampler2D colorTexture;
|
||
uniform float contrast;
|
||
uniform float brightness;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz;
|
||
sceneColor = czm_RGBToHSB(sceneColor);
|
||
sceneColor.z += brightness;
|
||
sceneColor = czm_HSBToRGB(sceneColor);
|
||
|
||
float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast));
|
||
sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5);
|
||
out_FragColor = vec4(sceneColor, 1.0);
|
||
}
|
||
`;var s8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D blurTexture;
|
||
uniform sampler2D depthTexture;
|
||
uniform float focalDistance;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
vec4 toEye(vec2 uv, float depth)
|
||
{
|
||
vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0));
|
||
vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);
|
||
posInCamera = posInCamera / posInCamera.w;
|
||
return posInCamera;
|
||
}
|
||
|
||
float computeDepthBlur(float depth)
|
||
{
|
||
float f;
|
||
if (depth < focalDistance)
|
||
{
|
||
f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x);
|
||
}
|
||
else
|
||
{
|
||
f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance);
|
||
f = pow(f, 0.1);
|
||
}
|
||
f *= f;
|
||
f = clamp(f, 0.0, 1.0);
|
||
return pow(f, 0.5);
|
||
}
|
||
|
||
void main(void)
|
||
{
|
||
float depth = czm_readDepth(depthTexture, v_textureCoordinates);
|
||
vec4 posInCamera = toEye(v_textureCoordinates, depth);
|
||
float d = computeDepthBlur(-posInCamera.z);
|
||
out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d);
|
||
}
|
||
`;var a8=`uniform sampler2D depthTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
float depth = czm_readDepth(depthTexture, v_textureCoordinates);
|
||
out_FragColor = vec4(vec3(depth), 1.0);
|
||
}
|
||
`;var c8=`uniform sampler2D depthTexture;
|
||
uniform float length;
|
||
uniform vec4 color;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
float directions[3];
|
||
directions[0] = -1.0;
|
||
directions[1] = 0.0;
|
||
directions[2] = 1.0;
|
||
|
||
float scalars[3];
|
||
scalars[0] = 3.0;
|
||
scalars[1] = 10.0;
|
||
scalars[2] = 3.0;
|
||
|
||
float padx = czm_pixelRatio / czm_viewport.z;
|
||
float pady = czm_pixelRatio / czm_viewport.w;
|
||
|
||
#ifdef CZM_SELECTED_FEATURE
|
||
bool selected = false;
|
||
for (int i = 0; i < 3; ++i)
|
||
{
|
||
float dir = directions[i];
|
||
selected = selected || czm_selected(vec2(-padx, dir * pady));
|
||
selected = selected || czm_selected(vec2(padx, dir * pady));
|
||
selected = selected || czm_selected(vec2(dir * padx, -pady));
|
||
selected = selected || czm_selected(vec2(dir * padx, pady));
|
||
if (selected)
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
if (!selected)
|
||
{
|
||
out_FragColor = vec4(color.rgb, 0.0);
|
||
return;
|
||
}
|
||
#endif
|
||
|
||
float horizEdge = 0.0;
|
||
float vertEdge = 0.0;
|
||
|
||
for (int i = 0; i < 3; ++i)
|
||
{
|
||
float dir = directions[i];
|
||
float scale = scalars[i];
|
||
|
||
horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale;
|
||
horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale;
|
||
|
||
vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale;
|
||
vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale;
|
||
}
|
||
|
||
float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge);
|
||
out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0);
|
||
}
|
||
`;var l8=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
uniform sampler2D autoExposure;
|
||
#else
|
||
uniform float exposure;
|
||
#endif
|
||
|
||
// See slides 142 and 143:
|
||
// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting
|
||
|
||
void main()
|
||
{
|
||
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 color = fragmentColor.rgb;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
float exposure = texture(autoExposure, vec2(0.5)).r;
|
||
color /= exposure;
|
||
#else
|
||
color *= vec3(exposure);
|
||
#endif
|
||
|
||
const float A = 0.22; // shoulder strength
|
||
const float B = 0.30; // linear strength
|
||
const float C = 0.10; // linear angle
|
||
const float D = 0.20; // toe strength
|
||
const float E = 0.01; // toe numerator
|
||
const float F = 0.30; // toe denominator
|
||
|
||
const float white = 11.2; // linear white point value
|
||
|
||
vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F;
|
||
float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F;
|
||
|
||
c = czm_inverseGamma(c / w);
|
||
out_FragColor = vec4(c, fragmentColor.a);
|
||
}
|
||
`;var u8=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
uniform sampler2D autoExposure;
|
||
#else
|
||
uniform float exposure;
|
||
#endif
|
||
|
||
void main()
|
||
{
|
||
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 color = fragmentColor.rgb;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
color /= texture(autoExposure, vec2(0.5)).r;
|
||
#else
|
||
color *= vec3(exposure);
|
||
#endif
|
||
color = czm_pbrNeutralTonemapping(color);
|
||
color = czm_inverseGamma(color);
|
||
|
||
out_FragColor = vec4(color, fragmentColor.a);
|
||
}
|
||
`;var f8=`in vec2 v_textureCoordinates;
|
||
|
||
uniform sampler2D colorTexture;
|
||
|
||
const float fxaaQualitySubpix = 0.5;
|
||
const float fxaaQualityEdgeThreshold = 0.125;
|
||
const float fxaaQualityEdgeThresholdMin = 0.0833;
|
||
|
||
void main()
|
||
{
|
||
vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw;
|
||
vec4 color = FxaaPixelShader(
|
||
v_textureCoordinates,
|
||
colorTexture,
|
||
fxaaQualityRcpFrame,
|
||
fxaaQualitySubpix,
|
||
fxaaQualityEdgeThreshold,
|
||
fxaaQualityEdgeThresholdMin);
|
||
float alpha = texture(colorTexture, v_textureCoordinates).a;
|
||
out_FragColor = vec4(color.rgb, alpha);
|
||
}
|
||
`;var u0=`#define SAMPLES 8
|
||
|
||
uniform float delta;
|
||
uniform float sigma;
|
||
uniform float direction; // 0.0 for x direction, 1.0 for y direction
|
||
|
||
uniform sampler2D colorTexture;
|
||
|
||
#ifdef USE_STEP_SIZE
|
||
uniform float stepSize;
|
||
#else
|
||
uniform vec2 step;
|
||
#endif
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
// Incremental Computation of the Gaussian:
|
||
// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html
|
||
|
||
void main()
|
||
{
|
||
vec2 st = v_textureCoordinates;
|
||
vec2 dir = vec2(1.0 - direction, direction);
|
||
|
||
#ifdef USE_STEP_SIZE
|
||
vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw));
|
||
#else
|
||
vec2 step = step;
|
||
#endif
|
||
|
||
vec3 g;
|
||
g.x = 1.0 / (sqrt(czm_twoPi) * sigma);
|
||
g.y = exp((-0.5 * delta * delta) / (sigma * sigma));
|
||
g.z = g.y * g.y;
|
||
|
||
vec4 result = texture(colorTexture, st) * g.x;
|
||
for (int i = 1; i < SAMPLES; ++i)
|
||
{
|
||
g.xy *= g.yz;
|
||
|
||
vec2 offset = float(i) * dir * step;
|
||
result += texture(colorTexture, st - offset) * g.x;
|
||
result += texture(colorTexture, st + offset) * g.x;
|
||
}
|
||
|
||
out_FragColor = result;
|
||
}
|
||
`;var d8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D dirtTexture;
|
||
uniform sampler2D starTexture;
|
||
uniform vec2 dirtTextureDimensions;
|
||
uniform float distortion;
|
||
uniform float ghostDispersal;
|
||
uniform float haloWidth;
|
||
uniform float dirtAmount;
|
||
uniform float earthRadius;
|
||
uniform float intensity;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
// whether it is in space or not
|
||
// 6500000.0 is empirical value
|
||
#define DISTANCE_TO_SPACE 6500000.0
|
||
|
||
// return ndc from world coordinate biased earthRadius
|
||
vec4 getNDCFromWC(vec3 WC, float earthRadius)
|
||
{
|
||
vec4 positionEC = czm_view * vec4(WC, 1.0);
|
||
positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0);
|
||
vec4 positionWC = czm_eyeToWindowCoordinates(positionEC);
|
||
return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0);
|
||
}
|
||
|
||
// Check if current pixel is included Earth
|
||
// if then mask it gradually
|
||
float isInEarth(vec2 texcoord, vec2 sceneSize)
|
||
{
|
||
vec2 NDC = texcoord * 2.0 - 1.0;
|
||
vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0);
|
||
vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5);
|
||
NDC.xy -= earthPosSC.xy;
|
||
|
||
float X = abs(NDC.x) * sceneSize.x;
|
||
float Y = abs(NDC.y) * sceneSize.y;
|
||
|
||
return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0));
|
||
}
|
||
|
||
// For Chromatic effect
|
||
vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace)
|
||
{
|
||
vec2 sceneSize = czm_viewport.zw;
|
||
vec3 color;
|
||
if(isSpace)
|
||
{
|
||
color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r;
|
||
color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g;
|
||
color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b;
|
||
}
|
||
else
|
||
{
|
||
color.r = texture(tex, texcoord + direction * distortion.r).r;
|
||
color.g = texture(tex, texcoord + direction * distortion.g).g;
|
||
color.b = texture(tex, texcoord + direction * distortion.b).b;
|
||
}
|
||
return vec4(clamp(color, 0.0, 1.0), 0.0);
|
||
}
|
||
|
||
void main(void)
|
||
{
|
||
vec4 originalColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 rgb = originalColor.rgb;
|
||
bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE;
|
||
|
||
// Sun position
|
||
vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0);
|
||
vec4 sunPositionEC = czm_view * sunPos;
|
||
vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC);
|
||
sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0);
|
||
|
||
// If sun is not in the screen space, use original color.
|
||
if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1)))
|
||
{
|
||
// Lens flare is disabled when not in space until #5932 is fixed.
|
||
// https://github.com/CesiumGS/cesium/issues/5932
|
||
out_FragColor = originalColor;
|
||
return;
|
||
}
|
||
|
||
vec2 texcoord = vec2(1.0) - v_textureCoordinates;
|
||
vec2 pixelSize = czm_pixelRatio / czm_viewport.zw;
|
||
vec2 invPixelSize = 1.0 / pixelSize;
|
||
vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion);
|
||
|
||
// ghost vector to image centre:
|
||
vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal;
|
||
vec3 direction = normalize(vec3(ghostVec, 0.0));
|
||
|
||
// sample ghosts:
|
||
vec4 result = vec4(0.0);
|
||
vec4 ghost = vec4(0.0);
|
||
for (int i = 0; i < 4; ++i)
|
||
{
|
||
vec2 offset = fract(texcoord + ghostVec * float(i));
|
||
// Only bright spots from the centre of the source image
|
||
ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace);
|
||
}
|
||
result += ghost;
|
||
|
||
// sample halo
|
||
vec2 haloVec = normalize(ghostVec) * haloWidth;
|
||
float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5));
|
||
weightForHalo = pow(1.0 - weightForHalo, 5.0);
|
||
|
||
result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5;
|
||
|
||
// dirt on lens
|
||
vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions;
|
||
if (dirtTexCoords.x > 1.0)
|
||
{
|
||
dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x);
|
||
}
|
||
if (dirtTexCoords.y > 1.0)
|
||
{
|
||
dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y);
|
||
}
|
||
result += dirtAmount * texture(dirtTexture, dirtTexCoords);
|
||
|
||
// Rotating starburst texture's coordinate
|
||
// dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0))
|
||
float camrot = czm_view[0].z + czm_view[1].y;
|
||
float cosValue = cos(camrot);
|
||
float sinValue = sin(camrot);
|
||
mat3 rotation = mat3(
|
||
cosValue, -sinValue, 0.0,
|
||
sinValue, cosValue, 0.0,
|
||
0.0, 0.0, 1.0
|
||
);
|
||
|
||
vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0);
|
||
vec3 st2 = vec3((rotation * st1).xy, 1.0);
|
||
vec3 st3 = st2 * 0.5 + vec3(0.5);
|
||
vec2 lensStarTexcoord = st3.xy;
|
||
float weightForLensFlare = length(vec3(sunPos.xy, 0.0));
|
||
float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0);
|
||
|
||
if (!isSpace)
|
||
{
|
||
result *= oneMinusWeightForLensFlare * intensity * 0.2;
|
||
}
|
||
else
|
||
{
|
||
result *= oneMinusWeightForLensFlare * intensity;
|
||
result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0;
|
||
}
|
||
|
||
result += texture(colorTexture, v_textureCoordinates);
|
||
|
||
out_FragColor = result;
|
||
}
|
||
`;var h8=`uniform sampler2D colorTexture;
|
||
uniform vec3 white;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
uniform sampler2D autoExposure;
|
||
#else
|
||
uniform float exposure;
|
||
#endif
|
||
|
||
// See equation 4:
|
||
// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
|
||
|
||
void main()
|
||
{
|
||
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 color = fragmentColor.rgb;
|
||
#ifdef AUTO_EXPOSURE
|
||
float exposure = texture(autoExposure, vec2(0.5)).r;
|
||
color /= exposure;
|
||
#else
|
||
color *= vec3(exposure);
|
||
#endif
|
||
color = (color * (1.0 + color / white)) / (1.0 + color);
|
||
color = czm_inverseGamma(color);
|
||
out_FragColor = vec4(color, fragmentColor.a);
|
||
}
|
||
`;var m8=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
float rand(vec2 co)
|
||
{
|
||
return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453);
|
||
}
|
||
|
||
void main(void)
|
||
{
|
||
float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1;
|
||
vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb;
|
||
vec3 green = vec3(0.0, 1.0, 0.0);
|
||
out_FragColor = vec4((noiseValue + rgb) * green, 1.0);
|
||
}
|
||
`;var A8=`uniform sampler2D colorTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
#ifdef AUTO_EXPOSURE
|
||
uniform sampler2D autoExposure;
|
||
#else
|
||
uniform float exposure;
|
||
#endif
|
||
|
||
// See equation 3:
|
||
// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
|
||
|
||
void main()
|
||
{
|
||
vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
|
||
vec3 color = fragmentColor.rgb;
|
||
#ifdef AUTO_EXPOSURE
|
||
float exposure = texture(autoExposure, vec2(0.5)).r;
|
||
color /= exposure;
|
||
#else
|
||
color *= vec3(exposure);
|
||
#endif
|
||
color = color / (1.0 + color);
|
||
color = czm_inverseGamma(color);
|
||
out_FragColor = vec4(color, fragmentColor.a);
|
||
}
|
||
`;var p8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D silhouetteTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main(void)
|
||
{
|
||
vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates);
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
out_FragColor = mix(color, silhouetteColor, silhouetteColor.a);
|
||
}
|
||
`;function f0(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new vi,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new k,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(f0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function T0e(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function $_t(e,t){T0e(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new vi,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function S0e(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function eyt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function tyt(e,t){let n=`uniform sampler2D colorTexture;
|
||
in vec2 v_textureCoordinates;
|
||
float sampleTexture(vec2 offset) {
|
||
`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset);
|
||
return czm_luminance(color.rgb);
|
||
`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r;
|
||
`,n+=`}
|
||
|
||
`,n+=`uniform vec2 colorTextureDimensions;
|
||
uniform vec2 minMaxLuminance;
|
||
uniform sampler2D previousLuminance;
|
||
void main() {
|
||
float color = 0.0;
|
||
float xStep = 1.0 / colorTextureDimensions.x;
|
||
float yStep = 1.0 / colorTextureDimensions.y;
|
||
int count = 0;
|
||
for (int i = 0; i < 3; ++i) {
|
||
for (int j = 0; j < 3; ++j) {
|
||
vec2 offset;
|
||
offset.x = -xStep + float(i) * xStep;
|
||
offset.y = -yStep + float(j) * yStep;
|
||
if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) {
|
||
continue;
|
||
}
|
||
color += sampleTexture(offset);
|
||
++count;
|
||
}
|
||
}
|
||
if (count > 0) {
|
||
color /= float(count);
|
||
}
|
||
`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r;
|
||
color = clamp(color, minMaxLuminance.x, minMaxLuminance.y);
|
||
color = previous + (color - previous) / (60.0 * 1.5);
|
||
color = clamp(color, minMaxLuminance.x, minMaxLuminance.y);
|
||
`),n+=` out_FragColor = vec4(color);
|
||
}
|
||
`,n}function nyt(e,t){S0e(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(tyt(r,i),{framebuffer:n[r].framebuffer,uniformMap:eyt(e,r)});e._commands=o}f0.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new Ei({color:new G(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};f0.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,$_t(this,e),nyt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};f0.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};f0.prototype.isDestroyed=function(){return!1};f0.prototype.destroy=function(){return T0e(this),S0e(this),ue(this)};var g8=f0;var iyt={NEAREST:0,LINEAR:1},_d=iyt;function d0(e){e=e??V.EMPTY_OBJECT;let{name:t=Xn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=_d.NEAREST,pixelFormat:a=et.RGBA,pixelDatatype:c=He.UNSIGNED_BYTE,clearColor:u=G.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new El;h.scissorTest={enabled:!0,rectangle:l(f)?Xe.clone(f):new Xe},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(d0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var oyt=/uniform\s+sampler2D\s+depthTexture/g;d0.prototype._isSupported=function(e){return!oyt.test(this._fragmentShader)||e.depthTexture};function ryt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Nt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Nt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function syt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function ayt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function cyt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=syt(e,r),n[r]=ryt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Nt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=ayt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=wt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function lyt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE
|
||
uniform sampler2D czm_idTexture;
|
||
uniform sampler2D czm_selectedIdTexture;
|
||
uniform float czm_selectedIdTextureStep;
|
||
in vec2 v_textureCoordinates;
|
||
bool czm_selected(vec2 offset)
|
||
{
|
||
bool selected = false;
|
||
vec4 id = texture(czm_idTexture, v_textureCoordinates + offset);
|
||
for (int i = 0; i < ${t}; ++i)
|
||
{
|
||
vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5));
|
||
if (all(equal(id, selectedId)))
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
bool czm_selected()
|
||
{
|
||
return czm_selected(vec2(0.0));
|
||
}
|
||
|
||
${e}`}function uyt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=lyt(n,o)}let i=new We({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function fyt(e){let t=e._sampleMode,n,i;t===_d.LINEAR?(n=Zt.LINEAR,i=pi.LINEAR):(n=Zt.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function dyt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function hyt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function myt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Nt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=hyt(e,u);else if(typeof u=="string"){let h=new we({url:u});s.push(h.fetchImage().then(dyt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function w0e(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Nt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function Ayt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function pyt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:on.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=G.floatToByte(h.red),r[o+1]=G.floatToByte(h.green),r[o+2]=G.floatToByte(h.blue),r[o+3]=G.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=G.floatToByte(c.red),r[o+1]=G.floatToByte(c.green),r[o+2]=G.floatToByte(c.blue),r[o+3]=G.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:on.NEAREST})}d0.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&w0e(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=Ayt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,pyt(this,e),cyt(this),myt(this,e),uyt(this,e),fyt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ue.fromCache({viewport:new Xe(0,0,i.width,i.height)}))),this._command.renderState=o};d0.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,on.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};d0.prototype.isDestroyed=function(){return!1};d0.prototype.destroy=function(){return w0e(this),ue(this)};var So=d0;function h0(e){e=e??V.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=Xn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(h0.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});h0.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};h0.prototype.get=function(e){return this._stages[e]};function gyt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}h0.prototype.update=function(e,t){this._selectedDirty=gyt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};h0.prototype.isDestroyed=function(){return!1};h0.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var tf=h0;var zr={};function tJ(e){let o=`#define USE_STEP_SIZE
|
||
${u0}`,r=new So({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:_d.LINEAR}),s=new So({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:_d.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new tf({name:e,stages:[r,s],uniforms:a})}zr.createBlurStage=function(){return tJ("czm_blur")};zr.createDepthOfFieldStage=function(){let e=tJ("czm_depth_of_field_blur"),t=new So({name:"czm_depth_of_field_composite",fragmentShader:s8,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new tf({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};zr.createEdgeDetectionStage=function(){let e=Xn();return new So({name:`czm_edge_detection_${e}`,fragmentShader:c8,uniforms:{length:.25,color:G.clone(G.BLACK)}})};zr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function _yt(e){if(!l(e))return zr.createEdgeDetectionStage();let t=new tf({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a};
|
||
`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates);
|
||
if (edge${a}.a > 0.0)
|
||
{
|
||
color = edge${a};
|
||
break;
|
||
}
|
||
`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates;
|
||
void main() {
|
||
vec4 color = vec4(0.0);
|
||
for (int i = 0; i < ${e.length}; i++)
|
||
{
|
||
${o} }
|
||
out_FragColor = color;
|
||
}
|
||
`,s=new So({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new tf({name:"czm_edge_detection_composite",stages:[t,s]})}zr.createSilhouetteStage=function(e){let t=_yt(e),n=new So({name:"czm_silhouette_color_edges",fragmentShader:p8,uniforms:{silhouetteTexture:t.name}});return new tf({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};zr.isSilhouetteSupported=function(e){return e.context.depthTexture};zr.createBloomStage=function(){let e=new So({name:"czm_bloom_contrast_bias",fragmentShader:r8,uniforms:{contrast:128,brightness:-.3}}),t=tJ("czm_bloom_blur"),n=new tf({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new So({name:"czm_bloom_generate_composite",fragmentShader:i8,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new tf({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};zr.createAmbientOcclusionStage=function(){let e=new So({name:"czm_ambient_occlusion_generate",fragmentShader:e8,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new So({name:"czm_ambient_occlusion_composite",fragmentShader:t8,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new tf({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var yyt=`#define FXAA_QUALITY_PRESET 39
|
||
${mz}
|
||
${f8}`;zr.createFXAAStage=function(){return new So({name:"czm_FXAA",fragmentShader:yyt,sampleMode:_d.LINEAR})};zr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
|
||
`:"";return t+=$V,new So({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
|
||
`:"";return t+=l8,new So({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
|
||
`:"";return t+=u8,new So({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
|
||
`:"";return t+=A8,new So({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE
|
||
`:"";return t+=h8,new So({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:G.WHITE,autoExposure:void 0,exposure:1}})};zr.createAutoExposureStage=function(){return new g8};zr.createBlackAndWhiteStage=function(){return new So({name:"czm_black_and_white",fragmentShader:n8,uniforms:{gradations:5}})};zr.createBrightnessStage=function(){return new So({name:"czm_brightness",fragmentShader:o8,uniforms:{brightness:.5}})};zr.createNightVisionStage=function(){return new So({name:"czm_night_vision",fragmentShader:m8})};zr.createDepthViewStage=function(){return new So({name:"czm_depth_view",fragmentShader:a8})};zr.createLensFlareStage=function(){return new So({name:"czm_lens_flare",fragmentShader:d8,uniforms:{dirtTexture:fn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:fn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:te.WGS84.maximumRadius}})};var yd=zr;function eg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function bP(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function nJ(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[bP(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[bP(h)]=!0)}}}return i.name}function xP(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let A=i.get(h);l(A.length)?a=xP(e,t,n,A,o):a=nJ(e,t,n,A,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=bP(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=bP(i.get(u));let h=n[f];for(let A=0;A<u;++A)h[bP(i.get(A))]=!0}return a}function Cyt(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=xP(e,t,n,i,void 0);a=xP(e,t,n,o,a),a=nJ(e,t,n,r,a),a=xP(e,t,n,e,a),nJ(e,t,n,s,a)}else xP(e,t,n,e,void 0);return n}function Eyt(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,A=e._framebuffers,g=A.length;for(f=0;f<g;++f){if(h=A[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!G.equals(u,h.clearColor))continue;let m=h.stages,_=m.length,y=!1;for(let C=0;C<_;++C)if(n[m[C]]){y=!0;break}if(!y)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new vi({pixelFormat:a,pixelDatatype:c}),clear:void 0},A.push(h),h)}function Iyt(e,t){let n=Cyt(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=Eyt(e,i,n[i]))}function iJ(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function xyt(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(D.isPowerOfTwo(h)||(h=D.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new Ei({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}eg.prototype.updateDependencies=function(){this._updateDependencies=!0};eg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(iJ(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&Iyt(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,iJ(this),xyt(this,e))};eg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};eg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};eg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};eg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};eg.prototype.isDestroyed=function(){return!1};eg.prototype.destroy=function(){return iJ(this),ue(this)};var qT=eg;var byt={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var Qy=Object.freeze(byt);var oJ=[];function xl(){let e=yd.createFXAAStage(),t=yd.createAmbientOcclusionStage(),n=yd.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=yd.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=Qy.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new qT(this),r={},s=oJ;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(xl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return rJ(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case Qy.REINHARD:n=yd.createReinhardTonemappingStage(t);break;case Qy.MODIFIED_REINHARD:n=yd.createModifiedReinhardTonemappingStage(t);break;case Qy.FILMIC:n=yd.createFilmicTonemappingStage(t);break;case Qy.PBR_NEUTRAL:n=yd.createPbrNeutralTonemappingStage(t);break;default:n=yd.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function rJ(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}xl.prototype.add=function(e){let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};xl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};xl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};xl.prototype.get=function(e){return rJ(this),this._stages[e]};xl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};xl.prototype.getStageByName=function(e){return this._stageNames[e]};xl.prototype.update=function(e,t,n){rJ(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&(o[s++]=E)}o.length=s;let a=s!==i.length;if(!a){for(let C=0;C<s;++C)if(o[C]!==i[C]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,A=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),_=h.enabled&&h._isSupported(e),y=A.enabled&&A._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||_!==this._tonemappingEnabled||y!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=_,this._fxaaEnabled=y,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let E=new Uint8Array(196608);for(let I=0;I<196608;I+=3)E[I]=Math.floor(Math.random()*255);this._randomTexture=new Nt({context:e,pixelFormat:et.RGB,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:E,width:256,height:256},sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),A.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let C=0;C<r.length;++C)r[C].update(e,t);s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};xl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function m0(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}xl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return m0(t)};function gA(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){gA(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)gA(e.get(r),t,m0(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)gA(e.get(r),t,n,i,o)}xl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),A=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),_=s.enabled&&s._isSupported(e);if(!_&&!h&&!A&&!m&&r===0)return;let y=t;h&&a.ready&&(gA(a,e,y,n,i),y=m0(a)),A&&c.ready&&(gA(c,e,y,n,i),y=m0(c)),g&&u.ready&&gA(u,e,y,n,i),m&&f.ready&&(gA(f,e,y,n,i),y=m0(f));let C=y;if(r>0){gA(o[0],e,y,n,i);for(let E=1;E<r;++E)gA(o[E],e,m0(o[E-1]),n,i);C=m0(o[r-1])}_&&s.ready&&gA(s,e,C,n,i)};xl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};xl.prototype.isDestroyed=function(){return!1};xl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var _8=xl;var Tyt={SHIFT:0,CTRL:1,ALT:2},ja=Object.freeze(Tyt);var Syt={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},vn=Object.freeze(Syt);function ky(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function fJ(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function A0(e){if(e.shiftKey)return ja.SHIFT;if(e.ctrlKey)return ja.CTRL;if(e.altKey)return ja.ALT}var os={LEFT:0,MIDDLE:1,RIGHT:2};function nf(e,t,n,i){function o(r){i(e,r)}jt.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function wyt(e){let t=e._element,n=l(t.disableRootEvents)?t:document;jt.supportsPointerEvents()?(nf(e,"pointerdown",t,Myt),nf(e,"pointerup",t,F0e),nf(e,"pointermove",t,Nyt),nf(e,"pointercancel",t,F0e)):(nf(e,"mousedown",t,Q0e),nf(e,"mouseup",n,k0e),nf(e,"mousemove",n,U0e),nf(e,"touchstart",t,Pyt),nf(e,"touchend",n,R0e),nf(e,"touchmove",n,Ryt),nf(e,"touchcancel",n,R0e)),nf(e,"dblclick",t,Dyt);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",nf(e,i,t,vyt)}function Byt(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var B0e={position:new k};function dJ(e){e._lastSeenTouchEvent=Oi()}function hJ(e){return Oi()-e._lastSeenTouchEvent>Fh.mouseEmulationIgnoreMilliseconds}function uJ(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function Q0e(e,t){if(!hJ(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===os.LEFT)i=vn.LEFT_DOWN;else if(n===os.MIDDLE)i=vn.MIDDLE_DOWN;else if(n===os.RIGHT)i=vn.RIGHT_DOWN;else return;let o=ky(e,t,e._primaryPosition);k.clone(o,e._primaryStartPosition),k.clone(o,e._primaryPreviousPosition);let r=A0(t),s=e.getInputAction(i,r);l(s)&&(k.clone(o,B0e.position),s(B0e),t.preventDefault())}var D0e={position:new k},v0e={position:new k};function sJ(e,t,n,i){let o=A0(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=ky(e,i,e._primaryPosition);if(l(r)&&(k.clone(a,D0e.position),r(D0e)),l(s)){let c=e._primaryStartPosition;uJ(c,a,e._clickPixelTolerance)&&(k.clone(a,v0e.position),s(v0e))}}}function k0e(e,t){if(!hJ(e))return;let n=t.button;n!==os.LEFT&&n!==os.MIDDLE&&n!==os.RIGHT||(e._buttonDown[os.LEFT]&&(sJ(e,vn.LEFT_UP,vn.LEFT_CLICK,t),e._buttonDown[os.LEFT]=!1),e._buttonDown[os.MIDDLE]&&(sJ(e,vn.MIDDLE_UP,vn.MIDDLE_CLICK,t),e._buttonDown[os.MIDDLE]=!1),e._buttonDown[os.RIGHT]&&(sJ(e,vn.RIGHT_UP,vn.RIGHT_CLICK,t),e._buttonDown[os.RIGHT]=!1))}var aJ={startPosition:new k,endPosition:new k};function U0e(e,t){if(!hJ(e))return;let n=A0(t),i=ky(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(vn.MOUSE_MOVE,n);l(r)&&(k.clone(o,aJ.startPosition),k.clone(i,aJ.endPosition),r(aJ)),k.clone(i,o),(e._buttonDown[os.LEFT]||e._buttonDown[os.MIDDLE]||e._buttonDown[os.RIGHT])&&t.preventDefault()}var P0e={position:new k};function Dyt(e,t){let n=t.button,i;if(n===os.LEFT)i=vn.LEFT_DOUBLE_CLICK;else return;let o=A0(t),r=e.getInputAction(i,o);l(r)&&(ky(e,t,P0e.position),r(P0e))}function vyt(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=A0(t),o=e.getInputAction(vn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function Pyt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,ky(e,r,new k));y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,k.clone(a.get(s)))}function R0e(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var M0e={position:new k},cJ={position1:new k,position2:new k},N0e={position:new k},L0e={position:new k},O0e={position:new k};function y8(e,t){let n=A0(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[os.LEFT]){if(e._buttonDown[os.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(vn.LEFT_UP,n),l(r)&&(k.clone(e._primaryPosition,N0e.position),r(N0e)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(vn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];uJ(c,u,e._clickPixelTolerance)&&(k.clone(e._primaryPosition,L0e.position),s(L0e))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(vn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];k.clone(c,e._primaryPosition),k.clone(c,e._primaryStartPosition),k.clone(c,e._primaryPreviousPosition),e._buttonDown[os.LEFT]=!0,r=e.getInputAction(vn.LEFT_DOWN,n),l(r)&&(k.clone(c,M0e.position),r(M0e)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(vn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];uJ(u,f,e._holdPixelTolerance)&&(k.clone(e._primaryPosition,O0e.position),s(O0e))}},Fh.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(vn.PINCH_START,n),l(r)&&(k.clone(i.values[0],cJ.position1),k.clone(i.values[1],cJ.position2),r(cJ),t.preventDefault()))}function Ryt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&ky(e,r,u)}G0e(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,k.clone(a.get(s),c.get(s))}var lJ={startPosition:new k,endPosition:new k},TP={distance:{startPosition:new k,endPosition:new k},angleAndHeight:{startPosition:new k,endPosition:new k}};function G0e(e,t){let n=A0(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[os.LEFT]){let a=i.values[0];k.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(vn.MOUSE_MOVE,n),l(s)&&(k.clone(c,lJ.startPosition),k.clone(a,lJ.endPosition),s(lJ)),k.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(vn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,A=c.y-a.y,g=Math.sqrt(h*h+A*A)*.25,m=f.x-u.x,_=f.y-u.y,y=Math.sqrt(m*m+_*_)*.25,C=(c.y+a.y)*.125,E=(f.y+u.y)*.125,I=Math.atan2(A,h),b=Math.atan2(_,m);k.fromElements(0,y,TP.distance.startPosition),k.fromElements(0,g,TP.distance.endPosition),k.fromElements(b,E,TP.angleAndHeight.startPosition),k.fromElements(I,C,TP.angleAndHeight.endPosition),s(TP)}}function Myt(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,ky(e,t,new k)),y8(e,t),e._previousPositions.set(i,k.clone(n.get(i)))}else Q0e(e,t)}function F0e(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),y8(e,t),e._previousPositions.remove(i)}else k0e(e,t)}function Nyt(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;ky(e,t,o),G0e(e,t);let r=e._previousPositions;k.clone(n.get(i),r.get(i))}else U0e(e,t)}function Fh(e){this._inputEvents={},this._buttonDown={[os.LEFT]:!1,[os.MIDDLE]:!1,[os.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-Fh.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new k,this._primaryPosition=new k,this._primaryPreviousPosition=new k,this._positions=new Pt,this._previousPositions=new Pt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,wyt(this)}Fh.prototype.setInputAction=function(e,t,n){let i=fJ(t,n);this._inputEvents[i]=e};Fh.prototype.getInputAction=function(e,t){let n=fJ(e,t);return this._inputEvents[n]};Fh.prototype.removeInputAction=function(e,t){let n=fJ(e,t);delete this._inputEvents[n]};Fh.prototype.isDestroyed=function(){return!1};Fh.prototype.destroy=function(){return Byt(this),ue(this)};Fh.mouseEmulationIgnoreMilliseconds=800;Fh.touchHoldDelayMilliseconds=1500;var Cd=Fh;function p0(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}p0.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};p0.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof An,!(this._previousMode===ie.SCENE2D||this._previousMode===ie.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE2D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.COLUMBUS_VIEW?hCt(this,e):CCt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var Lyt=new d,Oyt=new d,Fyt=new d,Qyt=new d,kyt=new d,Uyt=new d,Gyt=new d,zyt=new Ae,Vyt=new R,Hyt=new Vi,Wyt=new An,jyt={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};p0.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ie.COLUMBUS_VIEW||this._previousMode===ie.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ie.COLUMBUS_VIEW,!0),n.camera._setTransform(R.IDENTITY);let i=Lyt,o=Oyt,r=Fyt;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ie.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,Gyt),h=kt.eastNorthUpToFixedFrame(f,t,Vyt);R.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,zyt),i),R.multiplyByPointAsVector(h,o,o),R.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=Wyt,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=Hyt,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=D.toRadians(60));let a=jyt;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=ICt(a);SP(this,c),this._previousMode===ie.SCENE2D?ECt(this,e,a,c):(a.position2D=R.multiplyByPoint(Eo.TRANSFORM_2D,i,Qyt),a.direction2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,o,kyt),a.up2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,Uyt),n._mode=ie.MORPHING,Z0e(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var pJ={position:new d,direction:new d,up:new d,frustum:void 0},V0e=new Vi;p0.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ie.SCENE3D||this._previousMode===ie.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE3D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.SCENE2D)iCt(this,e,t);else{let i;e>0?(i=pJ,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=H0e(this,t);let o,r=n.camera;r.frustum instanceof An?o=r.frustum.clone():(o=V0e,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=D.toRadians(60)),i.frustum=o;let s=eIe(i);SP(this,s),AJ(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};p0.prototype.isDestroyed=function(){return!1};p0.prototype.destroy=function(){return C8(this),ue(this)};function SP(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Cd(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,vn.LEFT_DOWN),e._morphHandler.setInputAction(n,vn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,vn.RIGHT_DOWN),e._morphHandler.setInputAction(n,vn.WHEEL)}}function C8(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var Yyt=new Ae,qyt=new d,Kyt=new R;function H0e(e,t){let n=e._scene,i=n.camera,o=pJ,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,Yyt);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,qyt),f=kt.eastNorthUpToFixedFrame(u,t,Kyt);return R.multiplyByPointAsVector(f,i.direction,s),R.multiplyByPointAsVector(f,i.up,a),o}var Xyt=new d,Jyt=new d,Zyt=new d,$yt=new d,eCt=new d,tCt=new d;function AJ(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,Xyt),a=d.clone(r.direction,Jyt),c=d.clone(r.up,Zyt),u=R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,n.position,$yt),f=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.direction,eCt),h=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.up,tCt);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,0,1,t,i)}});e._currentTweens.push(g)}var nCt=new An,W0e=new d,j0e=new d,Y0e=new d,gJ=new d,q0e=new d,K0e=new d;function iCt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=pJ,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=H0e(e,n));let s;e._morphToOrthographic?(s=nCt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=V0e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=D.toRadians(60)),r.frustum=s;let a=eIe(r);SP(e,a);let c;e._morphToOrthographic?c=function(){AJ(e,t,r,a)}:c=function(){J0e(e,t,r,function(){AJ(e,t,r,a)})},t>0?(i._mode=ie.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,gJ),complete:function(){i._mode=ie.MORPHING,c()}})):c()}function Ed(e,t,n,i){return d.lerp(e,t,n,i)}function X0e(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof An)return;let a=s.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(A){s.frustum.fov=D.lerp(a,c,A.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var oCt=new d,rCt=new d,sCt=new d,mJ=new d,aCt=new d,cCt=new d,lCt=new ls,uCt=new In,fCt=new d,dCt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function hCt(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,oCt),r=d.clone(i.direction,rCt),s=d.clone(i.up,sCt),a=d.negate(d.UNIT_Z,aCt),c=d.clone(d.UNIT_Y,cCt),u=mJ;if(t>0)d.clone(d.ZERO,mJ),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,mJ);let y=uCt;R.multiplyByPoint(Eo.TRANSFORM_2D,o,y.origin),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,y.direction);let C=n.globe;if(l(C)){let E=C.pickWorldCoordinates(y,n,!0,fCt);l(E)&&(R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,E,u),u.z+=d.distance(o,u))}}let f=lCt;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=dCt;h.position=u,h.direction=a,h.up=c,h.frustum=f;let A=tIe(h);SP(e,A);function g(y){Ed(o,u,y.time,i.position),Ed(r,a,y.time,i.direction),Ed(s,c,y.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(y,C){y.position.z=C}let _=n.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){X0e(e,t,h,m,A)}});e._currentTweens.push(_)}var z0e=new Ae,mCt={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new ls},ACt={position:new d,direction:new d,up:new d,frustum:void 0},pCt=new d,gCt=new In,_Ct=new R,yCt=new d;function CCt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=mCt;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,z0e),i.mapProjection.project(z0e,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=gCt;d.clone(r.position2D,h.origin);let A=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,yCt),m=kt.eastNorthUpToFixedFrame(g,n,_Ct);R.inverseTransformation(m,m),R.multiplyByPointAsVector(m,A,A),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,A,A);let _=i.globe;if(l(_)){let y=_.pickWorldCoordinates(h,i,!0,pCt);if(l(y)){let C=d.distance(r.position2D,y);y.x+=C,d.clone(y,r.position2D)}}}function s(h,A){h.position.x=A}R.multiplyByPoint(Eo.TRANSFORM_2D,r.position,r.position2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.direction,r.direction2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=ACt;R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=tIe(c);SP(e,u);function f(){X0e(e,t,r,s,u)}Z0e(e,t,r,f)}function J0e(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(A){r.frustum.fov=D.lerp(c,a,A.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function ECt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,gJ),a=d.clone(n.direction,q0e),c=d.clone(n.up,K0e);o._mode=ie.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,W0e),h=d.clone(r.direction,j0e),A=d.clone(r.up,Y0e);f.z=s.z;function g(_){Ed(f,s,_.time,r.position),Ed(h,a,_.time,r.direction),Ed(A,c,_.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():J0e(e,0,n,u)}function Z0e(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,W0e),a=d.clone(r.direction,j0e),c=d.clone(r.up,Y0e),u=d.clone(n.position2D,gJ),f=d.clone(n.direction2D,q0e),h=d.clone(n.up2D,K0e);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,1,0,t,i)}});e._currentTweens.push(g)}function $0e(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ps.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function eIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE3D,n.morphTime=ie.getMorphTime(ie.SCENE3D),C8(t);let i=n.camera;(t._previousMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE3D,r)}}function tIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE2D,n.morphTime=ie.getMorphTime(ie.SCENE2D),C8(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE2D,o)}}function ICt(e){return function(t){let n=t._scene;n._mode=ie.COLUMBUS_VIEW,n.morphTime=ie.getMorphTime(ie.COLUMBUS_VIEW),C8(t);let i=n.camera;(t._previousModeMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.COLUMBUS_VIEW,r)}}var E8=p0;var xCt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},$i=Object.freeze(xCt);function ga(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function bCt(e,t){k.clone(e.distance.startPosition,t.distance.startPosition),k.clone(e.distance.endPosition,t.distance.endPosition),k.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),k.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function nIe(e,t,n){let i=ga($i.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new k;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new k,endPosition:new k},u.angleAndHeight={startPosition:new k,endPosition:new k},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,k.lerp(f.position1,f.position2,.5,s[i])},vn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},vn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(bCt(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(k.clone(f.distance.endPosition,u.distance.endPosition),k.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,A=u.prevAngle,g=Math.PI*2;for(;h>=A+Math.PI;)h-=g;for(;h<A-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-A*n.clientWidth/12}},vn.PINCH_MOVE,t)}function iIe(e,t){let n=ga($i.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new k,endPosition:new k,valid:!1}),s.startPosition=new k,k.clone(k.ZERO,s.startPosition),s.endPosition=new k,e._eventHandler.setInputAction(function(c){let u=7.5*D.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,k.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},vn.WHEEL,t)}function KT(e,t,n){let i=ga(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new k;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new k,endPosition:new k,valid:!1});let c,u;n===$i.LEFT_DRAG?(c=vn.LEFT_DOWN,u=vn.LEFT_UP):n===$i.RIGHT_DRAG?(c=vn.RIGHT_DOWN,u=vn.RIGHT_UP):n===$i.MIDDLE_DRAG&&(c=vn.MIDDLE_DOWN,u=vn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,k.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){_J(ga(n,void 0),e);for(let f of Object.values(ja)){let h=ga(n,f);_J(h,e)}},u,t)}function _J(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function oIe(e,t){k.clone(e.startPosition,t.startPosition),k.clone(e.endPosition,t.endPosition)}function TCt(e,t,n){let i=n._isDown,o=!1,r=ga(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,_J(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new k,endPosition:new k,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function rIe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in $i)if($i.hasOwnProperty(s)){let a=$i[s];if(l(a)){let c=ga(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new k,endPosition:new k,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new k,endPosition:new k})}}e._eventHandler.setInputAction(function(s){for(let a in $i)if($i.hasOwnProperty(a)){let c=$i[a];if(l(c)){let u=ga(c,t);TCt(c,t,e),r[u]&&(n[u]?(oIe(i[u],o[u]),o[u].valid=!0,oIe(s,i[u]),n[u]=!1):k.clone(s.endPosition,i[u].endPosition))}}k.clone(s.endPosition,e._currentMousePosition)},vn.MOUSE_MOVE,t)}function Id(e){this._eventHandler=new Cd(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new k,iIe(this,void 0),nIe(this,void 0,e),KT(this,void 0,$i.LEFT_DRAG),KT(this,void 0,$i.RIGHT_DRAG),KT(this,void 0,$i.MIDDLE_DRAG),rIe(this,void 0);for(let t in ja)if(ja.hasOwnProperty(t)){let n=ja[t];l(n)&&(iIe(this,n),nIe(this,n,e),KT(this,n,$i.LEFT_DRAG),KT(this,n,$i.RIGHT_DRAG),KT(this,n,$i.MIDDLE_DRAG),rIe(this,n))}}Object.defineProperties(Id.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[ga($i.WHEEL)]||!this._update[ga($i.WHEEL,ja.SHIFT)]||!this._update[ga($i.WHEEL,ja.CTRL)]||!this._update[ga($i.WHEEL,ja.ALT)];return this._buttonsDown>0||e}}});Id.prototype.isMoving=function(e,t){let n=ga(e,t);return!this._update[n]};Id.prototype.getMovement=function(e,t){let n=ga(e,t);return this._movement[n]};Id.prototype.getLastMovement=function(e,t){let n=ga(e,t),i=this._lastMovement[n];if(i.valid)return i};Id.prototype.isButtonDown=function(e,t){let n=ga(e,t);return this._isDown[n]};Id.prototype.getStartMousePosition=function(e,t){if(e===$i.WHEEL)return this._currentMousePosition;let n=ga(e,t);return this._eventStartPosition[n]};Id.prototype.getButtonPressTime=function(e,t){let n=ga(e,t);return this._pressTime[n]};Id.prototype.getButtonReleaseTime=function(e,t){let n=ga(e,t);return this._releaseTime[n]};Id.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};Id.prototype.isDestroyed=function(){return!1};Id.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var I8=Id;function x8(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=ze(n),this._stopObject=ze(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(x8.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});x8.prototype.cancelTween=function(){this._tweens.remove(this)};function Qh(){this._tweens=[]}Object.defineProperties(Qh.prototype,{length:{get:function(){return this._tweens.length}}});Qh.prototype.add=function(e){if(e=e??V.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new x8(this);let t=e.duration/ri.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ri.SECONDS_PER_MILLISECOND,o=e.easingFunction??ps.LINEAR_NONE,r=e.startObject,s=new G_e(r);s.to(ze(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new x8(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};Qh.prototype.addProperty=function(e){e=e??V.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};Qh.prototype.addAlpha=function(e){e=e??V.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};Qh.prototype.addOffsetIncrement=function(e){e=e??V.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};Qh.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};Qh.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};Qh.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};Qh.prototype.get=function(e){return this._tweens[e]};Qh.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ri.SECONDS_PER_MILLISECOND:Oi();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var XT=Qh;function BP(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=$i.LEFT_DRAG,this.zoomEventTypes=[$i.RIGHT_DRAG,$i.WHEEL,$i.PINCH],this.rotateEventTypes=$i.LEFT_DRAG,this.tiltEventTypes=[$i.MIDDLE_DRAG,$i.PINCH,{eventType:$i.LEFT_DRAG,modifier:ja.CTRL},{eventType:$i.RIGHT_DRAG,modifier:ja.CTRL}],this.lookEventTypes={eventType:$i.LEFT_DRAG,modifier:ja.SHIFT};let t=e.ellipsoid??te.default;this.minimumPickingTerrainHeight=te.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=te.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=te.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=te.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new I8(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new XT,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new k(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new k(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new k,this._strafeEndMousePosition=new k,this._zoomMouseStart=new k(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new k,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function SCt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function wCt(e){return k.equalsEpsilon(e.startPosition,e.endPosition,D.EPSILON14)}var BCt=.4;function DCt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new k,endPosition:new k,motion:new k,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,A=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<BCt){let g=SCt(A,i),m=e.getLastMovement(t,n);if(!l(m)||wCt(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=k.clone(m.startPosition,a.startPosition),a.endPosition=k.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=k.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||k.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let _=e.getStartMousePosition(t,n);o(r,_,a)}}}function vCt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var sIe=[];function bl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(sIe[0]=n,n=sIe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,A=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(A?(i(e,g,A),vCt(e,r)):o<1&&DCt(s,f,h,o,i,e,r))}}var b8=new In,PCt=new d,RCt=new k,MCt=new d,NCt=new k,LCt=new d,OCt=new d,FCt=new d,QCt=new d,_Ie=new d,kCt=new d,UCt=new d,GCt=new d,zCt=new d,VCt=new d,HCt=new d,WCt=new d,jCt=new d,YCt=new d,qCt=new d,g0=new d,aIe=new d,cIe=new d,yJ={orientation:new pc};function wJ(e,t,n,i,o,r){let s=1;l(r)&&(s=D.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,A=i*h;A=D.clamp(A,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=A*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let _=e._scene,y=_.camera,C=_.mode,E=yJ.orientation;E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll;let I=n.inertiaEnabled??k.equals(t,e._zoomMouseStart),b=e._zoomingOnVector,S=e._rotatingZoom,B;if(I||(e._zoomMouseStart=k.clone(t,e._zoomMouseStart),l(e._globe)&&C===ie.SCENE2D?(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x)):l(e._globe)&&(B=tg(e,t,PCt)),l(B)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,b=e._zoomingOnVector=!1,S=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){y.zoomIn(m);return}let v=C===ie.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!I||S){if(C===ie.SCENE2D){let P=e._zoomWorldPosition,N=y.position;if(!d.equals(P,N)&&y.positionCartographic.height<e._maxCoord.x*2){let L=y.position.x,p=d.subtract(P,N,MCt);d.normalize(p,p);let x=d.distance(P,N)*m/(y.getMagnitude()*.5);y.move(p,x*.5),(y.position.x<0&&L>0||y.position.x>0&&L<0)&&(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x),e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition))}}else if(C===ie.SCENE3D){let P=d.normalize(y.position,_Ie);if(e._cameraUnderground||e._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(d.dot(y.direction,P))<.6)v=!0;else{let N=_.canvas,L=NCt;L.x=N.clientWidth/2,L.y=N.clientHeight/2;let p=tg(e,L,LCt);if(!l(p))v=!0;else if(y.positionCartographic.height<1e6)if(d.dot(y.direction,P)>=-.5)v=!0;else{let x=UCt;d.clone(y.position,x);let T=e._zoomWorldPosition,w=kCt;if(w=d.normalize(T,w),d.dot(w,P)<0)return;let M=qCt,O=VCt;d.clone(y.direction,O),d.add(x,d.multiplyByScalar(O,1e3,g0),M);let U=HCt,Q=WCt;d.subtract(T,x,U),d.normalize(U,Q);let z=d.dot(P,Q);if(z>=0){e._zoomMouseStart.x=-1;return}let F=Math.acos(-z),H=d.magnitude(x),W=d.magnitude(T),Z=H-m,Y=d.magnitude(U),$=Math.asin(D.clamp(Y/W*Math.sin(F),-1,1)),X=Math.asin(D.clamp(Z/W*Math.sin(F),-1,1)),he=$-X+F,ge=GCt;d.normalize(x,ge);let fe=zCt;fe=d.cross(Q,ge,fe),fe=d.normalize(fe,fe),d.normalize(d.cross(ge,fe,g0),O),d.multiplyByScalar(d.normalize(M,g0),d.magnitude(M)-m,M),d.normalize(x,x),d.multiplyByScalar(x,Z,x);let ye=jCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),Z,ye),d.add(x,ye,x),d.normalize(M,ge),d.normalize(d.cross(ge,fe,g0),O);let Ie=YCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),d.magnitude(M),Ie),d.add(M,Ie,M),d.clone(x,y.position),d.normalize(d.subtract(M,x,g0),y.direction),d.clone(y.direction,y.direction),d.cross(y.direction,y.up,y.right),d.cross(y.right,y.direction,y.up),y.setView(yJ);return}else{let x=d.normalize(p,OCt),T=d.normalize(e._zoomWorldPosition,FCt),w=d.dot(T,x);if(w>0&&w<1){let M=D.acosClamped(w),O=d.cross(T,x,QCt),U=Math.abs(M)>D.toRadians(20)?y.positionCartographic.height*.75:y.positionCartographic.height-m,Q=m/U;y.rotate(O,M*Q)}}}}e._rotatingZoom=!v}if(!I&&v||b){let P,N=to.worldToWindowCoordinates(_,e._zoomWorldPosition,RCt);C!==ie.COLUMBUS_VIEW&&k.equals(t,e._zoomMouseStart)&&l(N)?P=y.getPickRay(N,b8):P=y.getPickRay(t,b8);let L=P.direction;(C===ie.COLUMBUS_VIEW||C===ie.SCENE2D)&&d.fromElements(L.y,L.z,L.x,L),y.move(L,m),e._zoomingOnVector=!0}else y.zoomIn(m);e._cameraUnderground||y.setView(yJ)}var KCt=new In,XCt=new In,JCt=new d;function ZCt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,KCt).origin,s=o.getPickRay(n.endPosition,XCt).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,JCt),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function lIe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;wJ(e,t,n,e.zoomFactor,o.getMagnitude())}var $Ct=new k,eEt=new k;function uIe(e,t,n){if(l(n.angleAndHeight)){tEt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=$Ct;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=k.normalize(c,c);let u=eEt;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=k.normalize(u,u);let f=D.acosClamped(c.x);c.y<0&&(f=D.TWO_PI-f);let h=D.acosClamped(u.x);u.y<0&&(h=D.TWO_PI-h);let A=h-f;o.twistRight(A)}function tEt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function nEt(e){let t=e._scene.mapMode2D===$u.ROTATE;R.equals(R.IDENTITY,e._scene.camera.transform)?(bl(e,e.enableTranslate,e.translateEventTypes,ZCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.tiltEventTypes,uIe,e.inertiaSpin,"_lastInertiaTiltMovement")):(bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.translateEventTypes,uIe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var yIe=new In,iEt=new d,oEt=new d;function tg(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,iEt)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,yIe),u=o.pickWorldCoordinates(c,i,a,oEt),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var rEt=new Ae;function P8(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ie.SCENE3D){let c=t.cartesianToCartographic(i.position,rEt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var sEt=new d;function CIe(e,t){let n=t.origin,i=t.direction,o=P8(e),r=d.normalize(n,sEt),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function EIe(e,t,n,i){let o=d.distance(t.origin,n),r=P8(e),s=D.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),In.getPoint(t,o,i)}function IIe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=P8(e))):o=P8(e),In.getPoint(t,o,i)}var aEt=new k;function xIe(e,t){let n=t.endPosition,i=k.subtract(t.endPosition,t.startPosition,aEt),o=e._strafeEndMousePosition;k.add(o,i,o),t.endPosition=o,BJ(e,t,e._strafeStartPosition),t.endPosition=n}var fIe=new In,cEt=new In,CJ=new d,lEt=new d,uEt=new d,fEt=new d,dEt=new mn(d.UNIT_X,0),hEt=new k,mEt=new k;function AEt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){rf(e,t,n);return}if(e._strafing){xIe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=k.clone(n.startPosition,hEt),a=k.clone(n.endPosition,mEt),c=o.getPickRay(s,fIe),u=d.clone(d.ZERO,fEt),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=tg(e,s,CJ),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let I=h;r&&(I=IIe(e,c,h,CJ)),k.clone(t,e._strafeMousePosition),k.clone(t,e._strafeEndMousePosition),d.clone(I,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition);return}let A=mn.fromPointNormal(u,f,dEt);c=o.getPickRay(s,fIe);let g=Ai.rayPlane(c,A,CJ),m=o.getPickRay(a,cEt),_=Ai.rayPlane(m,A,lEt);if(!l(g)||!l(_)){e._looking=!0,rf(e,t,n),k.clone(t,e._translateMousePosition);return}let y=d.subtract(g,_,uEt),C=y.x;y.x=y.y,y.y=y.z,y.z=C;let E=d.magnitude(y);E>D.EPSILON6&&(d.normalize(y,y),o.move(y,E))}var bIe=new k,w8=new In,B8=new d,pEt=new d,TIe=new R,gEt=new R,_Et=new d,yEt=new mn(d.UNIT_X,0),EJ=new d,bJ=new Ae,SIe=new R,CEt=new Le,EEt=new J,D8=new d;function IEt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){rf(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,xEt(e,t,n)):bEt(e,t,n)}function xEt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=bIe;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,w8),c=d.UNIT_X,u=a.origin,f=a.direction,h,A=d.dot(c,f);if(Math.abs(A)>D.EPSILON6&&(h=-d.dot(c,u)/A),!l(h)||h<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,B8);d.add(u,g,g);let m=i.mapProjection,_=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let y=m.unproject(g,bJ);_.cartographicToCartesian(y,g);let C=kt.eastNorthUpToFixedFrame(g,_,TIe),E=e._globe,I=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=R.clone(o.transform,SIe);o._setTransform(C),of(e,t,n,d.UNIT_Z),o._setTransform(b),e._globe=E,e._ellipsoid=I;let S=I.maximumRadius;e._rotateFactor=1/S,e._rotateRateRangeAdjustment=S}function bEt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(k.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,B8);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=tg(e,t,B8)),!l(s)){a=o.getPickRay(t,w8);let p=a.origin,x=a.direction,T,w=d.dot(c,x);if(Math.abs(w)>D.EPSILON6&&(T=-d.dot(c,p)/w),!l(T)||T<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(x,T,B8),d.add(p,s,s)}r&&(l(a)||(a=o.getPickRay(t,w8)),EIe(e,a,s,s)),k.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=bIe;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,w8);let h=d.clone(d.ZERO,_Et);h.x=s.x;let A=mn.fromPointNormal(h,c,yEt),g=Ai.rayPlane(a,A,pEt),m=o._projection,_=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let y=m.unproject(s,bJ);_.cartographicToCartesian(y,s);let C=kt.eastNorthUpToFixedFrame(s,_,TIe),E;l(g)?(d.fromElements(g.y,g.z,g.x,g),y=m.unproject(g,bJ),_.cartographicToCartesian(y,g),E=kt.eastNorthUpToFixedFrame(g,_,gEt)):E=C;let I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(o.transform,SIe);o._setTransform(C);let v=d.cross(d.UNIT_Z,d.normalize(o.position,EJ),EJ),P=d.dot(o.right,v);if(of(e,t,n,S,!1,!0),o._setTransform(E),P<0){let p=n.startPosition.y-n.endPosition.y;(r&&p<0||!r&&p>0)&&(S=void 0);let x=o.constrainedAxis;o.constrainedAxis=void 0,of(e,t,n,S,!0,!1),o.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(l(o.constrainedAxis)){let p=d.cross(o.direction,o.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,o.right)<0&&d.negate(p,p),d.cross(p,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(o.positionWC,EJ);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(o.positionWC,L)){o._setTransform(E),o.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(o.position)>p&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(p),o.position));let x=d.angleBetween(L,o.position),T=d.cross(L,o.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,CEt),M=J.fromQuaternion(w,EEt);J.multiplyByVector(M,o.direction,o.direction),J.multiplyByVector(M,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(B)}}var wIe=new k,BIe=new In,DIe=new d;function TEt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=wIe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,BIe),u=c.origin,f=c.direction,h=o.position.z,A;h<e._minimumPickingTerrainHeight&&(A=tg(e,a,DIe));let g;if(l(A)&&(g=d.distance(u,A)),s){let m=CIe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}wJ(e,t,n,e.zoomFactor,g)}function SEt(e){let n=e._scene.camera;if(!R.equals(R.IDENTITY,n.transform))bl(e,e.enableRotate,e.rotateEventTypes,of,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),bl(e,e.enableTilt,e.tiltEventTypes,IEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableTranslate,e.translateEventTypes,AEt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,TEt,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableLook,e.lookEventTypes,rf),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var wEt=new In,BEt=new mn(d.UNIT_X,0),DEt=new d,vEt=new d;function BJ(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,wEt),s=d.clone(o.direction,vEt);i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=mn.fromPointNormal(n,s,BEt),c=Ai.rayPlane(r,a,DEt);l(c)&&(s=d.subtract(n,c,s),i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var dIe=new d,vIe=new Ae,TJ=new d,SJ=new te,PEt=new d,REt=new d,MEt=new d;function NEt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!R.equals(o.transform,R.IDENTITY)){of(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,PEt);if(k.equals(t,e._rotateMousePosition)){if(e._looking)rf(e,t,n,u);else if(e._rotating)of(e,t,n);else if(e._strafing)xIe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,vIe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let A=tg(e,n.startPosition,MEt);if(l(A)){let g=!1,m=o.getPickRay(n.startPosition,yIe);if(r)g=!0,IIe(e,m,A,A);else{let _=s.geodeticSurfaceNormal(A,REt);Math.abs(d.dot(m.direction,_))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(A)}g?(k.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition)):(a=d.magnitude(A),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s),d.clone(A,e._rotateStartPosition))}else e._looking=!0,rf(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,dIe))?(xJ(e,t,n,e._ellipsoid),d.clone(dIe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,of(e,t,n)):(e._looking=!0,rf(e,t,n,u));k.clone(t,e._rotateMousePosition)}function of(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let A=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;A=Math.min(A,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*A*Math.PI*2,_=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let y=e.maximumTiltAngle,C=d.dot(a.direction,i),E=Math.PI-Math.acos(C)+_;E>y&&(_-=E-y)}o||a.rotateRight(m),r||a.rotateUp(_),a.constrainedAxis=u}var IJ=se.clone(se.UNIT_W),hIe=se.clone(se.UNIT_W),T8=new d,JT=new d,S8=new d,mIe=new d,LEt=new k,OEt=new k,FEt=new k,QEt=new k,kEt=new In;function xJ(e,t,n,i){let o=e._scene,r=o.camera,s=k.clone(n.startPosition,LEt),a=k.clone(n.endPosition,OEt),c=i.cartesianToCartographic(r.positionWC,vIe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,IJ),!l(e._globe)&&!k.equalsEpsilon(s,e._panLastMousePosition)&&(u=tg(e,s,IJ)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,JT),A=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),JT),g=d.magnitude(A),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,QEt),_=k.subtract(a,s,FEt),y=d.multiplyByScalar(r.rightWC,_.x*m.x,JT),C=d.normalize(r.positionWC,_Ie),E=r.getPickRay(a,kEt).direction,I=d.subtract(E,d.projectVector(E,r.rightWC,S8),S8),b=d.angleBetween(I,r.directionWC),S=1;l(r.frustum.fov)&&(S=Math.max(Math.tan(b),.1));let B=Math.abs(d.dot(r.directionWC,C)),v=-_.y*m.y*2/Math.sqrt(S)*(1-B),P=d.multiplyByScalar(E,v,S8);B=Math.abs(d.dot(r.upWC,C));let N=d.multiplyByScalar(r.upWC,-_.y*(1-B)*m.y,mIe);f=d.add(u,y,hIe),f=d.add(f,P,f),f=d.add(f,N,f),d.clone(f,e._panLastWorldPosition),k.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,IJ),f=r.pickEllipsoid(a,i,hIe)),!l(u)||!l(f)){e._rotating=!0,of(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,A=d.mostOrthogonalAxis(h,T8);d.cross(A,h,A),d.normalize(A,A);let g=d.cross(h,A,JT),m=d.magnitude(u),_=d.dot(h,u),y=Math.acos(_/m),C=d.multiplyByScalar(h,_,S8);d.subtract(u,C,C),d.normalize(C,C);let E=d.magnitude(f),I=d.dot(h,f),b=Math.acos(I/E),S=d.multiplyByScalar(h,I,mIe);d.subtract(f,S,S),d.normalize(S,S);let B=Math.acos(d.dot(C,A));d.dot(C,g)<0&&(B=D.TWO_PI-B);let v=Math.acos(d.dot(S,A));d.dot(S,g)<0&&(v=D.TWO_PI-v);let P=B-v,N;d.equalsEpsilon(h,r.position,D.EPSILON2)?N=r.right:N=d.cross(h,r.position,T8);let L=d.cross(h,N,T8),p=d.dot(L,d.subtract(u,h,JT)),x=d.dot(L,d.subtract(f,h,JT)),T;p>0&&x>0?T=b-y:p>0&&x<=0?d.dot(r.position,h)>0?T=-y-b:T=y+b:T=y-b,r.rotateRight(P),r.rotateUp(T)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),A=d.cross(u,f,T8);if(h<1&&!d.equalsEpsilon(A,d.ZERO,D.EPSILON14)){let g=Math.acos(h);r.rotate(A,g)}}}var UEt=new d,GEt=new Ae,AIe=0;function PIe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=wIe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,BIe),h,A=o.cartesianToCartographic(s.position,GEt).height,g=Math.abs(AIe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:A<e._minimumPickingTerrainHeight)&&(h=tg(e,u,DIe));let _;if(l(h)&&(_=d.distance(f.origin,h),AIe=_),c){let C=CIe(e,f,A);l(_)?_=Math.min(_,C):_=C}l(_)||(_=A);let y=d.normalize(s.position,UEt);wJ(e,t,n,e.zoomFactor,_,d.dot(y,s.direction))}var RIe=new k,v8=new In,wP=new d,zEt=new d,MIe=new R,VEt=new R,NIe=new R,HEt=new Le,WEt=new J,DJ=new Ae,vJ=new d;function jEt(e,t,n){let o=e._scene.camera;if(!R.equals(o.transform,R.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,vJ);rf(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,DJ);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,qEt(e,t,n)):KEt(e,t,n)}var YEt=new Ae;function qEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,YEt).height;if(a-s-1<D.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=RIe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,v8),h,A=Ai.rayEllipsoid(f,i);if(l(A))h=In.getPoint(f,A.start,wP);else if(a>e._minimumTrackBallHeight){let E=Ai.grazingAltitudeLocation(f,i);if(!l(E))return;let I=i.cartesianToCartographic(E,DJ);I.height=0,h=i.cartographicToCartesian(I,wP)}else{e._looking=!0;let E=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,E),k.clone(t,e._tiltCenterMousePosition);return}let g=kt.eastNorthUpToFixedFrame(h,i,MIe),m=e._globe,_=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let y=R.clone(r.transform,NIe);r._setTransform(g),of(e,t,n,d.UNIT_Z),r._setTransform(y),e._globe=m,e._ellipsoid=_;let C=_.maximumRadius;e._rotateFactor=1/C,e._rotateRateRangeAdjustment=C}function KEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(k.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,wP);else{if(a=tg(e,t,wP),!l(a)){if(c=r.getPickRay(t,v8),u=Ai.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,DJ).height<=e._minimumTrackBallHeight){e._looking=!0;let x=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,x),k.clone(t,e._tiltCenterMousePosition)}return}a=In.getPoint(c,u.start,wP)}s&&(l(c)||(c=r.getPickRay(t,v8)),EIe(e,c,a,a)),k.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=RIe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,v8);let A=d.magnitude(a),g=d.fromElements(A,A,A,TJ),m=te.fromCartesian3(g,SJ);if(u=Ai.rayEllipsoid(c,m),!l(u))return;let _=d.magnitude(c.origin)>A?u.start:u.stop,y=In.getPoint(c,_,zEt),C=kt.eastNorthUpToFixedFrame(a,i,MIe),E=kt.eastNorthUpToFixedFrame(y,m,VEt),I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(r.transform,NIe);r._setTransform(E);let v=d.cross(y,r.positionWC,D8);if(d.dot(r.rightWC,v)<0){let p=n.startPosition.y-n.endPosition.y;(s&&p<0||!s&&p>0)&&(S=void 0);let x=r.constrainedAxis;r.constrainedAxis=void 0,of(e,t,n,S,!0,!1),r.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(r._setTransform(C),of(e,t,n,S,!1,!0),l(r.constrainedAxis)){let p=d.cross(r.direction,r.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,r.right)<0&&d.negate(p,p),d.cross(p,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(r.positionWC,D8);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(r.positionWC,L)){r._setTransform(E),r.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(r.position)>p&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(p),r.position));let x=d.angleBetween(L,r.position),T=d.cross(L,r.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,HEt),M=J.fromQuaternion(w,WEt);J.multiplyByVector(M,r.direction,r.direction),J.multiplyByVector(M,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(B)}}var XEt=new k,JEt=new k,pIe=new In,gIe=new In,ZEt=new d,$Et=new d;function rf(e,t,n,i){let r=e._scene.camera,s=XEt;s.x=n.startPosition.x,s.y=0;let a=JEt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,h,A;r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction);let g=d.dot(h,A);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction),g=d.dot(h,A),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=i??m,l(i)){let _=r.direction,y=d.negate(i,ZEt),C=d.equalsEpsilon(_,i,D.EPSILON2),E=d.equalsEpsilon(_,y,D.EPSILON2);if(!C&&!E){g=d.dot(_,i);let I=D.acosClamped(g);f>0&&f>I&&(f=I-D.EPSILON4),g=d.dot(_,y),I=D.acosClamped(g),f<0&&-f>I&&(f=-I+D.EPSILON4);let b=d.cross(i,_,$Et);r.look(b,f)}else(C&&f<0||E&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function e0t(e){bl(e,e.enableRotate,e.rotateEventTypes,NEt,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableTilt,e.tiltEventTypes,jEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableLook,e.lookEventTypes,rf)}var t0t=new R,n0t=new Ae;function PJ(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ie.SCENE2D||i===ie.MORPHING)return;let o=n.camera,r=n.ellipsoid??te.WGS84,s=n.mapProjection,a,c;R.equals(o.transform,R.IDENTITY)||(a=R.clone(o.transform,t0t),c=d.magnitude(o.position),o._setTransform(R.IDENTITY));let u=n0t;i===ie.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let A=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<A&&(t||Math.abs(m)<=.1)&&(u.height=A,i===ie.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}BP.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ie.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var i0t=new d,o0t=new d;BP.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;R.equals(t.transform,R.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??te.default):(this._globe=void 0,this._ellipsoid=te.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Yr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Yr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Yr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,i0t),c=d.clone(t.directionWC,o0t);if(i===ie.SCENE2D?nEt(this):i===ie.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,SEt(this)):i===ie.SCENE3D&&(this._horizontalRotationAxis=void 0,e0t(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);PJ(this,u)}this._aggregator.reset()};BP.prototype.isDestroyed=function(){return!1};BP.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var R8=BP;var M8=`uniform sampler2D colorTexture;
|
||
uniform sampler2D colorTexture2;
|
||
|
||
uniform vec2 center;
|
||
uniform float radius;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
vec4 color0 = texture(colorTexture, v_textureCoordinates);
|
||
vec4 color1 = texture(colorTexture2, v_textureCoordinates);
|
||
|
||
float x = length(gl_FragCoord.xy - center) / radius;
|
||
float t = smoothstep(0.5, 0.8, x);
|
||
out_FragColor = mix(color0 + color1, color1, t);
|
||
}
|
||
`;var N8=`uniform sampler2D colorTexture;
|
||
|
||
uniform float avgLuminance;
|
||
uniform float threshold;
|
||
uniform float offset;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
float key(float avg)
|
||
{
|
||
float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0));
|
||
return max(0.0, guess) + 0.1;
|
||
}
|
||
|
||
// See section 9. "The bright-pass filter" of Realtime HDR Rendering
|
||
// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf
|
||
|
||
void main()
|
||
{
|
||
vec4 color = texture(colorTexture, v_textureCoordinates);
|
||
vec3 xyz = czm_RGBToXYZ(color.rgb);
|
||
float luminance = xyz.r;
|
||
|
||
float scaledLum = key(avgLuminance) * luminance / avgLuminance;
|
||
float brightLum = max(scaledLum - threshold, 0.0);
|
||
float brightness = brightLum / (offset + brightLum);
|
||
|
||
xyz.r = brightness;
|
||
out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0);
|
||
}
|
||
`;function ng(){this._sceneFramebuffer=new HT;let e=.125,t=new Array(6);t[0]=new So({fragmentShader:ef,textureScale:e,forcePowerOfTwo:!0,sampleMode:_d.LINEAR});let n=t[1]=new So({fragmentShader:N8,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new k,t[2]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new So({fragmentShader:ef,sampleMode:_d.LINEAR}),this._uCenter=new k,this._uRadius=void 0,t[5]=new So({fragmentShader:M8,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new tf({stages:t});let o=new qT(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}ng.prototype.get=function(e){return this._stages.get(e)};ng.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var r0t=new se,LIe=new k,s0t=new k,OIe=new R;function a0t(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=R.computeViewportTransformation(n,0,1,OIe),u=R.multiplyByPoint(r,o,r0t),f=kt.pointToGLWindowCoordinates(s,c,o,LIe);u.x+=D.SOLAR_RADIUS;let h=kt.pointToGLWindowCoordinates(a,c,u,u),A=k.magnitude(k.subtract(h,f,h))*30*2,g=s0t;g.x=A,g.y=A,e._uCenter=k.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,_=t.drawingBufferHeight,y=e._stages,C=y.get(0),E=C.outputTexture.width,I=C.outputTexture.height,b=new Xe;b.width=E,b.height=I,c=R.computeViewportTransformation(b,0,1,OIe),f=kt.pointToGLWindowCoordinates(s,c,o,LIe),g.x*=E/m,g.y*=I/_;let S=C.scissorRectangle;S.x=Math.max(f.x-g.x*.5,0),S.y=Math.max(f.y-g.y*.5,0),S.width=Math.min(g.x,m),S.height=Math.min(g.y,_);for(let B=1;B<4;++B)Xe.clone(S,y.get(B).scissorRectangle)}ng.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};ng.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),a0t(this,t,n),o};ng.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};ng.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};ng.prototype.isDestroyed=function(){return!1};ng.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var L8=ng;function FIe(){this._cachedShowFrustumsShaders={}}function c0t(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function l0t(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=We.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,A;for(;(A=h.exec(f))!==null;)r.indexOf(A[1])===-1&&r.push(A[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor;
|
||
`,a+=`uniform vec3 debugShowFrustumsColor;
|
||
`,a+=`void main()
|
||
{
|
||
czm_Debug_main();
|
||
`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor;
|
||
`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor;
|
||
`;else a+=` out_FragColor.rgb *= debugShowCommandsColor;
|
||
`,a+=` out_FragColor.rgb *= debugShowFrustumsColor;
|
||
`;a+="}",o.sources.push(a);let u=c0t(i);return ln.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var DP=new G;function u0t(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=G.fromRandom()),t._debugColor):G.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(DP.red=t.debugOverlappingFrustums&1?1:0,DP.green=t.debugOverlappingFrustums&2?1:0,DP.blue=t.debugOverlappingFrustums&4?1:0,DP.alpha=1,DP):G.WHITE}),n}var f0t=new nt;FIe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=l0t(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=nt.shallowClone(t,f0t);r.shaderProgram=o,r.uniformMap=u0t(e,t),r.execute(e.context,n)};var O8=FIe;function _0(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Qn}_0.fromKeyframeNode=function(e,t,n,i){let o=new _0(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=d0t(e,s,n),o._orientedBoundingBox=m0t(e,r,n,o._orientedBoundingBox),o};function d0t(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=gt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var QIe=new d,h0t=new d;function m0t(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,QIe),h=d.divideComponents(d.subtract(f,e._paddingBefore,QIe),e.dimensions,h0t);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(_0.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});_0.prototype.hasProperty=function(e){return l(this._metadata[e])};_0.prototype.getNames=function(){return Object.keys(this._metadata)};_0.prototype.getProperty=function(e){return this._metadata[e]};var F8=_0;var Q8=`struct Ray {
|
||
vec3 pos;
|
||
vec3 dir;
|
||
vec3 rawDir;
|
||
};
|
||
|
||
#if defined(JITTER)
|
||
/**
|
||
* Generate a pseudo-random value for a given 2D screen coordinate.
|
||
* Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale.
|
||
*/
|
||
float hash(vec2 p)
|
||
{
|
||
vec3 p3 = fract(vec3(p.xyx) * 50.0);
|
||
p3 += dot(p3, p3.yzx + 19.19);
|
||
return fract((p3.x + p3.y) * p3.z);
|
||
}
|
||
#endif
|
||
|
||
float minComponent(in vec3 v) {
|
||
return min(min(v.x, v.y), v.z);
|
||
}
|
||
|
||
float maxComponent(in vec3 v) {
|
||
return max(max(v.x, v.y), v.z);
|
||
}
|
||
|
||
struct PointJacobianT {
|
||
vec3 point;
|
||
mat3 jacobianT;
|
||
};
|
||
`;var k8=`// See Intersection.glsl for the definition of intersectScene
|
||
// See IntersectionUtils.glsl for the definition of nextIntersection
|
||
// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl
|
||
// for the definition of convertUvToShapeUvSpace. The appropriate function is
|
||
// selected based on the VoxelPrimitive shape type, and added to the shader in
|
||
// Scene/VoxelRenderResources.js.
|
||
// See Octree.glsl for the definitions of TraversalData, SampleData,
|
||
// traverseOctreeFromBeginning, and traverseOctreeFromExisting
|
||
// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture
|
||
|
||
#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops
|
||
#if defined(PICKING_VOXEL)
|
||
#define ALPHA_ACCUM_MAX 0.1
|
||
#else
|
||
#define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0
|
||
#endif
|
||
|
||
uniform mat4 u_transformPositionUvToView;
|
||
uniform mat3 u_transformDirectionViewToLocal;
|
||
uniform vec3 u_cameraPositionUv;
|
||
uniform vec3 u_cameraDirectionUv;
|
||
uniform float u_stepSize;
|
||
|
||
#if defined(PICKING)
|
||
uniform vec4 u_pickColor;
|
||
#endif
|
||
|
||
vec3 getSampleSize(in int level) {
|
||
vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions);
|
||
vec3 sampleSizeUv = 1.0 / sampleCount;
|
||
return scaleShapeUvToShapeSpace(sampleSizeUv);
|
||
}
|
||
|
||
#define MINIMUM_STEP_SCALAR (0.02)
|
||
#define SHIFT_FRACTION (0.001)
|
||
|
||
/**
|
||
* Given a coordinate within a tile, and sample spacings along a ray through
|
||
* the coordinate, find the distance to the points where the ray entered and
|
||
* exited the voxel cell, along with the surface normals at those points.
|
||
* The surface normals are returned in shape space coordinates.
|
||
*/
|
||
RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) {
|
||
vec3 voxelCoord = tileUv * vec3(u_dimensions);
|
||
vec3 directions = sign(sampleSizeAlongRay);
|
||
vec3 positiveDirections = max(directions, 0.0);
|
||
vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections);
|
||
vec3 exitCoord = entryCoord + directions;
|
||
|
||
vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay);
|
||
float lastEntry = maxComponent(distanceFromEntry);
|
||
bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry));
|
||
vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions;
|
||
vec4 entry = vec4(entryNormal, lastEntry);
|
||
|
||
vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay);
|
||
float firstExit = minComponent(distanceToExit);
|
||
bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit));
|
||
vec3 exitNormal = vec3(isFirstExit) * directions;
|
||
vec4 exit = vec4(exitNormal, firstExit);
|
||
|
||
return RayShapeIntersection(entry, exit);
|
||
}
|
||
|
||
vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) {
|
||
// The Jacobian is computed in a space where the shape spans [-1, 1].
|
||
// But the ray is marched in a space where the shape fills [0, 1].
|
||
// So we need to scale the Jacobian by 2.
|
||
vec3 gradient = 2.0 * viewRay.rawDir * jacobianT;
|
||
vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient;
|
||
|
||
RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay);
|
||
|
||
// Transform normal from shape space to Cartesian space
|
||
vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz);
|
||
// Compare with the shape intersection, to choose the appropriate normal
|
||
vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w);
|
||
vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry);
|
||
|
||
float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize;
|
||
float shift = fixedStep * SHIFT_FRACTION;
|
||
float dt = voxelIntersection.exit.w + shift;
|
||
if ((currentT + dt) > shapeIntersection.exit.w) {
|
||
// Stop at end of shape
|
||
dt = shapeIntersection.exit.w - currentT + shift;
|
||
}
|
||
float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift);
|
||
|
||
return vec4(entry.xyz, stepSize);
|
||
}
|
||
|
||
vec2 packIntToVec2(int value) {
|
||
float shifted = float(value) / 255.0;
|
||
float lowBits = fract(shifted);
|
||
float highBits = floor(shifted) / 255.0;
|
||
return vec2(highBits, lowBits);
|
||
}
|
||
|
||
vec2 packFloatToVec2(float value) {
|
||
float lowBits = fract(value);
|
||
float highBits = floor(value) / 255.0;
|
||
return vec2(highBits, lowBits);
|
||
}
|
||
|
||
int getSampleIndex(in SampleData sampleData) {
|
||
// tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not.
|
||
// (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1).
|
||
// Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring
|
||
vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5);
|
||
vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate);
|
||
ivec3 sampleIndex = ivec3(floor(inputCoordinate));
|
||
// Convert to a 1D index for lookup in a 1D data array
|
||
return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z);
|
||
}
|
||
|
||
/**
|
||
* Compute the view ray at the current fragment, in the local UV coordinates of the shape.
|
||
*/
|
||
Ray getViewRayUv() {
|
||
vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord);
|
||
vec3 viewDirUv;
|
||
vec3 viewPosUv;
|
||
if (czm_orthographicIn3D == 1.0) {
|
||
eyeCoordinates.z = 0.0;
|
||
viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz;
|
||
viewDirUv = normalize(u_cameraDirectionUv);
|
||
} else {
|
||
viewPosUv = u_cameraPositionUv;
|
||
viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz);
|
||
}
|
||
#if defined(SHAPE_ELLIPSOID)
|
||
// viewDirUv has been scaled to a space where the ellipsoid is a sphere.
|
||
// Undo this scaling to get the raw direction.
|
||
vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv;
|
||
return Ray(viewPosUv, viewDirUv, rawDir);
|
||
#else
|
||
return Ray(viewPosUv, viewDirUv, viewDirUv);
|
||
#endif
|
||
}
|
||
|
||
void main()
|
||
{
|
||
Ray viewRayUv = getViewRayUv();
|
||
|
||
Intersections ix;
|
||
vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1]
|
||
RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix);
|
||
// Exit early if the scene was completely missed.
|
||
if (shapeIntersection.entry.w == NO_HIT) {
|
||
discard;
|
||
}
|
||
|
||
float currentT = shapeIntersection.entry.w;
|
||
float endT = shapeIntersection.exit.w;
|
||
vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir;
|
||
PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv);
|
||
|
||
// Traverse the tree from the start position
|
||
TraversalData traversalData;
|
||
SampleData sampleDatas[SAMPLE_COUNT];
|
||
traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas);
|
||
vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT);
|
||
|
||
#if defined(JITTER)
|
||
float noise = hash(screenCoord); // [0,1]
|
||
currentT += noise * step.w;
|
||
positionUv += noise * step.w * viewRayUv.dir;
|
||
#endif
|
||
|
||
FragmentInput fragmentInput;
|
||
#if defined(STATISTICS)
|
||
setStatistics(fragmentInput.metadataStatistics);
|
||
#endif
|
||
|
||
czm_modelMaterial materialOutput;
|
||
vec4 colorAccum = vec4(0.0);
|
||
|
||
for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) {
|
||
// Read properties from the megatexture based on the traversal state
|
||
Properties properties = accumulatePropertiesFromMegatexture(sampleDatas);
|
||
|
||
// Prepare the custom shader inputs
|
||
copyPropertiesToMetadata(properties, fragmentInput.metadata);
|
||
|
||
fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0));
|
||
fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz);
|
||
|
||
fragmentInput.voxel.viewDirUv = viewRayUv.dir;
|
||
|
||
fragmentInput.voxel.travelDistance = step.w;
|
||
fragmentInput.voxel.stepCount = stepCount;
|
||
fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex;
|
||
fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]);
|
||
fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT;
|
||
|
||
// Run the custom shader
|
||
fragmentMain(fragmentInput, materialOutput);
|
||
|
||
// Sanitize the custom shader output
|
||
vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha);
|
||
color.rgb = max(color.rgb, vec3(0.0));
|
||
color.a = clamp(color.a, 0.0, 1.0);
|
||
|
||
// Pre-multiplied alpha blend
|
||
colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a);
|
||
|
||
// Stop traversing if the alpha has been fully saturated
|
||
if (colorAccum.a > ALPHA_ACCUM_MAX) {
|
||
colorAccum.a = ALPHA_ACCUM_MAX;
|
||
break;
|
||
}
|
||
|
||
if (step.w == 0.0) {
|
||
// Shape is infinitely thin. The ray may have hit the edge of a
|
||
// foreground voxel. Step ahead slightly to check for more voxels
|
||
step.w == 0.00001;
|
||
}
|
||
|
||
// Keep raymarching
|
||
currentT += step.w;
|
||
// Check if there's more intersections.
|
||
if (currentT > endT) {
|
||
#if (INTERSECTION_COUNT == 1)
|
||
break;
|
||
#else
|
||
shapeIntersection = nextIntersection(ix);
|
||
if (shapeIntersection.entry.w == NO_HIT) {
|
||
break;
|
||
} else {
|
||
// Found another intersection. Resume raymarching there
|
||
currentT = shapeIntersection.entry.w;
|
||
endT = shapeIntersection.exit.w;
|
||
}
|
||
#endif
|
||
}
|
||
positionUv = viewRayUv.pos + currentT * viewRayUv.dir;
|
||
|
||
// Traverse the tree from the current ray position.
|
||
// This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step.
|
||
pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv);
|
||
traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas);
|
||
step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT);
|
||
}
|
||
|
||
// Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1]
|
||
colorAccum.a /= ALPHA_ACCUM_MAX;
|
||
|
||
#if defined(PICKING)
|
||
// If alpha is 0.0 there is nothing to pick
|
||
if (colorAccum.a == 0.0) {
|
||
discard;
|
||
}
|
||
out_FragColor = u_pickColor;
|
||
#elif defined(PICKING_VOXEL)
|
||
// If alpha is 0.0 there is nothing to pick
|
||
if (colorAccum.a == 0.0) {
|
||
discard;
|
||
}
|
||
vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex);
|
||
vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0]));
|
||
out_FragColor = vec4(megatextureId, sampleIndex);
|
||
#else
|
||
out_FragColor = colorAccum;
|
||
#endif
|
||
}
|
||
`;var U8=`in vec2 position;
|
||
|
||
uniform vec4 u_ndcSpaceAxisAlignedBoundingBox;
|
||
|
||
void main() {
|
||
vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy;
|
||
vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw;
|
||
vec2 translation = 0.5 * (aabbMax + aabbMin);
|
||
vec2 scale = 0.5 * (aabbMax - aabbMin);
|
||
gl_Position = vec4(position * scale + translation, 0.0, 1.0);
|
||
}
|
||
`;var G8=`/* Intersection defines
|
||
#define INTERSECTION_COUNT ###
|
||
*/
|
||
|
||
#define NO_HIT (-czm_infinity)
|
||
#define INF_HIT (czm_infinity * 0.5)
|
||
|
||
struct RayShapeIntersection {
|
||
vec4 entry;
|
||
vec4 exit;
|
||
};
|
||
|
||
vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1)
|
||
{
|
||
if (intersect0.w == NO_HIT) {
|
||
return intersect1;
|
||
} else if (intersect1.w == NO_HIT) {
|
||
return intersect0;
|
||
}
|
||
return (intersect0.w <= intersect1.w) ? intersect0 : intersect1;
|
||
}
|
||
|
||
vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1)
|
||
{
|
||
return (intersect0.w >= intersect1.w) ? intersect0 : intersect1;
|
||
}
|
||
|
||
RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1)
|
||
{
|
||
bool missed = (intersect0.entry.w == NO_HIT) ||
|
||
(intersect1.entry.w == NO_HIT) ||
|
||
(intersect0.exit.w < intersect1.entry.w) ||
|
||
(intersect0.entry.w > intersect1.exit.w);
|
||
if (missed) {
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
return RayShapeIntersection(miss, miss);
|
||
}
|
||
|
||
vec4 entry = intersectionMax(intersect0.entry, intersect1.entry);
|
||
vec4 exit = intersectionMin(intersect0.exit, intersect1.exit);
|
||
|
||
return RayShapeIntersection(entry, exit);
|
||
}
|
||
|
||
struct Intersections {
|
||
// Don't access these member variables directly - call the functions instead.
|
||
|
||
// Store an array of ray-surface intersections. Each intersection is composed of:
|
||
// .xyz for the surface normal at the intersection point
|
||
// .w for the T value
|
||
// The scale of the normal encodes the shape intersection type:
|
||
// length(intersection.xyz) = 1: positive shape entry
|
||
// length(intersection.xyz) = 2: positive shape exit
|
||
// length(intersection.xyz) = 3: negative shape entry
|
||
// length(intersection.xyz) = 4: negative shape exit
|
||
// INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections,
|
||
// so we need twice as many to track ray-*surface* intersections
|
||
vec4 intersections[INTERSECTION_COUNT * 2];
|
||
float distanceToDepthBuffer;
|
||
|
||
#if (INTERSECTION_COUNT > 1)
|
||
// Maintain state for future nextIntersection calls
|
||
int index;
|
||
int surroundCount;
|
||
bool surroundIsPositive;
|
||
#endif
|
||
};
|
||
|
||
RayShapeIntersection getFirstIntersection(in Intersections ix)
|
||
{
|
||
return RayShapeIntersection(ix.intersections[0], ix.intersections[1]);
|
||
}
|
||
|
||
vec4 encodeIntersectionType(vec4 intersection, int index, bool entry)
|
||
{
|
||
float scale = float(index > 0) * 2.0 + float(!entry) + 1.0;
|
||
return vec4(intersection.xyz * scale, intersection.w);
|
||
}
|
||
|
||
// Use defines instead of real functions because WebGL1 cannot access array with non-constant index.
|
||
#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t))
|
||
#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y)
|
||
#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter))
|
||
#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false)
|
||
|
||
#if (INTERSECTION_COUNT > 1)
|
||
void initializeIntersections(inout Intersections ix) {
|
||
// Sort the intersections from min T to max T with bubble sort.
|
||
// Note: If this sorting function changes, some of the intersection test may
|
||
// need to be updated. Search for "bubble sort" to find those areas.
|
||
const int sortPasses = INTERSECTION_COUNT * 2 - 1;
|
||
for (int n = sortPasses; n > 0; --n) {
|
||
for (int i = 0; i < sortPasses; ++i) {
|
||
// The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to break early instead
|
||
if (i >= n) { break; }
|
||
|
||
vec4 intersect0 = ix.intersections[i + 0];
|
||
vec4 intersect1 = ix.intersections[i + 1];
|
||
|
||
bool inOrder = intersect0.w <= intersect1.w;
|
||
|
||
ix.intersections[i + 0] = inOrder ? intersect0 : intersect1;
|
||
ix.intersections[i + 1] = inOrder ? intersect1 : intersect0;
|
||
}
|
||
}
|
||
|
||
// Prepare initial state for nextIntersection
|
||
ix.index = 0;
|
||
ix.surroundCount = 0;
|
||
ix.surroundIsPositive = false;
|
||
}
|
||
#endif
|
||
|
||
#if (INTERSECTION_COUNT > 1)
|
||
RayShapeIntersection nextIntersection(inout Intersections ix) {
|
||
vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT);
|
||
RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection);
|
||
|
||
const int passCount = INTERSECTION_COUNT * 2;
|
||
|
||
if (ix.index == passCount) {
|
||
return shapeIntersection;
|
||
}
|
||
|
||
for (int i = 0; i < passCount; ++i) {
|
||
// The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot
|
||
// loop with non-constant condition, so it has to continue instead.
|
||
if (i < ix.index) {
|
||
continue;
|
||
}
|
||
|
||
ix.index = i + 1;
|
||
|
||
surfaceIntersection = ix.intersections[i];
|
||
int intersectionType = int(length(surfaceIntersection.xyz) - 0.5);
|
||
bool currShapeIsPositive = intersectionType < 2;
|
||
bool enter = intMod(intersectionType, 2) == 0;
|
||
|
||
ix.surroundCount += enter ? +1 : -1;
|
||
ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive;
|
||
|
||
// entering positive or exiting negative
|
||
if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) {
|
||
shapeIntersection.entry = surfaceIntersection;
|
||
}
|
||
|
||
// exiting positive or entering negative after being inside positive
|
||
bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0;
|
||
bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive;
|
||
if (exitPositive || enterNegativeFromPositive) {
|
||
shapeIntersection.exit = surfaceIntersection;
|
||
|
||
// entry and exit have been found, so the loop can stop
|
||
if (exitPositive) {
|
||
// After exiting positive shape there is nothing left to intersect, so jump to the end index.
|
||
ix.index = passCount;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
return shapeIntersection;
|
||
}
|
||
#endif
|
||
|
||
// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1
|
||
`;var z8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections,
|
||
// setIntersectionPair, INF_HIT, NO_HIT
|
||
|
||
/* intersectDepth defines (set in Scene/VoxelRenderResources.js)
|
||
#define DEPTH_INTERSECTION_INDEX ###
|
||
*/
|
||
|
||
uniform mat4 u_transformPositionViewToUv;
|
||
|
||
void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) {
|
||
float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord));
|
||
float entry;
|
||
float exit;
|
||
if (logDepthOrDepth != 0.0) {
|
||
// Calculate how far the ray must travel before it hits the depth buffer.
|
||
vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth);
|
||
eyeCoordinateDepth /= eyeCoordinateDepth.w;
|
||
vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth);
|
||
entry = dot(depthPositionUv - ray.pos, ray.dir);
|
||
exit = +INF_HIT;
|
||
} else {
|
||
// There's no depth at this location.
|
||
entry = NO_HIT;
|
||
exit = NO_HIT;
|
||
}
|
||
ix.distanceToDepthBuffer = entry;
|
||
#if defined(DEPTH_TEST)
|
||
setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit));
|
||
#endif
|
||
}
|
||
`;var V8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT,
|
||
// NO_HIT, setShapeIntersection
|
||
|
||
/* Clipping plane defines (set in Scene/VoxelRenderResources.js)
|
||
#define CLIPPING_PLANES_UNION
|
||
#define CLIPPING_PLANES_COUNT
|
||
#define CLIPPING_PLANES_INTERSECTION_INDEX
|
||
*/
|
||
|
||
uniform sampler2D u_clippingPlanesTexture;
|
||
uniform mat4 u_clippingPlanesMatrix;
|
||
|
||
// Plane is in Hessian Normal Form
|
||
vec4 intersectPlane(in Ray ray, in vec4 plane) {
|
||
vec3 n = plane.xyz; // normal
|
||
float w = plane.w; // -dot(pointOnPlane, normal)
|
||
|
||
float a = dot(ray.pos, n);
|
||
float b = dot(ray.dir, n);
|
||
float t = -(w + a) / b;
|
||
|
||
return vec4(n, t);
|
||
}
|
||
|
||
void intersectClippingPlanes(in Ray ray, inout Intersections ix) {
|
||
vec4 backSide = vec4(-ray.dir, -INF_HIT);
|
||
vec4 farSide = vec4(ray.dir, +INF_HIT);
|
||
RayShapeIntersection clippingVolume;
|
||
|
||
#if (CLIPPING_PLANES_COUNT == 1)
|
||
// Union and intersection are the same when there's one clipping plane, and the code
|
||
// is more simplified.
|
||
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix);
|
||
vec4 intersection = intersectPlane(ray, planeUv);
|
||
bool reflects = dot(ray.dir, intersection.xyz) < 0.0;
|
||
clippingVolume.entry = reflects ? backSide : intersection;
|
||
clippingVolume.exit = reflects ? intersection : farSide;
|
||
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
|
||
#elif defined(CLIPPING_PLANES_UNION)
|
||
vec4 firstTransmission = vec4(ray.dir, +INF_HIT);
|
||
vec4 lastReflection = vec4(-ray.dir, -INF_HIT);
|
||
for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
|
||
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
|
||
vec4 intersection = intersectPlane(ray, planeUv);
|
||
if (dot(ray.dir, planeUv.xyz) > 0.0) {
|
||
firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission;
|
||
} else {
|
||
lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection;
|
||
}
|
||
}
|
||
clippingVolume.entry = backSide;
|
||
clippingVolume.exit = lastReflection;
|
||
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume);
|
||
clippingVolume.entry = firstTransmission;
|
||
clippingVolume.exit = farSide;
|
||
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume);
|
||
#else // intersection
|
||
vec4 lastTransmission = vec4(ray.dir, -INF_HIT);
|
||
vec4 firstReflection = vec4(-ray.dir, +INF_HIT);
|
||
for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) {
|
||
vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix);
|
||
vec4 intersection = intersectPlane(ray, planeUv);
|
||
if (dot(ray.dir, planeUv.xyz) > 0.0) {
|
||
lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission;
|
||
} else {
|
||
firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection;
|
||
}
|
||
}
|
||
if (lastTransmission.w < firstReflection.w) {
|
||
clippingVolume.entry = lastTransmission;
|
||
clippingVolume.exit = firstReflection;
|
||
} else {
|
||
clippingVolume.entry = vec4(-ray.dir, NO_HIT);
|
||
clippingVolume.exit = vec4(ray.dir, NO_HIT);
|
||
}
|
||
setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume);
|
||
#endif
|
||
}
|
||
`;var vP=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT,
|
||
// RayShapeIntersection
|
||
|
||
vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) {
|
||
float normalSign = positiveNormal ? 1.0 : -1.0;
|
||
vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign;
|
||
|
||
vec2 position = ray.pos.xy;
|
||
vec2 direction = ray.dir.xy;
|
||
float approachRate = dot(direction, planeNormal);
|
||
float distance = -dot(position, planeNormal);
|
||
|
||
float t = (approachRate == 0.0)
|
||
? NO_HIT
|
||
: distance / approachRate;
|
||
|
||
return vec4(planeNormal, 0.0, t);
|
||
}
|
||
|
||
RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal)
|
||
{
|
||
vec4 intersection = intersectLongitude(ray, angle, positiveNormal);
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
|
||
bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0);
|
||
if (!hitFront) {
|
||
return RayShapeIntersection(intersection, farSide);
|
||
} else {
|
||
return RayShapeIntersection(-1.0 * farSide, intersection);
|
||
}
|
||
}
|
||
|
||
void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2])
|
||
{
|
||
intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false);
|
||
intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true);
|
||
}
|
||
|
||
bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) {
|
||
float normalSign = positiveNormal ? 1.0 : -1.0;
|
||
vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign;
|
||
vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy;
|
||
return dot(hit, planeDirection) > 0.0;
|
||
}
|
||
|
||
void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) {
|
||
vec4 intersection = intersectLongitude(ray, angle, true);
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
|
||
if (hitPositiveHalfPlane(ray, intersection, true)) {
|
||
intersections[0].entry = -1.0 * farSide;
|
||
intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w);
|
||
intersections[1].entry = intersection;
|
||
intersections[1].exit = farSide;
|
||
} else {
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
intersections[0].entry = -1.0 * farSide;
|
||
intersections[0].exit = farSide;
|
||
intersections[1].entry = miss;
|
||
intersections[1].exit = miss;
|
||
}
|
||
}
|
||
|
||
RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle)
|
||
{
|
||
// Note: works for maxAngle > minAngle + pi, where the "regular wedge"
|
||
// is actually a negative volume.
|
||
// Compute intersections with the two planes.
|
||
// Normals will point toward the "outside" (negative space)
|
||
vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false);
|
||
vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true);
|
||
|
||
// Choose intersection with smallest T as the "first", the other as "last"
|
||
// Note: first or last could be in the "shadow" wedge, beyond the tip
|
||
bool inOrder = intersect1.w <= intersect2.w;
|
||
vec4 first = inOrder ? intersect1 : intersect2;
|
||
vec4 last = inOrder ? intersect2 : intersect1;
|
||
|
||
bool firstIsAhead = first.w >= 0.0;
|
||
bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0;
|
||
bool exitFromInside = firstIsAhead == startedInsideFirst;
|
||
bool lastIsAhead = last.w > 0.0;
|
||
bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0;
|
||
bool enterFromOutside = lastIsAhead == startedOutsideLast;
|
||
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
|
||
if (exitFromInside && enterFromOutside) {
|
||
// Ray crosses both faces of negative wedge, exiting then entering the positive shape
|
||
return RayShapeIntersection(first, last);
|
||
} else if (!exitFromInside && enterFromOutside) {
|
||
// Ray starts inside wedge. last is in shadow wedge, and first is actually the entry
|
||
return RayShapeIntersection(-1.0 * farSide, first);
|
||
} else if (exitFromInside && !enterFromOutside) {
|
||
// First intersection was in the shadow wedge, so last is actually the exit
|
||
return RayShapeIntersection(last, farSide);
|
||
} else { // !exitFromInside && !enterFromOutside
|
||
// Both intersections were in the shadow wedge
|
||
return RayShapeIntersection(miss, miss);
|
||
}
|
||
}
|
||
`;var H8=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection,
|
||
// NO_HIT, Intersections
|
||
|
||
/* Box defines (set in Scene/VoxelBoxShape.js)
|
||
#define BOX_INTERSECTION_INDEX ### // always 0
|
||
*/
|
||
|
||
uniform vec3 u_renderMinBounds;
|
||
uniform vec3 u_renderMaxBounds;
|
||
|
||
RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound)
|
||
{
|
||
// Consider the box as the intersection of the space between 3 pairs of parallel planes
|
||
// Compute the distance along the ray to each plane
|
||
vec3 t0 = (minBound - ray.pos) / ray.dir;
|
||
vec3 t1 = (maxBound - ray.pos) / ray.dir;
|
||
|
||
// Identify candidate entries/exits based on distance from ray.pos
|
||
vec3 entries = min(t0, t1);
|
||
vec3 exits = max(t0, t1);
|
||
|
||
vec3 directions = sign(ray.dir);
|
||
|
||
// The actual intersection points are the furthest entry and the closest exit
|
||
float lastEntry = maxComponent(entries);
|
||
bvec3 isLastEntry = equal(entries, vec3(lastEntry));
|
||
vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions;
|
||
vec4 entry = vec4(entryNormal, lastEntry);
|
||
|
||
float firstExit = minComponent(exits);
|
||
bvec3 isFirstExit = equal(exits, vec3(firstExit));
|
||
vec3 exitNormal = vec3(isLastEntry) * directions;
|
||
vec4 exit = vec4(exitNormal, firstExit);
|
||
|
||
if (entry.w > exit.w) {
|
||
entry.w = NO_HIT;
|
||
exit.w = NO_HIT;
|
||
}
|
||
|
||
return RayShapeIntersection(entry, exit);
|
||
}
|
||
|
||
void intersectShape(in Ray ray, inout Intersections ix)
|
||
{
|
||
RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds);
|
||
setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection);
|
||
}
|
||
`;var W8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections,
|
||
// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection,
|
||
// intersectIntersections
|
||
// See IntersectLongitude.glsl for the definitions of intersectHalfPlane,
|
||
// intersectFlippedWedge, intersectRegularWedge
|
||
|
||
/* Cylinder defines (set in Scene/VoxelCylinderShape.js)
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF
|
||
#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO
|
||
|
||
#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX
|
||
#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN
|
||
#define CYLINDER_INTERSECTION_INDEX_ANGLE
|
||
*/
|
||
|
||
// Cylinder uniforms
|
||
uniform vec2 u_cylinderRenderRadiusMinMax;
|
||
uniform vec2 u_cylinderRenderHeightMinMax;
|
||
#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE)
|
||
uniform vec2 u_cylinderRenderAngleMinMax;
|
||
#endif
|
||
|
||
/**
|
||
* Find the intersection of a ray with the volume defined by two planes of constant z
|
||
*/
|
||
RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex)
|
||
{
|
||
float zPosition = ray.pos.z;
|
||
float zDirection = ray.dir.z;
|
||
|
||
float tmin = (minMaxHeight.x - zPosition) / zDirection;
|
||
float tmax = (minMaxHeight.y - zPosition) / zDirection;
|
||
|
||
// Normals point outside the volume
|
||
float signFlip = convex ? 1.0 : -1.0;
|
||
vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin);
|
||
vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax);
|
||
|
||
bool topEntry = zDirection < 0.0;
|
||
vec4 entry = topEntry ? intersectMax : intersectMin;
|
||
vec4 exit = topEntry ? intersectMin : intersectMax;
|
||
|
||
return RayShapeIntersection(entry, exit);
|
||
}
|
||
|
||
/**
|
||
* Find the intersection of a ray with a right cylindrical surface of a given radius
|
||
* about the z-axis.
|
||
*/
|
||
RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex)
|
||
{
|
||
vec2 position = ray.pos.xy;
|
||
vec2 direction = ray.dir.xy;
|
||
|
||
float a = dot(direction, direction);
|
||
float b = dot(position, direction);
|
||
float c = dot(position, position) - radius * radius;
|
||
float determinant = b * b - a * c;
|
||
|
||
if (determinant < 0.0) {
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
return RayShapeIntersection(miss, miss);
|
||
}
|
||
|
||
determinant = sqrt(determinant);
|
||
float t1 = (-b - determinant) / a;
|
||
float t2 = (-b + determinant) / a;
|
||
float signFlip = convex ? 1.0 : -1.0;
|
||
vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1);
|
||
vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2);
|
||
|
||
return RayShapeIntersection(intersect1, intersect2);
|
||
}
|
||
|
||
/**
|
||
* Find the intersection of a ray with a right cylindrical solid of given
|
||
* radius and height bounds. NOTE: The shape is assumed to be convex.
|
||
*/
|
||
RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight)
|
||
{
|
||
RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true);
|
||
RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true);
|
||
return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection);
|
||
}
|
||
|
||
void intersectShape(Ray ray, inout Intersections ix)
|
||
{
|
||
// Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].
|
||
// Direction is scaled as well to be in sync with position.
|
||
ray.pos = ray.pos * 2.0 - 1.0;
|
||
ray.dir *= 2.0;
|
||
|
||
RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax);
|
||
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect);
|
||
|
||
if (outerIntersect.entry.w == NO_HIT) {
|
||
return;
|
||
}
|
||
|
||
#if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT)
|
||
// When the cylinder is perfectly thin it's necessary to sandwich the
|
||
// inner cylinder intersection inside the outer cylinder intersection.
|
||
|
||
// Without this special case,
|
||
// [outerMin, outerMax, innerMin, innerMax] will bubble sort to
|
||
// [outerMin, innerMin, outerMax, innerMax] which will cause the back
|
||
// side of the cylinder to be invisible because it will think the ray
|
||
// is still inside the inner (negative) cylinder after exiting the
|
||
// outer (positive) cylinder.
|
||
|
||
// With this special case,
|
||
// [outerMin, innerMin, innerMax, outerMax] will bubble sort to
|
||
// [outerMin, innerMin, innerMax, outerMax] which will work correctly.
|
||
|
||
// Note: If initializeIntersections() changes its sorting function
|
||
// from bubble sort to something else, this code may need to change.
|
||
RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false);
|
||
setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter
|
||
setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter
|
||
setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit
|
||
setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit
|
||
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN)
|
||
RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect);
|
||
#endif
|
||
|
||
#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF)
|
||
RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect);
|
||
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF)
|
||
RayShapeIntersection wedgeIntersects[2];
|
||
intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]);
|
||
#elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO)
|
||
RayShapeIntersection wedgeIntersects[2];
|
||
intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]);
|
||
setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]);
|
||
#endif
|
||
}
|
||
`;var j8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections,
|
||
// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection
|
||
// See IntersectLongitude.glsl for the definitions of intersectHalfPlane,
|
||
// intersectFlippedWedge, intersectRegularWedge
|
||
|
||
/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js)
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF
|
||
#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE
|
||
#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX
|
||
#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN
|
||
#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX
|
||
#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN
|
||
*/
|
||
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE)
|
||
uniform vec2 u_ellipsoidRenderLongitudeMinMax;
|
||
#endif
|
||
uniform float u_eccentricitySquared;
|
||
uniform vec2 u_ellipsoidRenderLatitudeSinMinMax;
|
||
uniform vec2 u_clipMinMaxHeight;
|
||
|
||
RayShapeIntersection intersectZPlane(in Ray ray, in float z) {
|
||
float t = -ray.pos.z / ray.dir.z;
|
||
|
||
bool startsOutside = sign(ray.pos.z) == sign(z);
|
||
bool entry = (t >= 0.0) != startsOutside;
|
||
|
||
vec4 intersect = vec4(0.0, 0.0, z, t);
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
|
||
if (entry) {
|
||
return RayShapeIntersection(intersect, farSide);
|
||
} else {
|
||
return RayShapeIntersection(-1.0 * farSide, intersect);
|
||
}
|
||
}
|
||
|
||
RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex)
|
||
{
|
||
// Scale the ray by the ellipsoid axes to make it a unit sphere
|
||
// Note: approximating ellipsoid + height as an ellipsoid
|
||
vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight);
|
||
vec3 position = ray.pos * radiiCorrection;
|
||
vec3 direction = ray.dir * radiiCorrection;
|
||
|
||
float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled)
|
||
float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in
|
||
float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in.
|
||
float determinant = b * b - a * c; // ~ b * b when zoomed in
|
||
|
||
if (determinant < 0.0) {
|
||
vec4 miss = vec4(normalize(direction), NO_HIT);
|
||
return RayShapeIntersection(miss, miss);
|
||
}
|
||
|
||
determinant = sqrt(determinant);
|
||
|
||
// Compute larger root using standard formula
|
||
float signB = b < 0.0 ? -1.0 : 1.0;
|
||
// The other root may suffer from subtractive cancellation in the standard formula.
|
||
// Compute it from the first root instead.
|
||
float t1 = (-b - signB * determinant) / a;
|
||
float t2 = c / (a * t1);
|
||
float tmin = min(t1, t2);
|
||
float tmax = max(t1, t2);
|
||
|
||
float directionScale = convex ? 1.0 : -1.0;
|
||
vec3 d1 = directionScale * normalize(position + tmin * direction);
|
||
vec3 d2 = directionScale * normalize(position + tmax * direction);
|
||
|
||
return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax));
|
||
}
|
||
|
||
/**
|
||
* Given a circular cone around the z-axis, with apex at the origin,
|
||
* find the parametric distance(s) along a ray where that ray intersects
|
||
* the cone.
|
||
* The cone opening angle is described by the squared cosine of
|
||
* its half-angle (the angle between the Z-axis and the surface)
|
||
*/
|
||
vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle)
|
||
{
|
||
vec3 o = ray.pos;
|
||
vec3 d = ray.dir;
|
||
float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle;
|
||
|
||
float aSin = d.z * d.z * sinSqrHalfAngle;
|
||
float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle;
|
||
float a = aSin + aCos;
|
||
|
||
float bSin = d.z * o.z * sinSqrHalfAngle;
|
||
float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle;
|
||
float b = bSin + bCos;
|
||
|
||
float cSin = o.z * o.z * sinSqrHalfAngle;
|
||
float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle;
|
||
float c = cSin + cCos;
|
||
// determinant = b * b - a * c. But bSin * bSin = aSin * cSin.
|
||
// Avoid subtractive cancellation by expanding to eliminate these terms
|
||
float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos;
|
||
|
||
if (determinant < 0.0) {
|
||
return vec2(NO_HIT);
|
||
} else if (a == 0.0) {
|
||
// Ray is parallel to cone surface
|
||
return (b == 0.0)
|
||
? vec2(NO_HIT) // Ray is on cone surface
|
||
: vec2(-0.5 * c / b, NO_HIT);
|
||
}
|
||
|
||
determinant = sqrt(determinant);
|
||
|
||
// Compute larger root using standard formula
|
||
float signB = b < 0.0 ? -1.0 : 1.0;
|
||
float t1 = (-b - signB * determinant) / a;
|
||
// The other root may suffer from subtractive cancellation in the standard formula.
|
||
// Compute it from the first root instead.
|
||
float t2 = c / (a * t1);
|
||
float tmin = min(t1, t2);
|
||
float tmax = max(t1, t2);
|
||
return vec2(tmin, tmax);
|
||
}
|
||
|
||
/**
|
||
* Given a point on a conical surface, find the surface normal at that point.
|
||
*/
|
||
vec3 getConeNormal(in vec3 p, in bool convex) {
|
||
// Start with radial component pointing toward z-axis
|
||
vec2 radial = -abs(p.z) * normalize(p.xy);
|
||
// Z component points toward opening of cone
|
||
float zSign = (p.z < 0.0) ? -1.0 : 1.0;
|
||
float z = length(p.xy) * zSign;
|
||
// Flip normal if shape is convex
|
||
float flip = (convex) ? -1.0 : 1.0;
|
||
return normalize(vec3(radial, z) * flip);
|
||
}
|
||
|
||
/**
|
||
* Compute the shift between the ellipsoid origin and the apex of a cone of latitude
|
||
*/
|
||
float getLatitudeConeShift(in float sinLatitude) {
|
||
// Find prime vertical radius of curvature:
|
||
// the distance along the ellipsoid normal to the intersection with the z-axis
|
||
float x2 = u_eccentricitySquared * sinLatitude * sinLatitude;
|
||
float primeVerticalRadius = inversesqrt(1.0 - x2);
|
||
|
||
// Compute a shift from the origin to the intersection of the cone with the z-axis
|
||
return primeVerticalRadius * u_eccentricitySquared * sinLatitude;
|
||
}
|
||
|
||
void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) {
|
||
// Undo the scaling from ellipsoid to sphere
|
||
ray.pos = ray.pos * u_ellipsoidRadiiUv;
|
||
ray.dir = ray.dir * u_ellipsoidRadiiUv;
|
||
// Shift the ray to account for the latitude cone not being centered at the Earth center
|
||
ray.pos.z += getLatitudeConeShift(cosHalfAngle);
|
||
|
||
float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle;
|
||
vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle);
|
||
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
|
||
// Initialize output with no intersections
|
||
intersections[0].entry = -1.0 * farSide;
|
||
intersections[0].exit = farSide;
|
||
intersections[1].entry = miss;
|
||
intersections[1].exit = miss;
|
||
|
||
if (intersect.x == NO_HIT) {
|
||
return;
|
||
}
|
||
|
||
// Find the points of intersection
|
||
float tmin = intersect.x;
|
||
float tmax = intersect.y;
|
||
vec3 p0 = ray.pos + tmin * ray.dir;
|
||
vec3 p1 = ray.pos + tmax * ray.dir;
|
||
|
||
vec4 intersect0 = vec4(getConeNormal(p0, true), tmin);
|
||
vec4 intersect1 = vec4(getConeNormal(p1, true), tmax);
|
||
|
||
bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle);
|
||
bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle);
|
||
|
||
if (p0InShadowCone && p1InShadowCone) {
|
||
// no valid intersections
|
||
} else if (p0InShadowCone) {
|
||
intersections[0].exit = intersect1;
|
||
} else if (p1InShadowCone) {
|
||
intersections[0].entry = intersect0;
|
||
} else {
|
||
intersections[0].exit = intersect0;
|
||
intersections[1].entry = intersect1;
|
||
intersections[1].exit = farSide;
|
||
}
|
||
}
|
||
|
||
RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) {
|
||
// Undo the scaling from ellipsoid to sphere
|
||
ray.pos = ray.pos * u_ellipsoidRadiiUv;
|
||
ray.dir = ray.dir * u_ellipsoidRadiiUv;
|
||
// Shift the ray to account for the latitude cone not being centered at the Earth center
|
||
ray.pos.z += getLatitudeConeShift(cosHalfAngle);
|
||
|
||
float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle;
|
||
vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle);
|
||
|
||
vec4 miss = vec4(normalize(ray.dir), NO_HIT);
|
||
vec4 farSide = vec4(normalize(ray.dir), INF_HIT);
|
||
|
||
if (intersect.x == NO_HIT) {
|
||
return RayShapeIntersection(miss, miss);
|
||
}
|
||
|
||
// Find the points of intersection
|
||
float tmin = intersect.x;
|
||
float tmax = intersect.y;
|
||
vec3 p0 = ray.pos + tmin * ray.dir;
|
||
vec3 p1 = ray.pos + tmax * ray.dir;
|
||
|
||
vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin);
|
||
vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax);
|
||
|
||
bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle);
|
||
bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle);
|
||
|
||
if (p0InShadowCone && p1InShadowCone) {
|
||
return RayShapeIntersection(miss, miss);
|
||
} else if (p0InShadowCone) {
|
||
return RayShapeIntersection(intersect1, farSide);
|
||
} else if (p1InShadowCone) {
|
||
return RayShapeIntersection(-1.0 * farSide, intersect0);
|
||
} else {
|
||
return RayShapeIntersection(intersect0, intersect1);
|
||
}
|
||
}
|
||
|
||
void intersectShape(in Ray ray, inout Intersections ix) {
|
||
// Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1].
|
||
// Direction is scaled as well to be in sync with position.
|
||
ray.pos = ray.pos * 2.0 - 1.0;
|
||
ray.dir *= 2.0;
|
||
|
||
// Outer ellipsoid
|
||
RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect);
|
||
|
||
// Exit early if the outer ellipsoid was missed.
|
||
if (outerIntersect.entry.w == NO_HIT) {
|
||
return;
|
||
}
|
||
|
||
// Inner ellipsoid
|
||
RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false);
|
||
|
||
if (innerIntersect.entry.w == NO_HIT) {
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect);
|
||
} else {
|
||
// When the ellipsoid is large and thin it's possible for floating point math
|
||
// to cause the ray to intersect the inner ellipsoid before the outer ellipsoid.
|
||
// To prevent this from happening, clamp innerIntersect to outerIntersect and
|
||
// sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection.
|
||
|
||
// Without this special case,
|
||
// [outerMin, outerMax, innerMin, innerMax] will bubble sort to
|
||
// [outerMin, innerMin, outerMax, innerMax] which will cause the back
|
||
// side of the ellipsoid to be invisible because it will think the ray
|
||
// is still inside the inner (negative) ellipsoid after exiting the
|
||
// outer (positive) ellipsoid.
|
||
|
||
// With this special case,
|
||
// [outerMin, innerMin, innerMax, outerMax] will bubble sort to
|
||
// [outerMin, innerMin, innerMax, outerMax] which will work correctly.
|
||
|
||
// Note: If initializeIntersections() changes its sorting function
|
||
// from bubble sort to something else, this code may need to change.
|
||
innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w);
|
||
innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w);
|
||
setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter
|
||
setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter
|
||
setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit
|
||
setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit
|
||
}
|
||
|
||
// Bottom cone
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF)
|
||
RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF)
|
||
RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF)
|
||
RayShapeIntersection bottomConeIntersections[2];
|
||
intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]);
|
||
#endif
|
||
|
||
// Top cone
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF)
|
||
RayShapeIntersection topConeIntersections[2];
|
||
intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF)
|
||
RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF)
|
||
RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection);
|
||
#endif
|
||
|
||
// Wedge
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO)
|
||
RayShapeIntersection wedgeIntersects[2];
|
||
intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF)
|
||
RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect);
|
||
#elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF)
|
||
RayShapeIntersection wedgeIntersects[2];
|
||
intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]);
|
||
setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]);
|
||
#endif
|
||
}
|
||
`;var ZT=`// Main intersection function for Voxel scenes.
|
||
// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl
|
||
// for the definition of intersectShape. The appropriate function is selected
|
||
// based on the VoxelPrimitive shape type, and added to the shader in
|
||
// Scene/VoxelRenderResources.js.
|
||
// See also IntersectClippingPlane.glsl and IntersectDepth.glsl.
|
||
// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT,
|
||
// getFirstIntersection, initializeIntersections, nextIntersection.
|
||
|
||
/* Intersection defines (set in Scene/VoxelRenderResources.js)
|
||
#define INTERSECTION_COUNT ###
|
||
*/
|
||
|
||
RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) {
|
||
// Do a ray-shape intersection to find the exact starting and ending points.
|
||
intersectShape(ray, ix);
|
||
|
||
// Exit early if the positive shape was completely missed or behind the ray.
|
||
RayShapeIntersection intersection = getFirstIntersection(ix);
|
||
if (intersection.entry.w == NO_HIT) {
|
||
// Positive shape was completely missed - so exit early.
|
||
return intersection;
|
||
}
|
||
|
||
// Clipping planes
|
||
#if defined(CLIPPING_PLANES)
|
||
intersectClippingPlanes(ray, ix);
|
||
#endif
|
||
|
||
// Depth
|
||
intersectDepth(screenCoord, ray, ix);
|
||
|
||
// Find the first intersection that's in front of the ray
|
||
#if (INTERSECTION_COUNT > 1)
|
||
initializeIntersections(ix);
|
||
for (int i = 0; i < INTERSECTION_COUNT; ++i) {
|
||
intersection = nextIntersection(ix);
|
||
if (intersection.exit.w > 0.0) {
|
||
// Set start to 0.0 when ray is inside the shape.
|
||
intersection.entry.w = max(intersection.entry.w, 0.0);
|
||
break;
|
||
}
|
||
}
|
||
#else
|
||
// Set start to 0.0 when ray is inside the shape.
|
||
intersection.entry.w = max(intersection.entry.w, 0.0);
|
||
#endif
|
||
|
||
return intersection;
|
||
}
|
||
`;var Y8=`/* Box defines (set in Scene/VoxelBoxShape.js)
|
||
#define BOX_HAS_SHAPE_BOUNDS
|
||
*/
|
||
|
||
#if defined(BOX_HAS_SHAPE_BOUNDS)
|
||
uniform vec3 u_boxUvToShapeUvScale;
|
||
uniform vec3 u_boxUvToShapeUvTranslate;
|
||
#endif
|
||
|
||
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
|
||
// For BOX, UV space = shape space, so we can use positionUv as-is,
|
||
// and the Jacobian is the identity matrix, except that a step of 1
|
||
// only spans half the shape space [-1, 1], so the identity is scaled.
|
||
return PointJacobianT(positionUv, mat3(0.5));
|
||
}
|
||
|
||
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
|
||
#if defined(BOX_HAS_SHAPE_BOUNDS)
|
||
return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate;
|
||
#else
|
||
return positionShape;
|
||
#endif
|
||
}
|
||
|
||
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
|
||
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
|
||
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
|
||
return pointJacobian;
|
||
}
|
||
|
||
vec3 convertShapeUvToUvSpace(in vec3 shapeUv) {
|
||
#if defined(BOX_HAS_SHAPE_BOUNDS)
|
||
return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale;
|
||
#else
|
||
return shapeUv;
|
||
#endif
|
||
}
|
||
|
||
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
|
||
#if defined(BOX_HAS_SHAPE_BOUNDS)
|
||
return shapeUv / u_boxUvToShapeUvScale;
|
||
#else
|
||
return shapeUv;
|
||
#endif
|
||
}`;var q8=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js)
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY
|
||
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED
|
||
*/
|
||
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
|
||
uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset
|
||
#endif
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
|
||
uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset
|
||
#endif
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
|
||
uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset
|
||
#endif
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
|
||
uniform vec2 u_cylinderShapeUvAngleMinMax;
|
||
#endif
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
|
||
uniform float u_cylinderShapeUvAngleRangeZeroMid;
|
||
#endif
|
||
|
||
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
|
||
// Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1]
|
||
vec3 position = positionUv * 2.0 - 1.0;
|
||
|
||
float radius = length(position.xy); // [0, 1]
|
||
vec3 radial = normalize(vec3(position.xy, 0.0));
|
||
|
||
// Shape space height is defined within [0, 1]
|
||
float height = positionUv.z; // [0, 1]
|
||
vec3 z = vec3(0.0, 0.0, 1.0);
|
||
|
||
float angle = atan(position.y, position.x);
|
||
vec3 east = normalize(vec3(-position.y, position.x, 0.0));
|
||
|
||
vec3 point = vec3(radius, angle, height);
|
||
mat3 jacobianT = mat3(radial, east / length(position.xy), z);
|
||
return PointJacobianT(point, jacobianT);
|
||
}
|
||
|
||
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
|
||
float radius = positionShape.x;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
|
||
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y;
|
||
#endif
|
||
|
||
float angle = (positionShape.y + czm_pi) / czm_twoPi;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
|
||
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.
|
||
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);
|
||
#endif
|
||
|
||
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)
|
||
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;
|
||
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
|
||
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;
|
||
#endif
|
||
|
||
angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y;
|
||
#endif
|
||
|
||
float height = positionShape.z;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
|
||
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y;
|
||
#endif
|
||
|
||
return vec3(radius, angle, height);
|
||
}
|
||
|
||
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
|
||
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
|
||
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
|
||
return pointJacobian;
|
||
}
|
||
|
||
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
|
||
float radius = shapeUv.x;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
|
||
radius /= u_cylinderUvToShapeUvRadius.x;
|
||
#endif
|
||
|
||
float angle = shapeUv.y * czm_twoPi;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
|
||
angle /= u_cylinderUvToShapeUvAngle.x;
|
||
#endif
|
||
|
||
float height = shapeUv.z;
|
||
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
|
||
height /= u_cylinderUvToShapeUvHeight.x;
|
||
#endif
|
||
|
||
return vec3(radius, angle, height);
|
||
}
|
||
`;var K8=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js)
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY
|
||
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY
|
||
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE
|
||
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED
|
||
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE
|
||
*/
|
||
|
||
uniform vec3 u_ellipsoidRadiiUv; // [0,1]
|
||
uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv;
|
||
uniform vec3 u_ellipsoidInverseRadiiSquaredUv;
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)
|
||
uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid;
|
||
#endif
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
|
||
uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset
|
||
#endif
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
||
uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset
|
||
#endif
|
||
uniform float u_ellipsoidInverseHeightDifferenceUv;
|
||
|
||
// robust iterative solution without trig functions
|
||
// https://github.com/0xfaded/ellipse_demo/issues/1
|
||
// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse
|
||
// Extended to return radius of curvature along with the point
|
||
vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) {
|
||
vec2 p = abs(pos);
|
||
vec2 inverseRadii = 1.0 / radii;
|
||
|
||
// We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t))
|
||
// but store the cos and sin of t in a vec2 for efficiency.
|
||
// Initial guess: t = pi/4
|
||
vec2 tTrigs = vec2(0.7071067811865476);
|
||
// Initial guess of point on ellipsoid
|
||
vec2 v = radii * tTrigs;
|
||
// Center of curvature of the ellipse at v
|
||
vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs;
|
||
|
||
const int iterations = 3;
|
||
for (int i = 0; i < iterations; ++i) {
|
||
// Find the (approximate) intersection of p - evolute with the ellipsoid.
|
||
vec2 q = normalize(p - evolute) * length(v - evolute);
|
||
// Update the estimate of t.
|
||
tTrigs = (q + evolute) * inverseRadii;
|
||
tTrigs = normalize(clamp(tTrigs, 0.0, 1.0));
|
||
v = radii * tTrigs;
|
||
evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs;
|
||
}
|
||
|
||
return vec3(v * sign(pos), length(v - evolute));
|
||
}
|
||
|
||
PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) {
|
||
// Convert from UV space [0, 1] to local space [-1, 1]
|
||
vec3 position = positionUv * 2.0 - 1.0;
|
||
// Undo the scaling from ellipsoid to sphere
|
||
position = position * u_ellipsoidRadiiUv;
|
||
|
||
float longitude = atan(position.y, position.x);
|
||
vec3 east = normalize(vec3(-position.y, position.x, 0.0));
|
||
|
||
// Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z)
|
||
// (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal
|
||
float distanceFromZAxis = length(position.xy);
|
||
vec2 posEllipse = vec2(distanceFromZAxis, position.z);
|
||
vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz);
|
||
vec2 surfacePoint = surfacePointAndRadius.xy;
|
||
|
||
vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz);
|
||
float latitude = atan(normal2d.y, normal2d.x);
|
||
vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x));
|
||
|
||
float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0;
|
||
float height = heightSign * length(posEllipse - surfacePoint);
|
||
vec3 up = normalize(cross(east, north));
|
||
|
||
vec3 point = vec3(longitude, latitude, height);
|
||
mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up);
|
||
return PointJacobianT(point, jacobianT);
|
||
}
|
||
|
||
vec3 convertShapeToShapeUvSpace(in vec3 positionShape) {
|
||
// Longitude: shift & scale to [0, 1]
|
||
float longitude = (positionShape.x + czm_pi) / czm_twoPi;
|
||
|
||
// Correct the angle when max < min
|
||
// Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space.
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)
|
||
longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z);
|
||
#endif
|
||
|
||
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY)
|
||
longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude;
|
||
#endif
|
||
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY)
|
||
longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude;
|
||
#endif
|
||
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
|
||
longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y;
|
||
#endif
|
||
|
||
// Latitude: shift and scale to [0, 1]
|
||
float latitude = (positionShape.y + czm_piOverTwo) / czm_pi;
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
||
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;
|
||
#endif
|
||
|
||
// Height: scale to the range [0, 1]
|
||
float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv;
|
||
|
||
return vec3(longitude, latitude, height);
|
||
}
|
||
|
||
PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) {
|
||
PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv);
|
||
pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point);
|
||
return pointJacobian;
|
||
}
|
||
|
||
vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) {
|
||
// Convert from [0, 1] to radians [-pi, pi]
|
||
float longitude = shapeUv.x * czm_twoPi;
|
||
#if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
|
||
longitude /= u_ellipsoidUvToShapeUvLongitude.x;
|
||
#endif
|
||
|
||
// Convert from [0, 1] to radians [-pi/2, pi/2]
|
||
float latitude = shapeUv.y * czm_pi;
|
||
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
||
latitude /= u_ellipsoidUvToShapeUvLatitude.x;
|
||
#endif
|
||
|
||
float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv;
|
||
|
||
return vec3(longitude, latitude, height);
|
||
}
|
||
`;var X8=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js
|
||
#define OCTREE_FLAG_INTERNAL 0
|
||
#define OCTREE_FLAG_LEAF 1
|
||
#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2
|
||
|
||
#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops
|
||
|
||
uniform sampler2D u_octreeInternalNodeTexture;
|
||
uniform vec2 u_octreeInternalNodeTexelSizeUv;
|
||
uniform int u_octreeInternalNodeTilesPerRow;
|
||
#if (SAMPLE_COUNT > 1)
|
||
uniform sampler2D u_octreeLeafNodeTexture;
|
||
uniform vec2 u_octreeLeafNodeTexelSizeUv;
|
||
uniform int u_octreeLeafNodeTilesPerRow;
|
||
#endif
|
||
uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation
|
||
uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data
|
||
#if defined(PADDING)
|
||
uniform ivec3 u_paddingBefore;
|
||
#endif
|
||
|
||
struct OctreeNodeData {
|
||
int data;
|
||
int flag;
|
||
};
|
||
|
||
struct TraversalData {
|
||
ivec4 octreeCoords;
|
||
int parentOctreeIndex;
|
||
};
|
||
|
||
struct SampleData {
|
||
int megatextureIndex;
|
||
ivec4 tileCoords;
|
||
vec3 tileUv;
|
||
vec3 inputCoordinate;
|
||
#if (SAMPLE_COUNT > 1)
|
||
float weight;
|
||
#endif
|
||
};
|
||
|
||
// Integer mod: For WebGL1 only
|
||
int intMod(in int a, in int b) {
|
||
return a - (b * (a / b));
|
||
}
|
||
int normU8_toInt(in float value) {
|
||
return int(value * 255.0);
|
||
}
|
||
int normU8x2_toInt(in vec2 value) {
|
||
return int(value.x * 255.0) + 256 * int(value.y * 255.0);
|
||
}
|
||
float normU8x2_toFloat(in vec2 value) {
|
||
return float(normU8x2_toInt(value)) / 65535.0;
|
||
}
|
||
|
||
OctreeNodeData getOctreeNodeData(in vec2 octreeUv) {
|
||
vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv);
|
||
|
||
OctreeNodeData data;
|
||
data.data = normU8x2_toInt(texData.xy);
|
||
data.flag = normU8x2_toInt(texData.zw);
|
||
return data;
|
||
}
|
||
|
||
OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) {
|
||
int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x;
|
||
int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex;
|
||
int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow;
|
||
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
|
||
return getOctreeNodeData(octreeUv);
|
||
}
|
||
|
||
int getOctreeParentIndex(in int octreeIndex) {
|
||
int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9;
|
||
int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow;
|
||
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
|
||
vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv);
|
||
int parentOctreeIndex = normU8x2_toInt(parentData.xy);
|
||
return parentOctreeIndex;
|
||
}
|
||
|
||
/**
|
||
* Convert a position in the uv-space of the tileset bounding shape
|
||
* into the uv-space of a tile within the tileset
|
||
*/
|
||
vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) {
|
||
// PERFORMANCE_IDEA: use bit-shifting (only in WebGL2)
|
||
float dimAtLevel = exp2(float(octreeCoords.w));
|
||
return shapePosition * dimAtLevel - vec3(octreeCoords.xyz);
|
||
}
|
||
|
||
vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) {
|
||
vec3 tileUv = getTileUv(shapePosition, octreeCoords);
|
||
return clamp(tileUv, vec3(0.0), vec3(1.0));
|
||
}
|
||
|
||
void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) {
|
||
vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords);
|
||
|
||
vec3 inputCoordinate = tileUv * vec3(u_dimensions);
|
||
#if defined(PADDING)
|
||
inputCoordinate += vec3(u_paddingBefore);
|
||
#endif
|
||
#if defined(Y_UP_METADATA_ORDER)
|
||
#if defined(SHAPE_BOX)
|
||
float inputY = inputCoordinate.y;
|
||
inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z;
|
||
inputCoordinate.z = inputY;
|
||
#elif defined(SHAPE_CYLINDER)
|
||
float angle = inputCoordinate.y;
|
||
float height = inputCoordinate.z;
|
||
#if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE))
|
||
// Account for the different 0-angle convention in glTF vs 3DTiles
|
||
if (sampleData.tileCoords.w == 0) {
|
||
float angleCount = float(u_inputDimensions.z);
|
||
angle = mod(angle + angleCount / 2.0, angleCount);
|
||
}
|
||
#endif
|
||
inputCoordinate.y = height;
|
||
inputCoordinate.z = angle;
|
||
#endif
|
||
#endif
|
||
|
||
sampleData.tileUv = tileUv;
|
||
sampleData.inputCoordinate = inputCoordinate;
|
||
}
|
||
|
||
void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) {
|
||
sampleData.megatextureIndex = data.data;
|
||
sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT)
|
||
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
|
||
: octreeCoords;
|
||
}
|
||
|
||
#if (SAMPLE_COUNT > 1)
|
||
void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) {
|
||
int leafIndex = data.data;
|
||
int leafNodeTexelCount = 2;
|
||
// Adding 0.5 moves to the center of the texel
|
||
float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5;
|
||
float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5;
|
||
|
||
// Get an interpolation weight and a flag to determine whether to read the parent texture
|
||
vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY);
|
||
vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0);
|
||
float lerp = normU8x2_toFloat(leafData0.xy);
|
||
sampleDatas[0].weight = 1.0 - lerp;
|
||
sampleDatas[1].weight = lerp;
|
||
// TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT
|
||
sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1)
|
||
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
|
||
: octreeCoords;
|
||
sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1)
|
||
? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1)
|
||
: octreeCoords;
|
||
|
||
// Get megatexture indices for both samples
|
||
vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY);
|
||
vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1);
|
||
sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy);
|
||
sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw);
|
||
}
|
||
#endif
|
||
|
||
OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) {
|
||
float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w));
|
||
vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel;
|
||
vec3 end = start + vec3(sizeAtLevel);
|
||
OctreeNodeData childData;
|
||
|
||
for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) {
|
||
// Find out which octree child contains the position
|
||
// 0 if before center, 1 if after
|
||
vec3 center = 0.5 * (start + end);
|
||
vec3 childCoord = step(center, shapePosition);
|
||
|
||
// Get octree coords for the next level down
|
||
ivec4 octreeCoords = traversalData.octreeCoords;
|
||
traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1);
|
||
|
||
childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord));
|
||
|
||
if (childData.flag != OCTREE_FLAG_INTERNAL) {
|
||
// leaf tile - stop traversing
|
||
break;
|
||
}
|
||
|
||
// interior tile - keep going deeper
|
||
start = mix(start, center, childCoord);
|
||
end = mix(center, end, childCoord);
|
||
traversalData.parentOctreeIndex = childData.data;
|
||
}
|
||
|
||
return childData;
|
||
}
|
||
|
||
/**
|
||
* Transform a given position to an octree tile coordinate and a position within that tile,
|
||
* and find the corresponding megatexture index and texture coordinates
|
||
*/
|
||
void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) {
|
||
traversalData.octreeCoords = ivec4(0);
|
||
traversalData.parentOctreeIndex = 0;
|
||
|
||
OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0));
|
||
if (nodeData.flag != OCTREE_FLAG_LEAF) {
|
||
nodeData = traverseOctreeDownwards(shapePosition, traversalData);
|
||
}
|
||
|
||
#if (SAMPLE_COUNT == 1)
|
||
getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]);
|
||
addSampleCoordinates(shapePosition, sampleDatas[0]);
|
||
#else
|
||
getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas);
|
||
addSampleCoordinates(shapePosition, sampleDatas[0]);
|
||
addSampleCoordinates(shapePosition, sampleDatas[1]);
|
||
#endif
|
||
}
|
||
|
||
bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) {
|
||
return clamp(v, minVal, maxVal) == v;
|
||
}
|
||
|
||
bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) {
|
||
vec3 tileUv = getTileUv(shapePosition, octreeCoords);
|
||
bool inside = inRange(tileUv, vec3(0.0), vec3(1.0));
|
||
// Assume (!) the position is always inside the root tile.
|
||
return inside || octreeCoords.w == 0;
|
||
}
|
||
|
||
void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) {
|
||
if (insideTile(shapePosition, traversalData.octreeCoords)) {
|
||
for (int i = 0; i < SAMPLE_COUNT; i++) {
|
||
addSampleCoordinates(shapePosition, sampleDatas[i]);
|
||
}
|
||
return;
|
||
}
|
||
|
||
// Go up tree until we find a parent tile containing shapePosition
|
||
for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) {
|
||
traversalData.octreeCoords.xyz /= 2;
|
||
traversalData.octreeCoords.w -= 1;
|
||
|
||
if (insideTile(shapePosition, traversalData.octreeCoords)) {
|
||
break;
|
||
}
|
||
|
||
traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex);
|
||
}
|
||
|
||
// Go down tree
|
||
OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData);
|
||
|
||
#if (SAMPLE_COUNT == 1)
|
||
getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]);
|
||
addSampleCoordinates(shapePosition, sampleDatas[0]);
|
||
#else
|
||
getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas);
|
||
addSampleCoordinates(shapePosition, sampleDatas[0]);
|
||
addSampleCoordinates(shapePosition, sampleDatas[1]);
|
||
#endif
|
||
}
|
||
`;var J8=`// See Octree.glsl for the definitions of SampleData and intMod
|
||
|
||
/* Megatexture defines (set in Scene/VoxelRenderResources.js)
|
||
#define SAMPLE_COUNT ###
|
||
#define NEAREST_SAMPLING
|
||
#define PADDING
|
||
*/
|
||
|
||
uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions
|
||
uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions
|
||
uniform vec2 u_megatextureVoxelSizeUv;
|
||
uniform vec2 u_megatextureSliceSizeUv;
|
||
uniform vec2 u_megatextureTileSizeUv;
|
||
|
||
// Integer min, max, clamp: For WebGL1 only
|
||
int intMin(int a, int b) {
|
||
return a <= b ? a : b;
|
||
}
|
||
int intMax(int a, int b) {
|
||
return a >= b ? a : b;
|
||
}
|
||
int intClamp(int v, int minVal, int maxVal) {
|
||
return intMin(intMax(v, minVal), maxVal);
|
||
}
|
||
|
||
vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale)
|
||
{
|
||
int indexX = intMod(index, dimensions.x);
|
||
int indexY = index / dimensions.x;
|
||
return vec2(indexX, indexY) * uvScale;
|
||
}
|
||
|
||
/*
|
||
How is 3D data stored in a 2D megatexture?
|
||
|
||
In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total).
|
||
The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and
|
||
the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1).
|
||
Note that there could be empty space in the megatexture because it's a power of two.
|
||
|
||
0 1 2 3
|
||
+---+---+---+---+
|
||
| | | | | 3
|
||
+---+---+---+---+
|
||
| | | | | 2
|
||
+-------+-------+
|
||
|010|110|011|111| 1
|
||
|--- ---|--- ---|
|
||
|000|100|001|101| 0
|
||
+-------+-------+
|
||
|
||
When doing linear interpolation the megatexture needs to be sampled twice: once for
|
||
the Z slice above the voxel coordinate and once for the slice below. The two slices
|
||
are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is
|
||
halfway between two Z slices so the interpolation factor is 0.5. Below is a side view
|
||
of the 3D voxel grid with voxel coordinates on the left side.
|
||
|
||
2 +---+
|
||
|001|
|
||
1 +-z-+
|
||
|000|
|
||
0 +---+
|
||
|
||
When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice.
|
||
*/
|
||
|
||
Properties getPropertiesFromMegatexture(in SampleData sampleData) {
|
||
int tileIndex = sampleData.megatextureIndex;
|
||
|
||
vec3 voxelCoord = sampleData.inputCoordinate;
|
||
#if defined(NEAREST_SAMPLING)
|
||
// Round to the center of the nearest voxel
|
||
voxelCoord = floor(voxelCoord) + vec3(0.5);
|
||
#endif
|
||
|
||
// Tile location
|
||
vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv);
|
||
|
||
// Slice location
|
||
float slice = voxelCoord.z - 0.5;
|
||
int sliceIndex = int(floor(slice));
|
||
int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1);
|
||
vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
|
||
|
||
// Voxel location
|
||
vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv;
|
||
|
||
// Final location in the megatexture
|
||
vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset;
|
||
|
||
#if defined(NEAREST_SAMPLING)
|
||
return getPropertiesFromMegatextureAtUv(uv0);
|
||
#else
|
||
float sliceLerp = fract(slice);
|
||
int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1);
|
||
vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
|
||
vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset;
|
||
Properties properties0 = getPropertiesFromMegatextureAtUv(uv0);
|
||
Properties properties1 = getPropertiesFromMegatextureAtUv(uv1);
|
||
return mixProperties(properties0, properties1, sliceLerp);
|
||
#endif
|
||
}
|
||
|
||
// Convert an array of sample datas to a final weighted properties.
|
||
Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) {
|
||
#if (SAMPLE_COUNT == 1)
|
||
return getPropertiesFromMegatexture(sampleDatas[0]);
|
||
#else
|
||
// When more than one sample is taken the accumulator needs to start at 0
|
||
Properties properties = clearProperties();
|
||
for (int i = 0; i < SAMPLE_COUNT; ++i) {
|
||
float weight = sampleDatas[i].weight;
|
||
|
||
// Avoid reading the megatexture when the weight is 0 as it can be costly.
|
||
if (weight > 0.0) {
|
||
Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]);
|
||
tempProperties = scaleProperties(tempProperties, weight);
|
||
properties = sumProperties(properties, tempProperties);
|
||
}
|
||
}
|
||
return properties;
|
||
#endif
|
||
}
|
||
`;var A0t={Z_UP:0,Y_UP:1},kh=Object.freeze(A0t);function p0t(e){let t=new I_;this.shaderBuilder=t;let n=e._customShader,i=wt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let A in o)if(o.hasOwnProperty(A)){let g=o[A];t.addUniform(g.type,A,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([U8]),e.provider.metadataOrder===kh.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,pe.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",X8,Q8,G8,J8]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([V8])),t.addFragmentLines([z8]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),a==="BOX"?t.addFragmentLines([Y8,H8,ZT]):a==="CYLINDER"?t.addFragmentLines([q8,vP,W8,ZT]):a==="ELLIPSOID"&&t.addFragmentLines([K8,vP,j8,ZT]),t.addFragmentLines([k8]);let c=e._shape,u=c.shaderDefines;for(let A in u)if(u.hasOwnProperty(A)){let g=u[A];l(g)&&(g=g===!0?void 0:g,t.addDefine(A,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var Z8=p0t;function g0t(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=$8(o[p]),w=`PropertyStatistics_${x}`,M=`PropertyStatistics_${x}`;n.addStruct(w,M,pe.FRAGMENT),n.addStructField(w,T,"min"),n.addStructField(w,T,"max")}let f="MetadataStatistics",h="MetadataStatistics",A="metadataStatistics";n.addStruct(f,h,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=`PropertyStatistics_${x}`,w=x;n.addStructField(f,T,w)}let g="Metadata",m="Metadata",_="metadata";n.addStruct(g,m,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(g,x,i[p])}let y="Attributes",C="Attributes",E="attributes";n.addStruct(y,C,pe.FRAGMENT),n.addStructField(y,"vec3","positionEC"),n.addStructField(y,"vec3","normalEC");let I="Voxel",b="Voxel",S="voxel";n.addStruct(I,b,pe.FRAGMENT),n.addStructField(I,"vec3","viewDirUv"),n.addStructField(I,"float","travelDistance"),n.addStructField(I,"int","stepCount"),n.addStructField(I,"int","tileIndex"),n.addStructField(I,"int","sampleIndex"),n.addStructField(I,"float","distanceToDepthBuffer");let B="FragmentInput";n.addStruct(B,"FragmentInput",pe.FRAGMENT),n.addStructField(B,h,A),n.addStructField(B,m,_),n.addStructField(B,C,E),n.addStructField(B,b,S);let P="Properties",N="Properties",L="properties";n.addStruct(P,N,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(P,x,i[p])}{let p="clearProperties";n.addFunction(p,`${N} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=$8(o[x],r[x]);n.addFunctionLines(p,[`${L}.${i[x]} = ${T}(0.0);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="sumProperties";n.addFunction(p,`${N} sumProperties(${N} propertiesA, ${N} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = propertiesA.${T} + propertiesB.${T};`])}n.addFunctionLines(p,[`return ${L};`])}{let p="scaleProperties";n.addFunction(p,`${N} scaleProperties(${N} ${L}, float scale)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} scaledProperties = ${L};`]);for(let x=0;x<c;x++)n.addFunctionLines(p,[`scaledProperties.${i[x]} *= scale;`]);n.addFunctionLines(p,["return scaledProperties;"])}{let p="mixProperties";n.addFunction(p,`${N} mixProperties(${N} propertiesA, ${N} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = mix(propertiesA.${T}, propertiesB.${T}, mixFactor);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="copyPropertiesToMetadata";n.addFunction(p,`void copyPropertiesToMetadata(in ${N} ${L}, inout ${m} ${_})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${_}.${T} = ${L}.${T};`])}}if(u){let p="setStatistics";n.addFunction(p,`void setStatistics(inout ${h} ${A})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x],w=o[x],M=gt.getComponentCount(w);for(let O=0;O<M;O++){let U=y0t(w,O),Q=s[x][O],z=a[x][O];!l(Q)||!l(z)||n.addFunctionLines(p,[`${A}.${T}.min${U} = ${kIe(Q)};`,`${A}.${T}.max${U} = ${kIe(z)};`])}}}{let p="getPropertiesFromMegatextureAtUv";n.addFunction(p,`${N} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=o[x],w=r[x],M=_0t(T,w);n.addFunctionLines(p,[`properties.${i[x]} = texture(u_megatextureTextures[${x}], texcoord)${M};`])}n.addFunctionLines(p,[`return ${L};`])}}function $8(e){if(e===gt.SCALAR)return"float";if(e===gt.VEC2)return"vec2";if(e===gt.VEC3)return"vec3";if(e===gt.VEC4)return"vec4"}function _0t(e){if(e===gt.SCALAR)return".r";if(e===gt.VEC2)return".ra";if(e===gt.VEC3)return".rgb";if(e===gt.VEC4)return""}function kIe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function y0t(e,t){return e===gt.SCALAR?"":`[${t}]`}var e4=g0t;function C0t(e,t){let n=new Z8(e);e4(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let C="getClippingPlane",E=Dy(o,t),I=0,b=E.indexOf(")")+1,S=E.indexOf("{",b)+1,B=E.indexOf("}",S),v=E.slice(I,b),P=E.slice(S,B);i.addFunction(C,v,pe.FRAGMENT),i.addFunctionLines(C,[P])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}),A=t.getViewportQuadVertexArray(),g=e._depthTest,m=new nt({vertexArray:A,primitiveType:Me.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Be.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),_=nt.shallowClone(m,new nt);_.shaderProgram=u,_.pickOnly=!0;let y=nt.shallowClone(m,new nt);if(y.shaderProgram=f,y.pickOnly=!0,l(e._drawCommand)){let C=e._drawCommand;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPick)){let C=e._drawCommandPick;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let C=e._drawCommandPickVoxel;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=_,e._drawCommandPickVoxel=y}var t4=C0t;var E0t={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},PP=Object.freeze(E0t);function I0t(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var n4=I0t;function $T(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}$T.prototype.getTexture=function(e){return this._textures[e]};function x0t(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}$T.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):x0t(this,e,t)};function b0t(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?i4(o,r,n):T0t(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function i4(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?GIe(e,n):new Nt({context:n,source:t,sampler:o});return UIe(o)&&r.generateMipmap(),r}function T0t(e,t,n){let{typedArray:i,sampler:o}=e,r=UIe(o),s=o.wrapS===Tn.REPEAT||o.wrapS===Tn.MIRRORED_REPEAT||o.wrapT===Tn.REPEAT||o.wrapT===Tn.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(D.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===He.UNSIGNED_BYTE){let h=n4(i,a,c),A=GC(h);return i4({sampler:o},A,n)}}else{let h=GC(t);return i4(e,h,n)}else return i4(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),GIe(e,n)}function UIe(e){return[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function GIe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Nt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}$T.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];b0t(this,o,t)}n.length=0};$T.prototype.isDestroyed=function(){return!1};$T.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var o4=$T;function RP(e){e=e??V.EMPTY_OBJECT,this.mode=e.mode??p_.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??V.EMPTY_OBJECT,this.varyings=e.varyings??V.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??tE.INHERIT,this._textureManager=new o4,this._defaultTexture=void 0,this.uniformMap=S0t(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},D0t(this),v0t(this)}function S0t(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===PP.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=w0t(e,i)):n[i]=B0t(e,i)}return n}function w0t(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function B0t(e,t){return function(){return e.uniforms[t].value}}function y0(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function D0t(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,y0(r,t,o),o=e.usedVariablesVertex.featureIdSet,y0(r,n,o),o=e.usedVariablesVertex.metadataSet,y0(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,y0(s,t,o),o=e.usedVariablesFragment.featureIdSet,y0(s,n,o),o=e.usedVariablesFragment.metadataSet,y0(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;y0(s,a,c)}}function zIe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function zc(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${zIe(t)} is not available in the ${i} shader. Did you mean ${zIe(n)} instead?`;throw new me(o)}}function v0t(e){let t=e.usedVariablesVertex.attributeSet;zc(t,"position","positionMC","vertex"),zc(t,"normal","normalMC","vertex"),zc(t,"tangent","tangentMC","vertex"),zc(t,"bitangent","bitangentMC","vertex"),zc(t,"positionWC","positionMC","vertex"),zc(t,"positionEC","positionMC","vertex"),zc(t,"normalEC","normalMC","vertex"),zc(t,"tangentEC","tangentMC","vertex"),zc(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;zc(n,"position","positionEC","fragment"),zc(n,"normal","normalEC","fragment"),zc(n,"tangent","tangentEC","fragment"),zc(n,"bitangent","bitangentEC","fragment"),zc(n,"normalMC","normalEC","fragment"),zc(n,"tangentMC","tangentEC","fragment"),zc(n,"bitangentMC","bitangentEC","fragment")}RP.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===PP.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};RP.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};RP.prototype.isDestroyed=function(){return!1};RP.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var eS=RP;function ig(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(ig.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});ig.fromMetadataArray=function(e){return new ig({metadata:e})};ig.fromGltf=async function(e){let t=new Ff({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new ig({loader:t})};ig.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=P0t(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function P0t(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,A=e.find(y=>y.name===h);if(!l(A))continue;let g=zt.toComponentDatatype(s[f]),m=gt.getComponentCount(r[f]),_=A.count*m;u[f]=q.createArrayBufferView(g,A.typedArray.buffer,A.typedArray.byteOffset+A.byteOffset,_)}return u}ig.prototype.isDestroyed=function(){return!1};ig.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var tS=ig;function _A(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=_A.DefaultMinBounds.clone(),this._maxBounds=_A.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var R0t=new d,RJ=new d,M0t=new J,N0t=new d,L0t=new d,O0t=new d,F0t=new d,VIe=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R);_A.prototype.update=function(e,t,n,i,o){i=i??t.clone(N0t),o=o??n.clone(L0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let r=d.clamp(t,i,o,O0t),s=d.clamp(n,i,o,F0t),a=R.getScale(e,RJ);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=NJ(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:u}=this;for(let g in u)u.hasOwnProperty(g)&&(u[g]=void 0);let f=0;u.BOX_INTERSECTION_INDEX=f,f+=1,c.renderMinBounds=R.multiplyByPoint(VIe,r,c.renderMinBounds),c.renderMaxBounds=R.multiplyByPoint(VIe,s,c.renderMaxBounds),u.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,A=n;return c.boxUvToShapeUvScale=d.fromElements(2/(h.x===A.x?1:A.x-h.x),2/(h.y===A.y?1:A.y-h.y),2/(h.z===A.z?1:A.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=d.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=f,!0};var r4=new d,MJ=new d;_A.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,a*t),D.lerp(r.y,s.y,a*n),D.lerp(r.z,s.z,a*i),r4),u=d.fromElements(D.lerp(r.x,s.x,a*(t+1)),D.lerp(r.y,s.y,a*(n+1)),D.lerp(r.z,s.z,a*(i+1)),MJ);return NJ(c,u,this.shapeTransform,o)};var HIe=new d;_A.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,HIe),s=d.multiplyByScalar(r,o,HIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,r4),o,r4),c=d.add(a,s,MJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),r4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),MJ);return NJ(h,A,this.shapeTransform,i)};_A.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));_A.DefaultMaxBounds=Object.freeze(new d(1,1,1));function NJ(e,t,n,i){let o=_A.DefaultMinBounds,r=_A.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=R.getTranslation(n,i.center),i.halfAxes=R.getMatrix3(n,i.halfAxes);else{let a=R.getScale(n,RJ),c=d.midpoint(e,t,R0t);i.center=R.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),RJ);let u=R.getRotation(n,M0t);i.halfAxes=J.setScale(u,a,i.halfAxes)}return i}var nS=_A;function og(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=og.DefaultMinBounds.clone(),this._maxBounds=og.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new k,cylinderRenderAngleMinMax:new k,cylinderRenderHeightMinMax:new k,cylinderUvToShapeUvRadius:new k,cylinderUvToShapeUvAngle:new k,cylinderUvToShapeUvHeight:new k,cylinderShapeUvAngleMinMax:new k,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var YIe=new d,Q0t=new d,k0t=new d,U0t=new d,G0t=new d;og.prototype.update=function(e,t,n,i,o){i=i??t.clone(Q0t),o=o??n.clone(k0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=og,a=s.y-r.y,c=.5*a,u=D.EPSILON10,f=D.EPSILON3,h=D.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=D.negativePiToPi(t.y),n.y=D.negativePiToPi(n.y),i.y=D.negativePiToPi(i.y),o.y=D.negativePiToPi(o.y);let A=d.maximumByComponent(t,i,U0t),g=d.minimumByComponent(n,o,G0t),m=R.getScale(e,YIe);if(g.x===0||A.x>g.x||A.z>g.z||D.equalsEpsilon(m.x,0,void 0,u)||D.equalsEpsilon(m.y,0,void 0,u)||D.equalsEpsilon(m.z,0,void 0,u))return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=FJ(A,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let _=t.x===r.x&&n.x===s.x,y=n.y<t.y,C=n.y-t.y+y*a,E=C>c+h&&C<a-h,I=C<c-h,b=C>=c-h&&C<=c+h,S=E||I||b,B=D.equalsEpsilon(t.y,r.y,void 0,f),v=D.equalsEpsilon(n.y,s.y,void 0,f),P=t.z===r.z&&n.z===s.z,N=A.x===r.x,L=g.y<A.y,p=g.y-A.y+L*a,x=p>=c-h&&p<a-h,T=p>h&&p<c-h,w=p<=h,M=x||T||w,{shaderUniforms:O,shaderDefines:U}=this;for(let z in U)U.hasOwnProperty(z)&&(U[z]=void 0);let Q=0;if(U.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=Q,Q+=1,N||(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,U.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=Q,Q+=1),O.cylinderRenderRadiusMinMax=k.fromElements(A.x,g.x,O.cylinderRenderRadiusMinMax),A.x===g.x&&(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!_){U.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let z=n.x-t.x,F=0,H=1;z!==0&&(F=1/z,H=-t.x/z),O.cylinderUvToShapeUvRadius=k.fromElements(F,H,O.cylinderUvToShapeUvRadius)}if(!P){U.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let z=n.z-t.z,F=0,H=1;z!==0&&(F=2/z,H=-(t.z+1)/z),O.cylinderUvToShapeUvHeight=k.fromElements(F,H,O.cylinderUvToShapeUvHeight)}if(O.cylinderRenderHeightMinMax=k.fromElements(A.z,g.z,O.cylinderRenderHeightMinMax),y&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),M&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,U.CYLINDER_INTERSECTION_INDEX_ANGLE=Q,x?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,Q+=1):T?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,Q+=2):w&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,Q+=2),O.cylinderRenderAngleMinMax=k.fromElements(A.y,g.y,O.cylinderRenderAngleMinMax)),S){U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,B&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),v&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let z=(t.y-r.y)/a,F=(n.y-r.y)/a,H=1-C/a;if(O.cylinderShapeUvAngleMinMax=k.fromElements(z,F,O.cylinderShapeUvAngleMinMax),O.cylinderShapeUvAngleRangeZeroMid=(F+.5*H)%1,C<=h)O.cylinderUvToShapeUvAngle=k.fromElements(0,1,O.cylinderUvToShapeUvAngle);else{let W=a/C,Z=-(t.y-r.y)/C;O.cylinderUvToShapeUvAngle=k.fromElements(W,Z,O.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=Q,!0};var s4=new d,OJ=new d;og.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,t*a),D.lerp(r.y,s.y,n*a),D.lerp(r.z,s.z,i*a),s4),u=d.fromElements(D.lerp(r.x,s.x,(t+1)*a),D.lerp(r.y,s.y,(n+1)*a),D.lerp(r.z,s.z,(i+1)*a),OJ);return FJ(c,u,this.shapeTransform,o)};var WIe=new d;og.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,WIe),s=d.multiplyByScalar(r,o,WIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,s4),o,s4),c=d.add(a,s,OJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),s4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),OJ);return FJ(h,A,this.shapeTransform,i)};og.DefaultMinBounds=Object.freeze(new d(0,-D.PI,-1));og.DefaultMaxBounds=Object.freeze(new d(1,+D.PI,1));var z0t=5,V0t=new Array(z0t),H0t=new d,W0t=new J,j0t=new R,Y0t=new R,q0t=new R,LJ=new R,K0t=new d,X0t=new d,J0t=new d,qIe=new Array(8);for(let e=0;e<8;e++)qIe[e]=new d;function jIe(e,t,n){return Math.abs(se.dot(e,t))<n}function Z0t(e){let t=R.getColumn(e,0,K0t),n=R.getColumn(e,1,X0t),i=R.getColumn(e,2,J0t),o=D.EPSILON4;return jIe(t,n,o)&&jIe(n,i,o)}function $0t(e,t){let n=qIe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)R.multiplyByPoint(e,n[i],n[i]);return Qn.fromPoints(n,t)}function FJ(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+D.TWO_PI:t.y,c=e.z,u=t.z,f=a-s,h=s+f*.5,A=V0t,g=0;A[g++]=s,A[g++]=a,A[g++]=h,f>D.PI&&(A[g++]=h-D.PI_OVER_TWO,A[g++]=h+D.PI_OVER_TWO);let m=Number.POSITIVE_INFINITY,_=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(let O=0;O<g;++O){let U=A[O]-h,Q=Math.cos(U),z=Math.sin(U),F=Q*o,H=z*o,W=Q*r,Z=z*r;m=Math.min(m,F,W),_=Math.min(_,H,Z),y=Math.max(y,F,W),C=Math.max(C,H,Z)}let E=y-m,I=C-_,b=u-c,S=(m+y)*.5,B=(_+C)*.5,v=(c+u)*.5,P=d.fromElements(S,B,v,H0t),N=J.fromRotationZ(h,W0t),L=d.fromElements(E,I,b,YIe),p=R.fromScale(L,q0t),x=R.fromRotation(N,Y0t),T=R.fromTranslation(P,j0t),w=R.multiplyTransformation(x,R.multiplyTransformation(T,p,LJ),LJ),M=R.multiplyTransformation(n,w,LJ);return Z0t(M)?Qn.fromTransformation(M,i):$0t(M,i)}var iS=og;function rg(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._rectangle=new ae,this._minimumHeight=rg.DefaultMinBounds.z,this._maximumHeight=rg.DefaultMaxBounds.z,this._ellipsoid=new te,this._translation=new d,this._rotation=new J,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new k,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new k,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new k,ellipsoidUvToShapeUvLatitude:new k,ellipsoidRenderLatitudeSinMinMax:new k,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new k},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var eIt=new d,tIt=new d,nIt=new d,iIt=new d,oIt=new d,rIt=new d,sIt=new d,aIt=new d,cIt=new J,KIe=new d,XIe=new d,lIt=new ae;rg.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=rg;i=i??r,o=o??s;let a=D.EPSILON10,c=D.EPSILON3,u=D.EPSILON10,f=D.EPSILON10,h=D.EPSILON3,A=R.getScale(e,aIt),g=d.clone(r,eIt);g.z=-d.minimumComponent(A);let m=d.clamp(t,g,s,tIt),_=d.clamp(n,g,s,nIt),y=d.clamp(i,g,s,iIt),C=d.clamp(o,g,s,oIt),E=d.maximumByComponent(m,y,rIt),I=d.minimumByComponent(_,C,sIt),b=d.add(A,d.fromElements(_.z,_.z,_.z,KIe),KIe),S=d.maximumComponent(b),B=d.add(A,d.fromElements(I.z,I.z,I.z,XIe),XIe);if(E.y>I.y||E.y===s.y||I.y===r.y||E.z>I.z||D.equalsEpsilon(B,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,_.x,_.y),this._translation=R.getTranslation(e,this._translation),this._rotation=R.getRotation(e,this._rotation),this._ellipsoid=te.fromCartesian3(A,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=_.z;let v=ae.fromRadians(E.x,E.y,I.x,I.y,lIt);this.orientedBoundingBox=QJ(v,E.z,I.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=R.fromRotationTranslation(J.setScale(this._rotation,b,cIt),this._translation,this.shapeTransform),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let P=s.x-r.x,N=.5*P,L=I.x<E.x,p=I.x-E.x+L*P,x=p<=u,T=p>=N-u&&p<P-u,w=p>u&&p<N-u,M=x||T||w,O=_.x<m.x,U=_.x-m.x+O*P,Q=U>N+u&&U<P-u,z=U>=N-u&&U<=N+u,F=U<N-u,H=Q||z||F,W=I.y<-h,Z=I.y>=-h&&I.y<=+h,Y=I.y>+h&&I.y<s.y-f,$=W||Z||Y,X=E.y>r.y+f&&E.y<-h,he=E.y>=-h&&E.y<=+h,ge=E.y>+h,fe=X||he||ge,ye=$||fe,Ie=_.y-m.y,ve=_.y<-h,Te=_.y>=-h&&_.y<=+h,ke=_.y>+h&&_.y<s.y-f,Ge=ve||Te||ke,qe=m.y>r.y+f&&m.y<-h,tt=m.y>=-h&&m.y<=+h,$t=m.y>+h,tn=Ge||(qe||tt||$t),{shaderUniforms:Wt,shaderDefines:vt}=this;for(let Ct in vt)vt.hasOwnProperty(Ct)&&(vt[Ct]=void 0);Wt.ellipsoidRadiiUv=d.divideByScalar(b,S,Wt.ellipsoidRadiiUv);let{x:bi,z:di}=Wt.ellipsoidRadiiUv,Ot=di/bi;Wt.eccentricitySquared=1-Ot*Ot,Wt.evoluteScale=k.fromElements((bi*bi-di*di)/bi,(di*di-bi*bi)/di,Wt.evoluteScale),Wt.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(Wt.ellipsoidRadiiUv,Wt.ellipsoidRadiiUv,Wt.ellipsoidInverseRadiiSquaredUv),Wt.ellipsoidInverseRadiiSquaredUv);let Tt=0;vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Tt,Tt+=1,vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Tt,Tt+=1,Wt.clipMinMaxHeight=k.fromElements((E.z-_.z)/S,(I.z-_.z)/S,Wt.clipMinMaxHeight);let ii=(_.z-m.z)/S;if(Wt.ellipsoidInverseHeightDifferenceUv=1/ii,m.z===_.z&&(Wt.ellipsoidInverseHeightDifferenceUv=0),M&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Tt,T?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Tt+=1):w?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Tt+=2):x&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Tt+=2),Wt.ellipsoidRenderLongitudeMinMax=k.fromElements(E.x,I.x,Wt.ellipsoidRenderLongitudeMinMax)),H)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,_.x<m.x&&(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),U<=u)Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLongitude);else{let Ro=P/U,Qo=-(m.x-r.x)/U;Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLongitude)}if(M){let Ct=D.equalsEpsilon(E.x,r.x,void 0,c),Ro=D.equalsEpsilon(I.x,s.x,void 0,c);Ct&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Ro&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Qo=(m.x-r.x)/P,ya=(_.x-r.x)/P,mr=(I.x-r.x)/P,Tr=1-p/P,Oe=(mr+.5*Tr)%1;Wt.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Qo,ya,Oe,Wt.ellipsoidShapeUvLongitudeMinMaxMid)}if(ye&&(fe&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Tt,X?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Tt+=1):he?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Tt+=1):ge&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Tt+=2)),$&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Tt,W?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Tt+=2):Z?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Tt+=1):Y&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Tt+=1)),Wt.ellipsoidRenderLatitudeSinMinMax=k.fromElements(Math.sin(E.y),Math.sin(I.y),Wt.ellipsoidRenderLatitudeSinMinMax)),tn)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,Ie<f)Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLatitude);else{let Ro=(s.y-r.y)/Ie,Qo=(r.y-m.y)/Ie;Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Tt,!0};var $Ie=new ae;rg.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,A=ae.subsection(this._rectangle,s,c,a,u,$Ie),g=D.lerp(this._minimumHeight,this._maximumHeight,f),m=D.lerp(this._minimumHeight,this._maximumHeight,h);return QJ(A,g,m,this._ellipsoid,this._translation,this._rotation,o)};var JIe=new d,ZIe=new d,uIt=new d;rg.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,JIe),s=d.multiplyByScalar(r,o,JIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,ZIe),o,ZIe),c=d.add(a,s,uIt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,$Ie),f=D.lerp(this._minimumHeight,this._maximumHeight,a.z),h=D.lerp(this._minimumHeight,this._maximumHeight,c.z);return QJ(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function QJ(e,t,n,i,o,r,s){return s=Qn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=J.multiply(s.halfAxes,r,s.halfAxes),s}rg.DefaultMinBounds=Object.freeze(new d(-D.PI,-D.PI_OVER_TWO,-te.WGS84.minimumRadius));rg.DefaultMaxBounds=Object.freeze(new d(D.PI,D.PI_OVER_TWO,10*te.WGS84.maximumRadius));var oS=rg;var sf={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};sf.getMinBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMinBounds;case sf.ELLIPSOID:return oS.DefaultMinBounds;case sf.CYLINDER:return iS.DefaultMinBounds}};sf.getMaxBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMaxBounds;case sf.ELLIPSOID:return oS.DefaultMaxBounds;case sf.CYLINDER:return iS.DefaultMaxBounds}};sf.getShapeConstructor=function(e){switch(e){case sf.BOX:return nS;case sf.ELLIPSOID:return oS;case sf.CYLINDER:return iS}};var lc=Object.freeze(sf);function Uh(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Uh.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Uh.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Uh({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Uh.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Uh.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)exe(this,t)};Uh.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,exe(this,i),t};Uh.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],txe(this,0)),this._array[e-1]=void 0,t};Uh.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=kJ(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&txe(this,n)}return this._array[e-1]=void 0,t};Uh.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Uh.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[kJ(this,1,2)?1:2]};function a4(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function MP(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function kJ(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function exe(e,t){if(t===0)return;let n=Math.floor(D.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=MP(e,t,i);for(o!==n&&(a4(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(MP(e,t,r)!==o)break;a4(e,t,r),t=r}}function txe(e,t){let n=e._length,i=Math.floor(D.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){MP(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;MP(e,f,r)===i&&(r=f)}}if(MP(e,r,t)===i&&(a4(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);kJ(e,r,a)===i&&a4(e,r,a)}t=r}}var rS=Uh;var UJ=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function NP(e,t){this.spatialNode=e,this.keyframe=t,this.state=UJ.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}NP.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=UJ.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};NP.priorityComparator=function(e,t){return e.priority-t.priority};NP.searchComparator=function(e,t){return e.keyframe-t.keyframe};NP.LoadState=UJ;var Po=NP;function Uy(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32),i===zt.FLOAT32&&!e.floatingPointTexture)throw new ce("Floating point texture not supported");let s=fIt(i),a=dIt(n,e.webgl2),c=zt.getSizeInBytes(i),u=hIt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),A=f*t.x,g=h*t.y,m=Math.floor(u/A),_=Math.floor(u/g);if(m===0||_===0)throw new ce("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*_,this.regionCountPerMegatexture=new k(m,_),this.voxelCountPerRegion=new k(A,g),this.sliceCountPerRegion=new k(f,h),this.voxelSizeUv=new k(1/u,1/u),this.sliceSizeUv=new k(t.x/u,t.y/u),this.regionSizeUv=new k(A/u,g/u),this.texture=new Nt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});let y=zt.toComponentDatatype(i);this.tileVoxelDataTemp=q.createTypedArray(y,A*g*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new mIt(C);for(let C=0;C<this.maximumTileCount;C++){let E=this.nodes[C];E.previousNode=C>0?this.nodes[C-1]:void 0,E.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function fIt(e){if(e===zt.FLOAT32||e===zt.FLOAT64)return He.FLOAT;if(e===zt.UINT8)return He.UNSIGNED_BYTE}function dIt(e,t){if(e===1)return t?et.RED:et.LUMINANCE;if(e===2)return t?et.RG:et.LUMINANCE_ALPHA;if(e===3)return et.RGB;if(e===4)return et.RGBA}function hIt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(qt.maximumTextureSize,D.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function mIt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}Uy.prototype.add=function(e){if(this.isFull())throw new me("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};Uy.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new me("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};Uy.prototype.isFull=function(){return this.emptyList===void 0};Uy.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32);let o=zt.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=D.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let A=Math.floor(f/c),g=Math.floor(f/u);if(A*g>=e)break;f*=2}return f*f*n*o};Uy.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,_=Math.floor(g/r.x)*o.y;for(let y=0;y<o.y;y++){let C=AIt(o,y,g),E=(_+y)*s.x+m;for(let I=0;I<o.x;I++){let b=C+I,S=E+I;for(let B=0;B<a;B++)i[S*a+B]=n[b*a+B]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,A={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(A)};function AIt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}Uy.prototype.isDestroyed=function(){return!1};Uy.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var LP=Uy;function xd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Qn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var pIt=new d;xd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=J.getScale(this.orientedBoundingBox.halfAxes,pIt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};xd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,A=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=A.map(([g,m,_,y])=>new xd(g,m,_,y,this,e,this.dimensions))};xd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};xd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,D.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var nxe={keyframe:0};function OP(e,t){return nxe.keyframe=e,qo(t,nxe,Po.searchComparator)}xd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let A=gIt(i,h),g=h[A],m=o===i||i<g.keyframe?A:Math.min(A+1,h.length-1),_=h[m],y=i-g.keyframe,C=ixe(n-t.level,y);C<a&&(a=C,r=g);let E=_.keyframe-o,I=ixe(n-t.level,E);if(I<c&&(c=I,s=_),y===0&&E===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:D.clamp((e-u)/(f-u),0,1)};function gIt(e,t){let n=OP(e,t);return n<0?D.clamp(~n-1,0,t.length-1):n}function ixe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}xd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};xd.prototype.createKeyframeNode=function(e){let t=OP(e,this.keyframeNodes);if(t<0){t=~t;let n=new Po(this,e);this.keyframeNodes.splice(t,0,n)}};xd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=OP(n,this.keyframeNodes);if(i<0)throw new me("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=OP(n,this.renderableKeyframeNodes);if(o<0)throw new me("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};xd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new me("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=OP(e.keyframe,i);if(o>=0)throw new me("Keyframe already renderable");o=~o,i.splice(o,0,e)};xd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var c4=xd;function Gy(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===kh.Y_UP){let I=h.y;h.y=h.z,h.z=I}!l(i)&&l(o.maximumTileCount)&&(i=vIt(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let I=0;I<c.length;I++){let b=c[I],S=gt.getComponentCount(b),B=u[I];this.megatextures[I]=new LP(t,h,S,B,i),this.textureMemoryByteLength+=this.megatextures[I].textureMemoryByteLength}let A=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new c4(0,0,0,0,void 0,g,r),this._priorityQueue=new rS({maximumLength:A,comparator:Po.priorityComparator}),this._highPriorityKeyframeNodes=new Array(A),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(A),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,GJ(m,1,n-2,0);let _=9,y=2048,C=Math.floor(y/_),E=Math.ceil(A/C);this.internalNodeTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:y,height:E,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=C,this.internalNodeTexelSizeUv=new k(1/y,1/E),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new k}Gy.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function GJ(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,GJ(e,t,o-1,i+1),GJ(e,o+1,n,i+1)}Gy.simultaneousRequestCountMaximum=50;Gy.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let A=h>=2;if(A&&!l(this.leafNodeTexture)){let I=Math.floor(512),b=Math.ceil(s/I);this.leafNodeTexture=new Nt({context:r,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:1024,height:b,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=k.fromElements(1/1024,1/b,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=I}else!A&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=D.clamp(t,0,a-1),n&&oxe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Oi();CIt(this,e),EIt(this,e);let m=Oi();SIt(this,h,c);let _=Oi(),y=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||y){let C=m-g,E=_-m,I=_-g;TIt(this,e,C,E,I)}};Gy.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};Gy.prototype.isDestroyed=function(){return!1};Gy.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function oxe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];oxe(e,i)}}function _It(e,t){if(e._simultaneousRequestCount>=Gy.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?Po.LoadState.PROCESSING:Po.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=Po.LoadState.RECEIVING,u.then(s).catch(a))}function yIt(e){return e/(1+e)}function CIt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),rxe(e.rootNode,zs.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function EIt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(IIt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===Po.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===Po.LoadState.UNLOADED&&_It(e,f),f.state===Po.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!xIt(h.metadata,e)){f.content=void 0,f.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let A=0;if(n.isFull()){A=i-1-a,a++;let g=o[A];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else A=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=Po.LoadState.LOADED,o[A]=f,e._primitive.tileLoad.raiseEvent()}}}function IIt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function xIt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],A=f*s;if(h.length!==A)return!1}return!0}function rxe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===zs.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let A=n._primitive,g=A._shape,m=A.screenSpaceError,_=n._priorityQueue,y=n._keyframeCount,C=D.clamp(Math.floor(n._keyframeLocation),0,y-2),E=C+1;if(y===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==y)for(let v=0;v<y;v++)e.createKeyframeNode(v);let{screenSpaceError:I,keyframeNodes:b}=e,S=yIt(I),B=!1;for(let v=0;v<b.length;v++){let P=b[v];P.priority=10*S+bIt(C,P.keyframe,E,n),P.state!==Po.LoadState.UNAVAILABLE&&P.state!==Po.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&_.insert(P),P.state===Po.LoadState.LOADED&&(B=!0)}if(I<m||!B){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let v=0;v<8;v++){let P=e.children[v];rxe(P,t,n,i)}}function bIt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return D.lerp(a,s,.15+.85*s)}function TIt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Po.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let B=0;B<a;B++){let v=new Array(r).fill(0);c[B]=v,u[B]=0}function h(B){let v=B.keyframeNodes;for(let P=0;P<v.length;P++){let N=v[P],L=N.keyframe,p=N.state;c[p][L]+=1,u[p]+=1,f++}if(l(B.children))for(let P=0;P<8;P++){let N=B.children[P];h(N)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[Po.LoadState.LOADED],e._primitive.statistics.visited=f;let A=u[Po.LoadState.RECEIVING],g=u[Po.LoadState.PROCESSING],m=A!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(A,g),!0}),e._primitive.statistics.numberOfPendingRequests=A,e._primitive.statistics.numberOfTilesProcessing=g,m&&(A===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let y=`KEYFRAMES: ${c[Po.LoadState.LOADED]}`,C=`UNLOADED: ${u[Po.LoadState.UNLOADED]} | RECEIVING: ${u[Po.LoadState.RECEIVING]} | PROCESSING: ${u[Po.LoadState.PROCESSING]} | LOADED: ${u[Po.LoadState.LOADED]} | FAILED: ${u[Po.LoadState.FAILED]} | UNAVAILABLE: ${u[Po.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,E=Math.round(n*100)/100,I=Math.round(i*100)/100,b=Math.round(o*100)/100,S=`LOAD: ${E} | OCT: ${I} | ALL: ${b}`;console.log(`${y} || ${C} || ${S}`)}var l4={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function SIt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,_,y,C){let E=!1;if(l(g.children))for(let I=0;I<8;I++){let b=g.children[I];b.computeSurroundingRenderableKeyframeNodes(o),b.isRenderable(r)&&(E=!0)}if(E){u[C]=l4.INTERNAL<<16|m,u[_]=y,a++,y=m,C=y*9+1;for(let I=0;I<8;I++){let b=g.children[I];m=a,_=m*9+0,h(b,m,_,y,C+I)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let I=c*5,b=g.renderableKeyframeNodePrevious,S=g.level-b.spatialNode.level,B=b.spatialNode.parent,v=l(B)?B.renderableKeyframeNodePrevious:b,P=wIt(g,i,n),N=S,L=1,p=b.megatextureIndex,x=v.megatextureIndex;f[I+0]=P,f[I+1]=N,f[I+2]=L,f[I+3]=p,f[I+4]=x,u[C]=l4.LEAF<<16|c}else{let I=g.renderableKeyframeNodePrevious,S=g.level-I.spatialNode.level===0?l4.LEAF:l4.PACKED_LEAF_FROM_PARENT;u[C]=S<<16|I.megatextureIndex}c++}}let A=e.rootNode;A.computeSurroundingRenderableKeyframeNodes(o),A.isRenderable(r)&&h(A,0,0,0,0),BIt(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&DIt(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function wIt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return D.clamp(s,0,1)}function BIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let A=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=A>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function DIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let A=0;A<s;A++){let g=e[A*r+0],m=e[A*r+1],_=e[A*r+2],y=e[A*r+3],C=e[A*r+4],E=D.clamp(Math.floor(65536*g),0,65535);u[A*8+0]=E>>>0&255,u[A*8+1]=E>>>8&255,u[A*8+2]=m&255,u[A*8+3]=_&255,u[A*8+4]=y>>>0&255,u[A*8+5]=y>>>8&255,u[A*8+6]=C>>>0&255,u[A*8+7]=C>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function vIt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=gt.getComponentCount(a);o+=LP.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var u4=Gy;function yA(e){e=e??V.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??yA.DefaultProvider,this._traversal=void 0,this._statistics=new Um,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._exaggeratedModelMatrix=R.clone(this._modelMatrix),this._compoundModelMatrix=new R,this._compoundModelMatrixOld=new R,this._customShader=e.customShader??yA.DefaultCustomShader,this._customShaderCompilationEvent=new _e,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new R,this._transformDirectionWorldToUv=new J,this._transformPositionUvToWorld=new R,this._transformDirectionWorldToLocal=new J,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Fm,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new k,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new k,megatextureTextures:[],megatextureSliceDimensions:new k,megatextureTileDimensions:new k,megatextureVoxelSizeUv:new k,megatextureSliceSizeUv:new k,megatextureTileSizeUv:new k,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new R,transformPositionUvToView:new R,transformDirectionViewToLocal:new J,cameraPositionUv:new d,cameraDirectionUv:new d,ndcSpaceAxisAlignedBoundingBox:new se,clippingPlanesTexture:void 0,clippingPlanesMatrix:new R,stepSize:0,pickColor:new G},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new _e,this.tileVisible=new _e,this.tileFailed=new _e,this.tileUnload=new _e,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e;let i=this._provider;PIt(this,i)}function PIt(e,t){let{shape:n,minBounds:i=lc.getMinBounds(n),maxBounds:o=lc.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=R.clone(e._modelMatrix,e._exaggeratedModelMatrix),axe(e,t);let r=lc.getShapeConstructor(n);e._shape=new r,e._shapeVisible=cxe(e,e._shape,t)}Object.defineProperties(yA.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=D.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=yA.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var RIt=new se,MIt=new se,NIt=new R,LIt=new R,OIt=new R,FIt=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R),QIt=R.fromRotationTranslation(J.fromUniformScale(2,new J),new d(-1,-1,-1),new R);yA.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){HIt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}zIt(this,e);let i=axe(this,t),o=this._shape;if(i&&(this._shapeVisible=cxe(this,o,t),jIt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=YIt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&txt(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),qIt(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=k.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(t4(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,A=o.orientedBoundingBox,g=JIt(A,h,MIt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=se.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let _=n.uniformState.inverseView;f.transformPositionViewToUv=R.multiplyTransformation(this._transformPositionWorldToUv,_,f.transformPositionViewToUv);let y=n.uniformState.view;f.transformPositionUvToView=R.multiplyTransformation(y,this._transformPositionUvToWorld,f.transformPositionUvToView);let C=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=J.multiply(this._transformDirectionWorldToLocal,C,f.transformDirectionViewToLocal),f.cameraPositionUv=R.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,f.cameraPositionUv),f.cameraDirectionUv=J.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,f.cameraDirectionUv),f.cameraDirectionUv=d.normalize(f.cameraDirectionUv,f.cameraDirectionUv),f.stepSize=this._stepSizeMultiplier;let E=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;E.boundingVolume=o.boundingSphere,e.commandList.push(E)};var kIt=new d,zJ=new d,UIt=new Ae,GIt=new d;function zIt(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===lc.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=d.fromElements(1,1,t.verticalExaggeration,kIt);e._exaggeratedModelMatrix=R.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=R.multiplyByTranslation(e._exaggeratedModelMatrix,VIt(e,t),e._exaggeratedModelMatrix)}}function VIt(e,t){let{shapeTransform:n=R.IDENTITY,globalTransform:i=R.IDENTITY}=e._provider,o=R.getTranslation(n,zJ),r=R.multiplyByPoint(e._modelMatrix,o,zJ),s=R.multiplyByPoint(i,r,zJ),c=te.WGS84.cartesianToCartographic(s,UIt),u=0;l(c)&&(u=c.height);let f=Yr.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,GIt)}function HIt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=G.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ze(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(t.paddingBefore??d.ZERO,e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(t.paddingAfter??d.ZERO,e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===kh.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new u4(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,WIt(e._traversal,i)}function axe(e,t){let n=t.shapeTransform??R.IDENTITY,i=t.globalTransform??R.IDENTITY;return R.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),R.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),C0(e,"_compoundModelMatrix","_compoundModelMatrixOld")+C0(e,"_minBounds","_minBoundsOld")+C0(e,"_maxBounds","_maxBoundsOld")+C0(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+C0(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+C0(e,"_minClippingBounds","_minClippingBoundsOld")+C0(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function C0(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function cxe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=R.inverse(o,NIt);return e._transformPositionWorldToUv=R.multiplyTransformation(FIt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=R.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=R.multiplyTransformation(o,QIt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=R.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function WIt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=k.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=k.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=k.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=k.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=k.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=k.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function jIt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ze(n,!0)),i}function YIt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=K.secondsDifference(i.stop,i.start),a=K.secondsDifference(n,i.start)/r;return o+a}function qIt(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=R.transpose(R.multiplyTransformation(R.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}yA.prototype.isDestroyed=function(){return!1};yA.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var sxe=new Array(new se(-1,-1,-1,1),new se(1,-1,-1,1),new se(-1,1,-1,1),new se(1,1,-1,1),new se(-1,-1,1,1),new se(1,-1,1,1),new se(-1,1,1,1),new se(1,1,1,1)),KIt=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),XIt=new Array(new se,new se,new se,new se,new se,new se,new se,new se);function JIt(e,t,n){let i=R.fromRotationTranslation(e.halfAxes,e.center,LIt),o=R.multiply(t,i,OIt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=XIt,h=sxe.length;for(u=0;u<h;u++)R.multiplyByVector(o,sxe[u],f[u]);for(u=0;u<h;u++){let A=f[u];if(A.z>=-A.w){let g=A.x/A.w,m=A.y/A.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=KIt[u*3+g],_=f[m];if(_.z>=-_.w){let y=A.z+A.w,C=_.z+_.w,E=y/(y-C),I=se.lerp(A,_,E,RIt),b=I.x/I.w,S=I.y/I.w;r=Math.min(r,b),s=Math.max(s,b),a=Math.min(a,S),c=Math.max(c,S)}}}return r=D.clamp(r,-1,1),a=D.clamp(a,-1,1),s=D.clamp(s,-1,1),c=D.clamp(c,-1,1),n=se.fromElements(r,a,s,c,n),n}var VJ=3e7,ZIt=new d(VJ,0,0),$It=new d(0,VJ,0),ext=new d(0,0,VJ);function txt(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:ao.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[G.RED,G.LIME,G.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,G.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,ZIt,G.RED,a),o(d.ZERO,$It,G.LIME,a),o(d.ZERO,ext,G.BLUE,a),i.update(t)}yA.DefaultCustomShader=new eS({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
|
||
{
|
||
material.diffuse = vec3(1.0);
|
||
material.alpha = 1.0;
|
||
}`});function lxe(){this.ready=!0,this.shape=lc.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[gt.SCALAR],this.componentTypes=[zt.FLOAT32],this.maximumTileCount=1}lxe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new tS({metadata:[new Float32Array(1)]});return Promise.resolve(n)};yA.DefaultProvider=new lxe;var E0=yA;function nxt(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var f4=nxt;function ixt(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var d4=ixt;function oxt(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var h4=oxt;var A4=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function gi(e){e=e??V.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof iz;if(o)this._context=e.contextOptions.createSceneContext(t);else{let u=ze(e.contextOptions);this._context=new vT(t,u)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Xn(),this._jobScheduler=new MV,this._frameState=new vV(r,new EV(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new JG(r),this._ellipsoid=e.ellipsoid??te.default,this._globe=void 0,this._globeTranslucencyState=new PV,this._primitives=new ou({countReferences:o}),this._groundPrimitives=new ou({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=gi.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new XT,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new SV(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new Ei({color:new G,stencil:0,owner:this}),this._depthClearCommand=new Ei({depth:1,owner:this}),this._stencilClearCommand=new Ei({stencil:0}),this._classificationStencilClearCommand=new Ei({stencil:0,renderState:Ue.fromCache({stencilMask:Kt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new E8(this),this._preUpdate=new _e,this._postUpdate=new _e,this._renderError=new _e,this._preRender=new _e,this._postRender=new _e,this._minimumDisableDepthTestDistance=0,this._debugInspector=new O8,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new _e,this.morphComplete=new _e,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=G.clone(G.BLACK),this._mode=ie.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Hi(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new lx,this.fog=new DV,this.fog.enabled=te.WGS84.equals(this._ellipsoid),te.WGS84.equals(this._ellipsoid)||(Eo.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new Eo(this),this.shadowMap=new Oy({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=G.clone(G.WHITE),this._actualInvertClassificationColor=G.clone(this._invertClassificationColor),this._invertClassification=new _P,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new _8,this._brdfLutGenerator=new uV,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new R8(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??$u.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Yc.requestCompletedEvent.addEventListener(A4(this)),this._removeTaskProcessorListenerCallback=mi.taskCompletedEvent.addEventListener(A4(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Xe(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new Eo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new Eo(this),this.preloadFlightCullingVolume=void 0,this._picking=new ZV(this),this._defaultView=new jT(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new wy,Axe(this,0,K.now()),this.updateFrameState(),this.initializeFrame()}gi.defaultLogDepthBuffer=!0;function rxt(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(A4(e))),n.push(t.terrainProviderChanged.addEventListener(A4(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(gi.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return qt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return qt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return hm.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,rxt(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ie.SCENE2D?this.morphTo2D(0):e===ie.SCENE3D?this.morphTo3D(0):e===ie.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Eo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new BV(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,qt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});gi.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function sxt(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function uxe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=Xp.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=Xp.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=Xp.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=Xp.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Oy.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Be.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}gi.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),A=o&&!u,g=c&&!f,m=(!o||!c)&&!h,_=n.pickingMetadata&&sxt(e,n);if(e.dirty=e.dirty||A||g||m||_,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:y,shadowMaps:C}=i;y&&e.castShadows&&(t.shadows=Oy.createCastDerivedCommand(C,e,s,r,t.shadows)),(u||A)&&(t.logDepth=Xp.createLogDepthCommand(e,r,t.logDepth),uxe(this,t.logDepth.command,s)),(h||m)&&uxe(this,e,s)};var axt=new Lh({pass:Zo.RENDER}),HJ=new Lh({pass:Zo.PRELOAD}),WJ=new Lh({pass:Zo.PRELOAD_FLIGHT}),cxt=new Lh({pass:Zo.REQUEST_RENDER_MODE_DEFER_CHECK}),fxe=new le,jJ;function lxt(e){if(!(e._mode!==ie.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return fxe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,jJ=lV.fromBoundingSphere(fxe,e.camera.positionWC,jJ),jJ}gi.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function Axe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=K.clone(n,i.time)}gi.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=lxt(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof An||this.camera.frustum instanceof ls),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=G.clone(this.invertClassificationColor,this._actualInvertClassificationColor),_P.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};gi.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===nn.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var m4=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);m4=R.inverseTransformation(m4,m4);function uxt(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ie.SCENE3D){a=R.multiplyByPoint(m4,a,a);let m=o.mapProjection,_=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(_)}let c,u,{radius:f}=s;l(f)?(c=ka.createGeometry(new ka({radii:new d(f,f,f),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromTranslation(a)):(c=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromRotationTranslation(s.halfAxes,a,new R)),t._debugVolume=new kn({geometryInstances:new Rt({geometry:jn.toWireframe(c),modelMatrix:u,attributes:{color:new en(1,0,0,1)}}),appearance:new gn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,A=o.commandList=[];t._debugVolume.update(o),e=A[0],o.useLogDepth&&(e=Xp.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Gh(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof Ei){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&uxt(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function dxe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function pxe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var fxt=new d;function hxe(e,t){let n=d.subtract(e,t,fxt),i=Math.max(0,d.magnitude(n));return i*i}function dxt(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return hxe(o.center,n)-hxe(i.center,n)}function hxt(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+D.EPSILON12}function mxt(e,t,n,i,o){qp(i,pxe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function Axt(e,t,n,i,o){qp(i,hxt,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function pxt(e,t,n){e.context.uniformState.updatePass(Be.VOXELS);let i=n.commands[Be.VOXELS];i.length=n.indices[Be.VOXELS],qp(i,pxe,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}function gxt(e,t,n){e.context.uniformState.updatePass(Be.GAUSSIAN_SPLATS);let i=n.commands[Be.GAUSSIAN_SPLATS];i.length=n.indices[Be.GAUSSIAN_SPLATS],qp(i,dxt,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}var _xt=new Vi,yxt=new fu,Cxt=new An,Ext=new ls;function Ixt(e){let{frustum:t}=e;return l(t.fov)?t.clone(_xt):l(t.infiniteProjectionMatrix)?t.clone(yxt):l(t.width)?t.clone(Cxt):t.clone(Ext)}function xxt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?mxt:Axt}function bxt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=xxt(e);o.uniformState.updatePass(Be.TRANSLUCENT);let f=n.commands[Be.TRANSLUCENT];f.length=n.indices[Be.TRANSLUCENT],u(e,Gh,t,f,c)}function Txt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Be.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Be.TRANSLUCENT];i.executeTranslucentCommands(e,Gh,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Gh,t,n)}function qJ(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=Ixt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||Sxt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:A,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:_,globeTranslucencyFramebuffer:y,sceneFramebuffer:C,frustumCommandsList:E}=e._view,I=E.length,b=e._globeTranslucencyState,S=e._depthClearCommand,B=e._stencilClearCommand,v=e._classificationStencilClearCommand,P=e._depthPlane,N=n.position.z;function L(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)Gh(w[O],e,t);return M}function p(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)dxe(w[O],e,t)}for(let x=0;x<I;++x){let T=I-x-1,w=E[T];e.mode===ie.SCENE2D?(n.position.z=N-w.near+1,s.far=Math.max(1,w.far-w.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s)),S.execute(i,t),i.stencilBuffer&&B.execute(i,t),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,Gh,y,e,t)):L(w,Be.GLOBE),A&&_.executeCopyDepth(i,t),f||(b.translucent?(r.updatePass(Be.TERRAIN_CLASSIFICATION),b.executeGlobeClassificationCommands(w,Gh,y,e,t)):L(w,Be.TERRAIN_CLASSIFICATION)),u&&(S.execute(i,t),h&&P.execute(i,t));let M;if(!g||c||f)M=L(w,Be.CESIUM_3D_TILE),M>0&&(A&&(_.prepareColorTextures(i,u),_.executeUpdateDepth(i,t,_.depthStencilTexture)),f||(M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let U=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,M=L(w,Be.CESIUM_3D_TILE),A&&(e._invertClassification.prepareTextures(i),_.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=U,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),M>0&&i.stencilBuffer&&v.execute(i,t),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)}if(M>0&&i.stencilBuffer&&B.execute(i,t),pxt(e,t,w),L(w,Be.OPAQUE),gxt(e,t,w),T!==0&&e.mode!==ie.SCENE2D&&(s.near=w.near,r.updateFrustum(s)),bxt(e,t,w),Txt(e,t,w),i.depthTexture&&e.useDepthPicking&&(A||f)){let U=e._picking.getPickDepth(e,T);U.update(i,_.depthStencilTexture),U.executeCopyDepth(i,t)}if(c||!m)continue;let O=t.framebuffer;t.framebuffer=C.getIdFramebuffer(),s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,dxe,y,e,t)):p(w,Be.GLOBE),u&&(S.framebuffer=t.framebuffer,S.execute(i,t),S.framebuffer=void 0),u&&h&&P.execute(i,t),p(w,Be.CESIUM_3D_TILE),p(w,Be.OPAQUE),p(w,Be.TRANSLUCENT),t.framebuffer=O}}function Sxt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Be.ENVIRONMENT),l(i.skyBoxCommand)&&Gh(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Gh(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function gxe(e){e.context.uniformState.updatePass(Be.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function wxt(e,t){e.context.uniformState.updatePass(Be.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function Bxt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Be.GLOBE,Be.CESIUM_3D_TILE,Be.OPAQUE,Be.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let A=r[h].cullingVolume;if(e.isVisible(A,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function _xe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;Bxt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:A,commandList:g}=h;s.updateCamera(A),c.updatePass(r,f);for(let m=0;m<g.length;++m){let _=g[m];s.updatePass(_.pass);let y=_.derivedCommands.shadows.castCommands[a];Gh(y,e,h.passState)}}}}var Dxt=new d;gi.prototype.updateAndExecuteCommands=function(e,t){zxt(this,e,t),this._environmentState.useWebVR?vxt(this,e,t):this._frameState.mode!==ie.SCENE2D||this._mapMode2D===$u.ROTATE?zy(!0,this,e):kxt(this,e)};function vxt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;yxe(e),n.createPotentiallyVisibleSet(e),gxe(e),r||_xe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=Eo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*(e.focalLength??5),f=e.eyeSeparation??u/30,h=d.multiplyByScalar(a.right,f*.5,Dxt);i.frustum.aspectRatio=s.width/s.height;let A=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=A,qJ(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-A,qJ(e,t),Eo.clone(a,i)}var Pxt=new Ae(Math.PI,D.PI_OVER_TWO),Rxt=new d,Mxt=new d,Nxt=new R,Lxt=new R,Oxt=new d,Fxt=new d,Qxt=new Xe;function kxt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Xe.clone(r,Qxt);t.viewport=s;let a=Pxt,c=Rxt;e.mapProjection.project(a,c);let f=d.clone(i.position,Mxt),h=R.clone(i.transform,Lxt),A=i.frustum.clone();i._setTransform(R.IDENTITY);let g=R.computeViewportTransformation(s,0,1,Nxt),m=i.frustum.projectionMatrix,_=i.positionWC.y,y=d.fromElements(D.sign(_)*c.x-_,0,-i.positionWC.x,Oxt),C=kt.pointToGLWindowCoordinates(m,g,y,Fxt);C.x=Math.floor(C.x);let E=s.x,I=s.width;if(_===0||C.x<=E||C.x>=E+I)zy(!0,e,t);else if(Math.abs(E+I*.5-C.x)<1)s.width=C.x-s.x,i.position.x*=D.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t);else if(C.x>E+I*.5){s.width=C.x-E;let b=i.frustum.right;i.frustum.right=c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,s.width=E+I-C.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=b-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}else{s.x=C.x,s.width=E+I-C.x;let b=i.frustum.left;i.frustum.left=-c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=E,s.width=C.x-E,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=b-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=A.clone(),t.viewport=r}function zy(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),yxe(t),i.createPotentiallyVisibleSet(t),e&&(gxe(t),o||_xe(t)),qJ(t,n)}var mxe=new zs;gi.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ie.SCENE2D&&t.camera.frustum instanceof An||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(r_.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let C=r.dynamicLighting;s.setDynamicLighting(C),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let y=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(y)?y.drawCommand:void 0,n.sunComputeCommand=l(y)?y.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ie.SCENE2D);(n.useDepthPlane=u&&this.mode===ie.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ie.SCENE2D&&!o;let h=e.mode===ie.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,A=e.cullingVolume,g=mxe.planes;for(let y=0;y<5;++y)g[y]=A.planes[y];A=mxe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(A,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(A,n.moonCommand,h);let m=this.specularEnvironmentMaps,_=this._specularEnvironmentCubeMap;l(m)&&_?.url!==m?(_=_&&_.destroy(),this._specularEnvironmentCubeMap=new hm(m)):!l(m)&&l(_)&&(_.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Uxt(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new Kp({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function Gxt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ie.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function yxe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Uxt(e),Gxt(e),e._globe&&e._globe.render(t)}function zxt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new L8:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;G.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let A=s.oit,g=r.useOIT=!c&&l(A)&&A.isSupported();g&&(A.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),A.clear(i,t,n),r.useOIT=A.isSupported());let m=e.postProcessStages,_=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,_&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),_=r.usePostProcess=m.ready,r.usePostProcessSelected=_&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:_&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let C;if(o.invertClassificationColor.alpha===1&&h&&(C=s.globeDepth.framebuffer),l(C)||i.depthTexture){if(e._invertClassification.previousFramebuffer=C,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let E=e._invertClassification.unclassifiedCommand,I=E.derivedCommands;I.oit=A.createDerivedCommands(E,i,I.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}gi.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,A=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,_=g.getColorTexture(0),y=A.getColorTexture(0),C=(f??h).getDepthStencilTexture();m.execute(t,_,C,y),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function Vxt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function Hxt(e){if(e.mode===ie.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function Cxe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof ou){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=Cxe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}gi.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===Ze.CLAMP_TO_TERRAIN||t===Ze.RELATIVE_TO_TERRAIN,i=t===Ze.CLAMP_TO_3D_TILE||t===Ze.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=Cxe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var YJ=new Ae;gi.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{Ae.clone(e,YJ);let m;l(g)&&(m=g.height),l(m)||(m=this.getHeight(e,n)),l(m)&&(YJ.height=m,t(YJ))},r=n===Ze.CLAMP_TO_TERRAIN||n===Ze.RELATIVE_TO_TERRAIN,s=n===Ze.CLAMP_TO_3D_TILE||n===Ze.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},u=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,o,i);c[g.id]=m};if(!r){let g=this.primitives.length;for(let m=0;m<g;++m){let _=this.primitives.get(m);u(_)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},f(),h()}};function Wxt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ie.SCENE2D||n===ie.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}gi.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=Hxt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=Wxt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function jxt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new Ny({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function Yxt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function qxt(e){e.primitives.postPassesUpdate(e._frameState),Yc.update()}var Kxt=new G;function Xxt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=axt;let r=e.backgroundColor??G.BLACK;e._hdr&&(r=G.clone(r,Kxt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof wy?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Xe.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,wxt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function I0(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function Jxt(e){return e._picking.updateMostDetailedRayPicks(e)}gi.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=K.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ie.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(K.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=K.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=D.incrementWrap(t.frameNumber,15e6,1);Axe(this,o,e),t.newFrame=!0}I0(this,Yxt),this.primitives.show&&(I0(this,Jxt),I0(this,Zxt),I0(this,$xt),i||I0(this,ebt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),I0(this,Xxt)),jxt(this,i),I0(this,qxt),Vxt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};gi.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};gi.prototype.requestRender=function(){this._renderRequested=!0};gi.prototype.clampLineWidth=function(e){return Math.max(qt.minimumAliasedLineWidth,Math.min(e,qt.maximumAliasedLineWidth))};gi.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};gi.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof E0))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return F8.fromKeyframeNode(o,s,c,a)};gi.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=f4(s,t,n,i);if(!l(a))return;let c=h4(r,n,i);if(!l(c))return;let u=new d4(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};gi.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};gi.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};gi.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};gi.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function Zxt(e){let t=e._frameState;HJ.camera=t.camera,HJ.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,HJ)}function $xt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;WJ.camera=e.preloadFlightCamera,WJ.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,WJ)}function ebt(e){e.primitives.updateForPass(e._frameState,cxt)}gi.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};gi.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};gi.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};gi.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};gi.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};gi.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};gi.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};gi.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};gi.prototype.cartesianToCanvasCoordinates=function(e,t){return to.worldToWindowCoordinates(this,e,t)};gi.prototype.completeMorph=function(){this._transitioner.completeMorph()};gi.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};gi.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};gi.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function tbt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}gi.prototype.setTerrain=function(e){return tbt(this,e),e};gi.prototype.isDestroyed=function(){return!1};gi.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var p4=gi;function sS(e){e=e??te.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=R.fromScale(n),this._modelMatrix=new R,this._command=new nt({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(sS.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});sS.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var KJ=new R;sS.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ie.SCENE3D&&n!==ie.MORPHING||!e.passes.render)return;let i=R.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,KJ),o=R.multiplyTransformation(i,Ao.Y_UP_TO_Z_UP,KJ),r=R.multiply(this._scaleMatrix,o,KJ);R.clone(r,this._modelMatrix);let s=e.context,a=nbt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let A=ka.createGeometry(new ka({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Pe.POSITION_ONLY}));f.vertexArray=li.fromGeometry({context:s,geometry:A,attributeLocations:jn.createAttributeLocations(A),bufferUsage:Qe.STATIC_DRAW}),f.renderState=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let A=[];a&&A.push("COLOR_CORRECT"),u&&A.push("PER_FRAGMENT_ATMOSPHERE"),c&&A.push("GLOBE_TRANSLUCENT");let g=new We({defines:A,sources:[bm,tP,_z]}),m=new We({defines:A,sources:[bm,tP,gz]});this._spSkyAtmosphere=ln.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function nbt(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))}sS.prototype.isDestroyed=function(){return!1};sS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var g4=sS;function cS(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new nt({modelMatrix:R.clone(R.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}cS.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ie.SCENE3D&&i!==ie.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?oz(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new jr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),c=this._attributeLocations=jn.createAttributeLocations(a);s.vertexArray=li.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Qe.STATIC_DRAW}),s.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new We({defines:[t?"HDR":""],sources:[yz]});s.shaderProgram=ln.fromCache({context:r,vertexShaderSource:Cz,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};cS.prototype.isDestroyed=function(){return!1};cS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function aS(e){return fn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}cS.createEarthSkyBox=function(){return new cS({sources:{positiveX:aS("px"),negativeX:aS("mx"),positiveY:aS("py"),negativeY:aS("my"),positiveZ:aS("pz"),negativeZ:aS("mz")}})};var _4=cS;function QP(){this.show=!0,this._drawCommand=new nt({primitiveType:Me.TRIANGLES,boundingVolume:new le,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new le,this._boundingVolume2D=new le,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(QP.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var ibt=new k,obt=new k,rbt=new se,FP=new se;QP.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ie.SCENE2D||i===ie.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let b=Math.max(r,s);b=Math.pow(2,Math.ceil(Math.log(b)/Math.log(2))-2),b=Math.max(1,b);let S=n?o.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._texture=new Nt({context:o,width:b,height:b,pixelFormat:et.RGBA,pixelDatatype:S}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let B=this,v={u_radiusTS:function(){return B._radiusTS}};this._commands.computeCommand=new Hl({fragmentShaderSource:Iz,outputTexture:this._texture,uniformMap:v,persists:!1,owner:this,postExecute:function(){B._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let b={direction:0},S=new Uint8Array(8);S[0]=0,S[1]=0,S[2]=255,S[3]=0,S[4]=255,S[5]=255,S[6]=0,S[7]=255;let B=Et.createVertexBuffer({context:o,typedArray:S,usage:Qe.STATIC_DRAW}),v=[{index:b.direction,vertexBuffer:B,componentsPerAttribute:2,normalize:!0,componentDatatype:q.UNSIGNED_BYTE}],P=Et.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});a.vertexArray=new li({context:o,attributes:v,indexBuffer:P}),a.shaderProgram=ln.fromCache({context:o,vertexShaderSource:xz,fragmentShaderSource:Ez,attributeLocations:b}),a.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=D.SOLAR_RADIUS+D.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ie.SCENE3D?le.clone(f,a.boundingVolume):i===ie.COLUMBUS_VIEW&&le.clone(h,a.boundingVolume);let A=to.computeActualEllipsoidPosition(e,c,FP),g=d.magnitude(d.subtract(A,e.camera.position,FP)),m=o.uniformState.projection,_=rbt;_.x=0,_.y=0,_.z=-g,_.w=1;let y=R.multiplyByVector(m,_,FP),C=to.clipToGLWindowCoordinates(t.viewport,y,ibt);_.x=D.SOLAR_RADIUS;let E=R.multiplyByVector(m,_,FP),I=to.clipToGLWindowCoordinates(t.viewport,E,obt);return this._size=k.magnitude(k.subtract(I,C,FP)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};QP.prototype.isDestroyed=function(){return!1};QP.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var y4=QP;var xxe=Es(CR(),1);function sbt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t});
|
||
vec4 clippingPlanesEdgeColor = vec4(1.0);
|
||
clippingPlanesEdgeColor.rgb = ${n}.rgb;
|
||
float clippingPlanesEdgeWidth = ${n}.a;
|
||
if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth)
|
||
{
|
||
out_FragColor = clippingPlanesEdgeColor;
|
||
}
|
||
`}var C4=sbt;var abt={modifyFragmentShader:function(t){return t=We.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection;
|
||
void main()
|
||
{
|
||
#ifndef SHADOW_MAP
|
||
if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard;
|
||
if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard;
|
||
#endif
|
||
czm_splitter_main();
|
||
}
|
||
`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},kP=abt;var x0={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function UP(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=G.clone(G.DARKGRAY),this._highlightColor=G.clone(G.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=x0.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Be.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=R.clone(R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.time=0,this.shadows=Dn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??wr.NONE,this._splittingEnabled=!1,this._error=void 0,cbt(this,e)}Object.defineProperties(UP.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return G.clone(this._highlightColor)},set:function(e){this._highlightColor=G.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=le.clone(e,this._boundingSphere)}}});function cbt(e,t){let n=Gx.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=Fg.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=x0.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=G.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var lbt=new d,ubt=new d,fbt=new d,Exe,E4;function dbt(e){if(!l(E4)){Exe=new xxe.default(0),E4=new Array(e);for(let t=0;t<e;++t)E4[t]=Exe.random()}return E4}function hbt(e){let n=e.length/3,i=Math.min(n,20),o=dbt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,lbt),c=d.fromElements(s,s,s,ubt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),A=d.unpack(e,h*3,fbt);d.minimumByComponent(a,A,a),d.maximumByComponent(c,A,c)}let u=le.fromCornerPoints(a,c);return u.radius+=D.EPSILON2,u}function Ixe(e,t){let n=q.fromTypedArray(e);return n===q.INT||n===q.UNSIGNED_INT||n===q.DOUBLE?(yt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var mbt=new se,Abt=new se,pbt=new G,bxe=0,I4=1,eZ=2,Txe=3,gbt=4,XJ=new R,_bt=new R;function ybt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,A=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,_=e._quantizedRange,y=e._octEncodedRange,C=e._isRGB565,E=e._isTranslucent,I=e._hasColors,b=e._hasNormals,S=e._hasBatchIds,B,v,P=[],N={};if(e._styleableShaderAttributes=N,f){let Q=gbt;for(let z in u)if(u.hasOwnProperty(z)){let F=u[z],H=Ixe(F.typedArray,z);B=F.componentCount,v=q.fromTypedArray(H);let W=Et.createVertexBuffer({context:n,typedArray:H,usage:Qe.STATIC_DRAW});e._geometryByteLength+=W.sizeInBytes;let Z={index:Q,vertexBuffer:W,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0};P.push(Z),N[z]={location:Q,componentCount:B},++Q}}let L=Et.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});e._geometryByteLength+=L.sizeInBytes;let p;I&&(p=Et.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=p.sizeInBytes);let x;b&&(x=Et.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=x.sizeInBytes);let T;S&&(c.typedArray=Ixe(c.typedArray,"batchIds"),T=Et.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let w=[];if(h?v=q.UNSIGNED_SHORT:A?v=_<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT:v=q.FLOAT,w.push({index:bxe,vertexBuffer:L,componentsPerAttribute:3,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||A?e._boundingSphere=le.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=hbt(r.typedArray)),I)if(C)w.push({index:I4,vertexBuffer:p,componentsPerAttribute:1,componentDatatype:q.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let Q=E?4:3;w.push({index:I4,vertexBuffer:p,componentsPerAttribute:Q,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}b&&(g?(B=2,v=q.UNSIGNED_BYTE):m?(B=2,v=y<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT):(B=3,v=q.FLOAT),w.push({index:eZ,vertexBuffer:x,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0})),S&&w.push({index:Txe,vertexBuffer:T,componentsPerAttribute:1,componentDatatype:q.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(w=w.concat(P));let M=new li({context:n,attributes:w}),O={depthTest:{enabled:!0}},U={depthTest:{enabled:!0},depthMask:!1,blending:pn.ALPHA_BLEND};e._opaquePass===Be.CESIUM_3D_TILE&&(O.stencilTest=Kt.setCesium3DTileBit(),O.stencilMask=Kt.CESIUM_3D_TILE_MASK,U.stencilTest=Kt.setCesium3DTileBit(),U.stencilMask=Kt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ue.fromCache(O),e._translucentRenderState=Ue.fromCache(U),e._drawCommand=new nt({boundingVolume:new le,cull:e._cull,modelMatrix:new R,primitiveType:Me.POINTS,vertexArray:M,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:E?e._translucentRenderState:e._opaqueRenderState,pass:E?Be.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function Cbt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=mbt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ie.SCENE2D||c instanceof An?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return G.TRANSPARENT;let c=G.clone(a.edgeColor,pbt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return R.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;R.multiply(n.uniformState.view3D,c,XJ);let u=R.multiply(XJ,a.modelMatrix,XJ);return R.inverseTranspose(u,_bt)}};kP.addUniforms(e,s),(i||o||r)&&(s=wt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=Abt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function JJ(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function ZJ(e,t){e=e.slice(e.indexOf(`
|
||
`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function $J(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var Ebt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function Ibt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,A=e._isRGB565,g=e._isTranslucent,m=e._hasColors,_=e._hasNormals,y=e._hasBatchIds,C=e._backFaceCulling,E=e._normalShading,I=e._drawCommand.vertexArray,b=e.clippingPlanes,S=e._attenuation,B,v,P,N=g,L=ze(Ebt),p={},x=e._styleableShaderAttributes;for(o in x)x.hasOwnProperty(o)&&(r=x[o],L[o]=`czm_3dtiles_property_${r.location}`,p[r.location]=r);if(a){let fe={translucent:!1},ye="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";B=n.getColorShaderFunction(`getColorFromStyle${ye}`,L,fe),v=n.getShowShaderFunction(`getShowFromStyle${ye}`,L,fe),P=n.getPointSizeShaderFunction(`getPointSizeFromStyle${ye}`,L,fe),l(B)&&fe.translucent&&(N=!0)}e._styleTranslucent=N;let T=l(B),w=l(v),M=l(P),O=e.isClipped,U=[],Q=[];T&&(JJ(B,U),ZJ(B,Q)),w&&(JJ(v,U),ZJ(v,Q)),M&&(JJ(P,U),ZJ(P,Q));let z=Q.indexOf("COLOR")>=0,F=Q.indexOf("NORMAL")>=0;if(F&&!_)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");for(o in x)if(x.hasOwnProperty(o)){r=x[o];let fe=U.indexOf(r.location)>=0,ye=$J(I,r.location);ye.enabled=fe}let H=m&&(!T||z);if(m){let fe=$J(I,I4);fe.enabled=H}let W=_&&(E||C||F);if(_){let fe=$J(I,eZ);fe.enabled=W}let Z={a_position:bxe};H&&(Z.a_color=I4),W&&(Z.a_normal=eZ),y&&(Z.a_batchId=Txe);let Y="",$=U.length;for(i=0;i<$;++i){let fe=U[i];r=p[fe];let ye=r.componentCount,Ie=`czm_3dtiles_property_${fe}`,ve;ye===1?ve="float":ve=`vec${ye}`,Y+=`in ${ve} ${Ie};
|
||
`,Z[Ie]=r.location}Cbt(e,t);let X=`in vec3 a_position;
|
||
out vec4 v_color;
|
||
uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier;
|
||
uniform vec4 u_constantColor;
|
||
uniform vec4 u_highlightColor;
|
||
`;X+=`float u_pointSize;
|
||
float tiles3d_tileset_time;
|
||
`,S&&(X+=`float u_geometricError;
|
||
float u_depthMultiplier;
|
||
`),X+=Y,H&&(g?X+=`in vec4 a_color;
|
||
`:A?X+=`in float a_color;
|
||
const float SHIFT_RIGHT_11 = 1.0 / 2048.0;
|
||
const float SHIFT_RIGHT_5 = 1.0 / 32.0;
|
||
const float SHIFT_LEFT_11 = 2048.0;
|
||
const float SHIFT_LEFT_5 = 32.0;
|
||
const float NORMALIZE_6 = 1.0 / 64.0;
|
||
const float NORMALIZE_5 = 1.0 / 32.0;
|
||
`:X+=`in vec3 a_color;
|
||
`),W&&(f||h?X+=`in vec2 a_normal;
|
||
`:X+=`in vec3 a_normal;
|
||
`),y&&(X+=`in float a_batchId;
|
||
`),(c||u||h)&&(X+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange;
|
||
`),T&&(X+=B),w&&(X+=v),M&&(X+=P),X+=`void main()
|
||
{
|
||
u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x;
|
||
tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y;
|
||
`,S&&(X+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z;
|
||
u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w;
|
||
`),H?g?X+=` vec4 color = a_color;
|
||
`:A?X+=` float compressed = a_color;
|
||
float r = floor(compressed * SHIFT_RIGHT_11);
|
||
compressed -= r * SHIFT_LEFT_11;
|
||
float g = floor(compressed * SHIFT_RIGHT_5);
|
||
compressed -= g * SHIFT_LEFT_5;
|
||
float b = compressed;
|
||
vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);
|
||
vec4 color = vec4(rgb, 1.0);
|
||
`:X+=` vec4 color = vec4(a_color, 1.0);
|
||
`:X+=` vec4 color = u_constantColor;
|
||
`,c||u?X+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz;
|
||
`:X+=` vec3 position = a_position;
|
||
`,X+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0));
|
||
`,W?(f?X+=` vec3 normal = czm_octDecode(a_normal);
|
||
`:h?X+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy;
|
||
`:X+=` vec3 normal = a_normal;
|
||
`,X+=` vec3 normalEC = czm_normal * normal;
|
||
`):X+=` vec3 normal = vec3(1.0);
|
||
`,T&&(X+=` color = getColorFromStyle(position, position_absolute, color, normal);
|
||
`),w&&(X+=` float show = float(getShowFromStyle(position, position_absolute, color, normal));
|
||
`),M?X+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio;
|
||
`:S?X+=` vec4 positionEC = czm_modelView * vec4(position, 1.0);
|
||
float depth = -positionEC.z;
|
||
gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize);
|
||
`:X+=` gl_PointSize = u_pointSize;
|
||
`,X+=` color = color * u_highlightColor;
|
||
`,W&&E&&(X+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC);
|
||
diffuseStrength = max(diffuseStrength, 0.4);
|
||
color.xyz *= diffuseStrength * czm_lightColor;
|
||
`),X+=` v_color = color;
|
||
gl_Position = czm_modelViewProjection * vec4(position, 1.0);
|
||
`,W&&C&&(X+=` float visible = step(-normalEC.z, 0.0);
|
||
gl_Position *= visible;
|
||
gl_PointSize *= visible;
|
||
`),w&&(X+=` gl_Position.w *= float(show);
|
||
gl_PointSize *= float(show);
|
||
`),X+=`}
|
||
`;let he=`in vec4 v_color;
|
||
`;O&&(he+=`uniform highp sampler2D u_clippingPlanes;
|
||
uniform mat4 u_clippingPlanesMatrix;
|
||
uniform vec4 u_clippingPlanesEdgeStyle;
|
||
`,he+=`
|
||
`,he+=Dy(b,s),he+=`
|
||
`),he+=`void main()
|
||
{
|
||
out_FragColor = czm_gammaCorrect(v_color);
|
||
`,O&&(he+=C4("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`}
|
||
`,e.splitDirection!==wr.NONE&&(he=kP.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(X=e._vertexShaderLoaded(X)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ge=e._drawCommand;l(ge.shaderProgram)&&ge.shaderProgram.destroy(),ge.shaderProgram=ln.fromCache({context:s,vertexShaderSource:X,fragmentShaderSource:he,attributeLocations:Z});try{ge.shaderProgram._bind()}catch{throw new ce("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function xbt(e,t){if(e._decodingState===x0.READY)return!1;if(e._decodingState===x0.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=jg.decodePointCloud(i,t);l(o)&&(e._decodingState=x0.DECODING,o.then(function(r){e._decodingState=x0.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),A=l(u)&&l(r.NORMAL.data.quantization);if(h){let y=r.POSITION.data.quantization,C=y.range;e._quantizedVolumeScale=d.fromElements(C,C,C),e._quantizedVolumeOffset=d.unpack(y.minValues),e._quantizedRange=(1<<y.quantizationBits)-1,e._isQuantizedDraco=!0}A&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let y in m)if(m.hasOwnProperty(y)){let C=r[y];l(g)||(g={}),g[y]={typedArray:C.array,componentCount:C.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let _=c??a;l(_)&&(n.colors={typedArray:_}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=x0.FAILED,e._error=r}))}return!0}var bbt=new se,Tbt=new d;UP.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(xbt(this,t))return;let i=!1,o=!R.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ybt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){R.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(R.clone(this._modelMatrix,u),l(this._rtcCenter)&&R.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&R.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ie.SCENE3D){let h=e.mapProjection,A=R.getColumn(u,3,bbt);se.equals(A,se.UNIT_W)||kt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(le.clone(this._boundingSphere,f),this._cull){let h=f.center;R.multiplyByPoint(u,h,h);let A=R.getScale(u,Tbt);f.radius*=d.maximumComponent(A)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==wr.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&Ibt(this,e,this._style),this._drawCommand.castShadows=Dn.castShadows(this.shadows),this._drawCommand.receiveShadows=Dn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Be.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};UP.prototype.isDestroyed=function(){return!1};UP.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var x4=UP;function T0(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.shadows=e.shadows??Dn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new op(e.shading),this.style=e.style,this.frameFailed=new _e,this.frameChanged=new _e,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new u_,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(T0.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function Sbt(e){return`uniform vec4 czm_pickColor;
|
||
${e}`}function wbt(e){return function(t){return wt(t,{czm_pickColor:function(){return e._pickId.color}})}}function Bbt(){return"czm_pickColor"}T0.prototype.makeStyleDirty=function(){this._styleDirty=!0};T0.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var Dbt=new K;function nZ(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function b0(e,t){return e._intervals.indexOf(t.start)}function vbt(e,t){let n=e._intervals,i=e._clock,o=nZ(e);if(o===0)return;let r=e._getAverageLoadTime(),s=K.addSeconds(i.currentTime,r*o,Dbt),a=n.indexOf(s),c=b0(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function Pbt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function Rbt(e,t,n){let i=nZ(e),o=b0(e,t),r=b0(e,n);return i>=0?o>=r:o<=r}function wxe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function Mbt(e,t,n){let i=b0(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?R.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Oi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,we.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new x4({arrayBuffer:u,cull:!0,fragmentShaderLoaded:Sbt,uniformMapLoaded:wbt(e),pickIdLoaded:Bbt})}).catch(wxe(e,c))}return r}function Nbt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function Lbt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(Bxe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Oi()-t.timestamp)/1e3;Nbt(e,a)}}t.touchedFrameNumber=i.frameNumber}var Obt=new R;function Fbt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?D.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function Qbt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var kbt=new op;function Bxe(e,t,n,i){let o=e.shading??kbt,r=t.pointCloud,s=t.transform??R.IDENTITY;r.modelMatrix=R.multiplyTransformation(e.modelMatrix,s,Obt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=Fbt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=Qbt(e);try{r.update(i)}catch(a){wxe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function tZ(e,t,n,i){let o=Mbt(e,t,i);Lbt(e,o,n,i)}function Ubt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function Dxe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Gbt(e,t){let n=b0(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function Sxe(e,t,n,i,o){return l(n)?n.ready?!0:(tZ(e,t,i,o),n.ready):!1}function zbt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=b0(e,n),h=b0(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s;return t}function Vbt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var lS={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};T0.prototype.update=function(e){if(e.mode===ie.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time));let t=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&Vbt(this,o,s),lS.timeSinceLoad=t,lS.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,A=this._nextInterval,g=Pbt(this);if(!l(g))return;let m=!1,_=nZ(this),y=_===0;_!==this._clockMultiplier&&(m=!0,this._clockMultiplier=_),(!l(h)||y)&&(h=g),(!l(A)||m||Rbt(this,g,A))&&(A=vbt(this,g)),h=zbt(this,h,g,lS,e);let C=Gbt(this,h);l(C)||(tZ(this,h,lS,e),C=this._lastRenderedFrame),l(C)&&Bxe(this,C,lS,e),l(A)&&tZ(this,A,lS,e);let E=this;l(C)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(C)&&C!==this._lastRenderedFrame&&E.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return E.frameChanged.raiseEvent(E),!0}),this._previousInterval=h,this._nextInterval=A,this._lastRenderedFrame=C;let I=this._totalMemoryUsageInBytes,b=this.maximumMemoryUsage*1024*1024;I>b&&Dxe(this,Ubt(e));let B=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&B>0&&c.update(e,f,a,this.boundingSphere)};T0.prototype.isDestroyed=function(){return!1};T0.prototype.destroy=function(){return Dxe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var GP=T0;function Rxe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Hbt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function Mxe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function Nxe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=Mxe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function Lxe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Fo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=jt.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=jt.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Gn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?Gn(t.creditViewport):n,f=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new _e,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Vm,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),Nxe(this);try{let A=t.ellipsoid??te.default,g=new p4({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:A,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=d.UNIT_Z,Mxe(this),Lxe(this);let m=t.globe;l(m)||(m=new Jz(A)),m!==!1&&(g.globe=m,g.globe.shadows=t.terrainShadows??Dn.RECEIVE_ONLY);let _=t.skyBox;!l(_)&&te.WGS84.equals(A)&&(_=_4.createEarthSkyBox()),_!==!1&&(g.skyBox=_,g.sun=new y4,te.WGS84.equals(A)&&(g.moon=new rV));let y=t.skyAtmosphere;!l(y)&&te.WGS84.equals(A)&&(y=new g4(A),y.show=t.globe!==!1&&m.show),y!==!1&&(g.skyAtmosphere=y);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=ds.fromWorldImagery()),g.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Cd(i),l(t.sceneMode)&&(t.sceneMode===ie.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ie.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let E=this;this._onRenderError=function(P,N){E._useDefaultRenderLoop=!1,E._renderLoopRunning=!1,E._showRenderLoopErrors&&E.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,N)},g.renderError.addEventListener(this._onRenderError);let I=t.dataSources,b=!1;l(I)||(I=new b3,b=!0);let S=new AU({scene:g,dataSourceCollection:I}),B=new Lr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=I,this._destroyDataSourceCollection=b,this._dataSourceDisplay=S,this._eventHelper=B,this._canAnimateUpdateCallback=this._updateCanAnimate,B.add(this._clock.onTick,Fo.prototype._onTick,this),B.add(g.morphStart,Fo.prototype._clearTrackedObject,this),B.add(I.dataSourceAdded,Fo.prototype._onDataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._onDataSourceRemoved,this),B.add(g.postRender,Fo.prototype._postRender,this);let v=I.length;for(let P=0;P<v;P++)this._dataSourceAdded(I,I.get(P));this._dataSourceAdded(void 0,S.defaultDataSource),B.add(I.dataSourceAdded,Fo.prototype._dataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._dataSourceRemoved,this)}catch(A){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',A),A}}Object.defineProperties(Fo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Hbt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,iZ(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ie.COLUMBUS_VIEW||n===ie.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ie.COLUMBUS_VIEW||n===ie.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(R.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,Rxe(this.clock,e))}}});Fo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=up(n);u||(typeof n=="string"&&(n=new Error(n)),t=up({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e}
|
||
${t}
|
||
${m}`);let _=document.createElement("div");_.className="cesium-widget-errorPanel-message-details collapsed";let y=document.createElement("span");y.className="cesium-widget-errorPanel-more-details",y.appendChild(document.createTextNode("See more...")),_.appendChild(y),_.onclick=function(C){_.removeChild(y),_.appendChild(document.createTextNode(m)),_.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",_.onclick=void 0},a.appendChild(_)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let A=document.createElement("button");A.setAttribute("type","button"),A.className="cesium-button",A.appendChild(document.createTextNode("OK")),A.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(A),i.appendChild(o)};Fo.prototype.isDestroyed=function(){return!1};Fo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Fo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,Nxe(this),Lxe(this),this._scene.requestRender())};Fo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Fo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Fo.prototype._onEntityCollectionChanged,this)};Fo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Fo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Fo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var Wbt=new le;Fo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??Wbt)===mt.DONE&&i.update(t)}};Fo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Fo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Fo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&Rxe(this.clock,e)};Fo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Fo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Fo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Fo.prototype.zoomTo=function(e,t){return Oxe(this,e,{offset:t},!1)};Fo.prototype.flyTo=function(e,t){return Oxe(this,e,t,!0)};function Oxe(e,t,n,i){iZ(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof ds){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return RT(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof qs||r instanceof GP||r instanceof E0){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function zP(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function iZ(e){let t=e._zoomPromise;l(t)&&(zP(e),e._completeZoom(!1))}Fo.prototype._postRender=function(){jbt(this),Ybt(this)};var vxe=new le;function jbt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===ie.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(f){l(o.offset)||(o.offset=new Eh(0,-.5,f.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(f,o.offset),i.lookAtTransform(R.IDENTITY),e._completeZoom(!0)),zP(e)}if(t instanceof GP){if(l(t.boundingSphere)){s(t.boundingSphere);return}let f=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),f()});return}if(t instanceof qs||t instanceof E0){s(t.boundingSphere);return}if(t instanceof Ae){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),zP(e);return}let a=t,c=[];for(let f=0,h=a.length;f<h;f++){let A=e._dataSourceDisplay.getBoundingSphere(a[f],!1,vxe);if(A===mt.PENDING)return;A!==mt.FAILED&&c.push(le.clone(vxe))}if(c.length===0){iZ(e);return}e.trackedEntity=void 0;let u=le.fromBoundingSpheres(c);e._zoomIsFlight?(zP(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(R.IDENTITY),zP(e),e._completeZoom(!0))}var Pxe=new le;function Ybt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=j.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,Pxe);if(r===mt.PENDING)return;let s=o.mode;(s===ie.COLUMBUS_VIEW||s===ie.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ie.COLUMBUS_VIEW||s===ie.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==mt.FAILED?Pxe:void 0;e._entityView=new _U(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var b4=Fo;function dS(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var S0=new ae;function qbt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}dS.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let A=n;A<=o;++A)for(let g=t;g<=i;++g)qbt(e,g,A,s)||s.push(new uS(r,void 0,0,g,A));r.tileXYToRectangle(t,n,e,S0);let a=S0.west,c=S0.north;r.tileXYToRectangle(i,o,e,S0);let u=S0.east,f=S0.south,h=new $bt(e,a,f,u,c);for(let A=0;A<s.length;++A){let g=s[A];oZ(g.extent,h)&&eTt(this._maximumLevel,g,h)}};dS.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(fS(i.extent,e)){t=i;break}}return l(t)?VP(void 0,t,e):-1};var Kbt=[],Xbt=[],Jbt=new ae,Zbt=new ae;dS.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=Kbt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Jbt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Zbt))):t.push(e);let n=Xbt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)HP(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var Fxe=new Ae;dS.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,S0);return ae.center(i,Fxe),this.computeMaximumLevelAtPosition(Fxe)>=e};dS.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function uS(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(uS.prototype,{nw:{get:function(){return this._nw||(this._nw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function $bt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function oZ(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function eTt(e,t,n){for(;t.level<e;)if(T4(t.nw.extent,n))t=t.nw;else if(T4(t.ne.extent,n))t=t.ne;else if(T4(t.sw.extent,n))t=t.sw;else if(T4(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=qo(t.rectangles,n.level,tTt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function tTt(e,t){return e.level-t}function T4(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function fS(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function VP(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&fS(t._nw.extent,n),s=t._ne&&fS(t._ne.extent,n),a=t._sw&&fS(t._sw.extent,n),c=t._se&&fS(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,VP(t,t._nw,n))),s&&(i=Math.max(i,VP(t,t._ne,n))),a&&(i=Math.max(i,VP(t,t._sw,n))),c&&(i=Math.max(i,VP(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];fS(a,n)&&(i=a.level)}t=t.parent}return i}function HP(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||oZ(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=nTt(e[s.level],s)}HP(e,t._nw,n),HP(e,t._ne,n),HP(e,t._sw,n),HP(e,t._se,n)}function nTt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];oZ(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var CA=dS;var iTt=15;function Qxe(e){this.ellipsoid=e.ellipsoid??te.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}Qxe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function oTt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Dt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new co(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new k(r.xmin,r.ymin),s.rectangleNortheastInMeters=new k(r.xmax,r.ymax),e.tilingScheme=new ws(s)}else throw new ce("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new ce("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?vh.LERC:vh.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new CA(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new CA(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function rTt(e,t,n){try{let i=await t.fetchJson();oTt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function Vy(e){e=e??V.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new _e}Object.defineProperties(Vy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});Vy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new Qxe(t);await rTt(o,i);let r=new Vy(t);return o.build(r),r._resource=n,r};Vy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(rZ(this,n+1,e*2,t*2))){let h=kxe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new Qc({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):iTt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){if(l(a)&&a.state===hi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=hi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function rZ(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}Vy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Vy.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=rZ(this,n,e,t);if(l(i))return i;kxe(this,n,e,t)};Vy.prototype.loadTileDataAvailability=function(e,t,n){};function sTt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new k(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let A=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new k(u.x,e.y)),--u.x,--A,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let _=e.x;_<=A;++_)if(i[m+_]!==s){h=!0;break}h?(a.push(new k(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function aTt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new k(0,0)];for(;a.length>0;){let c=a.pop(),u=sTt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function kxe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(A){let g=aTt(o,r,s,s,A.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let _=0;_<g.length;++_){let y=g[_];m.addAvailableTileRange(t,y.startX,y.startY,y.endX,y.endY)}return rZ(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(A){return delete c[a],A}),{promise:h,request:u}):{}}var Uxe=Vy;var Gxe="https://dev.virtualearth.net/REST/v1/Locations";function sZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new we({url:Gxe,queryParameters:n}),this._credit=new Dt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(sZ.prototype,{url:{get:function(){return Gxe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});sZ.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var zxe=sZ;function aZ(){}Object.defineProperties(aZ.prototype,{credit:{get:function(){}}});aZ.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var Vxe=aZ;var cTt=new se,Hxe=new d,hS=new d;function lTt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=cTt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,A;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,Hxe),d.multiplyByScalar(h,.5,h),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],Hxe),d.multiplyByScalar(f,.5,f),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],A=R.multiplyByVector(Hy.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,A.x,o),d.multiplyByScalar(u,A.y,hS),d.add(o,hS,o),d.multiplyByScalar(f,A.z,hS),d.add(o,hS,o),d.multiplyByScalar(h,A.w,hS),d.add(o,hS,o)}}var uTt=new d,fTt=new d;function Hy(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=uTt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=fTt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=lTt(this),this._lastTimeIndex=0}Object.defineProperties(Hy.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});Hy.catmullRomCoefficientMatrix=new R(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);Hy.prototype.findTimeInterval=_o.prototype.findTimeInterval;Hy.prototype.wrapTime=_o.prototype.wrapTime;Hy.prototype.clampTime=_o.prototype.clampTime;Hy.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var Wxe=Hy;var S4={};S4.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,A,g,m,_;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(A=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),A!==1&&(r.push(-1),r.push(1),r.push(2),r.push(A))):c&&(m=(e-o)/(n-o),_=(e-o)/(i-o),r.push(0),r.push(1),_!==1&&(r.push(-1),r.push(2),r.push(1),r.push(_)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(_=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(_),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),A=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(A)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};S4.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,A=i-a,g=1/(h*u+f*A),m=t-a,_=e-s,y=(h*_+f*m)*g,C=(-A*_+u*m)*g,E=1-y-C;return l(c)?(c.x=y,c.y=C,c.z=E,c):new d(y,C,E)};S4.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let A=u/h,g=f/h;if(A>=0&&A<=1&&g>=0&&g<=1)return l(c)||(c=new k),c.x=e+A*(n-e),c.y=t+A*(i-t),c};var Wy=S4;function jy(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=B4(e.westIndices,o,t),this._southIndices=B4(e.southIndices,r,t),this._eastIndices=B4(e.eastIndices,o,t),this._northIndices=B4(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(jy.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var w4=[];function B4(e,t,n){w4.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)w4[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(w4.sort(t),Fe.createTypedArray(n,w4)):e}var jxe="createVerticesFromQuantizedTerrainMesh",dTt=new mi(jxe),hTt=new mi(jxe,fA.maximumAsynchronousTasks);jy.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?hTt:dTt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let A=this;return Promise.resolve(h).then(function(g){let m=A._quantizedVertices.length/3,_=m+A._westIndices.length+A._southIndices.length+A._eastIndices.length+A._northIndices.length,y=Fe.createTypedArray(_,g.indices),C=new Float32Array(g.vertices),E=g.center,I=g.minimumHeight,b=g.maximumHeight,S=A._boundingSphere,B=A._orientedBoundingBox,v=d.clone(g.occludeePointInScaledSpace)??A._horizonOcclusionPoint,P=g.vertexStride,N=Il.clone(g.encoding);return A._mesh=new Ph(E,C,y,g.indexCountWithoutSkirts,m,I,b,S,v,P,B,N,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),A._quantizedVertices=void 0,A._encodedNormals=void 0,A._indices=void 0,A._uValues=void 0,A._vValues=void 0,A._heightValues=void 0,A._westIndices=void 0,A._southIndices=void 0,A._eastIndices=void 0,A._northIndices=void 0,A._mesh})};var mTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);jy.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=mTt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,_=u?g*.5:this._southSkirtHeight,y=c?this._eastSkirtHeight:g*.5,C=u?this._northSkirtHeight:g*.5,E=this._credits;return Promise.resolve(A).then(function(I){let b=new Uint16Array(I.vertices),S=Fe.createTypedArray(b.length/3,I.indices),B;return l(I.encodedNormals)&&(B=new Uint8Array(I.encodedNormals)),new jy({quantizedVertices:b,indices:S,encodedNormals:B,minimumHeight:I.minimumHeight,maximumHeight:I.maximumHeight,boundingSphere:le.clone(I.boundingSphere),orientedBoundingBox:Qn.clone(I.orientedBoundingBox),horizonOcclusionPoint:d.clone(I.horizonOcclusionPoint),westIndices:I.westIndices,southIndices:I.southIndices,eastIndices:I.eastIndices,northIndices:I.northIndices,westSkirtHeight:m,southSkirtHeight:_,eastSkirtHeight:y,northSkirtHeight:C,childTileMask:0,credits:E,createdByUpsampling:!0})})};var cZ=32767,Yxe=new d;jy.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1);i*=cZ;let o=D.clamp((n-e.south)/e.height,0,1);return o*=cZ,l(this._mesh)?_Tt(this,i,o):yTt(this,i,o)};function qxe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var ATt=new k,pTt=new k,gTt=new k;function _Tt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,ATt),g=r.decodeTextureCoordinates(o,f,pTt),m=r.decodeTextureCoordinates(o,h,gTt);if(qxe(t,n,A.x,A.y,g.x,g.y,m.x,m.y)){let _=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,Yxe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}}function yTt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=i[u],g=i[f],m=i[h],_=o[u],y=o[f],C=o[h];if(qxe(t,n,A,_,g,y,m,C)){let E=Wy.computeBarycentricCoordinates(t,n,A,_,g,y,m,C,Yxe);if(E.x>=-1e-15&&E.y>=-1e-15&&E.z>=-1e-15){let I=E.x*r[u]+E.y*r[f]+E.z*r[h];return D.lerp(e._minimumHeight,e._maximumHeight,I/cZ)}}}}jy.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};jy.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var mS=jy;function CTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function Xxe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??te.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}Xxe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function Jxe(e,t,n){if(!t.format){let _="The tile format is not specified in the layer.json file.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(!t.tiles||t.tiles.length===0){let _="The layer.json file does not specify any tile URL templates.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let _=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new ws({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let _=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let _=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,A=t.available,g;if(l(A)&&!l(h)){g=new CA(e.tilingScheme,A.length);for(let _=0;_<A.length;++_){let y=A[_],C=e.tilingScheme.getNumberOfYTilesAtLevel(_);l(e.overallAvailability[_])||(e.overallAvailability[_]=[]);for(let E=0;E<y.length;++E){let I=y[E],b=C-I.endY-1,S=C-I.startY-1;e.overallAvailability[_].push([I.startX,b,I.endX,S]),g.addAvailableTileRange(_,I.startX,b,I.endX,S)}}}else l(h)&&(f=new CA(e.tilingScheme,u),g=new CA(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new CTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await fZ(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function ETt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=`
|
||
${t.message}`),e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return fZ(e,n);throw new ce(i)}async function ITt(e,t,n){await Jxe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new CA(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Dt(e.attribution);e.tileCredits.push(o)}return!0}async function fZ(e,t){try{let n=await e.layerJsonResource.fetchJson();return ITt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await Jxe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):ETt(e,n,t)}}function zh(e){e=e??V.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new _e;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var lZ={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function Kxe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function xTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new Qc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function bTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,_=Uint16Array.BYTES_PER_ELEMENT,y=_*m,C=new DataView(t),E=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let I=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let b=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=new le(new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0)),C.getFloat64(a+f,!0));a+=h;let B=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let v=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let P=new Uint16Array(t,a,v*3);a+=v*g,v>64*1024&&(_=Uint32Array.BYTES_PER_ELEMENT,y=_*m);let N=P.subarray(0,v),L=P.subarray(v,2*v),p=P.subarray(v*2,3*v);Fn.zigZagDeltaDecode(N,L,p),a%_!==0&&(a+=_-a%_);let x=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let T=Fe.createTypedArrayFromArrayBuffer(v,t,a,x*m);a+=x*y;let w=0,M=T.length;for(let fe=0;fe<M;++fe){let ye=T[fe];T[fe]=w-ye,ye===0&&++w}let O=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let U=Fe.createTypedArrayFromArrayBuffer(v,t,a,O);a+=O*_;let Q=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let z=Fe.createTypedArrayFromArrayBuffer(v,t,a,Q);a+=Q*_;let F=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Fe.createTypedArrayFromArrayBuffer(v,t,a,F);a+=F*_;let W=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Z=Fe.createTypedArrayFromArrayBuffer(v,t,a,W);a+=W*_;let Y,$;for(;a<C.byteLength;){let fe=C.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let ye=C.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,fe===lZ.OCT_VERTEX_NORMALS&&e._requestVertexNormals)Y=new Uint8Array(t,a,v*2);else if(fe===lZ.WATER_MASK&&e._requestWaterMask)$=new Uint8Array(t,a,ye);else if(fe===lZ.METADATA&&e._requestMetadata){let Ie=C.getUint32(a,!0);if(Ie>0){let Te=yr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,Ie).available;if(l(Te))for(let ke=0;ke<Te.length;++ke){let Ge=n+ke+1,qe=Te[ke],tt=e._tilingScheme.getNumberOfYTilesAtLevel(Ge);for(let $t=0;$t<qe.length;++$t){let it=qe[$t],tn=tt-it.endY-1,Wt=tt-it.startY-1;e.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt),r.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=ye}let X=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ge=Qn.fromRectangle(he,I,b,e._tilingScheme.ellipsoid);return new mS({center:E,minimumHeight:I,maximumHeight:b,boundingSphere:S,orientedBoundingBox:ge,horizonOcclusionPoint:B,quantizedVertices:P,encodedNormals:Y,indices:T,westIndices:U,southIndices:z,eastIndices:H,northIndices:Z,westSkirtHeight:X,southSkirtHeight:X,eastSkirtHeight:X,northSkirtHeight:X,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:$,credits:e._tileCredits})}zh.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=dZ(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):Zxe(this,e,t,n,r,i)};function Zxe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new ce("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],A=o.resource;l(A._ionEndpoint)&&!l(A._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=Kxe(void 0)):u=Kxe(c);let g=A.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?xTt(e,m,i,t,n):bTt(e,m,i,t,n,o):Promise.reject(new ce("Mesh buffer doesn't exist."))})}Object.defineProperties(zh.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});zh.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};zh.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return zh.fromUrl(n,t)};zh.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash();let i=new Xxe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await fZ(i);let o=new zh(t);return i.build(o),o};zh.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(dZ(this,e,t,n,i[r],r===0).result)return;return!1};zh.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=dZ(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function uZ(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function dZ(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=uZ(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let A=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});h=Zxe(e,f.x,f.y,f.level,o,A),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=uZ(o,f.x,f.y,f.level)}return{result:!1}}zh._getAvailabilityTile=uZ;var AS=zh;function sg(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new ru(n),this._workerName="createCircleGeometry"}sg.packedLength=ru.packedLength;sg.pack=function(e,t,n){return ru.pack(e._ellipseGeometry,t,n)};var $xe=new ru({center:new d,semiMajorAxis:1,semiMinorAxis:1}),uc={center:new d,radius:void 0,ellipsoid:te.clone(te.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Pe,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};sg.unpack=function(e,t,n){let i=ru.unpack(e,t,$xe);return uc.center=d.clone(i._center,uc.center),uc.ellipsoid=te.clone(i._ellipsoid,uc.ellipsoid),uc.ellipsoid=te.clone(i._ellipsoid,$xe._ellipsoid),uc.height=i._height,uc.extrudedHeight=i._extrudedHeight,uc.granularity=i._granularity,uc.vertexFormat=Pe.clone(i._vertexFormat,uc.vertexFormat),uc.stRotation=i._stRotation,uc.shadowVolume=i._shadowVolume,l(n)?(uc.semiMajorAxis=i._semiMajorAxis,uc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ru(uc),n):(uc.radius=i._semiMajorAxis,new sg(uc))};sg.createGeometry=function(e){return ru.createGeometry(e._ellipseGeometry)};sg.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new sg({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(sg.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var ebe=sg;function pS(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new ld(n),this._workerName="createCircleOutlineGeometry"}pS.packedLength=ld.packedLength;pS.pack=function(e,t,n){return ld.pack(e._ellipseGeometry,t,n)};var TTt=new ld({center:new d,semiMajorAxis:1,semiMinorAxis:1}),af={center:new d,radius:void 0,ellipsoid:te.clone(te.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};pS.unpack=function(e,t,n){let i=ld.unpack(e,t,TTt);return af.center=d.clone(i._center,af.center),af.ellipsoid=te.clone(i._ellipsoid,af.ellipsoid),af.height=i._height,af.extrudedHeight=i._extrudedHeight,af.granularity=i._granularity,af.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(af.semiMajorAxis=i._semiMajorAxis,af.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ld(af),n):(af.radius=i._semiMajorAxis,new pS(af))};pS.createGeometry=function(e){return ld.createGeometry(e._ellipseGeometry)};var tbe=pS;function gS(e){e=e??V.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this._credit=n}Object.defineProperties(gS.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});gS.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new Qc({buffer:c,width:r,height:s})})};gS.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};gS.prototype.getTileDataAvailable=function(e,t,n){};gS.prototype.loadTileDataAvailability=function(e,t,n){};var nbe=gS;function ibe(e){this.proxy=e}ibe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var obe=ibe;var STt={SEARCH:0,AUTOCOMPLETE:1},w0=Object.freeze(STt);function D4(){me.throwInstantiationError()}Object.defineProperties(D4.prototype,{credit:{get:me.throwInstantiationError}});D4.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Dt.getIonCredit)};D4.prototype.geocode=me.throwInstantiationError;var WP=D4;function rbe(){me.throwInstantiationError()}rbe.createGeometry=function(e){me.throwInstantiationError()};var sbe=rbe;var RTt=Es(hZ(),1);function wTt(e,t){return(e&t)!==0}var Tl=wTt;var BTt=[1,2,4,8],abe=15,DTt=16,vTt=64,PTt=128;function EA(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}EA.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new EA(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};EA.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};EA.prototype.hasSubtree=function(){return Tl(this._bits,DTt)};EA.prototype.hasImagery=function(){return Tl(this._bits,vTt)};EA.prototype.hasTerrain=function(){return Tl(this._bits,PTt)};EA.prototype.hasChildren=function(){return Tl(this._bits,abe)};EA.prototype.hasChild=function(e){return Tl(this._bits,BTt[e])};EA.prototype.getChildBitmask=function(){return this._bits&abe};var v4=EA;function MTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var NTt=MTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y
|
||
wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB
|
||
\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2
|
||
\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1
|
||
ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS
|
||
>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88
|
||
\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function cf(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=D.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(cf.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});cf.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof we)&&(t=e.url);let n=we.createIfNeeded(t);n.appendForwardSlash();let i=new cf;i._resource=n;try{await LTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${lbe(i,"",1).url}: ${o}`;throw new ce(r)}return i};cf.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;Tl(t,r)?Tl(e,r)&&(s|=1):(s|=2,Tl(e,r)||(s|=1)),i+=s}return i};cf.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];Tl(s,2)?Tl(s,1)||(t|=r):(n|=r,Tl(s,1)&&(t|=r))}return{x:t,y:n,level:i}};cf.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var cbe=new mi("decodeGoogleEarthEnterprisePacket");cf.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=lbe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return cbe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let A=Object.keys(u);A.sort(function(m,_){return m.length-_.length});let g=A.length;for(let m=0;m<g;++m){let _=A[m];if(u[_]!==null){let C=v4.clone(u[_]),E=_.length;if(E===h)C.setParent(f);else if(E>1){let I=r[_.substring(0,_.length-1)];C.setParent(I)}r[_]=C}else r[_]=null}})})};cf.prototype.populateSubtree=function(e,t,n,i){let o=cf.tileXYToQuadKey(e,t,n);return pZ(this,o,i)};function pZ(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new ce(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)}).finally(function(){delete a[o]})}cf.prototype.getTileInformation=function(e,t,n){let i=cf.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};cf.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function lbe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var mZ,AZ;function LTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(AZ)){let n=fn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;AZ=q0(n).then(function(){mZ=window.cesiumGoogleEarthDbRootParser(RTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return AZ.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=mZ.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return cbe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=mZ.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new Dt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=NTt})}var Yy=cf;function B0(e){e=e??V.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(B0.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var dbe="createVerticesFromGoogleEarthEnterpriseBuffer",OTt=new mi(dbe),FTt=new mi(dbe,fA.maximumAsynchronousTasks),ube=new ae,gZ=new ae;B0.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,ube),t.tileXYToRectangle(n,i,o,gZ);let u=c.cartographicToCartesian(ae.center(gZ)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?FTt:OTt).scheduleTask({buffer:this._buffer,nativeRectangle:ube,rectangle:gZ,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(_){return m._mesh=new Ph(u,new Float32Array(_.vertices),new Uint16Array(_.indices),_.indexCountWithoutSkirts,_.vertexCountWithoutSkirts,_.minimumHeight,_.maximumHeight,le.clone(_.boundingSphere3D),d.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,Qn.clone(_.orientedBoundingBox),Il.clone(_.encoding),_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),m._minimumHeight=_.minimumHeight,m._maximumHeight=_.maximumHeight,m._buffer=void 0,m._mesh})};B0.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1),o=D.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?zTt(this,i,o):WTt(this,i,o,e)};var QTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);B0.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=QTt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=this;return A.then(function(m){let _=new Uint16Array(m.vertices),y=Fe.createTypedArray(_.length/3,m.indices),C=g._skirtHeight;return new mS({quantizedVertices:_,indices:y,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:le.clone(m.boundingSphere),orientedBoundingBox:Qn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:C,southSkirtHeight:C,eastSkirtHeight:C,northSkirtHeight:C,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};B0.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};B0.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var kTt=new k,UTt=new k,GTt=new k,hbe=new d;function zTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,kTt),g=r.decodeTextureCoordinates(o,f,UTt),m=r.decodeTextureCoordinates(o,h,GTt),_=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,hbe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}var VTt=Uint16Array.BYTES_PER_ELEMENT,fbe=Uint32Array.BYTES_PER_ELEMENT,_Z=Int32Array.BYTES_PER_ELEMENT,HTt=Float32Array.BYTES_PER_ELEMENT,yZ=Float64Array.BYTES_PER_ELEMENT;function WTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let S=0;S<r;++S)u+=c.getUint32(u,!0),u+=fbe;u+=fbe,u+=2*yZ;let f=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let h=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let A=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=_Z;let _=c.getInt32(u,!0)*3;u+=_Z,u+=_Z;let y=new Array(m),C=new Array(m),E=new Array(m),I;for(I=0;I<m;++I)y[I]=s+c.getUint8(u++)*A,C[I]=a+c.getUint8(u++)*g,E[I]=c.getFloat32(u,!0)*6371010,u+=HTt;let b=new Array(_);for(I=0;I<_;++I)b[I]=c.getUint16(u,!0),u+=VTt;for(I=0;I<_;I+=3){let S=b[I],B=b[I+1],v=b[I+2],P=y[S],N=y[B],L=y[v],p=C[S],x=C[B],T=C[v],w=Wy.computeBarycentricCoordinates(t,n,P,p,N,x,L,T,hbe);if(w.x>=-1e-15&&w.y>=-1e-15&&w.z>=-1e-15)return w.x*E[S]+w.y*E[B]+w.z*E[v]}}var jP=B0;var bd={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},P4=new K;function R4(){this._terrainCache={},this._lastTidy=K.now()}R4.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:K.now()}};R4.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};R4.prototype.tidy=function(){if(K.now(P4),K.secondsDifference(P4,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];K.secondsDifference(P4,r.timestamp)>10&&delete e[o]}K.clone(P4,this._lastTidy)}};function qy(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new R4,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new _e}Object.defineProperties(qy.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});qy.fromMetadata=function(e,t){if(!e.terrainPresent)throw new ce(`The server ${e.url} doesn't have terrain`);let n=new qy(t);return n._metadata=e,n};var jTt=new mi("decodeGoogleEarthEnterprisePacket");function mbe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===bd.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}qy.prototype.requestTileGeometry=function(e,t,n,i){let o=Yy.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new ce("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=bd.UNKNOWN);let u=r.get(o);if(l(u)){let C=s.providers[a.terrainProvider];return Promise.resolve(new jP({buffer:u,childTileMask:mbe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===bd.NONE)return Promise.reject(new ce("Terrain tile doesn't exist"))}else return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}));let f,h=o,A=-1;switch(c){case bd.SELF:A=a.terrainVersion;break;case bd.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),A=f.terrainVersion;break;case bd.UNKNOWN:a.hasTerrain()?A=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(A=f.terrainVersion));break}if(A<0)return Promise.reject(new ce("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,_,y;if(l(g[h]))_=g[h],y=m[h];else{y=i;let C=YTt(this,h,A,y).fetchArrayBuffer();if(!l(C))return;_=C.then(function(E){return l(E)?jTt.scheduleTask({buffer:E,type:"Terrain",key:s.key},[E]).then(function(I){let b=s.getTileInformationFromQuadKey(h);b.terrainState=bd.SELF,r.add(h,I[0]);let S=b.terrainProvider,B=I.length-1;for(let v=0;v<B;++v){let P=h+v.toString(),N=s.getTileInformationFromQuadKey(P);l(N)&&(r.add(P,I[v+1]),N.terrainState=bd.PARENT,N.terrainProvider===0&&(N.terrainProvider=S))}}):Promise.reject(new ce("Failed to load terrain."))}),g[h]=_,m[h]=y,_=_.finally(function(){delete g[h],delete m[h]})}return _.then(function(){let C=r.get(o);if(l(C)){let E=s.providers[a.terrainProvider];return new jP({buffer:C,childTileMask:mbe(o,a,s),credits:l(E)?[E]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new ce("Failed to load terrain."))}).catch(function(C){return y.state===hi.CANCELLED?(i.state=y.state,Promise.reject(C)):(a.terrainState=bd.NONE,Promise.reject(C))})};qy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};qy.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=Yy.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===bd.NONE)return!1;if((!l(s)||s===bd.UNKNOWN)&&(r.terrainState=bd.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};qy.prototype.loadTileDataAvailability=function(e,t,n){};function YTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var Abe=qy;var qTt="https://maps.googleapis.com/maps/api/geocode/json",pbe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function CZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._resource=new we({url:qTt,queryParameters:{key:t}}),this._credit=new Dt(pbe,!0)}Object.defineProperties(CZ.prototype,{credit:{get:function(){return this._credit}}});CZ.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new ce(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:pbe,collapsible:!1}}})};var gbe=CZ;var M4={};M4.defaultApiKey=void 0;M4.mapTilesApiEndpoint=new we({url:"https://tile.googleapis.com/v1/"});M4.getDefaultCredit=function(){return new Dt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var _S=M4;var Ls={};Ls.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Ls.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Ls.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Ls.defaultAccessToken=void 0;Ls.defaultShareKey=void 0;Ls._getAuthorizationHeader=function(){return l(Ls.defaultShareKey)?`Basic ${Ls.defaultShareKey}`:`Bearer ${Ls.defaultAccessToken}`};Ls.apiEndpoint=new we({url:"https://api.bentley.com"});Ls.getExports=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}mesh-export`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Ls.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataMetadata=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataURL=async function(e,t,n){let i=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new ce("Not allowed, forbidden");if(o.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new ce(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${o.statusCode}`)}};var _a=Ls;var YP={};YP.type=void 0;YP.getRequiredDataPoints=me.throwInstantiationError;YP.interpolateOrderZero=me.throwInstantiationError;YP.interpolate=me.throwInstantiationError;var _be=YP;var KTt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},Ky=Object.freeze(KTt);function EZ(e){this._url=we.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(EZ.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});EZ.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===w0.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var N4=EZ;function XTt(e){if(!Object.values(Ky).some(t=>t===e))throw new me(`Invalid geocodeProviderType: "${e}"`)}var ybe=Object.freeze({[Ky.GOOGLE]:"google",[Ky.BING]:"bing",[Ky.DEFAULT]:void 0});function JTt(e){return ybe[e]}function ZTt(e){return Object.entries(ybe).find(t=>t[1]===e)[0]}function IZ(e){e=e??V.EMPTY_OBJECT;let t=e.geocodeProviderType??Ky.DEFAULT,n=e.accessToken??mm.defaultAccessToken,i=we.createIfNeeded(e.server??mm.defaultServer);i.appendForwardSlash();let o=mm.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Dt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new N4(r),this.geocodeProviderType=t}Object.defineProperties(IZ.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return ZTt(this._pelias.url.queryParameters.geocoder)},set:function(e){XTt(e);let t={...this._pelias.url.queryParameters,geocoder:JTt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});IZ.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var yS=IZ;function L4(){me.throwInstantiationError()}Object.defineProperties(L4.prototype,{ellipsoid:{get:me.throwInstantiationError}});L4.prototype.project=me.throwInstantiationError;L4.prototype.unproject=me.throwInstantiationError;var Cbe=L4;function CS(e){e=e??V.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(CS.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});CS.prototype.findTimeInterval=_o.prototype.findTimeInterval;CS.prototype.wrapTime=_o.prototype.wrapTime;CS.prototype.clampTime=_o.prototype.clampTime;CS.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var Ebe=CS;function xZ(e,t,n){e=we.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Dt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(xZ.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});xZ.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:wt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var Ibe=xZ;var $Tt={packedLength:void 0,pack:me.throwInstantiationError,unpack:me.throwInstantiationError},xbe=$Tt;var eSt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:me.throwInstantiationError,unpackInterpolationResult:me.throwInstantiationError},bbe=eSt;function Tbe(){me.throwInstantiationError()}Tbe.prototype.getURL=me.throwInstantiationError;var Sbe=Tbe;function tSt(e,t,n,i,o,r,s){let a=Xi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,A=n.alpha,g=i.red,m=i.green,_=i.blue,y=i.alpha;if(G.equals(n,i)){for(c=0;c<a;c++)r[s++]=G.floatToByte(u),r[s++]=G.floatToByte(f),r[s++]=G.floatToByte(h),r[s++]=G.floatToByte(A);return s}let C=(g-u)/a,E=(m-f)/a,I=(_-h)/a,b=(y-A)/a,S=s;for(c=0;c<a;c++)r[S++]=G.floatToByte(u+c*C),r[S++]=G.floatToByte(f+c*E),r[S++]=G.floatToByte(h+c*I),r[S++]=G.floatToByte(A+c*b);return S}function qP(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??te.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*G.packedLength:1,this.packedLength=o+te.packedLength+3}qP.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};qP.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t);t+=te.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new qP({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var O4=new Array(2),F4=new Array(2),nSt={positions:O4,height:F4,ellipsoid:void 0,minDistance:void 0,granularity:void 0};qP.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=D.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,A,g,m,_=0;if(o===un.GEODESIC||o===un.RHUMB){let b,S,B;o===un.GEODESIC?(b=D.chordLength(r,s.maximumRadius),S=Xi.numberOfPoints,B=Xi.generateArc):(b=r,S=Xi.numberOfPointsRhumbLine,B=Xi.generateRhumbArc);let v=Xi.extractHeights(t,s),P=nSt;if(o===un.GEODESIC?P.minDistance=a:P.granularity=r,P.ellipsoid=s,c){let N=0;for(u=0;u<f-1;u++)N+=S(t[u],t[u+1],b)+1;h=new Float64Array(N*3),g=new Uint8Array(N*4),P.positions=O4,P.height=F4;let L=0;for(u=0;u<f-1;++u){O4[0]=t[u],O4[1]=t[u+1],F4[0]=v[u],F4[1]=v[u+1];let p=B(P);if(l(n)){let x=p.length/3;m=n[u];for(let T=0;T<x;++T)g[L++]=G.floatToByte(m.red),g[L++]=G.floatToByte(m.green),g[L++]=G.floatToByte(m.blue),g[L++]=G.floatToByte(m.alpha)}h.set(p,_),_+=p.length}}else if(P.positions=t,P.height=v,h=new Float64Array(B(P)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let L=t[u],p=t[u+1],x=n[u],T=n[u+1];_=tSt(L,p,x,T,a,g,_)}let N=n[f-1];g[_++]=G.floatToByte(N.red),g[_++]=G.floatToByte(N.green),g[_++]=G.floatToByte(N.blue),g[_++]=G.floatToByte(N.alpha)}}else{A=c?f*2-2:f,h=new Float64Array(A*3),g=l(n)?new Uint8Array(A*4):void 0;let b=0,S=0;for(u=0;u<f;++u){let B=t[u];if(c&&u>0&&(d.pack(B,h,b),b+=3,m=n[u-1],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(B,h,b),b+=3,l(n)&&(m=n[u],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha))}}let y=new En;y.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(y.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),A=h.length/3;let C=(A-1)*2,E=Fe.createTypedArray(A,C),I=0;for(u=0;u<A-1;++u)E[I++]=u,E[I++]=u+1;return new ht({attributes:y,indices:E,primitiveType:Me.LINES,boundingSphere:le.fromPoints(t)})};var wbe=qP;function ES(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new ka(i),this._workerName="createSphereGeometry"}ES.packedLength=ka.packedLength;ES.pack=function(e,t,n){return ka.pack(e._ellipsoidGeometry,t,n)};var iSt=new ka,Xy={radius:void 0,radii:new d,vertexFormat:new Pe,stackPartitions:void 0,slicePartitions:void 0};ES.unpack=function(e,t,n){let i=ka.unpack(e,t,iSt);return Xy.vertexFormat=Pe.clone(i._vertexFormat,Xy.vertexFormat),Xy.stackPartitions=i._stackPartitions,Xy.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,Xy.radii),n._ellipsoidGeometry=new ka(Xy),n):(Xy.radius=i._radii.x,new ES(Xy))};ES.createGeometry=function(e){return ka.createGeometry(e._ellipsoidGeometry)};var Bbe=ES;function Jy(e){}Object.defineProperties(Jy.prototype,{ellipsoid:{get:me.throwInstantiationError},rectangle:{get:me.throwInstantiationError},projection:{get:me.throwInstantiationError}});Jy.prototype.getNumberOfXTilesAtLevel=me.throwInstantiationError;Jy.prototype.getNumberOfYTilesAtLevel=me.throwInstantiationError;Jy.prototype.rectangleToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToRectangle=me.throwInstantiationError;Jy.prototype.positionToTileXY=me.throwInstantiationError;var Dbe=Jy;function oSt(e,t){this.rectangle=e,this.maxLevel=t}function vbe(e){this.ellipsoid=e.ellipsoid??te.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}vbe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function rSt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new co({ellipsoid:e.ellipsoid});else throw new ce(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=D.toRadians(parseFloat(s.getAttribute("minx"))),c=D.toRadians(parseFloat(s.getAttribute("miny"))),u=D.toRadians(parseFloat(s.getAttribute("maxx"))),f=D.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new oSt(new ae(a,c,u,f),h))}}function sSt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function aSt(e,t,n){try{let i=await t.fetchXML();rSt(e,i)}catch(i){sSt(t,i,n)}}function Zy(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(Zy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Zy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=new vbe(t),i=we.createIfNeeded(e);await aSt(n,i);let o=new Zy(t);return n.build(o),o._resource=i,o};Zy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new Qc({buffer:qh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:cSt(a,e,t,n),structure:a._terrainDataStructure})})};Zy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var Pbe=new ae;function cSt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,Pbe);l(h)&&(Q4(o,f,t*2,n*2,i+1)&&(a|=4),Q4(o,f,t*2+1,n*2,i+1)&&(a|=8),Q4(o,f,t*2,n*2+1,i+1)&&(a|=1),Q4(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function Q4(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,Pbe))}Zy.prototype.getTileDataAvailable=function(e,t,n){};Zy.prototype.loadTileDataAvailability=function(e,t,n){};var Rbe=Zy;function D0(e){e=e??V.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??je.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(D0.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(D0.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=lSt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});D0.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};D0.prototype.isDestroyed=function(){return!1};D0.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};D0.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??je.MINIMUM_VALUE,s=K.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?this.tolerance??1:.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function lSt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var Mbe=D0;var uSt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},Nbe=Object.freeze(uSt);function fSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var k4=fSt;function dSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:te.WGS84})}var IS=dSt;var hSt=1953029805,mSt=2917034100;function bZ(e,t){if(bZ.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new ce("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===hSt||o===mSt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}bZ.passThroughDataForTesting=!1;var U4=bZ;function Lbe(e,t){return Pr("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(Lbe,"EMPTY_OBJECT",{get:function(){return Pr("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),V.EMPTY_OBJECT}});var Obe=Lbe;var ASt=new d;function pSt(e,t,n,i){let o=uI(e,t,n,i,ASt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var Fbe=pSt;function gSt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var xS=gSt;function _St(e){switch(e){case ee.FLOAT:return"float";case ee.FLOAT_VEC2:return"vec2";case ee.FLOAT_VEC3:return"vec3";case ee.FLOAT_VEC4:return"vec4";case ee.FLOAT_MAT2:return"mat2";case ee.FLOAT_MAT3:return"mat3";case ee.FLOAT_MAT4:return"mat4";case ee.SAMPLER_2D:return"sampler2D";case ee.BOOL:return"bool"}}var Qbe=_St;function ySt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var G4=ySt;var CSt=new d(1,1,1);function TZ(e){e=e??CSt,this._dimensions=d.clone(e)}Object.defineProperties(TZ.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var ESt=new d;TZ.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,ESt),i=D.randomBetween(-n.x,n.x),o=D.randomBetween(-n.y,n.y),r=D.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var kbe=TZ;function IA(){this.featurePropertiesDirty=!1}Object.defineProperties(IA.prototype,{featuresLength:{get:function(){me.throwInstantiationError()}},pointsLength:{get:function(){me.throwInstantiationError()}},trianglesLength:{get:function(){me.throwInstantiationError()}},geometryByteLength:{get:function(){me.throwInstantiationError()}},texturesByteLength:{get:function(){me.throwInstantiationError()}},batchTableByteLength:{get:function(){me.throwInstantiationError()}},innerContents:{get:function(){me.throwInstantiationError()}},ready:{get:function(){me.throwInstantiationError()}},tileset:{get:function(){me.throwInstantiationError()}},tile:{get:function(){me.throwInstantiationError()}},url:{get:function(){me.throwInstantiationError()}},batchTable:{get:function(){me.throwInstantiationError()}},metadata:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}},group:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}}});IA.prototype.hasProperty=function(e,t){me.throwInstantiationError()};IA.prototype.getFeature=function(e){me.throwInstantiationError()};IA.prototype.applyDebugSettings=function(e,t){me.throwInstantiationError()};IA.prototype.applyStyle=function(e){me.throwInstantiationError()};IA.prototype.update=function(e,t){me.throwInstantiationError()};IA.prototype.pick=function(e,t,n){me.throwInstantiationError()};IA.prototype.isDestroyed=function(){me.throwInstantiationError()};IA.prototype.destroy=function(){me.throwInstantiationError()};var Ube=IA;function bS(e,t){this._conditionsExpression=ze(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,xSt(this,t)}Object.defineProperties(bS.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function ISt(e,t){this.condition=e,this.expression=t}function xSt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new ISt(new Hd(a,t),new Hd(c,t)))}e._runtimeConditions=n}bS.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};bS.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};bS.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u})
|
||
{
|
||
return ${f};
|
||
}
|
||
`}return r=`${i} ${e}
|
||
{
|
||
${r} return ${i}(1.0);
|
||
}
|
||
`,r};bS.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];si(e,o.condition.getVariables()),si(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var z4=bS;function $y(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,bSt(this,e)}function bSt(e,t){t=ze(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??V.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new Hd(o[r],i))}e._meta=n,e._ready=!0}function dr(e,t){let n=(e._style??V.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new Hd(String(t));if(typeof t=="string")return new Hd(t,n);if(l(t.conditions))return new z4(t,n)}else return;return t}function hr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ze(e.conditionsExpression,!0)}else return;return e}Object.defineProperties($y.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=dr(this,e),this._style.show=hr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=dr(this,e),this._style.color=hr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=dr(this,e),this._style.pointSize=hr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=dr(this,e),this._style.pointOutlineColor=hr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=dr(this,e),this._style.pointOutlineWidth=hr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=dr(this,e),this._style.labelColor=hr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=dr(this,e),this._style.labelOutlineColor=hr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=dr(this,e),this._style.labelOutlineWidth=hr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=dr(this,e),this._style.font=hr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=dr(this,e),this._style.labelStyle=hr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=dr(this,e),this._style.labelText=hr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=dr(this,e),this._style.backgroundColor=hr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=dr(this,e),this._style.backgroundPadding=hr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=dr(this,e),this._style.backgroundEnabled=hr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=dr(this,e),this._style.scaleByDistance=hr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=dr(this,e),this._style.translucencyByDistance=hr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=dr(this,e),this._style.distanceDisplayCondition=hr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=dr(this,e),this._style.heightOffset=hr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=dr(this,e),this._style.anchorLineEnabled=hr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=dr(this,e),this._style.anchorLineColor=hr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=dr(this,e),this._style.image=hr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=dr(this,e),this._style.disableDepthTestDistance=hr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=dr(this,e),this._style.horizontalOrigin=hr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=dr(this,e),this._style.verticalOrigin=hr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=dr(this,e),this._style.labelHorizontalOrigin=hr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=dr(this,e),this._style.labelVerticalOrigin=hr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});$y.fromUrl=function(e){return we.createIfNeeded(e).fetchJson(e).then(function(n){return new $y(n)})};$y.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};$y.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};$y.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};$y.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&si(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&si(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&si(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var TS=$y;function KP(e){e=e??V.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new rS({comparator:KP.comparator})}KP.prototype.addSubtree=function(e){let t=new TSt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};KP.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};KP.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function TSt(e,t){this.subtree=e,this.stamp=t}var V4=KP;function XP(e){e=e??V.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=R.IDENTITY.clone(),shapeTransform:f=R.IDENTITY.clone(),minBounds:h,maxBounds:A,minimumValues:g,maximumValues:m,maximumTileCount:_}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=A,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===lc.ELLIPSOID?kh.Z_UP:kh.Y_UP,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=_,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new V4}Object.defineProperties(XP.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});XP.fromUrl=async function(e){let t=we.createIfNeeded(e),n=await t.fetchJson();wSt(n);let i=NSt(n,t);await i.load();let{root:o}=n,r=Ii(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new lb({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=LSt(s,c);Object.assign(u,BSt(o)),l(o.transform)?u.globalTransform=R.unpack(o.transform):u.globalTransform=R.clone(R.IDENTITY),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=SSt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new XP(u),h=new fb(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,Qi.unload(i),f};function SSt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(tx.TILESET_TILE_COUNT)}function wSt(e){let t=e.root;if(!l(t.content))throw new ce("Root must have content");if(!Ii(t.content,"3DTILES_content_voxels"))throw new ce("Root tile content must have 3DTILES_content_voxels extension");if(!Ii(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new ce("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ii(e,"3DTILES_metadata"))throw new ce("Tileset must have a metadata schema")}function BSt(e){let t=e.boundingVolume;if(l(t.box))return RSt(t.box);if(l(t.region))return DSt(t.region);if(Ii(t,"3DTILES_bounding_volume_cylinder"))return MSt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new ce("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function DSt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=R.fromScale(te.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:lc.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a}}var vSt=new d,PSt=new J;function RSt(e){let t=Qn.unpack(e),n=J.getScale(t.halfAxes,vSt),i=J.getRotation(t.halfAxes,PSt);return{shape:lc.BOX,minBounds:d.negate(n,new d),maxBounds:d.clone(n),shapeTransform:R.fromRotationTranslation(i,t.center)}}function MSt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-D.PI,maxAngle:r=D.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],u=.5*i+s[2],f=R.fromTranslationQuaternionRotationScale(d.unpack(s),Le.unpack(a),d.ONE);return{shape:lc.CYLINDER,minBounds:d.fromElements(t,o,c),maxBounds:d.fromElements(n,r,u),shapeTransform:f}}function NSt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Qi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Qi.getSchemaLoader({schema:i})}function LSt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:_,componentType:y}=m,C=o?.properties[g].min,E=o?.properties[g].max,I=gt.getComponentCount(_),b=Gbe(C,I),S=Gbe(E,I);return{id:g,type:_,componentType:y,minValue:b,maxValue:S}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),A=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:A?f:void 0,maximumValues:A?h:void 0}}function Gbe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function OSt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=R_(a);return o=await ex.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}XP.prototype.requestData=async function(e){e=e??V.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await OSt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:_}=s,y=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),C=_.getDerivedResource({url:y.url});return tS.fromGltf(C)};var zbe=XP;function SZ(e){e=e??1,this._radius=e??1}Object.defineProperties(SZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});SZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var H4=SZ;var wZ={CUMULUS:0};wZ.validate=function(e){return e===wZ.CUMULUS};var JP=Object.freeze(wZ);function Vh(e,t){if(e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new k(this._maximumSize.x,this._maximumSize.y);else{this._scale=k.clone(e.scale??new k(20,12));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=G.clone(e.color??G.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var FSt=Vh.SHOW_INDEX=0,QSt=Vh.POSITION_INDEX=1,kSt=Vh.SCALE_INDEX=2,USt=Vh.MAXIMUM_SIZE_INDEX=3,GSt=Vh.SLICE_INDEX=4,zSt=Vh.BRIGHTNESS_INDEX=5,VSt=Vh.COLOR_INDEX=6;Vh.NUMBER_OF_PROPERTIES=7;function v0(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Vh.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,v0(this,FSt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),v0(this,QSt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;k.equals(t,e)||(k.clone(e,t),v0(this,kSt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),v0(this,USt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),v0(this,VSt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,v0(this,GSt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,v0(this,zSt))}}});Vh.prototype._destroy=function(){this._cloudCollection=void 0};var Td=Vh;var lf,W4=new d,HSt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},WSt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},jSt=Td.SHOW_INDEX,YSt=Td.POSITION_INDEX,qSt=Td.SCALE_INDEX,KSt=Td.MAXIMUM_SIZE_INDEX,XSt=Td.SLICE_INDEX,JSt=Td.BRIGHTNESS_INDEX,ZSt=Td.NUMBER_OF_PROPERTIES,$St=Td.COLOR_INDEX;function Hh(e){e=e??V.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(ZSt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=d.clone(e.noiseOffset??d.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:Vbe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function Vbe(e){return function(){return W4.x=e._textureSliceWidth,W4.y=e._noiseTextureRows,W4.z=1/e._noiseTextureRows,W4}}Object.defineProperties(Hh.prototype,{length:{get:function(){return DZ(this),this._clouds.length}}});function Hbe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Hh.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let t=e.cloudType??JP.CUMULUS,n;return t===JP.CUMULUS&&(n=new Td(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};Hh.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Hh.prototype.removeAll=function(){Hbe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function DZ(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}Hh.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};Hh.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};Hh.prototype.get=function(e){return DZ(this),this._clouds[e]};var ewt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),twt=new Uint16Array([0,1,2,0,2,3]);function nwt(e){let t=Et.createVertexBuffer({context:e,typedArray:ewt,usage:Qe.STATIC_DRAW}),n=Et.createIndexBuffer({context:e,typedArray:twt,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:q.FLOAT}];return new li({context:e,attributes:i,indexBuffer:n})}var vZ;function iwt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function owt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function rwt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function swt(e,t,n){let i=[{index:lf.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.color,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,usage:Qe.STATIC_DRAW}];n&&i.push({index:lf.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:rwt(e)});let o=n?t:4*t;return new S_(e,i,o,n)}var BZ=new ei;function Wbe(e,t,n,i){let o,r=n[lf.positionHighAndScaleX],s=n[lf.positionLowAndScaleY],a=i.position;ei.fromCartesian(a,BZ);let c=i.scale,u=BZ.high,f=BZ.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function jbe(e,t,n,i){let o,r=n[lf.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function Ybe(e,t,n,i){let o,r=n[lf.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function qbe(e,t,n,i){let o,r=n[lf.color],s=i.color,a=G.floatToByte(s.red),c=G.floatToByte(s.green),u=G.floatToByte(s.blue),f=G.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function awt(e,t,n,i){Wbe(e,t,n,i),jbe(e,t,n,i),Ybe(e,t,n,i),qbe(e,t,n,i)}function cwt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=nwt(a),o._spNoise=ln.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Nt({context:a,width:r*r/s,height:r*s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA,sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})});let f=new Hl({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:Vbe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function lwt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=swt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];awt(e,t,s,c)}n._vaf.commit(vZ(i))}}var uwt=[];function fwt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=uwt;u.length=0,(c[YSt]||c[qSt])&&u.push(Wbe),(c[jSt]||c[JSt])&&u.push(jbe),(c[KSt]||c[XSt])&&u.push(Ybe),c[$St]&&u.push(qbe);let f=u.length,h=i._vaf.writers,A,g,m;if(a/r>.1){for(A=0;A<a;++A)for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(vZ(n))}else{for(A=0;A<a;++A){for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function dwt(e,t,n,i){let o=t.context,r=e,s=new We({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new We({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=ln.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:lf}),r._rs=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!1,blending:pn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function hwt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new nt),f.pass=Be.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}Hh.prototype.update=function(e){if(DZ(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&cwt(this,e,lz,cz),this._instanced=e.context.instancedArrays,lf=this._instanced?WSt:HSt,vZ=this._instanced?owt:iwt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?lwt(this,e):r>0&&fwt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&dwt(this,e,az,sz),hwt(this,e))};Hh.prototype.isDestroyed=function(){return!1};Hh.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Hbe(this._clouds),ue(this)};var Kbe=Hh;var mwt=D.toRadians(30);function PZ(e){this._angle=e??mwt}Object.defineProperties(PZ.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});PZ.prototype.emit=function(e){let t=Math.tan(this._angle),n=D.randomBetween(0,D.TWO_PI),i=D.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var Xbe=PZ;function ZP(e){e=e??V.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); }
|
||
`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); }
|
||
`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); }
|
||
`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); }
|
||
`;break;case"vec4":r=`vec4 getColor() { return ${o}; }
|
||
`;break}let s=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in float batchId;
|
||
${n?"":`in ${i} ${t};
|
||
`}out ${i} ${o};
|
||
void main()
|
||
{
|
||
vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow);
|
||
${n?`${o} = czm_batchTable_${t}(batchId);
|
||
`:`${o} = ${t};
|
||
`}gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}`,a=`in ${i} ${o};
|
||
${r}
|
||
void main()
|
||
{
|
||
out_FragColor = getColor();
|
||
}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=go.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(ZP.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});ZP.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;ZP.prototype.isTranslucent=go.prototype.isTranslucent;ZP.prototype.getRenderState=go.prototype.getRenderState;var Jbe=ZP;function j4(e){e=e??V.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.id=e.id,this._id=void 0,this._primitive=void 0}j4.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!R.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=R.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.RED,G.RED],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),n=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.GREEN,G.GREEN],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),i=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.BLUE,G.BLUE],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this});this._primitive=new kn({geometryInstances:[t,n,i],appearance:new bs,asynchronous:!1})}this._primitive.update(e)}};j4.prototype.isDestroyed=function(){return!1};j4.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Y4=j4;function Awt(e){this.direction=d.clone(e.direction),this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??1}var Zbe=Awt;var q4=`in vec3 v_positionMC;
|
||
in vec3 v_positionEC;
|
||
in vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
czm_materialInput materialInput;
|
||
|
||
vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));
|
||
#ifdef FACE_FORWARD
|
||
normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);
|
||
#endif
|
||
|
||
materialInput.s = v_st.s;
|
||
materialInput.st = v_st;
|
||
materialInput.str = vec3(v_st, 0.0);
|
||
|
||
// Convert tangent space material normal to eye space
|
||
materialInput.normalEC = normalEC;
|
||
materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);
|
||
|
||
// Convert view vector to world space
|
||
vec3 positionToEyeEC = -v_positionEC;
|
||
materialInput.positionToEyeEC = positionToEyeEC;
|
||
|
||
czm_material material = czm_getMaterial(materialInput);
|
||
|
||
#ifdef FLAT
|
||
out_FragColor = vec4(material.diffuse + material.emission, material.alpha);
|
||
#else
|
||
out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC);
|
||
#endif
|
||
}
|
||
`;var K4=`in vec3 position3DHigh;
|
||
in vec3 position3DLow;
|
||
in vec2 st;
|
||
in float batchId;
|
||
|
||
out vec3 v_positionMC;
|
||
out vec3 v_positionEC;
|
||
out vec2 v_st;
|
||
|
||
void main()
|
||
{
|
||
vec4 p = czm_computePosition();
|
||
|
||
v_positionMC = position3DHigh + position3DLow; // position in model coordinates
|
||
v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates
|
||
v_st = st;
|
||
|
||
gl_Position = czm_modelViewProjectionRelativeToEye * p;
|
||
}
|
||
`;function P0(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??K4,this._fragmentShaderSource=e.fragmentShaderSource??q4,this._renderState=go.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(P0.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return P0.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});P0.VERTEX_FORMAT=Pe.POSITION_AND_ST;P0.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;P0.prototype.isTranslucent=go.prototype.isTranslucent;P0.prototype.getRenderState=go.prototype.getRenderState;var $be=P0;function hu(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??hu.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??hu.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??hu.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??hu.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??hu.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new _e,this._nominalFrameRate=new _e,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){pwt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){gwt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}hu.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};hu.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new hu({scene:e})),e._frameRateMonitor};Object.defineProperties(hu.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});hu.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};hu.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};hu.prototype.isDestroyed=function(){return!1};hu.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function pwt(e,t){if(e._pauseCount>0)return;let n=Oi();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ri.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ri.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ri.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function gwt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var X4=hu;var eTe=Es(hZ(),1);function RZ(){this._image=new Image}RZ.prototype.isReady=function(){return!0};RZ.prototype.shouldDiscardImage=function(e){return e===this._image};function R0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new RZ),this._errorEvent=new _e}Object.defineProperties(R0.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});R0.fromMetadata=function(e,t){if(!e.imageryPresent)throw new ce(`The server ${e.url} doesn't have imagery`);let n=new R0(t);return n._metadata=e,n};R0.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};R0.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=Yy.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new pr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=_wt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){U4(r.key,u);let f=new Uint8Array(u),h,A=r.protoImagery;if((!l(A)||!A)&&(h=ywt(f)),!l(h)&&(!l(A)||A)){let g=Cwt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:YI({uint8Array:f,format:h,flipY:!0})})};R0.prototype.pickFeatures=function(e,t,n,i,o){};function _wt(e,t,n,i,o,r){let s=Yy.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function ywt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function Cwt(e){let t=eTe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new ce("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var tTe=R0;var Ewt=new G(1,1,1,.4),Iwt=new G(0,1,0,.05),xwt=new G(0,.5,0,.2);function M0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??Ewt,this._glowColor=e.glowColor??Iwt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??xwt,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(M0.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});M0.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};M0.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};M0.prototype.getTileCredits=function(e,t,n){};M0.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};M0.prototype.pickFeatures=function(e,t,n,i,o){};var nTe=M0;function Wh(){}Wh._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Wh._decodeTaskProcessor=new mi("decodeI3S",Wh._maxDecodingConcurrency);Wh._promise=void 0;async function bwt(){if(await Wh._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return Wh._decodeTaskProcessor;throw new ce("I3S decoder could not be initialized.")}Wh.decode=async function(e,t,n,i,o){return l(Wh._promise)||(Wh._promise=bwt()),Wh._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=J.fromRotationX(-D.PI_OVER_TWO),A=new J;J.multiply(h,a,A);let g=Ae.fromDegrees(c,u,f),m=te.WGS84.cartographicToCartesian(g),_={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:te.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:A,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(_)})};var J4=Wh;function MZ(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(MZ.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});MZ.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};var Z4=MZ;function ag(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(ag.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function $4(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function Twt(e){return e==="String"?1:$4(e)}async function Swt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}ag.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=Swt(this).catch(function(e){console.error(e)}),this._loadPromise)};ag.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};ag.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};ag.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};ag.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=$4(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=$4(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};ag.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=Twt(i.valueType)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};ag.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new ce(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=$4(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new ce(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new ce(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var eH=ag;function $P(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties($P.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});$P.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var wwt=new d,Bwt=new d,Dwt=new d,vwt=new d,Pwt=new d;function NZ(e,t,n,i){let o=d.subtract(i,n,wwt),r=d.cross(o,d.subtract(e,n,Bwt),vwt),s=d.cross(o,d.subtract(t,n,Dwt),Pwt);return d.dot(r,s)>=0}var Rwt=new d,Mwt=new d,Nwt=new d,Lwt=new d,Owt=new d,Fwt=new d,Qwt=new d,kwt=new d,Uwt=new d,Gwt=new d;$P.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,J.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let A=0;A<h;A++){let g,m,_;l(f)?(g=f[A],m=f[A+1],_=f[A+2]):(g=A*3,m=A*3+1,_=A*3+2);let y=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],Rwt),C=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],Mwt),E=new d(u[_*3],u[_*3+1],u[_*3+2],Nwt);if(!NZ(i,y,C,E)||!NZ(i,C,y,E)||!NZ(i,E,y,C))continue;let I=d.subtract(C,y,Lwt),b=d.subtract(E,y,Owt),S=d.cross(I,b,Fwt);if(d.magnitude(S)===0)continue;let B=d.normalize(S,Qwt),v=d.subtract(i,y,kwt),P=Math.abs(d.dot(v,B));if(P<o){o=P,r=A;let N=d.magnitudeSquared(d.subtract(i,y,v)),L=d.magnitudeSquared(d.subtract(i,C,Uwt)),p=d.magnitudeSquared(d.subtract(i,E,Gwt));N<L&&N<p?(a=g,c=y,s=N):L<p?(a=m,c=C,s=L):(a=_,c=E,s=p)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function iTe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(xS(e[i])):t.push(e[i]);return t}$P.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let I=this._parent._data.mesh.material.definition;if(I>=0&&I<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[I],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let b="0";if(l(this._layer._data.textureSetDefinitions))for(let S=0;S<this._layer._data.textureSetDefinitions.length;S++){let B=this._layer._data.textureSetDefinitions[S];for(let v=0;v<B.formats.length;v++){let P=B.formats[v];if(P.format==="jpg"){b=P.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${b}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=iTe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=iTe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let A=[],g=[],m=[];u&&(A=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let _=[],y=n.length;for(let E=0;E<y;E++){let I=n[E].primitives,b=I.length;for(let S=0;S<b;S++){let B=I[S];if(l(B.material)){for(;B.material>=_.length;){let P=ze(c,!0);_.push(P)}let v=_[B.material];l(B.extra)&&B.extra.isTransparent?l(v.alphaMode)||(v.alphaMode="BLEND"):v.alphaMode==="BLEND"&&(v.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:_,textures:A,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var eR=$P;function Vc(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(Vc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});Vc.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new ah(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await xA.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function oTe(e,t){let n=new eH(e,t);return e._fields[t.name]=n,n.load()}Vc.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(oTe(this,i))}return Promise.all(t)};Vc.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return oTe(this,o)}return Promise.resolve()};Vc.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};Vc.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};Vc.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new Vc(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};Vc.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new eR(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new eR(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};Vc.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new Z4(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};Vc.prototype._clearGeometryData=function(){this._geometryData=[]};Vc.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=Ae.fromDegrees(e.center[0],e.center[1],e.center[2]):n=Ae.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let C=0;C<this._dataProvider._geoidDataList.length;C++){let E=this._dataProvider._geoidDataList[C],I=E.projection.project(n);if(I.x>E.nativeExtent.west&&I.x<E.nativeExtent.east&&I.y>E.nativeExtent.south&&I.y<E.nativeExtent.north){n.height+=Wwt(I.x,I.y,E);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=te.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=te.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let C=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/C}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let C=this._data.lodThreshold;s=r/C}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let C=0;C<this._data.lodSelection.length;C++)this._data.lodSelection[C].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[C].maxError);s===1/0&&(s=1e5);let a=s*16,c=new pc(0,0,0),u=kt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=J.fromQuaternion(u),h=J.inverse(f,new J),A=new R(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=R.inverse(A,new R),m=R.clone(A);l(this._parent._globalTransform)&&R.multiply(A,this._parent._inverseGlobalTransform,m),this._globalTransform=A,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let _=[];for(let C=0;C<this._children.length;C++)_.push(this._children[C]._create3DTileDefinition());return{children:_,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};Vc.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};Vc.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await J4.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function zwt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function Vwt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function rTe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await zwt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!Vwt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}Vc.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=rTe(this,t);e.push(n)}return Promise.all(e)};ah.prototype._hookedRequestContent=ah.prototype.requestContent;ah.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new we({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{rTe(e._i3sNode,n)})),e._isLoading=!1,t})}};function Hwt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function tH(e,t,n,i){let o=e+t*n;return i[o]}function Wwt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=tH(s,a,n.width,n.buffer),h=tH(c,a,n.width,n.buffer),A=tH(s,u,n.width,n.buffer),g=tH(c,u,n.width,n.buffer),m=Hwt(o,r,f,h,A,g);return m=m*n.scale+n.offset,m}Object.defineProperties(ah.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var tR=Vc;function nH(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(nH.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function LZ(e,t){let n=[];for(let i=0;i<e.length;i++){let o=G.byteToFloat(e[i]);i<3?n.push(xS(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function SS(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=LZ(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=LZ(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=LZ(a.color,a.transparency)))}break}}return n}function jwt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=SS(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let A=u[h];h===u.length-1?f[A]=s:(l(f[A])||(f[A]={}),f=f[A])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=SS(o.symbol,t)}return n}}function Ywt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(SS(r.symbol,t)))}return i.symbols.push(void 0),i}}nH.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=SS(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=jwt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=Ywt(i,n))}};function sTe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?sTe(s,t,n,i):s}}function qwt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function Kwt(e,t,n){let i=t[n],o=qwt(e.ranges,i);return e.symbols[o]}nH.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>sTe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>Kwt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var iH=nH;function mu(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new we({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(mu.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});mu.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new ce(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new iH(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};mu.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};mu.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};mu.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new tR(this,t,!0)}else this._rootNode=new tR(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};mu.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};mu._fetchJson=function(e){return e.fetchJson()};mu.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=mu._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};mu.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};mu.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ze(e):{},e.outlineColor=G.fromCartesian4(se.fromArray(o))),this._tileset=await qs.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};mu.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};mu.prototype.filterByAttributes=function(e){this._filters=l(e)?ze(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var wS=mu;function oH(e,t){this._dataProvider=e,this._resource=new we({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(oH.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});oH.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};oH.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var rH=oH;function nR(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(nR.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});nR._fromData=async function(e,t,n,i){let o=new nR(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=nR._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new we({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await xA.loadJson(o._resource),c=new wS(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var sH=nR;var lTe=Es(aTe(),1);function Os(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??V.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Os.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Os.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};Os.prototype.isDestroyed=function(){return!1};Os.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Os.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Os.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Os.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function Xwt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function cTe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=Xwt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=sH._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new rH(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new wS(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Os.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Os.loadJson(n),o=new Os(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=cTe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await cTe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Os._fetchJson=function(e){return e.fetchJson()};Os.loadJson=async function(e){let t=await Os._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new ce(t.error)}return t};Os.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new ce(`Failed to load binary: ${e.url}`);return t};Os.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Jwt=new k;function Zwt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=Ae.fromRadians(t.west,t.north),a=Ae.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let A=c.y;A<=u.y;A++){let g=k.fromElements(h,A,Jwt),m=g.toString();if(!o.hasOwnProperty(m)){let _={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=_,i.push(_)}}let f=[];for(let h=0;h<i.length;++h){let A=i[h],g=A.terrainProvider.requestTileGeometry(A.x,A.y,A.level);f.push(g)}return Promise.all(f).then(function(h){let A=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},_=h[g],y="Geographic";n._projection instanceof Yi&&(y="WebMercator");let C={projectionType:y,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:_._height,width:_._width,scale:_._structure.heightScale,offset:_._structure.heightOffset};if(_._encoding===vh.LERC){let E=lTe.default.decode(_._buffer);C.buffer=E.pixels[0]}else C.buffer=_._buffer;A.push(C)}return A})}async function $wt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await Zwt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Os.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=$wt(this),this._geoidDataPromise)};Os.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};Os.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Os.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Os.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var xA=Os;var iR={};iR.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await _a.getExports(n,i);if(r.length>0&&r.every(f=>f.status===_a.ExportStatus.Invalid))throw new ce(`All exports for this iModel are Invalid: ${n}`);let s=r.find(f=>f.status===_a.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),u=new we({url:c});return qs.fromUrl(u,o)};iR.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.Cesium3DTiles,_a.RealityDataType.PNTS,_a.RealityDataType.RealityMesh3DTiles,_a.RealityDataType.Terrain3DTiles].includes(o))throw new ce(`Reality data type is not a mesh type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return qs.fromUrl(a,{maximumScreenSpaceError:4})};iR.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.KML,_a.RealityDataType.GeoJSON].includes(o))throw new ce(`Reality data type is not a data source type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return o===_a.RealityDataType.GeoJSON?kE.load(a):ST.load(a)};iR.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${_a.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new we({url:s,headers:{Authorization:_a._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return kE.load(a)};var uTe=iR;function fTe(){}Object.defineProperties(fTe.prototype,{color:{get:me.throwInstantiationError},intensity:{get:me.throwInstantiationError}});var dTe=fTe;var eBt=/\/$/,hTe=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function BS(e){e=e??V.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();eBt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Dt(c))):c=hTe,this._resource=i,this._imageryProvider=new vc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(BS.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});BS.prototype.getTileCredits=function(e,t,n){};BS.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};BS.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};BS._defaultCredit=hTe;var mTe=BS;function OZ(e){}OZ.prototype.isReady=function(){return!0};OZ.prototype.shouldDiscardImage=function(e){return!1};var ATe=OZ;var tBt=new Dt("MapQuest, Open Street Map and contributors, CC-BY-SA");function cH(e){e=e??V.EMPTY_OBJECT;let t=we.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new ws({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=e.credit??tBt;typeof h=="string"&&(h=new Dt(h)),vc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(cH.prototype=Object.create(vc.prototype),cH.prototype.constructor=cH);var eC=cH;var nBt=new k(1,1);function FZ(e){e=e??V.EMPTY_OBJECT,this.mass=e.mass??1,this.position=d.clone(e.position??d.ZERO),this.velocity=d.clone(e.velocity??d.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=G.clone(e.startColor??G.WHITE),this.endColor=G.clone(e.endColor??G.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=k.clone(e.imageSize??nBt),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(FZ.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var pTe=new d;FZ.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,pTe),d.add(this.position,pTe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var oR=FZ;function gTe(e){e=e??V.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(gTe.prototype,{complete:{get:function(){return this._complete}}});var _Te=gTe;function yTe(e){}yTe.prototype.emit=function(e){me.throwInstantiationError()};var CTe=yTe;var ETe=new k(1,1);function rR(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new H4(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._emitterModelMatrix=R.clone(e.emitterModelMatrix??R.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new R,this._startColor=G.clone(e.color??e.startColor??G.WHITE),this._endColor=G.clone(e.color??e.endColor??G.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=k.clone(e.imageSize??e.minimumImageSize??ETe),this._maximumImageSize=k.clone(e.imageSize??e.maximumImageSize??ETe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new _e,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(rR.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._modelMatrix,e),R.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._emitterModelMatrix,e),R.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){G.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){G.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function iBt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let A=0;A<h;++A)i+=o[A].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let A=new oR;A._billboard=r.add({image:s,show:!1}),u.push(A)}e._particleEstimate=a}function oBt(e){let t=e._particlePool.pop();return l(t)||(t=new oR),t}function rBt(e,t){e._particlePool.push(t)}function sBt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function aBt(e){l(e._billboard)&&(e._billboard.show=!1)}function ITe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=D.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=D.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=D.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=D.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new G(i,o,r,s),n.scale=D.lerp(t.startScale,t.endScale,t.normalizedAge)}function cBt(e,t){t.startColor=G.clone(e._startColor,t.startColor),t.endColor=G.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=D.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=D.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=D.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=D.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=D.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function lBt(e,t){if(e._isComplete)return 0;t=D.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=D.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var lH=new d;rR.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new jf),this._updateParticlePool&&(iBt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=K.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?ITe(this,s):(aBt(s),rBt(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=lBt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=R.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=oBt(this),this._emitter.emit(s),d.add(s.position,s.velocity,lH),R.multiplyByPoint(u,lH,lH),s.position=R.multiplyByPoint(u,s.position,s.position),d.subtract(lH,s.position,s.velocity),d.normalize(s.velocity,s.velocity),cBt(this,s),ITe(this,s)}if(this._billboardCollection.update(e),this._previousTime=K.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=D.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&sBt(this)};rR.prototype.isDestroyed=function(){return!1};rR.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var xTe=rR;function uf(){me.throwInstantiationError()}uf.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(uf.prototype,{quadtree:{get:me.throwInstantiationError,set:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError}});uf.prototype.update=me.throwInstantiationError;uf.prototype.beginUpdate=me.throwInstantiationError;uf.prototype.endUpdate=me.throwInstantiationError;uf.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;uf.prototype.loadTile=me.throwInstantiationError;uf.prototype.computeTileVisibility=me.throwInstantiationError;uf.prototype.showTileThisFrame=me.throwInstantiationError;uf.prototype.computeDistanceToTile=me.throwInstantiationError;uf.prototype.isDestroyed=me.throwInstantiationError;uf.prototype.destroy=me.throwInstantiationError;var bTe=uf;function QZ(e){e=e??1,this._radius=e??1}Object.defineProperties(QZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});QZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,D.PI),i=D.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var TTe=QZ;function sR(){}sR.prototype.evaluate=function(e,t){me.throwInstantiationError()};sR.prototype.evaluateColor=function(e,t){me.throwInstantiationError()};sR.prototype.getShaderFunction=function(e,t,n,i){me.throwInstantiationError()};sR.prototype.getVariables=function(){me.throwInstantiationError()};var STe=sR;function DS(e){this._ready=!1,this._provider=void 0,this._errorEvent=new _e,this._readyEvent=new _e,fBt(this,e)}Object.defineProperties(DS.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});DS.fromWorldTerrain=function(e){return new DS(IS(e))};DS.fromWorldBathymetry=function(e){return new DS(k4(e))};function uBt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function fBt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){uBt(e._errorEvent,i)}}var uH=DS;function vS(){}vS.prototype.boundingVolume=void 0;vS.prototype.boundingSphere=void 0;vS.prototype.distanceToCamera=function(e){me.throwInstantiationError()};vS.prototype.intersectPlane=function(e){me.throwInstantiationError()};vS.prototype.createDebugVolume=function(e){me.throwInstantiationError()};var wTe=vS;function aR(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._color=e.color??G.YELLOW,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(aR.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});aR.prototype.getTileCredits=function(e,t,n){};aR.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};aR.prototype.pickFeatures=function(e,t,n,i,o){};var fH=aR;function kZ(e){me.throwInstantiationError()}kZ.prototype.isReady=me.throwInstantiationError;kZ.prototype.shouldDiscardImage=me.throwInstantiationError;var BTe=kZ;var dBt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},DTe=Object.freeze(dBt);function dH(e,t){this.show=!0,l(e)||(e=new Xe),this.rectangle=Xe.clone(e),l(t)||(t=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}dH.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Xe.equals(t.viewport,this.rectangle))&&(this._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new We({sources:[this._material.shaderSource,bz]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Be.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};dH.prototype.isDestroyed=function(){return!1};dH.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var vTe=dH;function UZ(){me.throwInstantiationError()}Object.defineProperties(UZ.prototype,{globalTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shape:{get:me.throwInstantiationError},minBounds:{get:me.throwInstantiationError},maxBounds:{get:me.throwInstantiationError},dimensions:{get:me.throwInstantiationError},paddingBefore:{get:me.throwInstantiationError},paddingAfter:{get:me.throwInstantiationError},names:{get:me.throwInstantiationError},types:{get:me.throwInstantiationError},componentTypes:{get:me.throwInstantiationError},minimumValues:{get:me.throwInstantiationError},maximumValues:{get:me.throwInstantiationError},maximumTileCount:{get:me.throwInstantiationError},availableLevels:{get:me.throwInstantiationError},keyframeCount:{get:me.throwInstantiationError},timeIntervalCollection:{get:me.throwInstantiationError}});UZ.prototype.requestData=function(e){me.throwInstantiationError()};var PTe=UZ;function N0(){me.throwInstantiationError()}Object.defineProperties(N0.prototype,{orientedBoundingBox:{get:me.throwInstantiationError},boundingSphere:{get:me.throwInstantiationError},boundTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shaderUniforms:{get:me.throwInstantiationError},shaderDefines:{get:me.throwInstantiationError},shaderMaximumIntersectionsLength:{get:me.throwInstantiationError}});N0.prototype.update=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForTile=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForSample=me.throwInstantiationError;N0.DefaultMinBounds=me.throwInstantiationError;N0.DefaultMaxBounds=me.throwInstantiationError;var RTe=N0;var hBt=new G,mBt=new G,ABt=new G,pBt=new G,MTe=new se,cR=new Uint8Array(4);function NTe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return G.lerp(t.color,n.color,o,i)}function hH(e,t){return{height:e,color:G.clone(t)}}function LTe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?G.equals(t.color,i[n-1].color):!1,a=r?G.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?G.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function gBt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=D.clamp(g.height,Au._minimumHeight,Au._maximumHeight),_=G.clone(g.color,hBt);_.red*=_.alpha,_.green*=_.alpha,_.blue*=_.alpha,c.push(hH(m,_))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||qp(c,function(g,m){return D.sign(g.height-m.height)});let h=r.extendDownwards??!1,A=r.extendUpwards??!1;c.length===1&&!h&&!A&&(h=!0,A=!0),h&&c.splice(0,0,hH(Au._minimumHeight,c[0].color)),A&&c.splice(c.length,0,hH(Au._maximumHeight,c[c.length-1].color)),c=LTe(c),i.push(c)}return i}function _Bt(e){let t=gBt(e),n=[],i=[],o;function r(u,f){n.push(hH(u,f))}function s(u,f,h){let A=G.multiplyByScalar(h,1-f.alpha,pBt);A=G.add(A,f,A),r(u,A)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let A=u.length,g=i.length;for(;f<A||h<g;){let m=f<A?u[f]:void 0,_=f>0?u[f-1]:void 0,y=f<A-1?u[f+1]:void 0,C=h<g?i[h]:void 0,E=h>0?i[h-1]:void 0,I=h<g-1?i[h+1]:void 0;if(l(m)&&l(C)&&m.height===C.height){let b=l(I)&&C.height===I.height,S=!l(E),B=!l(I),v=l(y)&&m.height===y.height,P=!l(_),N=!l(y);b?v?(s(m.height,m.color,C.color),s(m.height,y.color,I.color)):P?(r(m.height,C.color),s(m.height,m.color,I.color)):N?(s(m.height,m.color,C.color),r(m.height,I.color)):(s(m.height,m.color,C.color),s(m.height,m.color,I.color)):S?v?(r(m.height,m.color),s(m.height,y.color,C.color)):N?(r(m.height,m.color),r(m.height,C.color)):(P||r(m.height,m.color),s(m.height,m.color,C.color)):B?v?(s(m.height,m.color,C.color),r(m.height,y.color)):P?(r(m.height,C.color),r(m.height,m.color)):N?s(m.height,m.color,C.color):(s(m.height,m.color,C.color),r(m.height,m.color)):v?(s(m.height,m.color,C.color),s(m.height,y.color,C.color)):P?(r(m.height,C.color),s(m.height,m.color,C.color)):N?(s(m.height,m.color,C.color),r(m.height,C.color)):s(m.height,m.color,C.color),f+=v?2:1,h+=b?2:1}else if(l(m)&&l(C)&&l(E)&&m.height<C.height){let b=NTe(m.height,E,C,ABt);l(_)?l(y)?s(m.height,m.color,b):(s(m.height,m.color,b),r(m.height,b)):(r(m.height,b),s(m.height,m.color,b)),f++}else if(l(C)&&l(m)&&l(_)&&C.height<m.height){let b=NTe(C.height,_,m,mBt);l(E)?l(I)?s(C.height,b,C.color):(s(C.height,b,C.color),r(C.height,b)):(r(C.height,b),s(C.height,b,C.color)),h++}else l(m)&&(!l(C)||m.height<C.height)?(l(C)&&!l(E)&&!l(y)?(r(m.height,m.color),r(m.height,Au._emptyColor),r(C.height,Au._emptyColor)):(!l(C)&&l(E)&&!l(_)&&(r(E.height,Au._emptyColor),r(m.height,Au._emptyColor)),r(m.height,m.color)),f++):l(C)&&(!l(m)||C.height<m.height)&&(r(C.height,C.color),h++)}}return LTe(n)}function Au(e){let{scene:t,layers:n}=e??V.EMPTY_OBJECT,{context:i}=t,o=_Bt(n),r=o.length,s,a,c;if(!Au._useFloatTexture(i)){a=He.UNSIGNED_BYTE,c=et.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)se.packFloat(o[g].height,MTe),se.pack(MTe,s,g*4)}else{a=He.FLOAT,c=i.webgl2?et.RED:et.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Nt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(cR),h[g*4+0]=cR[0],h[g*4+1]=cR[1],h[g*4+2]=cR[2],h[g*4+3]=cR[3];let A=Nt.create({context:i,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});return ao.fromType("ElevationBand",{heights:f,colors:A})}Au._useFloatTexture=function(e){return e.floatingPointTexture};Au._maximumHeight=5906376425472;Au._minimumHeight=-5906376425472;Au._emptyColor=new G(0,0,0,0);var OTe=Au;async function yBt(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??V.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||yt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??_S.defaultApiKey;if(!l(n))return CBt(t);let i,o=_S.getDefaultCredit();l(o)&&(i=[o]);let r=new we({url:`${_S.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return qs.fromUrl(r,t)}var FTe={};async function CBt(e){let i=FTe[2275207];l(i)||(i=wf.fromAssetId(2275207),FTe[2275207]=i);let o=await i;return qs.fromUrl(o,e)}var QTe=yBt;async function EBt(e){let t=await qs.fromIonAssetId(96188,e);e=e??V.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??G.WHITE).toCssColorString();n=new TS({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var kTe=EBt;function IBt(e){e=e??V.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=R.clone(e.modelMatrix??R.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new en(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new en(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new en(0,0,1,1)},modelMatrix:o})),t.length>0)return new kn({asynchronous:!1,geometryInstances:t,appearance:new gn({flat:!0,translucent:!1})})}var UTe=IBt;var GTe=`uniform sampler2D u_depthTexture;
|
||
|
||
in vec2 v_textureCoordinates;
|
||
|
||
void main()
|
||
{
|
||
float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates));
|
||
z_window = czm_reverseLogDepth(z_window);
|
||
float n_range = czm_depthRange.near;
|
||
float f_range = czm_depthRange.far;
|
||
float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range);
|
||
float scale = pow(z_ndc * 0.5 + 0.5, 8.0);
|
||
out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0);
|
||
}
|
||
`;function xBt(e){e=e??V.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??et.RGBA,this.pixelDatatype=e.pixelDatatype??He.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=we.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Tn.REPEAT:Tn.CLAMP_TO_EDGE;this.sampler=new on({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var zTe=xBt;var bBt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},VTe=Object.freeze(bBt);var TBt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},HTe=Object.freeze(TBt);function SBt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${up(s)}
|
||
with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var WTe=SBt;globalThis.CESIUM_VERSION="1.132";var lR;typeof ko<"u"&&(lR=ko);(function(){/*!
|
||
* Knockout JavaScript library v3.5.1
|
||
* (c) The Knockout.js team - http://knockoutjs.com/
|
||
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
||
*/(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(p,x){return p===null||typeof p in _?p===x:!1}function u(p,x){var T;return function(){T||(T=m.a.setTimeout(function(){T=e,p()},x))}}function f(p,x){var T;return function(){clearTimeout(T),T=m.a.setTimeout(p,x)}}function h(p,x){x&&x!=="change"?x==="beforeChange"?this.pc(p):this.gb(p,x):this.qc(p)}function A(p,x){x!==null&&x.s&&x.s()}function g(p,x){var T=this.qd,w=T[b];w.ra||(this.Qb&&this.mb[x]?(T.uc(x,p,this.mb[x]),this.mb[x]=null,--this.Qb):w.I[x]||T.uc(x,p,w.J?{da:p}:T.$c(p)),p.Ja&&p.gd())}var m=typeof s<"u"?s:{};m.b=function(p,x){for(var T=p.split("."),w=m,M=0;M<T.length-1;M++)w=w[T[M]];w[T[T.length-1]]=x},m.L=function(p,x,T){p[x]=T},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function p(Y,$){for(var X in Y)M.call(Y,X)&&$(X,Y[X])}function x(Y,$){if($)for(var X in $)M.call($,X)&&(Y[X]=$[X]);return Y}function T(Y,$){return Y.__proto__=$,Y}function w(Y,$,X,he){var ge=Y[$].match(W)||[];m.a.D(X.match(W),function(fe){m.a.Na(ge,fe,he)}),Y[$]=ge.join(" ")}var M=Object.prototype.hasOwnProperty,O={__proto__:[]}instanceof Array,U=typeof Symbol=="function",Q={},z={};Q[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],Q.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),p(Q,function(Y,$){if($.length)for(var X=0,he=$.length;X<he;X++)z[$[X]]=Y});var F={propertychange:!0},H=n&&function(){for(var Y=3,$=n.createElement("div"),X=$.getElementsByTagName("i");$.innerHTML="<!--[if gt IE "+ ++Y+"]><i></i><![endif]-->",X[0];);return 4<Y?Y:e}(),W=/\S+/g,Z;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)$.call(X,Y[he],he,Y)},A:typeof Array.prototype.indexOf=="function"?function(Y,$){return Array.prototype.indexOf.call(Y,$)}:function(Y,$){for(var X=0,he=Y.length;X<he;X++)if(Y[X]===$)return X;return-1},Lb:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)if($.call(X,Y[he],he,Y))return Y[he];return e},Pa:function(Y,$){var X=m.a.A(Y,$);0<X?Y.splice(X,1):X===0&&Y.shift()},wc:function(Y){var $=[];return Y&&m.a.D(Y,function(X){0>m.a.A($,X)&&$.push(X)}),$},Mb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)he.push($.call(X,Y[ge],ge));return he},jb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)$.call(X,Y[ge],ge)&&he.push(Y[ge]);return he},Nb:function(Y,$){if($ instanceof Array)Y.push.apply(Y,$);else for(var X=0,he=$.length;X<he;X++)Y.push($[X]);return Y},Na:function(Y,$,X){var he=m.a.A(m.a.bc(Y),$);0>he?X&&Y.push($):X||Y.splice(he,1)},Ba:O,extend:x,setPrototypeOf:T,Ab:O?T:x,P:p,Ga:function(Y,$,X){if(!Y)return Y;var he={},ge;for(ge in Y)M.call(Y,ge)&&(he[ge]=$.call(X,Y[ge],ge,Y));return he},Tb:function(Y){for(;Y.firstChild;)m.removeNode(Y.firstChild)},Yb:function(Y){Y=m.a.la(Y);for(var $=(Y[0]&&Y[0].ownerDocument||n).createElement("div"),X=0,he=Y.length;X<he;X++)$.appendChild(m.oa(Y[X]));return $},Ca:function(Y,$){for(var X=0,he=Y.length,ge=[];X<he;X++){var fe=Y[X].cloneNode(!0);ge.push($?m.oa(fe):fe)}return ge},va:function(Y,$){if(m.a.Tb(Y),$)for(var X=0,he=$.length;X<he;X++)Y.appendChild($[X])},Xc:function(Y,$){var X=Y.nodeType?[Y]:Y;if(0<X.length){for(var he=X[0],ge=he.parentNode,fe=0,ye=$.length;fe<ye;fe++)ge.insertBefore($[fe],he);for(fe=0,ye=X.length;fe<ye;fe++)m.removeNode(X[fe])}},Ua:function(Y,$){if(Y.length){for($=$.nodeType===8&&$.parentNode||$;Y.length&&Y[0].parentNode!==$;)Y.splice(0,1);for(;1<Y.length&&Y[Y.length-1].parentNode!==$;)Y.length--;if(1<Y.length){var X=Y[0],he=Y[Y.length-1];for(Y.length=0;X!==he;)Y.push(X),X=X.nextSibling;Y.push(he)}}return Y},Zc:function(Y,$){7>H?Y.setAttribute("selected",$):Y.selected=$},Db:function(Y){return Y===null||Y===e?"":Y.trim?Y.trim():Y.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(Y,$){return Y=Y||"",$.length>Y.length?!1:Y.substring(0,$.length)===$},vd:function(Y,$){if(Y===$)return!0;if(Y.nodeType===11)return!1;if($.contains)return $.contains(Y.nodeType!==1?Y.parentNode:Y);if($.compareDocumentPosition)return($.compareDocumentPosition(Y)&16)==16;for(;Y&&Y!=$;)Y=Y.parentNode;return!!Y},Sb:function(Y){return m.a.vd(Y,Y.ownerDocument.documentElement)},kd:function(Y){return!!m.a.Lb(Y,m.a.Sb)},R:function(Y){return Y&&Y.tagName&&Y.tagName.toLowerCase()},Ac:function(Y){return m.onError?function(){try{return Y.apply(this,arguments)}catch($){throw m.onError&&m.onError($),$}}:Y},setTimeout:function(Y,$){return setTimeout(m.a.Ac(Y),$)},Gc:function(Y){setTimeout(function(){throw m.onError&&m.onError(Y),Y},0)},B:function(Y,$,X){var he=m.a.Ac(X);if(X=F[$],m.options.useOnlyNativeEvents||X||!o)if(X||typeof Y.addEventListener!="function")if(typeof Y.attachEvent<"u"){var ge=function(ye){he.call(Y,ye)},fe="on"+$;Y.attachEvent(fe,ge),m.a.K.za(Y,function(){Y.detachEvent(fe,ge)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else Y.addEventListener($,he,!1);else Z||(Z=typeof o(Y).on=="function"?"on":"bind"),o(Y)[Z]($,he)},Fb:function(Y,$){if(!Y||!Y.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var X;if(m.a.R(Y)==="input"&&Y.type&&$.toLowerCase()=="click"?(X=Y.type,X=X=="checkbox"||X=="radio"):X=!1,m.options.useOnlyNativeEvents||!o||X)if(typeof n.createEvent=="function")if(typeof Y.dispatchEvent=="function")X=n.createEvent(z[$]||"HTMLEvents"),X.initEvent($,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,Y),Y.dispatchEvent(X);else throw Error("The supplied element doesn't support dispatchEvent");else if(X&&Y.click)Y.click();else if(typeof Y.fireEvent<"u")Y.fireEvent("on"+$);else throw Error("Browser doesn't support triggering events");else o(Y).trigger($)},f:function(Y){return m.O(Y)?Y():Y},bc:function(Y){return m.O(Y)?Y.v():Y},Eb:function(Y,$,X){var he;$&&(typeof Y.classList=="object"?(he=Y.classList[X?"add":"remove"],m.a.D($.match(W),function(ge){he.call(Y.classList,ge)})):typeof Y.className.baseVal=="string"?w(Y.className,"baseVal",$,X):w(Y,"className",$,X))},Bb:function(Y,$){var X=m.a.f($);(X===null||X===e)&&(X="");var he=m.h.firstChild(Y);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(Y,[Y.ownerDocument.createTextNode(X)]):he.data=X,m.a.Ad(Y)},Yc:function(Y,$){if(Y.name=$,7>=H)try{var X=Y.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});Y.mergeAttributes(n.createElement("<input name='"+X+"'/>"),!1)}catch{}},Ad:function(Y){9<=H&&(Y=Y.nodeType==1?Y:Y.parentNode,Y.style&&(Y.style.zoom=Y.style.zoom))},wd:function(Y){if(H){var $=Y.style.width;Y.style.width=0,Y.style.width=$}},Pd:function(Y,$){Y=m.a.f(Y),$=m.a.f($);for(var X=[],he=Y;he<=$;he++)X.push(he);return X},la:function(Y){for(var $=[],X=0,he=Y.length;X<he;X++)$.push(Y[X]);return $},Da:function(Y){return U?Symbol(Y):Y},Zd:H===6,$d:H===7,W:H,Lc:function(Y,$){for(var X=m.a.la(Y.getElementsByTagName("input")).concat(m.a.la(Y.getElementsByTagName("textarea"))),he=typeof $=="string"?function(ye){return ye.name===$}:function(ye){return $.test(ye.name)},ge=[],fe=X.length-1;0<=fe;fe--)he(X[fe])&&ge.push(X[fe]);return ge},Nd:function(Y){return typeof Y=="string"&&(Y=m.a.Db(Y))?r&&r.parse?r.parse(Y):new Function("return "+Y)():null},hc:function(Y,$,X){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(Y),$,X)},Od:function(Y,$,X){X=X||{};var he=X.params||{},ge=X.includeFields||this.Jc,fe=Y;if(typeof Y=="object"&&m.a.R(Y)==="form")for(var fe=Y.action,ye=ge.length-1;0<=ye;ye--)for(var Ie=m.a.Lc(Y,ge[ye]),ve=Ie.length-1;0<=ve;ve--)he[Ie[ve].name]=Ie[ve].value;$=m.a.f($);var Te=n.createElement("form");Te.style.display="none",Te.action=fe,Te.method="post";for(var ke in $)Y=n.createElement("input"),Y.type="hidden",Y.name=ke,Y.value=m.a.hc(m.a.f($[ke])),Te.appendChild(Y);p(he,function(Ge,qe){var tt=n.createElement("input");tt.type="hidden",tt.name=Ge,tt.value=qe,Te.appendChild(tt)}),n.body.appendChild(Te),X.submitter?X.submitter(Te):Te.submit(),setTimeout(function(){Te.parentNode.removeChild(Te)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(p){var x=this;if(arguments.length===1)return function(){return x.apply(p,arguments)};var T=Array.prototype.slice.call(arguments,1);return function(){var w=T.slice(0);return w.push.apply(w,arguments),x.apply(p,w)}}),m.a.g=new function(){var p=0,x="__ko__"+new Date().getTime(),T={},w,M;return m.a.W?(w=function(O,U){var Q=O[x];if(!Q||Q==="null"||!T[Q]){if(!U)return e;Q=O[x]="ko"+p++,T[Q]={}}return T[Q]},M=function(O){var U=O[x];return U?(delete T[U],O[x]=null,!0):!1}):(w=function(O,U){var Q=O[x];return!Q&&U&&(Q=O[x]={}),Q},M=function(O){return O[x]?(delete O[x],!0):!1}),{get:function(O,U){var Q=w(O,!1);return Q&&Q[U]},set:function(O,U,Q){(O=w(O,Q!==e))&&(O[U]=Q)},Ub:function(O,U,Q){return O=w(O,!0),O[U]||(O[U]=Q)},clear:M,Z:function(){return p+++x}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function p(U,Q){var z=m.a.g.get(U,w);return z===e&&Q&&(z=[],m.a.g.set(U,w,z)),z}function x(U){var Q=p(U,!1);if(Q)for(var Q=Q.slice(0),z=0;z<Q.length;z++)Q[z](U);m.a.g.clear(U),m.a.K.cleanExternalData(U),O[U.nodeType]&&T(U.childNodes,!0)}function T(U,Q){for(var z=[],F,H=0;H<U.length;H++)if((!Q||U[H].nodeType===8)&&(x(z[z.length]=F=U[H]),U[H]!==F))for(;H--&&m.a.A(z,U[H])==-1;);}var w=m.a.g.Z(),M={1:!0,8:!0,9:!0},O={1:!0,9:!0};return{za:function(U,Q){if(typeof Q!="function")throw Error("Callback must be a function");p(U,!0).push(Q)},yb:function(U,Q){var z=p(U,!1);z&&(m.a.Pa(z,Q),z.length==0&&m.a.g.set(U,w,e))},oa:function(U){return m.u.G(function(){M[U.nodeType]&&(x(U),O[U.nodeType]&&T(U.getElementsByTagName("*")))}),U},removeNode:function(U){m.oa(U),U.parentNode&&U.parentNode.removeChild(U)},cleanExternalData:function(U){o&&typeof o.cleanData=="function"&&o.cleanData([U])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var p=[0,"",""],x=[1,"<table>","</table>"],T=[3,"<table><tbody><tr>","</tr></tbody></table>"],w=[1,"<select multiple='multiple'>","</select>"],M={thead:x,tbody:x,tfoot:x,tr:[2,"<table><tbody>","</tbody></table>"],td:T,th:T,option:w,optgroup:w},O=8>=m.a.W;m.a.ua=function(U,Q){var z;if(o){if(o.parseHTML)z=o.parseHTML(U,Q)||[];else if((z=o.clean([U],Q))&&z[0]){for(var F=z[0];F.parentNode&&F.parentNode.nodeType!==11;)F=F.parentNode;F.parentNode&&F.parentNode.removeChild(F)}}else{(z=Q)||(z=n);var F=z.parentWindow||z.defaultView||t,H=m.a.Db(U).toLowerCase(),W=z.createElement("div"),Z;for(Z=(H=H.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&M[H[1]]||p,H=Z[0],Z="ignored<div>"+Z[1]+U+Z[2]+"</div>",typeof F.innerShiv=="function"?W.appendChild(F.innerShiv(Z)):(O&&z.body.appendChild(W),W.innerHTML=Z,O&&W.parentNode.removeChild(W));H--;)W=W.lastChild;z=m.a.la(W.lastChild.childNodes)}return z},m.a.Md=function(U,Q){var z=m.a.ua(U,Q);return z.length&&z[0].parentElement||m.a.Yb(z)},m.a.fc=function(U,Q){if(m.a.Tb(U),Q=m.a.f(Q),Q!==null&&Q!==e)if(typeof Q!="string"&&(Q=Q.toString()),o)o(U).html(Q);else for(var z=m.a.ua(Q,U.ownerDocument),F=0;F<z.length;F++)U.appendChild(z[F])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function p(T,w){if(T){if(T.nodeType==8){var M=m.aa.Uc(T.nodeValue);M!=null&&w.push({ud:T,Kd:M})}else if(T.nodeType==1)for(var M=0,O=T.childNodes,U=O.length;M<U;M++)p(O[M],w)}}var x={};return{Xb:function(T){if(typeof T!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var w=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return x[w]=T,"<!--[ko_memo:"+w+"]-->"},bd:function(T,w){var M=x[T];if(M===e)throw Error("Couldn't find any memo with ID "+T+". Perhaps it's already been unmemoized.");try{return M.apply(null,w||[]),!0}finally{delete x[T]}},cd:function(T,w){var M=[];p(T,M);for(var O=0,U=M.length;O<U;O++){var Q=M[O].ud,z=[Q];w&&m.a.Nb(z,w),m.aa.bd(M[O].Kd,z),Q.nodeValue="",Q.parentNode&&Q.parentNode.removeChild(Q)}},Uc:function(T){return(T=T.match(/^\[ko_memo\:(.*?)\]$/))?T[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function p(){if(M){for(var Q=M,z=0,F;U<M;)if(F=w[U++]){if(U>Q){if(5e3<=++z){U=M,m.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}Q=M}try{F()}catch(H){m.a.Gc(H)}}}}function x(){p(),U=M=w.length=0}var T,w=[],M=0,O=1,U=0;return t.MutationObserver?T=function(Q){var z=n.createElement("div");return new MutationObserver(Q).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(x):T=n&&"onreadystatechange"in n.createElement("script")?function(Q){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,Q()},n.documentElement.appendChild(z)}:function(Q){setTimeout(Q,0)},{scheduler:T,zb:function(Q){return M||m.na.scheduler(x),w[M++]=Q,O++},cancel:function(Q){Q=Q-(O-M),Q>=U&&Q<M&&(w[Q]=null)},resetForTesting:function(){var Q=M-U;return U=M=w.length=0,Q},Sd:p}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(p,x){p.throttleEvaluation=x;var T=null;return m.$({read:p,write:function(w){clearTimeout(T),T=m.a.setTimeout(function(){p(w)},x)}})},rateLimit:function(p,x){var T,w,M;typeof x=="number"?T=x:(T=x.timeout,w=x.method),p.Hb=!1,M=typeof w=="function"?w:w=="notifyWhenChangesStop"?f:u,p.ub(function(O){return M(O,T,x)})},deferred:function(p,x){if(x!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");p.Hb||(p.Hb=!0,p.ub(function(T){var w,M=!1;return function(){if(!M){m.na.cancel(w),w=m.na.zb(T);try{M=!0,p.notifySubscribers(e,"dirty")}finally{M=!1}}}}))},notify:function(p,x){p.equalityComparer=x=="always"?null:c}};var _={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(p,x,T){this.da=p,this.lc=x,this.mc=T,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(p){this.Jb=p,m.a.K.za(p,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,y),y.qb(this)};var y={qb:function(p){p.U={change:[]},p.sc=1},subscribe:function(p,x,T){var w=this;T=T||"change";var M=new m.ic(w,x?p.bind(x):p,function(){m.a.Pa(w.U[T],M),w.hb&&w.hb(T)});return w.Qa&&w.Qa(T),w.U[T]||(w.U[T]=[]),w.U[T].push(M),M},notifySubscribers:function(p,x){if(x=x||"change",x==="change"&&this.Gb(),this.Wa(x)){var T=x==="change"&&this.ed||this.U[x].slice(0);try{m.u.xc();for(var w=0,M;M=T[w];++w)M.Ib||M.lc(p)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(p){return this.ob()!==p},Gb:function(){++this.sc},ub:function(p){var x=this,T=m.O(x),w,M,O,U,Q;x.gb||(x.gb=x.notifySubscribers,x.notifySubscribers=h);var z=p(function(){x.Ja=!1,T&&U===x&&(U=x.nc?x.nc():x());var F=M||Q&&x.sb(O,U);Q=M=w=!1,F&&x.gb(O=U)});x.qc=function(F,H){H&&x.Ja||(Q=!H),x.ed=x.U.change.slice(0),x.Ja=w=!0,U=F,z()},x.pc=function(F){w||(O=F,x.gb(F,"beforeChange"))},x.rc=function(){Q=!0},x.gd=function(){x.sb(O,x.v(!0))&&(M=!0)}},Wa:function(p){return this.U[p]&&this.U[p].length},Bd:function(p){if(p)return this.U[p]&&this.U[p].length||0;var x=0;return m.a.P(this.U,function(T,w){T!=="dirty"&&(x+=w.length)}),x},sb:function(p,x){return!this.equalityComparer||!this.equalityComparer(p,x)},toString:function(){return"[object Object]"},extend:function(p){var x=this;return p&&m.a.P(p,function(T,w){var M=m.Ta[T];typeof M=="function"&&(x=M(x,w)||x)}),x}};m.L(y,"init",y.qb),m.L(y,"subscribe",y.subscribe),m.L(y,"extend",y.extend),m.L(y,"getSubscriptionsCount",y.Bd),m.a.Ba&&m.a.setPrototypeOf(y,Function.prototype),m.T.fn=y,m.Qc=function(p){return p!=null&&typeof p.subscribe=="function"&&typeof p.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function p(O){T.push(w),w=O}function x(){w=T.pop()}var T=[],w,M=0;return{xc:p,end:x,cc:function(O){if(w){if(!m.Qc(O))throw Error("Only subscribable things can act as dependencies");w.od.call(w.pd,O,O.fd||(O.fd=++M))}},G:function(O,U,Q){try{return p(),O.apply(U,Q||[])}finally{x()}},qa:function(){if(w)return w.o.qa()},Va:function(){if(w)return w.o.Va()},Ya:function(){if(w)return w.Ya},o:function(){if(w)return w.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var C=m.a.Da("_latestValue");m.ta=function(p){function x(){return 0<arguments.length?(x.sb(x[C],arguments[0])&&(x.ya(),x[C]=arguments[0],x.xa()),this):(m.u.cc(x),x[C])}return x[C]=p,m.a.Ba||m.a.extend(x,m.T.fn),m.T.fn.qb(x),m.a.Ab(x,E),m.options.deferUpdates&&m.Ta.deferred(x,!0),x};var E={equalityComparer:c,v:function(){return this[C]},xa:function(){this.notifySubscribers(this[C],"spectate"),this.notifySubscribers(this[C])},ya:function(){this.notifySubscribers(this[C],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(E,m.T.fn);var I=m.ta.Ma="__ko_proto__";E[I]=m.ta,m.O=function(p){if((p=typeof p=="function"&&p[I])&&p!==E[I]&&p!==m.o.fn[I])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!p},m.Za=function(p){return typeof p=="function"&&(p[I]===E[I]||p[I]===m.o.fn[I]&&p.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",E),m.L(E,"peek",E.v),m.L(E,"valueHasMutated",E.xa),m.L(E,"valueWillMutate",E.ya),m.Ha=function(p){if(p=p||[],typeof p!="object"||!("length"in p))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return p=m.ta(p),m.a.Ab(p,m.Ha.fn),p.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(p){for(var x=this.v(),T=[],w=typeof p!="function"||m.O(p)?function(U){return U===p}:p,M=0;M<x.length;M++){var O=x[M];if(w(O)){if(T.length===0&&this.ya(),x[M]!==O)throw Error("Array modified during remove; cannot remove item");T.push(O),x.splice(M,1),M--}}return T.length&&this.xa(),T},removeAll:function(p){if(p===e){var x=this.v(),T=x.slice(0);return this.ya(),x.splice(0,x.length),this.xa(),T}return p?this.remove(function(w){return 0<=m.a.A(p,w)}):[]},destroy:function(p){var x=this.v(),T=typeof p!="function"||m.O(p)?function(O){return O===p}:p;this.ya();for(var w=x.length-1;0<=w;w--){var M=x[w];T(M)&&(M._destroy=!0)}this.xa()},destroyAll:function(p){return p===e?this.destroy(function(){return!0}):p?this.destroy(function(x){return 0<=m.a.A(p,x)}):[]},indexOf:function(p){var x=this();return m.a.A(x,p)},replace:function(p,x){var T=this.indexOf(p);0<=T&&(this.ya(),this.v()[T]=x,this.xa())},sorted:function(p){var x=this().slice(0);return p?x.sort(p):x.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(p){m.Ha.fn[p]=function(){var x=this.v();this.ya(),this.zc(x,p,arguments);var T=x[p].apply(x,arguments);return this.xa(),T===x?this:T}}),m.a.D(["slice"],function(p){m.Ha.fn[p]=function(){var x=this();return x[p].apply(x,arguments)}}),m.Pc=function(p){return m.O(p)&&typeof p.remove=="function"&&typeof p.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(p,x){function T(){function W(){if(Q){var Z=[].concat(p.v()||[]),Y;p.Wa("arrayChange")&&((!M||1<Q)&&(M=m.a.Pb(z,Z,p.Ob)),Y=M),z=Z,M=null,Q=0,Y&&Y.length&&p.notifySubscribers(Y,"arrayChange")}}w?W():(w=!0,U=p.subscribe(function(){++Q},null,"spectate"),z=[].concat(p.v()||[]),M=null,O=p.subscribe(W))}if(p.Ob={},x&&typeof x=="object"&&m.a.extend(p.Ob,x),p.Ob.sparse=!0,!p.zc){var w=!1,M=null,O,U,Q=0,z,F=p.Qa,H=p.hb;p.Qa=function(W){F&&F.call(p,W),W==="arrayChange"&&T()},p.hb=function(W){H&&H.call(p,W),W!=="arrayChange"||p.Wa("arrayChange")||(O&&O.s(),U&&U.s(),U=O=null,w=!1,z=e)},p.zc=function(W,Z,Y){function $(Te,ke,Ge){return X[X.length]={status:Te,value:ke,index:Ge}}if(w&&!Q){var X=[],he=W.length,ge=Y.length,fe=0;switch(Z){case"push":fe=he;case"unshift":for(Z=0;Z<ge;Z++)$("added",Y[Z],fe+Z);break;case"pop":fe=he-1;case"shift":he&&$("deleted",W[fe],fe);break;case"splice":Z=Math.min(Math.max(0,0>Y[0]?he+Y[0]:Y[0]),he);for(var he=ge===1?he:Math.min(Z+(Y[1]||0),he),ge=Z+ge-2,fe=Math.max(he,ge),ye=[],Ie=[],ve=2;Z<fe;++Z,++ve)Z<he&&Ie.push($("deleted",W[Z],Z)),Z<ge&&ye.push($("added",Y[ve],Z));m.a.Kc(Ie,ye);break;default:return}M=X}}}};var b=m.a.Da("_state");m.o=m.$=function(p,x,T){function w(){if(0<arguments.length){if(typeof M=="function")M.apply(O.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return O.ra||m.u.cc(w),(O.ka||O.J&&w.Xa())&&w.ha(),O.X}if(typeof p=="object"?T=p:(T=T||{},p&&(T.read=p)),typeof T.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var M=T.write,O={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:T.read,nb:x||T.owner,l:T.disposeWhenNodeIsRemoved||T.l||null,Sa:T.disposeWhen||T.Sa,Rb:null,I:{},V:0,Ic:null};return w[b]=O,w.Nc=typeof M=="function",m.a.Ba||m.a.extend(w,m.T.fn),m.T.fn.qb(w),m.a.Ab(w,S),T.pure?(O.wb=!0,O.J=!0,m.a.extend(w,B)):T.deferEvaluation&&m.a.extend(w,v),m.options.deferUpdates&&m.Ta.deferred(w,!0),O.l&&(O.jc=!0,O.l.nodeType||(O.l=null)),O.J||T.deferEvaluation||w.ha(),O.l&&w.ja()&&m.a.K.za(O.l,O.Rb=function(){w.s()}),w};var S={equalityComparer:c,qa:function(){return this[b].V},Va:function(){var p=[];return m.a.P(this[b].I,function(x,T){p[T.Ka]=T.da}),p},Vb:function(p){if(!this[b].V)return!1;var x=this.Va();return m.a.A(x,p)!==-1?!0:!!m.a.Lb(x,function(T){return T.Vb&&T.Vb(p)})},uc:function(p,x,T){if(this[b].wb&&x===this)throw Error("A 'pure' computed must not be called recursively");this[b].I[p]=T,T.Ka=this[b].V++,T.La=x.ob()},Xa:function(){var p,x,T=this[b].I;for(p in T)if(Object.prototype.hasOwnProperty.call(T,p)&&(x=T[p],this.Ia&&x.da.Ja||x.da.Dd(x.La)))return!0},Jd:function(){this.Ia&&!this[b].rb&&this.Ia(!1)},ja:function(){var p=this[b];return p.ka||0<p.V},Rd:function(){this.Ja?this[b].ka&&(this[b].sa=!0):this.Hc()},$c:function(p){if(p.Hb){var x=p.subscribe(this.Jd,this,"dirty"),T=p.subscribe(this.Rd,this);return{da:p,s:function(){x.s(),T.s()}}}return p.subscribe(this.Hc,this)},Hc:function(){var p=this,x=p.throttleEvaluation;x&&0<=x?(clearTimeout(this[b].Ic),this[b].Ic=m.a.setTimeout(function(){p.ha(!0)},x)):p.Ia?p.Ia(!0):p.ha(!0)},ha:function(p){var x=this[b],T=x.Sa,w=!1;if(!x.rb&&!x.ra){if(x.l&&!m.a.Sb(x.l)||T&&T()){if(!x.jc){this.s();return}}else x.jc=!1;x.rb=!0;try{w=this.zd(p)}finally{x.rb=!1}return w}},zd:function(p){var x=this[b],w=!1,T=x.wb?e:!x.V,w={qd:this,mb:x.I,Qb:x.V};m.u.xc({pd:w,od:g,o:this,Ya:T}),x.I={},x.V=0;var M=this.yd(x,w);return x.V?w=this.sb(x.X,M):(this.s(),w=!0),w&&(x.J?this.Gb():this.notifySubscribers(x.X,"beforeChange"),x.X=M,this.notifySubscribers(x.X,"spectate"),!x.J&&p&&this.notifySubscribers(x.X),this.rc&&this.rc()),T&&this.notifySubscribers(x.X,"awake"),w},yd:function(p,x){try{var T=p.Wc;return p.nb?T.call(p.nb):T()}finally{m.u.end(),x.Qb&&!p.J&&m.a.P(x.mb,A),p.sa=p.ka=!1}},v:function(p){var x=this[b];return(x.ka&&(p||!x.V)||x.J&&this.Xa())&&this.ha(),x.X},ub:function(p){m.T.fn.ub.call(this,p),this.nc=function(){return this[b].J||(this[b].sa?this.ha():this[b].ka=!1),this[b].X},this.Ia=function(x){this.pc(this[b].X),this[b].ka=!0,x&&(this[b].sa=!0),this.qc(this,!x)}},s:function(){var p=this[b];!p.J&&p.I&&m.a.P(p.I,function(x,T){T.s&&T.s()}),p.l&&p.Rb&&m.a.K.yb(p.l,p.Rb),p.I=e,p.V=0,p.ra=!0,p.sa=!1,p.ka=!1,p.J=!1,p.l=e,p.Sa=e,p.Wc=e,this.Nc||(p.nb=e)}},B={Qa:function(p){var x=this,T=x[b];if(!T.ra&&T.J&&p=="change"){if(T.J=!1,T.sa||x.Xa())T.I=null,T.V=0,x.ha()&&x.Gb();else{var w=[];m.a.P(T.I,function(M,O){w[O.Ka]=M}),m.a.D(w,function(M,O){var U=T.I[M],Q=x.$c(U.da);Q.Ka=O,Q.La=U.La,T.I[M]=Q}),x.Xa()&&x.ha()&&x.Gb()}T.ra||x.notifySubscribers(T.X,"awake")}},hb:function(p){var x=this[b];x.ra||p!="change"||this.Wa("change")||(m.a.P(x.I,function(T,w){w.s&&(x.I[T]={da:w.da,Ka:w.Ka,La:w.La},w.s())}),x.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var p=this[b];return p.J&&(p.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},v={Qa:function(p){p!="change"&&p!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(S,m.T.fn);var P=m.ta.Ma;S[P]=m.o,m.Oc=function(p){return typeof p=="function"&&p[P]===S[P]},m.Fd=function(p){return m.Oc(p)&&p[b]&&p[b].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",S),m.L(S,"peek",S.v),m.L(S,"dispose",S.s),m.L(S,"isActive",S.ja),m.L(S,"getDependenciesCount",S.qa),m.L(S,"getDependencies",S.Va),m.xb=function(p,x){return typeof p=="function"?m.o(p,x,{pure:!0}):(p=m.a.extend({},p),p.pure=!0,m.o(p,x))},m.b("pureComputed",m.xb),function(){function p(w,M,O){if(O=O||new T,w=M(w),typeof w!="object"||w===null||w===e||w instanceof RegExp||w instanceof Date||w instanceof String||w instanceof Number||w instanceof Boolean)return w;var U=w instanceof Array?[]:{};return O.save(w,U),x(w,function(Q){var z=M(w[Q]);switch(typeof z){case"boolean":case"number":case"string":case"function":U[Q]=z;break;case"object":case"undefined":var F=O.get(z);U[Q]=F!==e?F:p(z,M,O)}}),U}function x(w,M){if(w instanceof Array){for(var O=0;O<w.length;O++)M(O);typeof w.toJSON=="function"&&M("toJSON")}else for(O in w)M(O)}function T(){this.keys=[],this.values=[]}m.ad=function(w){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return p(w,function(M){for(var O=0;m.O(M)&&10>O;O++)M=M();return M})},m.toJSON=function(w,M,O){return w=m.ad(w),m.a.hc(w,M,O)},T.prototype={constructor:T,save:function(w,M){var O=m.a.A(this.keys,w);0<=O?this.values[O]=M:(this.keys.push(w),this.values.push(M))},get:function(w){return w=m.a.A(this.keys,w),0<=w?this.values[w]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(p,x,T){function w(M){var O=m.xb(p,T).extend({ma:"always"}),U=O.subscribe(function(Q){Q&&(U.s(),M(Q))});return O.notifySubscribers(O.v()),U}return typeof Promise!="function"||x?w(x.bind(T)):new Promise(w)},m.b("when",m.Wd),function(){m.w={M:function(p){switch(m.a.R(p)){case"option":return p.__ko__hasDomDataOptionValue__===!0?m.a.g.get(p,m.c.options.$b):7>=m.a.W?p.getAttributeNode("value")&&p.getAttributeNode("value").specified?p.value:p.text:p.value;case"select":return 0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex]):e;default:return p.value}},cb:function(p,x,T){switch(m.a.R(p)){case"option":typeof x=="string"?(m.a.g.set(p,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in p&&delete p.__ko__hasDomDataOptionValue__,p.value=x):(m.a.g.set(p,m.c.options.$b,x),p.__ko__hasDomDataOptionValue__=!0,p.value=typeof x=="number"?x:"");break;case"select":(x===""||x===null)&&(x=e);for(var w=-1,M=0,O=p.options.length,U;M<O;++M)if(U=m.w.M(p.options[M]),U==x||U===""&&x===e){w=M;break}(T||0<=w||x===e&&1<p.size)&&(p.selectedIndex=w,m.a.W===6&&m.a.setTimeout(function(){p.selectedIndex=w},0));break;default:(x===null||x===e)&&(x=""),p.value=x}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function p(Q){Q=m.a.Db(Q),Q.charCodeAt(0)===123&&(Q=Q.slice(1,-1)),Q+=`
|
||
,`;var z=[],F=Q.match(w),H,W=[],Z=0;if(1<F.length){for(var Y=0,$;$=F[Y];++Y){var X=$.charCodeAt(0);if(X===44){if(0>=Z){z.push(H&&W.length?{key:H,value:W.join("")}:{unknown:H||W.join("")}),H=Z=0,W=[];continue}}else if(X===58){if(!Z&&!H&&W.length===1){H=W.pop();continue}}else{if(X===47&&1<$.length&&($.charCodeAt(1)===47||$.charCodeAt(1)===42))continue;X===47&&Y&&1<$.length?(X=F[Y-1].match(M))&&!O[X[0]]&&(Q=Q.substr(Q.indexOf($)+1),F=Q.match(w),Y=-1,$="/"):X===40||X===123||X===91?++Z:X===41||X===125||X===93?--Z:H||W.length||X!==34&&X!==39||($=$.slice(1,-1))}W.push($)}if(0<Z)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var x=["true","false","null","undefined"],T=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,w=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*
|
||
|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),M=/[\])"'A-Za-z0-9_$]+$/,O={in:1,return:1,typeof:1},U={};return{Ra:[],wa:U,ac:p,vb:function(Q,z){function F(X,he){var ge;if(!Y){var fe=m.getBindingHandler(X);if(fe&&fe.preprocess&&!(he=fe.preprocess(he,X,F)))return;(fe=U[X])&&(ge=he,0<=m.a.A(x,ge)?ge=!1:(fe=ge.match(T),ge=fe===null?!1:fe[1]?"Object("+fe[1]+")"+fe[2]:ge),fe=ge),fe&&W.push("'"+(typeof U[X]=="string"?U[X]:X)+"':function(_z){"+ge+"=_z}")}Z&&(he="function(){return "+he+" }"),H.push("'"+X+"':"+he)}z=z||{};var H=[],W=[],Z=z.valueAccessors,Y=z.bindingParams,$=typeof Q=="string"?p(Q):Q;return m.a.D($,function(X){F(X.key||X.unknown,X.value)}),W.length&&F("_ko_property_writers","{"+W.join(",")+" }"),H.join(",")},Id:function(Q,z){for(var F=0;F<Q.length;F++)if(Q[F].key==z)return!0;return!1},eb:function(Q,z,F,H,W){Q&&m.O(Q)?!m.Za(Q)||W&&Q.v()===H||Q(H):(Q=z.get("_ko_property_writers"))&&Q[F]&&Q[F](H)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function p(F){return F.nodeType==8&&O.test(M?F.text:F.nodeValue)}function x(F){return F.nodeType==8&&U.test(M?F.text:F.nodeValue)}function T(F,H){for(var W=F,Z=1,Y=[];W=W.nextSibling;){if(x(W)&&(m.a.g.set(W,z,!0),Z--,Z===0))return Y;Y.push(W),p(W)&&Z++}if(!H)throw Error("Cannot find closing comment tag to match: "+F.nodeValue);return null}function w(F,H){var W=T(F,H);return W?0<W.length?W[W.length-1].nextSibling:F.nextSibling:null}var M=n&&n.createComment("test").text==="<!--test-->",O=M?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,U=M?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,Q={ul:!0,ol:!0},z="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(F){return p(F)?T(F):F.childNodes},Ea:function(F){if(p(F)){F=m.h.childNodes(F);for(var H=0,W=F.length;H<W;H++)m.removeNode(F[H])}else m.a.Tb(F)},va:function(F,H){if(p(F)){m.h.Ea(F);for(var W=F.nextSibling,Z=0,Y=H.length;Z<Y;Z++)W.parentNode.insertBefore(H[Z],W)}else m.a.va(F,H)},Vc:function(F,H){var W;p(F)?(W=F.nextSibling,F=F.parentNode):W=F.firstChild,W?H!==W&&F.insertBefore(H,W):F.appendChild(H)},Wb:function(F,H,W){W?(W=W.nextSibling,p(F)&&(F=F.parentNode),W?H!==W&&F.insertBefore(H,W):F.appendChild(H)):m.h.Vc(F,H)},firstChild:function(F){if(p(F))return!F.nextSibling||x(F.nextSibling)?null:F.nextSibling;if(F.firstChild&&x(F.firstChild))throw Error("Found invalid end comment, as the first child of "+F);return F.firstChild},nextSibling:function(F){if(p(F)&&(F=w(F)),F.nextSibling&&x(F.nextSibling)){var H=F.nextSibling;if(x(H)&&!m.a.g.get(H,z))throw Error("Found end comment without a matching opening comment, as child of "+F);return null}return F.nextSibling},Cd:p,Vd:function(F){return(F=(M?F.text:F.nodeValue).match(O))?F[1]:null},Sc:function(F){if(Q[m.a.R(F)]){var H=F.firstChild;if(H)do if(H.nodeType===1){var W;W=H.firstChild;var Z=null;if(W)do if(Z)Z.push(W);else if(p(W)){var Y=w(W,!0);Y?W=Y:Z=[W]}else x(W)&&(Z=[W]);while(W=W.nextSibling);if(W=Z)for(Z=H.nextSibling,Y=0;Y<W.length;Y++)Z?F.insertBefore(W[Y],Z):F.appendChild(W[Y])}while(H=H.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(p);case 8:return m.h.Cd(p);default:return!1}},getBindings:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p):null;return m.j.tc(T,p,x,!1)},getBindingAccessors:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p,{valueAccessors:!0}):null;return m.j.tc(T,p,x,!0)},getBindingsString:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind");case 8:return m.h.Vd(p);default:return null}},parseBindingsString:function(p,x,T,w){try{var M=this.nd,O=p+(w&&w.valueAccessors||""),U;if(!(U=M[O])){var Q,z="with($context){with($data||{}){return{"+m.m.vb(p,w)+"}}}";Q=new Function("$context","$element",z),U=M[O]=Q}return U(x,T)}catch(F){throw F.message=`Unable to parse bindings.
|
||
Bindings value: `+p+`
|
||
Message: `+F.message,F}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function p(fe){var ye=(fe=m.a.g.get(fe,ge))&&fe.N;ye&&(fe.N=null,ye.Tc())}function x(fe,ye,Ie){this.node=fe,this.yc=ye,this.kb=[],this.H=!1,ye.N||m.a.K.za(fe,p),Ie&&Ie.N&&(Ie.N.kb.push(fe),this.Kb=Ie)}function T(fe){return function(){return fe}}function w(fe){return fe()}function M(fe){return m.a.Ga(m.u.G(fe),function(ye,Ie){return function(){return fe()[Ie]}})}function O(fe,ye,Ie){return typeof fe=="function"?M(fe.bind(null,ye,Ie)):m.a.Ga(fe,T)}function U(fe,ye){return M(this.getBindings.bind(this,fe,ye))}function Q(fe,ye){var Ie=m.h.firstChild(ye);if(Ie){var ve,Te=m.ga.instance,ke=Te.preprocessNode;if(ke){for(;ve=Ie;)Ie=m.h.nextSibling(ve),ke.call(Te,ve);Ie=m.h.firstChild(ye)}for(;ve=Ie;)Ie=m.h.nextSibling(ve),z(fe,ve)}m.i.ma(ye,m.i.H)}function z(fe,ye){var Ie=fe,ve=ye.nodeType===1;ve&&m.h.Sc(ye),(ve||m.ga.instance.nodeHasBindings(ye))&&(Ie=H(ye,null,fe).bindingContextForDescendants),Ie&&!X[m.a.R(ye)]&&Q(Ie,ye)}function F(fe){var ye=[],Ie={},ve=[];return m.a.P(fe,function Te(ke){if(!Ie[ke]){var Ge=m.getBindingHandler(ke);Ge&&(Ge.after&&(ve.push(ke),m.a.D(Ge.after,function(qe){if(fe[qe]){if(m.a.A(ve,qe)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+ve.join(", "));Te(qe)}}),ve.length--),ye.push({key:ke,Mc:Ge})),Ie[ke]=!0}}),ye}function H(fe,ye,Ie){var ve=m.a.g.Ub(fe,ge,{}),Te=ve.hd;if(!ye){if(Te)throw Error("You cannot apply bindings multiple times to the same element.");ve.hd=!0}Te||(ve.context=Ie),ve.Zb||(ve.Zb={});var ke;if(ye&&typeof ye!="function")ke=ye;else{var Ge=m.ga.instance,qe=Ge.getBindingAccessors||U,tt=m.$(function(){return(ke=ye?ye(Ie,fe):qe.call(Ge,fe,Ie))&&(Ie[Z]&&Ie[Z](),Ie[$]&&Ie[$]()),ke},null,{l:fe});ke&&tt.ja()||(tt=null)}var $t=Ie,it;if(ke){var tn=function(){return m.a.Ga(tt?tt():ke,w)},Wt=tt?function(vt){return function(){return w(tt()[vt])}}:function(vt){return ke[vt]};tn.get=function(vt){return ke[vt]&&w(Wt(vt))},tn.has=function(vt){return vt in ke},m.i.H in ke&&m.i.subscribe(fe,m.i.H,function(){var vt=(0,ke[m.i.H])();if(vt){var bi=m.h.childNodes(fe);bi.length&&vt(bi,m.Ec(bi[0]))}}),m.i.pa in ke&&($t=m.i.Cb(fe,Ie),m.i.subscribe(fe,m.i.pa,function(){var vt=(0,ke[m.i.pa])();vt&&m.h.firstChild(fe)&&vt(fe)})),ve=F(ke),m.a.D(ve,function(vt){var bi=vt.Mc.init,di=vt.Mc.update,Ot=vt.key;if(fe.nodeType===8&&!m.h.ea[Ot])throw Error("The binding '"+Ot+"' cannot be used with virtual elements");try{typeof bi=="function"&&m.u.G(function(){var Tt=bi(fe,Wt(Ot),tn,$t.$data,$t);if(Tt&&Tt.controlsDescendantBindings){if(it!==e)throw Error("Multiple bindings ("+it+" and "+Ot+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");it=Ot}}),typeof di=="function"&&m.$(function(){di(fe,Wt(Ot),tn,$t.$data,$t)},null,{l:fe})}catch(Tt){throw Tt.message='Unable to process binding "'+Ot+": "+ke[Ot]+`"
|
||
Message: `+Tt.message,Tt}})}return ve=it===e,{shouldBindDescendants:ve,bindingContextForDescendants:ve&&$t}}function W(fe,ye){return fe&&fe instanceof m.fa?fe:new m.fa(fe,e,e,ye)}var Z=m.a.Da("_subscribable"),Y=m.a.Da("_ancestorBindingInfo"),$=m.a.Da("_dataDependency");m.c={};var X={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(fe){return m.c[fe]};var he={};m.fa=function(fe,ye,Ie,ve,Te){function ke(){var Wt=$t?tt():tt,vt=m.a.f(Wt);return ye?(m.a.extend(Ge,ye),Y in ye&&(Ge[Y]=ye[Y])):(Ge.$parents=[],Ge.$root=vt,Ge.ko=m),Ge[Z]=it,qe?vt=Ge.$data:(Ge.$rawData=Wt,Ge.$data=vt),Ie&&(Ge[Ie]=vt),ve&&ve(Ge,ye,vt),ye&&ye[Z]&&!m.S.o().Vb(ye[Z])&&ye[Z](),tn&&(Ge[$]=tn),Ge.$data}var Ge=this,qe=fe===he,tt=qe?e:fe,$t=typeof tt=="function"&&!m.O(tt),it,tn=Te&&Te.dataDependency;Te&&Te.exportDependencies?ke():(it=m.xb(ke),it.v(),it.ja()?it.equalityComparer=null:Ge[Z]=e)},m.fa.prototype.createChildContext=function(fe,ye,Ie,ve){if(!ve&&ye&&typeof ye=="object"&&(ve=ye,ye=ve.as,Ie=ve.extend),ye&&ve&&ve.noChildContext){var Te=typeof fe=="function"&&!m.O(fe);return new m.fa(he,this,null,function(ke){Ie&&Ie(ke),ke[ye]=Te?fe():fe},ve)}return new m.fa(fe,this,ye,function(ke,Ge){ke.$parentContext=Ge,ke.$parent=Ge.$data,ke.$parents=(Ge.$parents||[]).slice(0),ke.$parents.unshift(ke.$parent),Ie&&Ie(ke)},ve)},m.fa.prototype.extend=function(fe,ye){return new m.fa(he,this,null,function(Ie){m.a.extend(Ie,typeof fe=="function"?fe(Ie):fe)},ye)};var ge=m.a.g.Z();x.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},x.prototype.sd=function(fe){m.a.Pa(this.kb,fe),!this.kb.length&&this.H&&this.Cc()},x.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,p),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(fe,ye,Ie,ve,Te){var ke=m.a.g.Ub(fe,ge,{});return ke.Fa||(ke.Fa=new m.T),Te&&Te.notifyImmediately&&ke.Zb[ye]&&m.u.G(Ie,ve,[fe]),ke.Fa.subscribe(Ie,ve,ye)},ma:function(fe,ye){var Ie=m.a.g.get(fe,ge);if(Ie&&(Ie.Zb[ye]=!0,Ie.Fa&&Ie.Fa.notifySubscribers(fe,ye),ye==m.i.H)){if(Ie.N)Ie.N.Cc();else if(Ie.N===e&&Ie.Fa&&Ie.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(fe,ye){var Ie=m.a.g.Ub(fe,ge,{});return Ie.N||(Ie.N=new x(fe,Ie,ye[Y])),ye[Y]==Ie?ye:ye.extend(function(ve){ve[Y]=Ie})}},m.Td=function(fe){return(fe=m.a.g.get(fe,ge))&&fe.context},m.ib=function(fe,ye,Ie){return fe.nodeType===1&&m.h.Sc(fe),H(fe,ye,W(Ie))},m.ld=function(fe,ye,Ie){return Ie=W(Ie),m.ib(fe,O(ye,Ie,fe),Ie)},m.Oa=function(fe,ye){ye.nodeType!==1&&ye.nodeType!==8||Q(W(fe),ye)},m.vc=function(fe,ye,Ie){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(ye=n.body,!ye)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!ye||ye.nodeType!==1&&ye.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z(W(fe,Ie),ye)},m.Dc=function(fe){return!fe||fe.nodeType!==1&&fe.nodeType!==8?e:m.Td(fe)},m.Ec=function(fe){return(fe=m.Dc(fe))?fe.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(p){function x(U,Q){var z=Object.prototype.hasOwnProperty.call(M,U)?M[U]:p,F;z?z.subscribe(Q):(z=M[U]=new m.T,z.subscribe(Q),T(U,function(H,W){var Z=!(!W||!W.synchronous);O[U]={definition:H,Gd:Z},delete M[U],F||Z?z.notifySubscribers(H):m.na.zb(function(){z.notifySubscribers(H)})}),F=!0)}function T(U,Q){w("getConfig",[U],function(z){z?w("loadComponent",[U,z],function(F){Q(F,z)}):Q(null,null)})}function w(U,Q,z,F){F||(F=m.j.loaders.slice(0));var H=F.shift();if(H){var W=H[U];if(W){var Z=!1;if(W.apply(H,Q.concat(function(Y){Z?z(null):Y!==null?z(Y):w(U,Q,z,F)}))!==p&&(Z=!0,!H.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else w(U,Q,z,F)}else z(null)}var M={},O={};m.j={get:function(U,Q){var z=Object.prototype.hasOwnProperty.call(O,U)?O[U]:p;z?z.Gd?m.u.G(function(){Q(z.definition)}):m.na.zb(function(){Q(z.definition)}):x(U,Q)},Bc:function(U){delete O[U]},oc:w},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function p(z,F,H,W){function Z(){--$===0&&W(Y)}var Y={},$=2,X=H.template;H=H.viewModel,X?M(F,X,function(he){m.j.oc("loadTemplate",[z,he],function(ge){Y.template=ge,Z()})}):Z(),H?M(F,H,function(he){m.j.oc("loadViewModel",[z,he],function(ge){Y[Q]=ge,Z()})}):Z()}function x(z,F,H){if(typeof F=="function")H(function(Z){return new F(Z)});else if(typeof F[Q]=="function")H(F[Q]);else if("instance"in F){var W=F.instance;H(function(){return W})}else"viewModel"in F?x(z,F.viewModel,H):z("Unknown viewModel value: "+F)}function T(z){switch(m.a.R(z)){case"script":return m.a.ua(z.text);case"textarea":return m.a.ua(z.value);case"template":if(w(z.content))return m.a.Ca(z.content.childNodes)}return m.a.Ca(z.childNodes)}function w(z){return t.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function M(z,F,H){typeof F.require=="string"?a||t.require?(a||t.require)([F.require],function(W){W&&typeof W=="object"&&W.Xd&&W.default&&(W=W.default),H(W)}):z("Uses require, but no AMD loader is present"):H(F)}function O(z){return function(F){throw Error("Component '"+z+"': "+F)}}var U={};m.j.register=function(z,F){if(!F)throw Error("Invalid configuration for "+z);if(m.j.tb(z))throw Error("Component "+z+" is already registered");U[z]=F},m.j.tb=function(z){return Object.prototype.hasOwnProperty.call(U,z)},m.j.unregister=function(z){delete U[z],m.j.Bc(z)},m.j.Fc={getConfig:function(z,F){F(m.j.tb(z)?U[z]:null)},loadComponent:function(z,F,H){var W=O(z);M(W,F,function(Z){p(z,W,Z,H)})},loadTemplate:function(z,F,H){if(z=O(z),typeof F=="string")H(m.a.ua(F));else if(F instanceof Array)H(F);else if(w(F))H(m.a.la(F.childNodes));else if(F.element)if(F=F.element,t.HTMLElement?F instanceof HTMLElement:F&&F.tagName&&F.nodeType===1)H(T(F));else if(typeof F=="string"){var W=n.getElementById(F);W?H(T(W)):z("Cannot find element with ID "+F)}else z("Unknown element type: "+F);else z("Unknown template value: "+F)},loadViewModel:function(z,F,H){x(O(z),F,H)}};var Q="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=U}(),function(){function p(T,w){var M=T.getAttribute("params");if(M){var M=x.parseBindingsString(M,w,T,{valueAccessors:!0,bindingParams:!0}),M=m.a.Ga(M,function(Q){return m.o(Q,null,{l:T})}),O=m.a.Ga(M,function(Q){var z=Q.v();return Q.ja()?m.o({read:function(){return m.a.f(Q())},write:m.Za(z)&&function(F){Q()(F)},l:T}):z});return Object.prototype.hasOwnProperty.call(O,"$raw")||(O.$raw=M),O}return{$raw:{}}}m.j.getComponentNameForNode=function(T){var w=m.a.R(T);if(m.j.tb(w)&&(w.indexOf("-")!=-1||""+T=="[object HTMLUnknownElement]"||8>=m.a.W&&T.tagName===w))return w},m.j.tc=function(T,w,M,O){if(w.nodeType===1){var U=m.j.getComponentNameForNode(w);if(U){if(T=T||{},T.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var Q={name:U,params:p(w,M)};T.component=O?function(){return Q}:Q}}return T};var x=new m.ga;9>m.a.W&&(m.j.register=function(T){return function(w){return T.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(T){return function(){var w=T(),M=m.j.dd,O;for(O in M);return w}}(n.createDocumentFragment))}(),function(){function p(w,M,O){if(M=M.template,!M)throw Error("Component '"+w+"' has no template");w=m.a.Ca(M),m.h.va(O,w)}function x(w,M,O){var U=w.createViewModel;return U?U.call(w,M,O):M}var T=0;m.c.component={init:function(w,M,O,U,Q){function z(){var Y=F&&F.dispose;typeof Y=="function"&&Y.call(F),W&&W.s(),H=F=W=null}var F,H,W,Z=m.a.la(m.h.childNodes(w));return m.h.Ea(w),m.a.K.za(w,z),m.o(function(){var Y=m.a.f(M()),$,X;if(typeof Y=="string"?$=Y:($=m.a.f(Y.name),X=m.a.f(Y.params)),!$)throw Error("No component name specified");var he=m.i.Cb(w,Q),ge=H=++T;m.j.get($,function(fe){if(H===ge){if(z(),!fe)throw Error("Unknown component '"+$+"'");p($,fe,w);var ye=x(fe,X,{element:w,templateNodes:Z});fe=he.createChildContext(ye,{extend:function(Ie){Ie.$component=ye,Ie.$componentTemplateNodes=Z}}),ye&&ye.koDescendantsComplete&&(W=m.i.subscribe(w,m.i.pa,ye.koDescendantsComplete,ye)),F=ye,m.Oa(fe,w)}})},null,{l:w}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var N={class:"className",for:"htmlFor"};m.c.attr={update:function(p,x){var T=m.a.f(x())||{};m.a.P(T,function(w,M){M=m.a.f(M);var O=w.indexOf(":"),O="lookupNamespaceURI"in p&&0<O&&p.lookupNamespaceURI(w.substr(0,O)),U=M===!1||M===null||M===e;U?O?p.removeAttributeNS(O,w):p.removeAttribute(w):M=M.toString(),8>=m.a.W&&w in N?(w=N[w],U?p.removeAttribute(w):p[w]=M):U||(O?p.setAttributeNS(O,w,M):p.setAttribute(w,M)),w==="name"&&m.a.Yc(p,U?"":M)})}},function(){m.c.checked={after:["value","attr"],init:function(p,x,T){function w(){var Y=p.checked,$=O();if(!m.S.Ya()&&(Y||!Q&&!m.S.qa())){var X=m.u.G(x);if(F){var he=H?X.v():X,ge=Z;Z=$,ge!==$?Y&&(m.a.Na(he,$,!0),m.a.Na(he,ge,!1)):m.a.Na(he,$,Y),H&&m.Za(X)&&X(he)}else U&&($===e?$=Y:Y||($=e)),m.m.eb(X,T,"checked",$,!0)}}function M(){var Y=m.a.f(x()),$=O();F?(p.checked=0<=m.a.A(Y,$),Z=$):p.checked=U&&$===e?!!Y:O()===Y}var O=m.xb(function(){if(T.has("checkedValue"))return m.a.f(T.get("checkedValue"));if(W)return T.has("value")?m.a.f(T.get("value")):p.value}),U=p.type=="checkbox",Q=p.type=="radio";if(U||Q){var z=x(),F=U&&m.a.f(z)instanceof Array,H=!(F&&z.push&&z.splice),W=Q||F,Z=F?O():e;Q&&!p.name&&m.c.uniqueName.init(p,function(){return!0}),m.o(w,null,{l:p}),m.a.B(p,"click",w),m.o(M,null,{l:p}),z=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(p,x){p.value=m.a.f(x())}}}(),m.c.class={update:function(p,x){var T=m.a.Db(m.a.f(x()));m.a.Eb(p,p.__ko__cssValue,!1),p.__ko__cssValue=T,m.a.Eb(p,T,!0)}},m.c.css={update:function(p,x){var T=m.a.f(x());T!==null&&typeof T=="object"?m.a.P(T,function(w,M){M=m.a.f(M),m.a.Eb(p,w,M)}):m.c.class.update(p,x)}},m.c.enable={update:function(p,x){var T=m.a.f(x());T&&p.disabled?p.removeAttribute("disabled"):T||p.disabled||(p.disabled=!0)}},m.c.disable={update:function(p,x){m.c.enable.update(p,function(){return!m.a.f(x())})}},m.c.event={init:function(p,x,T,w,M){var O=x()||{};m.a.P(O,function(U){typeof U=="string"&&m.a.B(p,U,function(Q){var z,F=x()[U];if(F){try{var H=m.a.la(arguments);w=M.$data,H.unshift(w),z=F.apply(w,H)}finally{z!==!0&&(Q.preventDefault?Q.preventDefault():Q.returnValue=!1)}T.get(U+"Bubble")===!1&&(Q.cancelBubble=!0,Q.stopPropagation&&Q.stopPropagation())}})})}},m.c.foreach={Rc:function(p){return function(){var x=p(),T=m.a.bc(x);return!T||typeof T.length=="number"?{foreach:x,templateEngine:m.ba.Ma}:(m.a.f(x),{foreach:T.data,as:T.as,noChildContext:T.noChildContext,includeDestroyed:T.includeDestroyed,afterAdd:T.afterAdd,beforeRemove:T.beforeRemove,afterRender:T.afterRender,beforeMove:T.beforeMove,afterMove:T.afterMove,templateEngine:m.ba.Ma})}},init:function(p,x){return m.c.template.init(p,m.c.foreach.Rc(x))},update:function(p,x,T,w,M){return m.c.template.update(p,m.c.foreach.Rc(x),T,w,M)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(p,x,T){function w(U){p.__ko_hasfocusUpdating=!0;var Q=p.ownerDocument;if("activeElement"in Q){var z;try{z=Q.activeElement}catch{z=Q.body}U=z===p}Q=x(),m.m.eb(Q,T,"hasfocus",U,!0),p.__ko_hasfocusLastValue=U,p.__ko_hasfocusUpdating=!1}var M=w.bind(null,!0),O=w.bind(null,!1);m.a.B(p,"focus",M),m.a.B(p,"focusin",M),m.a.B(p,"blur",O),m.a.B(p,"focusout",O),p.__ko_hasfocusLastValue=!1},update:function(p,x){var T=!!m.a.f(x());p.__ko_hasfocusUpdating||p.__ko_hasfocusLastValue===T||(T?p.focus():p.blur(),!T&&p.__ko_hasfocusLastValue&&p.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[p,T?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.fc(p,x())}},function(){function p(x,T,w){m.c[x]={init:function(M,O,U,Q,z){var F,H,W={},Z,Y,$;if(T){Q=U.get("as");var X=U.get("noChildContext");$=!(Q&&X),W={as:Q,noChildContext:X,exportDependencies:$}}return Y=(Z=U.get("completeOn")=="render")||U.has(m.i.pa),m.o(function(){var he=m.a.f(O()),ge=!w!=!he,fe=!H,ye;($||ge!==F)&&(Y&&(z=m.i.Cb(M,z)),ge&&((!T||$)&&(W.dataDependency=m.S.o()),ye=T?z.createChildContext(typeof he=="function"?he:O,W):m.S.qa()?z.extend(null,W):z),fe&&m.S.qa()&&(H=m.a.Ca(m.h.childNodes(M),!0)),ge?(fe||m.h.va(M,m.a.Ca(H)),m.Oa(ye,M)):(m.h.Ea(M),Z||m.i.ma(M,m.i.H)),F=ge)},null,{l:M}),{controlsDescendantBindings:!0}}},m.m.Ra[x]=!1,m.h.ea[x]=!0}p("if"),p("ifnot",!1,!0),p("with",!0)}(),m.c.let={init:function(p,x,T,w,M){return x=M.extend(x),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var L={};m.c.options={init:function(p){if(m.a.R(p)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<p.length;)p.remove(0);return{controlsDescendantBindings:!0}},update:function(p,x,T){function w(){return m.a.jb(p.options,function(X){return X.selected})}function M(X,he,ge){var fe=typeof he;return fe=="function"?he(X):fe=="string"?X[he]:ge}function O(X,he){if(Y&&F)m.i.ma(p,m.i.H);else if(Z.length){var ge=0<=m.a.A(Z,m.w.M(he[0]));m.a.Zc(he[0],ge),Y&&!ge&&m.u.G(m.a.Fb,null,[p,"change"])}}var U=p.multiple,Q=p.length!=0&&U?p.scrollTop:null,z=m.a.f(x()),F=T.get("valueAllowUnset")&&T.has("value"),H=T.get("optionsIncludeDestroyed");x={};var W,Z=[];F||(U?Z=m.a.Mb(w(),m.w.M):0<=p.selectedIndex&&Z.push(m.w.M(p.options[p.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),W=m.a.jb(z,function(X){return H||X===e||X===null||!m.a.f(X._destroy)}),T.has("optionsCaption")&&(z=m.a.f(T.get("optionsCaption")),z!==null&&z!==e&&W.unshift(L)));var Y=!1;if(x.beforeRemove=function(X){p.removeChild(X)},z=O,T.has("optionsAfterRender")&&typeof T.get("optionsAfterRender")=="function"&&(z=function(X,he){O(0,he),m.u.G(T.get("optionsAfterRender"),null,[he[0],X!==L?X:e])}),m.a.ec(p,W,function(X,he,ge){return ge.length&&(Z=!F&&ge[0].selected?[m.w.M(ge[0])]:[],Y=!0),he=p.ownerDocument.createElement("option"),X===L?(m.a.Bb(he,T.get("optionsCaption")),m.w.cb(he,e)):(ge=M(X,T.get("optionsValue"),X),m.w.cb(he,m.a.f(ge)),X=M(X,T.get("optionsText"),ge),m.a.Bb(he,X)),[he]},x,z),!F){var $;U?$=Z.length&&w().length<Z.length:$=Z.length&&0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex])!==Z[0]:Z.length||0<=p.selectedIndex,$&&m.u.G(m.a.Fb,null,[p,"change"])}(F||m.S.Ya())&&m.i.ma(p,m.i.H),m.a.wd(p),Q&&20<Math.abs(Q-p.scrollTop)&&(p.scrollTop=Q)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(p,x,T){function w(){var U=x(),Q=[];m.a.D(p.getElementsByTagName("option"),function(z){z.selected&&Q.push(m.w.M(z))}),m.m.eb(U,T,"selectedOptions",Q)}function M(){var U=m.a.f(x()),Q=p.scrollTop;U&&typeof U.length=="number"&&m.a.D(p.getElementsByTagName("option"),function(z){var F=0<=m.a.A(U,m.w.M(z));z.selected!=F&&m.a.Zc(z,F)}),p.scrollTop=Q}if(m.a.R(p)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var O;m.i.subscribe(p,m.i.H,function(){O?w():(m.a.B(p,"change",w),O=m.o(M,null,{l:p}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(p,x){var T=m.a.f(x()||{});m.a.P(T,function(w,M){if(M=m.a.f(M),(M===null||M===e||M===!1)&&(M=""),o)o(p).css(w,M);else if(/^--/.test(w))p.style.setProperty(w,M);else{w=w.replace(/-(\w)/g,function(U,Q){return Q.toUpperCase()});var O=p.style[w];p.style[w]=M,M===O||p.style[w]!=O||isNaN(M)||(p.style[w]=M+"px")}})}},m.c.submit={init:function(p,x,T,w,M){if(typeof x()!="function")throw Error("The value for a submit binding must be a function");m.a.B(p,"submit",function(O){var U,Q=x();try{U=Q.call(M.$data,p)}finally{U!==!0&&(O.preventDefault?O.preventDefault():O.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.Bb(p,x())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var p=function(W){if(W)return parseFloat(W[1])},x=t.navigator.userAgent,T,w,M,O,U;(T=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(U=p(x.match(/Edge\/([^ ]+)$/)))||p(x.match(/Chrome\/([^ ]+)/))||(w=p(x.match(/Version\/([^ ]+) Safari/)))||(M=p(x.match(/Firefox\/([^ ]+)/)))||(O=m.a.W||p(x.match(/MSIE ([^ ]+)/)))||(O=p(x.match(/rv:([^ )]+)/)))}if(8<=O&&10>O)var Q=m.a.g.Z(),z=m.a.g.Z(),F=function(W){var Z=this.activeElement;(Z=Z&&m.a.g.get(Z,z))&&Z(W)},H=function(W,Z){var Y=W.ownerDocument;m.a.g.get(Y,Q)||(m.a.g.set(Y,Q,!0),m.a.B(Y,"selectionchange",F)),m.a.g.set(W,z,Z)};m.c.textInput={init:function(W,Z,Y){function $(ke,Ge){m.a.B(W,ke,Ge)}function X(){var ke=m.a.f(Z());(ke===null||ke===e)&&(ke=""),Ie!==e&&ke===Ie?m.a.setTimeout(X,4):W.value!==ke&&(Te=!0,W.value=ke,Te=!1,fe=W.value)}function he(){ye||(Ie=W.value,ye=m.a.setTimeout(ge,4))}function ge(){clearTimeout(ye),Ie=ye=e;var ke=W.value;fe!==ke&&(fe=ke,m.m.eb(Z(),Y,"textInput",ke))}var fe=W.value,ye,Ie,ve=m.a.W==9?he:ge,Te=!1;O&&$("keypress",ge),11>O&&$("propertychange",function(ke){Te||ke.propertyName!=="value"||ve(ke)}),O==8&&($("keyup",ge),$("keydown",ge)),H&&(H(W,ve),$("dragend",he)),(!O||9<=O)&&$("input",ve),5>w&&m.a.R(W)==="textarea"?($("keydown",he),$("paste",he),$("cut",he)):11>T?$("keydown",he):4>M?($("DOMAutoComplete",ge),$("dragdrop",ge),$("drop",ge)):U&&W.type==="number"&&$("keydown",he),$("change",ge),$("blur",ge),m.o(X,null,{l:W})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(W,Z,Y){Y("textInput",W)}}}(),m.c.uniqueName={init:function(p,x){if(x()){var T="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(p,T)}}},m.c.uniqueName.rd=0,m.c.using={init:function(p,x,T,w,M){var O;return T.has("as")&&(O={as:T.get("as"),noChildContext:T.get("noChildContext")}),x=M.createChildContext(x,O),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(p,x,T){var w=m.a.R(p),M=w=="input";if(!M||p.type!="checkbox"&&p.type!="radio"){var O=[],U=T.get("valueUpdate"),Q=!1,z=null;U&&(typeof U=="string"?O=[U]:O=m.a.wc(U),m.a.Pa(O,"change"));var F=function(){z=null,Q=!1;var Z=x(),Y=m.w.M(p);m.m.eb(Z,T,"value",Y)};!m.a.W||!M||p.type!="text"||p.autocomplete=="off"||p.form&&p.form.autocomplete=="off"||m.a.A(O,"propertychange")!=-1||(m.a.B(p,"propertychange",function(){Q=!0}),m.a.B(p,"focus",function(){Q=!1}),m.a.B(p,"blur",function(){Q&&F()})),m.a.D(O,function(Z){var Y=F;m.a.Ud(Z,"after")&&(Y=function(){z=m.w.M(p),m.a.setTimeout(F,0)},Z=Z.substring(5)),m.a.B(p,Z,Y)});var H;if(H=M&&p.type=="file"?function(){var Z=m.a.f(x());Z===null||Z===e||Z===""?p.value="":m.u.G(F)}:function(){var Z=m.a.f(x()),Y=m.w.M(p);z!==null&&Z===z?m.a.setTimeout(H,0):(Z!==Y||Y===e)&&(w==="select"?(Y=T.get("valueAllowUnset"),m.w.cb(p,Z,Y),Y||Z===m.w.M(p)||m.u.G(F)):m.w.cb(p,Z))},w==="select"){var W;m.i.subscribe(p,m.i.H,function(){W?T.get("valueAllowUnset")?H():F():(m.a.B(p,"change",F),W=m.o(H,null,{l:p}))},null,{notifyImmediately:!0})}else m.a.B(p,"change",F),m.o(H,null,{l:p})}else m.ib(p,{checkedValue:x})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(p,x){var T=m.a.f(x()),w=p.style.display!="none";T&&!w?p.style.display="":!T&&w&&(p.style.display="none")}},m.c.hidden={update:function(p,x){m.c.visible.update(p,function(){return!m.a.f(x())})}},function(p){m.c[p]={init:function(x,T,w,M,O){return m.c.event.init.call(this,x,function(){var U={};return U[p]=T(),U},w,M,O)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(p,x){if(typeof p=="string"){x=x||n;var T=x.getElementById(p);if(!T)throw Error("Cannot find template with ID "+p);return new m.C.F(T)}if(p.nodeType==1||p.nodeType==8)return new m.C.ia(p);throw Error("Unknown template type: "+p)},m.ca.prototype.renderTemplate=function(p,x,T,w){return p=this.makeTemplateSource(p,w),this.renderTemplateSource(p,x,T,w)},m.ca.prototype.isTemplateRewritten=function(p,x){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(p,x).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(p,x,T){p=this.makeTemplateSource(p,T),x=x(p.text()),p.text(x),p.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function p(w,M,O,U){w=m.m.ac(w);for(var Q=m.m.Ra,z=0;z<w.length;z++){var F=w[z].key;if(Object.prototype.hasOwnProperty.call(Q,F)){var H=Q[F];if(typeof H=="function"){if(F=H(w[z].value))throw Error(F)}else if(!H)throw Error("This template engine does not support the '"+F+"' binding within its templates")}}return O="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(w,{valueAccessors:!0})+" } })()},'"+O.toLowerCase()+"')",U.createJavaScriptEvaluatorBlock(O)+M}var x=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,T=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(w,M,O){M.isTemplateRewritten(w,O)||M.rewriteTemplate(w,function(U){return m.kc.Ld(U,M)},O)},Ld:function(w,M){return w.replace(x,function(O,U,Q,z,F){return p(F,U,Q,M)}).replace(T,function(O,U){return p(U,"<!-- ko -->","#comment",M)})},md:function(w,M){return m.aa.Xb(function(O,U){var Q=O.nextSibling;Q&&Q.nodeName.toLowerCase()===M&&m.ib(Q,w,U)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(T){if(this.F=T){var w=m.a.R(T);this.ab=w==="script"?1:w==="textarea"?2:w=="template"&&T.content&&T.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var T=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[T];var w=arguments[0];T==="innerHTML"?m.a.fc(this.F,w):this.F[T]=w};var p=m.a.g.Z()+"_";m.C.F.prototype.data=function(T){if(arguments.length===1)return m.a.g.get(this.F,p+T);m.a.g.set(this.F,p+T,arguments[1])};var x=m.a.g.Z();m.C.F.prototype.nodes=function(){var T=this.F;if(arguments.length==0){var w=m.a.g.get(T,x)||{},M=w.lb||(this.ab===3?T.content:this.ab===4?T:e);if(!M||w.jd){var O=this.text();O&&O!==w.bb&&(M=m.a.Md(O,T.ownerDocument),m.a.g.set(T,x,{lb:M,bb:O,jd:!0}))}return M}w=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(T,x,{lb:w})},m.C.ia=function(T){this.F=T},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var T=m.a.g.get(this.F,x)||{};return T.bb===e&&T.lb&&(T.bb=T.lb.innerHTML),T.bb}m.a.g.set(this.F,x,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function p(z,F,H){var W;for(F=m.h.nextSibling(F);z&&(W=z)!==F;)z=m.h.nextSibling(W),H(W,z)}function x(z,F){if(z.length){var H=z[0],W=z[z.length-1],Z=H.parentNode,Y=m.ga.instance,$=Y.preprocessNode;if($){if(p(H,W,function(X,he){var ge=X.previousSibling,fe=$.call(Y,X);fe&&(X===H&&(H=fe[0]||he),X===W&&(W=fe[fe.length-1]||ge))}),z.length=0,!H)return;H===W?z.push(H):(z.push(H,W),m.a.Ua(z,Z))}p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.vc(F,X)}),p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.aa.cd(X,[F])}),m.a.Ua(z,Z)}}function T(z){return z.nodeType?z:0<z.length?z[0]:null}function w(z,F,H,W,Z){Z=Z||{};var Y=(z&&T(z)||H||{}).ownerDocument,$=Z.templateEngine||O;if(m.kc.xd(H,$,Y),H=$.renderTemplate(H,W,Z,Y),typeof H.length!="number"||0<H.length&&typeof H[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(Y=!1,F){case"replaceChildren":m.h.va(z,H),Y=!0;break;case"replaceNode":m.a.Xc(z,H),Y=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+F)}return Y&&(x(H,W),Z.afterRender&&m.u.G(Z.afterRender,null,[H,W[Z.as||"$data"]]),F=="replaceChildren"&&m.i.ma(z,m.i.H)),H}function M(z,F,H){return m.O(z)?z():typeof z=="function"?z(F,H):z}var O;m.gc=function(z){if(z!=e&&!(z instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");O=z},m.dc=function(z,F,H,W,Z){if(H=H||{},(H.templateEngine||O)==e)throw Error("Set a template engine before calling renderTemplate");if(Z=Z||"replaceChildren",W){var Y=T(W);return m.$(function(){var X=F&&F instanceof m.fa?F:new m.fa(F,null,null,null,{exportDependencies:!0}),$=M(z,X.$data,X),X=w(W,Z,$,X,H);Z=="replaceNode"&&(W=X,Y=T(W))},null,{Sa:function(){return!Y||!m.a.Sb(Y)},l:Y&&Z=="replaceNode"?Y.parentNode:Y})}return m.aa.Xb(function($){m.dc(z,F,H,$,"replaceNode")})},m.Qd=function(z,F,H,W,Z){function Y(Ie,ve){m.u.G(m.a.ec,null,[W,Ie,X,H,$,ve]),m.i.ma(W,m.i.H)}function $(Ie,ve){x(ve,he),H.afterRender&&H.afterRender(ve,Ie),he=null}function X(Ie,ve){he=Z.createChildContext(Ie,{as:ge,noChildContext:H.noChildContext,extend:function(ke){ke.$index=ve,ge&&(ke[ge+"Index"]=ve)}});var Te=M(z,Ie,he);return w(W,"ignoreTargetNode",Te,he,H)}var he,ge=H.as,fe=H.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!H.includeDestroyed;if(fe||H.beforeRemove||!m.Pc(F))return m.$(function(){var Ie=m.a.f(F)||[];typeof Ie.length>"u"&&(Ie=[Ie]),fe&&(Ie=m.a.jb(Ie,function(ve){return ve===e||ve===null||!m.a.f(ve._destroy)})),Y(Ie)},null,{l:W});Y(F.v());var ye=F.subscribe(function(Ie){Y(F(),Ie)},null,"arrayChange");return ye.l(W),ye};var U=m.a.g.Z(),Q=m.a.g.Z();m.c.template={init:function(z,F){var H=m.a.f(F());if(typeof H=="string"||"name"in H)m.h.Ea(z);else if("nodes"in H){if(H=H.nodes||[],m.O(H))throw Error('The "nodes" option must be a plain, non-observable array.');var W=H[0]&&H[0].parentNode;W&&m.a.g.get(W,Q)||(W=m.a.Yb(H),m.a.g.set(W,Q,!0)),new m.C.ia(z).nodes(W)}else if(H=m.h.childNodes(z),0<H.length)W=m.a.Yb(H),new m.C.ia(z).nodes(W);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,F,H,W,Z){var Y=F();F=m.a.f(Y),H=!0,W=null,typeof F=="string"?F={}:(Y="name"in F?F.name:z,"if"in F&&(H=m.a.f(F.if)),H&&"ifnot"in F&&(H=!m.a.f(F.ifnot)),H&&!Y&&(H=!1)),"foreach"in F?W=m.Qd(Y,H&&F.foreach||[],F,z,Z):H?(H=Z,"data"in F&&(H=Z.createChildContext(F.data,{as:F.as,noChildContext:F.noChildContext,exportDependencies:!0})),W=m.dc(Y,H,F,z)):m.h.Ea(z),Z=W,(F=m.a.g.get(z,U))&&typeof F.s=="function"&&F.s(),m.a.g.set(z,U,!Z||Z.ja&&!Z.ja()?e:Z)}},m.m.Ra.template=function(z){return z=m.m.ac(z),z.length==1&&z[0].unknown||m.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(p,x,T){if(p.length&&x.length){var w,M,O,U,Q;for(w=M=0;(!T||w<T)&&(U=p[M]);++M){for(O=0;Q=x[O];++O)if(U.value===Q.value){U.moved=Q.index,Q.moved=U.index,x.splice(O,1),w=O=0;break}w+=O}}},m.a.Pb=function(){function p(x,T,w,M,O){var U=Math.min,Q=Math.max,z=[],F,H=x.length,W,Z=T.length,Y=Z-H||1,$=H+Z+1,X,he,ge;for(F=0;F<=H;F++)for(he=X,z.push(X=[]),ge=U(Z,F+Y),W=Q(0,F-1);W<=ge;W++)X[W]=W?F?x[F-1]===T[W-1]?he[W-1]:U(he[W]||$,X[W-1]||$)+1:W+1:F+1;for(U=[],Q=[],Y=[],F=H,W=Z;F||W;)Z=z[F][W]-1,W&&Z===z[F][W-1]?Q.push(U[U.length]={status:w,value:T[--W],index:W}):F&&Z===z[F-1][W]?Y.push(U[U.length]={status:M,value:x[--F],index:F}):(--W,--F,O.sparse||U.push({status:"retained",value:T[W]}));return m.a.Kc(Y,Q,!O.dontLimitMoves&&10*H),U.reverse()}return function(x,T,w){return w=typeof w=="boolean"?{dontLimitMoves:w}:w||{},x=x||[],T=T||[],x.length<T.length?p(x,T,"added","deleted",w):p(T,x,"deleted","added",w)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function p(w,M,O,U,Q){var z=[],F=m.$(function(){var H=M(O,Q,m.a.Ua(z,w))||[];0<z.length&&(m.a.Xc(z,H),U&&m.u.G(U,null,[O,H,Q])),z.length=0,m.a.Nb(z,H)},null,{l:w,Sa:function(){return!m.a.kd(z)}});return{Y:z,$:F.ja()?F:e}}var x=m.a.g.Z(),T=m.a.g.Z();m.a.ec=function(w,M,O,U,Q,z){function F(vt){Te={Aa:vt,pb:m.ta(he++)},$.push(Te),Y||ve.push(Te)}function H(vt){Te=Z[vt],he!==Te.pb.v()&&Ie.push(Te),Te.pb(he++),m.a.Ua(Te.Y,w),$.push(Te)}function W(vt,bi){if(vt)for(var di=0,Ot=bi.length;di<Ot;di++)m.a.D(bi[di].Y,function(Tt){vt(Tt,di,bi[di].Aa)})}M=M||[],typeof M.length>"u"&&(M=[M]),U=U||{};var Z=m.a.g.get(w,x),Y=!Z,$=[],X=0,he=0,ge=[],fe=[],ye=[],Ie=[],ve=[],Te,ke=0;if(Y)m.a.D(M,F);else{if(!z||Z&&Z._countWaitingForRemove){var Ge=m.a.Mb(Z,function(vt){return vt.Aa});z=m.a.Pb(Ge,M,{dontLimitMoves:U.dontLimitMoves,sparse:!0})}for(var Ge=0,qe,tt,$t;qe=z[Ge];Ge++)switch(tt=qe.moved,$t=qe.index,qe.status){case"deleted":for(;X<$t;)H(X++);tt===e&&(Te=Z[X],Te.$&&(Te.$.s(),Te.$=e),m.a.Ua(Te.Y,w).length&&(U.beforeRemove&&($.push(Te),ke++,Te.Aa===T?Te=null:ye.push(Te)),Te&&ge.push.apply(ge,Te.Y))),X++;break;case"added":for(;he<$t;)H(X++);tt!==e?(fe.push($.length),H(tt)):F(qe.value)}for(;he<M.length;)H(X++);$._countWaitingForRemove=ke}m.a.g.set(w,x,$),W(U.beforeMove,Ie),m.a.D(ge,U.beforeRemove?m.oa:m.removeNode);var it,tn,Wt;try{Wt=w.ownerDocument.activeElement}catch{}if(fe.length)for(;(Ge=fe.shift())!=e;){for(Te=$[Ge],it=e;Ge;)if((tn=$[--Ge].Y)&&tn.length){it=tn[tn.length-1];break}for(M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it)}for(Ge=0;Te=$[Ge];Ge++){for(Te.Y||m.a.extend(Te,p(w,O,Te.Aa,Q,Te.pb)),M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it);!Te.Ed&&Q&&(Q(Te.Aa,Te.Y,Te.pb),Te.Ed=!0,it=Te.Y[Te.Y.length-1])}for(Wt&&w.ownerDocument.activeElement!=Wt&&Wt.focus(),W(U.beforeRemove,ye),Ge=0;Ge<ye.length;++Ge)ye[Ge].Aa=T;W(U.afterMove,Ie),W(U.afterAdd,ve)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(p,x,T,w){return(x=!(9>m.a.W)&&p.nodes?p.nodes():null)?m.a.la(x.cloneNode(!0).childNodes):(p=p.text(),m.a.ua(p,w))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var x=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(T,w,M,O){if(O=O||n,M=M||{},2>x)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var U=T.data("precompiled");return U||(U=T.text()||"",U=o.template(null,"{{ko_with $item.koBindingContext}}"+U+"{{/ko_with}}"),T.data("precompiled",U)),T=[w.$data],w=o.extend({koBindingContext:w},M.templateOptions),w=o.tmpl(U,T,w),w.appendTo(O.createElement("div")),o.fragments={},w},this.createJavaScriptEvaluatorBlock=function(T){return"{{ko_code ((function() { return "+T+" })()) }}"},this.addTemplate=function(T,w){n.write("<script type='text/html' id='"+T+"'>"+w+"<\/script>")},0<x&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var p=new m.$a;0<p.Hd&&m.gc(p),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var wBt=ko;typeof window<"u"?(ko=window.ko,typeof lR<"u"?window.ko=lR:delete window.ko):(ko=global.ko,typeof lR<"u"?global.ko=lR:delete global.ko);var PS=wBt;/**
|
||
* @license
|
||
* Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5
|
||
* Copyright (c) Steve Sanderson
|
||
* MIT license
|
||
*/var GZ="__knockoutObservables",zZ="__knockoutSubscribable";function jTe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=YTe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===GZ||o===zZ)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&DBt(n,a)}}),e}function YTe(e,t){var n=e[GZ];return!n&&t&&(n={},Object.defineProperty(e,GZ,{value:n})),n}function BBt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),jTe.call(i,e,[t]),e}function DBt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=vBt(e,t,i))})}function vBt(e,t,n){var i=PBt(e,n);return i.subscribe(t)}function PBt(e,t){var n=t[zZ];if(!n){n=new e.subscribable,Object.defineProperty(t,zZ,{value:n});var i={};RBt(t,n,i),MBt(e,t,n,i)}return n}function RBt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function MBt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function qTe(e,t){if(!e)return null;var n=YTe(e,!1);return n&&n[t]||null}function NBt(e,t){var n=qTe(e,t);n&&n.valueHasMutated()}function LBt(e){e.track=jTe,e.getObservable=qTe,e.valueHasMutated=NBt,e.defineProperty=BBt}var mH={attachToKo:LBt};var KTe="http://www.w3.org/2000/svg",XTe="cesium-svgPath-svg",OBt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(KTe,"svg:svg");i.setAttribute("class",XTe);let o=document.createElementNS(KTe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${XTe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},AH=OBt;mH.attachToKo(PS);AH.register(PS);var xe=PS;function uR(e){l(e)||(e=new Vm),this._clock=e,this._eventHelper=new Lr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=xe.observable(K.now()),this.systemTime.equalityComparer=K.equals,this.startTime=xe.observable(e.startTime),this.startTime.equalityComparer=K.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=xe.observable(e.stopTime),this.stopTime.equalityComparer=K.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=xe.observable(e.currentTime),this.currentTime.equalityComparer=K.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=xe.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=xe.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=xe.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=xe.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=xe.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),xe.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(uR.prototype,{clock:{get:function(){return this._clock}}});uR.prototype.synchronize=function(){let e=this._clock;this.systemTime=K.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};uR.prototype.isDestroyed=function(){return!1};uR.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var pH=uR;function FBt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,me.throwInstantiationError()}var JTe=FBt;var RS={};RS.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};RS.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};RS.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};RS.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};RS.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var ff=RS;function ZTe(e,t){this._command=e,t=t??V.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",xe.track(this,["toggled","tooltip"])}Object.defineProperties(ZTe.prototype,{command:{get:function(){return this._command}}});var L0=ZTe;function QBt(e,t){t=t??!0;let n=new _e,i=new _e;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,xe.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Mn=QBt;function kBt(e,t,n,i,o){return n.call(i,e[t]),xe.getObservable(e,t).subscribe(n,i,o)}var fc=kBt;var O0="http://www.w3.org/2000/svg",tSe="http://www.w3.org/1999/xlink",gH,fR=G.fromCssColorString("rgba(247,250,255,0.384)"),_H=G.fromCssColorString("rgba(143,191,255,0.216)"),VZ=G.fromCssColorString("rgba(153,197,255,0.098)"),yH=G.fromCssColorString("rgba(255,255,255,0.086)"),UBt=G.fromCssColorString("rgba(255,255,255,0.267)"),GBt=G.fromCssColorString("rgba(255,255,255,0)"),$Te=G.fromCssColorString("rgba(66,67,68,0.3)"),eSe=G.fromCssColorString("rgba(0,0,0,0.5)");function tC(e){return G.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var dR={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function jh(e){let t=document.createElementNS(O0,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(jh(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(tSe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function HZ(e,t,n){let i=document.createElementNS(O0,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(O0,"tspan");return o.textContent=n,i.appendChild(o),i}function zBt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var CH=new G;function gs(e,t){let n=t.alpha,i=1-n;return CH.red=e.red*i+t.red*n,CH.green=e.green*i+t.green*n,CH.blue=e.blue*i+t.blue*n,CH.toCssColorString()}function WZ(e,t,n){let i=dR[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(o)}function VBt(e,t,n){let i=dR[n],o=dR.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(r)}function HBt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&gH!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,A=u-r-a.top,g=Math.atan2(A,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(gH=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===gH&&(gH=void 0),n.shuttleRingDragging=!1}function cg(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[fc(t,"toggled",this.setToggled,this),fc(t,"tooltip",this.setTooltip,this),fc(t.command,"canExecute",this.setEnabled,this)]}cg.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};cg.prototype.isDestroyed=function(){return!1};cg.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};cg.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};cg.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function MS(e,t){e=Gn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(O0,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",tSe);let s=document.createElementNS(O0,"g");this._topG=s,this._realtimeSVG=new cg(VBt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new cg(WZ(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new cg(WZ(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new cg(WZ(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(O0,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=jh({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=dR.animation_pathSwooshFX,f=dR.animation_pathPointer,h=jh({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=jh({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let A=jh({tagName:"g",transform:"translate(100,100)"});this._knobOuter=jh({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=jh({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=HZ(0,-24,""),this._knobTime=HZ(0,-7,""),this._knobStatus=HZ(0,-41,"");let _=jh({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),y=document.createElementNS(O0,"g");y.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(y),s.appendChild(A),s.appendChild(a),y.appendChild(c),y.appendChild(h),y.appendChild(this._shuttleRingPointer),A.appendChild(this._knobOuter),A.appendChild(m),A.appendChild(this._knobDate),A.appendChild(this._knobTime),A.appendChild(this._knobStatus),A.appendChild(_),r.appendChild(s),e.appendChild(r);let C=this;function E(v){HBt(C,v)}this._mouseCallback=E,c.addEventListener("mousedown",E,!0),c.addEventListener("touchstart",E,!0),h.addEventListener("mousedown",E,!0),h.addEventListener("touchstart",E,!0),n.addEventListener("mousemove",E,!0),n.addEventListener("touchmove",E,!0),n.addEventListener("mouseup",E,!0),n.addEventListener("touchend",E,!0),n.addEventListener("touchcancel",E,!0),this._shuttleRingPointer.addEventListener("mousedown",E,!0),this._shuttleRingPointer.addEventListener("touchstart",E,!0),this._knobOuter.addEventListener("mousedown",E,!0),this._knobOuter.addEventListener("touchstart",E,!0);let I=this._knobTime.childNodes[0],b=this._knobDate.childNodes[0],S=this._knobStatus.childNodes[0],B;this._subscriptions=[fc(t.pauseViewModel,"toggled",function(v){B!==v&&(B=v,B?C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),fc(t,"shuttleRingAngle",function(v){zBt(C._shuttleRingPointer,C._knobOuter,v)}),fc(t,"dateLabel",function(v){b.textContent!==v&&(b.textContent=v)}),fc(t,"timeLabel",function(v){I.textContent!==v&&(I.textContent=v)}),fc(t,"multiplierLabel",function(v){S.textContent!==v&&(S.textContent=v)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(MS.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MS.prototype.isDestroyed=function(){return!1};MS.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};MS.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};MS.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=tC(this._themeNormal),n=tC(this._themeHover),i=tC(this._themeSelect),o=tC(this._themeDisabled),r=tC(this._themeKnob),s=tC(this._themePointer),a=tC(this._themeSwoosh),c=tC(this._themeSwooshHover),u=jh({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(t,fR)},{tagName:"stop",offset:"12%","stop-color":gs(t,_H)},{tagName:"stop",offset:"46%","stop-color":gs(t,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(t,yH)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(n,fR)},{tagName:"stop",offset:"12%","stop-color":gs(n,_H)},{tagName:"stop",offset:"46%","stop-color":gs(n,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(n,yH)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(i,fR)},{tagName:"stop",offset:"12%","stop-color":gs(i,_H)},{tagName:"stop",offset:"46%","stop-color":gs(i,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(i,yH)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(o,UBt)},{tagName:"stop",offset:"75%","stop-color":gs(o,GBt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":gs(s,eSe)},{tagName:"stop",offset:"100%","stop-color":gs(s,eSe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,fR)},{tagName:"stop",offset:"60%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"85%","stop-color":gs(r,_H)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"60%","stop-color":gs(r,fR)},{tagName:"stop",offset:"85%","stop-color":gs(r,yH)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var EH=MS;var WBt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nC=15,NS=105;function nSe(e,t){return e-t}function jZ(e,t){let n=qo(t,e,nSe);return n<0?~n:n}function jBt(e,t){if(Math.abs(e)<=nC)return e/nC;let n=nC,i=NS,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function YBt(e,t,n){if(n.clockStep===vo.SYSTEM_CLOCK)return nC;if(Math.abs(e)<=1)return e*nC;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=nC,r=NS,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Sd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Sd.defaultDateFormatter,this._timeFormatter=Sd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,xe.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Sd.defaultTicks),this.timeLabel=void 0,xe.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,xe.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,xe.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===vo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,xe.defineProperty(this,"shuttleRingAngle",{get:function(){return YBt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,NS),-NS);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===NS){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=jBt(s,a);if(t.snapToTicks)u=a[jZ(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,A=Math.pow(10,h);u=Math.round(u/A)*A|0}else f>nC?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,xe.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===As.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===As.LOOP_STOP)h=K.greaterThan(u,f)||u.equals(f)&&c>0;else{let A=s.stopTime;h=K.greaterThan(u,f)&&K.lessThan(u,A)||u.equals(f)&&c>0||u.equals(A)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,xe.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===As.UNBOUNDED)return!0;let c=s.systemTime;return K.greaterThanOrEquals(c,s.startTime)&&K.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,xe.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Mn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new L0(n,{toggled:xe.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new L0(i,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new L0(o,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==vo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Mn(function(){t._clockViewModel.clockStep=vo.SYSTEM_CLOCK},xe.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new L0(r,{toggled:xe.computed(function(){return e.clockStep===vo.SYSTEM_CLOCK}),tooltip:xe.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)+1;u<a.length&&(s.multiplier=a[u])})}Sd.defaultDateFormatter=function(e,t){let n=K.toGregorianDate(e);return`${WBt[n.month-1]} ${n.day} ${n.year}`};Sd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Sd.defaultTimeFormatter=function(e,t){let n=K.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Sd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Sd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(nSe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);si(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Sd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Sd._maxShuttleRingAngle=NS;Sd._realtimeShuttleRingAngle=nC;var IH=Sd;function iSe(e){e=e??V.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??V.EMPTY_ARRAY,i=e.terrainProviderViewModels??V.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,xe.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=xe.getObservable(this,"imageryProviderViewModels"),r=xe.pureComputed(function(){let h=o(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._imageryProviders=r;let s=xe.getObservable(this,"terrainProviderViewModels"),a=xe.pureComputed(function(){let h=s(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._terrainProviders=a,this.buttonTooltip=void 0,xe.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,A=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(A)?A.name:void 0;return l(g)&&l(m)?`${g}
|
||
${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,xe.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=xe.observable();this._currentImageryLayers=[],xe.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let A,g=this._currentImageryLayers,m=g.length,_=this._globe.imageryLayers,y=!1;for(A=0;A<m;A++){let C=_.length;for(let E=0;E<C;E++){let I=_.get(E);if(I===g[A]){_.remove(I),y=!0;break}}}if(l(h)){let C=h.creationCommand();if(Array.isArray(C)){let E=C.length;for(this._currentImageryLayers=[],A=E-1;A>=0;A--){let I=ds.fromProviderAsync(C[A]);_.add(I,0),this._currentImageryLayers.push(I)}}else{this._currentImageryLayers=[];let E=ds.fromProviderAsync(C);if(E.name=h.name,y)_.add(E,0);else{let I=_.get(0);l(I)&&_.remove(I),_.add(E,0)}this._currentImageryLayers.push(E)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=xe.observable();xe.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let A;if(l(h)&&(A=h.creationCommand()),l(A)&&!l(A.then))this._globe.depthTestAgainstTerrain=!(A instanceof jp),this._globe.terrainProvider=A;else if(l(A)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),y=new uH(A).readyEvent.addEventListener(C=>{g||(this._globe.depthTestAgainstTerrain=!(C instanceof jp),this._globe.terrainProvider=C,y())})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Mn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(iSe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var xH=iSe;function bH(e,t){e=Gn(e);let n=new xH(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let A=document.createElement("img");A.className="cesium-baseLayerPicker-itemIcon",A.setAttribute("data-bind","attr: { src: iconUrl }"),A.setAttribute("draggable","false"),h.appendChild(A);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let _=document.createElement("div");_.className="cesium-baseLayerPicker-section",_.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(_);let y=document.createElement("div");y.className="cesium-baseLayerPicker-category",_.appendChild(y);let C=document.createElement("div");C.className="cesium-baseLayerPicker-categoryTitle",C.setAttribute("data-bind","text: name"),y.appendChild(C);let E=document.createElement("div");E.className="cesium-baseLayerPicker-choices",E.setAttribute("data-bind","foreach: providers"),y.appendChild(E);let I=document.createElement("div");I.className="cesium-baseLayerPicker-item",I.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),E.appendChild(I);let b=document.createElement("img");b.className="cesium-baseLayerPicker-itemIcon",b.setAttribute("data-bind","attr: { src: iconUrl }"),b.setAttribute("draggable","false"),I.appendChild(b);let S=document.createElement("div");S.className="cesium-baseLayerPicker-itemLabel",S.setAttribute("data-bind","text: name"),I.appendChild(S),xe.applyBindings(n,i),xe.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(B){i.contains(B.target)||r.contains(B.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(bH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});bH.prototype.isDestroyed=function(){return!1};bH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._element),xe.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var TH=bH;function oSe(e){let t=e.creationFunction;l(t.canExecute)||(t=Mn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",xe.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(oSe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Fs=oSe;function qBt(){let e=[],t=devicePixelRatio>=2;return e.push(new Fs({name:"Bing Maps Aerial",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL})}})),e.push(new Fs({name:"Bing Maps Aerial with Labels",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL_WITH_LABELS})}})),e.push(new Fs({name:"Bing Maps Roads",iconUrl:fn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.ROAD})}})),e.push(new Fs({name:"ArcGIS World Imagery",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at
|
||
https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"ArcGIS World Hillshade",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at
|
||
https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Esri World Ocean",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at
|
||
https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.OCEANS,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Open\xADStreet\xADMap",iconUrl:fn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world.
|
||
http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new eC({url:"https://tile.openstreetmap.org/"})}})),e.push(new Fs({name:"Stadia x Stamen Watercolor",iconUrl:fn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map.
|
||
https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a>
|
||
© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
|
||
© <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
|
||
© <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia x Stamen Toner",iconUrl:fn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays.
|
||
https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a>
|
||
© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
|
||
© <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
|
||
© <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine.
|
||
https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
|
||
© <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
|
||
© <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth Dark",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine.
|
||
https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>
|
||
© <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>
|
||
© <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Sentinel-2",iconUrl:fn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3954)}})),e.push(new Fs({name:"Blue Marble",iconUrl:fn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3845)}})),e.push(new Fs({name:"Earth at night",iconUrl:fn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3812)}})),e.push(new Fs({name:"Natural Earth\xA0II",iconUrl:fn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast.
|
||
http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return iE.fromUrl(fn("Assets/Textures/NaturalEarthII"))}})),e}var SH=qBt;function KBt(){let e=[];return e.push(new Fs({name:"WGS84 Ellipsoid",iconUrl:fn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new jp({ellipsoid:te.WGS84})}})),e.push(new Fs({name:"Cesium World Terrain",iconUrl:fn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return IS({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var wH=KBt;function XBt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof qs&&(e.tileset=n.primitive),e.pickActive=!1}}function sSe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof qs&&(e.tileset=i.primitive)},vn.MOUSE_MOVE):(e._eventHandler.removeInputAction(vn.MOUSE_MOVE),e.picking=e.picking)}var JBt={maximumFractionDigits:3};function hR(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,JBt):Math.round(t).toLocaleString()}function mR(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[Zo.PICK]:e._statisticsPerPass[Zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${hR(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${hR(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${hR(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function aSe(){let e=Qi.statistics;return`
|
||
<ul class="cesium-cesiumInspector-statistics">
|
||
<li><strong>Geometry Memory (MB): </strong>${hR(e.geometryByteLength)}</li>
|
||
<li><strong>Texture Memory (MB): </strong>${hR(e.texturesByteLength)}</li>
|
||
</ul>
|
||
`}var ZBt=[{text:"Highlight",value:Su.HIGHLIGHT},{text:"Replace",value:Su.REPLACE},{text:"Mix",value:Su.MIX}],rSe=new G(1,1,0,.4),$Bt=new G,BH=new G;function Ya(e,t){let n=this,i=e.canvas;this._eventHandler=new Cd(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new Ny({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,xe.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=xe.observable({}),this.properties=[],xe.defineProperty(this,"properties",function(){let F=[],H=n._properties();for(let W in H)H.hasOwnProperty(W)&&F.push(W);return F});let o=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(F){o(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=F)}}),this.dynamicScreenSpaceError=!1;let r=xe.observable();xe.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(F){r(F),l(n._tileset)&&(n._tileset.colorBlendMode=F,n._scene.requestRender())}}),this.colorBlendMode=Su.HIGHLIGHT;let s=xe.observable(),a=xe.observable();xe.defineProperty(this,"picking",{get:function(){return a()},set:function(F){a(F),F?n._eventHandler.setInputAction(function(H){let W=e.pick(H.endPosition);if(W instanceof Sa?(n.feature=W,n.tile=W.content.tile):l(W)&&l(W.content)?(n.feature=void 0,n.tile=W.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(W)&&l(W.content)){let Z;e.pickPositionSupported&&(Z=e.pickPosition(H.endPosition),l(Z)&&(n._tileset.debugPickPosition=Z)),n._tileset.debugPickedTile=W.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},vn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(vn.MOUSE_MOVE))}}),this.picking=!0;let c=xe.observable();xe.defineProperty(this,"colorize",{get:function(){return c()},set:function(F){c(F),l(n._tileset)&&(n._tileset.debugColorizeTiles=F,n._scene.requestRender())}}),this.colorize=!1;let u=xe.observable();xe.defineProperty(this,"wireframe",{get:function(){return u()},set:function(F){u(F),l(n._tileset)&&(n._tileset.debugWireframe=F,n._scene.requestRender())}}),this.wireframe=!1;let f=xe.observable();xe.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(F){f(F),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=F,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=xe.observable();xe.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(F){h(F),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=F,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let A=xe.observable();xe.defineProperty(this,"showRequestVolumes",{get:function(){return A()},set:function(F){A(F),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=F,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=xe.observable();xe.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(F){g(F),l(n._tileset)&&(n._tileset.debugFreezeFrame=F,n._scene.debugShowFrustumPlanes=F,n._scene.requestRender())}}),this.freezeFrame=!1,xe.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(F){s(F),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=F,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=xe.observable();xe.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(F){m(F),l(n._tileset)&&(n._tileset.debugShowGeometricError=F,n._scene.requestRender())}}),this.showGeometricError=!1;let _=xe.observable();xe.defineProperty(this,"showRenderingStatistics",{get:function(){return _()},set:function(F){_(F),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=F,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let y=xe.observable();xe.defineProperty(this,"showMemoryUsage",{get:function(){return y()},set:function(F){y(F),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=F,n._scene.requestRender())}}),this.showMemoryUsage=!1;let C=xe.observable();xe.defineProperty(this,"showUrl",{get:function(){return C()},set:function(F){C(F),l(n._tileset)&&(n._tileset.debugShowUrl=F,n._scene.requestRender())}}),this.showUrl=!1;let E=xe.observable();xe.defineProperty(this,"maximumScreenSpaceError",{get:function(){return E()},set:function(F){F=Number(F),isNaN(F)||(E(F),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=F))}}),this.maximumScreenSpaceError=16;let I=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return I()},set:function(F){F=Number(F),isNaN(F)||(I(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=F))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,xe.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(I(),1/6)},set:function(F){let H=Math.pow(F,6);I(H),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H)}});let b=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return b()},set:function(F){F=Number(F),isNaN(F)||(b(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=F))}}),this.dynamicScreenSpaceErrorFactor=24;let S=XBt(this),B=xe.observable();xe.defineProperty(this,"pickActive",{get:function(){return B()},set:function(F){B(F),F?n._eventHandler.setInputAction(S,vn.LEFT_CLICK):n._eventHandler.removeInputAction(vn.LEFT_CLICK)}});let v=xe.observable();xe.defineProperty(this,"pointCloudShading",{get:function(){return v()},set:function(F){v(F),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=F)}}),this.pointCloudShading=!1;let P=xe.observable();xe.defineProperty(this,"geometricErrorScale",{get:function(){return P()},set:function(F){F=Number(F),isNaN(F)||(P(F),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=F))}}),this.geometricErrorScale=1;let N=xe.observable();xe.defineProperty(this,"maximumAttenuation",{get:function(){return N()},set:function(F){F=Number(F),isNaN(F)||(N(F),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=F===0?void 0:F))}}),this.maximumAttenuation=0;let L=xe.observable();xe.defineProperty(this,"baseResolution",{get:function(){return L()},set:function(F){F=Number(F),isNaN(F)||(L(F),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=F===0?void 0:F))}}),this.baseResolution=0;let p=xe.observable();xe.defineProperty(this,"eyeDomeLighting",{get:function(){return p()},set:function(F){p(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=F)}}),this.eyeDomeLighting=!1;let x=xe.observable();xe.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return x()},set:function(F){F=Number(F),isNaN(F)||(x(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=F))}}),this.eyeDomeLightingStrength=1;let T=xe.observable();xe.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return T()},set:function(F){F=Number(F),isNaN(F)||(T(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=F))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let w=xe.observable();xe.defineProperty(this,"skipLevelOfDetail",{get:function(){return w()},set:function(F){w(F),l(n._tileset)&&(n._tileset.skipLevelOfDetail=F)}}),this.skipLevelOfDetail=!0;let M=xe.observable();xe.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return M()},set:function(F){F=Number(F),isNaN(F)||(M(F),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=F))}}),this.skipScreenSpaceErrorFactor=16;let O=xe.observable();xe.defineProperty(this,"baseScreenSpaceError",{get:function(){return O()},set:function(F){F=Number(F),isNaN(F)||(O(F),l(n._tileset)&&(n._tileset.baseScreenSpaceError=F))}}),this.baseScreenSpaceError=1024;let U=xe.observable();xe.defineProperty(this,"skipLevels",{get:function(){return U()},set:function(F){F=Number(F),isNaN(F)||(U(F),l(n._tileset)&&(n._tileset.skipLevels=F))}}),this.skipLevels=1;let Q=xe.observable();xe.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return Q()},set:function(F){Q(F),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=F)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=xe.observable();xe.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(F){z(F),l(n._tileset)&&(n._tileset.loadSiblings=F)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||sSe(this,!0)}Object.defineProperties(Ya.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return ZBt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe(),sSe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,$Bt):G.WHITE:t.color=BH,this._scene.requestRender()),l(e)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!YZ(t.content)&&(t.color=BH,this._scene.requestRender()),l(e)&&!YZ(e.content)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._tile=e}}});function YZ(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!YZ(t[i]))return!1;return!0}return!1}Ya.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};Ya.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Ya.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};Ya.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Ya.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};Ya.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};Ya.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};Ya.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};Ya.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};Ya.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};Ya.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new TS(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};Ya.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(`
|
||
`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(`
|
||
`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};Ya.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe())};Ya.prototype.isDestroyed=function(){return!1};Ya.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};Ya.getStatistics=mR;var DH=Ya;function vH(e,t){e=Gn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new DH(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=ff.createRangeInput,f=ff.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),A=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),_=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),y=a(s,"Style","styleVisible","toggleStyle"),C=a(s,"Optimization","optimizationVisible","toggleOptimization"),E=document.createElement("div");E.className="field-group";let I=document.createElement("label");I.className="field-label",I.appendChild(document.createTextNode("Properties: "));let b=document.createElement("div");b.setAttribute("data-bind","text: properties"),E.appendChild(I),E.appendChild(b),h.appendChild(E),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),A.appendChild(c("Colorize","colorize"));let S=A.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),B=document.createElement("p");B.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),B.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),B.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",S.appendChild(B),A.appendChild(c("Bounding Volumes","showBoundingVolumes")),A.appendChild(c("Content Volumes","showContentBoundingVolumes")),A.appendChild(c("Request Volumes","showRequestVolumes")),A.appendChild(c("Point Cloud Shading","pointCloudShading"));let v=document.createElement("div");v.setAttribute("data-bind","visible: pointCloudShading"),v.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),v.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),v.appendChild(u("Base Resolution","baseResolution",0,1,.01)),v.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),A.appendChild(v);let P=document.createElement("div");P.setAttribute("data-bind","visible: eyeDomeLighting"),P.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),P.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),v.appendChild(P),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let N=document.createElement("div");N.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(N);let L=document.createElement("div");L.setAttribute("data-bind","visible: dynamicScreenSpaceError"),L.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),L.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(L),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let p=document.createElement("div");p.className="cesium-3dTilesInspector-statistics",p.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(p),m.appendChild(c("Pick Statistics","showPickStatistics"));let x=document.createElement("div");x.className="cesium-3dTilesInspector-statistics",x.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(x),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(T);let w=document.createElement("div");y.appendChild(w),w.appendChild(document.createTextNode("Color Blend Mode: "));let M=document.createElement("select");M.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),w.appendChild(M);let O=document.createElement("textarea");O.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),w.className="cesium-cesiumInspector-styleEditor",w.appendChild(O);let U=f("Compile (Ctrl+Enter)","compileStyle");w.appendChild(U);let Q=document.createElement("div");Q.className="cesium-cesiumInspector-error",Q.setAttribute("data-bind","text: editorError"),w.appendChild(Q),_.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),_.appendChild(c("Geometric Error","showGeometricError")),_.appendChild(c("Rendering Statistics","showRenderingStatistics")),_.appendChild(c("Memory Usage (MB)","showMemoryUsage")),_.appendChild(c("Url","showUrl")),C.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),C.appendChild(z);let F=document.createElement("div");F.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),C.appendChild(F);let H=document.createElement("div");H.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),C.appendChild(H),C.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),C.appendChild(c("Load siblings of visible tiles","loadSiblings")),xe.applyBindings(o,n)}Object.defineProperties(vH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});vH.prototype.isDestroyed=function(){return!1};vH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var PH=vH;function eDt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br> ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function qZ(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var tDt=new In,nDt=new d;function AR(e,t){let n=this,i=e.canvas,o=new Cd(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",xe.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Mn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Mn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Mn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=xe.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=xe.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=xe.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new Ny({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Mn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=xe.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Mn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new Y4({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=xe.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Mn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=xe.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=xe.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=xe.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Mn(function(){let u=n.depthFrustum+1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Mn(function(){let u=n.depthFrustum-1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=xe.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Mn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new fH({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=xe.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=xe.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Mn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Mn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=xe.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Mn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=xe.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,A=n._scene.camera.getPickRay(u.position,tDt),g=r.pick(A,n._scene,nDt);if(l(g)){let m=h.cartesianToCartographic(g),_=r._surface.tileProvider._tilesToRenderByTextureCount;for(let y=0;!f&&y<_.length;++y){let C=_[y];if(l(C))for(let E=0;!f&&E<C.length;++E){let I=C[E];ae.contains(I.rectangle,m)&&(f=I)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Mn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=xe.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(AR.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});AR.prototype._update=function(){this.frustums&&(this.frustumStatisticText=eDt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=qZ(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};AR.prototype.isDestroyed=function(){return!1};AR.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var RH=AR;function MH(e,t){e=Gn(e);let n=document.createElement("div"),i=new RH(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let A=document.createElement("div");A.className="cesium-cesiumInspector-shaderCache",A.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(A);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: " Frustum:"'),g.appendChild(m);let _=document.createElement("span");_.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(_);let y=document.createElement("input");y.type="button",y.value="-",y.className="cesium-cesiumInspector-pickButton",y.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(y);let C=document.createElement("input");C.type="button",C.value="+",C.className="cesium-cesiumInspector-pickButton",C.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(C);let E=a(s,"Primitives","primitivesVisible","togglePrimitives"),I=document.createElement("div");I.className="cesium-cesiumInspector-pickSection",E.appendChild(I);let b=document.createElement("input");b.type="button",b.value="Pick a primitive",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let S=document.createElement("div");S.className="cesium-cesiumInspector-center",S.appendChild(b),I.appendChild(S),I.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),I.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),I.appendChild(this._primitiveOnly);let B=a(s,"Terrain","terrainVisible","toggleTerrain"),v=document.createElement("div");v.className="cesium-cesiumInspector-pickSection",B.appendChild(v);let P=document.createElement("input");P.type="button",P.value="Pick a tile",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),S=document.createElement("div"),S.appendChild(P),S.className="cesium-cesiumInspector-center",v.appendChild(S);let N=document.createElement("div");v.appendChild(N);let L=document.createElement("input");L.type="button",L.value="Parent",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectParent");let p=document.createElement("input");p.type="button",p.value="NW",p.className="cesium-cesiumInspector-pickButton",p.setAttribute("data-bind","click: selectNW");let x=document.createElement("input");x.type="button",x.value="NE",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: selectNE");let T=document.createElement("input");T.type="button",T.value="SW",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectSW");let w=document.createElement("input");w.type="button",w.value="SE",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSE");let M=document.createElement("div");M.className="cesium-cesiumInspector-tileText",N.className="cesium-cesiumInspector-frustumStatistics",N.appendChild(M),N.setAttribute("data-bind","visible: hasPickedTile"),M.setAttribute("data-bind","html: tileText");let O=document.createElement("div");O.className="cesium-cesiumInspector-relativeText",O.textContent="Select relative:",N.appendChild(O);let U=document.createElement("table"),Q=document.createElement("tr"),z=document.createElement("tr"),F=document.createElement("td");F.appendChild(L);let H=document.createElement("td");H.appendChild(p);let W=document.createElement("td");W.appendChild(x),Q.appendChild(F),Q.appendChild(H),Q.appendChild(W);let Z=document.createElement("td"),Y=document.createElement("td");Y.appendChild(T);let $=document.createElement("td");$.appendChild(w),z.appendChild(Z),z.appendChild(Y),z.appendChild($),U.appendChild(Q),U.appendChild(z),N.appendChild(U),v.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),v.appendChild(c("Show only selected","filterTile","hasPickedTile")),B.appendChild(c("Wireframe","wireframe")),B.appendChild(c("Suspend LOD update","suspendUpdates")),B.appendChild(c("Show tile coordinates","tileCoordinates")),xe.applyBindings(i,this._element)}Object.defineProperties(MH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MH.prototype.isDestroyed=function(){return!1};MH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var NH=MH;function LH(e,t){l(t)||(t=document.body),t=Gn(t);let n=this,i=xe.observable(Hr.fullscreen),o=xe.observable(Hr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,xe.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,xe.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Mn(function(){Hr.fullscreen?Hr.exitFullscreen():Hr.requestFullscreen(n._fullscreenElement)},xe.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=Gn(e)??r.body,this._callback=function(){i(Hr.fullscreen)},r.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(LH.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});LH.prototype.isDestroyed=function(){return!1};LH.prototype.destroy=function(){document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var OH=LH;var iDt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",oDt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function FH(e,t){e=Gn(e);let n=new OH(t,e);n._exitFullScreenPath=oDt,n._enterFullScreenPath=iDt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),xe.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(FH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});FH.prototype.isDestroyed=function(){return!1};FH.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var QH=FH;var cSe=1e3;function wd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new yS({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new _e,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=uSe,this._handleArrowUp=lSe;let t=this;this._suggestionsVisible=xe.pureComputed(function(){let o=xe.getObservable(t,"_suggestions")().length>0,r=xe.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Mn(function(i){if(i=i??w0.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)uDt(t);else return cDt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?lSe(t):r?uSe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;hSe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??wd.flyToDestination,this._focusTextbox=!1,xe.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=xe.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){wd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,xe.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,xe.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,xe.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(wd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});wd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function lSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],wd._adjustSuggestionsScroll(e,n)}function uSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],wd._adjustSuggestionsScroll(e,i)}function rDt(e,t){let n=l(t)?t.availability:void 0;return l(n)?PT(t,[e]).then(function(i){return e=i[0],e.height+=cSe,e}):(e.height+=cSe,Promise.resolve(e))}function sDt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?D.equalsEpsilon(t.south,t.north,D.EPSILON7)&&D.equalsEpsilon(t.east,t.west,D.EPSILON7)?t=ae.center(t):a=RT(t,n):t=i.cartesianToCartographic(t),l(a)||(a=rDt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:R.IDENTITY})})}async function aDt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function cDt(e,t,n){let i=e._searchText;if(dSe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await aDt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,XZ(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=fSe(e,WP.getCreditsFromResult(s[0]));l(a)||KZ(e,t[o].credit);return}e._searchText=`${i} (not found)`}function KZ(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function fSe(e,t){return l(t)&&t.forEach(n=>KZ(e,n)),t}function XZ(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function lDt(e,t){let n=Gn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function uDt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function dSe(e){return/^\s*$/.test(e)}function hSe(e){xe.getObservable(e,"_suggestions").removeAll()}async function fDt(e){if(!e.autoComplete)return;let t=e._searchText;if(hSe(e),XZ(e),!dSe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,w0.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=WP.getCreditsFromResult(r);o=o&&!l(s),fSe(e,s)}),o&&KZ(e,n.credit)}if(e._suggestions.length>=5)return}}wd.flyToDestination=sDt;wd._updateSearchSuggestions=fDt;wd._adjustSuggestionsScroll=lDt;wd.prototype.isDestroyed=function(){return!1};wd.prototype.destroy=function(){return XZ(this),ue(this)};var kH=wd;var dDt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",hDt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function UH(e){let t=Gn(e.container),n=new kH(e);n._startSearchPath=dDt,n._stopSearchPath=hDt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),xe.applyBindings(n,i),xe.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},jt.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(UH.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});UH.prototype.isDestroyed=function(){return!1};UH.prototype.destroy=function(){let e=this._container;return jt.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),xe.cleanNode(this._form),xe.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var GH=UH;function mSe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Mn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",xe.track(this,["tooltip"])}Object.defineProperties(mSe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var zH=mSe;function VH(e,t,n){e=Gn(e);let i=new zH(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(VH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});VH.prototype.isDestroyed=function(){return!1};VH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var HH=VH;function mDt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function pSe(e,t){xe.track(e);for(let n=0;n<e.sublayers.length;n++)pSe(e.sublayers[n],t)}function WH(e){return e.modelName==="FullModel"}function gSe(e){return e.modelName==="Overview"}function _Se(e){return gSe(e)||WH(e)}function ASe(e,t){if(_Se(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:xe.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function ADt(e,t){if(_Se(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");WH(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function pDt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function gDt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:xe.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:xe.observable(!0),index:-1}],currentLayer:xe.observable(),expandClickHandler:mDt,setOptionDisable:function(i,o){xe.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){ADt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){pSe(n[i],this.viewModel);let o=ASe(n[i],this.viewModel);l(o)&&(gSe(o)||!l(this.viewModel.defaultLayer)&&WH(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=ASe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=WH(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return pDt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var jH=gDt;function _Dt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=`
|
||
<h3>Building explorer</h3>
|
||
<select
|
||
data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer"
|
||
></select>
|
||
<div id="bsl-wrapper">
|
||
<h3>Select Level</h3>
|
||
<select data-bind="options: levels, value: currentLevel"></select>
|
||
<h3>Disciplines & Categories</h3>
|
||
<ul class="layersList" data-bind="foreach: sublayers">
|
||
<ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
|
||
<li>
|
||
<div class="li-wrapper">
|
||
<span
|
||
class="expandItem"
|
||
data-bind="click: $root.expandClickHandler"
|
||
>+</span
|
||
>
|
||
<input
|
||
type="checkbox"
|
||
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
|
||
/>
|
||
<label data-bind="attr: { for: name}">
|
||
<span data-bind="text: name"></span>
|
||
</label>
|
||
</div>
|
||
<ul class="nested" data-bind="attr: { id: name + '-expander'}">
|
||
<li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })">
|
||
<div class="li-wrapper">
|
||
<input
|
||
type="checkbox"
|
||
data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}"
|
||
/>
|
||
<label data-bind="attr: { for: name}">
|
||
<span data-bind="text: name"></span>
|
||
</label>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</ul>
|
||
</div>`,n.appendChild(i);let o=new jH(t);xe.track(o),xe.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var ySe=_Dt;var yDt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",CDt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function JZ(){this._cameraClicked=new _e,this._closeClicked=new _e,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",xe.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,xe.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?CDt:yDt}}),xe.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}JZ.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(JZ.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var YH=JZ;function qH(e){e=Gn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new YH;xe.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=fn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=fc(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let A=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let _=window.getComputedStyle(g);if(_!==null){let y=_["background-color"],C=G.fromCssColorString(y);l(C)&&C.alpha!==0&&(A=_["background-color"])}}t.style["background-color"]=A;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(qH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});qH.prototype.isDestroyed=function(){return!1};qH.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var KH=qH;function CSe(){this.showInstructions=!1;let e=this;this._command=Mn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Mn(function(){e._touch=!1}),this._showTouch=Mn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",xe.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(CSe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var XH=CSe;function JH(e){let t=Gn(e.container),n=new XH,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=fn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=fn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let A=document.createElement("div");A.className="cesium-touch-navigation-help cesium-navigation-help-instructions",A.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),A.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(A),xe.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(JH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});JH.prototype.isDestroyed=function(){return!1};JH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var ZH=JH;function ZZ(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,xe.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Mn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=X4.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(ZZ.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});ZZ.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var $H=ZZ;function e5(e){let t=Gn(e.container),n=new $H(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),xe.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(e5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});e5.prototype.isDestroyed=function(){return!1};e5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var t5=e5;function n5(e){this._scene=e,this._orthographic=e.camera.frustum instanceof An,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,xe.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;xe.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Mn(function(){t.sceneMode===ie.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Lr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ie.SCENE2D||t._scene.camera.frustum instanceof An}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ie}Object.defineProperties(n5.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});n5.prototype.isDestroyed=function(){return!1};n5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var i5=n5;var EDt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",IDt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function o5(e,t){e=Gn(e);let n=new i5(t);n._perspectivePath=EDt,n._orthographicPath=IDt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),xe.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(o5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});o5.prototype.isDestroyed=function(){return!1};o5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var r5=o5;function s5(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Lr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",xe.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,xe.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ie.SCENE2D?n.tooltip2D:o===ie.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Mn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Mn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Mn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ie}Object.defineProperties(s5.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});s5.prototype.isDestroyed=function(){return!1};s5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var a5=s5;var xDt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",bDt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",TDt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function c5(e,t,n){e=Gn(e);let i=new a5(t,n);i._globePath=xDt,i._flatMapPath=bDt,i._columbusViewPath=TDt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),xe.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(c5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});c5.prototype.isDestroyed=function(){return!1};c5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var l5=c5;var SDt=new k,u5="-1000px";function pR(e,t,n){this._scene=e,this._screenPositionX=u5,this._screenPositionY=u5,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,xe.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,xe.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),xe.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return to.worldToWindowCoordinates(e,i,o)}}pR.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,SDt);if(!l(e))this._screenPositionX=u5,this._screenPositionY=u5;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};pR.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};pR.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};Object.defineProperties(pR.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var f5=pR;function d5(e,t){e=Gn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new f5(t,this._element,this._container);this._viewModel=c,xe.applyBindings(this._viewModel,this._element)}Object.defineProperties(d5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});d5.prototype.isDestroyed=function(){return!1};d5.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),ue(this)};var h5=d5;function F0(e,t,n){this._color=e,this._height=t,this._base=n??0}F0.prototype.getHeight=function(){return this._height};F0.prototype.getBase=function(){return this._base};F0.prototype.getStartTime=function(){return this._start};F0.prototype.getStopTime=function(){return this._stop};F0.prototype.setRange=function(e,t){this._start=e,this._stop=t};F0.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=K.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=K.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var m5=F0;function ESe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new G(.5,.5,.5,1),this.backgroundColor=i||new G(0,0,0,0)}ESe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=K.addSeconds(t.startJulian,t.duration,new K);if(K.lessThan(n,o)&&K.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(K.lessThanOrEquals(n,r)&&K.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=K.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new K);!l(a)&&K.greaterThanOrEquals(u,n)?a=s:!l(c)&&K.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var A5=ESe;var $Z=1e12,Bd={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},Sl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},iC=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],wDt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function wl(e,t){e=Gn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=Bd.none,this._touchMode=Sl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=BDt(this),this._onMouseUp=DDt(this),this._onMouseMove=vDt(this),this._onMouseWheel=PDt(this),this._onTouchStart=RDt(this),this._onTouchMove=NDt(this),this._onTouchEnd=MDt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}wl.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};wl.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};wl.prototype.isDestroyed=function(){return!1};wl.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};wl.prototype.addHighlightRange=function(e,t,n){let i=new m5(e,t,n);return this._highlightRanges.push(i),this.resize(),i};wl.prototype.addTrack=function(e,t,n,i){let o=new A5(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};wl.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=K.secondsDifference(t,e),this._clock&&this._clock.clockRange!==As.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=K.secondsDifference(o,i),s=K.secondsDifference(i,this._startJulian),a=K.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=K.addSeconds(this._endJulian,s,new K),this._startJulian=i,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=K.addSeconds(this._startJulian,a,new K),this._endJulian=o,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};wl.prototype.zoomFrom=function(e){let t=K.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(K.addSeconds(this._startJulian,t-t*e,new K),K.addSeconds(this._endJulian,n*e-n,new K))};function e$(e){return e<10?`0${e.toString()}`:e.toString()}wl.prototype.makeLabel=function(e){let t=K.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${wDt[t.month-1]} ${t.day} ${t.year} ${e$(t.hour)}:${e$(t.minute)}:${e$(t.second)}${i}`};wl.prototype.smallestTicInPixels=7;wl.prototype._makeTics=function(){let e=this._timeBarEle,t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=K.addSeconds(this._startJulian,a,new K)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=K.addSeconds(this._startJulian,c,new K));let A=this._timeBarEle.clientWidth;A<10&&(A=10);let g=this._startJulian,m=Math.min(h/A*1e-5,.4),_,y=K.toGregorianDate(g);h>31536e4?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/100)*100,0))):h>31536e3?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/10)*10,0))):h>86400?_=K.fromDate(new Date(Date.UTC(y.year,0))):_=K.fromDate(new Date(Date.UTC(y.year,y.month,y.day)));let C=K.secondsDifference(this._startJulian,K.addSeconds(_,m,new K)),E=C+h;this._epochJulian=_;function I(F){return Math.floor(C/F)*F}function b(F,H){return Math.ceil(F/H+.5)*H}function S(F){return(F-C)/h}function B(F,H){return F-H*Math.round(F/H)}this._rulerEle.innerHTML=this.makeLabel(K.addSeconds(this._endJulian,-a,new K));let v=this._rulerEle.offsetWidth+20;v<30&&(v=180);let P=f;f-=u;let N={startTime:C,startJulian:g,epochJulian:_,duration:h,timeBarWidth:A,getAlpha:S};this._highlightRanges.forEach(function(F){s+=F.render(N)});let L=0,p=0,x=0,T=v/A;T>1&&(T=1),T*=this._timeBarSecondsSpan;let w=-1,M=-1,O=iC.length,U;for(U=0;U<O;++U){let F=iC[U];if(++w,L=F,F>T&&F>f)break;M<0&&A*(F/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(M=w)}if(w>0){for(;w>0;)if(--w,Math.abs(B(L,iC[w]))<1e-5){iC[w]>=f&&(p=iC[w]);break}if(M>=0)for(;M<w;){if(Math.abs(B(p,iC[M]))<1e-5&&iC[M]>=f){x=iC[M];break}++M}}f=P,f>u&&x<1e-5&&Math.abs(f-L)>u&&(x=f,f<=L+u&&(p=0));let Q=-999999,z;if(A*(x/this._timeBarSecondsSpan)>=3)for(o=I(x);o<=E;o=b(o,x))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(p/this._timeBarSecondsSpan)>=3)for(o=I(p);o<=E;o=b(o,p))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(L/this._timeBarSecondsSpan)>=2){this._mainTicSpan=L,E+=L,o=I(L);let F=K.computeTaiMinusUtc(_);for(;o<=E;){let H=K.addSeconds(g,o-C,new K);if(L>2.1){let $=K.computeTaiMinusUtc(H);Math.abs($-F)>.1&&(o+=$-F,H=K.addSeconds(g,o-C,new K))}let W=Math.round(A*S(o)),Z=this.makeLabel(H);this._rulerEle.innerHTML=Z,z=this._rulerEle.offsetWidth,z<10&&(z=v);let Y=W-(z/2-1);Y>Q?(Q=Y+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${W.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${Y.toString()}px;">${Z}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${W.toString()}px;"></span>`,o=b(o,L)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),N.y=0,this._trackList.forEach(function(F){F.render(r._context,N),N.y+=F.height})};wl.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(K.addSeconds(this._startJulian,this._timelineDrag,new K),K.addSeconds(this._endJulian,this._timelineDrag,new K)))};wl.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=K.addSeconds(this._startJulian,t,new K),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function BDt(e){return function(t){e._mouseMode!==Bd.touchOnly&&(t.button===0?(e._mouseMode=Bd.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=Bd.zoom:e._mouseMode=Bd.slide)),t.preventDefault()}}function DDt(e){return function(t){e._mouseMode=Bd.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function vDt(e){return function(t){let n;if(e._mouseMode===Bd.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===Bd.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(K.addSeconds(e._startJulian,i,new K),K.addSeconds(e._endJulian,i,new K))}}else e._mouseMode===Bd.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function PDt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;$Z=Math.max(Math.min(Math.abs(n),$Z),1),n/=$Z,e.zoomFrom(Math.pow(1.05,-n))}}function RDt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=Bd.touchOnly,n===1?(i=K.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=Sl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=Sl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=Sl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=Sl.ignore}}function MDt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap?(e._touchMode=Sl.scrub,e._onTouchMove(t)):e._touchMode===Sl.scrub&&e._onTouchMove(t),e._mouseMode=Bd.touchOnly,n!==1?e._touchMode=n>0?Sl.ignore:Sl.none:e._touchMode===Sl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function NDt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap&&(e._touchMode=Sl.slideZoom),e._mouseMode=Bd.touchOnly,e._touchMode===Sl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===Sl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=K.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new K)):(n=e._touchState.centerX-r,a=K.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new K)),e.zoomTo(a,K.addSeconds(a,e._timeBarSecondsSpan*c,new K)),e._touchState.centerX=r,e._touchState.spanX=s))}}wl.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var p5=wl;var SSe=Es(TSe(),1);function FDt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function wSe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function QDt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(wSe(),e._locked=!1),e._noSleep.disable(),Hr.exitFullscreen(),n(!1)):(Hr.fullscreen||Hr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=FDt("landscape")),t.useWebVR=!0,n(!0)))}function g5(e,t){let n=this,i=xe.observable(Hr.enabled),o=xe.observable(!1);this.isVRMode=void 0,xe.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,xe.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=xe.observable(!1);this._isOrthographic=void 0,xe.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Lr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof An)}),this._locked=!1,this._noSleep=new SSe.default,this._command=Mn(function(){QDt(n,e,o,r)},xe.getObservable(this,"isVREnabled")),this._vrElement=Gn(t)??document.body,this._callback=function(){!Hr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(wSe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(g5.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});g5.prototype.isDestroyed=function(){return!1};g5.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var _5=g5;var kDt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",UDt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function y5(e,t,n){e=Gn(e);let i=new _5(t,n);i._exitVRPath=UDt,i._enterVRPath=kDt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(y5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});y5.prototype.isDestroyed=function(){return!1};y5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var C5=y5;var BSe=new le;function PSe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function GDt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function zDt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function DSe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof _r)return i;if(n instanceof Sa)return new _r({name:zDt(n),description:GDt(n),feature:n})}if(l(e.scene.globe))return WDt(e,t.position)}var VDt=new K;function o$(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;K.equals(i,o)&&(o=K.addSeconds(i,D.EPSILON2,VDt)),e.updateFromClock(),e.zoomTo(i,o)}}}var HDt=new d;function WDt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new _r({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=vSe();return}let a=s[0],c=new _r({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,HDt);c.position=new Ol(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=vSe())}),r}function vSe(){return new _r({id:"None",description:"No features found."})}function jDt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,A=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=A),l(i)&&(i.container.style.visibility=A),l(o)&&(o.container.style.visibility=A),l(r)&&(r.container.style.visibility=A),l(s)&&(s.container.style.visibility=A),l(a)&&(a.container.style.visibility=A),l(c)&&(c.container.style.visibility=A),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=A),l(f)&&(f.container.style.visibility=A),l(h)&&(h.container.style.visibility=A),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function oo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new Vm,u=new pH(c),f=!0);let h=new b4(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),A=h.scene,g=new Lr;g.add(c.onTick,oo.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let H=document.createElement("div");H.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(H),m=new h5(H,A)}let _;if(!l(t.infoBox)||t.infoBox!==!1){let H=document.createElement("div");H.className="cesium-viewer-infoBoxContainer",o.appendChild(H),_=new KH(H);let W=_.viewModel;g.add(W.cameraClicked,oo.prototype._onInfoBoxCameraClicked,this),g.add(W.closeClicked,oo.prototype._onInfoBoxClockClicked,this)}let y=document.createElement("div");y.className="cesium-viewer-toolbar",o.appendChild(y);let C;if(!l(t.geocoder)||t.geocoder!==!1){let H=document.createElement("div");H.className="cesium-viewer-geocoderContainer",y.appendChild(H);let W;typeof t.geocoder=="string"?W=[new yS({scene:A,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(W=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),C=new GH({container:H,geocoderServices:W,scene:A}),g.add(C.viewModel.search.beforeExecute,oo.prototype._clearObjects,this)}let E;(!l(t.homeButton)||t.homeButton!==!1)&&(E=new HH(y,A),l(C)&&g.add(E.viewModel.command.afterExecute,function(){let H=C.viewModel;H.searchText="",H.isSearchInProgress&&H.search()}),g.add(E.viewModel.command.beforeExecute,oo.prototype._clearTrackedObject,this));let I;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(I=new l5(y,A));let b;t.projectionPicker&&(b=new r5(y,A));let S,B;if(n){let H=t.imageryProviderViewModels??SH(),W=t.terrainProviderViewModels??wH();S=new TH(y,{globe:A.globe,imageryProviderViewModels:H,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:W,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),B=y.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(S.viewModel.selectedImagery=void 0),A.imageryLayers.removeAll(),A.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(S.viewModel.selectedTerrain=void 0),A.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(A.globe.depthTestAgainstTerrain=!0),A.setTerrain(t.terrain));let v;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let H=!0;try{if(l(window.localStorage)){let W=window.localStorage.getItem("cesium-hasSeenNavHelp");l(W)&&W?H=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}v=new ZH({container:y,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??H})}let P;if(!l(t.animation)||t.animation!==!1){let H=document.createElement("div");H.className="cesium-viewer-animationContainer",o.appendChild(H),P=new EH(H,new IH(u))}let N;if(!l(t.timeline)||t.timeline!==!1){let H=document.createElement("div");H.className="cesium-viewer-timelineContainer",o.appendChild(H),N=new p5(H,c),N.addEventListener("settime",PSe,!1),N.zoomTo(c.startTime,c.stopTime)}let L,p,x;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(x=document.createElement("div"),x.className="cesium-viewer-fullscreenContainer",o.appendChild(x),L=new QH(x,t.fullscreenElement),p=fc(L.viewModel,"isFullscreenEnabled",function(H){x.style.display=H?"block":"none",l(N)&&(N.container.style.right=`${x.clientWidth}px`,N.resize())}));let T,w,M;if(t.vrButton){let H=document.createElement("div");H.className="cesium-viewer-vrContainer",o.appendChild(H),T=new C5(H,A,t.fullScreenElement),w=fc(T.viewModel,"isVREnabled",function(W){H.style.display=W?"block":"none",l(L)&&(H.style.right=`${x.clientWidth}px`),l(N)&&(N.container.style.right=`${H.clientWidth}px`,N.resize())}),M=fc(T.viewModel,"isVRMode",function(W){jDt(i,W)})}this._baseLayerPickerDropDown=B,this._fullscreenSubscription=p,this._vrSubscription=w,this._vrModeSubscription=M,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=_,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=y,this._homeButton=E,this._sceneModePicker=I,this._projectionPicker=b,this._baseLayerPicker=S,this._navigationHelpButton=v,this._animation=P,this._timeline=N,this._fullscreenButton=L,this._vrButton=T,this._geocoder=C,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(_)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new _e;let O=this._cesiumWidget.dataSources,U=this._cesiumWidget.dataSourceDisplay;g.add(O.dataSourceAdded,oo.prototype._onDataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._onDataSourceRemoved,this),g.add(A.postUpdate,oo.prototype.resize,this);let Q=O.length;for(let H=0;H<Q;H++)this._dataSourceAdded(O,O.get(H));this._dataSourceAdded(void 0,U.defaultDataSource),g.add(O.dataSourceAdded,oo.prototype._dataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._dataSourceRemoved,this);function z(H){let W=DSe(i,H);l(W)?j.getValueOrUndefined(W.position,i.clock.currentTime)?i.trackedEntity=W:i.zoomTo(W):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function F(H){i.selectedEntity=DSe(i,H)}h.screenSpaceEventHandler.setInputAction(F,vn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(z,vn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(oo.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,o$(this._timeline,e))}}});oo.prototype.extend=function(e,t){e(this,t)};oo.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,A=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,_=this._vrButton,y=c.container,C=y.style;A=y.clientHeight+3,C.left=`${f}px`;let E=0;l(m)&&(E+=m.container.clientWidth),l(_)&&(E+=_.container.clientWidth),C.right=`${E}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${A}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};oo.prototype.forceResize=function(){this._lastWidth=0,this.resize()};oo.prototype.render=function(){this._cesiumWidget.render()};oo.prototype.isDestroyed=function(){return!1};oo.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(vn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(vn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",PSe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};oo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(oo.prototype._onEntityCollectionChanged,this)};oo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(oo.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};oo.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};oo.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,BSe)!==mt.FAILED?n=BSe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=j.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};oo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};oo.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};oo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};oo.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};oo.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};oo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&o$(this.timeline,e)};oo.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&o$(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,oo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};oo.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};oo.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};oo.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var RSe=oo;function YDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new PH(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var MSe=YDt;function qDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new NH(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var NSe=qDt;function KDt(e,t){t=t??V.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new _e,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=Gn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){LSe(s,u),s=f,r$(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?r$(s,u):LSe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){Q0(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,A=h.length;for(let g=0;g<A;g++){let m=h[g],_=new FileReader;_.onload=XDt(e,m,c,a),_.onerror=JDt(e,m),_.readAsText(m)}}r$(s,u),e.destroy=G4(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function Q0(e){e.stopPropagation(),e.preventDefault()}function LSe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",Q0,!1),n.removeEventListener("dragover",Q0,!1),n.removeEventListener("dragexit",Q0,!1))}function r$(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",Q0,!1),e.addEventListener("dragover",Q0,!1),e.addEventListener("dragexit",Q0,!1)}function XDt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=I3.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=kE.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=ST.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=LU.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function JDt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var OSe=KDt;function ZDt(e,t){t=t??V.EMPTY_OBJECT;let n=new t5({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var FSe=ZDt;function QSe(e){let t=e.split(`
|
||
`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c}
|
||
`}return i}function Dd(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=xe.observable();return xe.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===lc.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===lc.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===lc.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-D.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:D.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationX=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationY=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationZ=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleX=R.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleY=R.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleZ=R.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}})}var $Dt=new d,evt=new d,tvt=new pc,nvt=new J;function bA(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,$Dt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,evt),i=tvt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=J.fromHeadingPitchRoll(i,nvt),r=J.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=R.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(Dd.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,bA(t)}}});Dd.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Dd.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Dd.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Dd.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Dd.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Dd.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Dd.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new eS({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Dd.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(`
|
||
`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(`
|
||
`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};Dd.prototype.isDestroyed=function(){return!1};Dd.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};var E5=Dd;function I5(e,t){e=Gn(e);let n=document.createElement("div"),i=new E5(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:u}=ff,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),A=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let m=10,_=10,y=D.PI;h.appendChild(c("Translation X","translationX",-m,+m)),h.appendChild(c("Translation Y","translationY",-m,+m)),h.appendChild(c("Translation Z","translationZ",-m,+m)),h.appendChild(c("Scale X","scaleX",0,+_)),h.appendChild(c("Scale Y","scaleY",0,+_)),h.appendChild(c("Scale Z","scaleZ",0,+_)),h.appendChild(c("Heading","angleX",-y,+y)),h.appendChild(c("Pitch","angleY",-y,+y)),h.appendChild(c("Roll","angleZ",-y,+y)),s$("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",A),s$("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",A),s$("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",A);let C=document.createElement("div");g.appendChild(C);let E=document.createElement("textarea");E.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),C.className="cesium-cesiumInspector-styleEditor",C.appendChild(E);let I=u("Compile (Ctrl+Enter)","compileShader");C.appendChild(I);let b=document.createElement("label");b.style.display="block",b.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),C.appendChild(b),xe.applyBindings(i,n)}Object.defineProperties(I5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I5.prototype.isDestroyed=function(){return!1};I5.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function s$(e,t,n,i,o,r,s,a,c,u,f,h,A,g){let m=ff.createRangeInputWithDynamicMinMax,_=g.appendChild(document.createElement("div"));_.setAttribute("data-bind",`if: ${A}`),_.appendChild(m(e,s)),_.appendChild(m(t,a)),_.appendChild(m(n,c)),_.appendChild(m(i,u)),_.appendChild(m(o,f)),_.appendChild(m(r,h))}var x5=I5;function ivt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new x5(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var kSe=ivt;globalThis.CESIUM_VERSION="1.132";var KAo="1.132";export{np as AlphaMode,_2 as AlphaPipelineStage,gF as AnchorPointDirect,_F as AnchorPointIndirect,EH as Animation,IH as AnimationViewModel,go as Appearance,wi as ApproximateTerrainHeights,Uxe as ArcGISTiledElevationTerrainProvider,vm as ArcGisBaseMapType,__ as ArcGisMapServerImageryProvider,kf as ArcGisMapService,un as ArcType,cl as ArticulationStageType,Pt as AssociativeArray,lx as Atmosphere,JF as AtmospherePipelineStage,Fn as AttributeCompression,Ht as AttributeType,g8 as AutoExposure,bg as AutomaticUniforms,Ao as Axis,CC as AxisAlignedBoundingBox,PF as B3dmLoader,vF as B3dmParser,TH as BaseLayerPicker,xH as BaseLayerPickerViewModel,yI as BatchTable,VI as BatchTableHierarchy,Gl as BatchTexture,y2 as BatchTexturePipelineStage,xo as Billboard,jf as BillboardCollection,jc as BillboardGraphics,Ds as BillboardLoadState,w_ as BillboardTexture,sM as BillboardVisualizer,zxe as BingMapsGeocoderService,Q2 as BingMapsImageryProvider,RB as BingMapsStyle,Cc as BlendEquation,Uo as BlendFunction,Vo as BlendOption,pn as BlendingState,Xe as BoundingRectangle,le as BoundingSphere,mt as BoundingSphereState,nx as BoundingVolumeSemantics,kbe as BoxEmitter,yc as BoxGeometry,rO as BoxGeometryUpdater,wI as BoxGraphics,$h as BoxOutlineGeometry,uV as BrdfLutGenerator,Et as Buffer,jI as BufferLoader,Qe as BufferUsage,x2 as CPUStylingPipelineStage,sO as CallbackPositionProperty,fm as CallbackProperty,Eo as Camera,I8 as CameraEventAggregator,$i as CameraEventType,fV as CameraFlightPath,k as Cartesian2,d as Cartesian3,se as Cartesian4,GB as CartesianRectangle,Ae as Cartographic,Vxe as CartographicGeocoderService,Wxe as CatmullRomSpline,zI as Cesium3DContentGroup,ah as Cesium3DTile,Fg as Cesium3DTileBatchTable,Su as Cesium3DTileColorBlendMode,Ube as Cesium3DTileContent,Xx as Cesium3DTileContentFactory,cr as Cesium3DTileContentState,ua as Cesium3DTileContentType,Sa as Cesium3DTileFeature,Sm as Cesium3DTileFeatureTable,rh as Cesium3DTileOptimizationHint,Lk as Cesium3DTileOptimizations,Zo as Cesium3DTilePass,Lh as Cesium3DTilePassState,B_ as Cesium3DTilePointFeature,rr as Cesium3DTileRefine,TS as Cesium3DTileStyle,Uk as Cesium3DTileStyleEngine,PH as Cesium3DTilesInspector,DH as Cesium3DTilesInspectorViewModel,zbe as Cesium3DTilesVoxelProvider,qs as Cesium3DTileset,zk as Cesium3DTilesetBaseTraversal,Fk as Cesium3DTilesetCache,NI as Cesium3DTilesetGraphics,kk as Cesium3DTilesetHeatmap,lb as Cesium3DTilesetMetadata,Gk as Cesium3DTilesetMostDetailedTraversal,Hk as Cesium3DTilesetSkipTraversal,Um as Cesium3DTilesetStatistics,La as Cesium3DTilesetTraversal,Yk as Cesium3DTilesetVisualizer,NH as CesiumInspector,RH as CesiumInspectorViewModel,AS as CesiumTerrainProvider,b4 as CesiumWidget,Mo as Check,SD as CheckerboardMaterialProperty,H4 as CircleEmitter,ebe as CircleGeometry,tbe as CircleOutlineGeometry,kQ as ClassificationModelDrawCommand,C2 as ClassificationPipelineStage,dw as ClassificationPrimitive,Jn as ClassificationType,Ei as ClearCommand,ox as ClippingPlane,Vs as ClippingPlaneCollection,AB as ClippingPolygon,xm as ClippingPolygonCollection,Vm as Clock,As as ClockRange,vo as ClockStep,pH as ClockViewModel,Kbe as CloudCollection,JP as CloudType,G as Color,al as ColorBlendMode,en as ColorGeometryInstanceAttribute,Jt as ColorMaterialProperty,JTe as Command,q as ComponentDatatype,dO as Composite3DTileContent,Ffe as CompositeEntityCollection,vD as CompositeMaterialProperty,nc as CompositePositionProperty,ml as CompositeProperty,mM as CompressedTextureBuffer,Hl as ComputeCommand,JG as ComputeEngine,z4 as ConditionsExpression,Xbe as ConeEmitter,Ol as ConstantPositionProperty,ci as ConstantProperty,kF as ConstantSpline,xk as ContentMetadata,vT as Context,qt as ContextLimits,G3 as CoplanarPolygonGeometry,M_ as CoplanarPolygonGeometryLibrary,sh as CoplanarPolygonOutlineGeometry,Ji as CornerType,yF as CorrelationGroup,yb as CorridorGeometry,no as CorridorGeometryLibrary,i3 as CorridorGeometryUpdater,DI as CorridorGraphics,n3 as CorridorOutlineGeometry,Dt as Credit,EV as CreditDisplay,jr as CubeMap,DM as CubeMapFace,fI as CubicRealPolynomial,Mi as CullFace,zs as CullingVolume,Td as CumulusCloud,c3 as CustomDataSource,nbe as CustomHeightmapTerrainProvider,eS as CustomShader,p_ as CustomShaderMode,v2 as CustomShaderPipelineStage,tE as CustomShaderTranslucencyMode,l3 as CylinderGeometry,Eb as CylinderGeometryLibrary,f3 as CylinderGeometryUpdater,vI as CylinderGraphics,u3 as CylinderOutlineGeometry,I3 as CzmlDataSource,ms as DataSource,Hm as DataSourceClock,b3 as DataSourceCollection,AU as DataSourceDisplay,Jbe as DebugAppearance,Kp as DebugCameraPrimitive,O8 as DebugInspector,Y4 as DebugModelMatrixPrimitive,obe as DefaultProxy,Ja as DepthFunction,SV as DepthPlane,P2 as DequantizationPipelineStage,Xp as DerivedCommand,me as DeveloperError,BV as DeviceOrientationCameraController,Zbe as DirectionalLight,NB as DiscardEmptyTileImagePolicy,L2 as DiscardMissingTileImagePolicy,Ut as DistanceDisplayCondition,Kn as DistanceDisplayConditionGeometryInstanceAttribute,rS as DoubleEndedPriorityQueue,Ok as DoublyLinkedList,jg as DracoLoader,nt as DrawCommand,r_ as DynamicAtmosphereLightingType,s_ as DynamicEnvironmentMapManager,Nb as DynamicGeometryBatch,yi as DynamicGeometryUpdater,GR as EarthOrientationParameters,sC as EarthOrientationParametersSample,ps as EasingFunction,ru as EllipseGeometry,Uu as EllipseGeometryLibrary,M3 as EllipseGeometryUpdater,PI as EllipseGraphics,ld as EllipseOutlineGeometry,te as Ellipsoid,Sg as EllipsoidGeodesic,ka as EllipsoidGeometry,N3 as EllipsoidGeometryUpdater,RI as EllipsoidGraphics,ed as EllipsoidOutlineGeometry,nV as EllipsoidPrimitive,Ic as EllipsoidRhumbLine,$be as EllipsoidSurfaceAppearance,xs as EllipsoidTangentPlane,jp as EllipsoidTerrainProvider,H_ as EllipsoidalOccluder,hD as Empty3DTileContent,ei as EncodedCartesian3,_r as Entity,od as EntityCluster,Oa as EntityCollection,_U as EntityView,_e as Event,Lr as EventHelper,Hd as Expression,It as ExpressionNodeType,rd as ExtrapolationType,jt as FeatureDetection,eE as FeatureIdPipelineStage,DV as Fog,Re as ForEach,X4 as FrameRateMonitor,vV as FrameState,as as Framebuffer,vi as FramebufferManager,V as Frozen,FV as FrustumCommands,kT as FrustumGeometry,xV as FrustumOutlineGeometry,Hr as Fullscreen,QH as FullscreenButton,OH as FullscreenButtonViewModel,dD as GaussianSplat3DTileContent,fD as GaussianSplatPrimitive,Ck as GaussianSplatRenderResources,lD as GaussianSplatSorter,yk as GaussianSplatTextureGenerator,kE as GeoJsonDataSource,MF as GeoJsonLoader,w0 as GeocodeType,GH as Geocoder,WP as GeocoderService,kH as GeocoderViewModel,Hi as GeographicProjection,co as GeographicTilingScheme,ht as Geometry,yO as Geometry3DTileContent,De as GeometryAttribute,En as GeometryAttributes,sbe as GeometryFactory,Rt as GeometryInstance,Jc as GeometryInstanceAttribute,hn as GeometryOffsetAttribute,jn as GeometryPipeline,N2 as GeometryPipelineStage,Ld as GeometryType,Ci as GeometryUpdater,Xb as GeometryUpdaterSet,rU as GeometryVisualizer,Mx as GetFeatureInfoFormat,Jz as Globe,QV as GlobeDepth,vz as GlobeSurfaceShaderSet,Rh as GlobeSurfaceTile,Gz as GlobeSurfaceTileProvider,zz as GlobeTranslucency,kV as GlobeTranslucencyFramebuffer,PV as GlobeTranslucencyState,Kw as GltfBufferViewLoader,Xw as GltfDracoLoader,EF as GltfGpmLoader,EB as GltfGpmLocal,Jw as GltfImageLoader,Zw as GltfIndexBufferLoader,eB as GltfJsonLoader,Ff as GltfLoader,Du as GltfLoaderUtil,TF as GltfMeshPrimitiveGpmLoader,HO as GltfSpzLoader,hF as GltfStructuralMetadataLoader,oB as GltfTextureLoader,rB as GltfVertexBufferLoader,tTe as GoogleEarthEnterpriseImageryProvider,H2 as GoogleEarthEnterpriseMapsProvider,Yy as GoogleEarthEnterpriseMetadata,jP as GoogleEarthEnterpriseTerrainData,Abe as GoogleEarthEnterpriseTerrainProvider,v4 as GoogleEarthEnterpriseTileInformation,gbe as GoogleGeocoderService,_S as GoogleMaps,LU as GpxDataSource,dg as GregorianDate,nTe as GridImageryProvider,UD as GridMaterialProperty,ti as GroundGeometryUpdater,bI as GroundPolylineGeometry,sm as GroundPolylinePrimitive,Ll as GroundPrimitive,gD as GroupMetadata,Eh as HeadingPitchRange,pc as HeadingPitchRoll,OR as Heap,Ze as HeightReference,vh as HeightmapEncoding,Qc as HeightmapTerrainData,nP as HeightmapTessellator,h3 as HermitePolynomialApproximation,XC as HermiteSpline,Ww as HilbertOrder,HH as HomeButton,zH as HomeButtonViewModel,Ri as HorizontalOrigin,ySe as I3SBuildingSceneLayerExplorer,jH as I3SBuildingSceneLayerExplorerViewModel,xA as I3SDataProvider,J4 as I3SDecoder,Z4 as I3SFeature,eH as I3SField,eR as I3SGeometry,wS as I3SLayer,tR as I3SNode,rH as I3SStatistics,sH as I3SSublayer,iH as I3SSymbology,QF as I3dmLoader,LF as I3dmParser,uTe as ITwinData,_a as ITwinPlatform,$z as Iau2000Orientation,HR as Iau2006XysData,$0 as Iau2006XysSample,eV as IauOrientationAxes,Zz as IauOrientationParameters,GI as ImageBasedLighting,$F as ImageBasedLightingPipelineStage,wC as ImageMaterialProperty,kB as Imagery,XQ as ImageryConfiguration,zB as ImageryCoverage,eQ as ImageryFlags,iQ as ImageryInput,ds as ImageryLayer,hb as ImageryLayerCollection,Dm as ImageryLayerFeatureInfo,oQ as ImageryPipelineStage,Kl as ImageryProvider,qn as ImageryState,uB as Implicit3DTileContent,jw as ImplicitAvailabilityBitstream,Yw as ImplicitMetadataView,Ts as ImplicitSubdivisionScheme,ex as ImplicitSubtree,V4 as ImplicitSubtreeCache,xO as ImplicitSubtreeMetadata,db as ImplicitTileCoordinates,fb as ImplicitTileset,Fe as IndexDatatype,KH as InfoBox,YH as InfoBoxViewModel,ff as InspectorShared,Ss as InstanceAttributeSemantic,m2 as InstancingPipelineStage,_be as InterpolationAlgorithm,Tm as InterpolationType,nn as Intersect,Ai as IntersectionTests,Wy as Intersections2D,_c as Interval,_P as InvertClassification,mm as Ion,Ky as IonGeocodeProviderType,yS as IonGeocoderService,y_ as IonImageryProvider,wf as IonResource,C_ as IonWorldImageryStyle,je as Iso8601,MV as JobScheduler,Tc as JobType,a_ as JsonMetadataTable,K as JulianDate,AM as KTX2Transcoder,ja as KeyboardEventModifier,Po as KeyframeNode,OU as KmlCamera,ST as KmlDataSource,OG as KmlLookAt,QG as KmlTour,UG as KmlTourFlyTo,GG as KmlTourWait,uE as Label,Ap as LabelCollection,cm as LabelGraphics,ar as LabelStyle,sU as LabelVisualizer,m3 as LagrangePolynomialApproximation,so as LeapSecond,dTe as Light,fp as LightingModel,sQ as LightingPipelineStage,Tb as LinearApproximation,KC as LinearSpline,kl as ManagedArray,$u as MapMode2D,Cbe as MapProjection,W2 as MapboxImageryProvider,mTe as MapboxStyleImageryProvider,nQ as MappedPositions,ao as Material,Io as MaterialAppearance,cQ as MaterialPipelineStage,gr as MaterialProperty,D as Math,Wi as Matrix2,J as Matrix3,R as Matrix4,LP as Megatexture,bF as MeshPrimitiveGpmLocal,Em as MetadataClass,$A as MetadataClassProperty,zt as MetadataComponentType,Yn as MetadataEntity,qO as MetadataEnum,jO as MetadataEnumValue,LV as MetadataPicking,Gf as MetadataPickingPipelineStage,Xd as MetadataPipelineStage,Mf as MetadataSchema,aB as MetadataSchemaLoader,tx as MetadataSemantic,jd as MetadataTable,TO as MetadataTableProperty,gt as MetadataType,Ud as MipmapHint,Mm as Model,zf as Model3DTileContent,Qx as ModelAlphaOptions,VF as ModelAnimation,zF as ModelAnimationChannel,WF as ModelAnimationCollection,vu as ModelAnimationLoop,wm as ModelAnimationState,n2 as ModelArticulation,e2 as ModelArticulationStage,r2 as ModelClippingPlanesPipelineStage,c2 as ModelClippingPolygonsPipelineStage,$C as ModelColorPipelineStage,bn as ModelComponents,GQ as ModelDrawCommand,HQ as ModelDrawCommands,jF as ModelFeature,YF as ModelFeatureTable,Dg as ModelGraphics,JQ as ModelImagery,Ox as ModelImageryMapping,FQ as ModelLightingOptions,A2 as ModelMatrixUpdateStage,l2 as ModelNode,Fx as ModelPrimitiveImagery,tQ as ModelReader,BQ as ModelRenderResources,g2 as ModelRuntimeNode,bQ as ModelRuntimePrimitive,jQ as ModelSceneGraph,RQ as ModelSilhouettePipelineStage,TQ as ModelSkin,LQ as ModelSplitterPipelineStage,YQ as ModelStatistics,Nr as ModelType,Qt as ModelUtility,cU as ModelVisualizer,rV as Moon,uQ as MorphTargetsPipelineStage,Ebe as MorphWeightSpline,yE as MortonOrder,Sk as Multiple3DTileContent,BF as MultisampleFramebuffer,ZH as NavigationHelpButton,XH as NavigationHelpButtonViewModel,Yt as NearFarScalar,ATe as NeverTileDiscardPolicy,OQ as NodeRenderResources,p2 as NodeStatisticsPipelineStage,MI as NodeTransformationProperty,UV as OIT,lV as Occluder,ho as OffsetGeometryInstanceAttribute,Ibe as OpenCageGeocoderService,eC as OpenStreetMapImageryProvider,S3 as OrderedGroundPrimitiveCollection,Qn as OrientedBoundingBox,An as OrthographicFrustum,ls as OrthographicOffCenterFrustum,xbe as Packable,bbe as PackableForInterpolation,oR as Particle,_Te as ParticleBurst,CTe as ParticleEmitter,xTe as ParticleSystem,Be as Pass,El as PassState,vg as PathGraphics,lU as PathVisualizer,N4 as PeliasGeocoderService,gn as PerInstanceColorAppearance,Ny as PerformanceDisplay,t5 as PerformanceWatchdog,$H as PerformanceWatchdogViewModel,Vi as PerspectiveFrustum,fu as PerspectiveOffCenterFrustum,OV as PickDepth,GV as PickDepthFramebuffer,zV as PickFramebuffer,d4 as PickedMetadataInfo,ZV as Picking,fQ as PickingPipelineStage,ly as PinBuilder,He as PixelDatatype,et as PixelFormat,mn as Plane,F3 as PlaneGeometry,U3 as PlaneGeometryUpdater,oO as PlaneGraphics,k3 as PlaneOutlineGeometry,KQ as PntsLoader,Gx as PntsParser,x4 as PointCloud,u_ as PointCloudEyeDomeLighting,op as PointCloudShading,hQ as PointCloudStylingPipelineStage,LI as PointGraphics,ha as PointPrimitive,OD as PointPrimitiveCollection,uU as PointVisualizer,o_ as PolygonGeometry,$n as PolygonGeometryLibrary,H3 as PolygonGeometryUpdater,lm as PolygonGraphics,xc as PolygonHierarchy,V3 as PolygonOutlineGeometry,xi as PolygonPipeline,$d as Polyline,GD as PolylineArrowMaterialProperty,Fm as PolylineCollection,bs as PolylineColorAppearance,zD as PolylineDashMaterialProperty,cy as PolylineGeometry,dU as PolylineGeometryUpdater,VD as PolylineGlowMaterialProperty,$c as PolylineGraphics,Za as PolylineMaterialAppearance,TE as PolylineOutlineMaterialProperty,Xi as PolylinePipeline,mU as PolylineVisualizer,W3 as PolylineVolumeGeometry,Gm as PolylineVolumeGeometryLibrary,Y3 as PolylineVolumeGeometryUpdater,OI as PolylineVolumeGraphics,j3 as PolylineVolumeOutlineGeometry,am as PositionProperty,j_ as PositionPropertyArray,So as PostProcessStage,_8 as PostProcessStageCollection,tf as PostProcessStageComposite,yd as PostProcessStageLibrary,_d as PostProcessStageSampleMode,qT as PostProcessStageTextureCache,xF as PpeMetadata,HTe as PpeSource,IF as PpeTexture,kn as Primitive,ou as PrimitiveCollection,hx as PrimitiveLoadPlan,dx as PrimitiveOutlineGenerator,pQ as PrimitiveOutlinePipelineStage,CI as PrimitivePipeline,QQ as PrimitiveRenderResources,qr as PrimitiveState,gQ as PrimitiveStatisticsPipelineStage,Me as PrimitiveType,r5 as ProjectionPicker,i5 as ProjectionPickerViewModel,j as Property,HD as PropertyArray,ux as PropertyAttribute,uF as PropertyAttributeProperty,Ql as PropertyBag,Wl as PropertyTable,c_ as PropertyTexture,lF as PropertyTextureProperty,Fs as ProviderViewModel,Sbe as Proxy,Rl as QuadraticRealPolynomial,Vz as QuadtreeOccluders,Xz as QuadtreePrimitive,Wz as QuadtreeTile,Va as QuadtreeTileLoadState,bTe as QuadtreeTileProvider,mS as QuantizedMeshTerrainData,gM as QuarticRealPolynomial,Le as Quaternion,GF as QuaternionSpline,HC as Queue,In as Ray,ae as Rectangle,tT as RectangleCollisionChecker,jb as RectangleGeometry,da as RectangleGeometryLibrary,q3 as RectangleGeometryUpdater,um as RectangleGraphics,tb as RectangleOutlineGeometry,eo as ReferenceFrame,q_ as ReferenceProperty,Ue as RenderState,Qf as Renderbuffer,Yl as RenderbufferFormat,pr as Request,vA as RequestErrorEvent,Yc as RequestScheduler,hi as RequestState,Us as RequestType,we as Resource,Qi as ResourceCache,Vl as ResourceCacheKey,XO as ResourceCacheStatistics,qi as ResourceLoader,dt as ResourceLoaderState,fh as Rotation,ce as RuntimeError,Hg as S2Cell,Pa as SDFSettings,ic as SampledPositionProperty,ad as SampledProperty,on as Sampler,Fp as ScaledPositionProperty,p4 as Scene,HT as SceneFramebuffer,ie as SceneMode,_Q as SceneMode2DPipelineStage,l5 as SceneModePicker,a5 as SceneModePickerViewModel,to as SceneTransforms,E8 as SceneTransitioner,R8 as ScreenSpaceCameraController,Cd as ScreenSpaceEventHandler,vn as ScreenSpaceEventType,nE as SelectedFeatureIdPipelineStage,h5 as SelectionIndicator,f5 as SelectionIndicatorViewModel,YD as SensorVolumePortionToDisplay,I_ as ShaderBuilder,ZG as ShaderCache,pe as ShaderDestination,wQ as ShaderFunction,ln as ShaderProgram,We as ShaderSource,SQ as ShaderStruct,Oy as ShadowMap,$p as ShadowMapShader,Dn as ShadowMode,xf as ShadowVolumeAppearance,iz as SharedContext,Bn as ShowGeometryInstanceAttribute,$E as Simon1994PlanetaryPositions,wbe as SimplePolylineGeometry,j2 as SingleTileImageryProvider,CQ as SkinningPipelineStage,g4 as SkyAtmosphere,_4 as SkyBox,c4 as SpatialNode,CF as Spdcf,hm as SpecularEnvironmentCubeMap,TTe as SphereEmitter,Bbe as SphereGeometry,L_ as SphereOutlineGeometry,A3 as Spherical,_o as Spline,wr as SplitDirection,kP as Splitter,ph as StaticGeometryColorBatch,_h as StaticGeometryPerMaterialBatch,uv as StaticGroundGeometryColorBatch,oU as StaticGroundGeometryPerMaterialBatch,hU as StaticGroundPolylinePerMaterialBatch,fv as StaticOutlineGeometryBatch,Kt as StencilConstants,Zn as StencilFunction,_t as StencilOperation,UF as SteppedSpline,sl as Stereographic,YC as StorageType,WD as StripeMaterialProperty,Wm as StripeOrientation,Da as StructuralMetadata,Bm as StyleCommandsNeeded,STe as StyleExpression,y4 as Sun,wy as SunLight,L8 as SunPostProcess,pF as SupportedImageFormats,AH as SvgPathBindingHandler,mi as TaskProcessor,uH as Terrain,fA as TerrainData,Il as TerrainEncoding,oP as TerrainFillMesh,Ph as TerrainMesh,kI as TerrainOffsetProperty,Bs as TerrainProvider,za as TerrainQuantization,To as TerrainState,Nt as Texture,Zye as Texture3D,zx as TextureAtlas,$G as TextureCache,pi as TextureMagnificationFilter,o4 as TextureManager,Zt as TextureMinificationFilter,XB as TexturePacker,zTe as TextureUniform,Tn as TextureWrap,CA as TileAvailability,$f as TileBoundingRegion,vk as TileBoundingS2Cell,O_ as TileBoundingSphere,wTe as TileBoundingVolume,fH as TileCoordinatesImageryProvider,BTe as TileDiscardPolicy,Sn as TileEdge,UB as TileImagery,iE as TileMapServiceImageryProvider,bk as TileMetadata,Lu as TileOrientedBoundingBox,zo as TileProviderError,Yz as TileReplacementQueue,ai as TileSelectionResult,DTe as TileState,$Q as Tileset3DTileContent,Nk as TilesetMetadata,qF as TilesetPipelineStage,Dbe as TilingScheme,ri as TimeConstants,Nx as TimeDynamicImagery,GP as TimeDynamicPointCloud,Rn as TimeInterval,hs as TimeIntervalCollection,X_ as TimeIntervalCollectionPositionProperty,J_ as TimeIntervalCollectionProperty,oi as TimeStandard,p5 as Timeline,m5 as TimelineHighlightRange,A5 as TimelineTrack,CM as Tipsify,L0 as ToggleButtonViewModel,Qy as Tonemapper,Tg as TrackingReferenceFrame,kt as Transforms,DC as TranslationRotationScale,HV as TranslucentTileClassification,SB as TridiagonalSystemSolver,zS as TrustedServers,XT as TweenCollection,tz as UniformState,PP as UniformType,vc as UrlTemplateImageryProvider,KAo as VERSION,C5 as VRButton,_5 as VRButtonViewModel,Rbe as VRTheWorldTerrainProvider,VTe as VaryingType,KA as Vector3DTileBatch,pk as Vector3DTileClampedPolylines,_k as Vector3DTileContent,Ug as Vector3DTileGeometry,fk as Vector3DTilePoints,dk as Vector3DTilePolygons,Kx as Vector3DTilePolylines,HI as Vector3DTilePrimitive,g3 as VelocityOrientationProperty,Z_ as VelocityVectorProperty,li as VertexArray,S_ as VertexArrayFacade,ct as VertexAttributeSemantic,Pe as VertexFormat,Yr as VerticalExaggeration,IQ as VerticalExaggerationPipelineStage,Wn as VerticalOrigin,Mbe as VideoSynchronizer,jT as View,RSe as Viewer,vTe as ViewportQuad,Gr as Visibility,fye as Visualizer,nS as VoxelBoxShape,F8 as VoxelCell,tS as VoxelContent,iS as VoxelCylinderShape,oS as VoxelEllipsoidShape,x5 as VoxelInspector,E5 as VoxelInspectorViewModel,kh as VoxelMetadataOrder,E0 as VoxelPrimitive,PTe as VoxelProvider,Z8 as VoxelRenderResources,RTe as VoxelShape,lc as VoxelShapeType,u4 as VoxelTraversal,Nbe as VulkanConstants,X3 as WallGeometry,qb as WallGeometryLibrary,Z3 as WallGeometryUpdater,Pg as WallGraphics,J3 as WallOutlineGeometry,ee as WebGLConstants,q2 as WebMapServiceImageryProvider,K2 as WebMapTileServiceImageryProvider,Yi as WebMercatorProjection,ws as WebMercatorTilingScheme,Gs as WindingOrder,VB as WireframeIndexGenerator,xQ as WireframePipelineStage,$V as _shadersAcesTonemappingStage,M8 as _shadersAdditiveBlend,Jv as _shadersAdjustTranslucentFS,cM as _shadersAllMaterialAppearanceFS,lM as _shadersAllMaterialAppearanceVS,e8 as _shadersAmbientOcclusionGenerate,t8 as _shadersAmbientOcclusionModulate,LM as _shadersAspectRampMaterial,bm as _shadersAtmosphereCommon,KF as _shadersAtmosphereStageFS,XF as _shadersAtmosphereStageVS,uM as _shadersBasicMaterialAppearanceFS,fM as _shadersBasicMaterialAppearanceVS,ek as _shadersBillboardCollectionFS,tk as _shadersBillboardCollectionVS,n8 as _shadersBlackAndWhite,i8 as _shadersBloomComposite,rz as _shadersBrdfLutGeneratorFS,N8 as _shadersBrightPass,o8 as _shadersBrightness,OM as _shadersBumpMapMaterial,I2 as _shadersCPUStylingStageFS,E2 as _shadersCPUStylingStageVS,FM as _shadersCheckerboardMaterial,sz as _shadersCloudCollectionFS,az as _shadersCloudCollectionVS,cz as _shadersCloudNoiseFS,lz as _shadersCloudNoiseVS,uz as _shadersCompareAndPackTranslucentDepth,fz as _shadersCompositeOITFS,WT as _shadersCompositeTranslucentClassification,rF as _shadersComputeIrradianceFS,sF as _shadersComputeRadianceMapFS,r8 as _shadersContrastBias,aF as _shadersConvolveSpecularMapFS,cF as _shadersConvolveSpecularMapVS,T2 as _shadersCustomShaderStageFS,b2 as _shadersCustomShaderStageVS,_I as _shadersCzmBuiltins,s8 as _shadersDepthOfField,dz as _shadersDepthPlaneFS,hz as _shadersDepthPlaneVS,a8 as _shadersDepthView,GTe as _shadersDepthViewPacked,QM as _shadersDotMaterial,c8 as _shadersEdgeDetection,kM as _shadersElevationBandMaterial,UM as _shadersElevationContourMaterial,GM as _shadersElevationRampMaterial,Zv as _shadersEllipsoidFS,q4 as _shadersEllipsoidSurfaceAppearanceFS,K4 as _shadersEllipsoidSurfaceAppearanceVS,$v as _shadersEllipsoidVS,f8 as _shadersFXAA,mz as _shadersFXAA3_11,zM as _shadersFadeMaterial,S2 as _shadersFeatureIdStageFS,w2 as _shadersFeatureIdStageVS,l8 as _shadersFilmicTonemapping,u0 as _shadersGaussianBlur1D,R2 as _shadersGeometryStageFS,M2 as _shadersGeometryStageVS,Az as _shadersGlobeFS,pz as _shadersGlobeVS,VM as _shadersGridMaterial,eP as _shadersGroundAtmosphere,oN as _shadersHSBToRGB,rN as _shadersHSLToRGB,ZF as _shadersImageBasedLightingStageFS,u2 as _shadersInstancingStageCommon,f2 as _shadersInstancingStageVS,H8 as _shadersIntersectBox,V8 as _shadersIntersectClippingPlanes,W8 as _shadersIntersectCylinder,z8 as _shadersIntersectDepth,j8 as _shadersIntersectEllipsoid,vP as _shadersIntersectLongitude,ZT as _shadersIntersection,G8 as _shadersIntersectionUtils,d2 as _shadersLegacyInstancingStageVS,d8 as _shadersLensFlare,rQ as _shadersLightingStageFS,aQ as _shadersMaterialStageFS,J8 as _shadersMegatexture,B2 as _shadersMetadataStageFS,D2 as _shadersMetadataStageVS,o2 as _shadersModelClippingPlanesStageFS,a2 as _shadersModelClippingPolygonsStageFS,s2 as _shadersModelClippingPolygonsStageVS,i2 as _shadersModelColorStageFS,VQ as _shadersModelFS,DQ as _shadersModelSilhouetteStageFS,vQ as _shadersModelSilhouetteStageVS,MQ as _shadersModelSplitterStageFS,zQ as _shadersModelVS,h8 as _shadersModifiedReinhardTonemapping,lQ as _shadersMorphTargetsStageVS,m8 as _shadersNightVision,HM as _shadersNormalMapMaterial,X8 as _shadersOctree,ef as _shadersPassThrough,a0 as _shadersPassThroughDepth,u8 as _shadersPbrNeutralTonemapping,e1 as _shadersPerInstanceColorAppearanceFS,t1 as _shadersPerInstanceColorAppearanceVS,pI as _shadersPerInstanceFlatColorAppearanceFS,n1 as _shadersPerInstanceFlatColorAppearanceVS,DF as _shadersPointCloudEyeDomeLighting,dQ as _shadersPointCloudStylingStageVS,IE as _shadersPointPrimitiveCollectionFS,s3 as _shadersPointPrimitiveCollectionVS,oF as _shadersPolygonSignedDistanceFS,WM as _shadersPolylineArrowMaterial,nO as _shadersPolylineColorAppearanceVS,bf as _shadersPolylineCommon,jM as _shadersPolylineDashMaterial,TI as _shadersPolylineFS,YM as _shadersPolylineGlowMaterial,iO as _shadersPolylineMaterialAppearanceVS,qM as _shadersPolylineOutlineMaterial,ZL as _shadersPolylineShadowVolumeFS,$L as _shadersPolylineShadowVolumeMorphFS,eO as _shadersPolylineShadowVolumeMorphVS,tO as _shadersPolylineShadowVolumeVS,sk as _shadersPolylineVS,Ik as _shadersPrimitiveGaussianSplatFS,Ek as _shadersPrimitiveGaussianSplatVS,AQ as _shadersPrimitiveOutlineStageFS,mQ as _shadersPrimitiveOutlineStageVS,sN as _shadersRGBToHSB,aN as _shadersRGBToHSL,cN as _shadersRGBToXYZ,A8 as _shadersReinhardTonemapping,J2 as _shadersReprojectWebMercatorFS,Z2 as _shadersReprojectWebMercatorVS,KM as _shadersRimLightingMaterial,vB as _shadersSelectedFeatureIdStageCommon,fw as _shadersShadowVolumeAppearanceFS,GL as _shadersShadowVolumeAppearanceVS,IC as _shadersShadowVolumeFS,p8 as _shadersSilhouette,yQ as _shadersSkinningStageVS,tP as _shadersSkyAtmosphereCommon,gz as _shadersSkyAtmosphereFS,_z as _shadersSkyAtmosphereVS,yz as _shadersSkyBoxFS,Cz as _shadersSkyBoxVS,XM as _shadersSlopeRampMaterial,JM as _shadersStripeMaterial,Ez as _shadersSunFS,Iz as _shadersSunTextureFS,xz as _shadersSunVS,dM as _shadersTexturedMaterialAppearanceFS,hM as _shadersTexturedMaterialAppearanceVS,Ak as _shadersVector3DTileClampedPolylinesFS,mk as _shadersVector3DTileClampedPolylinesVS,hk as _shadersVector3DTilePolylinesVS,Vw as _shadersVectorTileVS,EQ as _shadersVerticalExaggerationStageVS,bz as _shadersViewportQuadFS,wT as _shadersViewportQuadVS,k8 as _shadersVoxelFS,Q8 as _shadersVoxelUtils,U8 as _shadersVoxelVS,$M as _shadersWater,ZM as _shadersWaterMaskMaterial,lN as _shadersXYZToRGB,uN as _shadersacesTonemapping,fN as _shadersalphaWeight,dN as _shadersantialias,hN as _shadersapplyHSBShift,mN as _shadersapproximateSphericalCoordinates,AN as _shadersapproximateTanh,pN as _shadersbackFacing,gN as _shadersbranchFreeTernary,_N as _shaderscascadeColor,yN as _shaderscascadeDistance,CN as _shaderscascadeMatrix,EN as _shaderscascadeWeights,IN as _shadersclipPolygons,xN as _shaderscolumbusViewMorph,bN as _shaderscomputeAtmosphereColor,TN as _shaderscomputeGroundAtmosphereScattering,SN as _shaderscomputePosition,wN as _shaderscomputeScattering,Y8 as _shadersconvertUvToBox,q8 as _shadersconvertUvToCylinder,K8 as _shadersconvertUvToEllipsoid,BN as _shaderscosineAndSine,DN as _shadersdecompressTextureCoordinates,f1 as _shadersdegreesPerRadian,vN as _shadersdepthClamp,d1 as _shadersdepthRange,X1 as _shadersdepthRangeStruct,PN as _shaderseastNorthUpToEyeCoordinates,RN as _shadersellipsoidContainsPoint,MN as _shadersellipsoidTextureCoordinates,h1 as _shadersepsilon1,m1 as _shadersepsilon2,A1 as _shadersepsilon3,p1 as _shadersepsilon4,g1 as _shadersepsilon5,_1 as _shadersepsilon6,y1 as _shadersepsilon7,NN as _shadersequalsEpsilon,LN as _shaderseyeOffset,ON as _shaderseyeToWindowCoordinates,FN as _shadersfastApproximateAtan,QN as _shadersfog,kN as _shadersgammaCorrect,UN as _shadersgeodeticSurfaceNormal,GN as _shadersgetDefaultMaterial,zN as _shadersgetDynamicAtmosphereLightDirection,VN as _shadersgetLambertDiffuse,HN as _shadersgetSpecular,WN as _shadersgetWaterNoise,jN as _shadershue,C1 as _shadersinfinity,YN as _shadersinverseGamma,qN as _shadersisEmpty,KN as _shadersisFull,XN as _shaderslatitudeToWebMercatorFraction,JN as _shaderslineDistance,ZN as _shaderslinearToSrgb,$N as _shadersluminance,J1 as _shadersmaterial,Z1 as _shadersmaterialInput,eL as _shadersmaximumComponent,tL as _shadersmetersPerPixel,$1 as _shadersmodelMaterial,nL as _shadersmodelToWindowCoordinates,eN as _shadersmodelVertexOutput,iL as _shadersmultiplyWithColorBalance,oL as _shadersnearFarScalar,rL as _shadersoctDecode,E1 as _shadersoneOverPi,I1 as _shadersoneOverTwoPi,sL as _shaderspackDepth,x1 as _shaderspassCesium3DTile,b1 as _shaderspassCesium3DTileClassification,T1 as _shaderspassCesium3DTileClassificationIgnoreShow,S1 as _shaderspassClassification,w1 as _shaderspassCompute,B1 as _shaderspassEnvironment,D1 as _shaderspassGaussianSplats,v1 as _shaderspassGlobe,P1 as _shaderspassOpaque,R1 as _shaderspassOverlay,M1 as _shaderspassTerrainClassification,N1 as _shaderspassTranslucent,L1 as _shaderspassVoxels,aL as _shaderspbrLighting,cL as _shaderspbrNeutralTonemapping,lL as _shadersphong,O1 as _shaderspi,F1 as _shaderspiOverFour,Q1 as _shaderspiOverSix,k1 as _shaderspiOverThree,U1 as _shaderspiOverTwo,uL as _shadersplaneDistance,fL as _shaderspointAlongRay,G1 as _shadersradiansPerDegree,tN as _shadersray,dL as _shadersrayEllipsoidIntersectionInterval,nN as _shadersraySegment,hL as _shadersraySphereIntersectionInterval,mL as _shadersreadDepth,AL as _shadersreadNonPerspective,pL as _shadersreverseLogDepth,gL as _shadersround,_L as _shaderssaturation,z1 as _shaderssceneMode2D,V1 as _shaderssceneMode3D,H1 as _shaderssceneModeColumbusView,W1 as _shaderssceneModeMorphing,yL as _shadersshadowDepthCompare,iN as _shadersshadowParameters,CL as _shadersshadowVisibility,EL as _shaderssignNotZero,j1 as _shaderssolarRadius,IL as _shaderssphericalHarmonics,xL as _shaderssrgbToLinear,bL as _shaderstangentToEyeSpaceMatrix,TL as _shaderstextureCube,Y1 as _shadersthreePiOver2,SL as _shaderstransformPlane,wL as _shaderstranslateRelativeToEye,BL as _shaderstranslucentPhong,DL as _shaderstranspose,q1 as _shaderstwoPi,vL as _shadersunpackClippingExtents,PL as _shadersunpackDepth,RL as _shadersunpackFloat,ML as _shadersunpackUint,NL as _shadersvalueTransform,LL as _shadersvertexLogDepth,K1 as _shaderswebMercatorMaxLatitude,OL as _shaderswindowToEyeCoordinates,FL as _shaderswriteDepthClamp,QL as _shaderswriteLogDepth,kL as _shaderswriteNonPerspective,si as addAllToArray,OO as addBuffer,SO as addDefaults,MO as addExtensionsRequired,Yd as addExtensionsUsed,kC as addPipelineExtras,aa as addToArray,RR as appendForwardSlash,No as arrayRemoveDuplicates,uI as barycentricCoordinates,qo as binarySearch,fn as buildModuleUrl,t4 as buildVoxelDrawCommands,ze as clone,wt as combine,RT as computeFlyToLocationForRectangle,Hx as createBillboardPointCallback,Mn as createCommand,SH as createDefaultImageryProviderViewModels,wH as createDefaultTerrainProviderViewModels,OTe as createElevationBandMaterial,QTe as createGooglePhotorealistic3DTileset,Xn as createGuid,Xo as createMaterialPropertyDescriptor,kTe as createOsmBuildingsAsync,de as createPropertyDescriptor,Fl as createRawPropertyDescriptor,UTe as createTangentSpaceDebugPrimitive,WTe as createTaskProcessorWorker,c1 as createUniform,l1 as createUniformArray,k4 as createWorldBathymetryAsync,E_ as createWorldImageryAsync,IS as createWorldTerrainAsync,U4 as decodeGoogleEarthEnterpriseData,gk as decodeVectorPolylinePositions,Obe as defaultValue,yu as defer,l as defined,UL as demodernizeShader,Pr as deprecationWarning,ue as destroyObject,Eye as exportKml,KI as findAccessorMinMax,Jx as findContentMetadata,Zx as findGroupMetadata,Tk as findTileMetadata,$w as forEachTextureInMaterial,up as formatError,Wte as freezeRenderState,DA as getAbsoluteUri,Bu as getAccessorByteStride,MR as getBaseUri,vf as getBinaryAccessor,C4 as getClipAndStyleCode,Dy as getClippingFunction,Kg as getComponentReader,Gn as getElement,j0 as getExtensionFromUri,W_ as getFilenameFromUri,n4 as getImageFromTypedArray,qh as getImagePixels,yr as getJsonFromTypedArray,gm as getMagic,f4 as getMetadataClassProperty,h4 as getMetadataProperty,Tu as getStringFromTypedArray,Oi as getTimestamp,Ii as hasExtension,Rg as heightReferenceOnEntityPropertyChanged,Tl as isBitSet,Y0 as isBlobUri,aC as isCrossOriginUrl,mg as isDataUri,Yh as isLeapYear,xe as knockout,PS as knockout_3_5_1,mH as knockout_es5,q0 as loadAndExecuteScript,oz as loadCubeMap,YI as loadImageFromTypedArray,Iu as loadKTX2,qp as mergeSort,RO as moveTechniqueRenderStates,NO as moveTechniquesToExtension,Rf as numberOfComponentsForType,K0 as objectToQuery,yt as oneTimeWarning,f_ as parseBatchTable,dF as parseFeatureMetadataLegacy,DO as parseGlb,LR as parseResponseHeaders,fF as parseStructuralMetadata,jB as pickModel,Fbe as pointInsideTriangle,R_ as preprocess3DTileContent,e4 as processVoxelProperties,Af as queryToObject,FO as readAccessorPacked,XI as removeExtension,BO as removeExtensionsRequired,qI as removeExtensionsUsed,PO as removePipelineExtras,LO as removeUnusedElements,GC as resizeImageToNextPowerOfTwo,Tz as sampleTerrain,PT as sampleTerrainMostDetailed,z0 as scaleToGeodeticSurface,xS as srgbToLinear,zL as subdivideArray,fc as subscribeAndEvaluate,kO as updateAccessorComponentTypes,GO as updateVersion,Rr as usesExtension,MSe as viewerCesium3DTilesInspectorMixin,NSe as viewerCesiumInspectorMixin,OSe as viewerDragDropMixin,FSe as viewerPerformanceWatchdogMixin,kSe as viewerVoxelInspectorMixin,Qbe as webGLConstantToGlslType,G4 as wrapFunction,jx as writeTextToCanvas};
|