etro 0.13.0 → 0.14.0

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 (275) hide show
  1. package/.github/workflows/nodejs.yml +4 -0
  2. package/.github/workflows/shipjs-trigger.yml +2 -1
  3. package/.husky/pre-commit +1 -1
  4. package/AGENTS.md +106 -0
  5. package/CHANGELOG.md +17 -0
  6. package/CONTRIBUTING.md +5 -5
  7. package/README.md +7 -12
  8. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/index.html +50 -50
  9. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/custom-array.ts.html +11 -11
  10. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/base.ts.html +57 -9
  11. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/brightness.ts.html +1 -1
  12. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/channels.ts.html +1 -1
  13. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/chroma-key.ts.html +1 -1
  14. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/contrast.ts.html +1 -1
  15. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/elliptical-mask.ts.html +1 -1
  16. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/gaussian-blur.ts.html +1 -1
  17. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/grayscale.ts.html +1 -1
  18. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/index.html +21 -21
  19. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/index.ts.html +1 -1
  20. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/pixelate.ts.html +1 -1
  21. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/shader.ts.html +3 -3
  22. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/stack.ts.html +1 -1
  23. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/transform.ts.html +1 -1
  24. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/effect/visual.ts.html +1 -1
  25. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/etro.ts.html +1 -1
  26. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/event.ts.html +29 -29
  27. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/index.html +20 -20
  28. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/index.ts.html +1 -1
  29. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/audio-source.ts.html +47 -47
  30. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/audio.ts.html +4 -4
  31. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/base.ts.html +88 -34
  32. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/image.ts.html +1 -1
  33. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/index.html +20 -20
  34. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/index.ts.html +1 -1
  35. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/text.ts.html +1 -1
  36. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/video.ts.html +1 -1
  37. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/visual-source.ts.html +1 -1
  38. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/layer/visual.ts.html +10 -10
  39. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/movie/effects.ts.html +4 -4
  40. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/movie/index.html +19 -19
  41. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/movie/index.ts.html +1 -1
  42. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/movie/layers.ts.html +5 -5
  43. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/movie/movie.ts.html +467 -128
  44. package/coverage/{Firefox 148.0 (Mac OS 10.15) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/src/util.ts.html +380 -68
  45. package/coverage/Firefox 151.0 (Mac OS 10.15)/html/index.html +161 -0
  46. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/custom-array.ts.html +34 -34
  47. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/base.ts.html +92 -44
  48. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/brightness.ts.html +17 -17
  49. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/channels.ts.html +17 -17
  50. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/chroma-key.ts.html +21 -21
  51. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/contrast.ts.html +17 -17
  52. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/elliptical-mask.ts.html +1 -1
  53. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/gaussian-blur.ts.html +98 -98
  54. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/grayscale.ts.html +13 -13
  55. package/coverage/Firefox 151.0 (Mac OS 10.15)/html/src/effect/index.html +311 -0
  56. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/index.ts.html +1 -1
  57. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/pixelate.ts.html +24 -24
  58. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/shader.ts.html +369 -369
  59. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/stack.ts.html +46 -46
  60. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/transform.ts.html +104 -104
  61. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/effect/visual.ts.html +1 -1
  62. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/etro.ts.html +1 -1
  63. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/event.ts.html +60 -60
  64. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/index.html +42 -42
  65. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/index.ts.html +1 -1
  66. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/audio-source.ts.html +50 -50
  67. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/audio.ts.html +4 -4
  68. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/base.ts.html +95 -41
  69. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/image.ts.html +14 -14
  70. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/index.html +51 -51
  71. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/index.ts.html +1 -1
  72. package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/text.ts.html +1 -1
  73. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/video.ts.html +1 -1
  74. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/visual-source.ts.html +58 -58
  75. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/layer/visual.ts.html +84 -84
  76. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/movie/effects.ts.html +13 -13
  77. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/movie/index.html +28 -28
  78. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/movie/index.ts.html +1 -1
  79. package/coverage/{Firefox 120.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/movie/layers.ts.html +5 -5
  80. package/coverage/{Firefox 121.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/movie/movie.ts.html +605 -266
  81. package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/src/util.ts.html +408 -69
  82. package/dist/custom-array.d.ts +10 -10
  83. package/dist/effect/base.d.ts +61 -60
  84. package/dist/effect/brightness.d.ts +16 -16
  85. package/dist/effect/channels.d.ts +23 -23
  86. package/dist/effect/chroma-key.d.ts +23 -23
  87. package/dist/effect/contrast.d.ts +15 -15
  88. package/dist/effect/elliptical-mask.d.ts +31 -31
  89. package/dist/effect/gaussian-blur.d.ts +60 -60
  90. package/dist/effect/grayscale.d.ts +7 -7
  91. package/dist/effect/index.d.ts +16 -16
  92. package/dist/effect/pixelate.d.ts +18 -18
  93. package/dist/effect/shader.d.ts +109 -109
  94. package/dist/effect/stack.d.ts +27 -27
  95. package/dist/effect/transform.d.ts +73 -73
  96. package/dist/effect/visual.d.ts +17 -17
  97. package/dist/etro-cjs.js +3583 -3553
  98. package/dist/etro-iife.js +3583 -3553
  99. package/dist/etro.d.ts +7 -7
  100. package/dist/event.d.ts +40 -40
  101. package/dist/index.d.ts +6 -6
  102. package/dist/layer/audio-source.d.ts +28 -28
  103. package/dist/layer/audio.d.ts +27 -27
  104. package/dist/layer/base.d.ts +129 -128
  105. package/dist/layer/image.d.ts +20 -20
  106. package/dist/layer/index.d.ts +11 -11
  107. package/dist/layer/text.d.ts +78 -78
  108. package/dist/layer/video.d.ts +23 -23
  109. package/dist/layer/visual-source.d.ts +47 -47
  110. package/dist/layer/visual.d.ts +62 -62
  111. package/dist/movie/effects.d.ts +6 -6
  112. package/dist/movie/index.d.ts +1 -1
  113. package/dist/movie/layers.d.ts +6 -6
  114. package/dist/movie/movie.d.ts +280 -278
  115. package/dist/object.d.ts +19 -19
  116. package/dist/util.d.ts +128 -123
  117. package/karma.conf.js +61 -3
  118. package/package.json +13 -15
  119. package/ship.config.js +9 -11
  120. package/src/effect/base.ts +16 -0
  121. package/src/layer/base.ts +19 -1
  122. package/src/movie/movie.ts +116 -3
  123. package/src/util.ts +104 -0
  124. package/tsconfig.json +3 -2
  125. package/.husky/commit-msg +0 -4
  126. package/.husky/prepare-commit-msg +0 -11
  127. package/commitlint.config.ts +0 -39
  128. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/index.html +0 -176
  129. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/custom-array.ts.html +0 -214
  130. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/base.ts.html +0 -433
  131. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/brightness.ts.html +0 -214
  132. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/channels.ts.html +0 -235
  133. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/contrast.ts.html +0 -211
  134. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/elliptical-mask.ts.html +0 -310
  135. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/grayscale.ts.html +0 -187
  136. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/index.html +0 -311
  137. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/pixelate.ts.html +0 -259
  138. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/shader.ts.html +0 -1774
  139. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/stack.ts.html +0 -358
  140. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/transform.ts.html +0 -685
  141. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/effect/visual.ts.html +0 -148
  142. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/event.ts.html +0 -691
  143. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/index.html +0 -176
  144. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/index.ts.html +0 -109
  145. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/audio-source.ts.html +0 -835
  146. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/base.ts.html +0 -772
  147. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/image.ts.html +0 -181
  148. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/index.html +0 -236
  149. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/video.ts.html +0 -211
  150. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/visual-source.ts.html +0 -721
  151. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/layer/visual.ts.html +0 -760
  152. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/effects.ts.html +0 -163
  153. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/index.html +0 -161
  154. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/index.ts.html +0 -88
  155. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/layers.ts.html +0 -163
  156. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/movie/movie.ts.html +0 -2692
  157. package/coverage/Chrome Headless 79.0.3945.0 (Mac OS 10.16.0)/html/src/util.ts.html +0 -1426
  158. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/index.html +0 -176
  159. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/custom-array.ts.html +0 -214
  160. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/base.ts.html +0 -433
  161. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +0 -235
  162. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +0 -331
  163. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +0 -211
  164. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +0 -796
  165. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +0 -187
  166. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/index.html +0 -311
  167. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +0 -259
  168. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +0 -1948
  169. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +0 -685
  170. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/event.ts.html +0 -691
  171. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +0 -835
  172. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +0 -241
  173. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/base.ts.html +0 -772
  174. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/image.ts.html +0 -181
  175. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/index.ts.html +0 -124
  176. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/text.ts.html +0 -658
  177. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/video.ts.html +0 -211
  178. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +0 -760
  179. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +0 -163
  180. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/index.html +0 -161
  181. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/index.ts.html +0 -88
  182. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +0 -163
  183. package/coverage/Firefox 118.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +0 -2692
  184. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/base.css +0 -224
  185. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/block-navigation.js +0 -87
  186. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/favicon.png +0 -0
  187. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/index.html +0 -176
  188. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/prettify.css +0 -1
  189. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/prettify.js +0 -2
  190. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  191. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/sorter.js +0 -196
  192. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +0 -214
  193. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +0 -331
  194. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +0 -790
  195. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/index.html +0 -311
  196. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/index.ts.html +0 -154
  197. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/pixelate.ts.html +0 -259
  198. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/shader.ts.html +0 -1948
  199. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +0 -358
  200. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/effect/transform.ts.html +0 -685
  201. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/etro.ts.html +0 -163
  202. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/index.html +0 -176
  203. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/image.ts.html +0 -181
  204. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/index.html +0 -236
  205. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/text.ts.html +0 -658
  206. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +0 -721
  207. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/movie/movie.ts.html +0 -2692
  208. package/coverage/Firefox 120.0 (Mac OS 10.15)/html/src/util.ts.html +0 -1426
  209. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/base.css +0 -224
  210. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/block-navigation.js +0 -87
  211. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/favicon.png +0 -0
  212. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/index.html +0 -176
  213. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/prettify.css +0 -1
  214. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/prettify.js +0 -2
  215. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  216. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/sorter.js +0 -196
  217. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/custom-array.ts.html +0 -214
  218. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/base.ts.html +0 -433
  219. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/brightness.ts.html +0 -214
  220. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/channels.ts.html +0 -235
  221. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/chroma-key.ts.html +0 -331
  222. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/contrast.ts.html +0 -211
  223. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +0 -310
  224. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/gaussian-blur.ts.html +0 -796
  225. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/grayscale.ts.html +0 -187
  226. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/index.html +0 -311
  227. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/index.ts.html +0 -154
  228. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/stack.ts.html +0 -358
  229. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +0 -148
  230. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/etro.ts.html +0 -163
  231. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/event.ts.html +0 -691
  232. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/index.html +0 -176
  233. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/index.ts.html +0 -109
  234. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/audio-source.ts.html +0 -835
  235. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +0 -241
  236. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/base.ts.html +0 -772
  237. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/index.html +0 -236
  238. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/index.ts.html +0 -124
  239. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/visual-source.ts.html +0 -721
  240. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/layer/visual.ts.html +0 -760
  241. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/effects.ts.html +0 -163
  242. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/index.html +0 -161
  243. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/movie/layers.ts.html +0 -163
  244. package/coverage/Firefox 121.0 (Mac OS 10.15)/html/src/util.ts.html +0 -1453
  245. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/base.css +0 -224
  246. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/block-navigation.js +0 -87
  247. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/favicon.png +0 -0
  248. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/prettify.css +0 -1
  249. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/prettify.js +0 -2
  250. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/sort-arrow-sprite.png +0 -0
  251. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/sorter.js +0 -196
  252. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/elliptical-mask.ts.html +0 -310
  253. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/index.ts.html +0 -154
  254. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/effect/visual.ts.html +0 -148
  255. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/etro.ts.html +0 -163
  256. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/index.ts.html +0 -109
  257. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/audio.ts.html +0 -241
  258. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/index.ts.html +0 -124
  259. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/text.ts.html +0 -658
  260. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/layer/video.ts.html +0 -211
  261. package/coverage/Firefox 148.0 (Mac OS 10.15)/html/src/movie/index.ts.html +0 -88
  262. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/base.css +0 -0
  263. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/block-navigation.js +0 -0
  264. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/favicon.png +0 -0
  265. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/prettify.css +0 -0
  266. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/prettify.js +0 -0
  267. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/sort-arrow-sprite.png +0 -0
  268. /package/coverage/{Chrome Headless 79.0.3945.0 (Mac OS 10.16.0) → Chrome Headless 148.0.0.0 (Mac OS 10.15.7)}/html/sorter.js +0 -0
  269. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/base.css +0 -0
  270. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/block-navigation.js +0 -0
  271. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/favicon.png +0 -0
  272. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/prettify.css +0 -0
  273. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/prettify.js +0 -0
  274. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/sort-arrow-sprite.png +0 -0
  275. /package/coverage/{Firefox 118.0 (Mac OS 10.15) → Firefox 151.0 (Mac OS 10.15)}/html/sorter.js +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.01% </span>
26
+ <span class="strong">13.2% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>196/213</span>
28
+ <span class='fraction'>28/212</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">63.44% </span>
33
+ <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>59/93</span>
35
+ <span class='fraction'>0/93</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">95.23% </span>
40
+ <span class="strong">4.76% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>20/21</span>
42
+ <span class='fraction'>1/21</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.3% </span>
47
+ <span class="strong">12.98% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>192/208</span>
49
+ <span class='fraction'>27/208</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line high'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -728,199 +728,199 @@
728
728
  <span class="cline-any cline-neutral">&nbsp;</span>
729
729
  <span class="cline-any cline-neutral">&nbsp;</span>
730
730
  <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-yes">12x</span>
732
- <span class="cline-any cline-yes">11x</span>
731
+ <span class="cline-any cline-no">&nbsp;</span>
732
+ <span class="cline-any cline-no">&nbsp;</span>
733
733
  <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-yes">11x</span>
735
- <span class="cline-any cline-yes">11x</span>
736
- <span class="cline-any cline-yes">11x</span>
737
- <span class="cline-any cline-yes">11x</span>
734
+ <span class="cline-any cline-no">&nbsp;</span>
735
+ <span class="cline-any cline-no">&nbsp;</span>
736
+ <span class="cline-any cline-no">&nbsp;</span>
737
+ <span class="cline-any cline-no">&nbsp;</span>
738
738
  <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">11x</span>
740
- <span class="cline-any cline-yes">11x</span>
741
- <span class="cline-any cline-yes">11x</span>
739
+ <span class="cline-any cline-no">&nbsp;</span>
740
+ <span class="cline-any cline-no">&nbsp;</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
742
  <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-yes">11x</span>
744
- <span class="cline-any cline-yes">11x</span>
745
- <span class="cline-any cline-yes">11x</span>
743
+ <span class="cline-any cline-no">&nbsp;</span>
744
+ <span class="cline-any cline-no">&nbsp;</span>
745
+ <span class="cline-any cline-no">&nbsp;</span>
746
746
  <span class="cline-any cline-neutral">&nbsp;</span>
747
747
  <span class="cline-any cline-neutral">&nbsp;</span>
748
748
  <span class="cline-any cline-yes">1x</span>
749
- <span class="cline-any cline-yes">11x</span>
750
- <span class="cline-any cline-yes">11x</span>
751
- <span class="cline-any cline-yes">11x</span>
749
+ <span class="cline-any cline-no">&nbsp;</span>
750
+ <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-no">&nbsp;</span>
752
752
  <span class="cline-any cline-no">&nbsp;</span>
753
753
  <span class="cline-any cline-neutral">&nbsp;</span>
754
754
  <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-yes">11x</span>
756
- <span class="cline-any cline-yes">11x</span>
755
+ <span class="cline-any cline-no">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
757
757
  <span class="cline-any cline-neutral">&nbsp;</span>
758
758
  <span class="cline-any cline-neutral">&nbsp;</span>
759
759
  <span class="cline-any cline-yes">1x</span>
760
- <span class="cline-any cline-yes">11x</span>
761
- <span class="cline-any cline-yes">11x</span>
762
- <span class="cline-any cline-yes">11x</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-no">&nbsp;</span>
762
+ <span class="cline-any cline-no">&nbsp;</span>
763
763
  <span class="cline-any cline-no">&nbsp;</span>
764
764
  <span class="cline-any cline-neutral">&nbsp;</span>
765
765
  <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-yes">11x</span>
767
- <span class="cline-any cline-yes">11x</span>
768
- <span class="cline-any cline-yes">2x</span>
766
+ <span class="cline-any cline-no">&nbsp;</span>
767
+ <span class="cline-any cline-no">&nbsp;</span>
768
+ <span class="cline-any cline-no">&nbsp;</span>
769
769
  <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-yes">2x</span>
770
+ <span class="cline-any cline-no">&nbsp;</span>
771
771
  <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-yes">2x</span>
772
+ <span class="cline-any cline-no">&nbsp;</span>
773
773
  <span class="cline-any cline-neutral">&nbsp;</span>
774
774
  <span class="cline-any cline-neutral">&nbsp;</span>
775
775
  <span class="cline-any cline-neutral">&nbsp;</span>
776
776
  <span class="cline-any cline-neutral">&nbsp;</span>
777
777
  <span class="cline-any cline-neutral">&nbsp;</span>
778
778
  <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-yes">2x</span>
779
+ <span class="cline-any cline-no">&nbsp;</span>
780
780
  <span class="cline-any cline-no">&nbsp;</span>
781
781
  <span class="cline-any cline-neutral">&nbsp;</span>
782
782
  <span class="cline-any cline-neutral">&nbsp;</span>
783
783
  <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-yes">2x</span>
784
+ <span class="cline-any cline-no">&nbsp;</span>
785
785
  <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">2x</span>
786
+ <span class="cline-any cline-no">&nbsp;</span>
787
787
  <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-yes">11x</span>
788
+ <span class="cline-any cline-no">&nbsp;</span>
789
789
  <span class="cline-any cline-neutral">&nbsp;</span>
790
790
  <span class="cline-any cline-neutral">&nbsp;</span>
791
791
  <span class="cline-any cline-yes">1x</span>
792
- <span class="cline-any cline-yes">11x</span>
793
- <span class="cline-any cline-yes">11x</span>
792
+ <span class="cline-any cline-no">&nbsp;</span>
793
+ <span class="cline-any cline-no">&nbsp;</span>
794
794
  <span class="cline-any cline-neutral">&nbsp;</span>
795
795
  <span class="cline-any cline-neutral">&nbsp;</span>
796
796
  <span class="cline-any cline-neutral">&nbsp;</span>
797
797
  <span class="cline-any cline-neutral">&nbsp;</span>
798
798
  <span class="cline-any cline-neutral">&nbsp;</span>
799
799
  <span class="cline-any cline-yes">1x</span>
800
- <span class="cline-any cline-yes">11x</span>
801
- <span class="cline-any cline-yes">11x</span>
800
+ <span class="cline-any cline-no">&nbsp;</span>
801
+ <span class="cline-any cline-no">&nbsp;</span>
802
802
  <span class="cline-any cline-neutral">&nbsp;</span>
803
803
  <span class="cline-any cline-neutral">&nbsp;</span>
804
804
  <span class="cline-any cline-neutral">&nbsp;</span>
805
805
  <span class="cline-any cline-neutral">&nbsp;</span>
806
806
  <span class="cline-any cline-neutral">&nbsp;</span>
807
807
  <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-yes">11x</span>
809
- <span class="cline-any cline-yes">11x</span>
810
- <span class="cline-any cline-yes">13x</span>
811
- <span class="cline-any cline-yes">13x</span>
808
+ <span class="cline-any cline-no">&nbsp;</span>
809
+ <span class="cline-any cline-no">&nbsp;</span>
810
+ <span class="cline-any cline-no">&nbsp;</span>
811
+ <span class="cline-any cline-no">&nbsp;</span>
812
812
  <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-yes">11x</span>
813
+ <span class="cline-any cline-no">&nbsp;</span>
814
814
  <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">13x</span>
816
- <span class="cline-any cline-yes">13x</span>
815
+ <span class="cline-any cline-no">&nbsp;</span>
816
+ <span class="cline-any cline-no">&nbsp;</span>
817
817
  <span class="cline-any cline-neutral">&nbsp;</span>
818
818
  <span class="cline-any cline-neutral">&nbsp;</span>
819
819
  <span class="cline-any cline-neutral">&nbsp;</span>
820
820
  <span class="cline-any cline-yes">1x</span>
821
- <span class="cline-any cline-yes">13x</span>
822
- <span class="cline-any cline-yes">13x</span>
821
+ <span class="cline-any cline-no">&nbsp;</span>
822
+ <span class="cline-any cline-no">&nbsp;</span>
823
823
  <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-yes">13x</span>
825
- <span class="cline-any cline-yes">13x</span>
826
- <span class="cline-any cline-yes">13x</span>
824
+ <span class="cline-any cline-no">&nbsp;</span>
825
+ <span class="cline-any cline-no">&nbsp;</span>
826
+ <span class="cline-any cline-no">&nbsp;</span>
827
827
  <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-yes">13x</span>
828
+ <span class="cline-any cline-no">&nbsp;</span>
829
829
  <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-yes">13x</span>
830
+ <span class="cline-any cline-no">&nbsp;</span>
831
831
  <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-yes">13x</span>
832
+ <span class="cline-any cline-no">&nbsp;</span>
833
833
  <span class="cline-any cline-neutral">&nbsp;</span>
834
834
  <span class="cline-any cline-neutral">&nbsp;</span>
835
835
  <span class="cline-any cline-yes">1x</span>
836
- <span class="cline-any cline-yes">13x</span>
836
+ <span class="cline-any cline-no">&nbsp;</span>
837
837
  <span class="cline-any cline-neutral">&nbsp;</span>
838
838
  <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-yes">13x</span>
840
- <span class="cline-any cline-yes">11x</span>
841
- <span class="cline-any cline-yes">11x</span>
839
+ <span class="cline-any cline-no">&nbsp;</span>
840
+ <span class="cline-any cline-no">&nbsp;</span>
841
+ <span class="cline-any cline-no">&nbsp;</span>
842
842
  <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">11x</span>
843
+ <span class="cline-any cline-no">&nbsp;</span>
844
844
  <span class="cline-any cline-neutral">&nbsp;</span>
845
845
  <span class="cline-any cline-neutral">&nbsp;</span>
846
846
  <span class="cline-any cline-neutral">&nbsp;</span>
847
847
  <span class="cline-any cline-yes">1x</span>
848
- <span class="cline-any cline-yes">13x</span>
848
+ <span class="cline-any cline-no">&nbsp;</span>
849
849
  <span class="cline-any cline-neutral">&nbsp;</span>
850
850
  <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-yes">13x</span>
851
+ <span class="cline-any cline-no">&nbsp;</span>
852
852
  <span class="cline-any cline-neutral">&nbsp;</span>
853
853
  <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-yes">13x</span>
855
- <span class="cline-any cline-yes">13x</span>
856
- <span class="cline-any cline-yes">13x</span>
854
+ <span class="cline-any cline-no">&nbsp;</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
856
+ <span class="cline-any cline-no">&nbsp;</span>
857
857
  <span class="cline-any cline-neutral">&nbsp;</span>
858
858
  <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-yes">13x</span>
859
+ <span class="cline-any cline-no">&nbsp;</span>
860
860
  <span class="cline-any cline-neutral">&nbsp;</span>
861
861
  <span class="cline-any cline-neutral">&nbsp;</span>
862
862
  <span class="cline-any cline-yes">1x</span>
863
- <span class="cline-any cline-yes">13x</span>
863
+ <span class="cline-any cline-no">&nbsp;</span>
864
864
  <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-yes">13x</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
866
  <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-yes">13x</span>
867
+ <span class="cline-any cline-no">&nbsp;</span>
868
868
  <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">13x</span>
869
+ <span class="cline-any cline-no">&nbsp;</span>
870
870
  <span class="cline-any cline-neutral">&nbsp;</span>
871
871
  <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-yes">13x</span>
872
+ <span class="cline-any cline-no">&nbsp;</span>
873
873
  <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">13x</span>
875
- <span class="cline-any cline-yes">13x</span>
876
- <span class="cline-any cline-yes">13x</span>
874
+ <span class="cline-any cline-no">&nbsp;</span>
875
+ <span class="cline-any cline-no">&nbsp;</span>
876
+ <span class="cline-any cline-no">&nbsp;</span>
877
877
  <span class="cline-any cline-neutral">&nbsp;</span>
878
878
  <span class="cline-any cline-neutral">&nbsp;</span>
879
879
  <span class="cline-any cline-neutral">&nbsp;</span>
880
880
  <span class="cline-any cline-neutral">&nbsp;</span>
881
881
  <span class="cline-any cline-neutral">&nbsp;</span>
882
882
  <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-yes">13x</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
884
884
  <span class="cline-any cline-neutral">&nbsp;</span>
885
885
  <span class="cline-any cline-neutral">&nbsp;</span>
886
886
  <span class="cline-any cline-neutral">&nbsp;</span>
887
887
  <span class="cline-any cline-yes">1x</span>
888
- <span class="cline-any cline-yes">13x</span>
888
+ <span class="cline-any cline-no">&nbsp;</span>
889
889
  <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-yes">13x</span>
891
- <span class="cline-any cline-yes">13x</span>
892
- <span class="cline-any cline-yes">13x</span>
893
- <span class="cline-any cline-yes">13x</span>
894
- <span class="cline-any cline-yes">13x</span>
895
- <span class="cline-any cline-yes">13x</span>
896
- <span class="cline-any cline-yes">13x</span>
897
- <span class="cline-any cline-yes">13x</span>
890
+ <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-no">&nbsp;</span>
892
+ <span class="cline-any cline-no">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-no">&nbsp;</span>
895
+ <span class="cline-any cline-no">&nbsp;</span>
896
+ <span class="cline-any cline-no">&nbsp;</span>
897
+ <span class="cline-any cline-no">&nbsp;</span>
898
898
  <span class="cline-any cline-neutral">&nbsp;</span>
899
899
  <span class="cline-any cline-neutral">&nbsp;</span>
900
900
  <span class="cline-any cline-yes">1x</span>
901
- <span class="cline-any cline-yes">13x</span>
901
+ <span class="cline-any cline-no">&nbsp;</span>
902
902
  <span class="cline-any cline-neutral">&nbsp;</span>
903
903
  <span class="cline-any cline-neutral">&nbsp;</span>
904
904
  <span class="cline-any cline-neutral">&nbsp;</span>
905
905
  <span class="cline-any cline-neutral">&nbsp;</span>
906
906
  <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-yes">13x</span>
908
- <span class="cline-any cline-yes">13x</span>
907
+ <span class="cline-any cline-no">&nbsp;</span>
908
+ <span class="cline-any cline-no">&nbsp;</span>
909
909
  <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-yes">13x</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
911
  <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">13x</span>
913
- <span class="cline-any cline-yes">13x</span>
914
- <span class="cline-any cline-yes">2x</span>
912
+ <span class="cline-any cline-no">&nbsp;</span>
913
+ <span class="cline-any cline-no">&nbsp;</span>
914
+ <span class="cline-any cline-no">&nbsp;</span>
915
915
  <span class="cline-any cline-neutral">&nbsp;</span>
916
916
  <span class="cline-any cline-neutral">&nbsp;</span>
917
917
  <span class="cline-any cline-neutral">&nbsp;</span>
918
918
  <span class="cline-any cline-neutral">&nbsp;</span>
919
919
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">2x</span>
921
- <span class="cline-any cline-yes">2x</span>
922
- <span class="cline-any cline-yes">2x</span>
923
- <span class="cline-any cline-yes">2x</span>
920
+ <span class="cline-any cline-no">&nbsp;</span>
921
+ <span class="cline-any cline-no">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
924
  <span class="cline-any cline-neutral">&nbsp;</span>
925
925
  <span class="cline-any cline-neutral">&nbsp;</span>
926
926
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -930,41 +930,41 @@
930
930
  <span class="cline-any cline-neutral">&nbsp;</span>
931
931
  <span class="cline-any cline-neutral">&nbsp;</span>
932
932
  <span class="cline-any cline-yes">1x</span>
933
- <span class="cline-any cline-yes">13x</span>
933
+ <span class="cline-any cline-no">&nbsp;</span>
934
934
  <span class="cline-any cline-neutral">&nbsp;</span>
935
935
  <span class="cline-any cline-neutral">&nbsp;</span>
936
936
  <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-yes">13x</span>
938
- <span class="cline-any cline-yes">13x</span>
937
+ <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
939
  <span class="cline-any cline-neutral">&nbsp;</span>
940
940
  <span class="cline-any cline-neutral">&nbsp;</span>
941
941
  <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-yes">13x</span>
943
- <span class="cline-any cline-yes">3x</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
943
+ <span class="cline-any cline-no">&nbsp;</span>
944
944
  <span class="cline-any cline-neutral">&nbsp;</span>
945
945
  <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-yes">13x</span>
947
- <span class="cline-any cline-yes">15x</span>
948
- <span class="cline-any cline-yes">15x</span>
949
- <span class="cline-any cline-yes">15x</span>
950
- <span class="cline-any cline-yes">15x</span>
946
+ <span class="cline-any cline-no">&nbsp;</span>
947
+ <span class="cline-any cline-no">&nbsp;</span>
948
+ <span class="cline-any cline-no">&nbsp;</span>
949
+ <span class="cline-any cline-no">&nbsp;</span>
950
+ <span class="cline-any cline-no">&nbsp;</span>
951
951
  <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">15x</span>
952
+ <span class="cline-any cline-no">&nbsp;</span>
953
953
  <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-yes">13x</span>
954
+ <span class="cline-any cline-no">&nbsp;</span>
955
955
  <span class="cline-any cline-neutral">&nbsp;</span>
956
956
  <span class="cline-any cline-neutral">&nbsp;</span>
957
957
  <span class="cline-any cline-yes">1x</span>
958
- <span class="cline-any cline-yes">13x</span>
958
+ <span class="cline-any cline-no">&nbsp;</span>
959
959
  <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-yes">13x</span>
961
- <span class="cline-any cline-yes">13x</span>
962
- <span class="cline-any cline-yes">13x</span>
960
+ <span class="cline-any cline-no">&nbsp;</span>
961
+ <span class="cline-any cline-no">&nbsp;</span>
962
+ <span class="cline-any cline-no">&nbsp;</span>
963
963
  <span class="cline-any cline-neutral">&nbsp;</span>
964
964
  <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-yes">13x</span>
965
+ <span class="cline-any cline-no">&nbsp;</span>
966
966
  <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-yes">13x</span>
967
+ <span class="cline-any cline-no">&nbsp;</span>
968
968
  <span class="cline-any cline-neutral">&nbsp;</span>
969
969
  <span class="cline-any cline-neutral">&nbsp;</span>
970
970
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -978,9 +978,9 @@
978
978
  <span class="cline-any cline-neutral">&nbsp;</span>
979
979
  <span class="cline-any cline-neutral">&nbsp;</span>
980
980
  <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-yes">15x</span>
982
- <span class="cline-any cline-yes">15x</span>
983
- <span class="cline-any cline-yes">15x</span>
981
+ <span class="cline-any cline-yes">1x</span>
982
+ <span class="cline-any cline-no">&nbsp;</span>
983
+ <span class="cline-any cline-no">&nbsp;</span>
984
984
  <span class="cline-any cline-neutral">&nbsp;</span>
985
985
  <span class="cline-any cline-neutral">&nbsp;</span>
986
986
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -995,26 +995,26 @@
995
995
  <span class="cline-any cline-neutral">&nbsp;</span>
996
996
  <span class="cline-any cline-neutral">&nbsp;</span>
997
997
  <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-yes">6x</span>
999
- <span class="cline-any cline-yes">6x</span>
1000
- <span class="cline-any cline-yes">4x</span>
1001
- <span class="cline-any cline-yes">4x</span>
1002
- <span class="cline-any cline-yes">2x</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
1000
+ <span class="cline-any cline-no">&nbsp;</span>
1001
+ <span class="cline-any cline-no">&nbsp;</span>
1002
+ <span class="cline-any cline-no">&nbsp;</span>
1003
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
1004
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">4x</span>
1005
+ <span class="cline-any cline-no">&nbsp;</span>
1006
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
1007
1007
  <span class="cline-any cline-neutral">&nbsp;</span>
1008
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-yes">15x</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
1010
  <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-yes">1x</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
1012
  <span class="cline-any cline-no">&nbsp;</span>
1013
1013
  <span class="cline-any cline-neutral">&nbsp;</span>
1014
1014
  <span class="cline-any cline-neutral">&nbsp;</span>
1015
1015
  <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-yes">1x</span>
1017
- <span class="cline-any cline-yes">1x</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
1017
+ <span class="cline-any cline-no">&nbsp;</span>
1018
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
1019
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
1020
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1024,14 +1024,14 @@
1024
1024
  <span class="cline-any cline-no">&nbsp;</span>
1025
1025
  <span class="cline-any cline-neutral">&nbsp;</span>
1026
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-yes">14x</span>
1028
- <span class="cline-any cline-yes">1x</span>
1027
+ <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-no">&nbsp;</span>
1029
1029
  <span class="cline-any cline-no">&nbsp;</span>
1030
1030
  <span class="cline-any cline-neutral">&nbsp;</span>
1031
1031
  <span class="cline-any cline-neutral">&nbsp;</span>
1032
1032
  <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-yes">1x</span>
1034
- <span class="cline-any cline-yes">1x</span>
1033
+ <span class="cline-any cline-no">&nbsp;</span>
1034
+ <span class="cline-any cline-no">&nbsp;</span>
1035
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
1036
1036
  <span class="cline-any cline-neutral">&nbsp;</span>
1037
1037
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1042,18 +1042,18 @@
1042
1042
  <span class="cline-any cline-no">&nbsp;</span>
1043
1043
  <span class="cline-any cline-neutral">&nbsp;</span>
1044
1044
  <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-yes">13x</span>
1045
+ <span class="cline-any cline-no">&nbsp;</span>
1046
1046
  <span class="cline-any cline-neutral">&nbsp;</span>
1047
1047
  <span class="cline-any cline-neutral">&nbsp;</span>
1048
1048
  <span class="cline-any cline-yes">1x</span>
1049
- <span class="cline-any cline-yes">11x</span>
1049
+ <span class="cline-any cline-no">&nbsp;</span>
1050
1050
  <span class="cline-any cline-neutral">&nbsp;</span>
1051
1051
  <span class="cline-any cline-neutral">&nbsp;</span>
1052
1052
  <span class="cline-any cline-neutral">&nbsp;</span>
1053
1053
  <span class="cline-any cline-neutral">&nbsp;</span>
1054
1054
  <span class="cline-any cline-neutral">&nbsp;</span>
1055
1055
  <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-yes">11x</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1057
1057
  <span class="cline-any cline-neutral">&nbsp;</span>
1058
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
1059
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1061,7 +1061,7 @@
1061
1061
  <span class="cline-any cline-neutral">&nbsp;</span>
1062
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
1063
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">11x</span>
1064
+ <span class="cline-any cline-no">&nbsp;</span>
1065
1065
  <span class="cline-any cline-neutral">&nbsp;</span>
1066
1066
  <span class="cline-any cline-neutral">&nbsp;</span>
1067
1067
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1071,14 +1071,14 @@
1071
1071
  <span class="cline-any cline-neutral">&nbsp;</span>
1072
1072
  <span class="cline-any cline-neutral">&nbsp;</span>
1073
1073
  <span class="cline-any cline-yes">1x</span>
1074
- <span class="cline-any cline-yes">22x</span>
1074
+ <span class="cline-any cline-no">&nbsp;</span>
1075
1075
  <span class="cline-any cline-neutral">&nbsp;</span>
1076
1076
  <span class="cline-any cline-neutral">&nbsp;</span>
1077
- <span class="cline-any cline-yes">22x</span>
1077
+ <span class="cline-any cline-no">&nbsp;</span>
1078
1078
  <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-yes">22x</span>
1079
+ <span class="cline-any cline-no">&nbsp;</span>
1080
1080
  <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-yes">22x</span>
1081
+ <span class="cline-any cline-no">&nbsp;</span>
1082
1082
  <span class="cline-any cline-neutral">&nbsp;</span>
1083
1083
  <span class="cline-any cline-neutral">&nbsp;</span>
1084
1084
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1094,26 +1094,26 @@
1094
1094
  <span class="cline-any cline-neutral">&nbsp;</span>
1095
1095
  <span class="cline-any cline-neutral">&nbsp;</span>
1096
1096
  <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-yes">15x</span>
1097
+ <span class="cline-any cline-yes">1x</span>
1098
1098
  <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-yes">15x</span>
1099
+ <span class="cline-any cline-no">&nbsp;</span>
1100
1100
  <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">15x</span>
1102
- <span class="cline-any cline-yes">15x</span>
1103
- <span class="cline-any cline-yes">15x</span>
1104
- <span class="cline-any cline-yes">15x</span>
1105
- <span class="cline-any cline-yes">15x</span>
1106
- <span class="cline-any cline-yes">15x</span>
1107
- <span class="cline-any cline-yes">15x</span>
1108
- <span class="cline-any cline-yes">15x</span>
1109
- <span class="cline-any cline-yes">15x</span>
1101
+ <span class="cline-any cline-no">&nbsp;</span>
1102
+ <span class="cline-any cline-no">&nbsp;</span>
1103
+ <span class="cline-any cline-no">&nbsp;</span>
1104
+ <span class="cline-any cline-no">&nbsp;</span>
1105
+ <span class="cline-any cline-no">&nbsp;</span>
1106
+ <span class="cline-any cline-no">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-no">&nbsp;</span>
1110
1110
  <span class="cline-any cline-neutral">&nbsp;</span>
1111
1111
  <span class="cline-any cline-neutral">&nbsp;</span>
1112
1112
  <span class="cline-any cline-neutral">&nbsp;</span>
1113
1113
  <span class="cline-any cline-neutral">&nbsp;</span>
1114
1114
  <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-yes">15x</span>
1116
- <span class="cline-any cline-yes">15x</span>
1115
+ <span class="cline-any cline-no">&nbsp;</span>
1116
+ <span class="cline-any cline-no">&nbsp;</span>
1117
1117
  <span class="cline-any cline-neutral">&nbsp;</span>
1118
1118
  <span class="cline-any cline-neutral">&nbsp;</span>
1119
1119
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1121,7 +1121,7 @@
1121
1121
  <span class="cline-any cline-neutral">&nbsp;</span>
1122
1122
  <span class="cline-any cline-neutral">&nbsp;</span>
1123
1123
  <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-yes">15x</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
1125
1125
  <span class="cline-any cline-neutral">&nbsp;</span>
1126
1126
  <span class="cline-any cline-neutral">&nbsp;</span>
1127
1127
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1131,11 +1131,11 @@
1131
1131
  <span class="cline-any cline-neutral">&nbsp;</span>
1132
1132
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
1133
  <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-yes">15x</span>
1135
- <span class="cline-any cline-yes">15x</span>
1136
- <span class="cline-any cline-yes">15x</span>
1137
- <span class="cline-any cline-yes">15x</span>
1138
- <span class="cline-any cline-yes">15x</span>
1134
+ <span class="cline-any cline-no">&nbsp;</span>
1135
+ <span class="cline-any cline-no">&nbsp;</span>
1136
+ <span class="cline-any cline-no">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
1139
  <span class="cline-any cline-neutral">&nbsp;</span>
1140
1140
  <span class="cline-any cline-no">&nbsp;</span>
1141
1141
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1143,48 +1143,48 @@
1143
1143
  <span class="cline-any cline-neutral">&nbsp;</span>
1144
1144
  <span class="cline-any cline-neutral">&nbsp;</span>
1145
1145
  <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-yes">15x</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
1147
  <span class="cline-any cline-no">&nbsp;</span>
1148
1148
  <span class="cline-any cline-neutral">&nbsp;</span>
1149
1149
  <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-yes">15x</span>
1151
- <span class="cline-any cline-yes">15x</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-no">&nbsp;</span>
1152
1152
  <span class="cline-any cline-neutral">&nbsp;</span>
1153
1153
  <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-yes">15x</span>
1154
+ <span class="cline-any cline-no">&nbsp;</span>
1155
1155
  <span class="cline-any cline-neutral">&nbsp;</span>
1156
1156
  <span class="cline-any cline-neutral">&nbsp;</span>
1157
1157
  <span class="cline-any cline-yes">1x</span>
1158
- <span class="cline-any cline-yes">11x</span>
1159
- <span class="cline-any cline-yes">11x</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
1160
  <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-yes">11x</span>
1162
- <span class="cline-any cline-yes">11x</span>
1163
- <span class="cline-any cline-yes">11x</span>
1164
- <span class="cline-any cline-yes">11x</span>
1161
+ <span class="cline-any cline-no">&nbsp;</span>
1162
+ <span class="cline-any cline-no">&nbsp;</span>
1163
+ <span class="cline-any cline-no">&nbsp;</span>
1164
+ <span class="cline-any cline-no">&nbsp;</span>
1165
1165
  <span class="cline-any cline-neutral">&nbsp;</span>
1166
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-yes">11x</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
1168
  <span class="cline-any cline-no">&nbsp;</span>
1169
1169
  <span class="cline-any cline-no">&nbsp;</span>
1170
1170
  <span class="cline-any cline-neutral">&nbsp;</span>
1171
1171
  <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-yes">11x</span>
1172
+ <span class="cline-any cline-no">&nbsp;</span>
1173
1173
  <span class="cline-any cline-neutral">&nbsp;</span>
1174
1174
  <span class="cline-any cline-neutral">&nbsp;</span>
1175
1175
  <span class="cline-any cline-yes">1x</span>
1176
- <span class="cline-any cline-yes">22x</span>
1177
- <span class="cline-any cline-yes">22x</span>
1178
- <span class="cline-any cline-yes">22x</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
1179
  <span class="cline-any cline-neutral">&nbsp;</span>
1180
1180
  <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-yes">22x</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
1182
  <span class="cline-any cline-no">&nbsp;</span>
1183
1183
  <span class="cline-any cline-no">&nbsp;</span>
1184
1184
  <span class="cline-any cline-no">&nbsp;</span>
1185
1185
  <span class="cline-any cline-neutral">&nbsp;</span>
1186
1186
  <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-yes">22x</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1188
1188
  <span class="cline-any cline-neutral">&nbsp;</span>
1189
1189
  <span class="cline-any cline-yes">1x</span>
1190
1190
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1291,199 +1291,199 @@ export class Shader extends Visual {
1291
1291
  * @param [userTextures=[]]
1292
1292
  * @param [sourceTextureOptions={}]
1293
1293
  */
1294
- constructor (options: ShaderOptions = {}) {
1295
- super()<span class="branch-1 cbranch-no" title="branch not covered" ></span>
1294
+ <span class="fstat-no" title="function not covered" > constructor (<span class="cstat-no" title="statement not covered" >o</span>ptions: ShaderOptions = {}) {</span>
1295
+ <span class="cstat-no" title="statement not covered" > super()</span>
1296
1296
  // TODO: split up into multiple methods
1297
- const fragmentSrc = options.fragmentSource || Shader._IDENTITY_FRAGMENT_SOURCE
1298
- const userUniforms = options.uniforms || {}
1299
- const userTextures = options.textures || {}
1300
- const sourceTextureOptions = options.sourceTextureOptions || {}
1301
- &nbsp;
1302
- const gl = this._initGl()
1303
- this._program = Shader._initShaderProgram(gl, Shader._VERTEX_SOURCE, fragmentSrc)
1304
- this._buffers = Shader._initRectBuffers(gl)
1305
- &nbsp;
1306
- this._initTextures(userUniforms, userTextures, sourceTextureOptions)
1307
- this._initAttribs()
1308
- this._initUniforms(userUniforms)
1297
+ const fragmentSrc = <span class="cstat-no" title="statement not covered" >options.fragmentSource || Shader._IDENTITY_FRAGMENT_SOURCE</span>
1298
+ const userUniforms = <span class="cstat-no" title="statement not covered" >options.uniforms || {}</span>
1299
+ const userTextures = <span class="cstat-no" title="statement not covered" >options.textures || {}</span>
1300
+ const sourceTextureOptions = <span class="cstat-no" title="statement not covered" >options.sourceTextureOptions || {}</span>
1301
+ &nbsp;
1302
+ const gl = <span class="cstat-no" title="statement not covered" >this._initGl()</span>
1303
+ <span class="cstat-no" title="statement not covered" > this._program = Shader._initShaderProgram(gl, Shader._VERTEX_SOURCE, fragmentSrc)</span>
1304
+ <span class="cstat-no" title="statement not covered" > this._buffers = Shader._initRectBuffers(gl)</span>
1305
+ &nbsp;
1306
+ <span class="cstat-no" title="statement not covered" > this._initTextures(userUniforms, userTextures, sourceTextureOptions)</span>
1307
+ <span class="cstat-no" title="statement not covered" > this._initAttribs()</span>
1308
+ <span class="cstat-no" title="statement not covered" > this._initUniforms(userUniforms)</span>
1309
1309
  }
1310
1310
  &nbsp;
1311
- private _initGl () {
1312
- this._canvas = document.createElement('canvas')
1313
- const gl = this._canvas.getContext('webgl')
1314
- <span class="missing-if-branch" title="if path not taken" >I</span>if (gl === null) {
1311
+ <span class="fstat-no" title="function not covered" > private _</span>initGl () {
1312
+ <span class="cstat-no" title="statement not covered" > this._canvas = document.createElement('canvas')</span>
1313
+ const gl = <span class="cstat-no" title="statement not covered" >this._canvas.getContext('webgl')</span>
1314
+ <span class="cstat-no" title="statement not covered" > if (gl === null) {</span>
1315
1315
  <span class="cstat-no" title="statement not covered" > throw new Error('Unable to initialize WebGL. Your browser or machine may not support it.')</span>
1316
1316
  }
1317
1317
  &nbsp;
1318
- this._gl = gl
1319
- return gl
1318
+ <span class="cstat-no" title="statement not covered" > this._gl = gl</span>
1319
+ <span class="cstat-no" title="statement not covered" > return gl</span>
1320
1320
  }
1321
1321
  &nbsp;
1322
- private _initTextures (userUniforms, userTextures, sourceTextureOptions) {
1323
- const gl = this._gl
1324
- const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)
1325
- <span class="missing-if-branch" title="if path not taken" >I</span>if (userTextures.length &gt; maxTextures) {
1322
+ <span class="fstat-no" title="function not covered" > private _</span>initTextures (userUniforms, userTextures, sourceTextureOptions) {
1323
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1324
+ const maxTextures = <span class="cstat-no" title="statement not covered" >gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)</span>
1325
+ <span class="cstat-no" title="statement not covered" > if (userTextures.length &gt; maxTextures) {</span>
1326
1326
  <span class="cstat-no" title="statement not covered" > console.warn('Too many textures!')</span>
1327
1327
  }
1328
1328
  &nbsp;
1329
- this._userTextures = {}
1330
- for (const name in userTextures) {
1331
- const userOptions: TextureOptions = userTextures[name]
1329
+ <span class="cstat-no" title="statement not covered" > this._userTextures = {}</span>
1330
+ <span class="cstat-no" title="statement not covered" > for (const name in userTextures) {</span>
1331
+ const userOptions: TextureOptions = <span class="cstat-no" title="statement not covered" >userTextures[name]</span>
1332
1332
  // Apply default options.
1333
- const options = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...userOptions }
1333
+ const options<span class="cstat-no" title="statement not covered" > = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...userOptions }</span>
1334
1334
  &nbsp;
1335
- <span class="missing-if-branch" title="else path not taken" >E</span>if (options.createUniform) {
1335
+ <span class="cstat-no" title="statement not covered" > if (options.createUniform) {</span>
1336
1336
  /*
1337
1337
  * Automatically, create a uniform with the same name as this texture,
1338
1338
  * that points to it. This is an easy way for the user to use custom
1339
1339
  * textures, without having to define multiple properties in the effect
1340
1340
  * object.
1341
1341
  */
1342
- <span class="missing-if-branch" title="if path not taken" >I</span>if (userUniforms[name]) {
1342
+ <span class="cstat-no" title="statement not covered" > if (userUniforms[name]) {</span>
1343
1343
  <span class="cstat-no" title="statement not covered" > throw new Error(`Texture - uniform naming conflict: ${name}!`)</span>
1344
1344
  }
1345
1345
  &nbsp;
1346
1346
  // Add this as a "user uniform".
1347
- userUniforms[name] = '1i' // texture pointer
1347
+ <span class="cstat-no" title="statement not covered" > userUniforms[name] = '1i' /</span>/ texture pointer
1348
1348
  }
1349
- this._userTextures[name] = options
1349
+ <span class="cstat-no" title="statement not covered" > this._userTextures[name] = options</span>
1350
1350
  }
1351
- this._sourceTextureOptions = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...sourceTextureOptions }
1351
+ <span class="cstat-no" title="statement not covered" > this._sourceTextureOptions = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...sourceTextureOptions }</span>
1352
1352
  }
1353
1353
  &nbsp;
1354
- private _initAttribs () {
1355
- const gl = this._gl
1356
- this._attribLocations = {
1354
+ <span class="fstat-no" title="function not covered" > private _</span>initAttribs () {
1355
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1356
+ <span class="cstat-no" title="statement not covered" > this._attribLocations = {</span>
1357
1357
  vertexPosition: gl.getAttribLocation(this._program, 'a_VertexPosition'),
1358
1358
  textureCoord: gl.getAttribLocation(this._program, 'a_TextureCoord')
1359
1359
  }
1360
1360
  }
1361
1361
  &nbsp;
1362
- private _initUniforms (userUniforms) {
1363
- const gl = this._gl
1364
- this._uniformLocations = {
1362
+ <span class="fstat-no" title="function not covered" > private _</span>initUniforms (userUniforms) {
1363
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1364
+ <span class="cstat-no" title="statement not covered" > this._uniformLocations = {</span>
1365
1365
  source: gl.getUniformLocation(this._program, 'u_Source'),
1366
1366
  size: gl.getUniformLocation(this._program, 'u_Size')
1367
1367
  }
1368
1368
  // The options value can just be a string equal to the type of the variable,
1369
1369
  // for syntactic sugar. If this is the case, convert it to a real options
1370
1370
  // object.
1371
- this._userUniforms = {}
1372
- for (const name in userUniforms) {
1373
- const val = userUniforms[name]
1374
- this._userUniforms[name] = typeof val === 'string' ? { type: val } : val
1371
+ <span class="cstat-no" title="statement not covered" > this._userUniforms = {}</span>
1372
+ <span class="cstat-no" title="statement not covered" > for (const name in userUniforms) {</span>
1373
+ const val = <span class="cstat-no" title="statement not covered" >userUniforms[name]</span>
1374
+ <span class="cstat-no" title="statement not covered" > this._userUniforms[name] = typeof val === 'string' ? { type: val } : val</span>
1375
1375
  }
1376
- for (const unprefixed in userUniforms) {
1376
+ <span class="cstat-no" title="statement not covered" > for (const unprefixed in userUniforms) {</span>
1377
1377
  // property =&gt; u_Property
1378
- const prefixed = 'u_' + unprefixed.charAt(0).toUpperCase() + (unprefixed.length &gt; 1 ? unprefixed.slice(1) : <span class="branch-1 cbranch-no" title="branch not covered" >'')</span>
1379
- this._uniformLocations[unprefixed] = gl.getUniformLocation(this._program, prefixed)
1378
+ const prefixed = <span class="cstat-no" title="statement not covered" >'u_' + unprefixed.charAt(0).toUpperCase() + (unprefixed.length &gt; 1 ? unprefixed.slice(1) : '')</span>
1379
+ <span class="cstat-no" title="statement not covered" > this._uniformLocations[unprefixed] = gl.getUniformLocation(this._program, prefixed)</span>
1380
1380
  }
1381
1381
  }
1382
1382
  &nbsp;
1383
- apply (target: Movie | VisualLayer, reltime: number): void {
1384
- this._checkDimensions(target)
1385
- this._refreshGl()
1383
+ <span class="fstat-no" title="function not covered" > apply </span>(target: Movie | VisualLayer, reltime: number): void {
1384
+ <span class="cstat-no" title="statement not covered" > this._checkDimensions(target)</span>
1385
+ <span class="cstat-no" title="statement not covered" > this._refreshGl()</span>
1386
1386
  &nbsp;
1387
- this._enablePositionAttrib()
1388
- this._enableTexCoordAttrib()
1389
- this._prepareTextures(target, reltime)
1387
+ <span class="cstat-no" title="statement not covered" > this._enablePositionAttrib()</span>
1388
+ <span class="cstat-no" title="statement not covered" > this._enableTexCoordAttrib()</span>
1389
+ <span class="cstat-no" title="statement not covered" > this._prepareTextures(target, reltime)</span>
1390
1390
  &nbsp;
1391
- this._gl.useProgram(this._program)
1391
+ <span class="cstat-no" title="statement not covered" > this._gl.useProgram(this._program)</span>
1392
1392
  &nbsp;
1393
- this._prepareUniforms(target, reltime)
1393
+ <span class="cstat-no" title="statement not covered" > this._prepareUniforms(target, reltime)</span>
1394
1394
  &nbsp;
1395
- this._draw(target)
1395
+ <span class="cstat-no" title="statement not covered" > this._draw(target)</span>
1396
1396
  }
1397
1397
  &nbsp;
1398
- private _checkDimensions (target) {
1399
- const gl = this._gl
1398
+ <span class="fstat-no" title="function not covered" > private _</span>checkDimensions (target) {
1399
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1400
1400
  // TODO: Change target.canvas.width =&gt; target.width and see if it breaks
1401
1401
  // anything.
1402
- if (this._canvas.width !== target.canvas.width || this._canvas.height !== target.canvas.height) { // (optimization)
1403
- this._canvas.width = target.canvas.width
1404
- this._canvas.height = target.canvas.height
1402
+ <span class="cstat-no" title="statement not covered" > if (this._canvas.width !== target.canvas.width || this._canvas.height !== target.canvas.height) { // (optimization)</span>
1403
+ <span class="cstat-no" title="statement not covered" > this._canvas.width = target.canvas.width</span>
1404
+ <span class="cstat-no" title="statement not covered" > this._canvas.height = target.canvas.height</span>
1405
1405
  &nbsp;
1406
- gl.viewport(0, 0, target.canvas.width, target.canvas.height)
1406
+ <span class="cstat-no" title="statement not covered" > gl.viewport(0, 0, target.canvas.width, target.canvas.height)</span>
1407
1407
  }
1408
1408
  }
1409
1409
  &nbsp;
1410
- private _refreshGl () {
1411
- const gl = this._gl
1410
+ <span class="fstat-no" title="function not covered" > private _</span>refreshGl () {
1411
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1412
1412
  // Clear to black; fragments can be made transparent with the blendfunc
1413
1413
  // below.
1414
- gl.clearColor(0, 0, 0, 1)
1414
+ <span class="cstat-no" title="statement not covered" > gl.clearColor(0, 0, 0, 1)</span>
1415
1415
  // gl.clearDepth(1.0); // clear everything
1416
1416
  // not sure why I can't multiply rgb by zero
1417
- gl.blendFuncSeparate(gl.SRC_ALPHA, gl.SRC_ALPHA, gl.ONE, gl.ZERO)
1418
- gl.enable(gl.BLEND)
1419
- gl.disable(gl.DEPTH_TEST)
1417
+ <span class="cstat-no" title="statement not covered" > gl.blendFuncSeparate(gl.SRC_ALPHA, gl.SRC_ALPHA, gl.ONE, gl.ZERO)</span>
1418
+ <span class="cstat-no" title="statement not covered" > gl.enable(gl.BLEND)</span>
1419
+ <span class="cstat-no" title="statement not covered" > gl.disable(gl.DEPTH_TEST)</span>
1420
1420
  // gl.depthFunc(gl.LEQUAL);
1421
1421
  &nbsp;
1422
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
1422
+ <span class="cstat-no" title="statement not covered" > gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)</span>
1423
1423
  }
1424
1424
  &nbsp;
1425
- private _enablePositionAttrib () {
1426
- const gl = this._gl
1425
+ <span class="fstat-no" title="function not covered" > private _</span>enablePositionAttrib () {
1426
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1427
1427
  // Tell WebGL how to pull out the positions from buffer
1428
- const numComponents = 2
1428
+ const numComponents = <span class="cstat-no" title="statement not covered" >2</span>
1429
1429
  // The data in the buffer is 32bit floats
1430
- const type = gl.FLOAT
1430
+ const type = <span class="cstat-no" title="statement not covered" >gl.FLOAT</span>
1431
1431
  // Don't normalize
1432
- const normalize = false
1432
+ const normalize = <span class="cstat-no" title="statement not covered" >false</span>
1433
1433
  // How many bytes to get from one set of values to the next
1434
1434
  // 0 = use type and numComponents above
1435
- const stride = 0
1435
+ const stride = <span class="cstat-no" title="statement not covered" >0</span>
1436
1436
  // How many bytes inside the buffer to start from
1437
- const offset = 0
1438
- gl.bindBuffer(gl.ARRAY_BUFFER, this._buffers.position)
1439
- gl.vertexAttribPointer(
1437
+ const offset = <span class="cstat-no" title="statement not covered" >0</span>
1438
+ <span class="cstat-no" title="statement not covered" > gl.bindBuffer(gl.ARRAY_BUFFER, this._buffers.position)</span>
1439
+ <span class="cstat-no" title="statement not covered" > gl.vertexAttribPointer(</span>
1440
1440
  this._attribLocations.vertexPosition,
1441
1441
  numComponents,
1442
1442
  type,
1443
1443
  normalize,
1444
1444
  stride,
1445
1445
  offset)
1446
- gl.enableVertexAttribArray(
1446
+ <span class="cstat-no" title="statement not covered" > gl.enableVertexAttribArray(</span>
1447
1447
  this._attribLocations.vertexPosition)
1448
1448
  }
1449
1449
  &nbsp;
1450
- private _enableTexCoordAttrib () {
1451
- const gl = this._gl
1450
+ <span class="fstat-no" title="function not covered" > private _</span>enableTexCoordAttrib () {
1451
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1452
1452
  // tell webgl how to pull out the texture coordinates from buffer
1453
- const numComponents = 2 // every coordinate composed of 2 values (uv)
1454
- const type = gl.FLOAT // the data in the buffer is 32 bit float
1455
- const normalize = false // don't normalize
1456
- const stride = 0 // how many bytes to get from one set to the next
1457
- const offset = 0 // how many bytes inside the buffer to start from
1458
- gl.bindBuffer(gl.ARRAY_BUFFER, this._buffers.textureCoord)
1459
- gl.vertexAttribPointer(this._attribLocations.textureCoord, numComponents, type, normalize, stride, offset)
1460
- gl.enableVertexAttribArray(this._attribLocations.textureCoord)
1453
+ const numComponents = <span class="cstat-no" title="statement not covered" >2 </span>// every coordinate composed of 2 values (uv)
1454
+ const type = <span class="cstat-no" title="statement not covered" >gl.FLOAT </span>// the data in the buffer is 32 bit float
1455
+ const normalize = <span class="cstat-no" title="statement not covered" >false </span>// don't normalize
1456
+ const stride = <span class="cstat-no" title="statement not covered" >0 </span>// how many bytes to get from one set to the next
1457
+ const offset = <span class="cstat-no" title="statement not covered" >0 </span>// how many bytes inside the buffer to start from
1458
+ <span class="cstat-no" title="statement not covered" > gl.bindBuffer(gl.ARRAY_BUFFER, this._buffers.textureCoord)</span>
1459
+ <span class="cstat-no" title="statement not covered" > gl.vertexAttribPointer(this._attribLocations.textureCoord, numComponents, type, normalize, stride, offset)</span>
1460
+ <span class="cstat-no" title="statement not covered" > gl.enableVertexAttribArray(this._attribLocations.textureCoord)</span>
1461
1461
  }
1462
1462
  &nbsp;
1463
- private _prepareTextures (target, reltime) {
1464
- const gl = this._gl
1463
+ <span class="fstat-no" title="function not covered" > private _</span>prepareTextures (target, reltime) {
1464
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1465
1465
  // TODO: figure out which properties should be private / public
1466
1466
  &nbsp;
1467
1467
  // Tell WebGL we want to affect texture unit 0
1468
1468
  // Call `activeTexture` before `_loadTexture` so it won't be bound to the
1469
1469
  // last active texture.
1470
- gl.activeTexture(gl.TEXTURE0)
1471
- this._inputTexture = Shader._loadTexture(gl, target.canvas, this._sourceTextureOptions)
1470
+ <span class="cstat-no" title="statement not covered" > gl.activeTexture(gl.TEXTURE0)</span>
1471
+ <span class="cstat-no" title="statement not covered" > this._inputTexture = Shader._loadTexture(gl, target.canvas, this._sourceTextureOptions)</span>
1472
1472
  // Bind the texture to texture unit 0
1473
- gl.bindTexture(gl.TEXTURE_2D, this._inputTexture)
1473
+ <span class="cstat-no" title="statement not covered" > gl.bindTexture(gl.TEXTURE_2D, this._inputTexture)</span>
1474
1474
  &nbsp;
1475
- let i = 0
1476
- for (const name in this._userTextures) {
1477
- const options = this._userTextures[name]
1475
+ let i = <span class="cstat-no" title="statement not covered" >0</span>
1476
+ <span class="cstat-no" title="statement not covered" > for (const name in this._userTextures) {</span>
1477
+ const options = <span class="cstat-no" title="statement not covered" >this._userTextures[name]</span>
1478
1478
  /*
1479
1479
  * Call `activeTexture` before `_loadTexture` so it won't be bound to the
1480
1480
  * last active texture.
1481
1481
  * TODO: investigate better implementation of `_loadTexture`
1482
1482
  */
1483
- gl.activeTexture(gl.TEXTURE0 + (Shader.INTERNAL_TEXTURE_UNITS + i)) // use the fact that TEXTURE0, TEXTURE1, ... are continuous
1484
- const preparedTex = Shader._loadTexture(gl, val(this, name, reltime), options) // do it every frame to keep updated (I think you need to)
1485
- gl.bindTexture(gl[options.target], preparedTex)
1486
- i++
1483
+ <span class="cstat-no" title="statement not covered" > gl.activeTexture(gl.TEXTURE0 + (Shader.INTERNAL_TEXTURE_UNITS + i)) /</span>/ use the fact that TEXTURE0, TEXTURE1, ... are continuous
1484
+ const preparedTex = <span class="cstat-no" title="statement not covered" >Shader._loadTexture(gl, val(this, name, reltime), options) </span>// do it every frame to keep updated (I think you need to)
1485
+ <span class="cstat-no" title="statement not covered" > gl.bindTexture(gl[options.target], preparedTex)</span>
1486
+ <span class="cstat-no" title="statement not covered" > i++</span>
1487
1487
  }
1488
1488
  }
1489
1489
  &nbsp;
@@ -1492,42 +1492,42 @@ export class Shader extends Visual {
1492
1492
  * @param target The movie or layer to apply the shader to.
1493
1493
  * @param reltime The relative time of the movie or layer.
1494
1494
  */
1495
- private _prepareUniforms (target, reltime) {
1496
- const gl = this._gl
1495
+ <span class="fstat-no" title="function not covered" > private _</span>prepareUniforms (target, reltime) {
1496
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1497
1497
  &nbsp;
1498
1498
  // Tell the shader we bound the texture to texture unit 0.
1499
1499
  // All base (Shader class) uniforms are optional.
1500
- <span class="missing-if-branch" title="else path not taken" >E</span>if (this._uniformLocations.source) {
1501
- gl.uniform1i(this._uniformLocations.source, 0)
1500
+ <span class="cstat-no" title="statement not covered" > if (this._uniformLocations.source) {</span>
1501
+ <span class="cstat-no" title="statement not covered" > gl.uniform1i(this._uniformLocations.source, 0)</span>
1502
1502
  }
1503
1503
  &nbsp;
1504
1504
  // All base (Shader class) uniforms are optional.
1505
- if (this._uniformLocations.size) {
1506
- gl.uniform2iv(this._uniformLocations.size, [target.canvas.width, target.canvas.height])
1505
+ <span class="cstat-no" title="statement not covered" > if (this._uniformLocations.size) {</span>
1506
+ <span class="cstat-no" title="statement not covered" > gl.uniform2iv(this._uniformLocations.size, [target.canvas.width, target.canvas.height])</span>
1507
1507
  }
1508
1508
  &nbsp;
1509
- for (const unprefixed in this._userUniforms) {
1510
- const options = this._userUniforms[unprefixed] as UniformOptions
1511
- const value = val(this, unprefixed, reltime)
1512
- const preparedValue = this._prepareValue(value, options.type, reltime, options)
1513
- const location = this._uniformLocations[unprefixed]
1509
+ <span class="cstat-no" title="statement not covered" > for (const unprefixed in this._userUniforms) {</span>
1510
+ const options = <span class="cstat-no" title="statement not covered" >this._userUniforms[unprefixed] as UniformOptions</span>
1511
+ const value = <span class="cstat-no" title="statement not covered" >val(this, unprefixed, reltime)</span>
1512
+ const preparedValue = <span class="cstat-no" title="statement not covered" >this._prepareValue(value, options.type, reltime, options)</span>
1513
+ const location = <span class="cstat-no" title="statement not covered" >this._uniformLocations[unprefixed]</span>
1514
1514
  // haHA JavaScript (`options.type` is "1f", for instance)
1515
- gl['uniform' + options.type](location, preparedValue)
1515
+ <span class="cstat-no" title="statement not covered" > gl['uniform' + options.type](location, preparedValue)</span>
1516
1516
  }
1517
- gl.uniform1i(this._uniformLocations.test, 0)
1517
+ <span class="cstat-no" title="statement not covered" > gl.uniform1i(this._uniformLocations.test, 0)</span>
1518
1518
  }
1519
1519
  &nbsp;
1520
- private _draw (target) {
1521
- const gl = this._gl
1520
+ <span class="fstat-no" title="function not covered" > private _</span>draw (target) {
1521
+ const gl = <span class="cstat-no" title="statement not covered" >this._gl</span>
1522
1522
  &nbsp;
1523
- const offset = 0
1524
- const vertexCount = 4
1525
- gl.drawArrays(gl.TRIANGLE_STRIP, offset, vertexCount)
1523
+ const offset = <span class="cstat-no" title="statement not covered" >0</span>
1524
+ const vertexCount = <span class="cstat-no" title="statement not covered" >4</span>
1525
+ <span class="cstat-no" title="statement not covered" > gl.drawArrays(gl.TRIANGLE_STRIP, offset, vertexCount)</span>
1526
1526
  &nbsp;
1527
1527
  // clear the target, in case the effect outputs transparent pixels
1528
- target.cctx.clearRect(0, 0, target.canvas.width, target.canvas.height)
1528
+ <span class="cstat-no" title="statement not covered" > target.cctx.clearRect(0, 0, target.canvas.width, target.canvas.height)</span>
1529
1529
  // copy internal image state onto target
1530
- target.cctx.drawImage(this._canvas, 0, 0)
1530
+ <span class="cstat-no" title="statement not covered" > target.cctx.drawImage(this._canvas, 0, 0)</span>
1531
1531
  }
1532
1532
  &nbsp;
1533
1533
  /**
@@ -1541,9 +1541,9 @@ export class Shader extends Visual {
1541
1541
  * @param [options]
1542
1542
  * @returns the prepared value
1543
1543
  */
1544
- private _prepareValue (value, outputType, reltime, <span class="missing-if-branch" title="if path not taken" >I</span>options: UniformOptions = {}) {
1545
- const def = options.defaultFloatComponent || 0
1546
- if (outputType === '1i') {
1544
+ <span class="fstat-no" title="function not covered" > private _</span>prepareValue (value, outputType, reltime, <span class="cstat-no" title="statement not covered" >options: UniformOptions = {}) {</span>
1545
+ const def = <span class="cstat-no" title="statement not covered" >options.defaultFloatComponent || 0</span>
1546
+ <span class="cstat-no" title="statement not covered" > if (outputType === '1i') {</span>
1547
1547
  /*
1548
1548
  * Textures are passed to the shader by both providing the texture (with
1549
1549
  * texImage2D) and setting the |sampler| uniform equal to the index of
@@ -1558,65 +1558,65 @@ export class Shader extends Visual {
1558
1558
  * To do this, test if |value| is identical to a texture. If so, set it
1559
1559
  * to the texture's index, so the shader can use it.
1560
1560
  */
1561
- let i = 0
1562
- for (const name in this._userTextures) {
1563
- const testValue = val(this, name, reltime)
1564
- if (value === testValue) {
1565
- value = Shader.INTERNAL_TEXTURE_UNITS + i // after the internal texture units
1561
+ let i = <span class="cstat-no" title="statement not covered" >0</span>
1562
+ <span class="cstat-no" title="statement not covered" > for (const name in this._userTextures) {</span>
1563
+ const testValue = <span class="cstat-no" title="statement not covered" >val(this, name, reltime)</span>
1564
+ <span class="cstat-no" title="statement not covered" > if (value === testValue) {</span>
1565
+ <span class="cstat-no" title="statement not covered" > value = Shader.INTERNAL_TEXTURE_UNITS + i /</span>/ after the internal texture units
1566
1566
  }
1567
1567
  &nbsp;
1568
- i++
1568
+ <span class="cstat-no" title="statement not covered" > i++</span>
1569
1569
  }
1570
1570
  }
1571
1571
  &nbsp;
1572
- if (outputType === '3fv') {
1572
+ <span class="cstat-no" title="statement not covered" > if (outputType === '3fv') {</span>
1573
1573
  // allow 4-component vectors; TODO: why?
1574
- <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(value) &amp;&amp; (<span class="branch-1 cbranch-no" title="branch not covered" >value.length === 3 </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >value.length === 4)</span>) {
1574
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(value) &amp;&amp; (value.length === 3 || value.length === 4)) {</span>
1575
1575
  <span class="cstat-no" title="statement not covered" > return value</span>
1576
1576
  }
1577
1577
  &nbsp;
1578
1578
  // kind of loose so this can be changed if needed
1579
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'object') {
1580
- return [
1581
- value.r !== undefined ? value.r : <span class="branch-1 cbranch-no" title="branch not covered" >def,</span>
1582
- value.g !== undefined ? value.g : <span class="branch-1 cbranch-no" title="branch not covered" >def,</span>
1583
- value.b !== undefined ? value.b : <span class="branch-1 cbranch-no" title="branch not covered" >def</span>
1579
+ <span class="cstat-no" title="statement not covered" > if (typeof value === 'object') {</span>
1580
+ <span class="cstat-no" title="statement not covered" > return [</span>
1581
+ value.r !== undefined ? value.r : def,
1582
+ value.g !== undefined ? value.g : def,
1583
+ value.b !== undefined ? value.b : def
1584
1584
  ]
1585
1585
  }
1586
1586
  &nbsp;
1587
1587
  <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid type: ${outputType} or value: ${value}`)</span>
1588
1588
  }
1589
1589
  &nbsp;
1590
- if (outputType === '4fv') {
1591
- <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(value) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >value.length === 4)</span> {
1590
+ <span class="cstat-no" title="statement not covered" > if (outputType === '4fv') {</span>
1591
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(value) &amp;&amp; value.length === 4) {</span>
1592
1592
  <span class="cstat-no" title="statement not covered" > return value</span>
1593
1593
  }
1594
1594
  &nbsp;
1595
1595
  // kind of loose so this can be changed if needed
1596
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'object') {
1597
- return [
1598
- value.r !== undefined ? value.r : <span class="branch-1 cbranch-no" title="branch not covered" >def,</span>
1599
- value.g !== undefined ? value.g : <span class="branch-1 cbranch-no" title="branch not covered" >def,</span>
1600
- value.b !== undefined ? value.b : <span class="branch-1 cbranch-no" title="branch not covered" >def,</span>
1601
- value.a !== undefined ? <span class="branch-0 cbranch-no" title="branch not covered" >value.a </span>: def
1596
+ <span class="cstat-no" title="statement not covered" > if (typeof value === 'object') {</span>
1597
+ <span class="cstat-no" title="statement not covered" > return [</span>
1598
+ value.r !== undefined ? value.r : def,
1599
+ value.g !== undefined ? value.g : def,
1600
+ value.b !== undefined ? value.b : def,
1601
+ value.a !== undefined ? value.a : def
1602
1602
  ]
1603
1603
  }
1604
1604
  &nbsp;
1605
1605
  <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid type: ${outputType} or value: ${value}`)</span>
1606
1606
  }
1607
1607
  &nbsp;
1608
- return value
1608
+ <span class="cstat-no" title="statement not covered" > return value</span>
1609
1609
  }
1610
1610
  &nbsp;
1611
- private static _initRectBuffers (gl) {
1612
- const position = [
1611
+ <span class="fstat-no" title="function not covered" > private static _</span>initRectBuffers (gl) {
1612
+ const position = <span class="cstat-no" title="statement not covered" >[</span>
1613
1613
  // the screen/canvas (output)
1614
1614
  -1.0, 1.0,
1615
1615
  1.0, 1.0,
1616
1616
  -1.0, -1.0,
1617
1617
  1.0, -1.0
1618
1618
  ]
1619
- const textureCoord = [
1619
+ const textureCoord = <span class="cstat-no" title="statement not covered" >[</span>
1620
1620
  // the texture/canvas (input)
1621
1621
  0.0, 0.0,
1622
1622
  1.0, 0.0,
@@ -1624,7 +1624,7 @@ export class Shader extends Visual {
1624
1624
  1.0, 1.0
1625
1625
  ]
1626
1626
  &nbsp;
1627
- return {
1627
+ <span class="cstat-no" title="statement not covered" > return {</span>
1628
1628
  position: Shader._initBuffer(gl, position),
1629
1629
  textureCoord: Shader._initBuffer(gl, textureCoord)
1630
1630
  }
@@ -1633,15 +1633,15 @@ export class Shader extends Visual {
1633
1633
  /**
1634
1634
  * Creates the quad covering the screen
1635
1635
  */
1636
- private static _initBuffer (gl, data) {
1637
- const buffer = gl.createBuffer()
1636
+ <span class="fstat-no" title="function not covered" > private static _</span>initBuffer (gl, data) {
1637
+ const buffer = <span class="cstat-no" title="statement not covered" >gl.createBuffer()</span>
1638
1638
  &nbsp;
1639
1639
  // Select the buffer as the one to apply buffer operations to from here out.
1640
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer)
1640
+ <span class="cstat-no" title="statement not covered" > gl.bindBuffer(gl.ARRAY_BUFFER, buffer)</span>
1641
1641
  &nbsp;
1642
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)
1642
+ <span class="cstat-no" title="statement not covered" > gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)</span>
1643
1643
  &nbsp;
1644
- return buffer
1644
+ <span class="cstat-no" title="statement not covered" > return buffer</span>
1645
1645
  }
1646
1646
  &nbsp;
1647
1647
  /**
@@ -1657,26 +1657,26 @@ export class Shader extends Visual {
1657
1657
  * @param [options.minFilter=gl.LINEAR]
1658
1658
  * @param [options.magFilter=gl.LINEAR]
1659
1659
  */
1660
- private static _loadTexture (gl, source, <span class="missing-if-branch" title="if path not taken" >I</span>options: TextureOptions = {}) {
1660
+ <span class="fstat-no" title="function not covered" > private static _</span>loadTexture (gl, source, <span class="cstat-no" title="statement not covered" >options: TextureOptions = {}) {</span>
1661
1661
  // Apply default options, just in case.
1662
- options = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...options }
1662
+ <span class="cstat-no" title="statement not covered" > options = { ...Shader._DEFAULT_TEXTURE_OPTIONS, ...options }</span>
1663
1663
  // When creating the option, the user can't access `gl` so access it here.
1664
- const target = gl[options.target]
1665
- const level = options.level
1666
- const internalFormat = gl[options.internalFormat]
1667
- const srcFormat = gl[options.srcFormat]
1668
- const srcType = gl[options.srcType]
1669
- const wrapS = gl[options.wrapS]
1670
- const wrapT = gl[options.wrapT]
1671
- const minFilter = gl[options.minFilter]
1672
- const magFilter = gl[options.magFilter]
1664
+ const target = <span class="cstat-no" title="statement not covered" >gl[options.target]</span>
1665
+ const level = <span class="cstat-no" title="statement not covered" >options.level</span>
1666
+ const internalFormat = <span class="cstat-no" title="statement not covered" >gl[options.internalFormat]</span>
1667
+ const srcFormat = <span class="cstat-no" title="statement not covered" >gl[options.srcFormat]</span>
1668
+ const srcType = <span class="cstat-no" title="statement not covered" >gl[options.srcType]</span>
1669
+ const wrapS = <span class="cstat-no" title="statement not covered" >gl[options.wrapS]</span>
1670
+ const wrapT = <span class="cstat-no" title="statement not covered" >gl[options.wrapT]</span>
1671
+ const minFilter = <span class="cstat-no" title="statement not covered" >gl[options.minFilter]</span>
1672
+ const magFilter = <span class="cstat-no" title="statement not covered" >gl[options.magFilter]</span>
1673
1673
  // TODO: figure out how wrap-s and wrap-t interact with mipmaps
1674
1674
  // (for legacy support)
1675
1675
  // let wrapS = options.wrapS ? options.wrapS : gl.CLAMP_TO_EDGE,
1676
1676
  // wrapT = options.wrapT ? options.wrapT : gl.CLAMP_TO_EDGE;
1677
1677
  &nbsp;
1678
- const tex = gl.createTexture()
1679
- gl.bindTexture(target, tex)
1678
+ const tex = <span class="cstat-no" title="statement not covered" >gl.createTexture()</span>
1679
+ <span class="cstat-no" title="statement not covered" > gl.bindTexture(target, tex)</span>
1680
1680
  &nbsp;
1681
1681
  // gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true) // premultiply alpha
1682
1682
  &nbsp;
@@ -1684,7 +1684,7 @@ export class Shader extends Visual {
1684
1684
  &nbsp;
1685
1685
  // TODO: support 3d textures (change texImage2D)
1686
1686
  // set to `source`
1687
- gl.texImage2D(target, level, internalFormat, srcFormat, srcType, source)
1687
+ <span class="cstat-no" title="statement not covered" > gl.texImage2D(target, level, internalFormat, srcFormat, srcType, source)</span>
1688
1688
  &nbsp;
1689
1689
  /*
1690
1690
  * WebGL1 has different requirements for power of 2 images vs non power of 2
@@ -1694,11 +1694,11 @@ export class Shader extends Visual {
1694
1694
  * `videoHeight` instead and `ArrayBufferView`, which is one dimensional (so
1695
1695
  * don't worry about mipmaps)
1696
1696
  */
1697
- const w = target instanceof HTMLVideoElement ? <span class="branch-0 cbranch-no" title="branch not covered" >target.videoWidth </span>: target.width
1698
- const h = target instanceof HTMLVideoElement ? <span class="branch-0 cbranch-no" title="branch not covered" >target.videoHeight </span>: target.height
1699
- gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, minFilter)
1700
- gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, magFilter)
1701
- <span class="missing-if-branch" title="if path not taken" >I</span>if ((w &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >isPowerOf2(w))</span> &amp;&amp; (<span class="branch-2 cbranch-no" title="branch not covered" >h </span>&amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >isPowerOf2(h))</span>) {
1697
+ const w = <span class="cstat-no" title="statement not covered" >target instanceof HTMLVideoElement ? target.videoWidth : target.width</span>
1698
+ const h = <span class="cstat-no" title="statement not covered" >target instanceof HTMLVideoElement ? target.videoHeight : target.height</span>
1699
+ <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, minFilter)</span>
1700
+ <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, magFilter)</span>
1701
+ <span class="cstat-no" title="statement not covered" > if ((w &amp;&amp; isPowerOf2(w)) &amp;&amp; (h &amp;&amp; isPowerOf2(h))) {</span>
1702
1702
  // Yes, it's a power of 2. All wrap modes are valid. Generate mips.
1703
1703
  <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_WRAP_S, wrapS)</span>
1704
1704
  <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_WRAP_T, wrapT)</span>
@@ -1706,48 +1706,48 @@ export class Shader extends Visual {
1706
1706
  } else {
1707
1707
  // No, it's not a power of 2. Turn off mips and set
1708
1708
  // wrapping to clamp to edge
1709
- <span class="missing-if-branch" title="if path not taken" >I</span>if (wrapS !== gl.CLAMP_TO_EDGE || wrapT !== gl.CLAMP_TO_EDGE) {
1709
+ <span class="cstat-no" title="statement not covered" > if (wrapS !== gl.CLAMP_TO_EDGE || wrapT !== gl.CLAMP_TO_EDGE) {</span>
1710
1710
  <span class="cstat-no" title="statement not covered" > console.warn('Wrap mode is not CLAMP_TO_EDGE for a non-power-of-two texture. Defaulting to CLAMP_TO_EDGE')</span>
1711
1711
  }
1712
1712
  &nbsp;
1713
- gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
1714
- gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
1713
+ <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)</span>
1714
+ <span class="cstat-no" title="statement not covered" > gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)</span>
1715
1715
  }
1716
1716
  &nbsp;
1717
- return tex
1717
+ <span class="cstat-no" title="statement not covered" > return tex</span>
1718
1718
  }
1719
1719
  &nbsp;
1720
- private static _initShaderProgram (gl, vertexSrc, fragmentSrc) {
1721
- const vertexShader = Shader._loadShader(gl, gl.VERTEX_SHADER, vertexSrc)
1722
- const fragmentShader = Shader._loadShader(gl, gl.FRAGMENT_SHADER, fragmentSrc)
1720
+ <span class="fstat-no" title="function not covered" > private static _</span>initShaderProgram (gl, vertexSrc, fragmentSrc) {
1721
+ const vertexShader = <span class="cstat-no" title="statement not covered" >Shader._loadShader(gl, gl.VERTEX_SHADER, vertexSrc)</span>
1722
+ const fragmentShader = <span class="cstat-no" title="statement not covered" >Shader._loadShader(gl, gl.FRAGMENT_SHADER, fragmentSrc)</span>
1723
1723
  &nbsp;
1724
- const shaderProgram = gl.createProgram()
1725
- gl.attachShader(shaderProgram, vertexShader)
1726
- gl.attachShader(shaderProgram, fragmentShader)
1727
- gl.linkProgram(shaderProgram)
1724
+ const shaderProgram = <span class="cstat-no" title="statement not covered" >gl.createProgram()</span>
1725
+ <span class="cstat-no" title="statement not covered" > gl.attachShader(shaderProgram, vertexShader)</span>
1726
+ <span class="cstat-no" title="statement not covered" > gl.attachShader(shaderProgram, fragmentShader)</span>
1727
+ <span class="cstat-no" title="statement not covered" > gl.linkProgram(shaderProgram)</span>
1728
1728
  &nbsp;
1729
1729
  // Check program creation status
1730
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
1730
+ <span class="cstat-no" title="statement not covered" > if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {</span>
1731
1731
  <span class="cstat-no" title="statement not covered" > console.warn('Unable to link shader program: ' + gl.getProgramInfoLog(shaderProgram))</span>
1732
1732
  <span class="cstat-no" title="statement not covered" > return null</span>
1733
1733
  }
1734
1734
  &nbsp;
1735
- return shaderProgram
1735
+ <span class="cstat-no" title="statement not covered" > return shaderProgram</span>
1736
1736
  }
1737
1737
  &nbsp;
1738
- private static _loadShader (gl, type, source) {
1739
- const shader = gl.createShader(type)
1740
- gl.shaderSource(shader, source)
1741
- gl.compileShader(shader)
1738
+ <span class="fstat-no" title="function not covered" > private static _</span>loadShader (gl, type, source) {
1739
+ const shader = <span class="cstat-no" title="statement not covered" >gl.createShader(type)</span>
1740
+ <span class="cstat-no" title="statement not covered" > gl.shaderSource(shader, source)</span>
1741
+ <span class="cstat-no" title="statement not covered" > gl.compileShader(shader)</span>
1742
1742
  &nbsp;
1743
1743
  // Check compile status
1744
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
1744
+ <span class="cstat-no" title="statement not covered" > if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {</span>
1745
1745
  <span class="cstat-no" title="statement not covered" > console.warn('An error occured compiling shader: ' + gl.getShaderInfoLog(shader))</span>
1746
1746
  <span class="cstat-no" title="statement not covered" > gl.deleteShader(shader)</span>
1747
1747
  <span class="cstat-no" title="statement not covered" > return null</span>
1748
1748
  }
1749
1749
  &nbsp;
1750
- return shader
1750
+ <span class="cstat-no" title="statement not covered" > return shader</span>
1751
1751
  }
1752
1752
  }
1753
1753
  &nbsp;
@@ -1759,7 +1759,7 @@ const isPowerOf2 = <span class="fstat-no" title="function not covered" >value </
1759
1759
  <div class='footer quiet pad2 space-top1 center small'>
1760
1760
  Code coverage generated by
1761
1761
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1762
- at 2026-03-18T01:44:31.770Z
1762
+ at 2026-06-06T05:34:26.449Z
1763
1763
  </div>
1764
1764
  <script src="../../prettify.js"></script>
1765
1765
  <script>