@loaders.gl/tiles 4.4.3 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +110 -1
  2. package/dist/dist.dev.js +4359 -1950
  3. package/dist/dist.min.js +1 -1
  4. package/dist/image-set.d.ts +94 -0
  5. package/dist/image-set.d.ts.map +1 -0
  6. package/dist/image-set.js +243 -0
  7. package/dist/image-set.js.map +1 -0
  8. package/dist/index.cjs +4178 -1892
  9. package/dist/index.cjs.map +4 -4
  10. package/dist/index.d.ts +27 -9
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +17 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
  15. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
  16. package/dist/point-cloud/point-cloud-tile.js +67 -0
  17. package/dist/point-cloud/point-cloud-tile.js.map +1 -0
  18. package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
  19. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  20. package/dist/point-cloud/point-cloud-tileset.js +507 -0
  21. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  22. package/dist/point-cloud/types.d.ts +64 -0
  23. package/dist/point-cloud/types.d.ts.map +1 -0
  24. package/dist/point-cloud/types.js +2 -0
  25. package/dist/point-cloud/types.js.map +1 -0
  26. package/dist/raster-set.d.ts +107 -0
  27. package/dist/raster-set.d.ts.map +1 -0
  28. package/dist/raster-set.js +268 -0
  29. package/dist/raster-set.js.map +1 -0
  30. package/dist/tileset-2d/adapter.d.ts +38 -0
  31. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  32. package/dist/tileset-2d/adapter.js +5 -0
  33. package/dist/tileset-2d/adapter.js.map +1 -0
  34. package/dist/tileset-2d/index.d.ts +7 -0
  35. package/dist/tileset-2d/index.d.ts.map +1 -0
  36. package/dist/tileset-2d/index.js +6 -0
  37. package/dist/tileset-2d/index.js.map +1 -0
  38. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  39. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  40. package/dist/tileset-2d/tile-2d-header.js +181 -0
  41. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  42. package/dist/tileset-2d/tileset-2d.d.ts +201 -0
  43. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  44. package/dist/tileset-2d/tileset-2d.js +532 -0
  45. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  46. package/dist/tileset-2d/types.d.ts +44 -0
  47. package/dist/tileset-2d/types.d.ts.map +1 -0
  48. package/dist/tileset-2d/types.js +5 -0
  49. package/dist/tileset-2d/types.js.map +1 -0
  50. package/dist/tileset-2d.d.ts +2 -0
  51. package/dist/tileset-2d.d.ts.map +1 -0
  52. package/dist/tileset-2d.js +5 -0
  53. package/dist/tileset-2d.js.map +1 -0
  54. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  55. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  56. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
  57. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  58. package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +36 -27
  59. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  60. package/dist/{tileset → tileset-3d/common}/tile-3d.js +53 -62
  61. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  62. package/dist/tileset-3d/common/tileset-3d.d.ts +177 -0
  63. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  64. package/dist/tileset-3d/common/tileset-3d.js +566 -0
  65. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  66. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  67. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +1 -1
  68. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  69. package/dist/tileset-3d/common/tileset-source.d.ts +186 -0
  70. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  71. package/dist/tileset-3d/common/tileset-source.js +17 -0
  72. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  73. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +2 -2
  74. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  75. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +2 -2
  76. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  77. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +100 -0
  78. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  79. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +312 -0
  80. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  81. package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.d.ts +1 -1
  82. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  83. package/dist/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.js +1 -1
  84. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  85. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  86. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  87. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
  88. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  89. package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
  90. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  91. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  92. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +2 -2
  93. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  94. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  95. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  96. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +14 -23
  97. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  98. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  99. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  100. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  101. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  102. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  103. package/dist/{tileset → tileset-3d}/helpers/frame-state.d.ts +1 -1
  104. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  105. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  106. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  107. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  108. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
  109. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  110. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +20 -0
  111. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  112. package/dist/{tileset → tileset-3d}/helpers/tiles-3d-lod.js +43 -4
  113. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  114. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  115. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  116. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  117. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  118. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  119. package/dist/types.d.ts +7 -0
  120. package/dist/types.d.ts.map +1 -1
  121. package/package.json +7 -6
  122. package/src/image-set.ts +328 -0
  123. package/src/index.ts +80 -9
  124. package/src/point-cloud/point-cloud-tile.ts +76 -0
  125. package/src/point-cloud/point-cloud-tileset.ts +709 -0
  126. package/src/point-cloud/types.ts +78 -0
  127. package/src/raster-set.ts +374 -0
  128. package/src/tileset-2d/adapter.ts +47 -0
  129. package/src/tileset-2d/index.ts +33 -0
  130. package/src/tileset-2d/tile-2d-header.ts +224 -0
  131. package/src/tileset-2d/tileset-2d.ts +716 -0
  132. package/src/tileset-2d/types.ts +39 -0
  133. package/src/tileset-2d.ts +5 -0
  134. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  135. package/src/{tileset → tileset-3d/common}/tile-3d.ts +64 -73
  136. package/src/tileset-3d/common/tileset-3d.ts +736 -0
  137. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +1 -1
  138. package/src/tileset-3d/common/tileset-source.ts +234 -0
  139. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +3 -3
  140. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +379 -0
  141. package/src/{tileset → tileset-3d}/format-3d-tiles/tileset-3d-traverser.ts +1 -1
  142. package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
  143. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +2 -2
  144. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +15 -24
  145. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +1 -1
  146. package/src/{tileset → tileset-3d}/helpers/frame-state.ts +1 -1
  147. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
  148. package/src/{tileset → tileset-3d}/helpers/tiles-3d-lod.ts +46 -4
  149. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  150. package/src/types.ts +7 -0
  151. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  152. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  153. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  154. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  155. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  156. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  157. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  158. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  159. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  160. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  161. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  162. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  163. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  164. package/dist/tileset/helpers/frame-state.js.map +0 -1
  165. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  166. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  167. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  168. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  169. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  170. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  171. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  172. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  173. package/dist/tileset/helpers/zoom.js.map +0 -1
  174. package/dist/tileset/tile-3d.d.ts.map +0 -1
  175. package/dist/tileset/tile-3d.js.map +0 -1
  176. package/dist/tileset/tileset-3d.d.ts +0 -284
  177. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  178. package/dist/tileset/tileset-3d.js +0 -814
  179. package/dist/tileset/tileset-3d.js.map +0 -1
  180. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  181. package/dist/tileset/tileset-cache.js.map +0 -1
  182. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  183. package/dist/tileset/tileset-traverser.js.map +0 -1
  184. package/src/tileset/tileset-3d.ts +0 -1037
  185. /package/dist/{tileset → tileset-3d/common}/tileset-cache.d.ts +0 -0
  186. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  187. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +0 -0
  188. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  189. /package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +0 -0
  190. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
  191. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +0 -0
  192. /package/dist/{tileset → tileset-3d}/helpers/frame-state.js +0 -0
  193. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  194. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  195. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  196. /package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +0 -0
  197. /package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +0 -0
  198. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
package/dist/dist.min.js CHANGED
@@ -4,6 +4,6 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var ar=Object.create;var Yt=Object.defineProperty;var hr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,mr=Object.prototype.hasOwnProperty;var pr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ct=(e,t)=>{for(var s in t)Yt(e,s,{get:t[s],enumerable:!0})},Bt=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of lr(t))!mr.call(e,r)&&r!==s&&Yt(e,r,{get:()=>t[r],enumerable:!(n=hr(t,r))||n.enumerable});return e},Gt=(e,t,s)=>(Bt(e,t,"default"),s&&Bt(s,t,"default")),Oe=(e,t,s)=>(s=e!=null?ar(fr(e)):{},Bt(t||!e||!e.__esModule?Yt(s,"default",{value:e,enumerable:!0}):s,e)),dr=e=>Bt(Yt({},"__esModule",{value:!0}),e);var Zt=pr((lc,ys)=>{ys.exports=globalThis.loaders});var Ft={};Ct(Ft,{LOD_METRIC_TYPE:()=>xe,TILESET_TYPE:()=>W,TILE_CONTENT_STATE:()=>Y,TILE_REFINEMENT:()=>Z,TILE_TYPE:()=>ue,Tile3D:()=>it,Tileset3D:()=>we,TilesetCache:()=>Rt,TilesetTraverser:()=>K,calculateTransformProps:()=>he,createBoundingVolume:()=>At,getFrameState:()=>de,getLodStatus:()=>Me});Gt(Ft,Oe(Zt(),1));var ur=1/Math.PI*180,xr=1/180*Math.PI,gr={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...gr}};var z=globalThis.mathgl.config;function Ae(e,{precision:t=z.precision}={}){return e=Mr(e),`${parseFloat(e.toPrecision(t))}`}function tt(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ce(e){return _s(e)}function Pe(e){return j(e)}function _s(e,t){return Ss(e,s=>s*xr,t)}function j(e,t){return Ss(e,s=>s*ur,t)}function X(e,t,s){let n=z.EPSILON;s&&(z.EPSILON=s);try{if(e===t)return!0;if(tt(e)&&tt(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;++r)if(!X(e[r],t[r]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=z.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{z.EPSILON=n}}function Mr(e){return Math.round(e/z.EPSILON)*z.EPSILON}function Tr(e){return e.clone?e.clone():new Array(e.length)}function Ss(e,t,s){if(tt(e)){let n=e;s=s||Tr(n);for(let r=0;r<s.length&&r<n.length;++r){let i=typeof e=="number"?e:e[r];s[r]=t(i,r,s)}return s}return t(e)}var ot=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,s=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=t[n+s];return this.check()}toArray(t=[],s=0){for(let n=0;n<this.ELEMENTS;++n)t[s+n]=this[n];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:tt(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(z)}formatString(t){let s="";for(let n=0;n<this.ELEMENTS;++n)s+=(n>0?", ":"")+Ae(this[n],t);return`${t.printTypes?this.constructor.name:""}[${s}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(!X(this[s],t[s]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(this[s]!==t[s])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,s,n){if(n===void 0)return this.lerp(this,t,s);for(let r=0;r<this.ELEMENTS;++r){let i=t[r],o=typeof s=="number"?s:s[r];this[r]=i+n*(o-i)}return this.check()}min(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(t[s],this[s]);return this.check()}max(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.max(t[s],this[s]);return this.check()}clamp(t,s){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],t[n]),s[n]);return this.check()}add(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]+=s[n];return this.check()}subtract(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]-=s[n];return this.check()}scale(t){if(typeof t=="number")for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;else for(let s=0;s<this.ELEMENTS&&s<t.length;++s)this[s]*=t[s];return this.check()}multiplyByScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}check(){if(z.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let s=0;s<this.ELEMENTS;++s)t=t&&Number.isFinite(this[s]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=t;return this.check()}addScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,s){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],t),s);return this.check()}get elements(){return this}};function yr(e,t){if(e.length!==t)return!1;for(let s=0;s<e.length;++s)if(!Number.isFinite(e[s]))return!1;return!0}function L(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function ct(e,t,s=""){if(z.debug&&!yr(e,t))throw new Error(`math.gl: ${s} some fields set to invalid numbers'`);return e}function U(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var Mt=class extends ot{get x(){return this[0]}set x(t){this[0]=L(t)}get y(){return this[1]}set y(t){this[1]=L(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let s=0;s<this.ELEMENTS;++s)t+=this[s]*this[s];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let s=0;for(let n=0;n<this.ELEMENTS;++n){let r=this[n]-t[n];s+=r*r}return L(s)}dot(t){let s=0;for(let n=0;n<this.ELEMENTS;++n)s+=this[n]*t[n];return L(s)}normalize(){let t=this.magnitude();if(t!==0)for(let s=0;s<this.ELEMENTS;++s)this[s]/=t;return this.check()}multiply(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]*=s[n];return this.check()}divide(...t){for(let s of t)for(let n=0;n<this.ELEMENTS;++n)this[n]/=s[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return U(t>=0&&t<this.ELEMENTS,"index is out of range"),L(this[t])}setComponent(t,s){return U(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=s,this.check()}addVectors(t,s){return this.copy(t).add(s)}subVectors(t,s){return this.copy(t).subtract(s)}multiplyVectors(t,s){return this.copy(t).multiply(s)}addScaledVector(t,s){return this.add(new this.constructor(t).multiplyScalar(s))}};var V=typeof Float32Array<"u"?Float32Array:Array,Pt=Math.random;function Tt(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var _c=Math.PI/180;function _r(){let e=new V(2);return V!=Float32Array&&(e[0]=0,e[1]=0),e}function Es(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[3]*r+s[6],e[1]=s[1]*n+s[4]*r+s[7],e}function ws(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[4]*r+s[12],e[1]=s[1]*n+s[5]*r+s[13],e}var Sc=function(){let e=_r();return function(t,s,n,r,i,o){let c,a;for(s||(s=2),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],i(e,e,o),t[c]=e[0],t[c+1]=e[1];return t}}();function Rs(e,t,s){let n=t[0],r=t[1],i=s[3]*n+s[7]*r||1;return e[0]=(s[0]*n+s[4]*r)/i,e[1]=(s[1]*n+s[5]*r)/i,e}function $t(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[3]*n+s[7]*r+s[11]*i||1;return e[0]=(s[0]*n+s[4]*r+s[8]*i)/o,e[1]=(s[1]*n+s[5]*r+s[9]*i)/o,e[2]=(s[2]*n+s[6]*r+s[10]*i)/o,e}function Os(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[2]*r,e[1]=s[1]*n+s[3]*r,e[2]=t[2],e}function As(e,t,s){let n=t[0],r=t[1];return e[0]=s[0]*n+s[2]*r,e[1]=s[1]*n+s[3]*r,e[2]=t[2],e[3]=t[3],e}function jt(e,t,s){let n=t[0],r=t[1],i=t[2];return e[0]=s[0]*n+s[3]*r+s[6]*i,e[1]=s[1]*n+s[4]*r+s[7]*i,e[2]=s[2]*n+s[5]*r+s[8]*i,e[3]=t[3],e}var ut={};Ct(ut,{add:()=>Rr,angle:()=>ve,bezier:()=>Dr,ceil:()=>Or,clone:()=>Sr,copy:()=>Er,create:()=>Xt,cross:()=>pt,dist:()=>$r,distance:()=>Is,div:()=>Zr,divide:()=>Ls,dot:()=>Nt,equals:()=>Br,exactEquals:()=>Wr,floor:()=>Ar,forEach:()=>Qr,fromValues:()=>Qt,hermite:()=>Vr,inverse:()=>vr,len:()=>be,length:()=>Cs,lerp:()=>br,max:()=>Pr,min:()=>Cr,mul:()=>Gr,multiply:()=>Ns,negate:()=>qr,normalize:()=>Ne,random:()=>Ur,rotateX:()=>Le,rotateY:()=>Ie,rotateZ:()=>qe,round:()=>Nr,scale:()=>Lr,scaleAndAdd:()=>Ir,set:()=>wr,slerp:()=>zr,sqrDist:()=>jr,sqrLen:()=>Xr,squaredDistance:()=>qs,squaredLength:()=>vs,str:()=>Fr,sub:()=>Yr,subtract:()=>Ps,transformMat3:()=>Lt,transformMat4:()=>dt,transformQuat:()=>It,zero:()=>kr});function Xt(){let e=new V(3);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Sr(e){let t=new V(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Cs(e){let t=e[0],s=e[1],n=e[2];return Math.sqrt(t*t+s*s+n*n)}function Qt(e,t,s){let n=new V(3);return n[0]=e,n[1]=t,n[2]=s,n}function Er(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function wr(e,t,s,n){return e[0]=t,e[1]=s,e[2]=n,e}function Rr(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e}function Ps(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e}function Ns(e,t,s){return e[0]=t[0]*s[0],e[1]=t[1]*s[1],e[2]=t[2]*s[2],e}function Ls(e,t,s){return e[0]=t[0]/s[0],e[1]=t[1]/s[1],e[2]=t[2]/s[2],e}function Or(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Ar(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Cr(e,t,s){return e[0]=Math.min(t[0],s[0]),e[1]=Math.min(t[1],s[1]),e[2]=Math.min(t[2],s[2]),e}function Pr(e,t,s){return e[0]=Math.max(t[0],s[0]),e[1]=Math.max(t[1],s[1]),e[2]=Math.max(t[2],s[2]),e}function Nr(e,t){return e[0]=Tt(t[0]),e[1]=Tt(t[1]),e[2]=Tt(t[2]),e}function Lr(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function Ir(e,t,s,n){return e[0]=t[0]+s[0]*n,e[1]=t[1]+s[1]*n,e[2]=t[2]+s[2]*n,e}function Is(e,t){let s=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(s*s+n*n+r*r)}function qs(e,t){let s=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return s*s+n*n+r*r}function vs(e){let t=e[0],s=e[1],n=e[2];return t*t+s*s+n*n}function qr(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function vr(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Ne(e,t){let s=t[0],n=t[1],r=t[2],i=s*s+n*n+r*r;return i>0&&(i=1/Math.sqrt(i)),e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Nt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function pt(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[0],c=s[1],a=s[2];return e[0]=r*a-i*c,e[1]=i*o-n*a,e[2]=n*c-r*o,e}function br(e,t,s,n){let r=t[0],i=t[1],o=t[2];return e[0]=r+n*(s[0]-r),e[1]=i+n*(s[1]-i),e[2]=o+n*(s[2]-o),e}function zr(e,t,s,n){let r=Math.acos(Math.min(Math.max(Nt(t,s),-1),1)),i=Math.sin(r),o=Math.sin((1-n)*r)/i,c=Math.sin(n*r)/i;return e[0]=o*t[0]+c*s[0],e[1]=o*t[1]+c*s[1],e[2]=o*t[2]+c*s[2],e}function Vr(e,t,s,n,r,i){let o=i*i,c=o*(2*i-3)+1,a=o*(i-2)+i,h=o*(i-1),l=o*(3-2*i);return e[0]=t[0]*c+s[0]*a+n[0]*h+r[0]*l,e[1]=t[1]*c+s[1]*a+n[1]*h+r[1]*l,e[2]=t[2]*c+s[2]*a+n[2]*h+r[2]*l,e}function Dr(e,t,s,n,r,i){let o=1-i,c=o*o,a=i*i,h=c*o,l=3*i*c,f=3*a*o,m=a*i;return e[0]=t[0]*h+s[0]*l+n[0]*f+r[0]*m,e[1]=t[1]*h+s[1]*l+n[1]*f+r[1]*m,e[2]=t[2]*h+s[2]*l+n[2]*f+r[2]*m,e}function Ur(e,t){t=t===void 0?1:t;let s=Pt()*2*Math.PI,n=Pt()*2-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(s)*r,e[1]=Math.sin(s)*r,e[2]=n*t,e}function dt(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[3]*n+s[7]*r+s[11]*i+s[15];return o=o||1,e[0]=(s[0]*n+s[4]*r+s[8]*i+s[12])/o,e[1]=(s[1]*n+s[5]*r+s[9]*i+s[13])/o,e[2]=(s[2]*n+s[6]*r+s[10]*i+s[14])/o,e}function Lt(e,t,s){let n=t[0],r=t[1],i=t[2];return e[0]=n*s[0]+r*s[3]+i*s[6],e[1]=n*s[1]+r*s[4]+i*s[7],e[2]=n*s[2]+r*s[5]+i*s[8],e}function It(e,t,s){let n=s[0],r=s[1],i=s[2],o=s[3],c=t[0],a=t[1],h=t[2],l=r*h-i*a,f=i*c-n*h,m=n*a-r*c,p=r*m-i*f,x=i*l-n*m,g=n*f-r*l,u=o*2;return l*=u,f*=u,m*=u,p*=2,x*=2,g*=2,e[0]=c+l+p,e[1]=a+f+x,e[2]=h+m+g,e}function Le(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[0],i[1]=r[1]*Math.cos(n)-r[2]*Math.sin(n),i[2]=r[1]*Math.sin(n)+r[2]*Math.cos(n),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function Ie(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[2]*Math.sin(n)+r[0]*Math.cos(n),i[1]=r[1],i[2]=r[2]*Math.cos(n)-r[0]*Math.sin(n),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function qe(e,t,s,n){let r=[],i=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],i[0]=r[0]*Math.cos(n)-r[1]*Math.sin(n),i[1]=r[0]*Math.sin(n)+r[1]*Math.cos(n),i[2]=r[2],e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function ve(e,t){let s=e[0],n=e[1],r=e[2],i=t[0],o=t[1],c=t[2],a=Math.sqrt((s*s+n*n+r*r)*(i*i+o*o+c*c)),h=a&&Nt(e,t)/a;return Math.acos(Math.min(Math.max(h,-1),1))}function kr(e){return e[0]=0,e[1]=0,e[2]=0,e}function Fr(e){return`vec3(${e[0]}, ${e[1]}, ${e[2]})`}function Wr(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Br(e,t){let s=e[0],n=e[1],r=e[2],i=t[0],o=t[1],c=t[2];return Math.abs(s-i)<=1e-6*Math.max(1,Math.abs(s),Math.abs(i))&&Math.abs(n-o)<=1e-6*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-c)<=1e-6*Math.max(1,Math.abs(r),Math.abs(c))}var Yr=Ps,Gr=Ns,Zr=Ls,$r=Is,jr=qs,be=Cs,Xr=vs,Qr=function(){let e=Xt();return function(t,s,n,r,i,o){let c,a;for(s||(s=3),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],i(e,e,o),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2];return t}}();var ze=[0,0,0],Kt,d=class extends Mt{static get ZERO(){return Kt||(Kt=new d(0,0,0),Object.freeze(Kt)),Kt}constructor(t=0,s=0,n=0){super(-0,-0,-0),arguments.length===1&&tt(t)?this.copy(t):(z.debug&&(L(t),L(s),L(n)),this[0]=t,this[1]=s,this[2]=n)}set(t,s,n){return this[0]=t,this[1]=s,this[2]=n,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return z.debug&&(L(t.x),L(t.y),L(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=L(t)}angle(t){return ve(this,t)}cross(t){return pt(this,this,t),this.check()}rotateX({radians:t,origin:s=ze}){return Le(this,this,s,t),this.check()}rotateY({radians:t,origin:s=ze}){return Ie(this,this,s,t),this.check()}rotateZ({radians:t,origin:s=ze}){return qe(this,this,s,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return dt(this,this,t),this.check()}transformAsVector(t){return $t(this,this,t),this.check()}transformByMatrix3(t){return Lt(this,this,t),this.check()}transformByMatrix2(t){return Os(this,this,t),this.check()}transformByQuaternion(t){return It(this,this,t),this.check()}};var Ht,_t=class extends Mt{static get ZERO(){return Ht||(Ht=new _t(0,0,0,0),Object.freeze(Ht)),Ht}constructor(t=0,s=0,n=0,r=0){super(-0,-0,-0,-0),tt(t)&&arguments.length===1?this.copy(t):(z.debug&&(L(t),L(s),L(n),L(r)),this[0]=t,this[1]=s,this[2]=n,this[3]=r)}set(t,s,n,r){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(t){return z.debug&&(L(t.x),L(t.y),L(t.z),L(t.w)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(t){this[2]=L(t)}get w(){return this[3]}set w(t){this[3]=L(t)}transform(t){return dt(this,this,t),this.check()}transformByMatrix3(t){return jt(this,this,t),this.check()}transformByMatrix2(t){return As(this,this,t),this.check()}transformByQuaternion(t){return It(this,this,t),this.check()}applyMatrix4(t){return t.transform(this,this),this}};var St=class extends ot{toString(){let t="[";if(z.printRowMajor){t+="row-major:";for(let s=0;s<this.RANK;++s)for(let n=0;n<this.RANK;++n)t+=` ${this[n*this.RANK+s]}`}else{t+="column-major:";for(let s=0;s<this.ELEMENTS;++s)t+=` ${this[s]}`}return t+="]",t}getElementIndex(t,s){return s*this.RANK+t}getElement(t,s){return this[s*this.RANK+t]}setElement(t,s,n){return this[s*this.RANK+t]=L(n),this}getColumn(t,s=new Array(this.RANK).fill(-0)){let n=t*this.RANK;for(let r=0;r<this.RANK;++r)s[r]=this[n+r];return s}setColumn(t,s){let n=t*this.RANK;for(let r=0;r<this.RANK;++r)this[n+r]=s[r];return this}};function bs(){let e=new V(9);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function zs(e,t){if(e===t){let s=t[1],n=t[2],r=t[5];e[1]=t[3],e[2]=t[6],e[3]=s,e[5]=t[7],e[6]=n,e[7]=r}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function Vs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=l*o-c*h,m=-l*i+c*a,p=h*i-o*a,x=s*f+n*m+r*p;return x?(x=1/x,e[0]=f*x,e[1]=(-l*n+r*h)*x,e[2]=(c*n-r*o)*x,e[3]=m*x,e[4]=(l*s-r*a)*x,e[5]=(-c*s+r*i)*x,e[6]=p*x,e[7]=(-h*s+n*a)*x,e[8]=(o*s-n*i)*x,e):null}function Ds(e){let t=e[0],s=e[1],n=e[2],r=e[3],i=e[4],o=e[5],c=e[6],a=e[7],h=e[8];return t*(h*i-o*a)+s*(-h*r+o*c)+n*(a*r-i*c)}function Ve(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=s[0],p=s[1],x=s[2],g=s[3],u=s[4],M=s[5],E=s[6],y=s[7],T=s[8];return e[0]=m*n+p*o+x*h,e[1]=m*r+p*c+x*l,e[2]=m*i+p*a+x*f,e[3]=g*n+u*o+M*h,e[4]=g*r+u*c+M*l,e[5]=g*i+u*a+M*f,e[6]=E*n+y*o+T*h,e[7]=E*r+y*c+T*l,e[8]=E*i+y*a+T*f,e}function Us(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=s[0],p=s[1];return e[0]=n,e[1]=r,e[2]=i,e[3]=o,e[4]=c,e[5]=a,e[6]=m*n+p*o+h,e[7]=m*r+p*c+l,e[8]=m*i+p*a+f,e}function ks(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=Math.sin(s),p=Math.cos(s);return e[0]=p*n+m*o,e[1]=p*r+m*c,e[2]=p*i+m*a,e[3]=p*o-m*n,e[4]=p*c-m*r,e[5]=p*a-m*i,e[6]=h,e[7]=l,e[8]=f,e}function De(e,t,s){let n=s[0],r=s[1];return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=r*t[3],e[4]=r*t[4],e[5]=r*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function Fs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s+s,c=n+n,a=r+r,h=s*o,l=n*o,f=n*c,m=r*o,p=r*c,x=r*a,g=i*o,u=i*c,M=i*a;return e[0]=1-f-x,e[3]=l-M,e[6]=m+u,e[1]=l+M,e[4]=1-h-x,e[7]=p-g,e[2]=m-u,e[5]=p+g,e[8]=1-h-f,e}var Ue;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL1ROW0=3]="COL1ROW0",e[e.COL1ROW1=4]="COL1ROW1",e[e.COL1ROW2=5]="COL1ROW2",e[e.COL2ROW0=6]="COL2ROW0",e[e.COL2ROW1=7]="COL2ROW1",e[e.COL2ROW2=8]="COL2ROW2"})(Ue||(Ue={}));var Hr=Object.freeze([1,0,0,0,1,0,0,0,1]),D=class extends St{static get IDENTITY(){return ti()}static get ZERO(){return Jr()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Ue}constructor(t,...s){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):s.length>0?this.copy([t,...s]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(Hr)}fromObject(t){return this.check()}fromQuaternion(t){return Fs(this,t),this.check()}set(t,s,n,r,i,o,c,a,h){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this[4]=i,this[5]=o,this[6]=c,this[7]=a,this[8]=h,this.check()}setRowMajor(t,s,n,r,i,o,c,a,h){return this[0]=t,this[1]=r,this[2]=c,this[3]=s,this[4]=i,this[5]=a,this[6]=n,this[7]=o,this[8]=h,this.check()}determinant(){return Ds(this)}transpose(){return zs(this,this),this.check()}invert(){return Vs(this,this),this.check()}multiplyLeft(t){return Ve(this,t,this),this.check()}multiplyRight(t){return Ve(this,this,t),this.check()}rotate(t){return ks(this,this,t),this.check()}scale(t){return Array.isArray(t)?De(this,this,t):De(this,this,[t,t]),this.check()}translate(t){return Us(this,this,t),this.check()}transform(t,s){let n;switch(t.length){case 2:n=Es(s||[-0,-0],t,this);break;case 3:n=Lt(s||[-0,-0,-0],t,this);break;case 4:n=jt(s||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(n,t.length),n}transformVector(t,s){return this.transform(t,s)}transformVector2(t,s){return this.transform(t,s)}transformVector3(t,s){return this.transform(t,s)}},Jt,te=null;function Jr(){return Jt||(Jt=new D([0,0,0,0,0,0,0,0,0]),Object.freeze(Jt)),Jt}function ti(){return te||(te=new D,Object.freeze(te)),te}var vt={};Ct(vt,{add:()=>Ri,adjoint:()=>oi,clone:()=>si,copy:()=>ni,create:()=>ei,decompose:()=>xi,determinant:()=>We,equals:()=>Pi,exactEquals:()=>Ci,frob:()=>wi,fromQuat:()=>Xe,fromQuat2:()=>pi,fromRotation:()=>hi,fromRotationTranslation:()=>Bs,fromRotationTranslationScale:()=>gi,fromRotationTranslationScaleOrigin:()=>Mi,fromScaling:()=>ai,fromTranslation:()=>ci,fromValues:()=>ri,fromXRotation:()=>li,fromYRotation:()=>fi,fromZRotation:()=>mi,frustum:()=>Qe,getRotation:()=>ui,getScaling:()=>Ys,getTranslation:()=>di,identity:()=>Ws,invert:()=>Fe,lookAt:()=>Je,mul:()=>Ni,multiply:()=>qt,multiplyScalar:()=>Oi,multiplyScalarAndAdd:()=>Ai,ortho:()=>He,orthoNO:()=>Zs,orthoZO:()=>_i,perspective:()=>Ke,perspectiveFromFieldOfView:()=>yi,perspectiveNO:()=>Gs,perspectiveZO:()=>Ti,rotate:()=>Ge,rotateX:()=>Ze,rotateY:()=>$e,rotateZ:()=>je,scale:()=>Ye,set:()=>ii,str:()=>Ei,sub:()=>Li,subtract:()=>$s,targetTo:()=>Si,translate:()=>Be,transpose:()=>ke});function ei(){let e=new V(16);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function si(e){let t=new V(16);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}function ni(e,t){return 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],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ri(e,t,s,n,r,i,o,c,a,h,l,f,m,p,x,g){let u=new V(16);return u[0]=e,u[1]=t,u[2]=s,u[3]=n,u[4]=r,u[5]=i,u[6]=o,u[7]=c,u[8]=a,u[9]=h,u[10]=l,u[11]=f,u[12]=m,u[13]=p,u[14]=x,u[15]=g,u}function ii(e,t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return e[0]=t,e[1]=s,e[2]=n,e[3]=r,e[4]=i,e[5]=o,e[6]=c,e[7]=a,e[8]=h,e[9]=l,e[10]=f,e[11]=m,e[12]=p,e[13]=x,e[14]=g,e[15]=u,e}function Ws(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ke(e,t){if(e===t){let s=t[1],n=t[2],r=t[3],i=t[6],o=t[7],c=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=s,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=i,e[11]=t[14],e[12]=r,e[13]=o,e[14]=c}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Fe(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=t[9],m=t[10],p=t[11],x=t[12],g=t[13],u=t[14],M=t[15],E=s*c-n*o,y=s*a-r*o,T=s*h-i*o,S=n*a-r*c,_=n*h-i*c,P=r*h-i*a,R=l*g-f*x,O=l*u-m*x,w=l*M-p*x,q=f*u-m*g,v=f*M-p*g,b=m*M-p*u,A=E*b-y*v+T*q+S*w-_*O+P*R;return A?(A=1/A,e[0]=(c*b-a*v+h*q)*A,e[1]=(r*v-n*b-i*q)*A,e[2]=(g*P-u*_+M*S)*A,e[3]=(m*_-f*P-p*S)*A,e[4]=(a*w-o*b-h*O)*A,e[5]=(s*b-r*w+i*O)*A,e[6]=(u*T-x*P-M*y)*A,e[7]=(l*P-m*T+p*y)*A,e[8]=(o*v-c*w+h*R)*A,e[9]=(n*w-s*v-i*R)*A,e[10]=(x*_-g*T+M*E)*A,e[11]=(f*T-l*_-p*E)*A,e[12]=(c*O-o*q-a*R)*A,e[13]=(s*q-n*O+r*R)*A,e[14]=(g*y-x*S-u*E)*A,e[15]=(l*S-f*y+m*E)*A,e):null}function oi(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=t[4],c=t[5],a=t[6],h=t[7],l=t[8],f=t[9],m=t[10],p=t[11],x=t[12],g=t[13],u=t[14],M=t[15],E=s*c-n*o,y=s*a-r*o,T=s*h-i*o,S=n*a-r*c,_=n*h-i*c,P=r*h-i*a,R=l*g-f*x,O=l*u-m*x,w=l*M-p*x,q=f*u-m*g,v=f*M-p*g,b=m*M-p*u;return e[0]=c*b-a*v+h*q,e[1]=r*v-n*b-i*q,e[2]=g*P-u*_+M*S,e[3]=m*_-f*P-p*S,e[4]=a*w-o*b-h*O,e[5]=s*b-r*w+i*O,e[6]=u*T-x*P-M*y,e[7]=l*P-m*T+p*y,e[8]=o*v-c*w+h*R,e[9]=n*w-s*v-i*R,e[10]=x*_-g*T+M*E,e[11]=f*T-l*_-p*E,e[12]=c*O-o*q-a*R,e[13]=s*q-n*O+r*R,e[14]=g*y-x*S-u*E,e[15]=l*S-f*y+m*E,e}function We(e){let t=e[0],s=e[1],n=e[2],r=e[3],i=e[4],o=e[5],c=e[6],a=e[7],h=e[8],l=e[9],f=e[10],m=e[11],p=e[12],x=e[13],g=e[14],u=e[15],M=t*o-s*i,E=t*c-n*i,y=s*c-n*o,T=h*x-l*p,S=h*g-f*p,_=l*g-f*x,P=t*_-s*S+n*T,R=i*_-o*S+c*T,O=h*y-l*E+f*M,w=p*y-x*E+g*M;return a*P-r*R+u*O-m*w}function qt(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=t[8],m=t[9],p=t[10],x=t[11],g=t[12],u=t[13],M=t[14],E=t[15],y=s[0],T=s[1],S=s[2],_=s[3];return e[0]=y*n+T*c+S*f+_*g,e[1]=y*r+T*a+S*m+_*u,e[2]=y*i+T*h+S*p+_*M,e[3]=y*o+T*l+S*x+_*E,y=s[4],T=s[5],S=s[6],_=s[7],e[4]=y*n+T*c+S*f+_*g,e[5]=y*r+T*a+S*m+_*u,e[6]=y*i+T*h+S*p+_*M,e[7]=y*o+T*l+S*x+_*E,y=s[8],T=s[9],S=s[10],_=s[11],e[8]=y*n+T*c+S*f+_*g,e[9]=y*r+T*a+S*m+_*u,e[10]=y*i+T*h+S*p+_*M,e[11]=y*o+T*l+S*x+_*E,y=s[12],T=s[13],S=s[14],_=s[15],e[12]=y*n+T*c+S*f+_*g,e[13]=y*r+T*a+S*m+_*u,e[14]=y*i+T*h+S*p+_*M,e[15]=y*o+T*l+S*x+_*E,e}function Be(e,t,s){let n=s[0],r=s[1],i=s[2],o,c,a,h,l,f,m,p,x,g,u,M;return t===e?(e[12]=t[0]*n+t[4]*r+t[8]*i+t[12],e[13]=t[1]*n+t[5]*r+t[9]*i+t[13],e[14]=t[2]*n+t[6]*r+t[10]*i+t[14],e[15]=t[3]*n+t[7]*r+t[11]*i+t[15]):(o=t[0],c=t[1],a=t[2],h=t[3],l=t[4],f=t[5],m=t[6],p=t[7],x=t[8],g=t[9],u=t[10],M=t[11],e[0]=o,e[1]=c,e[2]=a,e[3]=h,e[4]=l,e[5]=f,e[6]=m,e[7]=p,e[8]=x,e[9]=g,e[10]=u,e[11]=M,e[12]=o*n+l*r+x*i+t[12],e[13]=c*n+f*r+g*i+t[13],e[14]=a*n+m*r+u*i+t[14],e[15]=h*n+p*r+M*i+t[15]),e}function Ye(e,t,s){let n=s[0],r=s[1],i=s[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ge(e,t,s,n){let r=n[0],i=n[1],o=n[2],c=Math.sqrt(r*r+i*i+o*o),a,h,l,f,m,p,x,g,u,M,E,y,T,S,_,P,R,O,w,q,v,b,A,$;return c<1e-6?null:(c=1/c,r*=c,i*=c,o*=c,h=Math.sin(s),a=Math.cos(s),l=1-a,f=t[0],m=t[1],p=t[2],x=t[3],g=t[4],u=t[5],M=t[6],E=t[7],y=t[8],T=t[9],S=t[10],_=t[11],P=r*r*l+a,R=i*r*l+o*h,O=o*r*l-i*h,w=r*i*l-o*h,q=i*i*l+a,v=o*i*l+r*h,b=r*o*l+i*h,A=i*o*l-r*h,$=o*o*l+a,e[0]=f*P+g*R+y*O,e[1]=m*P+u*R+T*O,e[2]=p*P+M*R+S*O,e[3]=x*P+E*R+_*O,e[4]=f*w+g*q+y*v,e[5]=m*w+u*q+T*v,e[6]=p*w+M*q+S*v,e[7]=x*w+E*q+_*v,e[8]=f*b+g*A+y*$,e[9]=m*b+u*A+T*$,e[10]=p*b+M*A+S*$,e[11]=x*b+E*A+_*$,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Ze(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[4],o=t[5],c=t[6],a=t[7],h=t[8],l=t[9],f=t[10],m=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=i*r+h*n,e[5]=o*r+l*n,e[6]=c*r+f*n,e[7]=a*r+m*n,e[8]=h*r-i*n,e[9]=l*r-o*n,e[10]=f*r-c*n,e[11]=m*r-a*n,e}function $e(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[0],o=t[1],c=t[2],a=t[3],h=t[8],l=t[9],f=t[10],m=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*r-h*n,e[1]=o*r-l*n,e[2]=c*r-f*n,e[3]=a*r-m*n,e[8]=i*n+h*r,e[9]=o*n+l*r,e[10]=c*n+f*r,e[11]=a*n+m*r,e}function je(e,t,s){let n=Math.sin(s),r=Math.cos(s),i=t[0],o=t[1],c=t[2],a=t[3],h=t[4],l=t[5],f=t[6],m=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*r+h*n,e[1]=o*r+l*n,e[2]=c*r+f*n,e[3]=a*r+m*n,e[4]=h*r-i*n,e[5]=l*r-o*n,e[6]=f*r-c*n,e[7]=m*r-a*n,e}function ci(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function ai(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function hi(e,t,s){let n=s[0],r=s[1],i=s[2],o=Math.sqrt(n*n+r*r+i*i),c,a,h;return o<1e-6?null:(o=1/o,n*=o,r*=o,i*=o,a=Math.sin(t),c=Math.cos(t),h=1-c,e[0]=n*n*h+c,e[1]=r*n*h+i*a,e[2]=i*n*h-r*a,e[3]=0,e[4]=n*r*h-i*a,e[5]=r*r*h+c,e[6]=i*r*h+n*a,e[7]=0,e[8]=n*i*h+r*a,e[9]=r*i*h-n*a,e[10]=i*i*h+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function li(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=s,e[7]=0,e[8]=0,e[9]=-s,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function fi(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-s,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=s,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function mi(e,t){let s=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=s,e[2]=0,e[3]=0,e[4]=-s,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Bs(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=n+n,a=r+r,h=i+i,l=n*c,f=n*a,m=n*h,p=r*a,x=r*h,g=i*h,u=o*c,M=o*a,E=o*h;return e[0]=1-(p+g),e[1]=f+E,e[2]=m-M,e[3]=0,e[4]=f-E,e[5]=1-(l+g),e[6]=x+u,e[7]=0,e[8]=m+M,e[9]=x-u,e[10]=1-(l+p),e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function pi(e,t){let s=new V(3),n=-t[0],r=-t[1],i=-t[2],o=t[3],c=t[4],a=t[5],h=t[6],l=t[7],f=n*n+r*r+i*i+o*o;return f>0?(s[0]=(c*o+l*n+a*i-h*r)*2/f,s[1]=(a*o+l*r+h*n-c*i)*2/f,s[2]=(h*o+l*i+c*r-a*n)*2/f):(s[0]=(c*o+l*n+a*i-h*r)*2,s[1]=(a*o+l*r+h*n-c*i)*2,s[2]=(h*o+l*i+c*r-a*n)*2),Bs(e,t,s),e}function di(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Ys(e,t){let s=t[0],n=t[1],r=t[2],i=t[4],o=t[5],c=t[6],a=t[8],h=t[9],l=t[10];return e[0]=Math.sqrt(s*s+n*n+r*r),e[1]=Math.sqrt(i*i+o*o+c*c),e[2]=Math.sqrt(a*a+h*h+l*l),e}function ui(e,t){let s=new V(3);Ys(s,t);let n=1/s[0],r=1/s[1],i=1/s[2],o=t[0]*n,c=t[1]*r,a=t[2]*i,h=t[4]*n,l=t[5]*r,f=t[6]*i,m=t[8]*n,p=t[9]*r,x=t[10]*i,g=o+l+x,u=0;return g>0?(u=Math.sqrt(g+1)*2,e[3]=.25*u,e[0]=(f-p)/u,e[1]=(m-a)/u,e[2]=(c-h)/u):o>l&&o>x?(u=Math.sqrt(1+o-l-x)*2,e[3]=(f-p)/u,e[0]=.25*u,e[1]=(c+h)/u,e[2]=(m+a)/u):l>x?(u=Math.sqrt(1+l-o-x)*2,e[3]=(m-a)/u,e[0]=(c+h)/u,e[1]=.25*u,e[2]=(f+p)/u):(u=Math.sqrt(1+x-o-l)*2,e[3]=(c-h)/u,e[0]=(m+a)/u,e[1]=(f+p)/u,e[2]=.25*u),e}function xi(e,t,s,n){t[0]=n[12],t[1]=n[13],t[2]=n[14];let r=n[0],i=n[1],o=n[2],c=n[4],a=n[5],h=n[6],l=n[8],f=n[9],m=n[10];s[0]=Math.sqrt(r*r+i*i+o*o),s[1]=Math.sqrt(c*c+a*a+h*h),s[2]=Math.sqrt(l*l+f*f+m*m);let p=1/s[0],x=1/s[1],g=1/s[2],u=r*p,M=i*x,E=o*g,y=c*p,T=a*x,S=h*g,_=l*p,P=f*x,R=m*g,O=u+T+R,w=0;return O>0?(w=Math.sqrt(O+1)*2,e[3]=.25*w,e[0]=(S-P)/w,e[1]=(_-E)/w,e[2]=(M-y)/w):u>T&&u>R?(w=Math.sqrt(1+u-T-R)*2,e[3]=(S-P)/w,e[0]=.25*w,e[1]=(M+y)/w,e[2]=(_+E)/w):T>R?(w=Math.sqrt(1+T-u-R)*2,e[3]=(_-E)/w,e[0]=(M+y)/w,e[1]=.25*w,e[2]=(S+P)/w):(w=Math.sqrt(1+R-u-T)*2,e[3]=(M-y)/w,e[0]=(_+E)/w,e[1]=(S+P)/w,e[2]=.25*w),e}function gi(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3],a=r+r,h=i+i,l=o+o,f=r*a,m=r*h,p=r*l,x=i*h,g=i*l,u=o*l,M=c*a,E=c*h,y=c*l,T=n[0],S=n[1],_=n[2];return e[0]=(1-(x+u))*T,e[1]=(m+y)*T,e[2]=(p-E)*T,e[3]=0,e[4]=(m-y)*S,e[5]=(1-(f+u))*S,e[6]=(g+M)*S,e[7]=0,e[8]=(p+E)*_,e[9]=(g-M)*_,e[10]=(1-(f+x))*_,e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function Mi(e,t,s,n,r){let i=t[0],o=t[1],c=t[2],a=t[3],h=i+i,l=o+o,f=c+c,m=i*h,p=i*l,x=i*f,g=o*l,u=o*f,M=c*f,E=a*h,y=a*l,T=a*f,S=n[0],_=n[1],P=n[2],R=r[0],O=r[1],w=r[2],q=(1-(g+M))*S,v=(p+T)*S,b=(x-y)*S,A=(p-T)*_,$=(1-(m+M))*_,ft=(u+E)*_,mt=(x+y)*P,Re=(u-E)*P,Wt=(1-(m+g))*P;return e[0]=q,e[1]=v,e[2]=b,e[3]=0,e[4]=A,e[5]=$,e[6]=ft,e[7]=0,e[8]=mt,e[9]=Re,e[10]=Wt,e[11]=0,e[12]=s[0]+R-(q*R+A*O+mt*w),e[13]=s[1]+O-(v*R+$*O+Re*w),e[14]=s[2]+w-(b*R+ft*O+Wt*w),e[15]=1,e}function Xe(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s+s,c=n+n,a=r+r,h=s*o,l=n*o,f=n*c,m=r*o,p=r*c,x=r*a,g=i*o,u=i*c,M=i*a;return e[0]=1-f-x,e[1]=l+M,e[2]=m-u,e[3]=0,e[4]=l-M,e[5]=1-h-x,e[6]=p+g,e[7]=0,e[8]=m+u,e[9]=p-g,e[10]=1-h-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qe(e,t,s,n,r,i,o){let c=1/(s-t),a=1/(r-n),h=1/(i-o);return e[0]=i*2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i*2*a,e[6]=0,e[7]=0,e[8]=(s+t)*c,e[9]=(r+n)*a,e[10]=(o+i)*h,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*i*2*h,e[15]=0,e}function Gs(e,t,s,n,r){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){let o=1/(n-r);e[10]=(r+n)*o,e[14]=2*r*n*o}else e[10]=-1,e[14]=-2*n;return e}var Ke=Gs;function Ti(e,t,s,n,r){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){let o=1/(n-r);e[10]=r*o,e[14]=r*n*o}else e[10]=-1,e[14]=-n;return e}function yi(e,t,s,n){let r=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),c=Math.tan(t.rightDegrees*Math.PI/180),a=2/(o+c),h=2/(r+i);return e[0]=a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=h,e[6]=0,e[7]=0,e[8]=-((o-c)*a*.5),e[9]=(r-i)*h*.5,e[10]=n/(s-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*s/(s-n),e[15]=0,e}function Zs(e,t,s,n,r,i,o){let c=1/(t-s),a=1/(n-r),h=1/(i-o);return e[0]=-2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+s)*c,e[13]=(r+n)*a,e[14]=(o+i)*h,e[15]=1,e}var He=Zs;function _i(e,t,s,n,r,i,o){let c=1/(t-s),a=1/(n-r),h=1/(i-o);return e[0]=-2*c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=h,e[11]=0,e[12]=(t+s)*c,e[13]=(r+n)*a,e[14]=i*h,e[15]=1,e}function Je(e,t,s,n){let r,i,o,c,a,h,l,f,m,p,x=t[0],g=t[1],u=t[2],M=n[0],E=n[1],y=n[2],T=s[0],S=s[1],_=s[2];return Math.abs(x-T)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(u-_)<1e-6?Ws(e):(f=x-T,m=g-S,p=u-_,r=1/Math.sqrt(f*f+m*m+p*p),f*=r,m*=r,p*=r,i=E*p-y*m,o=y*f-M*p,c=M*m-E*f,r=Math.sqrt(i*i+o*o+c*c),r?(r=1/r,i*=r,o*=r,c*=r):(i=0,o=0,c=0),a=m*c-p*o,h=p*i-f*c,l=f*o-m*i,r=Math.sqrt(a*a+h*h+l*l),r?(r=1/r,a*=r,h*=r,l*=r):(a=0,h=0,l=0),e[0]=i,e[1]=a,e[2]=f,e[3]=0,e[4]=o,e[5]=h,e[6]=m,e[7]=0,e[8]=c,e[9]=l,e[10]=p,e[11]=0,e[12]=-(i*x+o*g+c*u),e[13]=-(a*x+h*g+l*u),e[14]=-(f*x+m*g+p*u),e[15]=1,e)}function Si(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=n[0],a=n[1],h=n[2],l=r-s[0],f=i-s[1],m=o-s[2],p=l*l+f*f+m*m;p>0&&(p=1/Math.sqrt(p),l*=p,f*=p,m*=p);let x=a*m-h*f,g=h*l-c*m,u=c*f-a*l;return p=x*x+g*g+u*u,p>0&&(p=1/Math.sqrt(p),x*=p,g*=p,u*=p),e[0]=x,e[1]=g,e[2]=u,e[3]=0,e[4]=f*u-m*g,e[5]=m*x-l*u,e[6]=l*g-f*x,e[7]=0,e[8]=l,e[9]=f,e[10]=m,e[11]=0,e[12]=r,e[13]=i,e[14]=o,e[15]=1,e}function Ei(e){return`mat4(${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]})`}function wi(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Ri(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e[4]=t[4]+s[4],e[5]=t[5]+s[5],e[6]=t[6]+s[6],e[7]=t[7]+s[7],e[8]=t[8]+s[8],e[9]=t[9]+s[9],e[10]=t[10]+s[10],e[11]=t[11]+s[11],e[12]=t[12]+s[12],e[13]=t[13]+s[13],e[14]=t[14]+s[14],e[15]=t[15]+s[15],e}function $s(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e[3]=t[3]-s[3],e[4]=t[4]-s[4],e[5]=t[5]-s[5],e[6]=t[6]-s[6],e[7]=t[7]-s[7],e[8]=t[8]-s[8],e[9]=t[9]-s[9],e[10]=t[10]-s[10],e[11]=t[11]-s[11],e[12]=t[12]-s[12],e[13]=t[13]-s[13],e[14]=t[14]-s[14],e[15]=t[15]-s[15],e}function Oi(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12]*s,e[13]=t[13]*s,e[14]=t[14]*s,e[15]=t[15]*s,e}function Ai(e,t,s,n){return e[0]=t[0]+s[0]*n,e[1]=t[1]+s[1]*n,e[2]=t[2]+s[2]*n,e[3]=t[3]+s[3]*n,e[4]=t[4]+s[4]*n,e[5]=t[5]+s[5]*n,e[6]=t[6]+s[6]*n,e[7]=t[7]+s[7]*n,e[8]=t[8]+s[8]*n,e[9]=t[9]+s[9]*n,e[10]=t[10]+s[10]*n,e[11]=t[11]+s[11]*n,e[12]=t[12]+s[12]*n,e[13]=t[13]+s[13]*n,e[14]=t[14]+s[14]*n,e[15]=t[15]+s[15]*n,e}function Ci(e,t){return 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]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Pi(e,t){let s=e[0],n=e[1],r=e[2],i=e[3],o=e[4],c=e[5],a=e[6],h=e[7],l=e[8],f=e[9],m=e[10],p=e[11],x=e[12],g=e[13],u=e[14],M=e[15],E=t[0],y=t[1],T=t[2],S=t[3],_=t[4],P=t[5],R=t[6],O=t[7],w=t[8],q=t[9],v=t[10],b=t[11],A=t[12],$=t[13],ft=t[14],mt=t[15];return Math.abs(s-E)<=1e-6*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(n-y)<=1e-6*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(r-T)<=1e-6*Math.max(1,Math.abs(r),Math.abs(T))&&Math.abs(i-S)<=1e-6*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(o-_)<=1e-6*Math.max(1,Math.abs(o),Math.abs(_))&&Math.abs(c-P)<=1e-6*Math.max(1,Math.abs(c),Math.abs(P))&&Math.abs(a-R)<=1e-6*Math.max(1,Math.abs(a),Math.abs(R))&&Math.abs(h-O)<=1e-6*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(l-w)<=1e-6*Math.max(1,Math.abs(l),Math.abs(w))&&Math.abs(f-q)<=1e-6*Math.max(1,Math.abs(f),Math.abs(q))&&Math.abs(m-v)<=1e-6*Math.max(1,Math.abs(m),Math.abs(v))&&Math.abs(p-b)<=1e-6*Math.max(1,Math.abs(p),Math.abs(b))&&Math.abs(x-A)<=1e-6*Math.max(1,Math.abs(x),Math.abs(A))&&Math.abs(g-$)<=1e-6*Math.max(1,Math.abs(g),Math.abs($))&&Math.abs(u-ft)<=1e-6*Math.max(1,Math.abs(u),Math.abs(ft))&&Math.abs(M-mt)<=1e-6*Math.max(1,Math.abs(M),Math.abs(mt))}var Ni=qt,Li=$s;function Ii(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function js(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e}function Xs(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e}function Qs(e){let t=e[0],s=e[1],n=e[2],r=e[3];return Math.sqrt(t*t+s*s+n*n+r*r)}function Ks(e){let t=e[0],s=e[1],n=e[2],r=e[3];return t*t+s*s+n*n+r*r}function Hs(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s*s+n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),e[0]=s*o,e[1]=n*o,e[2]=r*o,e[3]=i*o,e}function Js(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function tn(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3];return e[0]=r+n*(s[0]-r),e[1]=i+n*(s[1]-i),e[2]=o+n*(s[2]-o),e[3]=c+n*(s[3]-c),e}function en(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3];return e[0]=s[0]*n+s[4]*r+s[8]*i+s[12]*o,e[1]=s[1]*n+s[5]*r+s[9]*i+s[13]*o,e[2]=s[2]*n+s[6]*r+s[10]*i+s[14]*o,e[3]=s[3]*n+s[7]*r+s[11]*i+s[15]*o,e}function sn(e,t,s){let n=t[0],r=t[1],i=t[2],o=s[0],c=s[1],a=s[2],h=s[3],l=h*n+c*i-a*r,f=h*r+a*n-o*i,m=h*i+o*r-c*n,p=-o*n-c*r-a*i;return e[0]=l*h+p*-o+f*-a-m*-c,e[1]=f*h+p*-c+m*-o-l*-a,e[2]=m*h+p*-a+l*-c-f*-o,e[3]=t[3],e}var jc=function(){let e=Ii();return function(t,s,n,r,i,o){let c,a;for(s||(s=4),n||(n=0),r?a=Math.min(r*s+n,t.length):a=t.length,c=n;c<a;c+=s)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],e[3]=t[c+3],i(e,e,o),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2],t[c+3]=e[3];return t}}();var ss;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(ss||(ss={}));var vi=45*Math.PI/180,bi=1,ts=.1,es=500,zi=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),N=class extends St{static get IDENTITY(){return Di()}static get ZERO(){return Vi()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return ss}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this[4]=i,this[5]=o,this[6]=c,this[7]=a,this[8]=h,this[9]=l,this[10]=f,this[11]=m,this[12]=p,this[13]=x,this[14]=g,this[15]=u,this.check()}setRowMajor(t,s,n,r,i,o,c,a,h,l,f,m,p,x,g,u){return this[0]=t,this[1]=i,this[2]=h,this[3]=p,this[4]=s,this[5]=o,this[6]=l,this[7]=x,this[8]=n,this[9]=c,this[10]=f,this[11]=g,this[12]=r,this[13]=a,this[14]=m,this[15]=u,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(zi)}fromObject(t){return this.check()}fromQuaternion(t){return Xe(this,t),this.check()}frustum(t){let{left:s,right:n,bottom:r,top:i,near:o=ts,far:c=es}=t;return c===1/0?Ui(this,s,n,r,i,o):Qe(this,s,n,r,i,o,c),this.check()}lookAt(t){let{eye:s,center:n=[0,0,0],up:r=[0,1,0]}=t;return Je(this,s,n,r),this.check()}ortho(t){let{left:s,right:n,bottom:r,top:i,near:o=ts,far:c=es}=t;return He(this,s,n,r,i,o,c),this.check()}orthographic(t){let{fovy:s=vi,aspect:n=bi,focalDistance:r=1,near:i=ts,far:o=es}=t;nn(s);let c=s/2,a=r*Math.tan(c),h=a*n;return this.ortho({left:-h,right:h,bottom:-a,top:a,near:i,far:o})}perspective(t){let{fovy:s=45*Math.PI/180,aspect:n=1,near:r=.1,far:i=500}=t;return nn(s),Ke(this,s,n,r,i),this.check()}determinant(){return We(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let n=this.getScale(s),r=1/n[0],i=1/n[1],o=1/n[2];return t[0]=this[0]*r,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*r,t[5]=this[5]*i,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*r,t[9]=this[9]*i,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let n=this.getScale(s),r=1/n[0],i=1/n[1],o=1/n[2];return t[0]=this[0]*r,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=this[4]*r,t[4]=this[5]*i,t[5]=this[6]*o,t[6]=this[8]*r,t[7]=this[9]*i,t[8]=this[10]*o,t}transpose(){return ke(this,this),this.check()}invert(){return Fe(this,this),this.check()}multiplyLeft(t){return qt(this,t,this),this.check()}multiplyRight(t){return qt(this,this,t),this.check()}rotateX(t){return Ze(this,this,t),this.check()}rotateY(t){return $e(this,this,t),this.check()}rotateZ(t){return je(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,s){return Ge(this,this,t,s),this.check()}scale(t){return Ye(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return Be(this,this,t),this.check()}transform(t,s){return t.length===4?(s=en(s||[-0,-0,-0,-0],t,this),ct(s,4),s):this.transformAsPoint(t,s)}transformAsPoint(t,s){let{length:n}=t,r;switch(n){case 2:r=ws(s||[-0,-0],t,this);break;case 3:r=dt(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(r,t.length),r}transformAsVector(t,s){let n;switch(t.length){case 2:n=Rs(s||[-0,-0],t,this);break;case 3:n=$t(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return ct(n,t.length),n}transformPoint(t,s){return this.transformAsPoint(t,s)}transformVector(t,s){return this.transformAsPoint(t,s)}transformDirection(t,s){return this.transformAsVector(t,s)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,s,n){return this.identity().translate([t,s,n])}},ee,se;function Vi(){return ee||(ee=new N([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(ee)),ee}function Di(){return se||(se=new N,Object.freeze(se)),se}function nn(e){if(e>Math.PI*2)throw Error("expected radians")}function Ui(e,t,s,n,r,i){let o=2*i/(s-t),c=2*i/(r-n),a=(s+t)/(s-t),h=(r+n)/(r-n),l=-1,f=-1,m=-2*i;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=a,e[9]=h,e[10]=l,e[11]=f,e[12]=0,e[13]=0,e[14]=m,e[15]=0,e}function rn(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function on(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function ns(e,t,s){s=s*.5;let n=Math.sin(s);return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=Math.cos(s),e}function rs(e,t,s){let n=t[0],r=t[1],i=t[2],o=t[3],c=s[0],a=s[1],h=s[2],l=s[3];return e[0]=n*l+o*c+r*h-i*a,e[1]=r*l+o*a+i*c-n*h,e[2]=i*l+o*h+n*a-r*c,e[3]=o*l-n*c-r*a-i*h,e}function cn(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a+o*c,e[1]=r*a+i*c,e[2]=i*a-r*c,e[3]=o*a-n*c,e}function an(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a-i*c,e[1]=r*a+o*c,e[2]=i*a+n*c,e[3]=o*a-r*c,e}function hn(e,t,s){s*=.5;let n=t[0],r=t[1],i=t[2],o=t[3],c=Math.sin(s),a=Math.cos(s);return e[0]=n*a+r*c,e[1]=r*a-n*c,e[2]=i*a+o*c,e[3]=o*a-i*c,e}function ln(e,t){let s=t[0],n=t[1],r=t[2];return e[0]=s,e[1]=n,e[2]=r,e[3]=Math.sqrt(Math.abs(1-s*s-n*n-r*r)),e}function bt(e,t,s,n){let r=t[0],i=t[1],o=t[2],c=t[3],a=s[0],h=s[1],l=s[2],f=s[3],m,p,x,g,u;return m=r*a+i*h+o*l+c*f,m<0&&(m=-m,a=-a,h=-h,l=-l,f=-f),1-m>1e-6?(p=Math.acos(m),u=Math.sin(p),x=Math.sin((1-n)*p)/u,g=Math.sin(n*p)/u):(x=1-n,g=n),e[0]=x*r+g*a,e[1]=x*i+g*h,e[2]=x*o+g*l,e[3]=x*c+g*f,e}function fn(e,t){let s=t[0],n=t[1],r=t[2],i=t[3],o=s*s+n*n+r*r+i*i,c=o?1/o:0;return e[0]=-s*c,e[1]=-n*c,e[2]=-r*c,e[3]=i*c,e}function mn(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function is(e,t){let s=t[0]+t[4]+t[8],n;if(s>0)n=Math.sqrt(s+1),e[3]=.5*n,n=.5/n,e[0]=(t[5]-t[7])*n,e[1]=(t[6]-t[2])*n,e[2]=(t[1]-t[3])*n;else{let r=0;t[4]>t[0]&&(r=1),t[8]>t[r*3+r]&&(r=2);let i=(r+1)%3,o=(r+2)%3;n=Math.sqrt(t[r*3+r]-t[i*3+i]-t[o*3+o]+1),e[r]=.5*n,n=.5/n,e[3]=(t[i*3+o]-t[o*3+i])*n,e[i]=(t[i*3+r]+t[r*3+i])*n,e[o]=(t[o*3+r]+t[r*3+o])*n}return e}var pn=js;var dn=Xs,un=Js,xn=tn,gn=Qs;var Mn=Ks;var Tn=Hs;var yn=function(){let e=Xt(),t=Qt(1,0,0),s=Qt(0,1,0);return function(n,r,i){let o=Nt(r,i);return o<-.999999?(pt(e,t,r),be(e)<1e-6&&pt(e,s,r),Ne(e,e),ns(n,e,Math.PI),n):o>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(pt(e,r,i),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=1+o,Tn(n,n))}}(),aa=function(){let e=rn(),t=rn();return function(s,n,r,i,o,c){return bt(e,n,o,c),bt(t,r,i,c),bt(s,e,t,2*c*(1-c)),s}}(),ha=function(){let e=bs();return function(t,s,n,r){return e[0]=n[0],e[3]=n[1],e[6]=n[2],e[1]=r[0],e[4]=r[1],e[7]=r[2],e[2]=-s[0],e[5]=-s[1],e[8]=-s[2],Tn(t,is(t,e))}}();var ki=[0,0,0,1],at=class extends ot{constructor(t=0,s=0,n=0,r=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,s,n,r)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,s,n,r){return this[0]=t,this[1]=s,this[2]=n,this[3]=r,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return is(this,t),this.check()}fromAxisRotation(t,s){return ns(this,t,s),this.check()}identity(){return on(this),this.check()}setAxisAngle(t,s){return this.fromAxisRotation(t,s)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=L(t)}get y(){return this[1]}set y(t){this[1]=L(t)}get z(){return this[2]}set z(t){this[2]=L(t)}get w(){return this[3]}set w(t){this[3]=L(t)}len(){return gn(this)}lengthSquared(){return Mn(this)}dot(t){return un(this,t)}rotationTo(t,s){return yn(this,t,s),this.check()}add(t){return pn(this,this,t),this.check()}calculateW(){return ln(this,this),this.check()}conjugate(){return mn(this,this),this.check()}invert(){return fn(this,this),this.check()}lerp(t,s,n){return n===void 0?this.lerp(this,t,s):(xn(this,t,s,n),this.check())}multiplyRight(t){return rs(this,this,t),this.check()}multiplyLeft(t){return rs(this,t,this),this.check()}normalize(){let t=this.len(),s=t>0?1/t:0;return this[0]=this[0]*s,this[1]=this[1]*s,this[2]=this[2]*s,this[3]=this[3]*s,t===0&&(this[3]=1),this.check()}rotateX(t){return cn(this,this,t),this.check()}rotateY(t){return an(this,this,t),this.check()}rotateZ(t){return hn(this,this,t),this.check()}scale(t){return dn(this,this,t),this.check()}slerp(t,s,n){let r,i,o;switch(arguments.length){case 1:({start:r=ki,target:i,ratio:o}=t);break;case 2:r=this,i=t,o=s;break;default:r=t,i=s,o=n}return bt(this,r,i,o),this.check()}transformVector4(t,s=new _t){return sn(s,t,this),ct(s,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,s){return this.setAxisAngle(t,s)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var st={};Ct(st,{EPSILON1:()=>Fi,EPSILON10:()=>Qi,EPSILON11:()=>Ki,EPSILON12:()=>Hi,EPSILON13:()=>Ji,EPSILON14:()=>to,EPSILON15:()=>eo,EPSILON16:()=>so,EPSILON17:()=>no,EPSILON18:()=>ro,EPSILON19:()=>io,EPSILON2:()=>Wi,EPSILON20:()=>oo,EPSILON3:()=>Bi,EPSILON4:()=>Yi,EPSILON5:()=>Gi,EPSILON6:()=>Zi,EPSILON7:()=>$i,EPSILON8:()=>ji,EPSILON9:()=>Xi,PI_OVER_FOUR:()=>ao,PI_OVER_SIX:()=>ho,PI_OVER_TWO:()=>co,TWO_PI:()=>lo});var Fi=.1,Wi=.01,Bi=.001,Yi=1e-4,Gi=1e-5,Zi=1e-6,$i=1e-7,ji=1e-8,Xi=1e-9,Qi=1e-10,Ki=1e-11,Hi=1e-12,Ji=1e-13,to=1e-14,eo=1e-15,so=1e-16,no=1e-17,ro=1e-18,io=1e-19,oo=1e-20,co=Math.PI/2,ao=Math.PI/4,ho=Math.PI/6,lo=Math.PI*2;var nt=6356752314245179e-9,mo={radii:[6378137,6378137,nt],radiiSquared:[6378137*6378137,6378137*6378137,nt*nt],oneOverRadii:[1/6378137,1/6378137,1/nt],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(nt*nt)],maximumRadius:Math.max(6378137,6378137,nt),centerToleranceSquared:.1};function ne(e){return e}var Da=new d;function po(e,t=[],s=ne){return"longitude"in e?(t[0]=s(e.longitude),t[1]=s(e.latitude),t[2]=e.height):"x"in e?(t[0]=s(e.x),t[1]=s(e.y),t[2]=e.z):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function _n(e,t=[]){return po(e,t,z._cartographicRadians?ne:Ce)}function uo(e,t,s=ne){return"longitude"in t?(t.longitude=s(e[0]),t.latitude=s(e[1]),t.height=e[2]):"x"in t?(t.x=s(e[0]),t.y=s(e[1]),t.z=e[2]):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function Sn(e,t){return uo(e,t,z._cartographicRadians?ne:Pe)}var En=1e-14,xo=new d,wn={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"}},os={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},zt={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},go=new d,Mo=new d,To=new d;function cs(e,t,s,n,r,i){let o=wn[t]&&wn[t][s];U(o&&(!n||n===o));let c,a,h,l=xo.copy(r);if(X(l.x,0,En)&&X(l.y,0,En)){let m=Math.sign(l.z);c=go.fromArray(os[t]),t!=="east"&&t!=="west"&&c.scale(m),a=Mo.fromArray(os[s]),s!=="east"&&s!=="west"&&a.scale(m),h=To.fromArray(os[n]),n!=="east"&&n!=="west"&&h.scale(m)}else{let{up:m,east:p,north:x}=zt;p.set(-l.y,l.x,0).normalize(),e.geodeticSurfaceNormal(l,m),x.copy(m).cross(p);let{down:g,west:u,south:M}=zt;g.copy(m).scale(-1),u.copy(p).scale(-1),M.copy(x).scale(-1),c=zt[t],a=zt[s],h=zt[n]}return i[0]=c.x,i[1]=c.y,i[2]=c.z,i[3]=0,i[4]=a.x,i[5]=a.y,i[6]=a.z,i[7]=0,i[8]=h.x,i[9]=h.y,i[10]=h.z,i[11]=0,i[12]=l.x,i[13]=l.y,i[14]=l.z,i[15]=1,i}var Et=new d,yo=new d,_o=new d;function Rn(e,t,s=[]){let{oneOverRadii:n,oneOverRadiiSquared:r,centerToleranceSquared:i}=t;Et.from(e);let o=Et.x,c=Et.y,a=Et.z,h=n.x,l=n.y,f=n.z,m=o*o*h*h,p=c*c*l*l,x=a*a*f*f,g=m+p+x,u=Math.sqrt(1/g);if(!Number.isFinite(u))return;let M=yo;if(M.copy(e).scale(u),g<i)return M.to(s);let E=r.x,y=r.y,T=r.z,S=_o;S.set(M.x*E*2,M.y*y*2,M.z*T*2);let _=(1-u)*Et.len()/(.5*S.len()),P=0,R,O,w,q;do{_-=P,R=1/(1+_*E),O=1/(1+_*y),w=1/(1+_*T);let v=R*R,b=O*O,A=w*w,$=v*R,ft=b*O,mt=A*w;q=m*v+p*b+x*A-1;let Wt=-2*(m*$*E+p*ft*y+x*mt*T);P=q/Wt}while(Math.abs(q)>st.EPSILON12);return Et.scale([R,O,w]).to(s)}var re=new d,On=new d,wo=new d,H=new d,Ro=new d,ie=new d,C=class{constructor(t=0,s=0,n=0){this.centerToleranceSquared=st.EPSILON1,U(t>=0),U(s>=0),U(n>=0),this.radii=new d(t,s,n),this.radiiSquared=new d(t*t,s*s,n*n),this.radiiToTheFourth=new d(t*t*t*t,s*s*s*s,n*n*n*n),this.oneOverRadii=new d(t===0?0:1/t,s===0?0:1/s,n===0?0:1/n),this.oneOverRadiiSquared=new d(t===0?0:1/(t*t),s===0?0:1/(s*s),n===0?0:1/(n*n)),this.minimumRadius=Math.min(t,s,n),this.maximumRadius=Math.max(t,s,n),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(t){return this===t||Boolean(t&&this.radii.equals(t.radii))}toString(){return this.radii.toString()}cartographicToCartesian(t,s=[0,0,0]){let n=On,r=wo,[,,i]=t;this.geodeticSurfaceNormalCartographic(t,n),r.copy(this.radiiSquared).scale(n);let o=Math.sqrt(n.dot(r));return r.scale(1/o),n.scale(i),r.add(n),r.to(s)}cartesianToCartographic(t,s=[0,0,0]){ie.from(t);let n=this.scaleToGeodeticSurface(ie,H);if(!n)return;let r=this.geodeticSurfaceNormal(n,On),i=Ro;i.copy(ie).subtract(n);let o=Math.atan2(r.y,r.x),c=Math.asin(r.z),a=Math.sign(ut.dot(i,ie))*ut.length(i);return Sn([o,c,a],s)}eastNorthUpToFixedFrame(t,s=new N){return cs(this,"east","north","up",t,s)}localFrameToFixedFrame(t,s,n,r,i=new N){return cs(this,t,s,n,r,i)}geocentricSurfaceNormal(t,s=[0,0,0]){return re.from(t).normalize().to(s)}geodeticSurfaceNormalCartographic(t,s=[0,0,0]){let n=_n(t),r=n[0],i=n[1],o=Math.cos(i);return re.set(o*Math.cos(r),o*Math.sin(r),Math.sin(i)).normalize(),re.to(s)}geodeticSurfaceNormal(t,s=[0,0,0]){return re.from(t).scale(this.oneOverRadiiSquared).normalize().to(s)}scaleToGeodeticSurface(t,s){return Rn(t,this,s)}scaleToGeocentricSurface(t,s=[0,0,0]){H.from(t);let n=H.x,r=H.y,i=H.z,o=this.oneOverRadiiSquared,c=1/Math.sqrt(n*n*o.x+r*r*o.y+i*i*o.z);return H.multiplyScalar(c).to(s)}transformPositionToScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.oneOverRadii).to(s)}transformPositionFromScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.radii).to(s)}getSurfaceNormalIntersectionWithZAxis(t,s=0,n=[0,0,0]){U(X(this.radii.x,this.radii.y,st.EPSILON15)),U(this.radii.z>0),H.from(t);let r=H.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(r)>=this.radii.z-s))return H.set(0,0,r).to(n)}};C.WGS84=new C(6378137,6378137,nt);function Vt(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var xt=class{constructor(t,s){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=s,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Vt(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Vt()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ht=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,s="count"){return this._getOrCreate({name:t,type:s})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let s of Object.values(this.stats))t(s)}getTable(){let t={};return this.forEach(s=>{t[s.name]={time:s.time||0,count:s.count||0,average:s.getAverageTime()||0,hz:s.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(s=>this._getOrCreate(s))}_getOrCreate(t){let{name:s,type:n}=t,r=this.stats[s];return r||(t instanceof xt?r=t:r=new xt(s,n),this.stats[s]=r),r}};function J(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var Oo="Queued Requests",Ao="Active Requests",Co="Cancelled Requests",Po="Queued Requests Ever",No="Active Requests Ever",Lo={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},wt=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...Lo,...t},this.stats=new ht({id:this.props.id}),this.stats.get(Oo),this.stats.get(Ao),this.stats.get(Co),this.stats.get(Po),this.stats.get(No)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,s=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let n={handle:t,priority:0,getPriority:s},r=new Promise(i=>(n.resolve=i,n));return this.requestQueue.push(n),this.requestMap.set(t,r),this._issueNewRequests(),r}_issueRequest(t){let{handle:s,resolve:n}=t,r=!1,i=()=>{r||(r=!0,this.requestMap.delete(s),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,n?n({done:i}):Promise.resolve({done:i})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let s=0;s<t;++s){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let t=this.requestQueue;for(let s=0;s<t.length;++s){let n=t[s];this._updateRequest(n)||(t.splice(s,1),this.requestMap.delete(n.handle),s--)}t.sort((s,n)=>s.priority-n.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var oe={};Ct(oe,{dirname:()=>qo,filename:()=>Io,join:()=>vo,resolve:()=>bo});function An(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Io(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function qo(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function vo(...e){let t="/";return e=e.map((s,n)=>(n&&(s=s.replace(new RegExp(`^${t}`),"")),n!==e.length-1&&(s=s.replace(new RegExp(`${t}$`),"")),s)),e.join(t)}function bo(...e){let t=[];for(let i=0;i<e.length;i++)t[i]=e[i];let s="",n=!1,r;for(let i=t.length-1;i>=-1&&!n;i--){let o;i>=0?o=t[i]:(r===void 0&&(r=An()),o=r),o.length!==0&&(s=`${o}/${s}`,n=o.charCodeAt(0)===Dt)}return s=zo(s,!n),n?`/${s}`:s.length>0?s:"."}var Dt=47,as=46;function zo(e,t){let s="",n=-1,r=0,i,o=!1;for(let c=0;c<=e.length;++c){if(c<e.length)i=e.charCodeAt(c);else{if(i===Dt)break;i=Dt}if(i===Dt){if(!(n===c-1||r===1))if(n!==c-1&&r===2){if(s.length<2||!o||s.charCodeAt(s.length-1)!==as||s.charCodeAt(s.length-2)!==as){if(s.length>2){let a=s.length-1,h=a;for(;h>=0&&s.charCodeAt(h)!==Dt;--h);if(h!==a){s=h===-1?"":s.slice(0,h),n=c,r=0,o=!1;continue}}else if(s.length===2||s.length===1){s="",n=c,r=0,o=!1;continue}}t&&(s.length>0?s+="/..":s="..",o=!0)}else{let a=e.slice(n+1,c);s.length>0?s+=`/${a}`:s=a,o=!1}n=c,r=0}else i===as&&r!==-1?++r:r=-1}return s}var ce=class{item;previous;next;constructor(t,s,n){this.item=t,this.previous=s,this.next=n}};var ae=class{head=null;tail=null;_length=0;get length(){return this._length}add(t){let s=new ce(t,this.tail,null);return this.tail?(this.tail.next=s,this.tail=s):(this.head=s,this.tail=s),++this._length,s}remove(t){t&&(t.previous&&t.next?(t.previous.next=t.next,t.next.previous=t.previous):t.previous?(t.previous.next=null,this.tail=t.previous):t.next?(t.next.previous=null,this.head=t.next):(this.head=null,this.tail=null),t.next=null,t.previous=null,--this._length)}splice(t,s){t!==s&&(this.remove(s),this._insert(t,s))}_insert(t,s){let n=t.next;t.next=s,this.tail===t?this.tail=s:n.previous=s,s.next=n,s.previous=t,++this._length}};var Rt=class{_list;_sentinel;_trimTiles;constructor(){this._list=new ae,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(t){let s=t._cacheNode;s&&this._list.splice(this._sentinel,s)}add(t,s,n){s._cacheNode||(s._cacheNode=this._list.add(s),n&&n(t,s))}unloadTile(t,s,n){let r=s._cacheNode;r&&(this._list.remove(r),s._cacheNode=null,n&&n(t,s))}unloadTiles(t,s){let n=this._trimTiles;this._trimTiles=!1;let r=this._list,i=t.maximumMemoryUsage*1024*1024,o=this._sentinel,c=r.head;for(;c!==o&&(t.gpuMemoryUsageInBytes>i||n);){let a=c.item;c=c.next,this.unloadTile(t,a,s)}}trim(){this._trimTiles=!0}};function he(e,t){J(e),J(t);let{rtcCenter:s,gltfUpAxis:n}=t,{computedTransform:r,boundingVolume:{center:i}}=e,o=new N(r);switch(s&&o.translate(s),n){case"Z":break;case"Y":let m=new N().rotateX(Math.PI/2);o=o.multiplyRight(m);break;case"X":let p=new N().rotateY(-Math.PI/2);o=o.multiplyRight(p);break;default:break}t.isQuantized&&o.translate(t.quantizedVolumeOffset).scale(t.quantizedVolumeScale);let c=new d(i);t.cartesianModelMatrix=o,t.cartesianOrigin=c;let a=C.WGS84.cartesianToCartographic(c,new d),l=C.WGS84.eastNorthUpToFixedFrame(c).invert();t.cartographicModelMatrix=l.multiplyRight(o),t.cartographicOrigin=a;let f=Do(t);f&&(t.cartesianModelMatrix=new N(o).multiplyRight(f.matrix),t.cartographicModelMatrix.multiplyRight(f.matrix),f.matrix=N.IDENTITY),t.coordinateSystem||(t.modelMatrix=t.cartographicModelMatrix)}var Vo=1e6**2;function Do(e){let t=e.gltf;if(!t)return null;let s=typeof t.scene=="number"?t.scene:0,r=t.scenes?.[s]?.nodes?.[0];if(!r?.matrix)return null;let i=r.matrix;return i[12]*i[12]+i[13]*i[13]+i[14]*i[14]<=Vo?null:r}var k={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var Ph=new d,Nh=new d;var Ut=new d,Cn=new d,Q=class{constructor(t=[0,0,0],s=0){this.radius=-0,this.center=new d,this.fromCenterRadius(t,s)}fromCenterRadius(t,s){return this.center.from(t),this.radius=s,this}fromCornerPoints(t,s){return s=Ut.from(s),this.center=new d().from(t).add(s).scale(.5),this.radius=this.center.distance(s),this}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new Q(this.center,this.radius)}union(t){let s=this.center,n=this.radius,r=t.center,i=t.radius,o=Ut.copy(r).subtract(s),c=o.magnitude();if(n>=c+i)return this.clone();if(i>=c+n)return t.clone();let a=(n+c+i)*.5;return Cn.copy(o).scale((-n+a)/c).add(s),this.center.copy(Cn),this.radius=a,this}expand(t){let n=Ut.from(t).subtract(this.center).magnitude();return n>this.radius&&(this.radius=n),this}transform(t){this.center.transform(t);let s=vt.getScaling(Ut,t);return this.radius=Math.max(s[0],Math.max(s[1],s[2]))*this.radius,this}distanceSquaredTo(t){let s=this.distanceTo(t);return s*s}distanceTo(t){let n=Ut.from(t).subtract(this.center);return Math.max(0,n.len()-this.radius)}intersectPlane(t){let s=this.center,n=this.radius,i=t.normal.dot(s)+t.distance;return i<-n?k.OUTSIDE:i<n?k.INTERSECTING:k.INSIDE}};var Uo=new d,ko=new d,le=new d,fe=new d,me=new d,Fo=new d,Wo=new d,rt={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},et=class{constructor(t=[0,0,0],s=[0,0,0,0,0,0,0,0,0]){this.center=new d().from(t),this.halfAxes=new D(s)}get halfSize(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new d(t).len(),new d(s).len(),new d(n).len()]}get quaternion(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),r=new d(t).normalize(),i=new d(s).normalize(),o=new d(n).normalize();return new at().fromMatrix3(new D([...r,...i,...o]))}fromCenterHalfSizeQuaternion(t,s,n){let r=new at(n),i=new D().fromQuaternion(r);return i[0]=i[0]*s[0],i[1]=i[1]*s[0],i[2]=i[2]*s[0],i[3]=i[3]*s[1],i[4]=i[4]*s[1],i[5]=i[5]*s[1],i[6]=i[6]*s[2],i[7]=i[7]*s[2],i[8]=i[8]*s[2],this.center=new d().from(t),this.halfAxes=i,this}clone(){return new et(this.center,this.halfAxes)}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.halfAxes.equals(t.halfAxes)}getBoundingSphere(t=new Q){let s=this.halfAxes,n=s.getColumn(0,le),r=s.getColumn(1,fe),i=s.getColumn(2,me),o=Uo.copy(n).add(r).add(i);return t.center.copy(this.center),t.radius=o.magnitude(),t}intersectPlane(t){let s=this.center,n=t.normal,r=this.halfAxes,i=n.x,o=n.y,c=n.z,a=Math.abs(i*r[rt.COLUMN0ROW0]+o*r[rt.COLUMN0ROW1]+c*r[rt.COLUMN0ROW2])+Math.abs(i*r[rt.COLUMN1ROW0]+o*r[rt.COLUMN1ROW1]+c*r[rt.COLUMN1ROW2])+Math.abs(i*r[rt.COLUMN2ROW0]+o*r[rt.COLUMN2ROW1]+c*r[rt.COLUMN2ROW2]),h=n.dot(s)+t.distance;return h<=-a?k.OUTSIDE:h>=a?k.INSIDE:k.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let s=ko.from(t).subtract(this.center),n=this.halfAxes,r=n.getColumn(0,le),i=n.getColumn(1,fe),o=n.getColumn(2,me),c=r.magnitude(),a=i.magnitude(),h=o.magnitude();r.normalize(),i.normalize(),o.normalize();let l=0,f;return f=Math.abs(s.dot(r))-c,f>0&&(l+=f*f),f=Math.abs(s.dot(i))-a,f>0&&(l+=f*f),f=Math.abs(s.dot(o))-h,f>0&&(l+=f*f),l}computePlaneDistances(t,s,n=[-0,-0]){let r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=this.center,c=this.halfAxes,a=c.getColumn(0,le),h=c.getColumn(1,fe),l=c.getColumn(2,me),f=Fo.copy(a).add(h).add(l).add(o),m=Wo.copy(f).subtract(t),p=s.dot(m);return r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).add(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).subtract(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),f.copy(o).add(a).subtract(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).add(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).add(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).subtract(h).add(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),o.copy(f).subtract(a).subtract(h).subtract(l),m.copy(f).subtract(t),p=s.dot(m),r=Math.min(p,r),i=Math.max(p,i),n[0]=r,n[1]=i,n}transform(t){this.center.transformAsPoint(t);let s=this.halfAxes.getColumn(0,le);s.transformAsPoint(t);let n=this.halfAxes.getColumn(1,fe);n.transformAsPoint(t);let r=this.halfAxes.getColumn(2,me);return r.transformAsPoint(t),this.halfAxes=new D([...s,...n,...r]),this}getTransform(){throw new Error("not implemented")}};var Pn=new d,Nn=new d,B=class{constructor(t=[0,0,1],s=0){this.normal=new d,this.distance=-0,this.fromNormalDistance(t,s)}fromNormalDistance(t,s){return U(Number.isFinite(s)),this.normal.from(t).normalize(),this.distance=s,this}fromPointNormal(t,s){t=Pn.from(t),this.normal.from(s).normalize();let n=-this.normal.dot(t);return this.distance=n,this}fromCoefficients(t,s,n,r){return this.normal.set(t,s,n),U(X(this.normal.len(),1)),this.distance=r,this}clone(){return new B(this.normal,this.distance)}equals(t){return X(this.distance,t.distance)&&X(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let s=Nn.copy(this.normal).transformAsVector(t).normalize(),n=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(n,s)}projectPointOntoPlane(t,s=[0,0,0]){let n=Pn.from(t),r=this.getPointDistance(n),i=Nn.copy(this.normal).scale(r);return n.subtract(i).to(s)}};var Ln=[new d([1,0,0]),new d([0,1,0]),new d([0,0,1])],In=new d,Bo=new d,F=class{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*Ln.length;let s=t.center,n=t.radius,r=0;for(let i of Ln){let o=this.planes[r],c=this.planes[r+1];o||(o=this.planes[r]=new B),c||(c=this.planes[r+1]=new B);let a=In.copy(i).scale(-n).add(s);o.fromPointNormal(a,i);let h=In.copy(i).scale(n).add(s),l=Bo.copy(i).negate();c.fromPointNormal(h,l),r+=2}return this}computeVisibility(t){let s=k.INSIDE;for(let n of this.planes)switch(t.intersectPlane(n)){case k.OUTSIDE:return k.OUTSIDE;case k.INTERSECTING:s=k.INTERSECTING;break;default:}return s}computeVisibilityWithPlaneMask(t,s){if(U(Number.isFinite(s),"parentPlaneMask is required."),s===F.MASK_OUTSIDE||s===F.MASK_INSIDE)return s;let n=F.MASK_INSIDE,r=this.planes;for(let i=0;i<this.planes.length;++i){let o=i<31?1<<i:0;if(i<31&&!(s&o))continue;let c=r[i],a=t.intersectPlane(c);if(a===k.OUTSIDE)return F.MASK_OUTSIDE;a===k.INTERSECTING&&(n|=o)}return n}};F.MASK_OUTSIDE=4294967295;F.MASK_INSIDE=0;F.MASK_INDETERMINATE=2147483647;var jh=new d,Xh=new d,Qh=new d,Kh=new d,Hh=new d;var rl=new d,il=new d,ol=new d,cl=new d,al=new d,hl=new d,ll=new d,fl=new d,ml=new d,pl=new d,dl=new d,ul=new d;var Ml=new D,Tl=new D,yl=new D,_l=new D,Sl=new D;var Cl=new d,Pl=new d,Nl=new d,Ll=new d,Il=new d,ql=new D,vl={diagonal:new D,unitary:new D};var qn=new d,hs=new d,ls=new F([new B,new B,new B,new B,new B,new B]);function de(e,t){let{cameraDirection:s,cameraUp:n,height:r}=e,{metersPerUnit:i}=e.distanceScales,o=pe(e,e.center),c=C.WGS84.eastNorthUpToFixedFrame(o),a=e.unprojectPosition(e.cameraPosition),h=C.WGS84.cartographicToCartesian(a,new d),l=new d(c.transformAsVector(new d(s).scale(i))).normalize(),f=new d(c.transformAsVector(new d(n).scale(i))).normalize();$o(e);let m=e.constructor,{longitude:p,latitude:x,width:g,bearing:u,zoom:M}=e,E=new m({longitude:p,latitude:x,height:r,width:g,bearing:u,zoom:M,pitch:0});return{camera:{position:h,direction:l,up:f},viewport:e,topDownViewport:E,height:r,cullingVolume:ls,frameNumber:t,sseDenominator:1.15}}function bn(e,t,s){if(s===0||e.length<=s)return[e,[]];let n=[],{longitude:r,latitude:i}=t.viewport;for(let[h,l]of e.entries()){let[f,m]=l.header.mbs,p=Math.abs(r-f),x=Math.abs(i-m),g=Math.sqrt(x*x+p*p);n.push([h,g])}let o=n.sort((h,l)=>h[1]-l[1]),c=[];for(let h=0;h<s;h++)c.push(e[o[h][0]]);let a=[];for(let h=s;h<o.length;h++)a.push(e[o[h][0]]);return[c,a]}function $o(e){let t=e.getFrustumPlanes(),s=vn(t.near,e.cameraPosition),n=pe(e,s),r=pe(e,e.cameraPosition,hs),i=0;ls.planes[i++].fromPointNormal(n,qn.copy(n).subtract(r));for(let o in t){if(o==="near")continue;let c=t[o],a=vn(c,s,hs),h=pe(e,a,hs);ls.planes[i++].fromPointNormal(h,qn.copy(n).subtract(h))}}function vn(e,t,s=new d){let n=e.normal.dot(t);return s.copy(e.normal).scale(e.distance-n).add(t),s}function pe(e,t,s=new d){let n=e.unprojectPosition(t);return C.WGS84.cartographicToCartesian(n,s)}var jo=6378137,Xo=6378137,fs=6356752314245179e-9,Ot=new d;function zn(e,t){if(e instanceof et){let{halfAxes:s}=e,n=Qo(s);return Math.log2(fs/(n+t[2]))}else if(e instanceof Q){let{radius:s}=e;return Math.log2(fs/(s+t[2]))}else if(e.width&&e.height){let{width:s,height:n}=e,r=Math.log2(jo/s),i=Math.log2(Xo/n);return(r+i)/2}return 1}function ms(e,t,s){C.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],Ot);let n=Math.sqrt(Math.pow(Ot[0]-s[0],2)+Math.pow(Ot[1]-s[1],2)+Math.pow(Ot[2]-s[2],2));return Math.log2(fs/(n+t[2]))}function Vn(e,t,s){let[n,r,i,o]=e;return ms({xmin:n,xmax:i,ymin:r,ymax:o,zmin:0,zmax:0},t,s)}function Qo(e){e.getColumn(0,Ot);let t=e.getColumn(1),s=e.getColumn(2);return Ot.add(t).add(s).len()}var Jn=Oe(Zt(),1);var Y={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},Z;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(Z||(Z={}));var ue;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(ue||(ue={}));var W;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(W||(W={}));var xe;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(xe||(xe={}));var Dn={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};function Wn(e){return e!=null}var G=new d,ge=new d,Ko=new d,Ho=new d,gt=new d,Un=new d,kn=new d,Fn=new d;function At(e,t,s){if(J(e,"3D Tile: boundingVolume must be defined"),e.box)return Yn(e.box,t,s);if(e.region)return tc(e.region);if(e.sphere)return Jo(e.sphere,t,s);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function Bn(e,t){if(e.box)return ec(t);if(e.region){let[s,n,r,i,o,c]=e.region;return[[j(s),j(n),o],[j(r),j(i),c]]}if(e.sphere)return sc(t);throw new Error("Unkown boundingVolume type")}function Yn(e,t,s){let n=new d(e[0],e[1],e[2]);t.transform(n,n);let r=[];if(e.length===10){let h=e.slice(3,6),l=new at;l.fromArray(e,6);let f=new d([1,0,0]),m=new d([0,1,0]),p=new d([0,0,1]);f.transformByQuaternion(l),f.scale(h[0]),m.transformByQuaternion(l),m.scale(h[1]),p.transformByQuaternion(l),p.scale(h[2]),r=[...f.toArray(),...m.toArray(),...p.toArray()]}else r=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];let i=t.transformAsVector(r.slice(0,3)),o=t.transformAsVector(r.slice(3,6)),c=t.transformAsVector(r.slice(6,9)),a=new D([i[0],i[1],i[2],o[0],o[1],o[2],c[0],c[1],c[2]]);return Wn(s)?(s.center=n,s.halfAxes=a,s):new et(n,a)}function Jo(e,t,s){let n=new d(e[0],e[1],e[2]);t.transform(n,n);let r=t.getScale(ge),i=Math.max(Math.max(r[0],r[1]),r[2]),o=e[3]*i;return Wn(s)?(s.center=n,s.radius=o,s):new Q(n,o)}function tc(e){let[t,s,n,r,i,o]=e,c=C.WGS84.cartographicToCartesian([j(t),j(r),i],Ko),a=C.WGS84.cartographicToCartesian([j(n),j(s),o],Ho),h=new d().addVectors(c,a).multiplyByScalar(.5);return C.WGS84.cartesianToCartographic(h,gt),C.WGS84.cartographicToCartesian([j(n),gt[1],gt[2]],Un),C.WGS84.cartographicToCartesian([gt[0],j(r),gt[2]],kn),C.WGS84.cartographicToCartesian([gt[0],gt[1],o],Fn),Yn([...h,...Un.subtract(h),...kn.subtract(h),...Fn.subtract(h)],new N)}function ec(e){let t=Gn(),{halfAxes:s}=e,n=new d(s.getColumn(0)),r=new d(s.getColumn(1)),i=new d(s.getColumn(2));for(let o=0;o<2;o++){for(let c=0;c<2;c++){for(let a=0;a<2;a++)G.copy(e.center),G.add(n),G.add(r),G.add(i),Zn(t,G),i.negate();r.negate()}n.negate()}return t}function sc(e){let t=Gn(),{center:s,radius:n}=e,r=C.WGS84.scaleToGeodeticSurface(s,G),i;r?i=C.WGS84.geodeticSurfaceNormal(r):i=new d(0,0,1);let o=new d(i[2],-i[1],0);o.len()>0?o.normalize():o=new d(0,1,0);let c=o.clone().cross(i);for(let a of[o,c,i]){ge.copy(a).scale(n);for(let h=0;h<2;h++)G.copy(s),G.add(ge),Zn(t,G),ge.negate()}return t}function Gn(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Zn(e,t){C.WGS84.cartesianToCartographic(t,G),e[0][0]=Math.min(e[0][0],G[0]),e[0][1]=Math.min(e[0][1],G[1]),e[0][2]=Math.min(e[0][2],G[2]),e[1][0]=Math.max(e[1][0],G[0]),e[1][1]=Math.max(e[1][1],G[1]),e[1][2]=Math.max(e[1][2],G[2])}var p0=new d,d0=new d,u0=new N,x0=new d,g0=new d,M0=new d;function nc(e,t){let s=e*t;return 1-Math.exp(-(s*s))}function rc(e,t){if(e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity){let s=e.dynamicScreenSpaceErrorComputedDensity,n=e.dynamicScreenSpaceErrorFactor;return nc(t,s)*n}return 0}function $n(e,t,s){let n=e.tileset,r=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,i=s?r:e.lodMetricValue;if(i===0)return 0;let o=Math.max(e._distanceToCamera,1e-7),{height:c,sseDenominator:a}=t,{viewDistanceScale:h}=n.options,l=i*c*(h||1)/(o*a);return l-=rc(n,o),l}var ps=new d,jn=new d,lt=new d,Xn=new d,ic=new d,ds=new N,Qn=new N;function Me(e,t){if(e.lodMetricValue===0||isNaN(e.lodMetricValue))return"DIG";let s=2*us(e,t);return s<2?"OUT":!e.header.children||s<=e.lodMetricValue?"DRAW":e.header.children?"DIG":"OUT"}function us(e,t){let{topDownViewport:s}=t,n=e.header.mbs[1],r=e.header.mbs[0],i=e.header.mbs[2],o=e.header.mbs[3],c=[...e.boundingVolume.center],a=s.unprojectPosition(s.cameraPosition);C.WGS84.cartographicToCartesian(a,ps),jn.copy(ps).subtract(c).normalize(),C.WGS84.eastNorthUpToFixedFrame(c,ds),Qn.copy(ds).invert(),lt.copy(ps).transform(Qn);let h=Math.sqrt(lt[0]*lt[0]+lt[1]*lt[1]),l=h*h/lt[2];Xn.copy([lt[0],lt[1],l]);let m=Xn.transform(ds).subtract(c).normalize(),x=jn.cross(m).normalize().scale(o).add(c),g=C.WGS84.cartesianToCartographic(x),u=s.project([r,n,i]),M=s.project(g);return ic.copy(u).subtract(M).magnitude()}function Kn(e){return{assetGltfUpAxis:e.asset&&e.asset.gltfUpAxis||"Y"}}var kt=class{_map=new Map;_array;_length;constructor(t=0){this._array=new Array(t),this._length=t}get length(){return this._length}set length(t){this._length=t,t>this._array.length&&(this._array.length=t)}get values(){return this._array}get(t){return J(t<this._array.length),this._array[t]}set(t,s){J(t>=0),t>=this.length&&(this.length=t+1),this._map.has(this._array[t])&&this._map.delete(this._array[t]),this._array[t]=s,this._map.set(s,t)}delete(t){let s=this._map.get(t);s>=0&&(this._array.splice(s,1),this._map.delete(t),this.length--)}peek(){return this._array[this._length-1]}push(t){if(!this._map.has(t)){let s=this.length++;this._array[s]=t,this._map.set(t,s)}}pop(){let t=this._array[--this.length];return this._map.delete(t),t}reserve(t){J(t>=0),t>this._array.length&&(this._array.length=t)}resize(t){J(t>=0),this.length=t}trim(t){t==null&&(t=this.length),this._array.length=t}reset(){this._array=[],this._map=new Map,this._length=0}find(t){return this._map.has(t)}};var oc={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},K=class{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new kt;_emptyTraversalStack=new kt;_frameNumber=null;traversalFinished(t){return!0}constructor(t){this.options={...oc,...t}}traverse(t,s,n){this.root=t,this.options={...this.options,...n},this.reset(),this.updateTile(t,s),this._frameNumber=s.frameNumber,this.executeTraversal(t,s)}reset(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(t,s){let n=this._traversalStack;for(t._selectionDepth=1,n.push(t);n.length>0;){let i=n.pop(),o=!1;this.canTraverse(i,s)&&(this.updateChildTiles(i,s),o=this.updateAndPushChildren(i,s,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let c=i.parent,a=Boolean(!c||c._shouldRefine),h=!o;i.hasRenderContent?i.refine===Z.ADD?(this.loadTile(i,s),this.selectTile(i,s)):i.refine===Z.REPLACE&&(this.loadTile(i,s),h&&this.selectTile(i,s)):(this.emptyTiles[i.id]=i,this.loadTile(i,s),h&&this.selectTile(i,s)),this.touchTile(i,s),i._shouldRefine=o&&a}let r=new Date().getTime();(this.traversalFinished(s)||r-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=r,this.options.onTraversalEnd(s))}updateChildTiles(t,s){let n=t.children;for(let r of n)this.updateTile(r,s)}updateAndPushChildren(t,s,n,r){let{loadSiblings:i,skipLevelOfDetail:o}=this.options,c=t.children;c.sort(this.compareDistanceToCamera.bind(this));let a=t.refine===Z.REPLACE&&t.hasRenderContent&&!o,h=!1,l=!0;for(let f of c)if(f._selectionDepth=r,f.isVisibleAndInRequestVolume?(n.find(f)&&n.delete(f),n.push(f),h=!0):(a||i)&&(this.loadTile(f,s),this.touchTile(f,s)),a){let m;if(f._inRequestVolume?f.hasRenderContent?m=f.contentAvailable:m=this.executeEmptyTraversal(f,s):m=!1,l=l&&m,!l)return!1}return h||(l=!1),l}updateTile(t,s){this.updateTileVisibility(t,s)}selectTile(t,s){this.shouldSelectTile(t)&&(t._selectedFrame=s.frameNumber,this.selectedTiles[t.id]=t)}loadTile(t,s){this.shouldLoadTile(t)&&(t._requestedFrame=s.frameNumber,t._priority=t._getPriority(),this.requestedTiles[t.id]=t)}touchTile(t,s){t.tileset._cache.touch(t),t._touchedFrame=s.frameNumber}canTraverse(t,s){return t.hasChildren?t.hasTilesetContent?!t.contentExpired:this.shouldRefine(t,s):!1}shouldLoadTile(t){return t.hasUnloadedContent||t.contentExpired}shouldSelectTile(t){return t.contentAvailable&&!this.options.skipLevelOfDetail}shouldRefine(t,s,n=!1){let r=t._screenSpaceError;return n&&(r=t.getScreenSpaceError(s,!0)),r>t.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(t,s){let n=[];if(this.options.viewportTraversersMap)for(let r in this.options.viewportTraversersMap)this.options.viewportTraversersMap[r]===s.viewport.id&&n.push(r);else n.push(s.viewport.id);t.updateVisibility(s,n)}compareDistanceToCamera(t,s){return t._distanceToCamera-s._distanceToCamera}anyChildrenVisible(t,s){let n=!1;for(let r of t.children)r.updateVisibility(s),n=n||r.isVisibleAndInRequestVolume;return n}executeEmptyTraversal(t,s){let n=!0,r=this._emptyTraversalStack;for(r.push(t);r.length>0;){let i=r.pop(),o=!i.hasRenderContent&&this.canTraverse(i,s),c=!i.hasRenderContent&&i.children.length===0;if(!o&&!i.contentAvailable&&!c&&(n=!1),this.updateTile(i,s),i.isVisibleAndInRequestVolume||(this.loadTile(i,s),this.touchTile(i,s)),o){let a=i.children;for(let h of a)r.push(h)}}return t.hasEmptyContent||n}};var Hn=new d;function cc(e){return e!=null}var it=class{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType="geometricError";lodMetricValue=0;boundingVolume=null;content=null;contentState=Y.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new N;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new K({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_viewerRequestVolume;_initialTransform=new N;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(t,s,n,r=""){this.header=s,this.tileset=t,this.id=r||s.id,this.url=s.url,this.parent=n,this.refine=this._getRefine(s.refine),this.type=s.type,this.contentUrl=s.contentUrl,this._initializeLodMetric(s),this._initializeTransforms(s),this._initializeBoundingVolumes(s),this._initializeContent(s),this._initializeRenderingState(s),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0}get contentReady(){return this.contentState===Y.READY||this.hasEmptyContent}get contentAvailable(){return Boolean(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===Y.UNLOADED}get contentExpired(){return this.contentState===Y.EXPIRED}get contentFailed(){return this.contentState===Y.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=Bn(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(t,s){switch(this.tileset.type){case W.I3S:return us(this,t);case W.TILES3D:return $n(this,t,s);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return this.content.gpuMemoryUsageInBytes||this.content.byteLength||0}_getPriority(){let t=this.tileset._traverser,{skipLevelOfDetail:s}=t.options,n=this.refine===Z.ADD||s;if(n&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===Y.UNLOADED)return-1;let r=this.parent,o=r&&(!n||this._screenSpaceError===0||r.hasTilesetContent)?r._screenSpaceError:this._screenSpaceError,c=t.root?t.root._screenSpaceError:0;return Math.max(c-o,0)}async loadContent(){if(this.hasEmptyContent)return!1;if(this.content)return!0;this.contentExpired&&(this._expireDate=null),this.contentState=Y.LOADING;let s=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!s)return this.contentState=Y.UNLOADED,!1;try{let n=this.tileset.getTileUrl(this.contentUrl),r=this.tileset.loader,i=this.tileset.loadOptions[r.id]||{},o={...this.tileset.loadOptions,[r.id]:{...i,isTileset:this.type==="json",...this._getLoaderSpecificOptions(r.id)}};return this.content=await(0,Jn.load)(n,r,o),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=Y.READY,this._onContentLoaded(),!0}catch(n){throw this.contentState=Y.FAILED,n}finally{s.done()}}unloadContent(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=Y.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(t,s){if(this._frameNumber===t.frameNumber)return;let n=this.parent,r=n?n._visibilityPlaneMask:F.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let i=n?n.computedTransform:this.tileset.modelMatrix;this._updateTransform(i)}this._distanceToCamera=this.distanceToTile(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._visibilityPlaneMask=this.visibility(t,r),this._visible=this._visibilityPlaneMask!==F.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._frameNumber=t.frameNumber,this.viewportIds=s}visibility(t,s){let{cullingVolume:n}=t,{boundingVolume:r}=this;return n.computeVisibilityWithPlaneMask(r,s)}contentVisibility(){return!0}distanceToTile(t){let s=this.boundingVolume;return Math.sqrt(Math.max(s.distanceSquaredTo(t.camera.position),0))}cameraSpaceZDepth({camera:t}){let s=this.boundingVolume;return Hn.subVectors(s.center,t.position),t.direction.dot(Hn)}insideViewerRequestVolume(t){let s=this._viewerRequestVolume;return!s||s.distanceSquaredTo(t.camera.position)<=0}updateExpiration(){if(cc(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let t=Date.now();Date.lessThan(this._expireDate,t)&&(this.contentState=Y.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(t){"lodMetricType"in t?this.lodMetricType=t.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in t?this.lodMetricValue=t.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue"))}_initializeTransforms(t){this.transform=t.transform?new N(t.transform):new N;let s=this.parent,n=this.tileset,r=s&&s.computedTransform?s.computedTransform.clone():n.modelMatrix.clone();this.computedTransform=new N(r).multiplyRight(this.transform);let i=s&&s._initialTransform?s._initialTransform.clone():new N;this._initialTransform=new N(i).multiplyRight(this.transform)}_initializeBoundingVolumes(t){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(t)}_initializeContent(t){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=Y.UNLOADED,this.hasTilesetContent=!1,t.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(t){this.depth=t.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=F.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(t){return t||this.parent&&this.parent.refine||Z.REPLACE}_isTileset(){return this.contentUrl.indexOf(".json")!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(t){this.boundingVolume=At(t.boundingVolume,this.computedTransform,this.boundingVolume);let s=t.content;s&&(s.boundingVolume&&(this._contentBoundingVolume=At(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),t.viewerRequestVolume&&(this._viewerRequestVolume=At(t.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)))}_updateTransform(t=new N){let s=t.clone().multiplyRight(this.transform);s.equals(this.computedTransform)||(this.computedTransform=s,this._updateBoundingVolume(this.header))}_getLoaderSpecificOptions(t){switch(t){case"i3s":return{...this.tileset.options.i3s,_tileOptions:{attributeUrls:this.header.attributeUrls,textureUrl:this.header.textureUrl,textureFormat:this.header.textureFormat,textureLoaderOptions:this.header.textureLoaderOptions,materialDefinition:this.header.materialDefinition,isDracoGeometry:this.header.isDracoGeometry,mbs:this.header.mbs},_tilesetOptions:{store:this.tileset.tileset.store,attributeStorageInfo:this.tileset.tileset.attributeStorageInfo,fields:this.tileset.tileset.fields},isTileHeader:!1};case"3d-tiles":case"cesium-ion":default:return Kn(this.tileset.tileset)}}};var Te=class extends K{compareDistanceToCamera(t,s){return s._distanceToCamera===0&&t._distanceToCamera===0?s._centerZDepth-t._centerZDepth:s._distanceToCamera-t._distanceToCamera}updateTileVisibility(t,s){if(super.updateTileVisibility(t,s),!t.isVisibleAndInRequestVolume)return;let n=t.children.length>0;if(t.hasTilesetContent&&n){let o=t.children[0];this.updateTileVisibility(o,s),t._visible=o._visible;return}if(this.meetsScreenSpaceErrorEarly(t,s)){t._visible=!1;return}let r=t.refine===Z.REPLACE,i=t._optimChildrenWithinParent===Dn.USE_OPTIMIZATION;if(r&&i&&n&&!this.anyChildrenVisible(t,s)){t._visible=!1;return}}meetsScreenSpaceErrorEarly(t,s){let{parent:n}=t;return!n||n.hasTilesetContent||n.refine!==Z.ADD?!1:!this.shouldRefine(t,s,!0)}};var tr=Oe(Zt(),1);var ye=class{frameNumberMap=new Map;register(t,s){let n=this.frameNumberMap.get(t)||new Map,r=n.get(s)||0;n.set(s,r+1),this.frameNumberMap.set(t,n)}deregister(t,s){let n=this.frameNumberMap.get(t);if(!n)return;let r=n.get(s)||1;n.set(s,r-1)}isZero(t,s){return(this.frameNumberMap.get(t)?.get(s)||0)===0}};var xs={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},_e=class{_statusMap;pendingTilesRegister=new ye;constructor(){this._statusMap={}}add(t,s,n,r){if(!this._statusMap[s]){let{frameNumber:i,viewport:{id:o}}=r;this._statusMap[s]={request:t,callback:n,key:s,frameState:r,status:xs.REQUESTED},this.pendingTilesRegister.register(o,i),t().then(c=>{this._statusMap[s].status=xs.COMPLETED;let{frameNumber:a,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,a),this._statusMap[s].callback(c,r)}).catch(c=>{this._statusMap[s].status=xs.ERROR;let{frameNumber:a,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,a),n(c)})}}update(t,s){if(this._statusMap[t]){let{frameNumber:n,viewport:{id:r}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(r,n);let{frameNumber:i,viewport:{id:o}}=s;this.pendingTilesRegister.register(o,i),this._statusMap[t].frameState=s}}find(t){return this._statusMap[t]}hasPendingTiles(t,s){return!this.pendingTilesRegister.isZero(t,s)}};var Se=class extends K{_tileManager;constructor(t){super(t),this._tileManager=new _e}traversalFinished(t){return!this._tileManager.hasPendingTiles(t.viewport.id,this._frameNumber||0)}shouldRefine(t,s){return t._lodJudge=Me(t,s),t._lodJudge==="DIG"}updateChildTiles(t,s){let n=t.header.children||[],r=t.children,i=t.tileset;for(let o of n){let c=`${o.id}-${s.viewport.id}`,a=r&&r.find(h=>h.id===c);if(a)a&&this.updateTile(a,s);else{let h=()=>this._loadTile(o.id,i);this._tileManager.find(c)?this._tileManager.update(c,s):(i.tileset.nodePages&&(h=()=>i.tileset.nodePagesTile.formTileFromNodePages(o.id)),this._tileManager.add(h,c,f=>this._onTileLoad(f,t,c),s))}}return!1}async _loadTile(t,s){let{loader:n}=s,r=s.getTileUrl(`${s.url}/nodes/${t}`),i={...s.loadOptions,i3s:{...s.loadOptions.i3s,isTileHeader:!0}};return await(0,tr.load)(r,n,i)}_onTileLoad(t,s,n){let r=new it(s.tileset,t,s,n);s.children.push(r);let i=this._tileManager.find(r.id).frameState;this.updateTile(r,i),this._frameNumber===i.frameNumber&&(this.traversalFinished(i)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(r,i)}};var ac={description:"",ellipsoid:C.WGS84,modelMatrix:new N,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,memoryCacheOverflow:1,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,memoryAdjustedScreenSpaceError:!1,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},Ee="Tiles In Tileset(s)",gs="Tiles In Memory",er="Tiles In View",sr="Tiles To Render",nr="Tiles Loaded",Ms="Tiles Loading",rr="Tiles Unloaded",ir="Failed Tile Loads",or="Points/Vertices",Ts="Tile Memory Use",cr="Maximum Screen Space Error",we=class{options;loadOptions;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};description="";properties;extras=null;attributions={};credits={};stats;contentFormats={draco:!1,meshopt:!1,dds:!1,ktx2:!1};cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;maximumMemoryUsage=32;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=0;_cacheOverflowBytes=0;_frameNumber=0;_queryParams={};_extensionsUsed=[];_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_traverser;_cache=new Rt;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(t,s){this.options={...ac,...s},this.tileset=t,this.loader=t.loader,this.type=t.type,this.url=t.url,this.basePath=t.basePath||oe.dirname(this.url),this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType=t.lodMetricType,this.lodMetricValue=t.lodMetricValue,this.refine=t.root.refine,this.loadOptions=this.options.loadOptions||{},this._traverser=this._initializeTraverser(),this._requestScheduler=new wt({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=this.options.maximumMemoryUsage*1024*1024,this._cacheOverflowBytes=this.options.memoryCacheOverflow*1024*1024,this.stats=new ht({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet(t)}destroy(){this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get queryParams(){return new URLSearchParams(this._queryParams).toString()}setProps(t){this.options={...this.options,...t}}getTileUrl(t){if(t.startsWith("data:"))return t;let n=t;return this.queryParams.length&&(n=`${t}${t.includes("?")?"&":"?"}${this.queryParams}`),n}hasExtension(t){return Boolean(this._extensionsUsed.indexOf(t)>-1)}update(t=null){this.tilesetInitializationPromise.then(()=>{!t&&this.lastUpdatedVieports?t=this.lastUpdatedVieports:this.lastUpdatedVieports=t,t&&this.doUpdate(t)})}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedVieports=t),this.updatePromise||(this.updatePromise=new Promise(s=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),s(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this._cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this._cacheBytes+this._cacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(t){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let s=t instanceof Array?t:[t];this._cache.reset(),this._frameNumber++,this.traverseCounter=s.length;let n=[];for(let r of s){let i=r.id;this._needTraverse(i)?n.push(i):this.traverseCounter--}for(let r of s){let i=r.id;if(this.roots[i]||(this.roots[i]=this._initializeTileHeaders(this.tileset,null)),!n.includes(i))continue;let o=de(r,this._frameNumber);this._traverser.traverse(this.roots[i],o,this.options)}}_needTraverse(t){let s=t;return this.options.viewportTraversersMap&&(s=this.options.viewportTraversersMap[t]),s===t}_onTraversalEnd(t){let s=t.viewport.id;this.frameStateData[s]||(this.frameStateData[s]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let n=this.frameStateData[s],r=Object.values(this._traverser.selectedTiles),[i,o]=bn(r,t,this.options.maximumTilesSelected);n.selectedTiles=i;for(let c of o)c.unselect();n._requestedTiles=Object.values(this._traverser.requestedTiles),n._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let t=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let i in this.frameStateData){let o=this.frameStateData[i];this.selectedTiles=this.selectedTiles.concat(o.selectedTiles),this._requestedTiles=this._requestedTiles.concat(o._requestedTiles),this._emptyTiles=this._emptyTiles.concat(o._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let s=new Set(this.selectedTiles.map(i=>i.id)),n=this.selectedTiles.some(i=>!i.tileDrawn),r=0;if(n){for(let i of s)this._heldTiles.add(i);for(let i of this._heldTiles){if(s.has(i))continue;let o=this._tiles[i];o&&o.contentAvailable?(o._selectedFrame=this._frameNumber,this.selectedTiles.push(o),r++):this._heldTiles.delete(i)}}else this._heldTiles=s;r>0&&setTimeout(()=>{this.selectTiles()},0);for(let i of this.selectedTiles)this._tiles[i.id]=i;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(t,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(t,s){if(t.length!==s.length)return!0;let n=new Set(t.map(o=>o.id)),r=new Set(s.map(o=>o.id)),i=t.filter(o=>!r.has(o.id)).length>0;return i=i||s.filter(o=>!n.has(o.id)).length>0,i}_loadTiles(){this._requestedTiles.sort((t,s)=>t._priority-s._priority);for(let t of this._requestedTiles)t.contentUnloaded&&this._loadTile(t)}_unloadTiles(){this._cache.unloadTiles(this,(t,s)=>t._unloadTile(s))}_updateStats(){let t=0,s=0;for(let n of this.selectedTiles)n.contentAvailable&&n.content&&(t++,n.content.pointCount?s+=n.content.pointCount:s+=n.content.vertexCount);this.stats.get(er).count=this.selectedTiles.length,this.stats.get(sr).count=t,this.stats.get(or).count=s,this.stats.get(cr).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(t){this.type===W.I3S&&(this.calculateViewPropsI3S(),t.root=await t.root),this.root=this._initializeTileHeaders(t,null),this.type===W.TILES3D&&(this._initializeTiles3DTileset(t),this.calculateViewPropsTiles3D()),this.type===W.I3S&&this._initializeI3STileset()}calculateViewPropsI3S(){let t=this.tileset.fullExtent;if(t){let{xmin:n,xmax:r,ymin:i,ymax:o,zmin:c,zmax:a}=t;this.cartographicCenter=new d(n+(r-n)/2,i+(o-i)/2,c+(a-c)/2),this.cartesianCenter=new d,C.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=ms(t,this.cartographicCenter,this.cartesianCenter);return}let s=this.tileset.store?.extent;if(s){let[n,r,i,o]=s;this.cartographicCenter=new d(n+(i-n)/2,r+(o-r)/2,0),this.cartesianCenter=new d,C.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=Vn(s,this.cartographicCenter,this.cartesianCenter);return}console.warn("Extent is not defined in the tileset header"),this.cartographicCenter=new d,this.zoom=1}calculateViewPropsTiles3D(){let t=this.root,{center:s}=t.boundingVolume;if(!s){console.warn("center was not pre-calculated for the root tile"),this.cartographicCenter=new d,this.zoom=1;return}s[0]!==0||s[1]!==0||s[2]!==0?(this.cartographicCenter=new d,C.WGS84.cartesianToCartographic(s,this.cartographicCenter)):this.cartographicCenter=new d(0,0,-C.WGS84.radii[0]),this.cartesianCenter=s,this.zoom=zn(t.boundingVolume,this.cartographicCenter)}_initializeStats(){this.stats.get(Ee),this.stats.get(Ms),this.stats.get(gs),this.stats.get(er),this.stats.get(sr),this.stats.get(nr),this.stats.get(rr),this.stats.get(ir),this.stats.get(or),this.stats.get(Ts,"memory"),this.stats.get(cr)}_initializeTileHeaders(t,s){let n=new it(this,t.root,s);if(s&&(s.children.push(n),n.depth=s.depth+1),this.type===W.TILES3D){let r=[];for(r.push(n);r.length>0;){let i=r.pop();this.stats.get(Ee).incrementCount();let o=i.header.children||[];for(let c of o){let a=new it(this,c,i);if(a.contentUrl?.includes("?session=")){let l=new URL(a.contentUrl).searchParams.get("session");l&&(this._queryParams.session=l)}i.children.push(a),a.depth=i.depth+1,r.push(a)}}}return n}_initializeTraverser(){let t;switch(this.type){case W.TILES3D:t=Te;break;case W.I3S:t=Se;break;default:t=K}return new t({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(t){this._destroySubtree(t)}async _loadTile(t){let s;try{this._onStartTileLoading(),s=await t.loadContent()}catch(n){this._onTileLoadError(t,n instanceof Error?n:new Error("load failed"))}finally{this._onEndTileLoading(),this._onTileLoad(t,s)}}_onTileLoadError(t,s){this.stats.get(ir).incrementCount();let n=s.message||s.toString(),r=t.url;console.error(`A 3D tile failed to load: ${t.url} ${n}`),this.options.onTileError(t,n,r)}_onTileLoad(t,s){if(s){if(this.type===W.I3S){let n=this.tileset?.nodePagesTile?.nodesInNodePages||0;this.stats.get(Ee).reset(),this.stats.get(Ee).addCount(n)}t&&t.content&&he(t,t.content),this.updateContentTypes(t),this._addTileToCache(t),this.options.onTileLoad(t)}}updateContentTypes(t){if(this.type===W.I3S)switch(t.header.isDracoGeometry&&(this.contentFormats.draco=!0),t.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}else if(this.type===W.TILES3D){let{extensionsRemoved:s=[]}=t.content?.gltf||{};s.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),s.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),s.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0)}}_onStartTileLoading(){this._pendingCount++,this.stats.get(Ms).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Ms).decrementCount()}_addTileToCache(t){this._cache.add(this,t,s=>s._updateCacheStats(t))}_updateCacheStats(t){this.stats.get(nr).incrementCount(),this.stats.get(gs).incrementCount(),this.gpuMemoryUsageInBytes+=t.gpuMemoryUsageInBytes||0,this.stats.get(Ts).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(t){this.gpuMemoryUsageInBytes-=t.gpuMemoryUsageInBytes||0,this.stats.get(gs).decrementCount(),this.stats.get(rr).incrementCount(),this.stats.get(Ts).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(t),t.unloadContent()}_destroy(){let t=[];for(this.root&&t.push(this.root);t.length>0;){let s=t.pop();for(let n of s.children)t.push(n);this._destroyTile(s)}this.root=null}_destroySubtree(t){let s=t,n=[];for(n.push(s);n.length>0;){t=n.pop();for(let r of t.children)n.push(r);t!==s&&this._destroyTile(t)}s.children=[]}_destroyTile(t){this._cache.unloadTile(this,t),this._unloadTile(t),t.destroy()}_initializeTiles3DTileset(t){if(t.queryString){let s=new URLSearchParams(t.queryString),n=Object.fromEntries(s.entries());this._queryParams={...this._queryParams,...n}}if(this.asset=t.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||"",this.properties=t.properties,this.geometricError=t.geometricError,this._extensionsUsed=t.extensionsUsed||[],this.extras=t.extras}_initializeI3STileset(){let t=this.loadOptions.i3s;t&&typeof t=="object"&&"token"in t&&(this._queryParams.token=t.token)}};return dr(Ft);})();
7
+ "use strict";var __exports__=(()=>{var An=Object.create;var ee=Object.defineProperty;var On=Object.getOwnPropertyDescriptor;var Pn=Object.getOwnPropertyNames;var Nn=Object.getPrototypeOf,Ln=Object.prototype.hasOwnProperty;var In=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qt=(e,t)=>{for(var s in t)ee(e,s,{get:t[s],enumerable:!0})},te=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Pn(t))!Ln.call(e,n)&&n!==s&&ee(e,n,{get:()=>t[n],enumerable:!(r=On(t,n))||r.enumerable});return e},se=(e,t,s)=>(te(e,t,"default"),s&&te(s,t,"default")),vn=(e,t,s)=>(s=e!=null?An(Nn(e)):{},te(t||!e||!e.__esModule?ee(s,"default",{value:e,enumerable:!0}):s,e)),zn=e=>te(ee({},"__esModule",{value:!0}),e);var Us=In((ka,Ds)=>{Ds.exports=globalThis.loaders});var Kt={};qt(Kt,{I3SSource:()=>ze,ImageSet:()=>It,IndexedArchiveTilesetSource:()=>be,LOD_METRIC_TYPE:()=>Pt,PointCloudTile:()=>zt,PointCloudTileset:()=>De,RasterSet:()=>vt,STRATEGY_DEFAULT:()=>Qt,STRATEGY_NEVER:()=>qs,STRATEGY_REPLACE:()=>Vs,SharedTile2DHeader:()=>Mt,TILESET_TYPE:()=>J,TILE_CONTENT_STATE:()=>W,TILE_REFINEMENT:()=>Z,TILE_TYPE:()=>Ce,Tile3D:()=>tt,Tiles3DSource:()=>Ne,Tileset2D:()=>yt,Tileset3D:()=>we,TilesetCache:()=>Ot,TilesetTraverser:()=>nt,calculateTransformProps:()=>_e,createBoundingVolume:()=>Nt,getFrameState:()=>Ee,getLodStatus:()=>Oe,isTileset3DSource:()=>Re});se(Kt,vn(Us(),1));var qn=1/Math.PI*180,Vn=1/180*Math.PI,Dn={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Dn}};var q=globalThis.mathgl.config;function Fe(e,{precision:t=q.precision}={}){return e=Un(e),`${parseFloat(e.toPrecision(t))}`}function et(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Be(e){return Fs(e)}function ke(e){return $(e)}function Fs(e,t){return Bs(e,s=>s*Vn,t)}function $(e,t){return Bs(e,s=>s*qn,t)}function X(e,t,s){let r=q.EPSILON;s&&(q.EPSILON=s);try{if(e===t)return!0;if(et(e)&&et(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;++n)if(!X(e[n],t[n]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=q.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{q.EPSILON=r}}function Un(e){return Math.round(e/q.EPSILON)*q.EPSILON}function Fn(e){return e.clone?e.clone():new Array(e.length)}function Bs(e,t,s){if(et(e)){let r=e;s=s||Fn(r);for(let n=0;n<s.length&&n<r.length;++n){let i=typeof e=="number"?e:e[n];s[n]=t(i,n,s)}return s}return t(e)}var ht=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,s=0){for(let r=0;r<this.ELEMENTS;++r)this[r]=t[r+s];return this.check()}toArray(t=[],s=0){for(let r=0;r<this.ELEMENTS;++r)t[s+r]=this[r];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:et(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(q)}formatString(t){let s="";for(let r=0;r<this.ELEMENTS;++r)s+=(r>0?", ":"")+Fe(this[r],t);return`${t.printTypes?this.constructor.name:""}[${s}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(!X(this[s],t[s]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(this[s]!==t[s])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,s,r){if(r===void 0)return this.lerp(this,t,s);for(let n=0;n<this.ELEMENTS;++n){let i=t[n],o=typeof s=="number"?s:s[n];this[n]=i+r*(o-i)}return this.check()}min(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(t[s],this[s]);return this.check()}max(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.max(t[s],this[s]);return this.check()}clamp(t,s){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(Math.max(this[r],t[r]),s[r]);return this.check()}add(...t){for(let s of t)for(let r=0;r<this.ELEMENTS;++r)this[r]+=s[r];return this.check()}subtract(...t){for(let s of t)for(let r=0;r<this.ELEMENTS;++r)this[r]-=s[r];return this.check()}scale(t){if(typeof t=="number")for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;else for(let s=0;s<this.ELEMENTS&&s<t.length;++s)this[s]*=t[s];return this.check()}multiplyByScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}check(){if(q.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let s=0;s<this.ELEMENTS;++s)t=t&&Number.isFinite(this[s]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=t;return this.check()}addScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,s){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(Math.max(this[r],t),s);return this.check()}get elements(){return this}};function Bn(e,t){if(e.length!==t)return!1;for(let s=0;s<e.length;++s)if(!Number.isFinite(e[s]))return!1;return!0}function N(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function lt(e,t,s=""){if(q.debug&&!Bn(e,t))throw new Error(`math.gl: ${s} some fields set to invalid numbers'`);return e}function F(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var St=class extends ht{get x(){return this[0]}set x(t){this[0]=N(t)}get y(){return this[1]}set y(t){this[1]=N(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let s=0;s<this.ELEMENTS;++s)t+=this[s]*this[s];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let s=0;for(let r=0;r<this.ELEMENTS;++r){let n=this[r]-t[r];s+=n*n}return N(s)}dot(t){let s=0;for(let r=0;r<this.ELEMENTS;++r)s+=this[r]*t[r];return N(s)}normalize(){let t=this.magnitude();if(t!==0)for(let s=0;s<this.ELEMENTS;++s)this[s]/=t;return this.check()}multiply(...t){for(let s of t)for(let r=0;r<this.ELEMENTS;++r)this[r]*=s[r];return this.check()}divide(...t){for(let s of t)for(let r=0;r<this.ELEMENTS;++r)this[r]/=s[r];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return F(t>=0&&t<this.ELEMENTS,"index is out of range"),N(this[t])}setComponent(t,s){return F(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=s,this.check()}addVectors(t,s){return this.copy(t).add(s)}subVectors(t,s){return this.copy(t).subtract(s)}multiplyVectors(t,s){return this.copy(t).multiply(s)}addScaledVector(t,s){return this.add(new this.constructor(t).multiplyScalar(s))}};var V=typeof Float32Array<"u"?Float32Array:Array,Vt=Math.random;function Et(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Ja=Math.PI/180;function kn(){let e=new V(2);return V!=Float32Array&&(e[0]=0,e[1]=0),e}function ks(e,t,s){let r=t[0],n=t[1];return e[0]=s[0]*r+s[3]*n+s[6],e[1]=s[1]*r+s[4]*n+s[7],e}function Ws(e,t,s){let r=t[0],n=t[1];return e[0]=s[0]*r+s[4]*n+s[12],e[1]=s[1]*r+s[5]*n+s[13],e}var tc=function(){let e=kn();return function(t,s,r,n,i,o){let a,c;for(s||(s=2),r||(r=0),n?c=Math.min(n*s+r,t.length):c=t.length,a=r;a<c;a+=s)e[0]=t[a],e[1]=t[a+1],i(e,e,o),t[a]=e[0],t[a+1]=e[1];return t}}();function Ys(e,t,s){let r=t[0],n=t[1],i=s[3]*r+s[7]*n||1;return e[0]=(s[0]*r+s[4]*n)/i,e[1]=(s[1]*r+s[5]*n)/i,e}function re(e,t,s){let r=t[0],n=t[1],i=t[2],o=s[3]*r+s[7]*n+s[11]*i||1;return e[0]=(s[0]*r+s[4]*n+s[8]*i)/o,e[1]=(s[1]*r+s[5]*n+s[9]*i)/o,e[2]=(s[2]*r+s[6]*n+s[10]*i)/o,e}function Gs(e,t,s){let r=t[0],n=t[1];return e[0]=s[0]*r+s[2]*n,e[1]=s[1]*r+s[3]*n,e[2]=t[2],e}function Zs(e,t,s){let r=t[0],n=t[1];return e[0]=s[0]*r+s[2]*n,e[1]=s[1]*r+s[3]*n,e[2]=t[2],e[3]=t[3],e}function ne(e,t,s){let r=t[0],n=t[1],i=t[2];return e[0]=s[0]*r+s[3]*n+s[6]*i,e[1]=s[1]*r+s[4]*n+s[7]*i,e[2]=s[2]*r+s[5]*n+s[8]*i,e[3]=t[3],e}var gt={};qt(gt,{add:()=>Zn,angle:()=>je,bezier:()=>ii,ceil:()=>jn,clone:()=>Wn,copy:()=>Yn,create:()=>ie,cross:()=>pt,dist:()=>fi,distance:()=>Hs,div:()=>mi,divide:()=>Qs,dot:()=>Dt,equals:()=>li,exactEquals:()=>hi,floor:()=>$n,forEach:()=>gi,fromValues:()=>oe,hermite:()=>ni,inverse:()=>ei,len:()=>$e,length:()=>js,lerp:()=>si,max:()=>Qn,min:()=>Xn,mul:()=>ui,multiply:()=>Xs,negate:()=>ti,normalize:()=>We,random:()=>oi,rotateX:()=>Ye,rotateY:()=>Ge,rotateZ:()=>Ze,round:()=>Hn,scale:()=>Kn,scaleAndAdd:()=>Jn,set:()=>Gn,slerp:()=>ri,sqrDist:()=>pi,sqrLen:()=>xi,squaredDistance:()=>Ks,squaredLength:()=>Js,str:()=>ci,sub:()=>di,subtract:()=>$s,transformMat3:()=>Ut,transformMat4:()=>xt,transformQuat:()=>Ft,zero:()=>ai});function ie(){let e=new V(3);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Wn(e){let t=new V(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function js(e){let t=e[0],s=e[1],r=e[2];return Math.sqrt(t*t+s*s+r*r)}function oe(e,t,s){let r=new V(3);return r[0]=e,r[1]=t,r[2]=s,r}function Yn(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Gn(e,t,s,r){return e[0]=t,e[1]=s,e[2]=r,e}function Zn(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e}function $s(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e}function Xs(e,t,s){return e[0]=t[0]*s[0],e[1]=t[1]*s[1],e[2]=t[2]*s[2],e}function Qs(e,t,s){return e[0]=t[0]/s[0],e[1]=t[1]/s[1],e[2]=t[2]/s[2],e}function jn(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function $n(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Xn(e,t,s){return e[0]=Math.min(t[0],s[0]),e[1]=Math.min(t[1],s[1]),e[2]=Math.min(t[2],s[2]),e}function Qn(e,t,s){return e[0]=Math.max(t[0],s[0]),e[1]=Math.max(t[1],s[1]),e[2]=Math.max(t[2],s[2]),e}function Hn(e,t){return e[0]=Et(t[0]),e[1]=Et(t[1]),e[2]=Et(t[2]),e}function Kn(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function Jn(e,t,s,r){return e[0]=t[0]+s[0]*r,e[1]=t[1]+s[1]*r,e[2]=t[2]+s[2]*r,e}function Hs(e,t){let s=t[0]-e[0],r=t[1]-e[1],n=t[2]-e[2];return Math.sqrt(s*s+r*r+n*n)}function Ks(e,t){let s=t[0]-e[0],r=t[1]-e[1],n=t[2]-e[2];return s*s+r*r+n*n}function Js(e){let t=e[0],s=e[1],r=e[2];return t*t+s*s+r*r}function ti(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function ei(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function We(e,t){let s=t[0],r=t[1],n=t[2],i=s*s+r*r+n*n;return i>0&&(i=1/Math.sqrt(i)),e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Dt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function pt(e,t,s){let r=t[0],n=t[1],i=t[2],o=s[0],a=s[1],c=s[2];return e[0]=n*c-i*a,e[1]=i*o-r*c,e[2]=r*a-n*o,e}function si(e,t,s,r){let n=t[0],i=t[1],o=t[2];return e[0]=n+r*(s[0]-n),e[1]=i+r*(s[1]-i),e[2]=o+r*(s[2]-o),e}function ri(e,t,s,r){let n=Math.acos(Math.min(Math.max(Dt(t,s),-1),1)),i=Math.sin(n),o=Math.sin((1-r)*n)/i,a=Math.sin(r*n)/i;return e[0]=o*t[0]+a*s[0],e[1]=o*t[1]+a*s[1],e[2]=o*t[2]+a*s[2],e}function ni(e,t,s,r,n,i){let o=i*i,a=o*(2*i-3)+1,c=o*(i-2)+i,h=o*(i-1),l=o*(3-2*i);return e[0]=t[0]*a+s[0]*c+r[0]*h+n[0]*l,e[1]=t[1]*a+s[1]*c+r[1]*h+n[1]*l,e[2]=t[2]*a+s[2]*c+r[2]*h+n[2]*l,e}function ii(e,t,s,r,n,i){let o=1-i,a=o*o,c=i*i,h=a*o,l=3*i*a,d=3*c*o,u=c*i;return e[0]=t[0]*h+s[0]*l+r[0]*d+n[0]*u,e[1]=t[1]*h+s[1]*l+r[1]*d+n[1]*u,e[2]=t[2]*h+s[2]*l+r[2]*d+n[2]*u,e}function oi(e,t){t=t===void 0?1:t;let s=Vt()*2*Math.PI,r=Vt()*2-1,n=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(s)*n,e[1]=Math.sin(s)*n,e[2]=r*t,e}function xt(e,t,s){let r=t[0],n=t[1],i=t[2],o=s[3]*r+s[7]*n+s[11]*i+s[15];return o=o||1,e[0]=(s[0]*r+s[4]*n+s[8]*i+s[12])/o,e[1]=(s[1]*r+s[5]*n+s[9]*i+s[13])/o,e[2]=(s[2]*r+s[6]*n+s[10]*i+s[14])/o,e}function Ut(e,t,s){let r=t[0],n=t[1],i=t[2];return e[0]=r*s[0]+n*s[3]+i*s[6],e[1]=r*s[1]+n*s[4]+i*s[7],e[2]=r*s[2]+n*s[5]+i*s[8],e}function Ft(e,t,s){let r=s[0],n=s[1],i=s[2],o=s[3],a=t[0],c=t[1],h=t[2],l=n*h-i*c,d=i*a-r*h,u=r*c-n*a,m=n*u-i*d,x=i*l-r*u,g=r*d-n*l,p=o*2;return l*=p,d*=p,u*=p,m*=2,x*=2,g*=2,e[0]=a+l+m,e[1]=c+d+x,e[2]=h+u+g,e}function Ye(e,t,s,r){let n=[],i=[];return n[0]=t[0]-s[0],n[1]=t[1]-s[1],n[2]=t[2]-s[2],i[0]=n[0],i[1]=n[1]*Math.cos(r)-n[2]*Math.sin(r),i[2]=n[1]*Math.sin(r)+n[2]*Math.cos(r),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function Ge(e,t,s,r){let n=[],i=[];return n[0]=t[0]-s[0],n[1]=t[1]-s[1],n[2]=t[2]-s[2],i[0]=n[2]*Math.sin(r)+n[0]*Math.cos(r),i[1]=n[1],i[2]=n[2]*Math.cos(r)-n[0]*Math.sin(r),e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function Ze(e,t,s,r){let n=[],i=[];return n[0]=t[0]-s[0],n[1]=t[1]-s[1],n[2]=t[2]-s[2],i[0]=n[0]*Math.cos(r)-n[1]*Math.sin(r),i[1]=n[0]*Math.sin(r)+n[1]*Math.cos(r),i[2]=n[2],e[0]=i[0]+s[0],e[1]=i[1]+s[1],e[2]=i[2]+s[2],e}function je(e,t){let s=e[0],r=e[1],n=e[2],i=t[0],o=t[1],a=t[2],c=Math.sqrt((s*s+r*r+n*n)*(i*i+o*o+a*a)),h=c&&Dt(e,t)/c;return Math.acos(Math.min(Math.max(h,-1),1))}function ai(e){return e[0]=0,e[1]=0,e[2]=0,e}function ci(e){return`vec3(${e[0]}, ${e[1]}, ${e[2]})`}function hi(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function li(e,t){let s=e[0],r=e[1],n=e[2],i=t[0],o=t[1],a=t[2];return Math.abs(s-i)<=1e-6*Math.max(1,Math.abs(s),Math.abs(i))&&Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-a)<=1e-6*Math.max(1,Math.abs(n),Math.abs(a))}var di=$s,ui=Xs,mi=Qs,fi=Hs,pi=Ks,$e=js,xi=Js,gi=function(){let e=ie();return function(t,s,r,n,i,o){let a,c;for(s||(s=3),r||(r=0),n?c=Math.min(n*s+r,t.length):c=t.length,a=r;a<c;a+=s)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],i(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}}();var Xe=[0,0,0],ae,f=class extends St{static get ZERO(){return ae||(ae=new f(0,0,0),Object.freeze(ae)),ae}constructor(t=0,s=0,r=0){super(-0,-0,-0),arguments.length===1&&et(t)?this.copy(t):(q.debug&&(N(t),N(s),N(r)),this[0]=t,this[1]=s,this[2]=r)}set(t,s,r){return this[0]=t,this[1]=s,this[2]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return q.debug&&(N(t.x),N(t.y),N(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=N(t)}angle(t){return je(this,t)}cross(t){return pt(this,this,t),this.check()}rotateX({radians:t,origin:s=Xe}){return Ye(this,this,s,t),this.check()}rotateY({radians:t,origin:s=Xe}){return Ge(this,this,s,t),this.check()}rotateZ({radians:t,origin:s=Xe}){return Ze(this,this,s,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return xt(this,this,t),this.check()}transformAsVector(t){return re(this,this,t),this.check()}transformByMatrix3(t){return Ut(this,this,t),this.check()}transformByMatrix2(t){return Gs(this,this,t),this.check()}transformByQuaternion(t){return Ft(this,this,t),this.check()}};var ce,wt=class extends St{static get ZERO(){return ce||(ce=new wt(0,0,0,0),Object.freeze(ce)),ce}constructor(t=0,s=0,r=0,n=0){super(-0,-0,-0,-0),et(t)&&arguments.length===1?this.copy(t):(q.debug&&(N(t),N(s),N(r),N(n)),this[0]=t,this[1]=s,this[2]=r,this[3]=n)}set(t,s,r,n){return this[0]=t,this[1]=s,this[2]=r,this[3]=n,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(t){return q.debug&&(N(t.x),N(t.y),N(t.z),N(t.w)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(t){this[2]=N(t)}get w(){return this[3]}set w(t){this[3]=N(t)}transform(t){return xt(this,this,t),this.check()}transformByMatrix3(t){return ne(this,this,t),this.check()}transformByMatrix2(t){return Zs(this,this,t),this.check()}transformByQuaternion(t){return Ft(this,this,t),this.check()}applyMatrix4(t){return t.transform(this,this),this}};var bt=class extends ht{toString(){let t="[";if(q.printRowMajor){t+="row-major:";for(let s=0;s<this.RANK;++s)for(let r=0;r<this.RANK;++r)t+=` ${this[r*this.RANK+s]}`}else{t+="column-major:";for(let s=0;s<this.ELEMENTS;++s)t+=` ${this[s]}`}return t+="]",t}getElementIndex(t,s){return s*this.RANK+t}getElement(t,s){return this[s*this.RANK+t]}setElement(t,s,r){return this[s*this.RANK+t]=N(r),this}getColumn(t,s=new Array(this.RANK).fill(-0)){let r=t*this.RANK;for(let n=0;n<this.RANK;++n)s[n]=this[r+n];return s}setColumn(t,s){let r=t*this.RANK;for(let n=0;n<this.RANK;++n)this[r+n]=s[n];return this}};function tr(){let e=new V(9);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function er(e,t){if(e===t){let s=t[1],r=t[2],n=t[5];e[1]=t[3],e[2]=t[6],e[3]=s,e[5]=t[7],e[6]=r,e[7]=n}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function sr(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],c=t[6],h=t[7],l=t[8],d=l*o-a*h,u=-l*i+a*c,m=h*i-o*c,x=s*d+r*u+n*m;return x?(x=1/x,e[0]=d*x,e[1]=(-l*r+n*h)*x,e[2]=(a*r-n*o)*x,e[3]=u*x,e[4]=(l*s-n*c)*x,e[5]=(-a*s+n*i)*x,e[6]=m*x,e[7]=(-h*s+r*c)*x,e[8]=(o*s-r*i)*x,e):null}function rr(e){let t=e[0],s=e[1],r=e[2],n=e[3],i=e[4],o=e[5],a=e[6],c=e[7],h=e[8];return t*(h*i-o*c)+s*(-h*n+o*a)+r*(c*n-i*a)}function Qe(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],h=t[6],l=t[7],d=t[8],u=s[0],m=s[1],x=s[2],g=s[3],p=s[4],_=s[5],E=s[6],M=s[7],T=s[8];return e[0]=u*r+m*o+x*h,e[1]=u*n+m*a+x*l,e[2]=u*i+m*c+x*d,e[3]=g*r+p*o+_*h,e[4]=g*n+p*a+_*l,e[5]=g*i+p*c+_*d,e[6]=E*r+M*o+T*h,e[7]=E*n+M*a+T*l,e[8]=E*i+M*c+T*d,e}function nr(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],h=t[6],l=t[7],d=t[8],u=s[0],m=s[1];return e[0]=r,e[1]=n,e[2]=i,e[3]=o,e[4]=a,e[5]=c,e[6]=u*r+m*o+h,e[7]=u*n+m*a+l,e[8]=u*i+m*c+d,e}function ir(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],h=t[6],l=t[7],d=t[8],u=Math.sin(s),m=Math.cos(s);return e[0]=m*r+u*o,e[1]=m*n+u*a,e[2]=m*i+u*c,e[3]=m*o-u*r,e[4]=m*a-u*n,e[5]=m*c-u*i,e[6]=h,e[7]=l,e[8]=d,e}function He(e,t,s){let r=s[0],n=s[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=n*t[3],e[4]=n*t[4],e[5]=n*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function or(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=s+s,a=r+r,c=n+n,h=s*o,l=r*o,d=r*a,u=n*o,m=n*a,x=n*c,g=i*o,p=i*a,_=i*c;return e[0]=1-d-x,e[3]=l-_,e[6]=u+p,e[1]=l+_,e[4]=1-h-x,e[7]=m-g,e[2]=u-p,e[5]=m+g,e[8]=1-h-d,e}var Ke;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL1ROW0=3]="COL1ROW0",e[e.COL1ROW1=4]="COL1ROW1",e[e.COL1ROW2=5]="COL1ROW2",e[e.COL2ROW0=6]="COL2ROW0",e[e.COL2ROW1=7]="COL2ROW1",e[e.COL2ROW2=8]="COL2ROW2"})(Ke||(Ke={}));var Ti=Object.freeze([1,0,0,0,1,0,0,0,1]),D=class extends bt{static get IDENTITY(){return yi()}static get ZERO(){return Mi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Ke}constructor(t,...s){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):s.length>0?this.copy([t,...s]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(Ti)}fromObject(t){return this.check()}fromQuaternion(t){return or(this,t),this.check()}set(t,s,r,n,i,o,a,c,h){return this[0]=t,this[1]=s,this[2]=r,this[3]=n,this[4]=i,this[5]=o,this[6]=a,this[7]=c,this[8]=h,this.check()}setRowMajor(t,s,r,n,i,o,a,c,h){return this[0]=t,this[1]=n,this[2]=a,this[3]=s,this[4]=i,this[5]=c,this[6]=r,this[7]=o,this[8]=h,this.check()}determinant(){return rr(this)}transpose(){return er(this,this),this.check()}invert(){return sr(this,this),this.check()}multiplyLeft(t){return Qe(this,t,this),this.check()}multiplyRight(t){return Qe(this,this,t),this.check()}rotate(t){return ir(this,this,t),this.check()}scale(t){return Array.isArray(t)?He(this,this,t):He(this,this,[t,t]),this.check()}translate(t){return nr(this,this,t),this.check()}transform(t,s){let r;switch(t.length){case 2:r=ks(s||[-0,-0],t,this);break;case 3:r=Ut(s||[-0,-0,-0],t,this);break;case 4:r=ne(s||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return lt(r,t.length),r}transformVector(t,s){return this.transform(t,s)}transformVector2(t,s){return this.transform(t,s)}transformVector3(t,s){return this.transform(t,s)}},he,le=null;function Mi(){return he||(he=new D([0,0,0,0,0,0,0,0,0]),Object.freeze(he)),he}function yi(){return le||(le=new D,Object.freeze(le)),le}var kt={};qt(kt,{add:()=>Zi,adjoint:()=>Ci,clone:()=>Ei,copy:()=>Ri,create:()=>Si,decompose:()=>Vi,determinant:()=>es,equals:()=>Qi,exactEquals:()=>Xi,frob:()=>Gi,fromQuat:()=>cs,fromQuat2:()=>vi,fromRotation:()=>Pi,fromRotationTranslation:()=>cr,fromRotationTranslationScale:()=>Di,fromRotationTranslationScaleOrigin:()=>Ui,fromScaling:()=>Oi,fromTranslation:()=>Ai,fromValues:()=>wi,fromXRotation:()=>Ni,fromYRotation:()=>Li,fromZRotation:()=>Ii,frustum:()=>hs,getRotation:()=>qi,getScaling:()=>hr,getTranslation:()=>zi,identity:()=>ar,invert:()=>ts,lookAt:()=>us,mul:()=>Hi,multiply:()=>Bt,multiplyScalar:()=>ji,multiplyScalarAndAdd:()=>$i,ortho:()=>ds,orthoNO:()=>dr,orthoZO:()=>ki,perspective:()=>ls,perspectiveFromFieldOfView:()=>Bi,perspectiveNO:()=>lr,perspectiveZO:()=>Fi,rotate:()=>ns,rotateX:()=>is,rotateY:()=>os,rotateZ:()=>as,scale:()=>rs,set:()=>bi,str:()=>Yi,sub:()=>Ki,subtract:()=>ur,targetTo:()=>Wi,translate:()=>ss,transpose:()=>Je});function Si(){let e=new V(16);return V!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Ei(e){let t=new V(16);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}function Ri(e,t){return 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],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function wi(e,t,s,r,n,i,o,a,c,h,l,d,u,m,x,g){let p=new V(16);return p[0]=e,p[1]=t,p[2]=s,p[3]=r,p[4]=n,p[5]=i,p[6]=o,p[7]=a,p[8]=c,p[9]=h,p[10]=l,p[11]=d,p[12]=u,p[13]=m,p[14]=x,p[15]=g,p}function bi(e,t,s,r,n,i,o,a,c,h,l,d,u,m,x,g,p){return e[0]=t,e[1]=s,e[2]=r,e[3]=n,e[4]=i,e[5]=o,e[6]=a,e[7]=c,e[8]=h,e[9]=l,e[10]=d,e[11]=u,e[12]=m,e[13]=x,e[14]=g,e[15]=p,e}function ar(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Je(e,t){if(e===t){let s=t[1],r=t[2],n=t[3],i=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=s,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=i,e[11]=t[14],e[12]=n,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function ts(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],c=t[6],h=t[7],l=t[8],d=t[9],u=t[10],m=t[11],x=t[12],g=t[13],p=t[14],_=t[15],E=s*a-r*o,M=s*c-n*o,T=s*h-i*o,S=r*c-n*a,y=r*h-i*a,O=n*h-i*c,w=l*g-d*x,C=l*p-u*x,R=l*_-m*x,I=d*p-u*g,v=d*_-m*g,z=u*_-m*p,A=E*z-M*v+T*I+S*R-y*C+O*w;return A?(A=1/A,e[0]=(a*z-c*v+h*I)*A,e[1]=(n*v-r*z-i*I)*A,e[2]=(g*O-p*y+_*S)*A,e[3]=(u*y-d*O-m*S)*A,e[4]=(c*R-o*z-h*C)*A,e[5]=(s*z-n*R+i*C)*A,e[6]=(p*T-x*O-_*M)*A,e[7]=(l*O-u*T+m*M)*A,e[8]=(o*v-a*R+h*w)*A,e[9]=(r*R-s*v-i*w)*A,e[10]=(x*y-g*T+_*E)*A,e[11]=(d*T-l*y-m*E)*A,e[12]=(a*C-o*I-c*w)*A,e[13]=(s*I-r*C+n*w)*A,e[14]=(g*M-x*S-p*E)*A,e[15]=(l*S-d*M+u*E)*A,e):null}function Ci(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],c=t[6],h=t[7],l=t[8],d=t[9],u=t[10],m=t[11],x=t[12],g=t[13],p=t[14],_=t[15],E=s*a-r*o,M=s*c-n*o,T=s*h-i*o,S=r*c-n*a,y=r*h-i*a,O=n*h-i*c,w=l*g-d*x,C=l*p-u*x,R=l*_-m*x,I=d*p-u*g,v=d*_-m*g,z=u*_-m*p;return e[0]=a*z-c*v+h*I,e[1]=n*v-r*z-i*I,e[2]=g*O-p*y+_*S,e[3]=u*y-d*O-m*S,e[4]=c*R-o*z-h*C,e[5]=s*z-n*R+i*C,e[6]=p*T-x*O-_*M,e[7]=l*O-u*T+m*M,e[8]=o*v-a*R+h*w,e[9]=r*R-s*v-i*w,e[10]=x*y-g*T+_*E,e[11]=d*T-l*y-m*E,e[12]=a*C-o*I-c*w,e[13]=s*I-r*C+n*w,e[14]=g*M-x*S-p*E,e[15]=l*S-d*M+u*E,e}function es(e){let t=e[0],s=e[1],r=e[2],n=e[3],i=e[4],o=e[5],a=e[6],c=e[7],h=e[8],l=e[9],d=e[10],u=e[11],m=e[12],x=e[13],g=e[14],p=e[15],_=t*o-s*i,E=t*a-r*i,M=s*a-r*o,T=h*x-l*m,S=h*g-d*m,y=l*g-d*x,O=t*y-s*S+r*T,w=i*y-o*S+a*T,C=h*M-l*E+d*_,R=m*M-x*E+g*_;return c*O-n*w+p*C-u*R}function Bt(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],h=t[6],l=t[7],d=t[8],u=t[9],m=t[10],x=t[11],g=t[12],p=t[13],_=t[14],E=t[15],M=s[0],T=s[1],S=s[2],y=s[3];return e[0]=M*r+T*a+S*d+y*g,e[1]=M*n+T*c+S*u+y*p,e[2]=M*i+T*h+S*m+y*_,e[3]=M*o+T*l+S*x+y*E,M=s[4],T=s[5],S=s[6],y=s[7],e[4]=M*r+T*a+S*d+y*g,e[5]=M*n+T*c+S*u+y*p,e[6]=M*i+T*h+S*m+y*_,e[7]=M*o+T*l+S*x+y*E,M=s[8],T=s[9],S=s[10],y=s[11],e[8]=M*r+T*a+S*d+y*g,e[9]=M*n+T*c+S*u+y*p,e[10]=M*i+T*h+S*m+y*_,e[11]=M*o+T*l+S*x+y*E,M=s[12],T=s[13],S=s[14],y=s[15],e[12]=M*r+T*a+S*d+y*g,e[13]=M*n+T*c+S*u+y*p,e[14]=M*i+T*h+S*m+y*_,e[15]=M*o+T*l+S*x+y*E,e}function ss(e,t,s){let r=s[0],n=s[1],i=s[2],o,a,c,h,l,d,u,m,x,g,p,_;return t===e?(e[12]=t[0]*r+t[4]*n+t[8]*i+t[12],e[13]=t[1]*r+t[5]*n+t[9]*i+t[13],e[14]=t[2]*r+t[6]*n+t[10]*i+t[14],e[15]=t[3]*r+t[7]*n+t[11]*i+t[15]):(o=t[0],a=t[1],c=t[2],h=t[3],l=t[4],d=t[5],u=t[6],m=t[7],x=t[8],g=t[9],p=t[10],_=t[11],e[0]=o,e[1]=a,e[2]=c,e[3]=h,e[4]=l,e[5]=d,e[6]=u,e[7]=m,e[8]=x,e[9]=g,e[10]=p,e[11]=_,e[12]=o*r+l*n+x*i+t[12],e[13]=a*r+d*n+g*i+t[13],e[14]=c*r+u*n+p*i+t[14],e[15]=h*r+m*n+_*i+t[15]),e}function rs(e,t,s){let r=s[0],n=s[1],i=s[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ns(e,t,s,r){let n=r[0],i=r[1],o=r[2],a=Math.sqrt(n*n+i*i+o*o),c,h,l,d,u,m,x,g,p,_,E,M,T,S,y,O,w,C,R,I,v,z,A,j;return a<1e-6?null:(a=1/a,n*=a,i*=a,o*=a,h=Math.sin(s),c=Math.cos(s),l=1-c,d=t[0],u=t[1],m=t[2],x=t[3],g=t[4],p=t[5],_=t[6],E=t[7],M=t[8],T=t[9],S=t[10],y=t[11],O=n*n*l+c,w=i*n*l+o*h,C=o*n*l-i*h,R=n*i*l-o*h,I=i*i*l+c,v=o*i*l+n*h,z=n*o*l+i*h,A=i*o*l-n*h,j=o*o*l+c,e[0]=d*O+g*w+M*C,e[1]=u*O+p*w+T*C,e[2]=m*O+_*w+S*C,e[3]=x*O+E*w+y*C,e[4]=d*R+g*I+M*v,e[5]=u*R+p*I+T*v,e[6]=m*R+_*I+S*v,e[7]=x*R+E*I+y*v,e[8]=d*z+g*A+M*j,e[9]=u*z+p*A+T*j,e[10]=m*z+_*A+S*j,e[11]=x*z+E*A+y*j,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function is(e,t,s){let r=Math.sin(s),n=Math.cos(s),i=t[4],o=t[5],a=t[6],c=t[7],h=t[8],l=t[9],d=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=i*n+h*r,e[5]=o*n+l*r,e[6]=a*n+d*r,e[7]=c*n+u*r,e[8]=h*n-i*r,e[9]=l*n-o*r,e[10]=d*n-a*r,e[11]=u*n-c*r,e}function os(e,t,s){let r=Math.sin(s),n=Math.cos(s),i=t[0],o=t[1],a=t[2],c=t[3],h=t[8],l=t[9],d=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*n-h*r,e[1]=o*n-l*r,e[2]=a*n-d*r,e[3]=c*n-u*r,e[8]=i*r+h*n,e[9]=o*r+l*n,e[10]=a*r+d*n,e[11]=c*r+u*n,e}function as(e,t,s){let r=Math.sin(s),n=Math.cos(s),i=t[0],o=t[1],a=t[2],c=t[3],h=t[4],l=t[5],d=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*n+h*r,e[1]=o*n+l*r,e[2]=a*n+d*r,e[3]=c*n+u*r,e[4]=h*n-i*r,e[5]=l*n-o*r,e[6]=d*n-a*r,e[7]=u*n-c*r,e}function Ai(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function Oi(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Pi(e,t,s){let r=s[0],n=s[1],i=s[2],o=Math.sqrt(r*r+n*n+i*i),a,c,h;return o<1e-6?null:(o=1/o,r*=o,n*=o,i*=o,c=Math.sin(t),a=Math.cos(t),h=1-a,e[0]=r*r*h+a,e[1]=n*r*h+i*c,e[2]=i*r*h-n*c,e[3]=0,e[4]=r*n*h-i*c,e[5]=n*n*h+a,e[6]=i*n*h+r*c,e[7]=0,e[8]=r*i*h+n*c,e[9]=n*i*h-r*c,e[10]=i*i*h+a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Ni(e,t){let s=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=s,e[7]=0,e[8]=0,e[9]=-s,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Li(e,t){let s=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-s,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=s,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Ii(e,t){let s=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=s,e[2]=0,e[3]=0,e[4]=-s,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function cr(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=r+r,c=n+n,h=i+i,l=r*a,d=r*c,u=r*h,m=n*c,x=n*h,g=i*h,p=o*a,_=o*c,E=o*h;return e[0]=1-(m+g),e[1]=d+E,e[2]=u-_,e[3]=0,e[4]=d-E,e[5]=1-(l+g),e[6]=x+p,e[7]=0,e[8]=u+_,e[9]=x-p,e[10]=1-(l+m),e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function vi(e,t){let s=new V(3),r=-t[0],n=-t[1],i=-t[2],o=t[3],a=t[4],c=t[5],h=t[6],l=t[7],d=r*r+n*n+i*i+o*o;return d>0?(s[0]=(a*o+l*r+c*i-h*n)*2/d,s[1]=(c*o+l*n+h*r-a*i)*2/d,s[2]=(h*o+l*i+a*n-c*r)*2/d):(s[0]=(a*o+l*r+c*i-h*n)*2,s[1]=(c*o+l*n+h*r-a*i)*2,s[2]=(h*o+l*i+a*n-c*r)*2),cr(e,t,s),e}function zi(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function hr(e,t){let s=t[0],r=t[1],n=t[2],i=t[4],o=t[5],a=t[6],c=t[8],h=t[9],l=t[10];return e[0]=Math.sqrt(s*s+r*r+n*n),e[1]=Math.sqrt(i*i+o*o+a*a),e[2]=Math.sqrt(c*c+h*h+l*l),e}function qi(e,t){let s=new V(3);hr(s,t);let r=1/s[0],n=1/s[1],i=1/s[2],o=t[0]*r,a=t[1]*n,c=t[2]*i,h=t[4]*r,l=t[5]*n,d=t[6]*i,u=t[8]*r,m=t[9]*n,x=t[10]*i,g=o+l+x,p=0;return g>0?(p=Math.sqrt(g+1)*2,e[3]=.25*p,e[0]=(d-m)/p,e[1]=(u-c)/p,e[2]=(a-h)/p):o>l&&o>x?(p=Math.sqrt(1+o-l-x)*2,e[3]=(d-m)/p,e[0]=.25*p,e[1]=(a+h)/p,e[2]=(u+c)/p):l>x?(p=Math.sqrt(1+l-o-x)*2,e[3]=(u-c)/p,e[0]=(a+h)/p,e[1]=.25*p,e[2]=(d+m)/p):(p=Math.sqrt(1+x-o-l)*2,e[3]=(a-h)/p,e[0]=(u+c)/p,e[1]=(d+m)/p,e[2]=.25*p),e}function Vi(e,t,s,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];let n=r[0],i=r[1],o=r[2],a=r[4],c=r[5],h=r[6],l=r[8],d=r[9],u=r[10];s[0]=Math.sqrt(n*n+i*i+o*o),s[1]=Math.sqrt(a*a+c*c+h*h),s[2]=Math.sqrt(l*l+d*d+u*u);let m=1/s[0],x=1/s[1],g=1/s[2],p=n*m,_=i*x,E=o*g,M=a*m,T=c*x,S=h*g,y=l*m,O=d*x,w=u*g,C=p+T+w,R=0;return C>0?(R=Math.sqrt(C+1)*2,e[3]=.25*R,e[0]=(S-O)/R,e[1]=(y-E)/R,e[2]=(_-M)/R):p>T&&p>w?(R=Math.sqrt(1+p-T-w)*2,e[3]=(S-O)/R,e[0]=.25*R,e[1]=(_+M)/R,e[2]=(y+E)/R):T>w?(R=Math.sqrt(1+T-p-w)*2,e[3]=(y-E)/R,e[0]=(_+M)/R,e[1]=.25*R,e[2]=(S+O)/R):(R=Math.sqrt(1+w-p-T)*2,e[3]=(_-M)/R,e[0]=(y+E)/R,e[1]=(S+O)/R,e[2]=.25*R),e}function Di(e,t,s,r){let n=t[0],i=t[1],o=t[2],a=t[3],c=n+n,h=i+i,l=o+o,d=n*c,u=n*h,m=n*l,x=i*h,g=i*l,p=o*l,_=a*c,E=a*h,M=a*l,T=r[0],S=r[1],y=r[2];return e[0]=(1-(x+p))*T,e[1]=(u+M)*T,e[2]=(m-E)*T,e[3]=0,e[4]=(u-M)*S,e[5]=(1-(d+p))*S,e[6]=(g+_)*S,e[7]=0,e[8]=(m+E)*y,e[9]=(g-_)*y,e[10]=(1-(d+x))*y,e[11]=0,e[12]=s[0],e[13]=s[1],e[14]=s[2],e[15]=1,e}function Ui(e,t,s,r,n){let i=t[0],o=t[1],a=t[2],c=t[3],h=i+i,l=o+o,d=a+a,u=i*h,m=i*l,x=i*d,g=o*l,p=o*d,_=a*d,E=c*h,M=c*l,T=c*d,S=r[0],y=r[1],O=r[2],w=n[0],C=n[1],R=n[2],I=(1-(g+_))*S,v=(m+T)*S,z=(x-M)*S,A=(m-T)*y,j=(1-(u+_))*y,mt=(p+E)*y,ft=(x+M)*O,Ue=(p-E)*O,Jt=(1-(u+g))*O;return e[0]=I,e[1]=v,e[2]=z,e[3]=0,e[4]=A,e[5]=j,e[6]=mt,e[7]=0,e[8]=ft,e[9]=Ue,e[10]=Jt,e[11]=0,e[12]=s[0]+w-(I*w+A*C+ft*R),e[13]=s[1]+C-(v*w+j*C+Ue*R),e[14]=s[2]+R-(z*w+mt*C+Jt*R),e[15]=1,e}function cs(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=s+s,a=r+r,c=n+n,h=s*o,l=r*o,d=r*a,u=n*o,m=n*a,x=n*c,g=i*o,p=i*a,_=i*c;return e[0]=1-d-x,e[1]=l+_,e[2]=u-p,e[3]=0,e[4]=l-_,e[5]=1-h-x,e[6]=m+g,e[7]=0,e[8]=u+p,e[9]=m-g,e[10]=1-h-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function hs(e,t,s,r,n,i,o){let a=1/(s-t),c=1/(n-r),h=1/(i-o);return e[0]=i*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i*2*c,e[6]=0,e[7]=0,e[8]=(s+t)*a,e[9]=(n+r)*c,e[10]=(o+i)*h,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*i*2*h,e[15]=0,e}function lr(e,t,s,r,n){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,n!=null&&n!==1/0){let o=1/(r-n);e[10]=(n+r)*o,e[14]=2*n*r*o}else e[10]=-1,e[14]=-2*r;return e}var ls=lr;function Fi(e,t,s,r,n){let i=1/Math.tan(t/2);if(e[0]=i/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,n!=null&&n!==1/0){let o=1/(r-n);e[10]=n*o,e[14]=n*r*o}else e[10]=-1,e[14]=-r;return e}function Bi(e,t,s,r){let n=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),c=2/(o+a),h=2/(n+i);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=h,e[6]=0,e[7]=0,e[8]=-((o-a)*c*.5),e[9]=(n-i)*h*.5,e[10]=r/(s-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*s/(s-r),e[15]=0,e}function dr(e,t,s,r,n,i,o){let a=1/(t-s),c=1/(r-n),h=1/(i-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+s)*a,e[13]=(n+r)*c,e[14]=(o+i)*h,e[15]=1,e}var ds=dr;function ki(e,t,s,r,n,i,o){let a=1/(t-s),c=1/(r-n),h=1/(i-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=h,e[11]=0,e[12]=(t+s)*a,e[13]=(n+r)*c,e[14]=i*h,e[15]=1,e}function us(e,t,s,r){let n,i,o,a,c,h,l,d,u,m,x=t[0],g=t[1],p=t[2],_=r[0],E=r[1],M=r[2],T=s[0],S=s[1],y=s[2];return Math.abs(x-T)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(p-y)<1e-6?ar(e):(d=x-T,u=g-S,m=p-y,n=1/Math.sqrt(d*d+u*u+m*m),d*=n,u*=n,m*=n,i=E*m-M*u,o=M*d-_*m,a=_*u-E*d,n=Math.sqrt(i*i+o*o+a*a),n?(n=1/n,i*=n,o*=n,a*=n):(i=0,o=0,a=0),c=u*a-m*o,h=m*i-d*a,l=d*o-u*i,n=Math.sqrt(c*c+h*h+l*l),n?(n=1/n,c*=n,h*=n,l*=n):(c=0,h=0,l=0),e[0]=i,e[1]=c,e[2]=d,e[3]=0,e[4]=o,e[5]=h,e[6]=u,e[7]=0,e[8]=a,e[9]=l,e[10]=m,e[11]=0,e[12]=-(i*x+o*g+a*p),e[13]=-(c*x+h*g+l*p),e[14]=-(d*x+u*g+m*p),e[15]=1,e)}function Wi(e,t,s,r){let n=t[0],i=t[1],o=t[2],a=r[0],c=r[1],h=r[2],l=n-s[0],d=i-s[1],u=o-s[2],m=l*l+d*d+u*u;m>0&&(m=1/Math.sqrt(m),l*=m,d*=m,u*=m);let x=c*u-h*d,g=h*l-a*u,p=a*d-c*l;return m=x*x+g*g+p*p,m>0&&(m=1/Math.sqrt(m),x*=m,g*=m,p*=m),e[0]=x,e[1]=g,e[2]=p,e[3]=0,e[4]=d*p-u*g,e[5]=u*x-l*p,e[6]=l*g-d*x,e[7]=0,e[8]=l,e[9]=d,e[10]=u,e[11]=0,e[12]=n,e[13]=i,e[14]=o,e[15]=1,e}function Yi(e){return`mat4(${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]})`}function Gi(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Zi(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e[4]=t[4]+s[4],e[5]=t[5]+s[5],e[6]=t[6]+s[6],e[7]=t[7]+s[7],e[8]=t[8]+s[8],e[9]=t[9]+s[9],e[10]=t[10]+s[10],e[11]=t[11]+s[11],e[12]=t[12]+s[12],e[13]=t[13]+s[13],e[14]=t[14]+s[14],e[15]=t[15]+s[15],e}function ur(e,t,s){return e[0]=t[0]-s[0],e[1]=t[1]-s[1],e[2]=t[2]-s[2],e[3]=t[3]-s[3],e[4]=t[4]-s[4],e[5]=t[5]-s[5],e[6]=t[6]-s[6],e[7]=t[7]-s[7],e[8]=t[8]-s[8],e[9]=t[9]-s[9],e[10]=t[10]-s[10],e[11]=t[11]-s[11],e[12]=t[12]-s[12],e[13]=t[13]-s[13],e[14]=t[14]-s[14],e[15]=t[15]-s[15],e}function ji(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12]*s,e[13]=t[13]*s,e[14]=t[14]*s,e[15]=t[15]*s,e}function $i(e,t,s,r){return e[0]=t[0]+s[0]*r,e[1]=t[1]+s[1]*r,e[2]=t[2]+s[2]*r,e[3]=t[3]+s[3]*r,e[4]=t[4]+s[4]*r,e[5]=t[5]+s[5]*r,e[6]=t[6]+s[6]*r,e[7]=t[7]+s[7]*r,e[8]=t[8]+s[8]*r,e[9]=t[9]+s[9]*r,e[10]=t[10]+s[10]*r,e[11]=t[11]+s[11]*r,e[12]=t[12]+s[12]*r,e[13]=t[13]+s[13]*r,e[14]=t[14]+s[14]*r,e[15]=t[15]+s[15]*r,e}function Xi(e,t){return 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]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Qi(e,t){let s=e[0],r=e[1],n=e[2],i=e[3],o=e[4],a=e[5],c=e[6],h=e[7],l=e[8],d=e[9],u=e[10],m=e[11],x=e[12],g=e[13],p=e[14],_=e[15],E=t[0],M=t[1],T=t[2],S=t[3],y=t[4],O=t[5],w=t[6],C=t[7],R=t[8],I=t[9],v=t[10],z=t[11],A=t[12],j=t[13],mt=t[14],ft=t[15];return Math.abs(s-E)<=1e-6*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(r-M)<=1e-6*Math.max(1,Math.abs(r),Math.abs(M))&&Math.abs(n-T)<=1e-6*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(i-S)<=1e-6*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(o-y)<=1e-6*Math.max(1,Math.abs(o),Math.abs(y))&&Math.abs(a-O)<=1e-6*Math.max(1,Math.abs(a),Math.abs(O))&&Math.abs(c-w)<=1e-6*Math.max(1,Math.abs(c),Math.abs(w))&&Math.abs(h-C)<=1e-6*Math.max(1,Math.abs(h),Math.abs(C))&&Math.abs(l-R)<=1e-6*Math.max(1,Math.abs(l),Math.abs(R))&&Math.abs(d-I)<=1e-6*Math.max(1,Math.abs(d),Math.abs(I))&&Math.abs(u-v)<=1e-6*Math.max(1,Math.abs(u),Math.abs(v))&&Math.abs(m-z)<=1e-6*Math.max(1,Math.abs(m),Math.abs(z))&&Math.abs(x-A)<=1e-6*Math.max(1,Math.abs(x),Math.abs(A))&&Math.abs(g-j)<=1e-6*Math.max(1,Math.abs(g),Math.abs(j))&&Math.abs(p-mt)<=1e-6*Math.max(1,Math.abs(p),Math.abs(mt))&&Math.abs(_-ft)<=1e-6*Math.max(1,Math.abs(_),Math.abs(ft))}var Hi=Bt,Ki=ur;function Ji(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function mr(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e}function fr(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e}function pr(e){let t=e[0],s=e[1],r=e[2],n=e[3];return Math.sqrt(t*t+s*s+r*r+n*n)}function xr(e){let t=e[0],s=e[1],r=e[2],n=e[3];return t*t+s*s+r*r+n*n}function gr(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=s*s+r*r+n*n+i*i;return o>0&&(o=1/Math.sqrt(o)),e[0]=s*o,e[1]=r*o,e[2]=n*o,e[3]=i*o,e}function _r(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function Tr(e,t,s,r){let n=t[0],i=t[1],o=t[2],a=t[3];return e[0]=n+r*(s[0]-n),e[1]=i+r*(s[1]-i),e[2]=o+r*(s[2]-o),e[3]=a+r*(s[3]-a),e}function Mr(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3];return e[0]=s[0]*r+s[4]*n+s[8]*i+s[12]*o,e[1]=s[1]*r+s[5]*n+s[9]*i+s[13]*o,e[2]=s[2]*r+s[6]*n+s[10]*i+s[14]*o,e[3]=s[3]*r+s[7]*n+s[11]*i+s[15]*o,e}function yr(e,t,s){let r=t[0],n=t[1],i=t[2],o=s[0],a=s[1],c=s[2],h=s[3],l=h*r+a*i-c*n,d=h*n+c*r-o*i,u=h*i+o*n-a*r,m=-o*r-a*n-c*i;return e[0]=l*h+m*-o+d*-c-u*-a,e[1]=d*h+m*-a+u*-o-l*-c,e[2]=u*h+m*-c+l*-a-d*-o,e[3]=t[3],e}var bc=function(){let e=Ji();return function(t,s,r,n,i,o){let a,c;for(s||(s=4),r||(r=0),n?c=Math.min(n*s+r,t.length):c=t.length,a=r;a<c;a+=s)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],e[3]=t[a+3],i(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2],t[a+3]=e[3];return t}}();var ps;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(ps||(ps={}));var eo=45*Math.PI/180,so=1,ms=.1,fs=500,ro=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),P=class extends bt{static get IDENTITY(){return io()}static get ZERO(){return no()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return ps}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,s,r,n,i,o,a,c,h,l,d,u,m,x,g,p){return this[0]=t,this[1]=s,this[2]=r,this[3]=n,this[4]=i,this[5]=o,this[6]=a,this[7]=c,this[8]=h,this[9]=l,this[10]=d,this[11]=u,this[12]=m,this[13]=x,this[14]=g,this[15]=p,this.check()}setRowMajor(t,s,r,n,i,o,a,c,h,l,d,u,m,x,g,p){return this[0]=t,this[1]=i,this[2]=h,this[3]=m,this[4]=s,this[5]=o,this[6]=l,this[7]=x,this[8]=r,this[9]=a,this[10]=d,this[11]=g,this[12]=n,this[13]=c,this[14]=u,this[15]=p,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(ro)}fromObject(t){return this.check()}fromQuaternion(t){return cs(this,t),this.check()}frustum(t){let{left:s,right:r,bottom:n,top:i,near:o=ms,far:a=fs}=t;return a===1/0?oo(this,s,r,n,i,o):hs(this,s,r,n,i,o,a),this.check()}lookAt(t){let{eye:s,center:r=[0,0,0],up:n=[0,1,0]}=t;return us(this,s,r,n),this.check()}ortho(t){let{left:s,right:r,bottom:n,top:i,near:o=ms,far:a=fs}=t;return ds(this,s,r,n,i,o,a),this.check()}orthographic(t){let{fovy:s=eo,aspect:r=so,focalDistance:n=1,near:i=ms,far:o=fs}=t;Sr(s);let a=s/2,c=n*Math.tan(a),h=c*r;return this.ortho({left:-h,right:h,bottom:-c,top:c,near:i,far:o})}perspective(t){let{fovy:s=45*Math.PI/180,aspect:r=1,near:n=.1,far:i=500}=t;return Sr(s),ls(this,s,r,n,i),this.check()}determinant(){return es(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let r=this.getScale(s),n=1/r[0],i=1/r[1],o=1/r[2];return t[0]=this[0]*n,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*n,t[5]=this[5]*i,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*n,t[9]=this[9]*i,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let r=this.getScale(s),n=1/r[0],i=1/r[1],o=1/r[2];return t[0]=this[0]*n,t[1]=this[1]*i,t[2]=this[2]*o,t[3]=this[4]*n,t[4]=this[5]*i,t[5]=this[6]*o,t[6]=this[8]*n,t[7]=this[9]*i,t[8]=this[10]*o,t}transpose(){return Je(this,this),this.check()}invert(){return ts(this,this),this.check()}multiplyLeft(t){return Bt(this,t,this),this.check()}multiplyRight(t){return Bt(this,this,t),this.check()}rotateX(t){return is(this,this,t),this.check()}rotateY(t){return os(this,this,t),this.check()}rotateZ(t){return as(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,s){return ns(this,this,t,s),this.check()}scale(t){return rs(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return ss(this,this,t),this.check()}transform(t,s){return t.length===4?(s=Mr(s||[-0,-0,-0,-0],t,this),lt(s,4),s):this.transformAsPoint(t,s)}transformAsPoint(t,s){let{length:r}=t,n;switch(r){case 2:n=Ws(s||[-0,-0],t,this);break;case 3:n=xt(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return lt(n,t.length),n}transformAsVector(t,s){let r;switch(t.length){case 2:r=Ys(s||[-0,-0],t,this);break;case 3:r=re(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return lt(r,t.length),r}transformPoint(t,s){return this.transformAsPoint(t,s)}transformVector(t,s){return this.transformAsPoint(t,s)}transformDirection(t,s){return this.transformAsVector(t,s)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,s,r){return this.identity().translate([t,s,r])}},de,ue;function no(){return de||(de=new P([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(de)),de}function io(){return ue||(ue=new P,Object.freeze(ue)),ue}function Sr(e){if(e>Math.PI*2)throw Error("expected radians")}function oo(e,t,s,r,n,i){let o=2*i/(s-t),a=2*i/(n-r),c=(s+t)/(s-t),h=(n+r)/(n-r),l=-1,d=-1,u=-2*i;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=c,e[9]=h,e[10]=l,e[11]=d,e[12]=0,e[13]=0,e[14]=u,e[15]=0,e}function Er(){let e=new V(4);return V!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function Rr(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function xs(e,t,s){s=s*.5;let r=Math.sin(s);return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(s),e}function gs(e,t,s){let r=t[0],n=t[1],i=t[2],o=t[3],a=s[0],c=s[1],h=s[2],l=s[3];return e[0]=r*l+o*a+n*h-i*c,e[1]=n*l+o*c+i*a-r*h,e[2]=i*l+o*h+r*c-n*a,e[3]=o*l-r*a-n*c-i*h,e}function wr(e,t,s){s*=.5;let r=t[0],n=t[1],i=t[2],o=t[3],a=Math.sin(s),c=Math.cos(s);return e[0]=r*c+o*a,e[1]=n*c+i*a,e[2]=i*c-n*a,e[3]=o*c-r*a,e}function br(e,t,s){s*=.5;let r=t[0],n=t[1],i=t[2],o=t[3],a=Math.sin(s),c=Math.cos(s);return e[0]=r*c-i*a,e[1]=n*c+o*a,e[2]=i*c+r*a,e[3]=o*c-n*a,e}function Cr(e,t,s){s*=.5;let r=t[0],n=t[1],i=t[2],o=t[3],a=Math.sin(s),c=Math.cos(s);return e[0]=r*c+n*a,e[1]=n*c-r*a,e[2]=i*c+o*a,e[3]=o*c-i*a,e}function Ar(e,t){let s=t[0],r=t[1],n=t[2];return e[0]=s,e[1]=r,e[2]=n,e[3]=Math.sqrt(Math.abs(1-s*s-r*r-n*n)),e}function Wt(e,t,s,r){let n=t[0],i=t[1],o=t[2],a=t[3],c=s[0],h=s[1],l=s[2],d=s[3],u,m,x,g,p;return u=n*c+i*h+o*l+a*d,u<0&&(u=-u,c=-c,h=-h,l=-l,d=-d),1-u>1e-6?(m=Math.acos(u),p=Math.sin(m),x=Math.sin((1-r)*m)/p,g=Math.sin(r*m)/p):(x=1-r,g=r),e[0]=x*n+g*c,e[1]=x*i+g*h,e[2]=x*o+g*l,e[3]=x*a+g*d,e}function Or(e,t){let s=t[0],r=t[1],n=t[2],i=t[3],o=s*s+r*r+n*n+i*i,a=o?1/o:0;return e[0]=-s*a,e[1]=-r*a,e[2]=-n*a,e[3]=i*a,e}function Pr(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function _s(e,t){let s=t[0]+t[4]+t[8],r;if(s>0)r=Math.sqrt(s+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{let n=0;t[4]>t[0]&&(n=1),t[8]>t[n*3+n]&&(n=2);let i=(n+1)%3,o=(n+2)%3;r=Math.sqrt(t[n*3+n]-t[i*3+i]-t[o*3+o]+1),e[n]=.5*r,r=.5/r,e[3]=(t[i*3+o]-t[o*3+i])*r,e[i]=(t[i*3+n]+t[n*3+i])*r,e[o]=(t[o*3+n]+t[n*3+o])*r}return e}var Nr=mr;var Lr=fr,Ir=_r,vr=Tr,zr=pr;var qr=xr;var Vr=gr;var Dr=function(){let e=ie(),t=oe(1,0,0),s=oe(0,1,0);return function(r,n,i){let o=Dt(n,i);return o<-.999999?(pt(e,t,n),$e(e)<1e-6&&pt(e,s,n),We(e,e),xs(r,e,Math.PI),r):o>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(pt(e,n,i),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+o,Vr(r,r))}}(),Fc=function(){let e=Er(),t=Er();return function(s,r,n,i,o,a){return Wt(e,r,o,a),Wt(t,n,i,a),Wt(s,e,t,2*a*(1-a)),s}}(),Bc=function(){let e=tr();return function(t,s,r,n){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=n[0],e[4]=n[1],e[7]=n[2],e[2]=-s[0],e[5]=-s[1],e[8]=-s[2],Vr(t,_s(t,e))}}();var ao=[0,0,0,1],dt=class extends ht{constructor(t=0,s=0,r=0,n=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,s,r,n)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,s,r,n){return this[0]=t,this[1]=s,this[2]=r,this[3]=n,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return _s(this,t),this.check()}fromAxisRotation(t,s){return xs(this,t,s),this.check()}identity(){return Rr(this),this.check()}setAxisAngle(t,s){return this.fromAxisRotation(t,s)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=N(t)}get y(){return this[1]}set y(t){this[1]=N(t)}get z(){return this[2]}set z(t){this[2]=N(t)}get w(){return this[3]}set w(t){this[3]=N(t)}len(){return zr(this)}lengthSquared(){return qr(this)}dot(t){return Ir(this,t)}rotationTo(t,s){return Dr(this,t,s),this.check()}add(t){return Nr(this,this,t),this.check()}calculateW(){return Ar(this,this),this.check()}conjugate(){return Pr(this,this),this.check()}invert(){return Or(this,this),this.check()}lerp(t,s,r){return r===void 0?this.lerp(this,t,s):(vr(this,t,s,r),this.check())}multiplyRight(t){return gs(this,this,t),this.check()}multiplyLeft(t){return gs(this,t,this),this.check()}normalize(){let t=this.len(),s=t>0?1/t:0;return this[0]=this[0]*s,this[1]=this[1]*s,this[2]=this[2]*s,this[3]=this[3]*s,t===0&&(this[3]=1),this.check()}rotateX(t){return wr(this,this,t),this.check()}rotateY(t){return br(this,this,t),this.check()}rotateZ(t){return Cr(this,this,t),this.check()}scale(t){return Lr(this,this,t),this.check()}slerp(t,s,r){let n,i,o;switch(arguments.length){case 1:({start:n=ao,target:i,ratio:o}=t);break;case 2:n=this,i=t,o=s;break;default:n=t,i=s,o=r}return Wt(this,n,i,o),this.check()}transformVector4(t,s=new wt){return yr(s,t,this),lt(s,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,s){return this.setAxisAngle(t,s)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var it={};qt(it,{EPSILON1:()=>co,EPSILON10:()=>_o,EPSILON11:()=>To,EPSILON12:()=>Mo,EPSILON13:()=>yo,EPSILON14:()=>So,EPSILON15:()=>Eo,EPSILON16:()=>Ro,EPSILON17:()=>wo,EPSILON18:()=>bo,EPSILON19:()=>Co,EPSILON2:()=>ho,EPSILON20:()=>Ao,EPSILON3:()=>lo,EPSILON4:()=>uo,EPSILON5:()=>mo,EPSILON6:()=>fo,EPSILON7:()=>po,EPSILON8:()=>xo,EPSILON9:()=>go,PI_OVER_FOUR:()=>Po,PI_OVER_SIX:()=>No,PI_OVER_TWO:()=>Oo,TWO_PI:()=>Lo});var co=.1,ho=.01,lo=.001,uo=1e-4,mo=1e-5,fo=1e-6,po=1e-7,xo=1e-8,go=1e-9,_o=1e-10,To=1e-11,Mo=1e-12,yo=1e-13,So=1e-14,Eo=1e-15,Ro=1e-16,wo=1e-17,bo=1e-18,Co=1e-19,Ao=1e-20,Oo=Math.PI/2,Po=Math.PI/4,No=Math.PI/6,Lo=Math.PI*2;var ot=6356752314245179e-9,vo={radii:[6378137,6378137,ot],radiiSquared:[6378137*6378137,6378137*6378137,ot*ot],oneOverRadii:[1/6378137,1/6378137,1/ot],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(ot*ot)],maximumRadius:Math.max(6378137,6378137,ot),centerToleranceSquared:.1};function me(e){return e}var xh=new f;function zo(e,t=[],s=me){return"longitude"in e?(t[0]=s(e.longitude),t[1]=s(e.latitude),t[2]=e.height):"x"in e?(t[0]=s(e.x),t[1]=s(e.y),t[2]=e.z):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function Ur(e,t=[]){return zo(e,t,q._cartographicRadians?me:Be)}function qo(e,t,s=me){return"longitude"in t?(t.longitude=s(e[0]),t.latitude=s(e[1]),t.height=e[2]):"x"in t?(t.x=s(e[0]),t.y=s(e[1]),t.z=e[2]):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function Fr(e,t){return qo(e,t,q._cartographicRadians?me:ke)}var Br=1e-14,Vo=new f,kr={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"}},Ts={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Yt={east:new f,north:new f,up:new f,west:new f,south:new f,down:new f},Do=new f,Uo=new f,Fo=new f;function Ms(e,t,s,r,n,i){let o=kr[t]&&kr[t][s];F(o&&(!r||r===o));let a,c,h,l=Vo.copy(n);if(X(l.x,0,Br)&&X(l.y,0,Br)){let u=Math.sign(l.z);a=Do.fromArray(Ts[t]),t!=="east"&&t!=="west"&&a.scale(u),c=Uo.fromArray(Ts[s]),s!=="east"&&s!=="west"&&c.scale(u),h=Fo.fromArray(Ts[r]),r!=="east"&&r!=="west"&&h.scale(u)}else{let{up:u,east:m,north:x}=Yt;m.set(-l.y,l.x,0).normalize(),e.geodeticSurfaceNormal(l,u),x.copy(u).cross(m);let{down:g,west:p,south:_}=Yt;g.copy(u).scale(-1),p.copy(m).scale(-1),_.copy(x).scale(-1),a=Yt[t],c=Yt[s],h=Yt[r]}return i[0]=a.x,i[1]=a.y,i[2]=a.z,i[3]=0,i[4]=c.x,i[5]=c.y,i[6]=c.z,i[7]=0,i[8]=h.x,i[9]=h.y,i[10]=h.z,i[11]=0,i[12]=l.x,i[13]=l.y,i[14]=l.z,i[15]=1,i}var Ct=new f,Bo=new f,ko=new f;function Wr(e,t,s=[]){let{oneOverRadii:r,oneOverRadiiSquared:n,centerToleranceSquared:i}=t;Ct.from(e);let o=Ct.x,a=Ct.y,c=Ct.z,h=r.x,l=r.y,d=r.z,u=o*o*h*h,m=a*a*l*l,x=c*c*d*d,g=u+m+x,p=Math.sqrt(1/g);if(!Number.isFinite(p))return;let _=Bo;if(_.copy(e).scale(p),g<i)return _.to(s);let E=n.x,M=n.y,T=n.z,S=ko;S.set(_.x*E*2,_.y*M*2,_.z*T*2);let y=(1-p)*Ct.len()/(.5*S.len()),O=0,w,C,R,I;do{y-=O,w=1/(1+y*E),C=1/(1+y*M),R=1/(1+y*T);let v=w*w,z=C*C,A=R*R,j=v*w,mt=z*C,ft=A*R;I=u*v+m*z+x*A-1;let Jt=-2*(u*j*E+m*mt*M+x*ft*T);O=I/Jt}while(Math.abs(I)>it.EPSILON12);return Ct.scale([w,C,R]).to(s)}var fe=new f,Yr=new f,Go=new f,H=new f,Zo=new f,pe=new f,b=class{constructor(t=0,s=0,r=0){this.centerToleranceSquared=it.EPSILON1,F(t>=0),F(s>=0),F(r>=0),this.radii=new f(t,s,r),this.radiiSquared=new f(t*t,s*s,r*r),this.radiiToTheFourth=new f(t*t*t*t,s*s*s*s,r*r*r*r),this.oneOverRadii=new f(t===0?0:1/t,s===0?0:1/s,r===0?0:1/r),this.oneOverRadiiSquared=new f(t===0?0:1/(t*t),s===0?0:1/(s*s),r===0?0:1/(r*r)),this.minimumRadius=Math.min(t,s,r),this.maximumRadius=Math.max(t,s,r),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(t){return this===t||Boolean(t&&this.radii.equals(t.radii))}toString(){return this.radii.toString()}cartographicToCartesian(t,s=[0,0,0]){let r=Yr,n=Go,[,,i]=t;this.geodeticSurfaceNormalCartographic(t,r),n.copy(this.radiiSquared).scale(r);let o=Math.sqrt(r.dot(n));return n.scale(1/o),r.scale(i),n.add(r),n.to(s)}cartesianToCartographic(t,s=[0,0,0]){pe.from(t);let r=this.scaleToGeodeticSurface(pe,H);if(!r)return;let n=this.geodeticSurfaceNormal(r,Yr),i=Zo;i.copy(pe).subtract(r);let o=Math.atan2(n.y,n.x),a=Math.asin(n.z),c=Math.sign(gt.dot(i,pe))*gt.length(i);return Fr([o,a,c],s)}eastNorthUpToFixedFrame(t,s=new P){return Ms(this,"east","north","up",t,s)}localFrameToFixedFrame(t,s,r,n,i=new P){return Ms(this,t,s,r,n,i)}geocentricSurfaceNormal(t,s=[0,0,0]){return fe.from(t).normalize().to(s)}geodeticSurfaceNormalCartographic(t,s=[0,0,0]){let r=Ur(t),n=r[0],i=r[1],o=Math.cos(i);return fe.set(o*Math.cos(n),o*Math.sin(n),Math.sin(i)).normalize(),fe.to(s)}geodeticSurfaceNormal(t,s=[0,0,0]){return fe.from(t).scale(this.oneOverRadiiSquared).normalize().to(s)}scaleToGeodeticSurface(t,s){return Wr(t,this,s)}scaleToGeocentricSurface(t,s=[0,0,0]){H.from(t);let r=H.x,n=H.y,i=H.z,o=this.oneOverRadiiSquared,a=1/Math.sqrt(r*r*o.x+n*n*o.y+i*i*o.z);return H.multiplyScalar(a).to(s)}transformPositionToScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.oneOverRadii).to(s)}transformPositionFromScaledSpace(t,s=[0,0,0]){return H.from(t).scale(this.radii).to(s)}getSurfaceNormalIntersectionWithZAxis(t,s=0,r=[0,0,0]){F(X(this.radii.x,this.radii.y,it.EPSILON15)),F(this.radii.z>0),H.from(t);let n=H.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(n)>=this.radii.z-s))return H.set(0,0,n).to(r)}};b.WGS84=new b(6378137,6378137,ot);function Gt(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var _t=class{constructor(t,s){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=s,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Gt(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Gt()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var st=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,s="count"){return this._getOrCreate({name:t,type:s})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let s of Object.values(this.stats))t(s)}getTable(){let t={};return this.forEach(s=>{t[s.name]={time:s.time||0,count:s.count||0,average:s.getAverageTime()||0,hz:s.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(s=>this._getOrCreate(s))}_getOrCreate(t){let{name:s,type:r}=t,n=this.stats[s];return n||(t instanceof _t?n=t:n=new _t(s,r),this.stats[s]=n),n}};function K(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var jo="Queued Requests",$o="Active Requests",Xo="Cancelled Requests",Qo="Queued Requests Ever",Ho="Active Requests Ever",Ko={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},at=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...Ko,...t},this.stats=new st({id:this.props.id}),this.stats.get(jo),this.stats.get($o),this.stats.get(Xo),this.stats.get(Qo),this.stats.get(Ho)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,s=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let r={handle:t,priority:0,getPriority:s},n=new Promise(i=>(r.resolve=i,r));return this.requestQueue.push(r),this.requestMap.set(t,n),this._issueNewRequests(),n}_issueRequest(t){let{handle:s,resolve:r}=t,n=!1,i=()=>{n||(n=!0,this.requestMap.delete(s),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,r?r({done:i}):Promise.resolve({done:i})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let s=0;s<t;++s){let r=this.requestQueue.shift();r&&this._issueRequest(r)}}}_updateAllRequests(){let t=this.requestQueue;for(let s=0;s<t.length;++s){let r=t[s];this._updateRequest(r)||(t.splice(s,1),this.requestMap.delete(r.handle),s--)}t.sort((s,r)=>s.priority-r.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Q={};qt(Q,{dirname:()=>ta,filename:()=>Jo,join:()=>ea,resolve:()=>sa});function Gr(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Jo(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function ta(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function ea(...e){let t="/";return e=e.map((s,r)=>(r&&(s=s.replace(new RegExp(`^${t}`),"")),r!==e.length-1&&(s=s.replace(new RegExp(`${t}$`),"")),s)),e.join(t)}function sa(...e){let t=[];for(let i=0;i<e.length;i++)t[i]=e[i];let s="",r=!1,n;for(let i=t.length-1;i>=-1&&!r;i--){let o;i>=0?o=t[i]:(n===void 0&&(n=Gr()),o=n),o.length!==0&&(s=`${o}/${s}`,r=o.charCodeAt(0)===Zt)}return s=ra(s,!r),r?`/${s}`:s.length>0?s:"."}var Zt=47,ys=46;function ra(e,t){let s="",r=-1,n=0,i,o=!1;for(let a=0;a<=e.length;++a){if(a<e.length)i=e.charCodeAt(a);else{if(i===Zt)break;i=Zt}if(i===Zt){if(!(r===a-1||n===1))if(r!==a-1&&n===2){if(s.length<2||!o||s.charCodeAt(s.length-1)!==ys||s.charCodeAt(s.length-2)!==ys){if(s.length>2){let c=s.length-1,h=c;for(;h>=0&&s.charCodeAt(h)!==Zt;--h);if(h!==c){s=h===-1?"":s.slice(0,h),r=a,n=0,o=!1;continue}}else if(s.length===2||s.length===1){s="",r=a,n=0,o=!1;continue}}t&&(s.length>0?s+="/..":s="..",o=!0)}else{let c=e.slice(r+1,a);s.length>0?s+=`/${c}`:s=c,o=!1}r=a,n=0}else i===ys&&n!==-1?++n:n=-1}return s}var At=class{handle;size;bigsize;url;constructor(t){this.handle=t instanceof ArrayBuffer?new Blob([t]):t,this.size=t instanceof ArrayBuffer?t.byteLength:t.size,this.bigsize=BigInt(this.size),this.url=t instanceof File?t.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(t,s){return await this.handle.slice(Number(t),Number(t)+Number(s)).arrayBuffer()}};var jt=class{handle;size=0;bigsize=0n;url;constructor(t){this.handle=t,this.url=t}async close(){}async stat(){let t=await fetch(this.handle,{method:"HEAD"});if(!t.ok)throw new Error(`Failed to fetch HEAD ${this.handle}`);let s=parseInt(t.headers.get("Content-Length")||"0");return{size:s,bigsize:BigInt(s),isDirectory:!1}}async read(t=0,s=0){return await(await this.fetchRange(t,s)).arrayBuffer()}async fetchRange(t,s,r){let n=Number(t),i=Number(s),o;r||(o=new AbortController,r=o.signal);let a=this.handle,c=await fetch(a,{signal:r,headers:{Range:`bytes=${n}-${n+i-1}`}});switch(c.status){case 206:break;case 200:let h=c.headers.get("Content-Length");if(!h||Number(h)>s)throw o&&o.abort(),Error("content-length header missing or exceeding request. Server must support HTTP Byte Serving.");case 416:if(t===0){let l=c.headers.get("Content-Range");if(!l||!l.startsWith("bytes *"))throw Error("Missing content-length on 416 response");let d=Number(l.substr(8));c=await fetch(this.url,{signal:r,headers:{Range:`bytes=0-${d-1}`}})}break;default:if(c.status>=300)throw Error(`Bad response code: ${c.status}`)}return c}};var xe=class{item;previous;next;constructor(t,s,r){this.item=t,this.previous=s,this.next=r}};var ge=class{head=null;tail=null;_length=0;get length(){return this._length}add(t){let s=new xe(t,this.tail,null);return this.tail?(this.tail.next=s,this.tail=s):(this.head=s,this.tail=s),++this._length,s}remove(t){t&&(t.previous&&t.next?(t.previous.next=t.next,t.next.previous=t.previous):t.previous?(t.previous.next=null,this.tail=t.previous):t.next?(t.next.previous=null,this.head=t.next):(this.head=null,this.tail=null),t.next=null,t.previous=null,--this._length)}splice(t,s){t!==s&&(this.remove(s),this._insert(t,s))}_insert(t,s){let r=t.next;t.next=s,this.tail===t?this.tail=s:r.previous=s,s.next=r,s.previous=t,++this._length}};var Ot=class{_list;_sentinel;_trimTiles;constructor(){this._list=new ge,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(t){let s=t._cacheNode;s&&this._list.splice(this._sentinel,s)}add(t,s,r){s._cacheNode||(s._cacheNode=this._list.add(s),r&&r(t,s))}unloadTile(t,s,r){let n=s._cacheNode;n&&(this._list.remove(n),s._cacheNode=null,r&&r(t,s))}unloadTiles(t,s){let r=this._trimTiles;this._trimTiles=!1;let n=this._list,i=t.maximumMemoryUsage*1024*1024,o=this._sentinel,a=n.head;for(;a!==o&&(t.gpuMemoryUsageInBytes>i||r);){let c=a.item;a=a.next,this.unloadTile(t,c,s)}}trim(){this._trimTiles=!0}};function _e(e,t){K(e),K(t);let{rtcCenter:s,gltfUpAxis:r}=t,{computedTransform:n,boundingVolume:{center:i}}=e,o=new P(n);switch(s&&o.translate(s),r){case"Z":break;case"Y":let u=new P().rotateX(Math.PI/2);o=o.multiplyRight(u);break;case"X":let m=new P().rotateY(-Math.PI/2);o=o.multiplyRight(m);break;default:break}t.isQuantized&&o.translate(t.quantizedVolumeOffset).scale(t.quantizedVolumeScale);let a=new f(i);t.cartesianModelMatrix=o,t.cartesianOrigin=a;let c=b.WGS84.cartesianToCartographic(a,new f),l=b.WGS84.eastNorthUpToFixedFrame(a).invert();t.cartographicModelMatrix=l.multiplyRight(o),t.cartographicOrigin=c;let d=ia(t);d&&(t.cartesianModelMatrix=new P(o).multiplyRight(d.matrix),t.cartographicModelMatrix.multiplyRight(d.matrix),d.matrix=P.IDENTITY),t.coordinateSystem||(t.modelMatrix=t.cartographicModelMatrix)}var na=1e6**2;function ia(e){let t=e.gltf;if(!t)return null;let s=typeof t.scene=="number"?t.scene:0,n=t.scenes?.[s]?.nodes?.[0];if(!n?.matrix)return null;let i=n.matrix;return i[12]*i[12]+i[13]*i[13]+i[14]*i[14]<=na?null:n}var B={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var dl=new f,ul=new f;var $t=new f,Zr=new f,G=class{constructor(t=[0,0,0],s=0){this.radius=-0,this.center=new f,this.fromCenterRadius(t,s)}fromCenterRadius(t,s){return this.center.from(t),this.radius=s,this}fromCornerPoints(t,s){return s=$t.from(s),this.center=new f().from(t).add(s).scale(.5),this.radius=this.center.distance(s),this}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new G(this.center,this.radius)}union(t){let s=this.center,r=this.radius,n=t.center,i=t.radius,o=$t.copy(n).subtract(s),a=o.magnitude();if(r>=a+i)return this.clone();if(i>=a+r)return t.clone();let c=(r+a+i)*.5;return Zr.copy(o).scale((-r+c)/a).add(s),this.center.copy(Zr),this.radius=c,this}expand(t){let r=$t.from(t).subtract(this.center).magnitude();return r>this.radius&&(this.radius=r),this}transform(t){this.center.transform(t);let s=kt.getScaling($t,t);return this.radius=Math.max(s[0],Math.max(s[1],s[2]))*this.radius,this}distanceSquaredTo(t){let s=this.distanceTo(t);return s*s}distanceTo(t){let r=$t.from(t).subtract(this.center);return Math.max(0,r.len()-this.radius)}intersectPlane(t){let s=this.center,r=this.radius,i=t.normal.dot(s)+t.distance;return i<-r?B.OUTSIDE:i<r?B.INTERSECTING:B.INSIDE}};var oa=new f,aa=new f,Te=new f,Me=new f,ye=new f,ca=new f,ha=new f,ct={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},rt=class{constructor(t=[0,0,0],s=[0,0,0,0,0,0,0,0,0]){this.center=new f().from(t),this.halfAxes=new D(s)}get halfSize(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),r=this.halfAxes.getColumn(2);return[new f(t).len(),new f(s).len(),new f(r).len()]}get quaternion(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),r=this.halfAxes.getColumn(2),n=new f(t).normalize(),i=new f(s).normalize(),o=new f(r).normalize();return new dt().fromMatrix3(new D([...n,...i,...o]))}fromCenterHalfSizeQuaternion(t,s,r){let n=new dt(r),i=new D().fromQuaternion(n);return i[0]=i[0]*s[0],i[1]=i[1]*s[0],i[2]=i[2]*s[0],i[3]=i[3]*s[1],i[4]=i[4]*s[1],i[5]=i[5]*s[1],i[6]=i[6]*s[2],i[7]=i[7]*s[2],i[8]=i[8]*s[2],this.center=new f().from(t),this.halfAxes=i,this}clone(){return new rt(this.center,this.halfAxes)}equals(t){return this===t||Boolean(t)&&this.center.equals(t.center)&&this.halfAxes.equals(t.halfAxes)}getBoundingSphere(t=new G){let s=this.halfAxes,r=s.getColumn(0,Te),n=s.getColumn(1,Me),i=s.getColumn(2,ye),o=oa.copy(r).add(n).add(i);return t.center.copy(this.center),t.radius=o.magnitude(),t}intersectPlane(t){let s=this.center,r=t.normal,n=this.halfAxes,i=r.x,o=r.y,a=r.z,c=Math.abs(i*n[ct.COLUMN0ROW0]+o*n[ct.COLUMN0ROW1]+a*n[ct.COLUMN0ROW2])+Math.abs(i*n[ct.COLUMN1ROW0]+o*n[ct.COLUMN1ROW1]+a*n[ct.COLUMN1ROW2])+Math.abs(i*n[ct.COLUMN2ROW0]+o*n[ct.COLUMN2ROW1]+a*n[ct.COLUMN2ROW2]),h=r.dot(s)+t.distance;return h<=-c?B.OUTSIDE:h>=c?B.INSIDE:B.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let s=aa.from(t).subtract(this.center),r=this.halfAxes,n=r.getColumn(0,Te),i=r.getColumn(1,Me),o=r.getColumn(2,ye),a=n.magnitude(),c=i.magnitude(),h=o.magnitude();n.normalize(),i.normalize(),o.normalize();let l=0,d;return d=Math.abs(s.dot(n))-a,d>0&&(l+=d*d),d=Math.abs(s.dot(i))-c,d>0&&(l+=d*d),d=Math.abs(s.dot(o))-h,d>0&&(l+=d*d),l}computePlaneDistances(t,s,r=[-0,-0]){let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=this.center,a=this.halfAxes,c=a.getColumn(0,Te),h=a.getColumn(1,Me),l=a.getColumn(2,ye),d=ca.copy(c).add(h).add(l).add(o),u=ha.copy(d).subtract(t),m=s.dot(u);return n=Math.min(m,n),i=Math.max(m,i),d.copy(o).add(c).add(h).subtract(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),d.copy(o).add(c).subtract(h).add(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),d.copy(o).add(c).subtract(h).subtract(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),o.copy(d).subtract(c).add(h).add(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),o.copy(d).subtract(c).add(h).subtract(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),o.copy(d).subtract(c).subtract(h).add(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),o.copy(d).subtract(c).subtract(h).subtract(l),u.copy(d).subtract(t),m=s.dot(u),n=Math.min(m,n),i=Math.max(m,i),r[0]=n,r[1]=i,r}transform(t){this.center.transformAsPoint(t);let s=this.halfAxes.getColumn(0,Te);s.transformAsPoint(t);let r=this.halfAxes.getColumn(1,Me);r.transformAsPoint(t);let n=this.halfAxes.getColumn(2,ye);return n.transformAsPoint(t),this.halfAxes=new D([...s,...r,...n]),this}getTransform(){throw new Error("not implemented")}};var jr=new f,$r=new f,k=class{constructor(t=[0,0,1],s=0){this.normal=new f,this.distance=-0,this.fromNormalDistance(t,s)}fromNormalDistance(t,s){return F(Number.isFinite(s)),this.normal.from(t).normalize(),this.distance=s,this}fromPointNormal(t,s){t=jr.from(t),this.normal.from(s).normalize();let r=-this.normal.dot(t);return this.distance=r,this}fromCoefficients(t,s,r,n){return this.normal.set(t,s,r),F(X(this.normal.len(),1)),this.distance=n,this}clone(){return new k(this.normal,this.distance)}equals(t){return X(this.distance,t.distance)&&X(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let s=$r.copy(this.normal).transformAsVector(t).normalize(),r=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(r,s)}projectPointOntoPlane(t,s=[0,0,0]){let r=jr.from(t),n=this.getPointDistance(r),i=$r.copy(this.normal).scale(n);return r.subtract(i).to(s)}};var Xr=[new f([1,0,0]),new f([0,1,0]),new f([0,0,1])],Qr=new f,la=new f,U=class{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*Xr.length;let s=t.center,r=t.radius,n=0;for(let i of Xr){let o=this.planes[n],a=this.planes[n+1];o||(o=this.planes[n]=new k),a||(a=this.planes[n+1]=new k);let c=Qr.copy(i).scale(-r).add(s);o.fromPointNormal(c,i);let h=Qr.copy(i).scale(r).add(s),l=la.copy(i).negate();a.fromPointNormal(h,l),n+=2}return this}computeVisibility(t){let s=B.INSIDE;for(let r of this.planes)switch(t.intersectPlane(r)){case B.OUTSIDE:return B.OUTSIDE;case B.INTERSECTING:s=B.INTERSECTING;break;default:}return s}computeVisibilityWithPlaneMask(t,s){if(F(Number.isFinite(s),"parentPlaneMask is required."),s===U.MASK_OUTSIDE||s===U.MASK_INSIDE)return s;let r=U.MASK_INSIDE,n=this.planes;for(let i=0;i<this.planes.length;++i){let o=i<31?1<<i:0;if(i<31&&!(s&o))continue;let a=n[i],c=t.intersectPlane(a);if(c===B.OUTSIDE)return U.MASK_OUTSIDE;c===B.INTERSECTING&&(r|=o)}return r}};U.MASK_OUTSIDE=4294967295;U.MASK_INSIDE=0;U.MASK_INDETERMINATE=2147483647;var Pl=new f,Nl=new f,Ll=new f,Il=new f,vl=new f;var Fl=new f,Bl=new f,kl=new f,Wl=new f,Yl=new f,Gl=new f,Zl=new f,jl=new f,$l=new f,Xl=new f,Ql=new f,Hl=new f;var td=new D,ed=new D,sd=new D,rd=new D,nd=new D;var ld=new f,dd=new f,ud=new f,md=new f,fd=new f,pd=new D,xd={diagonal:new D,unitary:new D};var Hr=new f,Ss=new f,Es=new U([new k,new k,new k,new k,new k,new k]);function Ee(e,t){let{cameraDirection:s,cameraUp:r,height:n}=e,{metersPerUnit:i}=e.distanceScales,o=Se(e,e.center),a=b.WGS84.eastNorthUpToFixedFrame(o),c=e.unprojectPosition(e.cameraPosition),h=b.WGS84.cartographicToCartesian(c,new f),l=new f(a.transformAsVector(new f(s).scale(i))).normalize(),d=new f(a.transformAsVector(new f(r).scale(i))).normalize();fa(e);let u=e.constructor,{longitude:m,latitude:x,width:g,bearing:p,zoom:_}=e,E=new u({longitude:m,latitude:x,height:n,width:g,bearing:p,zoom:_,pitch:0});return{camera:{position:h,direction:l,up:d},viewport:e,topDownViewport:E,height:n,cullingVolume:Es,frameNumber:t,sseDenominator:1.15}}function Jr(e,t,s){if(s===0||e.length<=s)return[e,[]];let r=[],{longitude:n,latitude:i}=t.viewport;for(let[h,l]of e.entries()){let[d,u]=l.header.mbs,m=Math.abs(n-d),x=Math.abs(i-u),g=Math.sqrt(x*x+m*m);r.push([h,g])}let o=r.sort((h,l)=>h[1]-l[1]),a=[];for(let h=0;h<s;h++)a.push(e[o[h][0]]);let c=[];for(let h=s;h<o.length;h++)c.push(e[o[h][0]]);return[a,c]}function fa(e){let t=e.getFrustumPlanes(),s=Kr(t.near,e.cameraPosition),r=Se(e,s),n=Se(e,e.cameraPosition,Ss),i=0;Es.planes[i++].fromPointNormal(r,Hr.copy(r).subtract(n));for(let o in t){if(o==="near")continue;let a=t[o],c=Kr(a,s,Ss),h=Se(e,c,Ss);Es.planes[i++].fromPointNormal(h,Hr.copy(r).subtract(h))}}function Kr(e,t,s=new f){let r=e.normal.dot(t);return s.copy(e.normal).scale(e.distance-r).add(t),s}function Se(e,t,s=new f){let r=e.unprojectPosition(t);return b.WGS84.cartographicToCartesian(r,s)}function Re(e){return Boolean(e&&typeof e=="object"&&"initialize"in e&&"getRootTileset"in e&&"initializeTileHeaders"in e&&"loadTileContent"in e)}var pa={description:"",ellipsoid:b.WGS84,modelMatrix:new P,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,memoryCacheOverflow:1,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,memoryAdjustedScreenSpaceError:!1,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},Rs="Tiles In Tileset(s)",ws="Tiles In Memory",tn="Tiles In View",en="Tiles To Render",sn="Tiles Loaded",bs="Tiles Loading",rn="Tiles Unloaded",nn="Failed Tile Loads",on="Points/Vertices",Cs="Tile Memory Use",an="Maximum Screen Space Error",we=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;maximumMemoryUsage=32;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=0;_cacheOverflowBytes=0;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_traverser;_cache=new Ot;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(t,s){if(this.options={...pa,...s},this.loadOptions=this.options.loadOptions||{},!Re(t))throw new Error("Tileset3D requires a Tileset3DSource instance");this.source=t,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new at({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=this.options.maximumMemoryUsage*1024*1024,this._cacheOverflowBytes=this.options.memoryCacheOverflow*1024*1024,this.stats=new st({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get queryParams(){let t=this.source.getTileUrl(this.url),s=t.indexOf("?");return s>=0?t.slice(s+1):""}setProps(t){this.options={...this.options,...t}}getTileUrl(t){return this.source.getTileUrl(t)}hasExtension(t){return Boolean(this.source.hasExtension?.(t))}update(t=null){this.tilesetInitializationPromise.then(()=>{!t&&this.lastUpdatedVieports?t=this.lastUpdatedVieports:this.lastUpdatedVieports=t,t&&this.doUpdate(t)})}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedVieports=t),this.updatePromise||(this.updatePromise=new Promise(s=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),s(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this._cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this._cacheBytes+this._cacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(t){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let s=t instanceof Array?t:[t];this._cache.reset(),this._frameNumber++,this.traverseCounter=s.length;let r=[];for(let n of s){let i=n.id;this._needTraverse(i)?r.push(i):this.traverseCounter--}for(let n of s){let i=n.id;if(this.roots[i]||(this.roots[i]=this._initializeTileHeaders(this.tileset,null)),!r.includes(i))continue;let o=Ee(n,this._frameNumber);this._traverser.traverse(this.roots[i],o,this.options)}}_needTraverse(t){let s=t;return this.options.viewportTraversersMap&&(s=this.options.viewportTraversersMap[t]),s===t}_onTraversalEnd(t){let s=t.viewport.id;this.frameStateData[s]||(this.frameStateData[s]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let r=this.frameStateData[s],n=Object.values(this._traverser.selectedTiles),[i,o]=Jr(n,t,this.options.maximumTilesSelected);r.selectedTiles=i;for(let a of o)a.unselect();r._requestedTiles=Object.values(this._traverser.requestedTiles),r._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let t=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let i in this.frameStateData){let o=this.frameStateData[i];this.selectedTiles=this.selectedTiles.concat(o.selectedTiles),this._requestedTiles=this._requestedTiles.concat(o._requestedTiles),this._emptyTiles=this._emptyTiles.concat(o._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let s=new Set(this.selectedTiles.map(i=>i.id)),r=this.selectedTiles.some(i=>!i.tileDrawn),n=0;if(r){for(let i of s)this._heldTiles.add(i);for(let i of this._heldTiles){if(s.has(i))continue;let o=this._tiles[i];o&&o.contentAvailable?(o._selectedFrame=this._frameNumber,this.selectedTiles.push(o),n++):this._heldTiles.delete(i)}}else this._heldTiles=s;n>0&&setTimeout(()=>{this.selectTiles()},0);for(let i of this.selectedTiles)this._tiles[i.id]=i;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(t,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(t,s){if(t.length!==s.length)return!0;let r=new Set(t.map(o=>o.id)),n=new Set(s.map(o=>o.id)),i=t.some(o=>!n.has(o.id));return i=i||s.some(o=>!r.has(o.id)),i}_loadTiles(){this._requestedTiles.sort((t,s)=>t._priority-s._priority);for(let t of this._requestedTiles)t.contentUnloaded&&this._loadTile(t)}_unloadTiles(){this._cache.unloadTiles(this,(t,s)=>t._unloadTile(s))}_updateStats(){let t=0,s=0;for(let r of this.selectedTiles)r.contentAvailable&&r.content&&(t++,r.content.pointCount?s+=r.content.pointCount:s+=r.content.vertexCount);this.stats.get(tn).count=this.selectedTiles.length,this.stats.get(en).count=t,this.stats.get(on).count=s,this.stats.get(an).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let t=this.source.initialize(),s=this._getSourceMetadata();s&&this._syncSourceState(s),s?.tileset?.root&&typeof s.tileset.root.then!="function"&&(this.root=this._initializeTileHeaders(s.tileset,null),this._applyViewState()),await t;let r=this.source.getMetadata();this._syncSourceState(r),this.root||(this.root=this._initializeTileHeaders(r.tileset,null)),this._applyViewState()}catch(t){let s=t instanceof Error?t:new Error(String(t));throw this._onSourceError(s,this.root),this._onTilesetError(s),s}}_initializeStats(){this.stats.get(Rs),this.stats.get(bs),this.stats.get(ws),this.stats.get(tn),this.stats.get(en),this.stats.get(sn),this.stats.get(rn),this.stats.get(nn),this.stats.get(on),this.stats.get(Cs,"memory"),this.stats.get(an)}_initializeTileHeaders(t,s){return this.source.initializeTileHeaders(this,t,s)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(t){this._destroySubtree(t)}async _loadTile(t){let s=null;try{this._onStartTileLoading(),s=await t.loadContent()}catch(r){let n=r instanceof Error?r:new Error("load failed");this._onSourceError(n,t),this._onTileLoadError(t,n)}finally{this._onEndTileLoading(),this._onTileLoad(t,s)}}_onTileLoadError(t,s){this.stats.get(nn).incrementCount();let r=s.message||s.toString(),n=t.url;console.error(`A 3D tile failed to load: ${t.url} ${r}`),this.options.onTileError(t,r,n)}_onSourceError(t,s=null){this.options.onSourceError(t,this.source,s)}_onTilesetError(t){this.options.onTilesetError(t,this)}_onTileLoad(t,s){if(!s?.loaded)return;t.content&&_e(t,t.content),this.source.onTileLoaded?.(this,t,s),this._syncSourceState(this.source.getMetadata());let r=this.source.getTilesTotalCount?.();r&&(this.stats.get(Rs).reset(),this.stats.get(Rs).addCount(r)),this._addTileToCache(t),this.options.onTileLoad(t)}_onStartTileLoading(){this._pendingCount++,this.stats.get(bs).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(bs).decrementCount()}_addTileToCache(t){this._cache.add(this,t,s=>s._updateCacheStats(t))}_updateCacheStats(t){this.stats.get(sn).incrementCount(),this.stats.get(ws).incrementCount(),this.gpuMemoryUsageInBytes+=t.gpuMemoryUsageInBytes||0,this.stats.get(Cs).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(t){this.gpuMemoryUsageInBytes-=t.gpuMemoryUsageInBytes||0,this.stats.get(ws).decrementCount(),this.stats.get(rn).incrementCount(),this.stats.get(Cs).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(t),t.unloadContent()}_destroy(){let t=[];for(this.root&&t.push(this.root);t.length>0;){let s=t.pop();for(let r of s.children)t.push(r);this._destroyTile(s)}this.root=null}_destroySubtree(t){let s=t,r=[s];for(;r.length>0;){t=r.pop();for(let n of t.children)r.push(n);t!==s&&this._destroyTile(t)}s.children=[]}_destroyTile(t){this._cache.unloadTile(this,t),this._unloadTile(t),t.destroy()}_syncSourceState(t){this.tileset=t.tileset,this.loader=t.loader,this.type=t.type,this.url=t.url,this.basePath=t.basePath,this.lodMetricType=t.lodMetricType,this.lodMetricValue=t.lodMetricValue,this.refine=t.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset,this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let t=this.source.getViewState(this.root);this.asset=t.asset||this.source.asset||{},this.properties=t.properties??this.source.properties,this.extras=t.extras??this.source.extras??null,this.credits=t.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=t.description||this.options.description||"",this.boundingVolume=t.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=t.cartographicCenter||new f,this.cartesianCenter=t.cartesianCenter||null,this.zoom=t.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};var be=class{sourceUrl;options;archivePromise;constructor(t){this.options=t,this.sourceUrl=xa(t.data,t.fallbackFilename)}async loadRoot(t,s,r){return await this.parseArchiveResource(t,this.options.rootPath,s,r,this.options.rootMode)}async loadResource(t,s,r){let n=this.resolveArchivePath(t,t);return await this.parseArchiveResource(t,n,s,r)}async parseArchiveResource(t,s,r,n,i){let o=this.options.getCoreApi();if(!o)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(s,i),c=this.createArchiveFetch(t);return await o.parse(a,r,{...n,fetch:c},{url:t,fetch:c,_parse:o.parse,loaders:[r],coreApi:o})}createArchiveFetch(t){return async s=>{let r=typeof s=="string"?s:s instanceof URL?s.toString():s.url,n=this.resolveArchivePath(r,t),i=await this.loadFile(n);return new Response(i,{status:200})}}async loadFile(t,s){this.archivePromise||=this.openArchiveReadableFile().then(n=>this.options.parseArchive(n));let r=await this.archivePromise;return await this.options.getFile(r,t,s)}async openArchiveReadableFile(){let{data:t}=this.options;if(typeof t!="string")return new At(t);if(/^https?:\/\//i.test(t))return new jt(t);let s=this.options.getCoreApi();if(!s)throw new Error(this.options.missingCoreApiMessage);let r=await s.fetchFile(t);return new At(await r.arrayBuffer())}resolveArchivePath(t,s){let r=As(t),n=As(this.sourceUrl),i=As(s),o=i===n?n:Q.dirname(i),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),c=r.match(a);if(c?.[1])return c[1];let h=/^[a-z][a-z0-9+.-]*:/i.test(r)||r.startsWith("/"),l=r.startsWith(n)?r:i===n&&!h?`${n}/${r}`:Q.resolve(o,r);return l===n?"":l.startsWith(`${n}/`)?l.slice(n.length+1):l.replace(/^\/+/,"")}};function xa(e,t){return typeof e=="string"?e:`memory://${"name"in e&&typeof e.name=="string"&&e.name?e.name:t}`}function As(e){let t=e.indexOf("?");return t>=0?e.slice(0,t):e}var W={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},Z;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(Z||(Z={}));var Ce;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(Ce||(Ce={}));var J;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(J||(J={}));var Pt;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(Pt||(Pt={}));var cn={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};function un(e){return e!=null}var Y=new f,Ae=new f,ga=new f,_a=new f,Tt=new f,hn=new f,ln=new f,dn=new f;function Nt(e,t,s){if(K(e,"3D Tile: boundingVolume must be defined"),e.box)return fn(e.box,t,s);if(e.region)return Ma(e.region);if(e.sphere)return Ta(e.sphere,t,s);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function mn(e,t){if(e.box)return ya(t);if(e.region){let[s,r,n,i,o,a]=e.region;return[[$(s),$(r),o],[$(n),$(i),a]]}if(e.sphere)return Sa(t);throw new Error("Unkown boundingVolume type")}function fn(e,t,s){let r=new f(e[0],e[1],e[2]);t.transform(r,r);let n=[];if(e.length===10){let h=e.slice(3,6),l=new dt;l.fromArray(e,6);let d=new f([1,0,0]),u=new f([0,1,0]),m=new f([0,0,1]);d.transformByQuaternion(l),d.scale(h[0]),u.transformByQuaternion(l),u.scale(h[1]),m.transformByQuaternion(l),m.scale(h[2]),n=[...d.toArray(),...u.toArray(),...m.toArray()]}else n=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];let i=t.transformAsVector(n.slice(0,3)),o=t.transformAsVector(n.slice(3,6)),a=t.transformAsVector(n.slice(6,9)),c=new D([i[0],i[1],i[2],o[0],o[1],o[2],a[0],a[1],a[2]]);return un(s)?(s.center=r,s.halfAxes=c,s):new rt(r,c)}function Ta(e,t,s){let r=new f(e[0],e[1],e[2]);t.transform(r,r);let n=t.getScale(Ae),i=Math.max(Math.max(n[0],n[1]),n[2]),o=e[3]*i;return un(s)?(s.center=r,s.radius=o,s):new G(r,o)}function Ma(e){let[t,s,r,n,i,o]=e,a=b.WGS84.cartographicToCartesian([$(t),$(n),i],ga),c=b.WGS84.cartographicToCartesian([$(r),$(s),o],_a),h=new f().addVectors(a,c).multiplyByScalar(.5);return b.WGS84.cartesianToCartographic(h,Tt),b.WGS84.cartographicToCartesian([$(r),Tt[1],Tt[2]],hn),b.WGS84.cartographicToCartesian([Tt[0],$(n),Tt[2]],ln),b.WGS84.cartographicToCartesian([Tt[0],Tt[1],o],dn),fn([...h,...hn.subtract(h),...ln.subtract(h),...dn.subtract(h)],new P)}function ya(e){let t=pn(),{halfAxes:s}=e,r=new f(s.getColumn(0)),n=new f(s.getColumn(1)),i=new f(s.getColumn(2));for(let o=0;o<2;o++){for(let a=0;a<2;a++){for(let c=0;c<2;c++)Y.copy(e.center),Y.add(r),Y.add(n),Y.add(i),xn(t,Y),i.negate();n.negate()}r.negate()}return t}function Sa(e){let t=pn(),{center:s,radius:r}=e,n=b.WGS84.scaleToGeodeticSurface(s,Y),i;n?i=b.WGS84.geodeticSurfaceNormal(n):i=new f(0,0,1);let o=new f(i[2],-i[1],0);o.len()>0?o.normalize():o=new f(0,1,0);let a=o.clone().cross(i);for(let c of[o,a,i]){Ae.copy(c).scale(r);for(let h=0;h<2;h++)Y.copy(s),Y.add(Ae),xn(t,Y),Ae.negate()}return t}function pn(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function xn(e,t){b.WGS84.cartesianToCartographic(t,Y),e[0][0]=Math.min(e[0][0],Y[0]),e[0][1]=Math.min(e[0][1],Y[1]),e[0][2]=Math.min(e[0][2],Y[2]),e[1][0]=Math.max(e[1][0],Y[0]),e[1][1]=Math.max(e[1][1],Y[1]),e[1][2]=Math.max(e[1][2],Y[2])}var ru=new f,nu=new f,iu=new P,ou=new f,au=new f,cu=new f;function Ea(e,t){let s=e*t;return 1-Math.exp(-(s*s))}function Ra(e,t){if(e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity){let s=e.dynamicScreenSpaceErrorComputedDensity,r=e.dynamicScreenSpaceErrorFactor;return Ea(t,s)*r}return 0}function gn(e,t,s){let r=e.tileset,n=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,i=s?n:e.lodMetricValue;if(i===0)return 0;let{viewDistanceScale:o}=r.options,a=o||1,c=wa(i,t,a);if(c!==null)return c;let h=Math.max(e._distanceToCamera,1e-7),{height:l,sseDenominator:d}=t,u=i*l*a/(h*d);return u-=Ra(r,h),u}function wa(e,t,s){let r=t.viewport;if(!r?.orthographic)return null;let n=r.metersPerPixel;return!Number.isFinite(n)||n<=0?null:e*s/n}var Os=new f,_n=new f,ut=new f,Tn=new f,ba=new f,Ps=new P,Mn=new P;function Oe(e,t){if(e.lodMetricValue===0||Number.isNaN(e.lodMetricValue))return"DIG";let s=2*Ns(e,t);return s<2?"OUT":!e.header.children||s<=e.lodMetricValue?"DRAW":e.header.children?"DIG":"OUT"}function Ns(e,t){let{topDownViewport:s}=t,r=e.header.mbs[1],n=e.header.mbs[0],i=e.header.mbs[2],o=e.header.mbs[3],a=[...e.boundingVolume.center],c=s.unprojectPosition(s.cameraPosition);b.WGS84.cartographicToCartesian(c,Os),_n.copy(Os).subtract(a).normalize(),b.WGS84.eastNorthUpToFixedFrame(a,Ps),Mn.copy(Ps).invert(),ut.copy(Os).transform(Mn);let h=Math.sqrt(ut[0]*ut[0]+ut[1]*ut[1]),l=h*h/ut[2];Tn.copy([ut[0],ut[1],l]);let u=Tn.transform(Ps).subtract(a).normalize(),x=_n.cross(u).normalize().scale(o).add(a),g=b.WGS84.cartesianToCartographic(x),p=s.project([n,r,i]),_=s.project(g);return ba.copy(p).subtract(_).magnitude()}var Xt=class{_map=new Map;_array;_length;constructor(t=0){this._array=new Array(t),this._length=t}get length(){return this._length}set length(t){this._length=t,t>this._array.length&&(this._array.length=t)}get values(){return this._array}get(t){return K(t<this._array.length),this._array[t]}set(t,s){K(t>=0),t>=this.length&&(this.length=t+1),this._map.has(this._array[t])&&this._map.delete(this._array[t]),this._array[t]=s,this._map.set(s,t)}delete(t){let s=this._map.get(t);s>=0&&(this._array.splice(s,1),this._map.delete(t),this.length--)}peek(){return this._array[this._length-1]}push(t){if(!this._map.has(t)){let s=this.length++;this._array[s]=t,this._map.set(t,s)}}pop(){let t=this._array[--this.length];return this._map.delete(t),t}reserve(t){K(t>=0),t>this._array.length&&(this._array.length=t)}resize(t){K(t>=0),this.length=t}trim(t){t==null&&(t=this.length),this._array.length=t}reset(){this._array=[],this._map=new Map,this._length=0}find(t){return this._map.has(t)}};var Ca={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},nt=class{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new Xt;_emptyTraversalStack=new Xt;_frameNumber=null;traversalFinished(t){return!0}constructor(t){this.options={...Ca,...t}}traverse(t,s,r){this.root=t,this.options={...this.options,...r},this.reset(),this.updateTile(t,s),this._frameNumber=s.frameNumber,this.executeTraversal(t,s)}reset(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(t,s){let r=this._traversalStack;for(t._selectionDepth=1,r.push(t);r.length>0;){let i=r.pop(),o=!1;this.canTraverse(i,s)&&(this.updateChildTiles(i,s),o=this.updateAndPushChildren(i,s,r,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let a=i.parent,c=Boolean(!a||a._shouldRefine),h=!o;i.hasRenderContent?i.refine===Z.ADD?(this.loadTile(i,s),this.selectTile(i,s)):i.refine===Z.REPLACE&&(this.loadTile(i,s),h&&this.selectTile(i,s)):(this.emptyTiles[i.id]=i,this.loadTile(i,s),h&&this.selectTile(i,s)),this.touchTile(i,s),i._shouldRefine=o&&c}let n=new Date().getTime();(this.traversalFinished(s)||n-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=n,this.options.onTraversalEnd(s))}updateChildTiles(t,s){let r=t.children;for(let n of r)this.updateTile(n,s)}updateAndPushChildren(t,s,r,n){let{loadSiblings:i,skipLevelOfDetail:o}=this.options,a=t.children;a.sort(this.compareDistanceToCamera.bind(this));let c=t.refine===Z.REPLACE&&t.hasRenderContent&&!o,h=!1,l=!0;for(let d of a)if(d._selectionDepth=n,d.isVisibleAndInRequestVolume?(r.find(d)&&r.delete(d),r.push(d),h=!0):(c||i)&&(this.loadTile(d,s),this.touchTile(d,s)),c){let u;if(d._inRequestVolume?d.hasRenderContent?u=d.contentAvailable:u=this.executeEmptyTraversal(d,s):u=!1,l=l&&u,!l)return!1}return h||(l=!1),l}updateTile(t,s){this.updateTileVisibility(t,s)}selectTile(t,s){this.shouldSelectTile(t)&&(t._selectedFrame=s.frameNumber,this.selectedTiles[t.id]=t)}loadTile(t,s){this.shouldLoadTile(t)&&(t._requestedFrame=s.frameNumber,t._priority=t._getPriority(),this.requestedTiles[t.id]=t)}touchTile(t,s){t.tileset._cache.touch(t),t._touchedFrame=s.frameNumber}canTraverse(t,s){return t.hasChildren?t.hasTilesetContent?!t.contentExpired:this.shouldRefine(t,s):!1}shouldLoadTile(t){return t.hasUnloadedContent||t.contentExpired}shouldSelectTile(t){return t.contentAvailable&&!this.options.skipLevelOfDetail}shouldRefine(t,s,r=!1){let n=t._screenSpaceError;return r&&(n=t.getScreenSpaceError(s,!0)),n>t.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(t,s){let r=[];if(this.options.viewportTraversersMap)for(let n in this.options.viewportTraversersMap)this.options.viewportTraversersMap[n]===s.viewport.id&&r.push(n);else r.push(s.viewport.id);t.updateVisibility(s,r)}compareDistanceToCamera(t,s){return t._distanceToCamera-s._distanceToCamera}anyChildrenVisible(t,s){let r=!1;for(let n of t.children)n.updateVisibility(s),r=r||n.isVisibleAndInRequestVolume;return r}executeEmptyTraversal(t,s){let r=!0,n=this._emptyTraversalStack;for(n.push(t);n.length>0;){let i=n.pop(),o=!i.hasRenderContent&&this.canTraverse(i,s),a=!i.hasRenderContent&&i.children.length===0;if(!o&&!i.contentAvailable&&!a&&(r=!1),this.updateTile(i,s),i.isVisibleAndInRequestVolume||(this.loadTile(i,s),this.touchTile(i,s)),o){let c=i.children;for(let h of c)n.push(h)}}return t.hasEmptyContent||r}};var Ls=new f;function Aa(e){return e!=null}var tt=class{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;boundingVolume=null;content=null;contentState=W.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new P;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new nt({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_viewerRequestVolume;_initialTransform=new P;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(t,s,r,n=""){this.header=s,this.tileset=t,this.id=n||s.id,this.url=s.url,this.parent=r,this.refine=this._getRefine(s.refine),this.type=s.type,this.contentUrl=s.contentUrl,this._initializeLodMetric(s),this._initializeTransforms(s),this._updateLodMetricScale(),this._initializeBoundingVolumes(s),this._initializeContent(s),this._initializeRenderingState(s),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0}get contentReady(){return this.contentState===W.READY||this.hasEmptyContent}get contentAvailable(){return Boolean(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===W.UNLOADED}get contentExpired(){return this.contentState===W.EXPIRED}get contentFailed(){return this.contentState===W.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=mn(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(t,s){switch(this.tileset.type){case J.I3S:return Ns(this,t);case J.TILES3D:return gn(this,t,s);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return this.content.gpuMemoryUsageInBytes||this.content.byteLength||0}_getPriority(){let t=this.tileset._traverser,{skipLevelOfDetail:s}=t.options,r=this.refine===Z.ADD||s;if(r&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===W.UNLOADED)return-1;let n=this.parent,o=n&&(!r||this._screenSpaceError===0||n.hasTilesetContent)?n._screenSpaceError:this._screenSpaceError,a=t.root?t.root._screenSpaceError:0;return Math.max(a-o,0)}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=W.LOADING;let s=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!s)return this.contentState=W.UNLOADED,{loaded:!1};try{let r=await this.tileset.source.loadTileContent(this);return this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=W.READY,this._onContentLoaded(),r}catch(r){throw this.contentState=W.FAILED,r}finally{s.done()}}unloadContent(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=W.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(t,s){if(this._frameNumber===t.frameNumber)return;let r=this.parent,n=r?r._visibilityPlaneMask:U.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let i=r?r.computedTransform:this.tileset.modelMatrix;this._updateTransform(i)}this._distanceToCamera=this.distanceToTile(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._visibilityPlaneMask=this.visibility(t,n),this._visible=this._visibilityPlaneMask!==U.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._frameNumber=t.frameNumber,this.viewportIds=s}visibility(t,s){let{cullingVolume:r}=t,{boundingVolume:n}=this;return r.computeVisibilityWithPlaneMask(n,s)}contentVisibility(){return!0}distanceToTile(t){let s=this.boundingVolume;return Math.sqrt(Math.max(s.distanceSquaredTo(t.camera.position),0))}cameraSpaceZDepth({camera:t}){let s=this.boundingVolume;return Ls.subVectors(s.center,t.position),t.direction.dot(Ls)}insideViewerRequestVolume(t){let s=this._viewerRequestVolume;return!s||s.distanceSquaredTo(t.camera.position)<=0}updateExpiration(){if(Aa(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let t=Date.now();Date.lessThan(this._expireDate,t)&&(this.contentState=W.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(t){"lodMetricType"in t?this.lodMetricType=t.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in t?this._unscaledLodMetricValue=t.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(t){this.transform=t.transform?new P(t.transform):new P;let s=this.parent,r=this.tileset,n=s&&s.computedTransform?s.computedTransform.clone():r.modelMatrix.clone();this.computedTransform=new P(n).multiplyRight(this.transform);let i=s&&s._initialTransform?s._initialTransform.clone():new P;this._initialTransform=new P(i).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==Pt.GEOMETRIC_ERROR){this.lodMetricValue=this._unscaledLodMetricValue;return}let t=this.computedTransform.getScale(Ls),s=Math.max(t[0],t[1],t[2]);this.lodMetricValue=this._unscaledLodMetricValue*s}_initializeBoundingVolumes(t){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(t)}_initializeContent(t){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=W.UNLOADED,this.hasTilesetContent=!1,t.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(t){this.depth=t.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=U.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(t){return t||this.parent&&this.parent.refine||Z.REPLACE}_isTileset(){return this.contentUrl.indexOf(".json")!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(t){this.boundingVolume=Nt(t.boundingVolume,this.computedTransform,this.boundingVolume);let s=t.content;s&&(s.boundingVolume&&(this._contentBoundingVolume=Nt(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),t.viewerRequestVolume&&(this._viewerRequestVolume=Nt(t.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)))}_updateTransform(t=new P){let s=t.clone().multiplyRight(this.transform);s.equals(this.computedTransform)||(this.computedTransform=s,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var Pe=class extends nt{compareDistanceToCamera(t,s){return s._distanceToCamera===0&&t._distanceToCamera===0?s._centerZDepth-t._centerZDepth:s._distanceToCamera-t._distanceToCamera}updateTileVisibility(t,s){if(super.updateTileVisibility(t,s),!t.isVisibleAndInRequestVolume)return;let r=t.children.length>0;if(t.hasTilesetContent&&r){let o=t.children[0];this.updateTileVisibility(o,s),t._visible=o._visible;return}if(this.meetsScreenSpaceErrorEarly(t,s)){t._visible=!1;return}let n=t.refine===Z.REPLACE,i=t._optimChildrenWithinParent===cn.USE_OPTIMIZATION;if(n&&i&&r&&!this.anyChildrenVisible(t,s)){t._visible=!1;return}}meetsScreenSpaceErrorEarly(t,s){let{parent:r}=t;return!r||r.hasTilesetContent||r.refine!==Z.ADD?!1:!this.shouldRefine(t,s,!0)}};var Oa=6378137,Pa=6378137,Is=6356752314245179e-9,Lt=new f;function yn(e,t){if(e instanceof rt){let{halfAxes:s}=e,r=Na(s);return Math.log2(Is/(r+t[2]))}else if(e instanceof G){let{radius:s}=e;return Math.log2(Is/(s+t[2]))}else if(e.width&&e.height){let{width:s,height:r}=e,n=Math.log2(Oa/s),i=Math.log2(Pa/r);return(n+i)/2}return 1}function vs(e,t,s){b.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],Lt);let r=Math.sqrt(Math.pow(Lt[0]-s[0],2)+Math.pow(Lt[1]-s[1],2)+Math.pow(Lt[2]-s[2],2));return Math.log2(Is/(r+t[2]))}function Sn(e,t,s){let[r,n,i,o]=e;return vs({xmin:r,xmax:i,ymin:n,ymax:o,zmin:0,zmax:0},t,s)}function Na(e){e.getColumn(0,Lt);let t=e.getColumn(1),s=e.getColumn(2);return Lt.add(t).add(s).len()}var La={draco:!1,meshopt:!1,dds:!1,ktx2:!1},Ne=class{type=J.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...La};asset;properties;extras;credits;metadata;queryParams={};extensionsUsed=[];resolver;rootTileset;constructor(t,s={}){let r=Ia(t);this.rootTileset=En(t)?null:t,this.tileset=this.rootTileset,this.loader=r.loader,this.url=r.url,this.basePath=r.basePath||Q.dirname(r.url),this.resolver=r.resolver,this.coreApi=r.coreApi,this.loadOptions=s}async initialize(){if(!this.rootTileset){let t=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...t,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let t=new URLSearchParams(this.rootTileset.queryString);Object.assign(this.queryParams,Object.fromEntries(t.entries()))}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&(this.queryParams.v=this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}initializeTileHeaders(t,s,r){let n=new tt(t,s.root,r||void 0);r&&(r.children.push(n),n.depth=r.depth+1);let i=[n];for(;i.length>0;){let o=i.pop();t.stats.get("Tiles In Tileset(s)").incrementCount();let a=o.header.children||[];for(let c of a){let h=new tt(t,c,o);if(h.contentUrl?.includes("?session=")){let d=new URL(h.contentUrl).searchParams.get("session");d&&(this.queryParams.session=d)}o.children.push(h),h.depth=o.depth+1,i.push(h)}}return n}createTraverser(t){return new Pe(t)}async loadTileContent(t){let s=this.getTileUrl(t.contentUrl),r=this.loadOptions[this.loader.id]||{},n={...this.loadOptions,[this.loader.id]:{...r,isTileset:t.type==="json",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y"}},i=await this.loadResourceData(s,n);return t.content=i,{loaded:!0,nestedTileset:t.contentUrl.includes(".json")?i:void 0}}getTileUrl(t){if(t.startsWith("data:")||!Object.keys(this.queryParams).length)return t;let[s,r=""]=t.split("?"),n=new URLSearchParams(r);for(let[o,a]of Object.entries(this.queryParams))n.has(o)||n.set(o,a);let i=n.toString();return i?`${s}?${i}`:s}getViewState(t){if(!t)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:s}=t.boundingVolume,r;return s&&(s[0]!==0||s[1]!==0||s[2]!==0)?(r=new f,b.WGS84.cartesianToCartographic(s,r)):r=new f(0,0,-b.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:t.boundingVolume,cartographicCenter:r,cartesianCenter:s,zoom:yn(t.boundingVolume,r)}}hasExtension(t){return this.extensionsUsed.includes(t)}onTileLoaded(t,s,r){let{extensionsRemoved:n=[]}=s.content?.gltf||{};n.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),n.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),n.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0),r.nestedTileset&&t._initializeTileHeaders(r.nestedTileset,s)}async loadWithCoreApi(t,s){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,this.loader,s)}async loadRootData(t,s){return this.resolver?await this.resolver.loadRoot(t,this.loader,s):await this.loadWithCoreApi(t,s)}async loadResourceData(t,s){return this.resolver?await this.resolver.loadResource(t,this.loader,s):await this.loadWithCoreApi(t,s)}};function En(e){return Boolean(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function Ia(e){return En(e)?{...e,basePath:e.basePath||Q.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||Q.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var Le=class{frameNumberMap=new Map;register(t,s){let r=this.frameNumberMap.get(t)||new Map,n=r.get(s)||0;r.set(s,n+1),this.frameNumberMap.set(t,r)}deregister(t,s){let r=this.frameNumberMap.get(t);if(!r)return;let n=r.get(s)||1;r.set(s,n-1)}isZero(t,s){return(this.frameNumberMap.get(t)?.get(s)||0)===0}};var zs={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},Ie=class{_statusMap;pendingTilesRegister=new Le;constructor(){this._statusMap={}}add(t,s,r,n){if(!this._statusMap[s]){let{frameNumber:i,viewport:{id:o}}=n;this._statusMap[s]={request:t,callback:r,key:s,frameState:n,status:zs.REQUESTED},this.pendingTilesRegister.register(o,i),t().then(a=>{this._statusMap[s].status=zs.COMPLETED;let{frameNumber:c,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,c),this._statusMap[s].callback(a,n)}).catch(a=>{this._statusMap[s].status=zs.ERROR;let{frameNumber:c,viewport:{id:h}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(h,c),r(a)})}}update(t,s){if(this._statusMap[t]){let{frameNumber:r,viewport:{id:n}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(n,r);let{frameNumber:i,viewport:{id:o}}=s;this.pendingTilesRegister.register(o,i),this._statusMap[t].frameState=s}}find(t){return this._statusMap[t]}hasPendingTiles(t,s){return!this.pendingTilesRegister.isZero(t,s)}};var ve=class extends nt{_tileManager;constructor(t){super(t),this._tileManager=new Ie}traversalFinished(t){return!this._tileManager.hasPendingTiles(t.viewport.id,this._frameNumber||0)}shouldRefine(t,s){return t._lodJudge=Oe(t,s),t._lodJudge==="DIG"}updateChildTiles(t,s){let r=t.header.children||[],n=t.children;for(let i of r){let o=`${i.id}-${s.viewport.id}`,a=n&&n.find(c=>c.id===o);if(a)a&&this.updateTile(a,s);else{let c=()=>this._loadTile(t,i.id,s);this._tileManager.find(o)?this._tileManager.update(o,s):this._tileManager.add(c,o,l=>this._onTileLoad(l,t,o),s)}}return!1}async _loadTile(t,s,r){if(!t.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await t.tileset.source.loadChildTileHeader(t,s,r)}_onTileLoad(t,s,r){if(t instanceof Error){s.tileset._onSourceError(t,s);return}let n=new tt(s.tileset,t,s,r);s.children.push(n);let i=this._tileManager.find(n.id).frameState;this.updateTile(n,i),this._frameNumber===i.frameNumber&&(this.traversalFinished(i)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(n,i)}};var va={draco:!1,meshopt:!1,dds:!1,ktx2:!1},ze=class{type=J.I3S;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...va};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;constructor(t,s={}){let r=za(t);this.rootTileset=Rn(t)?null:t,this.tileset=this.rootTileset,this.loader=r.loader,this.url=r.url,this.basePath=r.basePath||Q.dirname(r.url),this.resolver=r.resolver,this.coreApi=r.coreApi,this.loadOptions=s}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.url,this.loadOptions)),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root);let t=this.loadOptions.i3s;if(t&&typeof t=="object"&&"token"in t){let s=t.token;typeof s=="string"&&(this.queryParams.token=s)}this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}initializeTileHeaders(t,s,r){let n=new tt(t,s.root,r||void 0);return r&&(r.children.push(n),n.depth=r.depth+1),n}createTraverser(t){return new ve(t)}async loadTileContent(t){let s=this.getTileUrl(t.contentUrl),r=this.loader.id,n=this.loadOptions[r]||{},i=this.getMetadata(),o={...this.loadOptions,[r]:{...n,...t.tileset.options.i3s,_tileOptions:{attributeUrls:t.header.attributeUrls,textureUrl:t.header.textureUrl,textureFormat:t.header.textureFormat,textureLoaderOptions:t.header.textureLoaderOptions,materialDefinition:t.header.materialDefinition,isDracoGeometry:t.header.isDracoGeometry,mbs:t.header.mbs},_tilesetOptions:{store:i.tileset.store,attributeStorageInfo:i.tileset.attributeStorageInfo,fields:i.tileset.fields},isTileHeader:!1}};return t.content=await this.loadResourceData(s,o),{loaded:!0}}async loadChildTileHeader(t,s,r){let n=this.getMetadata();if(n.tileset.nodePages)return await n.tileset.nodePagesTile.formTileFromNodePages(s);let i=this.getTileUrl(`${this.url}/nodes/${s}`),o=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...o,isTileHeader:!0}};return await this.loadResourceData(i,a)}getTileUrl(t){if(t.startsWith("data:")||!Object.keys(this.queryParams).length)return t;let s=new URLSearchParams(this.queryParams).toString();return`${t}${t.includes("?")?"&":"?"}${s}`}getViewState(t){let s=this.getMetadata(),r=s.tileset.fullExtent;if(r){let{xmin:i,xmax:o,ymin:a,ymax:c,zmin:h,zmax:l}=r,d=new f(i+(o-i)/2,a+(c-a)/2,h+(l-h)/2),u=new f;return b.WGS84.cartographicToCartesian(d,u),{cartographicCenter:d,cartesianCenter:u,zoom:vs(r,d,u)}}let n=s.tileset.store?.extent;if(n){let[i,o,a,c]=n,h=new f(i+(a-i)/2,o+(c-o)/2,0),l=new f;return b.WGS84.cartographicToCartesian(h,l),{cartographicCenter:h,cartesianCenter:l,zoom:Sn(n,h,l)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new f,zoom:1}}onTileLoaded(t,s){switch(s.header.isDracoGeometry&&(this.contentFormats.draco=!0),s.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(t,s){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,this.loader,s)}async loadRootData(t,s){return this.resolver?await this.resolver.loadRoot(t,this.loader,s):await this.loadWithCoreApi(t,s)}async loadResourceData(t,s){return this.resolver?await this.resolver.loadResource(t,this.loader,s):await this.loadWithCoreApi(t,s)}};function Rn(e){return Boolean(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function za(e){return Rn(e)?{...e,basePath:e.basePath||Q.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||Q.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var Mt=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(t){this.index=t,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(t){this._bbox||(this._bbox=t,"west"in t?this.boundingBox=[[t.west,t.south],[t.east,t.north]]:this.boundingBox=[[t.left,t.top],[t.right,t.bottom]])}get data(){let t=this._loader;return!this._isCancelled&&t!==void 0?t.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return Boolean(this._loader)&&!this._isCancelled}get hasError(){return Boolean(this.error)}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)?t:0}async _loadData({getData:t,requestScheduler:s,onLoad:r,onError:n}){let i=(p,_,E)=>{if(E===this._loaderId){if(this._loader=void 0,this.content=p,this.error=_?qa(_):null,this._isCancelled&&!p){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,_){n(_,this);return}r(this)}},{index:o,id:a,bbox:c,userData:h,zoom:l}=this,d=this._loaderId;this._abortController=new AbortController;let{signal:u}=this._abortController,m=await s.scheduleRequest(this,()=>1);if(!m){this._isCancelled=!0;return}if(this._isCancelled){m.done();return}let x=null,g;try{x=await t({index:o,id:a,bbox:c,userData:h,zoom:l,signal:u})}catch(p){g=p||!0}finally{m.done()}i(x,g,d)}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function qa(e){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Tile request failed")}var qs="never",Vs="no-overlap",Qt="best-available",wn={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:Qt,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},yt=class{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(t){if(this.stats=new st({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...wn,...t,getTileData:t.getTileData||(()=>null),tileSource:t.tileSource},this._requestScheduler=new at({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!t.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(t),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(t,s={}){return new yt({...s,tileSource:t})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let t=this._getVisibleTilesUnion();for(let s of this._getSelectedTilesUnion())t.add(s);return Array.from(t)}get loadingTiles(){return Array.from(this._cache.values()).filter(t=>t.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(t=>!t.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||Qt}get adapter(){return this.opts.adapter}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}attachConsumer(t){this._consumers.set(t,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(t){this._consumers.delete(t),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(t){this._rememberExplicitOptions(t),this._baseOpts={...this._baseOpts,...t};let s=this.opts.maxRequests,r=this.opts.debounceTime;this._applyResolvedOptions(),(s!==this.opts.maxRequests||r!==this.opts.debounceTime)&&(this._requestScheduler=new at({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let t=this._getSelectedTilesUnion();for(let s of this._cache.keys()){let r=this._cache.get(s);r&&!t.has(r)?(this._cache.delete(s),this._handleTileUnload(r),this._dirty=!0):r&&r.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(t,s,r){this._consumers.set(t,{selectedTiles:new Set(s),visibleTiles:new Set(r)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:t,maxZoom:s,minZoom:r,zRange:n,modelMatrix:i,modelMatrixInverse:o}){let{adapter:a,tileSize:c,extent:h,zoomOffset:l}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:t,tileSize:c},a.getTileIndices({viewState:t,maxZoom:s,minZoom:r,zRange:n,tileSize:c,extent:Va(h),modelMatrix:i,modelMatrixInverse:o,zoomOffset:l})}getTileId(t){return`${t.x}-${t.y}-${t.z}`}getTileZoom(t){return t.z}getTileMetadata(t){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,t)}}getParentIndex(t){return{x:Math.floor(t.x/2),y:Math.floor(t.y/2),z:t.z-1}}getTile(t,s){let r=this.getTileId(t),n=this._cache.get(r),i=!1;return!n&&s?(n=new Mt(t),Object.assign(n,this.getTileMetadata(n.index)),Object.assign(n,{id:r,zoom:this.getTileZoom(n.index)}),i=!0,this._cache.set(r,n),this._dirty=!0,this._updateStats()):n&&n.needsReload&&(i=!0),n&&this._touchTile(r,n),n&&i&&s&&(n.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),n}async _initializeTileSource(t){try{this.sourceMetadata=await t.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(s){let r=s instanceof Error?s:new Error(`TileSource metadata error: ${String(s)}`);this._notifyError(r)}}_rememberExplicitOptions(t){for(let s of Object.keys(t))this._explicitOptionKeys.add(s)}_applyResolvedOptions(){let t={...wn,...this._sourceMetadataOverrides,...this._baseOpts};if(t.tileSource){let s=t.tileSource;t.getTileData=r=>s.getTileData(r)}this.opts=t,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(t){if(!t)return{};let s={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(t.minZoom)&&(s.minZoom=t.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(t.maxZoom)&&(s.maxZoom=t.maxZoom),!this._explicitOptionKeys.has("extent")&&t.boundingBox&&(s.extent=[t.boundingBox[0][0],t.boundingBox[0][1],t.boundingBox[1][0],t.boundingBox[1][1]]),s}_handleTileLoad(t){this.opts.onTileLoad?.(t),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let s of this._listeners)s.onTileLoad?.(t);this._updateStats()}_handleTileError(t,s){this.opts.onTileError?.(t,s);for(let r of this._listeners)r.onTileError?.(t,s);this._updateStats()}_handleTileUnload(t){this._unloadedTileCount++,this.opts.onTileUnload?.(t);for(let s of this._listeners)s.onTileUnload?.(t);this._updateStats()}_notifyUpdate(){for(let t of this._listeners)t.onUpdate?.()}_notifyError(t){for(let s of this._listeners)s.onError?.(t)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let t of this._listeners)t.onStatsChange?.(this.stats)}_setStatCount(t,s){this.stats.get(t).reset().addCount(s)}_getSelectedTilesUnion(){let t=new Set;for(let s of this._consumers.values())for(let r of s.selectedTiles)t.add(r);return t}_getVisibleTilesUnion(){let t=new Set;for(let s of this._consumers.values())for(let r of s.visibleTiles)t.add(r);return t}_touchTile(t,s){this._cache.delete(t),this._cache.set(t,s)}_getCacheByteSize(){let t=0;for(let s of this._cache.values())t+=s.byteLength;return t}_pruneRequests(){let{maxRequests:t=0}=this.opts,s=this._getSelectedTilesUnion(),r=this._getVisibleTilesUnion(),n=[],i=0;for(let o of this._cache.values())o.isLoading&&(i++,!s.has(o)&&!r.has(o)&&n.push(o));for(;t>0&&i>t&&n.length>0;){let o=n.shift();o&&o.abort(),i--}}_rebuildTree(){for(let t of this._cache.values())t.parent=null,t.children&&(t.children.length=0);for(let t of this._cache.values()){let s=this._getNearestAncestor(t);t.parent=s,s?.children&&s.children.push(t)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((t,s)=>t.zoom-s.zoom)}_resizeCache(){let t=this.opts.maxCacheSize??100,s=this.opts.maxCacheByteSize??1/0,r=this._getVisibleTilesUnion(),n=this._getSelectedTilesUnion();if(this._cache.size>t||this._cacheByteSize>s){for(let[o,a]of this._cache)if(!r.has(a)&&!n.has(a)&&(this._cache.delete(o),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=t&&this._cacheByteSize<=s)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(t){let{_minZoom:s=0}=this,r=t.index;for(;this.getTileZoom(r)>s;){r=this.getParentIndex(r);let n=this.getTile(r);if(n)return n}return null}};function Va(e){return e&&e.length===4?e:void 0}var qe={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},It=class{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.imageSource&&(!t.getImage||!t.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(t,s={}){return new It({...s,imageSource:t})}get isLoaded(){return this._loadCounter===0&&Boolean(this._currentRequest)}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let s=this._opts.imageSource,r=this._normalizeOptions({...this._opts,...t}),n=s!==r.imageSource||this._opts.getImage!==r.getImage||this._opts.getMetadata!==r.getMetadata;this._opts=r,n&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let s of this._listeners)s.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let s=bn(t,"Image metadata request failed");if(!this._finalized)for(let r of this._listeners)r.onMetadataLoadError?.(s);throw s}finally{this._finishLoading()}}requestImage(t,s=this._opts.debounceTime){let r=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),s>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(r,t)},s):this._loadImage(r,t),r}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(t,s){if(!this._finalized){this._startLoading();for(let r of this._listeners)r.onImageLoadStart?.(t,s);try{let r=new AbortController;this._abortController=r;let n=await this._opts.getImage({...s,signal:r.signal});if(this._finalized||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:s,image:n};for(let i of this._listeners)i.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(r){if(Da(r))return;let n=bn(r,"Image request failed");if(!this._finalized)for(let i of this._listeners)i.onImageLoadError?.(t,n,s)}finally{this._abortController?.signal===s.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(t){let s=t.imageSource||null;return{...qe,...t,imageSource:s,getMetadata:t.getMetadata||(()=>s?s.getMetadata():qe.getMetadata()),getImage:t.getImage||(r=>s?s.getImage(r):qe.getImage(r)),debounceTime:t.debounceTime??qe.debounceTime}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(t){for(let s of this._listeners)s.onLoadingStateChange?.(t)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function Da(e){return e instanceof Error&&e.name==="AbortError"}function bn(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}var Ht={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},vt=class{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.rasterSource&&(!t.getRaster||!t.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(t,s={}){return new vt({...s,rasterSource:t})}get isLoaded(){return this._loadCounter===0&&Boolean(this._currentRequest)}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let s=this._opts.rasterSource,r=this._normalizeOptions({...this._opts,...t}),n=s!==r.rasterSource||this._opts.getRaster!==r.getRaster||this._opts.getMetadata!==r.getMetadata;this._opts=r,n&&(this._cancelScheduledRaster(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let s of this._listeners)s.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let s=Cn(t,"Raster metadata request failed");if(!this._finalized)for(let r of this._listeners)r.onMetadataLoadError?.(s);throw s}finally{this._finishLoading()}}requestRaster(t,s=this._opts.debounceTime){if(!this.shouldRefetchRaster(t))return this._currentRequest?.requestId??-1;let r=this._nextRequestId++;return this._cancelScheduledRaster(),s>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(r,t)},s):this._loadRaster(r,t),r}shouldRefetchRaster(t){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:t})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._listeners.clear()}async _loadRaster(t,s){if(!this._finalized){this._startLoading();for(let r of this._listeners)r.onRasterLoadStart?.(t,s);try{let r=new AbortController;this._abortController=r;let n=await this._opts.getRaster({...s,signal:r.signal});if(this._finalized||r.signal.aborted||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:s,raster:n};for(let i of this._listeners)i.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(r){if(Ua(r))return;let n=Cn(r,"Raster request failed");if(!this._finalized)for(let i of this._listeners)i.onRasterLoadError?.(t,n,s)}finally{this._abortController=null,this._finishLoading()}}}_normalizeOptions(t){let s=t.rasterSource||null;return{...Ht,...t,rasterSource:s,getMetadata:t.getMetadata||(()=>s?s.getMetadata():Ht.getMetadata()),getRaster:t.getRaster||(r=>s?s.getRaster(r):Ht.getRaster(r)),debounceTime:t.debounceTime??Ht.debounceTime,shouldRefetch:t.shouldRefetch||(r=>Ht.shouldRefetch(r))}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_emitLoadingStateChange(t){for(let s of this._listeners)s.onLoadingStateChange?.(t)}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function Cn(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}function Ua(e){return e instanceof Error&&e.name==="AbortError"}var zt=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(t,s=null){this.header=t,this.parent=s}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(t){this.selected=!0,this.viewportIds.includes(t)||this.viewportIds.push(t)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var Fa={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{}},Ve=64,De=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(t,s={}){this.dataSource=t,this.options={...Fa,...s},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(t=>t.contentAvailable||t.contentFailed)}selectedTiles=[];update(t=null){this.selectTiles(t).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let t=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(t,null);let s=await this.dataSource.getViewState?.();this.boundingVolume=s?.boundingVolume||this.root.boundingVolume;let r=s?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new f(r),this.zoom=s?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedViewports=t),this.updatePromise||(this.updatePromise=new Promise((s,r)=>{setTimeout(()=>{this.doSelectTiles().then(()=>s(this.frameNumberValue)).catch(r).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let t=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let s=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],r=new Map,n=new Set,i=0;for(let a of s){let c=this.getTraversalContext(a);i=await this.traverseTiles(c,r,i,n)}this.visibleTilesCount=n.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(r.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let o=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(t,o)||this.options.onUpdate()}async traverseTiles(t,s,r,n){if(!this.root)return r;let i=r,o=[{tile:this.root,weight:this.estimateScreenRadius(this.root,t.viewport)}];for(;o.length>0;){o.sort((d,u)=>u.weight-d.weight);let a=o.shift();if(!a)break;let{tile:c,weight:h}=a;if(!this.isVisible(c,t))continue;if(n.add(c.id),!s.has(c.id)&&c.pointCount>0){if(i>0&&i+c.pointCount>this.options.pointBudget)break;s.set(c.id,c),i+=c.pointCount}if(s.has(c.id)&&c.setSelected(t.viewport.id),!this.shouldRefine(c,h))continue;let l=await this.getVisibleChildren(c,t);l.length>0&&o.push(...l)}return i}shouldRefine(t,s){return t.level<this.options.maxDepth&&Number.isFinite(s)&&s>=this.options.minimumNodePixelSize}getTraversalContext(t){let s=this.getCullingVolume(t);return{viewport:t,cullingVolume:this.shouldUseCullingVolume(t,s)?s:null}}isVisible(t,s){if(s.cullingVolume){let n=this.getCommonSpaceBoundingSphere(t.boundingVolume,s.viewport);if(n)return this.isBoundingSphereInsideCullingVolume(n,s.cullingVolume)}let r=this.getProjectedFootprint(t.boundingVolume,s.viewport);return r?this.isProjectedFootprintVisible(r,s.viewport):!1}shouldUseCullingVolume(t,s){if(!this.root||!s)return!1;let r=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,t);if(!r)return!1;if(this.isBoundingSphereInsideCullingVolume(r,s))return!0;let n=this.getProjectedFootprint(this.root.boundingVolume,t);return!n||!this.isProjectedFootprintVisible(n,t)}isBoundingSphereInsideCullingVolume(t,s){return s.computeVisibilityWithPlaneMask(t,U.MASK_INDETERMINATE)!==U.MASK_OUTSIDE}isProjectedFootprintVisible(t,s){return!(t.x+t.radius<-Ve||t.x-t.radius>s.width+Ve||t.y+t.radius<-Ve||t.y-t.radius>s.height+Ve)}estimateScreenRadius(t,s){let r=this.getProjectedFootprint(t.boundingVolume,s);return r?r.radius:0}projectBounds(t,s){let r=this.getBoundingVolumeCorners(t),n=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let c of r){let[h,l]=s.project(c);!Number.isFinite(h)||!Number.isFinite(l)||(n=Math.min(n,h),i=Math.min(i,l),o=Math.max(o,h),a=Math.max(a,l))}}catch{return null}return!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(a)?null:{minX:n,minY:i,maxX:o,maxY:a}}getProjectedFootprint(t,s){let r=Number.NaN,n=Number.NaN;try{[r,n]=s.project(t.center)}catch{return null}if(!Number.isFinite(r)||!Number.isFinite(n))return null;let i=this.getBoundingVolumeCorners(t),o=0;try{for(let a of i){let[c,h]=s.project(a);!Number.isFinite(c)||!Number.isFinite(h)||(o=Math.max(o,Math.hypot(c-r,h-n)))}}catch{return null}if(o===0){let a=this.projectBounds(t,s);a&&(o=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:r,y:n,radius:o}}async getVisibleChildren(t,s){return t.level>=this.options.maxDepth?[]:(await this.getChildren(t)).map(n=>({tile:n,weight:this.estimateScreenRadius(n,s.viewport)})).filter(n=>this.isVisible(n.tile,s))}async getChildren(t){if(t.childrenLoaded)return t.children;if(!t.childrenPromise){let s=this.dataSource.getChildren(t.header).then(r=>r.map(n=>this.getOrCreateTile(n,t))).then(r=>(t.children=r,t.childrenLoaded=!0,r));t.childrenPromise=s.finally(()=>{t.childrenPromise===s&&(t.childrenPromise=null)})}return t.childrenPromise}getOrCreateTile(t,s){let r=this.tilesMap.get(t.id);if(r)return r.header=t,s&&r.parent!==s&&(r.parent=s),r;let n=new zt(t,s);return this.tilesMap.set(t.id,n),s&&!s.children.find(i=>i.id===n.id)&&s.children.push(n),n}async loadTile(t){if(!(t.contentAvailable||t.isContentLoading||t.contentFailed)){t.isContentLoading=!0,this.pendingCount++;try{let s=await this.dataSource.loadTileContent(t.header);t.content=s,t.contentAvailable=!0,s&&this.options.onTileLoad(t)}catch(s){t.contentFailed=!0,this.options.onTileError(t,s)}finally{t.isContentLoading=!1,this.pendingCount--}}}estimateZoom(t){if(!t)return 1;let[s,r]=t.cartographicBounds,n=Math.max(Math.abs(r[0]-s[0]),1e-6);return Math.max(1,Math.round(Math.log2(360/n)))}haveSameIds(t,s){if(t.size!==s.size)return!1;for(let r of t)if(!s.has(r))return!1;return!0}getBoundingVolumeCorners(t){let[s,r]=t.cartographicBounds;return[[s[0],s[1],s[2]||0],[s[0],s[1],r[2]||0],[s[0],r[1],s[2]||0],[s[0],r[1],r[2]||0],[r[0],s[1],s[2]||0],[r[0],s[1],r[2]||0],[r[0],r[1],s[2]||0],[r[0],r[1],r[2]||0]]}getCullingVolume(t){let s=t.getFrustumPlanes?.bind(t);if(!s)return null;let r=s(),n=["left","right","bottom","top","near","far"],i=[];for(let o of n){let a=r[o];if(!a)return null;i.push(new k(a.normal,-a.distance))}return new U(i)}getCommonSpaceBoundingSphere(t,s){let r=s.projectPosition?.bind(s);if(!r)return null;let n=this.getBoundingVolumeCorners(t),i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;try{for(let d of n){let[u,m,x=0]=r(d);!Number.isFinite(u)||!Number.isFinite(m)||!Number.isFinite(x)||(i=Math.min(i,u),o=Math.min(o,m),a=Math.min(a,x),c=Math.max(c,u),h=Math.max(h,m),l=Math.max(l,x))}}catch{return null}return!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(h)||!Number.isFinite(l)?null:new G().fromCornerPoints([i,o,a],[c,h,l])}};return zn(Kt);})();
8
8
  return __exports__;
9
9
  });