@iwsdk/core 0.2.2 → 0.3.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 (228) hide show
  1. package/README.md +94 -0
  2. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  3. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  4. package/dist/asset/loaders/hdr-texture-loader.js +4 -4
  5. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  6. package/dist/audio/audio-system.d.ts +6 -2
  7. package/dist/audio/audio-system.d.ts.map +1 -1
  8. package/dist/audio/audio-system.js +1 -0
  9. package/dist/audio/audio-system.js.map +1 -1
  10. package/dist/audio/audio.d.ts +3 -1
  11. package/dist/audio/audio.d.ts.map +1 -1
  12. package/dist/audio/audio.js +8 -2
  13. package/dist/audio/audio.js.map +1 -1
  14. package/dist/camera/camera-source.js +1 -0
  15. package/dist/camera/camera-source.js.map +1 -1
  16. package/dist/camera/camera-system.d.ts.map +1 -1
  17. package/dist/camera/camera-system.js +1 -0
  18. package/dist/camera/camera-system.js.map +1 -1
  19. package/dist/camera/camera-utils.d.ts.map +1 -1
  20. package/dist/camera/camera-utils.js.map +1 -1
  21. package/dist/depth/depth-occludable.d.ts +48 -0
  22. package/dist/depth/depth-occludable.d.ts.map +1 -0
  23. package/dist/depth/depth-occludable.js +48 -0
  24. package/dist/depth/depth-occludable.js.map +1 -0
  25. package/dist/depth/depth-sensing-system.d.ts +164 -0
  26. package/dist/depth/depth-sensing-system.d.ts.map +1 -0
  27. package/dist/depth/depth-sensing-system.js +453 -0
  28. package/dist/depth/depth-sensing-system.js.map +1 -0
  29. package/dist/depth/depth-textures.d.ts +53 -0
  30. package/dist/depth/depth-textures.d.ts.map +1 -0
  31. package/dist/depth/depth-textures.js +114 -0
  32. package/dist/depth/depth-textures.js.map +1 -0
  33. package/dist/depth/index.d.ts +10 -0
  34. package/dist/depth/index.d.ts.map +1 -0
  35. package/dist/depth/occlusion/preprocessing-pass.d.ts +52 -0
  36. package/dist/depth/occlusion/preprocessing-pass.d.ts.map +1 -0
  37. package/dist/depth/occlusion/preprocessing-pass.js +105 -0
  38. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -0
  39. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts +22 -0
  40. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts.map +1 -0
  41. package/dist/depth/occlusion/preprocessing-shader.glsl.js +115 -0
  42. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -0
  43. package/dist/ecs/entity.d.ts +17 -1
  44. package/dist/ecs/entity.d.ts.map +1 -1
  45. package/dist/ecs/entity.js +7 -1
  46. package/dist/ecs/entity.js.map +1 -1
  47. package/dist/ecs/world.d.ts +12 -0
  48. package/dist/ecs/world.d.ts.map +1 -1
  49. package/dist/ecs/world.js +47 -3
  50. package/dist/ecs/world.js.map +1 -1
  51. package/dist/environment/dome-gradient.js +1 -0
  52. package/dist/environment/dome-gradient.js.map +1 -1
  53. package/dist/environment/dome-texture.d.ts +3 -1
  54. package/dist/environment/dome-texture.d.ts.map +1 -1
  55. package/dist/environment/dome-texture.js +7 -1
  56. package/dist/environment/dome-texture.js.map +1 -1
  57. package/dist/environment/environment-system.d.ts +8 -0
  58. package/dist/environment/environment-system.d.ts.map +1 -1
  59. package/dist/environment/environment-system.js +78 -2
  60. package/dist/environment/environment-system.js.map +1 -1
  61. package/dist/environment/ibl-gradient.js +1 -0
  62. package/dist/environment/ibl-gradient.js.map +1 -1
  63. package/dist/environment/ibl-texture.d.ts +3 -1
  64. package/dist/environment/ibl-texture.d.ts.map +1 -1
  65. package/dist/environment/ibl-texture.js +7 -1
  66. package/dist/environment/ibl-texture.js.map +1 -1
  67. package/dist/environment-raycast/environment-raycast.d.ts +136 -0
  68. package/dist/environment-raycast/environment-raycast.d.ts.map +1 -0
  69. package/dist/environment-raycast/environment-raycast.js +333 -0
  70. package/dist/environment-raycast/environment-raycast.js.map +1 -0
  71. package/dist/environment-raycast/index.d.ts +9 -0
  72. package/dist/environment-raycast/index.d.ts.map +1 -0
  73. package/dist/environment-raycast/raycast-target.d.ts +114 -0
  74. package/dist/environment-raycast/raycast-target.d.ts.map +1 -0
  75. package/dist/environment-raycast/raycast-target.js +84 -0
  76. package/dist/environment-raycast/raycast-target.js.map +1 -0
  77. package/dist/grab/distance-grabbable.d.ts +27 -2
  78. package/dist/grab/distance-grabbable.d.ts.map +1 -1
  79. package/dist/grab/distance-grabbable.js +25 -2
  80. package/dist/grab/distance-grabbable.js.map +1 -1
  81. package/dist/grab/grab-system.d.ts +106 -61
  82. package/dist/grab/grab-system.d.ts.map +1 -1
  83. package/dist/grab/grab-system.js +61 -10
  84. package/dist/grab/grab-system.js.map +1 -1
  85. package/dist/grab/handles.d.ts +14 -4
  86. package/dist/grab/handles.d.ts.map +1 -1
  87. package/dist/grab/handles.js +45 -18
  88. package/dist/grab/handles.js.map +1 -1
  89. package/dist/grab/index.d.ts +0 -1
  90. package/dist/grab/index.d.ts.map +1 -1
  91. package/dist/grab/index.js +0 -2
  92. package/dist/grab/index.js.map +1 -1
  93. package/dist/grab/one-hand-grabbable.js +1 -0
  94. package/dist/grab/one-hand-grabbable.js.map +1 -1
  95. package/dist/grab/two-hands-grabbable.js +1 -0
  96. package/dist/grab/two-hands-grabbable.js.map +1 -1
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +9 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/init/world-initializer.d.ts +13 -1
  102. package/dist/init/world-initializer.d.ts.map +1 -1
  103. package/dist/init/world-initializer.js +78 -18
  104. package/dist/init/world-initializer.js.map +1 -1
  105. package/dist/init/xr.d.ts +1 -0
  106. package/dist/init/xr.d.ts.map +1 -1
  107. package/dist/init/xr.js +6 -0
  108. package/dist/init/xr.js.map +1 -1
  109. package/dist/input/input-system.d.ts +409 -5
  110. package/dist/input/input-system.d.ts.map +1 -1
  111. package/dist/input/input-system.js +166 -32
  112. package/dist/input/input-system.js.map +1 -1
  113. package/dist/input/state-tags.d.ts +32 -15
  114. package/dist/input/state-tags.d.ts.map +1 -1
  115. package/dist/input/state-tags.js +34 -16
  116. package/dist/input/state-tags.js.map +1 -1
  117. package/dist/level/level-entity-creator.js +1 -0
  118. package/dist/level/level-entity-creator.js.map +1 -1
  119. package/dist/level/level-root.js +1 -0
  120. package/dist/level/level-root.js.map +1 -1
  121. package/dist/level/level-system.js +1 -0
  122. package/dist/level/level-system.js.map +1 -1
  123. package/dist/level/level-tag.js +1 -0
  124. package/dist/level/level-tag.js.map +1 -1
  125. package/dist/locomotion/locomotion.d.ts +10 -0
  126. package/dist/locomotion/locomotion.d.ts.map +1 -1
  127. package/dist/locomotion/locomotion.js +17 -1
  128. package/dist/locomotion/locomotion.js.map +1 -1
  129. package/dist/locomotion/slide.d.ts +10 -0
  130. package/dist/locomotion/slide.d.ts.map +1 -1
  131. package/dist/locomotion/slide.js +6 -2
  132. package/dist/locomotion/slide.js.map +1 -1
  133. package/dist/locomotion/teleport.js +1 -0
  134. package/dist/locomotion/teleport.js.map +1 -1
  135. package/dist/mcp/ecs-debug-tools.d.ts +167 -0
  136. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -0
  137. package/dist/mcp/ecs-debug-tools.js +602 -0
  138. package/dist/mcp/ecs-debug-tools.js.map +1 -0
  139. package/dist/mcp/index.d.ts +10 -0
  140. package/dist/mcp/index.d.ts.map +1 -0
  141. package/dist/mcp/mcp-runtime.d.ts +31 -0
  142. package/dist/mcp/mcp-runtime.d.ts.map +1 -0
  143. package/dist/mcp/mcp-runtime.js +85 -0
  144. package/dist/mcp/mcp-runtime.js.map +1 -0
  145. package/dist/mcp/scene-tools.d.ts +41 -0
  146. package/dist/mcp/scene-tools.d.ts.map +1 -0
  147. package/dist/mcp/scene-tools.js +95 -0
  148. package/dist/mcp/scene-tools.js.map +1 -0
  149. package/dist/physics/physics-system.d.ts +1 -1
  150. package/dist/physics/physics-system.d.ts.map +1 -1
  151. package/dist/physics/physics-system.js +9 -4
  152. package/dist/physics/physics-system.js.map +1 -1
  153. package/dist/physics/utils.d.ts.map +1 -1
  154. package/dist/physics/utils.js +1 -1
  155. package/dist/scene-understanding/anchor.js +1 -0
  156. package/dist/scene-understanding/anchor.js.map +1 -1
  157. package/dist/scene-understanding/mesh.js +1 -0
  158. package/dist/scene-understanding/mesh.js.map +1 -1
  159. package/dist/scene-understanding/plane.js +1 -0
  160. package/dist/scene-understanding/plane.js.map +1 -1
  161. package/dist/scene-understanding/scene-understanding-system.d.ts +0 -39
  162. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  163. package/dist/scene-understanding/scene-understanding-system.js +10 -2
  164. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  165. package/dist/transform/index.d.ts +2 -0
  166. package/dist/transform/index.d.ts.map +1 -1
  167. package/dist/transform/synced-euler.d.ts +62 -0
  168. package/dist/transform/synced-euler.d.ts.map +1 -0
  169. package/dist/transform/synced-euler.js +212 -0
  170. package/dist/transform/synced-euler.js.map +1 -0
  171. package/dist/transform/synced-quaternion.d.ts +11 -0
  172. package/dist/transform/synced-quaternion.d.ts.map +1 -1
  173. package/dist/transform/synced-quaternion.js +29 -0
  174. package/dist/transform/synced-quaternion.js.map +1 -1
  175. package/dist/transform/transform-utils.d.ts +24 -0
  176. package/dist/transform/transform-utils.d.ts.map +1 -0
  177. package/dist/transform/transform-utils.js +53 -0
  178. package/dist/transform/transform-utils.js.map +1 -0
  179. package/dist/transform/transform.d.ts.map +1 -1
  180. package/dist/transform/transform.js +19 -2
  181. package/dist/transform/transform.js.map +1 -1
  182. package/dist/ui/follow.js +1 -0
  183. package/dist/ui/follow.js.map +1 -1
  184. package/dist/ui/index.d.ts +1 -1
  185. package/dist/ui/index.d.ts.map +1 -1
  186. package/dist/ui/screenspace.js +1 -0
  187. package/dist/ui/screenspace.js.map +1 -1
  188. package/dist/ui/ui.d.ts.map +1 -1
  189. package/dist/ui/ui.js +2 -8
  190. package/dist/ui/ui.js.map +1 -1
  191. package/dist/version.d.ts +1 -1
  192. package/dist/version.js +1 -1
  193. package/dist/visibility/visibility.d.ts.map +1 -1
  194. package/dist/visibility/visibility.js +4 -1
  195. package/dist/visibility/visibility.js.map +1 -1
  196. package/package.json +16 -9
  197. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js +0 -128
  198. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js.map +0 -1
  199. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +0 -161
  200. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +0 -1
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +0 -66
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +0 -1
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +0 -162
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +0 -1
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +0 -519
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +0 -1
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +0 -15
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +0 -1
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +0 -32
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +0 -1
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +0 -10
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +0 -1
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +0 -41
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +0 -1
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +0 -35
  216. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +0 -1
  217. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +0 -24
  218. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +0 -1
  219. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +0 -92
  220. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +0 -1
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +0 -382
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +0 -1
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +0 -2587
  224. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +0 -1
  225. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +0 -477
  226. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +0 -1
  227. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +0 -17
  228. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"EXRLoader.js","sources":["../../../../../../../../../../../node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js"],"sourcesContent":["import {\n\tDataTextureLoader,\n\tDataUtils,\n\tFloatType,\n\tHalfFloatType,\n\tNoColorSpace,\n\tLinearFilter,\n\tLinearSRGBColorSpace,\n\tRedFormat,\n\tRGBAFormat\n} from 'three';\nimport * as fflate from '../libs/fflate.module.js';\n\n// Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n// implementation, so I have preserved their copyright notices.\n\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n\n// // End of OpenEXR license -------------------------------------------------\n\n\n/**\n * A loader for the OpenEXR texture format.\n *\n * `EXRLoader` currently supports uncompressed, ZIP(S), RLE, PIZ and DWA/B compression.\n * Supports reading as UnsignedByte, HalfFloat and Float type data texture.\n *\n * ```js\n * const loader = new EXRLoader();\n * const texture = await loader.loadAsync( 'textures/memorial.exr' );\n * ```\n *\n * @augments DataTextureLoader\n * @three_import import { EXRLoader } from 'three/addons/loaders/EXRLoader.js';\n */\nclass EXRLoader extends DataTextureLoader {\n\n\t/**\n\t * Constructs a new EXR loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\t/**\n\t\t * The texture type.\n\t\t *\n\t\t * @type {(HalfFloatType|FloatType)}\n\t\t * @default HalfFloatType\n\t\t */\n\t\tthis.type = HalfFloatType;\n\n\t}\n\n\t/**\n\t * Parses the given EXR texture data.\n\t *\n\t * @param {ArrayBuffer} buffer - The raw texture data.\n\t * @return {DataTextureLoader~TexData} An object representing the parsed texture data.\n\t */\n\tparse( buffer ) {\n\n\t\tconst USHORT_RANGE = ( 1 << 16 );\n\t\tconst BITMAP_SIZE = ( USHORT_RANGE >> 3 );\n\n\t\tconst HUF_ENCBITS = 16; // literal (value) bit length\n\t\tconst HUF_DECBITS = 14; // decoding bit size (>= 8)\n\n\t\tconst HUF_ENCSIZE = ( 1 << HUF_ENCBITS ) + 1; // encoding table size\n\t\tconst HUF_DECSIZE = 1 << HUF_DECBITS; // decoding table size\n\t\tconst HUF_DECMASK = HUF_DECSIZE - 1;\n\n\t\tconst NBITS = 16;\n\t\tconst A_OFFSET = 1 << ( NBITS - 1 );\n\t\tconst MOD_MASK = ( 1 << NBITS ) - 1;\n\n\t\tconst SHORT_ZEROCODE_RUN = 59;\n\t\tconst LONG_ZEROCODE_RUN = 63;\n\t\tconst SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN;\n\n\t\tconst ULONG_SIZE = 8;\n\t\tconst FLOAT32_SIZE = 4;\n\t\tconst INT32_SIZE = 4;\n\t\tconst INT16_SIZE = 2;\n\t\tconst INT8_SIZE = 1;\n\n\t\tconst STATIC_HUFFMAN = 0;\n\t\tconst DEFLATE = 1;\n\n\t\tconst UNKNOWN = 0;\n\t\tconst LOSSY_DCT = 1;\n\t\tconst RLE = 2;\n\n\t\tconst logBase = Math.pow( 2.7182818, 2.2 );\n\n\t\tfunction reverseLutFromBitmap( bitmap, lut ) {\n\n\t\t\tlet k = 0;\n\n\t\t\tfor ( let i = 0; i < USHORT_RANGE; ++ i ) {\n\n\t\t\t\tif ( ( i == 0 ) || ( bitmap[ i >> 3 ] & ( 1 << ( i & 7 ) ) ) ) {\n\n\t\t\t\t\tlut[ k ++ ] = i;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst n = k - 1;\n\n\t\t\twhile ( k < USHORT_RANGE ) lut[ k ++ ] = 0;\n\n\t\t\treturn n;\n\n\t\t}\n\n\t\tfunction hufClearDecTable( hdec ) {\n\n\t\t\tfor ( let i = 0; i < HUF_DECSIZE; i ++ ) {\n\n\t\t\t\thdec[ i ] = {};\n\t\t\t\thdec[ i ].len = 0;\n\t\t\t\thdec[ i ].lit = 0;\n\t\t\t\thdec[ i ].p = null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst getBitsReturn = { l: 0, c: 0, lc: 0 };\n\n\t\tfunction getBits( nBits, c, lc, uInt8Array, inOffset ) {\n\n\t\t\twhile ( lc < nBits ) {\n\n\t\t\t\tc = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset );\n\t\t\t\tlc += 8;\n\n\t\t\t}\n\n\t\t\tlc -= nBits;\n\n\t\t\tgetBitsReturn.l = ( c >> lc ) & ( ( 1 << nBits ) - 1 );\n\t\t\tgetBitsReturn.c = c;\n\t\t\tgetBitsReturn.lc = lc;\n\n\t\t}\n\n\t\tconst hufTableBuffer = new Array( 59 );\n\n\t\tfunction hufCanonicalCodeTable( hcode ) {\n\n\t\t\tfor ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0;\n\t\t\tfor ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1;\n\n\t\t\tlet c = 0;\n\n\t\t\tfor ( let i = 58; i > 0; -- i ) {\n\n\t\t\t\tconst nc = ( ( c + hufTableBuffer[ i ] ) >> 1 );\n\t\t\t\thufTableBuffer[ i ] = c;\n\t\t\t\tc = nc;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < HUF_ENCSIZE; ++ i ) {\n\n\t\t\t\tconst l = hcode[ i ];\n\t\t\t\tif ( l > 0 ) hcode[ i ] = l | ( hufTableBuffer[ l ] ++ << 6 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) {\n\n\t\t\tconst p = inOffset;\n\t\t\tlet c = 0;\n\t\t\tlet lc = 0;\n\n\t\t\tfor ( ; im <= iM; im ++ ) {\n\n\t\t\t\tif ( p.value - inOffset.value > ni ) return false;\n\n\t\t\t\tgetBits( 6, c, lc, uInt8Array, p );\n\n\t\t\t\tconst l = getBitsReturn.l;\n\t\t\t\tc = getBitsReturn.c;\n\t\t\t\tlc = getBitsReturn.lc;\n\n\t\t\t\thcode[ im ] = l;\n\n\t\t\t\tif ( l == LONG_ZEROCODE_RUN ) {\n\n\t\t\t\t\tif ( p.value - inOffset.value > ni ) {\n\n\t\t\t\t\t\tthrow new Error( 'Something wrong with hufUnpackEncTable' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgetBits( 8, c, lc, uInt8Array, p );\n\n\t\t\t\t\tlet zerun = getBitsReturn.l + SHORTEST_LONG_RUN;\n\t\t\t\t\tc = getBitsReturn.c;\n\t\t\t\t\tlc = getBitsReturn.lc;\n\n\t\t\t\t\tif ( im + zerun > iM + 1 ) {\n\n\t\t\t\t\t\tthrow new Error( 'Something wrong with hufUnpackEncTable' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( zerun -- ) hcode[ im ++ ] = 0;\n\n\t\t\t\t\tim --;\n\n\t\t\t\t} else if ( l >= SHORT_ZEROCODE_RUN ) {\n\n\t\t\t\t\tlet zerun = l - SHORT_ZEROCODE_RUN + 2;\n\n\t\t\t\t\tif ( im + zerun > iM + 1 ) {\n\n\t\t\t\t\t\tthrow new Error( 'Something wrong with hufUnpackEncTable' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\twhile ( zerun -- ) hcode[ im ++ ] = 0;\n\n\t\t\t\t\tim --;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thufCanonicalCodeTable( hcode );\n\n\t\t}\n\n\t\tfunction hufLength( code ) {\n\n\t\t\treturn code & 63;\n\n\t\t}\n\n\t\tfunction hufCode( code ) {\n\n\t\t\treturn code >> 6;\n\n\t\t}\n\n\t\tfunction hufBuildDecTable( hcode, im, iM, hdecod ) {\n\n\t\t\tfor ( ; im <= iM; im ++ ) {\n\n\t\t\t\tconst c = hufCode( hcode[ im ] );\n\t\t\t\tconst l = hufLength( hcode[ im ] );\n\n\t\t\t\tif ( c >> l ) {\n\n\t\t\t\t\tthrow new Error( 'Invalid table entry' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( l > HUF_DECBITS ) {\n\n\t\t\t\t\tconst pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ];\n\n\t\t\t\t\tif ( pl.len ) {\n\n\t\t\t\t\t\tthrow new Error( 'Invalid table entry' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tpl.lit ++;\n\n\t\t\t\t\tif ( pl.p ) {\n\n\t\t\t\t\t\tconst p = pl.p;\n\t\t\t\t\t\tpl.p = new Array( pl.lit );\n\n\t\t\t\t\t\tfor ( let i = 0; i < pl.lit - 1; ++ i ) {\n\n\t\t\t\t\t\t\tpl.p[ i ] = p[ i ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpl.p = new Array( 1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tpl.p[ pl.lit - 1 ] = im;\n\n\t\t\t\t} else if ( l ) {\n\n\t\t\t\t\tlet plOffset = 0;\n\n\t\t\t\t\tfor ( let i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) {\n\n\t\t\t\t\t\tconst pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ];\n\n\t\t\t\t\t\tif ( pl.len || pl.p ) {\n\n\t\t\t\t\t\t\tthrow new Error( 'Invalid table entry' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpl.len = l;\n\t\t\t\t\t\tpl.lit = im;\n\n\t\t\t\t\t\tplOffset ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst getCharReturn = { c: 0, lc: 0 };\n\n\t\tfunction getChar( c, lc, uInt8Array, inOffset ) {\n\n\t\t\tc = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset );\n\t\t\tlc += 8;\n\n\t\t\tgetCharReturn.c = c;\n\t\t\tgetCharReturn.lc = lc;\n\n\t\t}\n\n\t\tconst getCodeReturn = { c: 0, lc: 0 };\n\n\t\tfunction getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) {\n\n\t\t\tif ( po == rlc ) {\n\n\t\t\t\tif ( lc < 8 ) {\n\n\t\t\t\t\tgetChar( c, lc, uInt8Array, inOffset );\n\t\t\t\t\tc = getCharReturn.c;\n\t\t\t\t\tlc = getCharReturn.lc;\n\n\t\t\t\t}\n\n\t\t\t\tlc -= 8;\n\n\t\t\t\tlet cs = ( c >> lc );\n\t\t\t\tcs = new Uint8Array( [ cs ] )[ 0 ];\n\n\t\t\t\tif ( outBufferOffset.value + cs > outBufferEndOffset ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t\tconst s = outBuffer[ outBufferOffset.value - 1 ];\n\n\t\t\t\twhile ( cs -- > 0 ) {\n\n\t\t\t\t\toutBuffer[ outBufferOffset.value ++ ] = s;\n\n\t\t\t\t}\n\n\t\t\t} else if ( outBufferOffset.value < outBufferEndOffset ) {\n\n\t\t\t\toutBuffer[ outBufferOffset.value ++ ] = po;\n\n\t\t\t} else {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\tgetCodeReturn.c = c;\n\t\t\tgetCodeReturn.lc = lc;\n\n\t\t}\n\n\t\tfunction UInt16( value ) {\n\n\t\t\treturn ( value & 0xFFFF );\n\n\t\t}\n\n\t\tfunction Int16( value ) {\n\n\t\t\tconst ref = UInt16( value );\n\t\t\treturn ( ref > 0x7FFF ) ? ref - 0x10000 : ref;\n\n\t\t}\n\n\t\tconst wdec14Return = { a: 0, b: 0 };\n\n\t\tfunction wdec14( l, h ) {\n\n\t\t\tconst ls = Int16( l );\n\t\t\tconst hs = Int16( h );\n\n\t\t\tconst hi = hs;\n\t\t\tconst ai = ls + ( hi & 1 ) + ( hi >> 1 );\n\n\t\t\tconst as = ai;\n\t\t\tconst bs = ai - hi;\n\n\t\t\twdec14Return.a = as;\n\t\t\twdec14Return.b = bs;\n\n\t\t}\n\n\t\tfunction wdec16( l, h ) {\n\n\t\t\tconst m = UInt16( l );\n\t\t\tconst d = UInt16( h );\n\n\t\t\tconst bb = ( m - ( d >> 1 ) ) & MOD_MASK;\n\t\t\tconst aa = ( d + bb - A_OFFSET ) & MOD_MASK;\n\n\t\t\twdec14Return.a = aa;\n\t\t\twdec14Return.b = bb;\n\n\t\t}\n\n\t\tfunction wav2Decode( buffer, j, nx, ox, ny, oy, mx ) {\n\n\t\t\tconst w14 = mx < ( 1 << 14 );\n\t\t\tconst n = ( nx > ny ) ? ny : nx;\n\t\t\tlet p = 1;\n\t\t\tlet p2;\n\t\t\tlet py;\n\n\t\t\twhile ( p <= n ) p <<= 1;\n\n\t\t\tp >>= 1;\n\t\t\tp2 = p;\n\t\t\tp >>= 1;\n\n\t\t\twhile ( p >= 1 ) {\n\n\t\t\t\tpy = 0;\n\t\t\t\tconst ey = py + oy * ( ny - p2 );\n\t\t\t\tconst oy1 = oy * p;\n\t\t\t\tconst oy2 = oy * p2;\n\t\t\t\tconst ox1 = ox * p;\n\t\t\t\tconst ox2 = ox * p2;\n\t\t\t\tlet i00, i01, i10, i11;\n\n\t\t\t\tfor ( ; py <= ey; py += oy2 ) {\n\n\t\t\t\t\tlet px = py;\n\t\t\t\t\tconst ex = py + ox * ( nx - p2 );\n\n\t\t\t\t\tfor ( ; px <= ex; px += ox2 ) {\n\n\t\t\t\t\t\tconst p01 = px + ox1;\n\t\t\t\t\t\tconst p10 = px + oy1;\n\t\t\t\t\t\tconst p11 = p10 + ox1;\n\n\t\t\t\t\t\tif ( w14 ) {\n\n\t\t\t\t\t\t\twdec14( buffer[ px + j ], buffer[ p10 + j ] );\n\n\t\t\t\t\t\t\ti00 = wdec14Return.a;\n\t\t\t\t\t\t\ti10 = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec14( buffer[ p01 + j ], buffer[ p11 + j ] );\n\n\t\t\t\t\t\t\ti01 = wdec14Return.a;\n\t\t\t\t\t\t\ti11 = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec14( i00, i01 );\n\n\t\t\t\t\t\t\tbuffer[ px + j ] = wdec14Return.a;\n\t\t\t\t\t\t\tbuffer[ p01 + j ] = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec14( i10, i11 );\n\n\t\t\t\t\t\t\tbuffer[ p10 + j ] = wdec14Return.a;\n\t\t\t\t\t\t\tbuffer[ p11 + j ] = wdec14Return.b;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\twdec16( buffer[ px + j ], buffer[ p10 + j ] );\n\n\t\t\t\t\t\t\ti00 = wdec14Return.a;\n\t\t\t\t\t\t\ti10 = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec16( buffer[ p01 + j ], buffer[ p11 + j ] );\n\n\t\t\t\t\t\t\ti01 = wdec14Return.a;\n\t\t\t\t\t\t\ti11 = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec16( i00, i01 );\n\n\t\t\t\t\t\t\tbuffer[ px + j ] = wdec14Return.a;\n\t\t\t\t\t\t\tbuffer[ p01 + j ] = wdec14Return.b;\n\n\t\t\t\t\t\t\twdec16( i10, i11 );\n\n\t\t\t\t\t\t\tbuffer[ p10 + j ] = wdec14Return.a;\n\t\t\t\t\t\t\tbuffer[ p11 + j ] = wdec14Return.b;\n\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( nx & p ) {\n\n\t\t\t\t\t\tconst p10 = px + oy1;\n\n\t\t\t\t\t\tif ( w14 )\n\t\t\t\t\t\t\twdec14( buffer[ px + j ], buffer[ p10 + j ] );\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\twdec16( buffer[ px + j ], buffer[ p10 + j ] );\n\n\t\t\t\t\t\ti00 = wdec14Return.a;\n\t\t\t\t\t\tbuffer[ p10 + j ] = wdec14Return.b;\n\n\t\t\t\t\t\tbuffer[ px + j ] = i00;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ny & p ) {\n\n\t\t\t\t\tlet px = py;\n\t\t\t\t\tconst ex = py + ox * ( nx - p2 );\n\n\t\t\t\t\tfor ( ; px <= ex; px += ox2 ) {\n\n\t\t\t\t\t\tconst p01 = px + ox1;\n\n\t\t\t\t\t\tif ( w14 )\n\t\t\t\t\t\t\twdec14( buffer[ px + j ], buffer[ p01 + j ] );\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\twdec16( buffer[ px + j ], buffer[ p01 + j ] );\n\n\t\t\t\t\t\ti00 = wdec14Return.a;\n\t\t\t\t\t\tbuffer[ p01 + j ] = wdec14Return.b;\n\n\t\t\t\t\t\tbuffer[ px + j ] = i00;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tp2 = p;\n\t\t\t\tp >>= 1;\n\n\t\t\t}\n\n\t\t\treturn py;\n\n\t\t}\n\n\t\tfunction hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) {\n\n\t\t\tlet c = 0;\n\t\t\tlet lc = 0;\n\t\t\tconst outBufferEndOffset = no;\n\t\t\tconst inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 );\n\n\t\t\twhile ( inOffset.value < inOffsetEnd ) {\n\n\t\t\t\tgetChar( c, lc, uInt8Array, inOffset );\n\n\t\t\t\tc = getCharReturn.c;\n\t\t\t\tlc = getCharReturn.lc;\n\n\t\t\t\twhile ( lc >= HUF_DECBITS ) {\n\n\t\t\t\t\tconst index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK;\n\t\t\t\t\tconst pl = decodingTable[ index ];\n\n\t\t\t\t\tif ( pl.len ) {\n\n\t\t\t\t\t\tlc -= pl.len;\n\n\t\t\t\t\t\tgetCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );\n\n\t\t\t\t\t\tc = getCodeReturn.c;\n\t\t\t\t\t\tlc = getCodeReturn.lc;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( ! pl.p ) {\n\n\t\t\t\t\t\t\tthrow new Error( 'hufDecode issues' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet j;\n\n\t\t\t\t\t\tfor ( j = 0; j < pl.lit; j ++ ) {\n\n\t\t\t\t\t\t\tconst l = hufLength( encodingTable[ pl.p[ j ] ] );\n\n\t\t\t\t\t\t\twhile ( lc < l && inOffset.value < inOffsetEnd ) {\n\n\t\t\t\t\t\t\t\tgetChar( c, lc, uInt8Array, inOffset );\n\n\t\t\t\t\t\t\t\tc = getCharReturn.c;\n\t\t\t\t\t\t\t\tlc = getCharReturn.lc;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( lc >= l ) {\n\n\t\t\t\t\t\t\t\tif ( hufCode( encodingTable[ pl.p[ j ] ] ) == ( ( c >> ( lc - l ) ) & ( ( 1 << l ) - 1 ) ) ) {\n\n\t\t\t\t\t\t\t\t\tlc -= l;\n\n\t\t\t\t\t\t\t\t\tgetCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );\n\n\t\t\t\t\t\t\t\t\tc = getCodeReturn.c;\n\t\t\t\t\t\t\t\t\tlc = getCodeReturn.lc;\n\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( j == pl.lit ) {\n\n\t\t\t\t\t\t\tthrow new Error( 'hufDecode issues' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst i = ( 8 - ni ) & 7;\n\n\t\t\tc >>= i;\n\t\t\tlc -= i;\n\n\t\t\twhile ( lc > 0 ) {\n\n\t\t\t\tconst pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ];\n\n\t\t\t\tif ( pl.len ) {\n\n\t\t\t\t\tlc -= pl.len;\n\n\t\t\t\t\tgetCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );\n\n\t\t\t\t\tc = getCodeReturn.c;\n\t\t\t\t\tlc = getCodeReturn.lc;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'hufDecode issues' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) {\n\n\t\t\tconst outOffset = { value: 0 };\n\t\t\tconst initialInOffset = inOffset.value;\n\n\t\t\tconst im = parseUint32( inDataView, inOffset );\n\t\t\tconst iM = parseUint32( inDataView, inOffset );\n\n\t\t\tinOffset.value += 4;\n\n\t\t\tconst nBits = parseUint32( inDataView, inOffset );\n\n\t\t\tinOffset.value += 4;\n\n\t\t\tif ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) {\n\n\t\t\t\tthrow new Error( 'Something wrong with HUF_ENCSIZE' );\n\n\t\t\t}\n\n\t\t\tconst freq = new Array( HUF_ENCSIZE );\n\t\t\tconst hdec = new Array( HUF_DECSIZE );\n\n\t\t\thufClearDecTable( hdec );\n\n\t\t\tconst ni = nCompressed - ( inOffset.value - initialInOffset );\n\n\t\t\thufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq );\n\n\t\t\tif ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {\n\n\t\t\t\tthrow new Error( 'Something wrong with hufUncompress' );\n\n\t\t\t}\n\n\t\t\thufBuildDecTable( freq, im, iM, hdec );\n\n\t\t\thufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset );\n\n\t\t}\n\n\t\tfunction applyLut( lut, data, nData ) {\n\n\t\t\tfor ( let i = 0; i < nData; ++ i ) {\n\n\t\t\t\tdata[ i ] = lut[ data[ i ] ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction predictor( source ) {\n\n\t\t\tfor ( let t = 1; t < source.length; t ++ ) {\n\n\t\t\t\tconst d = source[ t - 1 ] + source[ t ] - 128;\n\t\t\t\tsource[ t ] = d;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction interleaveScalar( source, out ) {\n\n\t\t\tlet t1 = 0;\n\t\t\tlet t2 = Math.floor( ( source.length + 1 ) / 2 );\n\t\t\tlet s = 0;\n\t\t\tconst stop = source.length - 1;\n\n\t\t\twhile ( true ) {\n\n\t\t\t\tif ( s > stop ) break;\n\t\t\t\tout[ s ++ ] = source[ t1 ++ ];\n\n\t\t\t\tif ( s > stop ) break;\n\t\t\t\tout[ s ++ ] = source[ t2 ++ ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction decodeRunLength( source ) {\n\n\t\t\tlet size = source.byteLength;\n\t\t\tconst out = new Array();\n\t\t\tlet p = 0;\n\n\t\t\tconst reader = new DataView( source );\n\n\t\t\twhile ( size > 0 ) {\n\n\t\t\t\tconst l = reader.getInt8( p ++ );\n\n\t\t\t\tif ( l < 0 ) {\n\n\t\t\t\t\tconst count = - l;\n\t\t\t\t\tsize -= count + 1;\n\n\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\tout.push( reader.getUint8( p ++ ) );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst count = l;\n\t\t\t\t\tsize -= 2;\n\n\t\t\t\t\tconst value = reader.getUint8( p ++ );\n\n\t\t\t\t\tfor ( let i = 0; i < count + 1; i ++ ) {\n\n\t\t\t\t\t\tout.push( value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn out;\n\n\t\t}\n\n\t\tfunction lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) {\n\n\t\t\tlet dataView = new DataView( outBuffer.buffer );\n\n\t\t\tconst width = channelData[ cscSet.idx[ 0 ] ].width;\n\t\t\tconst height = channelData[ cscSet.idx[ 0 ] ].height;\n\n\t\t\tconst numComp = 3;\n\n\t\t\tconst numFullBlocksX = Math.floor( width / 8.0 );\n\t\t\tconst numBlocksX = Math.ceil( width / 8.0 );\n\t\t\tconst numBlocksY = Math.ceil( height / 8.0 );\n\t\t\tconst leftoverX = width - ( numBlocksX - 1 ) * 8;\n\t\t\tconst leftoverY = height - ( numBlocksY - 1 ) * 8;\n\n\t\t\tconst currAcComp = { value: 0 };\n\t\t\tconst currDcComp = new Array( numComp );\n\t\t\tconst dctData = new Array( numComp );\n\t\t\tconst halfZigBlock = new Array( numComp );\n\t\t\tconst rowBlock = new Array( numComp );\n\t\t\tconst rowOffsets = new Array( numComp );\n\n\t\t\tfor ( let comp = 0; comp < numComp; ++ comp ) {\n\n\t\t\t\trowOffsets[ comp ] = rowPtrs[ cscSet.idx[ comp ] ];\n\t\t\t\tcurrDcComp[ comp ] = ( comp < 1 ) ? 0 : currDcComp[ comp - 1 ] + numBlocksX * numBlocksY;\n\t\t\t\tdctData[ comp ] = new Float32Array( 64 );\n\t\t\t\thalfZigBlock[ comp ] = new Uint16Array( 64 );\n\t\t\t\trowBlock[ comp ] = new Uint16Array( numBlocksX * 64 );\n\n\t\t\t}\n\n\t\t\tfor ( let blocky = 0; blocky < numBlocksY; ++ blocky ) {\n\n\t\t\t\tlet maxY = 8;\n\n\t\t\t\tif ( blocky == numBlocksY - 1 )\n\t\t\t\t\tmaxY = leftoverY;\n\n\t\t\t\tlet maxX = 8;\n\n\t\t\t\tfor ( let blockx = 0; blockx < numBlocksX; ++ blockx ) {\n\n\t\t\t\t\tif ( blockx == numBlocksX - 1 )\n\t\t\t\t\t\tmaxX = leftoverX;\n\n\t\t\t\t\tfor ( let comp = 0; comp < numComp; ++ comp ) {\n\n\t\t\t\t\t\thalfZigBlock[ comp ].fill( 0 );\n\n\t\t\t\t\t\t// set block DC component\n\t\t\t\t\t\thalfZigBlock[ comp ][ 0 ] = dcBuffer[ currDcComp[ comp ] ++ ];\n\t\t\t\t\t\t// set block AC components\n\t\t\t\t\t\tunRleAC( currAcComp, acBuffer, halfZigBlock[ comp ] );\n\n\t\t\t\t\t\t// UnZigZag block to float\n\t\t\t\t\t\tunZigZag( halfZigBlock[ comp ], dctData[ comp ] );\n\t\t\t\t\t\t// decode float dct\n\t\t\t\t\t\tdctInverse( dctData[ comp ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( numComp == 3 ) {\n\n\t\t\t\t\t\tcsc709Inverse( dctData );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let comp = 0; comp < numComp; ++ comp ) {\n\n\t\t\t\t\t\tconvertToHalf( dctData[ comp ], rowBlock[ comp ], blockx * 64 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} // blockx\n\n\t\t\t\tlet offset = 0;\n\n\t\t\t\tfor ( let comp = 0; comp < numComp; ++ comp ) {\n\n\t\t\t\t\tconst type = channelData[ cscSet.idx[ comp ] ].type;\n\n\t\t\t\t\tfor ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) {\n\n\t\t\t\t\t\toffset = rowOffsets[ comp ][ y ];\n\n\t\t\t\t\t\tfor ( let blockx = 0; blockx < numFullBlocksX; ++ blockx ) {\n\n\t\t\t\t\t\t\tconst src = blockx * 64 + ( ( y & 0x7 ) * 8 );\n\n\t\t\t\t\t\t\tdataView.setUint16( offset + 0 * INT16_SIZE * type, rowBlock[ comp ][ src + 0 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 1 * INT16_SIZE * type, rowBlock[ comp ][ src + 1 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 2 * INT16_SIZE * type, rowBlock[ comp ][ src + 2 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 3 * INT16_SIZE * type, rowBlock[ comp ][ src + 3 ], true );\n\n\t\t\t\t\t\t\tdataView.setUint16( offset + 4 * INT16_SIZE * type, rowBlock[ comp ][ src + 4 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 5 * INT16_SIZE * type, rowBlock[ comp ][ src + 5 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 6 * INT16_SIZE * type, rowBlock[ comp ][ src + 6 ], true );\n\t\t\t\t\t\t\tdataView.setUint16( offset + 7 * INT16_SIZE * type, rowBlock[ comp ][ src + 7 ], true );\n\n\t\t\t\t\t\t\toffset += 8 * INT16_SIZE * type;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// handle partial X blocks\n\t\t\t\t\tif ( numFullBlocksX != numBlocksX ) {\n\n\t\t\t\t\t\tfor ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) {\n\n\t\t\t\t\t\t\tconst offset = rowOffsets[ comp ][ y ] + 8 * numFullBlocksX * INT16_SIZE * type;\n\t\t\t\t\t\t\tconst src = numFullBlocksX * 64 + ( ( y & 0x7 ) * 8 );\n\n\t\t\t\t\t\t\tfor ( let x = 0; x < maxX; ++ x ) {\n\n\t\t\t\t\t\t\t\tdataView.setUint16( offset + x * INT16_SIZE * type, rowBlock[ comp ][ src + x ], true );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} // comp\n\n\t\t\t} // blocky\n\n\t\t\tconst halfRow = new Uint16Array( width );\n\t\t\tdataView = new DataView( outBuffer.buffer );\n\n\t\t\t// convert channels back to float, if needed\n\t\t\tfor ( let comp = 0; comp < numComp; ++ comp ) {\n\n\t\t\t\tchannelData[ cscSet.idx[ comp ] ].decoded = true;\n\t\t\t\tconst type = channelData[ cscSet.idx[ comp ] ].type;\n\n\t\t\t\tif ( channelData[ comp ].type != 2 ) continue;\n\n\t\t\t\tfor ( let y = 0; y < height; ++ y ) {\n\n\t\t\t\t\tconst offset = rowOffsets[ comp ][ y ];\n\n\t\t\t\t\tfor ( let x = 0; x < width; ++ x ) {\n\n\t\t\t\t\t\thalfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let x = 0; x < width; ++ x ) {\n\n\t\t\t\t\t\tdataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction unRleAC( currAcComp, acBuffer, halfZigBlock ) {\n\n\t\t\tlet acValue;\n\t\t\tlet dctComp = 1;\n\n\t\t\twhile ( dctComp < 64 ) {\n\n\t\t\t\tacValue = acBuffer[ currAcComp.value ];\n\n\t\t\t\tif ( acValue == 0xff00 ) {\n\n\t\t\t\t\tdctComp = 64;\n\n\t\t\t\t} else if ( acValue >> 8 == 0xff ) {\n\n\t\t\t\t\tdctComp += acValue & 0xff;\n\n\t\t\t\t} else {\n\n\t\t\t\t\thalfZigBlock[ dctComp ] = acValue;\n\t\t\t\t\tdctComp ++;\n\n\t\t\t\t}\n\n\t\t\t\tcurrAcComp.value ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction unZigZag( src, dst ) {\n\n\t\t\tdst[ 0 ] = decodeFloat16( src[ 0 ] );\n\t\t\tdst[ 1 ] = decodeFloat16( src[ 1 ] );\n\t\t\tdst[ 2 ] = decodeFloat16( src[ 5 ] );\n\t\t\tdst[ 3 ] = decodeFloat16( src[ 6 ] );\n\t\t\tdst[ 4 ] = decodeFloat16( src[ 14 ] );\n\t\t\tdst[ 5 ] = decodeFloat16( src[ 15 ] );\n\t\t\tdst[ 6 ] = decodeFloat16( src[ 27 ] );\n\t\t\tdst[ 7 ] = decodeFloat16( src[ 28 ] );\n\t\t\tdst[ 8 ] = decodeFloat16( src[ 2 ] );\n\t\t\tdst[ 9 ] = decodeFloat16( src[ 4 ] );\n\n\t\t\tdst[ 10 ] = decodeFloat16( src[ 7 ] );\n\t\t\tdst[ 11 ] = decodeFloat16( src[ 13 ] );\n\t\t\tdst[ 12 ] = decodeFloat16( src[ 16 ] );\n\t\t\tdst[ 13 ] = decodeFloat16( src[ 26 ] );\n\t\t\tdst[ 14 ] = decodeFloat16( src[ 29 ] );\n\t\t\tdst[ 15 ] = decodeFloat16( src[ 42 ] );\n\t\t\tdst[ 16 ] = decodeFloat16( src[ 3 ] );\n\t\t\tdst[ 17 ] = decodeFloat16( src[ 8 ] );\n\t\t\tdst[ 18 ] = decodeFloat16( src[ 12 ] );\n\t\t\tdst[ 19 ] = decodeFloat16( src[ 17 ] );\n\n\t\t\tdst[ 20 ] = decodeFloat16( src[ 25 ] );\n\t\t\tdst[ 21 ] = decodeFloat16( src[ 30 ] );\n\t\t\tdst[ 22 ] = decodeFloat16( src[ 41 ] );\n\t\t\tdst[ 23 ] = decodeFloat16( src[ 43 ] );\n\t\t\tdst[ 24 ] = decodeFloat16( src[ 9 ] );\n\t\t\tdst[ 25 ] = decodeFloat16( src[ 11 ] );\n\t\t\tdst[ 26 ] = decodeFloat16( src[ 18 ] );\n\t\t\tdst[ 27 ] = decodeFloat16( src[ 24 ] );\n\t\t\tdst[ 28 ] = decodeFloat16( src[ 31 ] );\n\t\t\tdst[ 29 ] = decodeFloat16( src[ 40 ] );\n\n\t\t\tdst[ 30 ] = decodeFloat16( src[ 44 ] );\n\t\t\tdst[ 31 ] = decodeFloat16( src[ 53 ] );\n\t\t\tdst[ 32 ] = decodeFloat16( src[ 10 ] );\n\t\t\tdst[ 33 ] = decodeFloat16( src[ 19 ] );\n\t\t\tdst[ 34 ] = decodeFloat16( src[ 23 ] );\n\t\t\tdst[ 35 ] = decodeFloat16( src[ 32 ] );\n\t\t\tdst[ 36 ] = decodeFloat16( src[ 39 ] );\n\t\t\tdst[ 37 ] = decodeFloat16( src[ 45 ] );\n\t\t\tdst[ 38 ] = decodeFloat16( src[ 52 ] );\n\t\t\tdst[ 39 ] = decodeFloat16( src[ 54 ] );\n\n\t\t\tdst[ 40 ] = decodeFloat16( src[ 20 ] );\n\t\t\tdst[ 41 ] = decodeFloat16( src[ 22 ] );\n\t\t\tdst[ 42 ] = decodeFloat16( src[ 33 ] );\n\t\t\tdst[ 43 ] = decodeFloat16( src[ 38 ] );\n\t\t\tdst[ 44 ] = decodeFloat16( src[ 46 ] );\n\t\t\tdst[ 45 ] = decodeFloat16( src[ 51 ] );\n\t\t\tdst[ 46 ] = decodeFloat16( src[ 55 ] );\n\t\t\tdst[ 47 ] = decodeFloat16( src[ 60 ] );\n\t\t\tdst[ 48 ] = decodeFloat16( src[ 21 ] );\n\t\t\tdst[ 49 ] = decodeFloat16( src[ 34 ] );\n\n\t\t\tdst[ 50 ] = decodeFloat16( src[ 37 ] );\n\t\t\tdst[ 51 ] = decodeFloat16( src[ 47 ] );\n\t\t\tdst[ 52 ] = decodeFloat16( src[ 50 ] );\n\t\t\tdst[ 53 ] = decodeFloat16( src[ 56 ] );\n\t\t\tdst[ 54 ] = decodeFloat16( src[ 59 ] );\n\t\t\tdst[ 55 ] = decodeFloat16( src[ 61 ] );\n\t\t\tdst[ 56 ] = decodeFloat16( src[ 35 ] );\n\t\t\tdst[ 57 ] = decodeFloat16( src[ 36 ] );\n\t\t\tdst[ 58 ] = decodeFloat16( src[ 48 ] );\n\t\t\tdst[ 59 ] = decodeFloat16( src[ 49 ] );\n\n\t\t\tdst[ 60 ] = decodeFloat16( src[ 57 ] );\n\t\t\tdst[ 61 ] = decodeFloat16( src[ 58 ] );\n\t\t\tdst[ 62 ] = decodeFloat16( src[ 62 ] );\n\t\t\tdst[ 63 ] = decodeFloat16( src[ 63 ] );\n\n\t\t}\n\n\t\tfunction dctInverse( data ) {\n\n\t\t\tconst a = 0.5 * Math.cos( 3.14159 / 4.0 );\n\t\t\tconst b = 0.5 * Math.cos( 3.14159 / 16.0 );\n\t\t\tconst c = 0.5 * Math.cos( 3.14159 / 8.0 );\n\t\t\tconst d = 0.5 * Math.cos( 3.0 * 3.14159 / 16.0 );\n\t\t\tconst e = 0.5 * Math.cos( 5.0 * 3.14159 / 16.0 );\n\t\t\tconst f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 );\n\t\t\tconst g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 );\n\n\t\t\tconst alpha = new Array( 4 );\n\t\t\tconst beta = new Array( 4 );\n\t\t\tconst theta = new Array( 4 );\n\t\t\tconst gamma = new Array( 4 );\n\n\t\t\tfor ( let row = 0; row < 8; ++ row ) {\n\n\t\t\t\tconst rowPtr = row * 8;\n\n\t\t\t\talpha[ 0 ] = c * data[ rowPtr + 2 ];\n\t\t\t\talpha[ 1 ] = f * data[ rowPtr + 2 ];\n\t\t\t\talpha[ 2 ] = c * data[ rowPtr + 6 ];\n\t\t\t\talpha[ 3 ] = f * data[ rowPtr + 6 ];\n\n\t\t\t\tbeta[ 0 ] = b * data[ rowPtr + 1 ] + d * data[ rowPtr + 3 ] + e * data[ rowPtr + 5 ] + g * data[ rowPtr + 7 ];\n\t\t\t\tbeta[ 1 ] = d * data[ rowPtr + 1 ] - g * data[ rowPtr + 3 ] - b * data[ rowPtr + 5 ] - e * data[ rowPtr + 7 ];\n\t\t\t\tbeta[ 2 ] = e * data[ rowPtr + 1 ] - b * data[ rowPtr + 3 ] + g * data[ rowPtr + 5 ] + d * data[ rowPtr + 7 ];\n\t\t\t\tbeta[ 3 ] = g * data[ rowPtr + 1 ] - e * data[ rowPtr + 3 ] + d * data[ rowPtr + 5 ] - b * data[ rowPtr + 7 ];\n\n\t\t\t\ttheta[ 0 ] = a * ( data[ rowPtr + 0 ] + data[ rowPtr + 4 ] );\n\t\t\t\ttheta[ 3 ] = a * ( data[ rowPtr + 0 ] - data[ rowPtr + 4 ] );\n\t\t\t\ttheta[ 1 ] = alpha[ 0 ] + alpha[ 3 ];\n\t\t\t\ttheta[ 2 ] = alpha[ 1 ] - alpha[ 2 ];\n\n\t\t\t\tgamma[ 0 ] = theta[ 0 ] + theta[ 1 ];\n\t\t\t\tgamma[ 1 ] = theta[ 3 ] + theta[ 2 ];\n\t\t\t\tgamma[ 2 ] = theta[ 3 ] - theta[ 2 ];\n\t\t\t\tgamma[ 3 ] = theta[ 0 ] - theta[ 1 ];\n\n\t\t\t\tdata[ rowPtr + 0 ] = gamma[ 0 ] + beta[ 0 ];\n\t\t\t\tdata[ rowPtr + 1 ] = gamma[ 1 ] + beta[ 1 ];\n\t\t\t\tdata[ rowPtr + 2 ] = gamma[ 2 ] + beta[ 2 ];\n\t\t\t\tdata[ rowPtr + 3 ] = gamma[ 3 ] + beta[ 3 ];\n\n\t\t\t\tdata[ rowPtr + 4 ] = gamma[ 3 ] - beta[ 3 ];\n\t\t\t\tdata[ rowPtr + 5 ] = gamma[ 2 ] - beta[ 2 ];\n\t\t\t\tdata[ rowPtr + 6 ] = gamma[ 1 ] - beta[ 1 ];\n\t\t\t\tdata[ rowPtr + 7 ] = gamma[ 0 ] - beta[ 0 ];\n\n\t\t\t}\n\n\t\t\tfor ( let column = 0; column < 8; ++ column ) {\n\n\t\t\t\talpha[ 0 ] = c * data[ 16 + column ];\n\t\t\t\talpha[ 1 ] = f * data[ 16 + column ];\n\t\t\t\talpha[ 2 ] = c * data[ 48 + column ];\n\t\t\t\talpha[ 3 ] = f * data[ 48 + column ];\n\n\t\t\t\tbeta[ 0 ] = b * data[ 8 + column ] + d * data[ 24 + column ] + e * data[ 40 + column ] + g * data[ 56 + column ];\n\t\t\t\tbeta[ 1 ] = d * data[ 8 + column ] - g * data[ 24 + column ] - b * data[ 40 + column ] - e * data[ 56 + column ];\n\t\t\t\tbeta[ 2 ] = e * data[ 8 + column ] - b * data[ 24 + column ] + g * data[ 40 + column ] + d * data[ 56 + column ];\n\t\t\t\tbeta[ 3 ] = g * data[ 8 + column ] - e * data[ 24 + column ] + d * data[ 40 + column ] - b * data[ 56 + column ];\n\n\t\t\t\ttheta[ 0 ] = a * ( data[ column ] + data[ 32 + column ] );\n\t\t\t\ttheta[ 3 ] = a * ( data[ column ] - data[ 32 + column ] );\n\n\t\t\t\ttheta[ 1 ] = alpha[ 0 ] + alpha[ 3 ];\n\t\t\t\ttheta[ 2 ] = alpha[ 1 ] - alpha[ 2 ];\n\n\t\t\t\tgamma[ 0 ] = theta[ 0 ] + theta[ 1 ];\n\t\t\t\tgamma[ 1 ] = theta[ 3 ] + theta[ 2 ];\n\t\t\t\tgamma[ 2 ] = theta[ 3 ] - theta[ 2 ];\n\t\t\t\tgamma[ 3 ] = theta[ 0 ] - theta[ 1 ];\n\n\t\t\t\tdata[ 0 + column ] = gamma[ 0 ] + beta[ 0 ];\n\t\t\t\tdata[ 8 + column ] = gamma[ 1 ] + beta[ 1 ];\n\t\t\t\tdata[ 16 + column ] = gamma[ 2 ] + beta[ 2 ];\n\t\t\t\tdata[ 24 + column ] = gamma[ 3 ] + beta[ 3 ];\n\n\t\t\t\tdata[ 32 + column ] = gamma[ 3 ] - beta[ 3 ];\n\t\t\t\tdata[ 40 + column ] = gamma[ 2 ] - beta[ 2 ];\n\t\t\t\tdata[ 48 + column ] = gamma[ 1 ] - beta[ 1 ];\n\t\t\t\tdata[ 56 + column ] = gamma[ 0 ] - beta[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction csc709Inverse( data ) {\n\n\t\t\tfor ( let i = 0; i < 64; ++ i ) {\n\n\t\t\t\tconst y = data[ 0 ][ i ];\n\t\t\t\tconst cb = data[ 1 ][ i ];\n\t\t\t\tconst cr = data[ 2 ][ i ];\n\n\t\t\t\tdata[ 0 ][ i ] = y + 1.5747 * cr;\n\t\t\t\tdata[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr;\n\t\t\t\tdata[ 2 ][ i ] = y + 1.8556 * cb;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction convertToHalf( src, dst, idx ) {\n\n\t\t\tfor ( let i = 0; i < 64; ++ i ) {\n\n\t\t\t\tdst[ idx + i ] = DataUtils.toHalfFloat( toLinear( src[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction toLinear( float ) {\n\n\t\t\tif ( float <= 1 ) {\n\n\t\t\t\treturn Math.sign( float ) * Math.pow( Math.abs( float ), 2.2 );\n\n\t\t\t} else {\n\n\t\t\t\treturn Math.sign( float ) * Math.pow( logBase, Math.abs( float ) - 1.0 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction uncompressRAW( info ) {\n\n\t\t\treturn new DataView( info.array.buffer, info.offset.value, info.size );\n\n\t\t}\n\n\t\tfunction uncompressRLE( info ) {\n\n\t\t\tconst compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size );\n\n\t\t\tconst rawBuffer = new Uint8Array( decodeRunLength( compressed ) );\n\t\t\tconst tmpBuffer = new Uint8Array( rawBuffer.length );\n\n\t\t\tpredictor( rawBuffer ); // revert predictor\n\n\t\t\tinterleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels\n\n\t\t\treturn new DataView( tmpBuffer.buffer );\n\n\t\t}\n\n\t\tfunction uncompressZIP( info ) {\n\n\t\t\tconst compressed = info.array.slice( info.offset.value, info.offset.value + info.size );\n\n\t\t\tconst rawBuffer = fflate.unzlibSync( compressed );\n\t\t\tconst tmpBuffer = new Uint8Array( rawBuffer.length );\n\n\t\t\tpredictor( rawBuffer ); // revert predictor\n\n\t\t\tinterleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels\n\n\t\t\treturn new DataView( tmpBuffer.buffer );\n\n\t\t}\n\n\t\tfunction uncompressPIZ( info ) {\n\n\t\t\tconst inDataView = info.viewer;\n\t\t\tconst inOffset = { value: info.offset.value };\n\n\t\t\tconst outBuffer = new Uint16Array( info.columns * info.lines * ( info.inputChannels.length * info.type ) );\n\t\t\tconst bitmap = new Uint8Array( BITMAP_SIZE );\n\n\t\t\t// Setup channel info\n\t\t\tlet outBufferEnd = 0;\n\t\t\tconst pizChannelData = new Array( info.inputChannels.length );\n\t\t\tfor ( let i = 0, il = info.inputChannels.length; i < il; i ++ ) {\n\n\t\t\t\tpizChannelData[ i ] = {};\n\t\t\t\tpizChannelData[ i ][ 'start' ] = outBufferEnd;\n\t\t\t\tpizChannelData[ i ][ 'end' ] = pizChannelData[ i ][ 'start' ];\n\t\t\t\tpizChannelData[ i ][ 'nx' ] = info.columns;\n\t\t\t\tpizChannelData[ i ][ 'ny' ] = info.lines;\n\t\t\t\tpizChannelData[ i ][ 'size' ] = info.type;\n\n\t\t\t\toutBufferEnd += pizChannelData[ i ].nx * pizChannelData[ i ].ny * pizChannelData[ i ].size;\n\n\t\t\t}\n\n\t\t\t// Read range compression data\n\n\t\t\tconst minNonZero = parseUint16( inDataView, inOffset );\n\t\t\tconst maxNonZero = parseUint16( inDataView, inOffset );\n\n\t\t\tif ( maxNonZero >= BITMAP_SIZE ) {\n\n\t\t\t\tthrow new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' );\n\n\t\t\t}\n\n\t\t\tif ( minNonZero <= maxNonZero ) {\n\n\t\t\t\tfor ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) {\n\n\t\t\t\t\tbitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Reverse LUT\n\t\t\tconst lut = new Uint16Array( USHORT_RANGE );\n\t\t\tconst maxValue = reverseLutFromBitmap( bitmap, lut );\n\n\t\t\tconst length = parseUint32( inDataView, inOffset );\n\n\t\t\t// Huffman decoding\n\t\t\thufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd );\n\n\t\t\t// Wavelet decoding\n\t\t\tfor ( let i = 0; i < info.inputChannels.length; ++ i ) {\n\n\t\t\t\tconst cd = pizChannelData[ i ];\n\n\t\t\t\tfor ( let j = 0; j < pizChannelData[ i ].size; ++ j ) {\n\n\t\t\t\t\twav2Decode(\n\t\t\t\t\t\toutBuffer,\n\t\t\t\t\t\tcd.start + j,\n\t\t\t\t\t\tcd.nx,\n\t\t\t\t\t\tcd.size,\n\t\t\t\t\t\tcd.ny,\n\t\t\t\t\t\tcd.nx * cd.size,\n\t\t\t\t\t\tmaxValue\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Expand the pixel data to their original range\n\t\t\tapplyLut( lut, outBuffer, outBufferEnd );\n\n\t\t\t// Rearrange the pixel data into the format expected by the caller.\n\t\t\tlet tmpOffset = 0;\n\t\t\tconst tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength );\n\t\t\tfor ( let y = 0; y < info.lines; y ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < info.inputChannels.length; c ++ ) {\n\n\t\t\t\t\tconst cd = pizChannelData[ c ];\n\n\t\t\t\t\tconst n = cd.nx * cd.size;\n\t\t\t\t\tconst cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE );\n\n\t\t\t\t\ttmpBuffer.set( cp, tmpOffset );\n\t\t\t\t\ttmpOffset += n * INT16_SIZE;\n\t\t\t\t\tcd.end += n;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new DataView( tmpBuffer.buffer );\n\n\t\t}\n\n\t\tfunction uncompressPXR( info ) {\n\n\t\t\tconst compressed = info.array.slice( info.offset.value, info.offset.value + info.size );\n\n\t\t\tconst rawBuffer = fflate.unzlibSync( compressed );\n\n\t\t\tconst byteSize = info.inputChannels.length * info.lines * info.columns * info.totalBytes;\n\t\t\tconst tmpBuffer = new ArrayBuffer( byteSize );\n\t\t\tconst viewer = new DataView( tmpBuffer );\n\n\t\t\tlet tmpBufferEnd = 0;\n\t\t\tlet writePtr = 0;\n\t\t\tconst ptr = new Array( 4 );\n\n\t\t\tfor ( let y = 0; y < info.lines; y ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < info.inputChannels.length; c ++ ) {\n\n\t\t\t\t\tlet pixel = 0;\n\n\t\t\t\t\tconst type = info.inputChannels[ c ].pixelType;\n\t\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\t\tcase 1:\n\n\t\t\t\t\t\t\tptr[ 0 ] = tmpBufferEnd;\n\t\t\t\t\t\t\tptr[ 1 ] = ptr[ 0 ] + info.columns;\n\t\t\t\t\t\t\ttmpBufferEnd = ptr[ 1 ] + info.columns;\n\n\t\t\t\t\t\t\tfor ( let j = 0; j < info.columns; ++ j ) {\n\n\t\t\t\t\t\t\t\tconst diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 8 ) | rawBuffer[ ptr[ 1 ] ++ ];\n\n\t\t\t\t\t\t\t\tpixel += diff;\n\n\t\t\t\t\t\t\t\tviewer.setUint16( writePtr, pixel, true );\n\t\t\t\t\t\t\t\twritePtr += 2;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 2:\n\n\t\t\t\t\t\t\tptr[ 0 ] = tmpBufferEnd;\n\t\t\t\t\t\t\tptr[ 1 ] = ptr[ 0 ] + info.columns;\n\t\t\t\t\t\t\tptr[ 2 ] = ptr[ 1 ] + info.columns;\n\t\t\t\t\t\t\ttmpBufferEnd = ptr[ 2 ] + info.columns;\n\n\t\t\t\t\t\t\tfor ( let j = 0; j < info.columns; ++ j ) {\n\n\t\t\t\t\t\t\t\tconst diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 24 ) | ( rawBuffer[ ptr[ 1 ] ++ ] << 16 ) | ( rawBuffer[ ptr[ 2 ] ++ ] << 8 );\n\n\t\t\t\t\t\t\t\tpixel += diff;\n\n\t\t\t\t\t\t\t\tviewer.setUint32( writePtr, pixel, true );\n\t\t\t\t\t\t\t\twritePtr += 4;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn viewer;\n\n\t\t}\n\n\t\tfunction uncompressDWA( info ) {\n\n\t\t\tconst inDataView = info.viewer;\n\t\t\tconst inOffset = { value: info.offset.value };\n\t\t\tconst outBuffer = new Uint8Array( info.columns * info.lines * ( info.inputChannels.length * info.type * INT16_SIZE ) );\n\n\t\t\t// Read compression header information\n\t\t\tconst dwaHeader = {\n\n\t\t\t\tversion: parseInt64( inDataView, inOffset ),\n\t\t\t\tunknownUncompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\tunknownCompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\tacCompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\tdcCompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\trleCompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\trleUncompressedSize: parseInt64( inDataView, inOffset ),\n\t\t\t\trleRawSize: parseInt64( inDataView, inOffset ),\n\t\t\t\ttotalAcUncompressedCount: parseInt64( inDataView, inOffset ),\n\t\t\t\ttotalDcUncompressedCount: parseInt64( inDataView, inOffset ),\n\t\t\t\tacCompression: parseInt64( inDataView, inOffset )\n\n\t\t\t};\n\n\t\t\tif ( dwaHeader.version < 2 )\n\t\t\t\tthrow new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' );\n\n\t\t\t// Read channel ruleset information\n\t\t\tconst channelRules = new Array();\n\t\t\tlet ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;\n\n\t\t\twhile ( ruleSize > 0 ) {\n\n\t\t\t\tconst name = parseNullTerminatedString( inDataView.buffer, inOffset );\n\t\t\t\tconst value = parseUint8( inDataView, inOffset );\n\t\t\t\tconst compression = ( value >> 2 ) & 3;\n\t\t\t\tconst csc = ( value >> 4 ) - 1;\n\t\t\t\tconst index = new Int8Array( [ csc ] )[ 0 ];\n\t\t\t\tconst type = parseUint8( inDataView, inOffset );\n\n\t\t\t\tchannelRules.push( {\n\t\t\t\t\tname: name,\n\t\t\t\t\tindex: index,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tcompression: compression,\n\t\t\t\t} );\n\n\t\t\t\truleSize -= name.length + 3;\n\n\t\t\t}\n\n\t\t\t// Classify channels\n\t\t\tconst channels = EXRHeader.channels;\n\t\t\tconst channelData = new Array( info.inputChannels.length );\n\n\t\t\tfor ( let i = 0; i < info.inputChannels.length; ++ i ) {\n\n\t\t\t\tconst cd = channelData[ i ] = {};\n\t\t\t\tconst channel = channels[ i ];\n\n\t\t\t\tcd.name = channel.name;\n\t\t\t\tcd.compression = UNKNOWN;\n\t\t\t\tcd.decoded = false;\n\t\t\t\tcd.type = channel.pixelType;\n\t\t\t\tcd.pLinear = channel.pLinear;\n\t\t\t\tcd.width = info.columns;\n\t\t\t\tcd.height = info.lines;\n\n\t\t\t}\n\n\t\t\tconst cscSet = {\n\t\t\t\tidx: new Array( 3 )\n\t\t\t};\n\n\t\t\tfor ( let offset = 0; offset < info.inputChannels.length; ++ offset ) {\n\n\t\t\t\tconst cd = channelData[ offset ];\n\n\t\t\t\tfor ( let i = 0; i < channelRules.length; ++ i ) {\n\n\t\t\t\t\tconst rule = channelRules[ i ];\n\n\t\t\t\t\tif ( cd.name == rule.name ) {\n\n\t\t\t\t\t\tcd.compression = rule.compression;\n\n\t\t\t\t\t\tif ( rule.index >= 0 ) {\n\n\t\t\t\t\t\t\tcscSet.idx[ rule.index ] = offset;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcd.offset = offset;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlet acBuffer, dcBuffer, rleBuffer;\n\n\t\t\t// Read DCT - AC component data\n\t\t\tif ( dwaHeader.acCompressedSize > 0 ) {\n\n\t\t\t\tswitch ( dwaHeader.acCompression ) {\n\n\t\t\t\t\tcase STATIC_HUFFMAN:\n\n\t\t\t\t\t\tacBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount );\n\t\t\t\t\t\thufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase DEFLATE:\n\n\t\t\t\t\t\tconst compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount );\n\t\t\t\t\t\tconst data = fflate.unzlibSync( compressed );\n\t\t\t\t\t\tacBuffer = new Uint16Array( data.buffer );\n\t\t\t\t\t\tinOffset.value += dwaHeader.totalAcUncompressedCount;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\t// Read DCT - DC component data\n\t\t\tif ( dwaHeader.dcCompressedSize > 0 ) {\n\n\t\t\t\tconst zlibInfo = {\n\t\t\t\t\tarray: info.array,\n\t\t\t\t\toffset: inOffset,\n\t\t\t\t\tsize: dwaHeader.dcCompressedSize\n\t\t\t\t};\n\t\t\t\tdcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer );\n\t\t\t\tinOffset.value += dwaHeader.dcCompressedSize;\n\n\t\t\t}\n\n\t\t\t// Read RLE compressed data\n\t\t\tif ( dwaHeader.rleRawSize > 0 ) {\n\n\t\t\t\tconst compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize );\n\t\t\t\tconst data = fflate.unzlibSync( compressed );\n\t\t\t\trleBuffer = decodeRunLength( data.buffer );\n\n\t\t\t\tinOffset.value += dwaHeader.rleCompressedSize;\n\n\t\t\t}\n\n\t\t\t// Prepare outbuffer data offset\n\t\t\tlet outBufferEnd = 0;\n\t\t\tconst rowOffsets = new Array( channelData.length );\n\t\t\tfor ( let i = 0; i < rowOffsets.length; ++ i ) {\n\n\t\t\t\trowOffsets[ i ] = new Array();\n\n\t\t\t}\n\n\t\t\tfor ( let y = 0; y < info.lines; ++ y ) {\n\n\t\t\t\tfor ( let chan = 0; chan < channelData.length; ++ chan ) {\n\n\t\t\t\t\trowOffsets[ chan ].push( outBufferEnd );\n\t\t\t\t\toutBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Lossy DCT decode RGB channels\n\t\t\tlossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer );\n\n\t\t\t// Decode other channels\n\t\t\tfor ( let i = 0; i < channelData.length; ++ i ) {\n\n\t\t\t\tconst cd = channelData[ i ];\n\n\t\t\t\tif ( cd.decoded ) continue;\n\n\t\t\t\tswitch ( cd.compression ) {\n\n\t\t\t\t\tcase RLE:\n\n\t\t\t\t\t\tlet row = 0;\n\t\t\t\t\t\tlet rleOffset = 0;\n\n\t\t\t\t\t\tfor ( let y = 0; y < info.lines; ++ y ) {\n\n\t\t\t\t\t\t\tlet rowOffsetBytes = rowOffsets[ i ][ row ];\n\n\t\t\t\t\t\t\tfor ( let x = 0; x < cd.width; ++ x ) {\n\n\t\t\t\t\t\t\t\tfor ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) {\n\n\t\t\t\t\t\t\t\t\toutBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ];\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\trleOffset ++;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trow ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase LOSSY_DCT: // skip\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error( 'EXRLoader.parse: unsupported channel compression' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new DataView( outBuffer.buffer );\n\n\t\t}\n\n\t\tfunction parseNullTerminatedString( buffer, offset ) {\n\n\t\t\tconst uintBuffer = new Uint8Array( buffer );\n\t\t\tlet endOffset = 0;\n\n\t\t\twhile ( uintBuffer[ offset.value + endOffset ] != 0 ) {\n\n\t\t\t\tendOffset += 1;\n\n\t\t\t}\n\n\t\t\tconst stringValue = new TextDecoder().decode(\n\t\t\t\tuintBuffer.slice( offset.value, offset.value + endOffset )\n\t\t\t);\n\n\t\t\toffset.value = offset.value + endOffset + 1;\n\n\t\t\treturn stringValue;\n\n\t\t}\n\n\t\tfunction parseFixedLengthString( buffer, offset, size ) {\n\n\t\t\tconst stringValue = new TextDecoder().decode(\n\t\t\t\tnew Uint8Array( buffer ).slice( offset.value, offset.value + size )\n\t\t\t);\n\n\t\t\toffset.value = offset.value + size;\n\n\t\t\treturn stringValue;\n\n\t\t}\n\n\t\tfunction parseRational( dataView, offset ) {\n\n\t\t\tconst x = parseInt32( dataView, offset );\n\t\t\tconst y = parseUint32( dataView, offset );\n\n\t\t\treturn [ x, y ];\n\n\t\t}\n\n\t\tfunction parseTimecode( dataView, offset ) {\n\n\t\t\tconst x = parseUint32( dataView, offset );\n\t\t\tconst y = parseUint32( dataView, offset );\n\n\t\t\treturn [ x, y ];\n\n\t\t}\n\n\t\tfunction parseInt32( dataView, offset ) {\n\n\t\t\tconst Int32 = dataView.getInt32( offset.value, true );\n\n\t\t\toffset.value = offset.value + INT32_SIZE;\n\n\t\t\treturn Int32;\n\n\t\t}\n\n\t\tfunction parseUint32( dataView, offset ) {\n\n\t\t\tconst Uint32 = dataView.getUint32( offset.value, true );\n\n\t\t\toffset.value = offset.value + INT32_SIZE;\n\n\t\t\treturn Uint32;\n\n\t\t}\n\n\t\tfunction parseUint8Array( uInt8Array, offset ) {\n\n\t\t\tconst Uint8 = uInt8Array[ offset.value ];\n\n\t\t\toffset.value = offset.value + INT8_SIZE;\n\n\t\t\treturn Uint8;\n\n\t\t}\n\n\t\tfunction parseUint8( dataView, offset ) {\n\n\t\t\tconst Uint8 = dataView.getUint8( offset.value );\n\n\t\t\toffset.value = offset.value + INT8_SIZE;\n\n\t\t\treturn Uint8;\n\n\t\t}\n\n\t\tconst parseInt64 = function ( dataView, offset ) {\n\n\t\t\tlet int;\n\n\t\t\tif ( 'getBigInt64' in DataView.prototype ) {\n\n\t\t\t\tint = Number( dataView.getBigInt64( offset.value, true ) );\n\n\t\t\t} else {\n\n\t\t\t\tint = dataView.getUint32( offset.value + 4, true ) + Number( dataView.getUint32( offset.value, true ) << 32 );\n\n\t\t\t}\n\n\t\t\toffset.value += ULONG_SIZE;\n\n\t\t\treturn int;\n\n\t\t};\n\n\t\tfunction parseFloat32( dataView, offset ) {\n\n\t\t\tconst float = dataView.getFloat32( offset.value, true );\n\n\t\t\toffset.value += FLOAT32_SIZE;\n\n\t\t\treturn float;\n\n\t\t}\n\n\t\tfunction decodeFloat32( dataView, offset ) {\n\n\t\t\treturn DataUtils.toHalfFloat( parseFloat32( dataView, offset ) );\n\n\t\t}\n\n\t\t// https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript\n\t\tfunction decodeFloat16( binary ) {\n\n\t\t\tconst exponent = ( binary & 0x7C00 ) >> 10,\n\t\t\t\tfraction = binary & 0x03FF;\n\n\t\t\treturn ( binary >> 15 ? - 1 : 1 ) * (\n\t\t\t\texponent ?\n\t\t\t\t\t(\n\t\t\t\t\t\texponent === 0x1F ?\n\t\t\t\t\t\t\tfraction ? NaN : Infinity :\n\t\t\t\t\t\t\tMath.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 )\n\t\t\t\t\t) :\n\t\t\t\t\t6.103515625e-5 * ( fraction / 0x400 )\n\t\t\t);\n\n\t\t}\n\n\t\tfunction parseUint16( dataView, offset ) {\n\n\t\t\tconst Uint16 = dataView.getUint16( offset.value, true );\n\n\t\t\toffset.value += INT16_SIZE;\n\n\t\t\treturn Uint16;\n\n\t\t}\n\n\t\tfunction parseFloat16( buffer, offset ) {\n\n\t\t\treturn decodeFloat16( parseUint16( buffer, offset ) );\n\n\t\t}\n\n\t\tfunction parseChlist( dataView, buffer, offset, size ) {\n\n\t\t\tconst startOffset = offset.value;\n\t\t\tconst channels = [];\n\n\t\t\twhile ( offset.value < ( startOffset + size - 1 ) ) {\n\n\t\t\t\tconst name = parseNullTerminatedString( buffer, offset );\n\t\t\t\tconst pixelType = parseInt32( dataView, offset );\n\t\t\t\tconst pLinear = parseUint8( dataView, offset );\n\t\t\t\toffset.value += 3; // reserved, three chars\n\t\t\t\tconst xSampling = parseInt32( dataView, offset );\n\t\t\t\tconst ySampling = parseInt32( dataView, offset );\n\n\t\t\t\tchannels.push( {\n\t\t\t\t\tname: name,\n\t\t\t\t\tpixelType: pixelType,\n\t\t\t\t\tpLinear: pLinear,\n\t\t\t\t\txSampling: xSampling,\n\t\t\t\t\tySampling: ySampling\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\toffset.value += 1;\n\n\t\t\treturn channels;\n\n\t\t}\n\n\t\tfunction parseChromaticities( dataView, offset ) {\n\n\t\t\tconst redX = parseFloat32( dataView, offset );\n\t\t\tconst redY = parseFloat32( dataView, offset );\n\t\t\tconst greenX = parseFloat32( dataView, offset );\n\t\t\tconst greenY = parseFloat32( dataView, offset );\n\t\t\tconst blueX = parseFloat32( dataView, offset );\n\t\t\tconst blueY = parseFloat32( dataView, offset );\n\t\t\tconst whiteX = parseFloat32( dataView, offset );\n\t\t\tconst whiteY = parseFloat32( dataView, offset );\n\n\t\t\treturn { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };\n\n\t\t}\n\n\t\tfunction parseCompression( dataView, offset ) {\n\n\t\t\tconst compressionCodes = [\n\t\t\t\t'NO_COMPRESSION',\n\t\t\t\t'RLE_COMPRESSION',\n\t\t\t\t'ZIPS_COMPRESSION',\n\t\t\t\t'ZIP_COMPRESSION',\n\t\t\t\t'PIZ_COMPRESSION',\n\t\t\t\t'PXR24_COMPRESSION',\n\t\t\t\t'B44_COMPRESSION',\n\t\t\t\t'B44A_COMPRESSION',\n\t\t\t\t'DWAA_COMPRESSION',\n\t\t\t\t'DWAB_COMPRESSION'\n\t\t\t];\n\n\t\t\tconst compression = parseUint8( dataView, offset );\n\n\t\t\treturn compressionCodes[ compression ];\n\n\t\t}\n\n\t\tfunction parseBox2i( dataView, offset ) {\n\n\t\t\tconst xMin = parseInt32( dataView, offset );\n\t\t\tconst yMin = parseInt32( dataView, offset );\n\t\t\tconst xMax = parseInt32( dataView, offset );\n\t\t\tconst yMax = parseInt32( dataView, offset );\n\n\t\t\treturn { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };\n\n\t\t}\n\n\t\tfunction parseLineOrder( dataView, offset ) {\n\n\t\t\tconst lineOrders = [\n\t\t\t\t'INCREASING_Y',\n\t\t\t\t'DECREASING_Y',\n\t\t\t\t'RANDOM_Y',\n\t\t\t];\n\n\t\t\tconst lineOrder = parseUint8( dataView, offset );\n\n\t\t\treturn lineOrders[ lineOrder ];\n\n\t\t}\n\n\t\tfunction parseEnvmap( dataView, offset ) {\n\n\t\t\tconst envmaps = [\n\t\t\t\t'ENVMAP_LATLONG',\n\t\t\t\t'ENVMAP_CUBE'\n\t\t\t];\n\n\t\t\tconst envmap = parseUint8( dataView, offset );\n\n\t\t\treturn envmaps[ envmap ];\n\n\t\t}\n\n\t\tfunction parseTiledesc( dataView, offset ) {\n\n\t\t\tconst levelModes = [\n\t\t\t\t'ONE_LEVEL',\n\t\t\t\t'MIPMAP_LEVELS',\n\t\t\t\t'RIPMAP_LEVELS',\n\t\t\t];\n\n\t\t\tconst roundingModes = [\n\t\t\t\t'ROUND_DOWN',\n\t\t\t\t'ROUND_UP',\n\t\t\t];\n\n\t\t\tconst xSize = parseUint32( dataView, offset );\n\t\t\tconst ySize = parseUint32( dataView, offset );\n\t\t\tconst modes = parseUint8( dataView, offset );\n\n\t\t\treturn {\n\t\t\t\txSize: xSize,\n\t\t\t\tySize: ySize,\n\t\t\t\tlevelMode: levelModes[ modes & 0xf ],\n\t\t\t\troundingMode: roundingModes[ modes >> 4 ]\n\t\t\t};\n\n\t\t}\n\n\t\tfunction parseV2f( dataView, offset ) {\n\n\t\t\tconst x = parseFloat32( dataView, offset );\n\t\t\tconst y = parseFloat32( dataView, offset );\n\n\t\t\treturn [ x, y ];\n\n\t\t}\n\n\t\tfunction parseV3f( dataView, offset ) {\n\n\t\t\tconst x = parseFloat32( dataView, offset );\n\t\t\tconst y = parseFloat32( dataView, offset );\n\t\t\tconst z = parseFloat32( dataView, offset );\n\n\t\t\treturn [ x, y, z ];\n\n\t\t}\n\n\t\tfunction parseValue( dataView, buffer, offset, type, size ) {\n\n\t\t\tif ( type === 'string' || type === 'stringvector' || type === 'iccProfile' ) {\n\n\t\t\t\treturn parseFixedLengthString( buffer, offset, size );\n\n\t\t\t} else if ( type === 'chlist' ) {\n\n\t\t\t\treturn parseChlist( dataView, buffer, offset, size );\n\n\t\t\t} else if ( type === 'chromaticities' ) {\n\n\t\t\t\treturn parseChromaticities( dataView, offset );\n\n\t\t\t} else if ( type === 'compression' ) {\n\n\t\t\t\treturn parseCompression( dataView, offset );\n\n\t\t\t} else if ( type === 'box2i' ) {\n\n\t\t\t\treturn parseBox2i( dataView, offset );\n\n\t\t\t} else if ( type === 'envmap' ) {\n\n\t\t\t\treturn parseEnvmap( dataView, offset );\n\n\t\t\t} else if ( type === 'tiledesc' ) {\n\n\t\t\t\treturn parseTiledesc( dataView, offset );\n\n\t\t\t} else if ( type === 'lineOrder' ) {\n\n\t\t\t\treturn parseLineOrder( dataView, offset );\n\n\t\t\t} else if ( type === 'float' ) {\n\n\t\t\t\treturn parseFloat32( dataView, offset );\n\n\t\t\t} else if ( type === 'v2f' ) {\n\n\t\t\t\treturn parseV2f( dataView, offset );\n\n\t\t\t} else if ( type === 'v3f' ) {\n\n\t\t\t\treturn parseV3f( dataView, offset );\n\n\t\t\t} else if ( type === 'int' ) {\n\n\t\t\t\treturn parseInt32( dataView, offset );\n\n\t\t\t} else if ( type === 'rational' ) {\n\n\t\t\t\treturn parseRational( dataView, offset );\n\n\t\t\t} else if ( type === 'timecode' ) {\n\n\t\t\t\treturn parseTimecode( dataView, offset );\n\n\t\t\t} else if ( type === 'preview' ) {\n\n\t\t\t\toffset.value += size;\n\t\t\t\treturn 'skipped';\n\n\t\t\t} else {\n\n\t\t\t\toffset.value += size;\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction roundLog2( x, mode ) {\n\n\t\t\tconst log2 = Math.log2( x );\n\t\t\treturn mode == 'ROUND_DOWN' ? Math.floor( log2 ) : Math.ceil( log2 );\n\n\t\t}\n\n\t\tfunction calculateTileLevels( tiledesc, w, h ) {\n\n\t\t\tlet num = 0;\n\n\t\t\tswitch ( tiledesc.levelMode ) {\n\n\t\t\t\tcase 'ONE_LEVEL':\n\t\t\t\t\tnum = 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'MIPMAP_LEVELS':\n\t\t\t\t\tnum = roundLog2( Math.max( w, h ), tiledesc.roundingMode ) + 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RIPMAP_LEVELS':\n\t\t\t\t\tthrow new Error( 'THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.' );\n\n\t\t\t}\n\n\t\t\treturn num;\n\n\t\t}\n\n\t\tfunction calculateTiles( count, dataSize, size, roundingMode ) {\n\n\t\t\tconst tiles = new Array( count );\n\n\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\tconst b = ( 1 << i );\n\t\t\t\tlet s = ( dataSize / b ) | 0;\n\n\t\t\t\tif ( roundingMode == 'ROUND_UP' && s * b < dataSize ) s += 1;\n\n\t\t\t\tconst l = Math.max( s, 1 );\n\n\t\t\t\ttiles[ i ] = ( ( l + size - 1 ) / size ) | 0;\n\n\t\t\t}\n\n\t\t\treturn tiles;\n\n\t\t}\n\n\t\tfunction parseTiles() {\n\n\t\t\tconst EXRDecoder = this;\n\t\t\tconst offset = EXRDecoder.offset;\n\t\t\tconst tmpOffset = { value: 0 };\n\n\t\t\tfor ( let tile = 0; tile < EXRDecoder.tileCount; tile ++ ) {\n\n\t\t\t\tconst tileX = parseInt32( EXRDecoder.viewer, offset );\n\t\t\t\tconst tileY = parseInt32( EXRDecoder.viewer, offset );\n\t\t\t\toffset.value += 8; // skip levels - only parsing top-level\n\t\t\t\tEXRDecoder.size = parseUint32( EXRDecoder.viewer, offset );\n\n\t\t\t\tconst startX = tileX * EXRDecoder.blockWidth;\n\t\t\t\tconst startY = tileY * EXRDecoder.blockHeight;\n\t\t\t\tEXRDecoder.columns = ( startX + EXRDecoder.blockWidth > EXRDecoder.width ) ? EXRDecoder.width - startX : EXRDecoder.blockWidth;\n\t\t\t\tEXRDecoder.lines = ( startY + EXRDecoder.blockHeight > EXRDecoder.height ) ? EXRDecoder.height - startY : EXRDecoder.blockHeight;\n\n\t\t\t\tconst bytesBlockLine = EXRDecoder.columns * EXRDecoder.totalBytes;\n\t\t\t\tconst isCompressed = EXRDecoder.size < EXRDecoder.lines * bytesBlockLine;\n\t\t\t\tconst viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder );\n\n\t\t\t\toffset.value += EXRDecoder.size;\n\n\t\t\t\tfor ( let line = 0; line < EXRDecoder.lines; line ++ ) {\n\n\t\t\t\t\tconst lineOffset = line * EXRDecoder.columns * EXRDecoder.totalBytes;\n\n\t\t\t\t\tfor ( let channelID = 0; channelID < EXRDecoder.inputChannels.length; channelID ++ ) {\n\n\t\t\t\t\t\tconst name = EXRHeader.channels[ channelID ].name;\n\t\t\t\t\t\tconst lOff = EXRDecoder.channelByteOffsets[ name ] * EXRDecoder.columns;\n\t\t\t\t\t\tconst cOff = EXRDecoder.decodeChannels[ name ];\n\n\t\t\t\t\t\tif ( cOff === undefined ) continue;\n\n\t\t\t\t\t\ttmpOffset.value = lineOffset + lOff;\n\t\t\t\t\t\tconst outLineOffset = ( EXRDecoder.height - ( 1 + startY + line ) ) * EXRDecoder.outLineWidth;\n\n\t\t\t\t\t\tfor ( let x = 0; x < EXRDecoder.columns; x ++ ) {\n\n\t\t\t\t\t\t\tconst outIndex = outLineOffset + ( x + startX ) * EXRDecoder.outputChannels + cOff;\n\t\t\t\t\t\t\tEXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseScanline() {\n\n\t\t\tconst EXRDecoder = this;\n\t\t\tconst offset = EXRDecoder.offset;\n\t\t\tconst tmpOffset = { value: 0 };\n\n\t\t\tfor ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.blockHeight; scanlineBlockIdx ++ ) {\n\n\t\t\t\tconst line = parseInt32( EXRDecoder.viewer, offset ) - EXRHeader.dataWindow.yMin; // line_no\n\t\t\t\tEXRDecoder.size = parseUint32( EXRDecoder.viewer, offset ); // data_len\n\t\t\t\tEXRDecoder.lines = ( ( line + EXRDecoder.blockHeight > EXRDecoder.height ) ? ( EXRDecoder.height - line ) : EXRDecoder.blockHeight );\n\n\t\t\t\tconst bytesPerLine = EXRDecoder.columns * EXRDecoder.totalBytes;\n\t\t\t\tconst isCompressed = EXRDecoder.size < EXRDecoder.lines * bytesPerLine;\n\t\t\t\tconst viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder );\n\n\t\t\t\toffset.value += EXRDecoder.size;\n\n\t\t\t\tfor ( let line_y = 0; line_y < EXRDecoder.blockHeight; line_y ++ ) {\n\n\t\t\t\t\tconst scan_y = scanlineBlockIdx * EXRDecoder.blockHeight;\n\t\t\t\t\tconst true_y = line_y + EXRDecoder.scanOrder( scan_y );\n\t\t\t\t\tif ( true_y >= EXRDecoder.height ) continue;\n\n\t\t\t\t\tconst lineOffset = line_y * bytesPerLine;\n\t\t\t\t\tconst outLineOffset = ( EXRDecoder.height - 1 - true_y ) * EXRDecoder.outLineWidth;\n\n\t\t\t\t\tfor ( let channelID = 0; channelID < EXRDecoder.inputChannels.length; channelID ++ ) {\n\n\t\t\t\t\t\tconst name = EXRHeader.channels[ channelID ].name;\n\t\t\t\t\t\tconst lOff = EXRDecoder.channelByteOffsets[ name ] * EXRDecoder.columns;\n\t\t\t\t\t\tconst cOff = EXRDecoder.decodeChannels[ name ];\n\n\t\t\t\t\t\tif ( cOff === undefined ) continue;\n\n\t\t\t\t\t\ttmpOffset.value = lineOffset + lOff;\n\n\t\t\t\t\t\tfor ( let x = 0; x < EXRDecoder.columns; x ++ ) {\n\n\t\t\t\t\t\t\tconst outIndex = outLineOffset + x * EXRDecoder.outputChannels + cOff;\n\t\t\t\t\t\t\tEXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseHeader( dataView, buffer, offset ) {\n\n\t\t\tconst EXRHeader = {};\n\n\t\t\tif ( dataView.getUint32( 0, true ) != 20000630 ) { // magic\n\n\t\t\t\tthrow new Error( 'THREE.EXRLoader: Provided file doesn\\'t appear to be in OpenEXR format.' );\n\n\t\t\t}\n\n\t\t\tEXRHeader.version = dataView.getUint8( 4 );\n\n\t\t\tconst spec = dataView.getUint8( 5 ); // fullMask\n\n\t\t\tEXRHeader.spec = {\n\t\t\t\tsingleTile: !! ( spec & 2 ),\n\t\t\t\tlongName: !! ( spec & 4 ),\n\t\t\t\tdeepFormat: !! ( spec & 8 ),\n\t\t\t\tmultiPart: !! ( spec & 16 ),\n\t\t\t};\n\n\t\t\t// start of header\n\n\t\t\toffset.value = 8; // start at 8 - after pre-amble\n\n\t\t\tlet keepReading = true;\n\n\t\t\twhile ( keepReading ) {\n\n\t\t\t\tconst attributeName = parseNullTerminatedString( buffer, offset );\n\n\t\t\t\tif ( attributeName === '' ) {\n\n\t\t\t\t\tkeepReading = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst attributeType = parseNullTerminatedString( buffer, offset );\n\t\t\t\t\tconst attributeSize = parseUint32( dataView, offset );\n\t\t\t\t\tconst attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );\n\n\t\t\t\t\tif ( attributeValue === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( `THREE.EXRLoader: Skipped unknown header attribute type \\'${attributeType}\\'.` );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tEXRHeader[ attributeName ] = attributeValue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( spec & ~ 0x06 ) != 0 ) { // unsupported deep-image, multi-part\n\n\t\t\t\tconsole.error( 'THREE.EXRHeader:', EXRHeader );\n\t\t\t\tthrow new Error( 'THREE.EXRLoader: Provided file is currently unsupported.' );\n\n\t\t\t}\n\n\t\t\treturn EXRHeader;\n\n\t\t}\n\n\t\tfunction setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) {\n\n\t\t\tconst EXRDecoder = {\n\t\t\t\tsize: 0,\n\t\t\t\tviewer: dataView,\n\t\t\t\tarray: uInt8Array,\n\t\t\t\toffset: offset,\n\t\t\t\twidth: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1,\n\t\t\t\theight: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,\n\t\t\t\tinputChannels: EXRHeader.channels,\n\t\t\t\tchannelByteOffsets: {},\n\t\t\t\tscanOrder: null,\n\t\t\t\ttotalBytes: null,\n\t\t\t\tcolumns: null,\n\t\t\t\tlines: null,\n\t\t\t\ttype: null,\n\t\t\t\tuncompress: null,\n\t\t\t\tgetter: null,\n\t\t\t\tformat: null,\n\t\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\t};\n\n\t\t\tswitch ( EXRHeader.compression ) {\n\n\t\t\t\tcase 'NO_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 1;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressRAW;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RLE_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 1;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressRLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZIPS_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 1;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressZIP;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ZIP_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 16;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressZIP;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PIZ_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 32;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressPIZ;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PXR24_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 16;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressPXR;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DWAA_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 32;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressDWA;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DWAB_COMPRESSION':\n\t\t\t\t\tEXRDecoder.blockHeight = 256;\n\t\t\t\t\tEXRDecoder.uncompress = uncompressDWA;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' );\n\n\t\t\t}\n\n\t\t\tconst channels = {};\n\t\t\tfor ( const channel of EXRHeader.channels ) {\n\n\t\t\t\tswitch ( channel.name ) {\n\n\t\t\t\t\tcase 'Y':\n\t\t\t\t\tcase 'R':\n\t\t\t\t\tcase 'G':\n\t\t\t\t\tcase 'B':\n\t\t\t\t\tcase 'A':\n\t\t\t\t\t\tchannels[ channel.name ] = true;\n\t\t\t\t\t\tEXRDecoder.type = channel.pixelType;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// RGB images will be converted to RGBA format, preventing software emulation in select devices.\n\t\t\tlet fillAlpha = false;\n\n\t\t\tif ( channels.R && channels.G && channels.B ) {\n\n\t\t\t\tfillAlpha = ! channels.A;\n\t\t\t\tEXRDecoder.outputChannels = 4;\n\t\t\t\tEXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };\n\n\t\t\t} else if ( channels.Y ) {\n\n\t\t\t\tEXRDecoder.outputChannels = 1;\n\t\t\t\tEXRDecoder.decodeChannels = { Y: 0 };\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'EXRLoader.parse: file contains unsupported data channels.' );\n\n\t\t\t}\n\n\t\t\tif ( EXRDecoder.type == 1 ) {\n\n\t\t\t\t// half\n\t\t\t\tswitch ( outputType ) {\n\n\t\t\t\t\tcase FloatType:\n\t\t\t\t\t\tEXRDecoder.getter = parseFloat16;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase HalfFloatType:\n\t\t\t\t\t\tEXRDecoder.getter = parseUint16;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else if ( EXRDecoder.type == 2 ) {\n\n\t\t\t\t// float\n\t\t\t\tswitch ( outputType ) {\n\n\t\t\t\t\tcase FloatType:\n\t\t\t\t\t\tEXRDecoder.getter = parseFloat32;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase HalfFloatType:\n\t\t\t\t\t\tEXRDecoder.getter = decodeFloat32;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' );\n\n\t\t\t}\n\n\t\t\tEXRDecoder.columns = EXRDecoder.width;\n\t\t\tconst size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;\n\n\t\t\tswitch ( outputType ) {\n\n\t\t\t\tcase FloatType:\n\t\t\t\t\tEXRDecoder.byteArray = new Float32Array( size );\n\n\t\t\t\t\t// Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten\n\t\t\t\t\tif ( fillAlpha )\n\t\t\t\t\t\tEXRDecoder.byteArray.fill( 1, 0, size );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase HalfFloatType:\n\t\t\t\t\tEXRDecoder.byteArray = new Uint16Array( size );\n\n\t\t\t\t\tif ( fillAlpha )\n\t\t\t\t\t\tEXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error( 'THREE.EXRLoader: unsupported type: ', outputType );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlet byteOffset = 0;\n\t\t\tfor ( const channel of EXRHeader.channels ) {\n\n\t\t\t\tif ( EXRDecoder.decodeChannels[ channel.name ] !== undefined ) {\n\n\t\t\t\t\tEXRDecoder.channelByteOffsets[ channel.name ] = byteOffset;\n\n\t\t\t\t}\n\n\t\t\t\tbyteOffset += channel.pixelType * 2;\n\n\t\t\t}\n\n\t\t\tEXRDecoder.totalBytes = byteOffset;\n\t\t\tEXRDecoder.outLineWidth = EXRDecoder.width * EXRDecoder.outputChannels;\n\n\t\t\tif ( EXRHeader.lineOrder === 'INCREASING_Y' ) {\n\n\t\t\t\tEXRDecoder.scanOrder = ( y ) => y;\n\n\t\t\t} else {\n\n\t\t\t\tEXRDecoder.scanOrder = ( y ) => EXRDecoder.height - 1 - y;\n\n\t\t\t}\n\n\t\t\tif ( EXRDecoder.outputChannels == 4 ) {\n\n\t\t\t\tEXRDecoder.format = RGBAFormat;\n\t\t\t\tEXRDecoder.colorSpace = LinearSRGBColorSpace;\n\n\t\t\t} else {\n\n\t\t\t\tEXRDecoder.format = RedFormat;\n\t\t\t\tEXRDecoder.colorSpace = NoColorSpace;\n\n\t\t\t}\n\n\t\t\tif ( EXRHeader.spec.singleTile ) {\n\n\t\t\t\tEXRDecoder.blockHeight = EXRHeader.tiles.ySize;\n\t\t\t\tEXRDecoder.blockWidth = EXRHeader.tiles.xSize;\n\n\t\t\t\tconst numXLevels = calculateTileLevels( EXRHeader.tiles, EXRDecoder.width, EXRDecoder.height );\n\t\t\t\t// const numYLevels = calculateTileLevels( EXRHeader.tiles, EXRDecoder.width, EXRDecoder.height );\n\n\t\t\t\tconst numXTiles = calculateTiles( numXLevels, EXRDecoder.width, EXRHeader.tiles.xSize, EXRHeader.tiles.roundingMode );\n\t\t\t\tconst numYTiles = calculateTiles( numXLevels, EXRDecoder.height, EXRHeader.tiles.ySize, EXRHeader.tiles.roundingMode );\n\n\t\t\t\tEXRDecoder.tileCount = numXTiles[ 0 ] * numYTiles[ 0 ];\n\n\t\t\t\tfor ( let l = 0; l < numXLevels; l ++ )\n\t\t\t\t\tfor ( let y = 0; y < numYTiles[ l ]; y ++ )\n\t\t\t\t\t\tfor ( let x = 0; x < numXTiles[ l ]; x ++ )\n\t\t\t\t\t\t\tparseInt64( dataView, offset ); // tileOffset\n\n\t\t\t\tEXRDecoder.decode = parseTiles.bind( EXRDecoder );\n\n\t\t\t} else {\n\n\t\t\t\tEXRDecoder.blockWidth = EXRDecoder.width;\n\t\t\t\tconst blockCount = Math.ceil( EXRDecoder.height / EXRDecoder.blockHeight );\n\n\t\t\t\tfor ( let i = 0; i < blockCount; i ++ )\n\t\t\t\t\tparseInt64( dataView, offset ); // scanlineOffset\n\n\t\t\t\tEXRDecoder.decode = parseScanline.bind( EXRDecoder );\n\n\t\t\t}\n\n\t\t\treturn EXRDecoder;\n\n\t\t}\n\n\t\t// start parsing file [START]\n\t\tconst offset = { value: 0 };\n\t\tconst bufferDataView = new DataView( buffer );\n\t\tconst uInt8Array = new Uint8Array( buffer );\n\n\t\t// get header information and validate format.\n\t\tconst EXRHeader = parseHeader( bufferDataView, buffer, offset );\n\n\t\t// get input compression information and prepare decoding.\n\t\tconst EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type );\n\n\t\t// parse input data\n\t\tEXRDecoder.decode();\n\n\t\treturn {\n\t\t\theader: EXRHeader,\n\t\t\twidth: EXRDecoder.width,\n\t\t\theight: EXRDecoder.height,\n\t\t\tdata: EXRDecoder.byteArray,\n\t\t\tformat: EXRDecoder.format,\n\t\t\tcolorSpace: EXRDecoder.colorSpace,\n\t\t\ttype: this.type,\n\t\t};\n\n\t}\n\n\t/**\n\t * Sets the texture type.\n\t *\n\t * @param {(HalfFloatType|FloatType)} value - The texture type to set.\n\t * @return {RGBMLoader} A reference to this loader.\n\t */\n\tsetDataType( value ) {\n\n\t\tthis.type = value;\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tfunction onLoadCallback( texture, texData ) {\n\n\t\t\ttexture.colorSpace = texData.colorSpace;\n\t\t\ttexture.minFilter = LinearFilter;\n\t\t\ttexture.magFilter = LinearFilter;\n\t\t\ttexture.generateMipmaps = false;\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}\n\n\t\treturn super.load( url, onLoadCallback, onProgress, onError );\n\n\t}\n\n}\n\nexport { EXRLoader };\n"],"names":["fflate.unzlibSync"],"mappings":"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GAAG,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;AACxC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;AACxC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;;AAEzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;AACxC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;;AAEzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;;AAEzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;;AAEzC,GAAG,GA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","x_google_ignoreList":[0]}