@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.8

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/GROUNDING.md +1109 -13
  2. package/dist/{DebuggerUI-BjOMr8q_.js → DebuggerUI-C-ldiozL.js} +1 -1
  3. package/dist/{DebuggerUI-B6bP6P9r.cjs → DebuggerUI-CWX5EtQv.cjs} +1 -1
  4. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +158 -0
  5. package/dist/FaceMeshRenderer-UuH5sTXG.js +1322 -0
  6. package/dist/FaceRetouch-C7h7x9kd.js +683 -0
  7. package/dist/FaceRetouch-DqftT26Y.cjs +134 -0
  8. package/dist/GLTFLoader-C5q63sKO.js +1633 -0
  9. package/dist/GLTFLoader-Cb_CRwmG.cjs +1 -0
  10. package/dist/SegmentationOverlay-DQuW3dsc.js +133 -0
  11. package/dist/SegmentationOverlay-aWVod8Kl.cjs +1 -0
  12. package/dist/assets/cache.d.ts +99 -0
  13. package/dist/assets/estimate.d.ts +11 -0
  14. package/dist/assets/index.d.ts +7 -0
  15. package/dist/assets/loaders.d.ts +28 -0
  16. package/dist/assets/react.d.ts +33 -0
  17. package/dist/calibration/calibration.d.ts +70 -0
  18. package/dist/calibration/index.d.ts +6 -0
  19. package/dist/calibration/storage.d.ts +13 -0
  20. package/dist/calibration/types.d.ts +53 -0
  21. package/dist/calibration/useXRCalibration.d.ts +46 -0
  22. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  23. package/dist/camera/devices.d.ts +26 -0
  24. package/dist/camera/index.d.ts +8 -0
  25. package/dist/camera/permission.d.ts +86 -0
  26. package/dist/camera/useCameraPermission.d.ts +35 -0
  27. package/dist/capabilities/detect.d.ts +45 -0
  28. package/dist/capabilities/index.d.ts +5 -0
  29. package/dist/capabilities/types.d.ts +120 -0
  30. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  31. package/dist/compat/environment.d.ts +5 -0
  32. package/dist/compat/index.d.ts +4 -0
  33. package/dist/compat/run.d.ts +18 -0
  34. package/dist/compat/scenarios.d.ts +10 -0
  35. package/dist/compat/types.d.ts +101 -0
  36. package/dist/components/BodyTracker/index.d.ts +9 -0
  37. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +33 -3
  38. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +12 -0
  39. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  40. package/dist/components/FaceMesh/index.d.ts +1 -1
  41. package/dist/components/GestureListener/index.d.ts +11 -0
  42. package/dist/components/HandTracker/index.d.ts +10 -0
  43. package/dist/components/HolisticTracker/index.d.ts +69 -0
  44. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  45. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  46. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  47. package/dist/components/IrisEffect/index.d.ts +51 -0
  48. package/dist/components/IrisEffect/settings.d.ts +117 -0
  49. package/dist/components/LipEffect/LipEffect.d.ts +7 -1
  50. package/dist/components/LipEffect/LipEffectMaterial.d.ts +43 -7
  51. package/dist/components/LipEffect/LipEffects.d.ts +9 -0
  52. package/dist/components/LipEffect/defaults.d.ts +27 -4
  53. package/dist/components/LipEffect/index.d.ts +11 -3
  54. package/dist/components/LipEffect/settings.d.ts +271 -0
  55. package/dist/components/LipEffect/types.d.ts +56 -9
  56. package/dist/components/LipEffect/useLipDesignTextures.d.ts +11 -0
  57. package/dist/components/LipEffect/uvGuide.d.ts +59 -0
  58. package/dist/components/PersonCutout/index.d.ts +50 -0
  59. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  60. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  61. package/dist/components/ScreenImage/index.d.ts +3 -1
  62. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  63. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  64. package/dist/components/ScreenImage/source.d.ts +6 -0
  65. package/dist/components/ScreenImage/types.d.ts +18 -0
  66. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  67. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  68. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  69. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  70. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  71. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  72. package/dist/components/XRProvider/index.d.ts +16 -2
  73. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  74. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  75. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  76. package/dist/components/index.d.ts +3 -0
  77. package/dist/constants/index.d.ts +4 -1
  78. package/dist/contexts-CO0sd4JQ.cjs +1 -0
  79. package/dist/{contexts-ByhzppYl.js → contexts-FzlnnMYD.js} +252 -246
  80. package/dist/coordinates/feed.d.ts +52 -0
  81. package/dist/coordinates/index.d.ts +5 -0
  82. package/dist/coordinates/spaces.d.ts +49 -0
  83. package/dist/coordinates/viewport.d.ts +22 -0
  84. package/dist/coordinates/world.d.ts +15 -0
  85. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  86. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  87. package/dist/debug-ui/index.d.ts +14 -0
  88. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  89. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  90. package/dist/debug-ui/media-source.cjs +1 -1
  91. package/dist/debug-ui/media-source.js +1 -1
  92. package/dist/debug-ui/product-hotspots/index.d.ts +24 -0
  93. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  94. package/dist/debug-ui/xr-diagnostics/index.d.ts +25 -0
  95. package/dist/debug-ui.cjs +3 -3
  96. package/dist/debug-ui.js +2057 -1687
  97. package/dist/detector-K8aej4MB.js +59 -0
  98. package/dist/detector-ijypGtse.cjs +1 -0
  99. package/dist/entries/core.d.ts +18 -1
  100. package/dist/entries/face-effects.d.ts +11 -3
  101. package/dist/entries/low-level.d.ts +22 -3
  102. package/dist/entries/product.d.ts +11 -0
  103. package/dist/entries/tracking.d.ts +24 -1
  104. package/dist/face-effects.cjs +155 -1
  105. package/dist/face-effects.js +1134 -2197
  106. package/dist/gestures/definitions.d.ts +85 -0
  107. package/dist/gestures/detector.d.ts +87 -0
  108. package/dist/gestures/index.d.ts +8 -0
  109. package/dist/gestures/measures.d.ts +101 -0
  110. package/dist/gestures/settings.d.ts +49 -0
  111. package/dist/{getFaceInfo-C4QpCQIY.js → getFaceInfo-BkZfaQs-.js} +5 -5
  112. package/dist/{getFaceInfo-fA1bFBub.cjs → getFaceInfo-ahPxQFGu.cjs} +1 -1
  113. package/dist/hooks/selectors.d.ts +68 -1
  114. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  115. package/dist/hooks/useFaceInfo.d.ts +13 -1
  116. package/dist/hooks/useFaceInfos.d.ts +1 -1
  117. package/dist/hooks/useGesture.d.ts +32 -0
  118. package/dist/hooks/useIrisTracking.d.ts +45 -0
  119. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  120. package/dist/hooks/useXRModel.d.ts +7 -0
  121. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  122. package/dist/hooks/useXRSession/index.d.ts +2 -2
  123. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  124. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  125. package/dist/hooks/useXRSession/store.d.ts +52 -3
  126. package/dist/index--RgGzZ6X.cjs +47 -0
  127. package/dist/{index-VJ0SJwmG.js → index-CHVbH0hz.js} +4 -4
  128. package/dist/index-CeVkgsag.cjs +1 -0
  129. package/dist/index-CnGox6Xr.js +3054 -0
  130. package/dist/{index-ByoNj0QP.js → index-CsUdQ-pn.js} +113 -111
  131. package/dist/{index-BjmTe9eM.cjs → index-DKBAh6hV.cjs} +1 -1
  132. package/dist/index-DsZwTfG0.cjs +1 -0
  133. package/dist/index-Dw6tj2Mi.js +144 -0
  134. package/dist/index-OCPjOaeP.cjs +1 -0
  135. package/dist/{index-DXT3WccE.js → index-s9pF4zkG.js} +1065 -1101
  136. package/dist/internal-BYza1h8_.cjs +1 -0
  137. package/dist/{internal-Dmk1cTXq.js → internal-vsfNQycj.js} +15 -16
  138. package/dist/internal.cjs +1 -1
  139. package/dist/internal.js +2 -2
  140. package/dist/iris/compute.d.ts +25 -0
  141. package/dist/iris/index.d.ts +4 -0
  142. package/dist/iris/lead.d.ts +19 -0
  143. package/dist/iris/types.d.ts +87 -0
  144. package/dist/landmarkMask-CbTFzBYG.js +224 -0
  145. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  146. package/dist/low-level.cjs +1 -1
  147. package/dist/low-level.js +1085 -634
  148. package/dist/main.cjs +1 -1
  149. package/dist/main.js +1519 -465
  150. package/dist/measures-9dQPdw96.js +154 -0
  151. package/dist/measures-KfJzpvod.cjs +1 -0
  152. package/dist/models/Base/index.d.ts +49 -0
  153. package/dist/models/Body/index.d.ts +1 -1
  154. package/dist/models/Face/index.d.ts +1 -1
  155. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  156. package/dist/models/Hand/HandTracking.d.ts +1 -1
  157. package/dist/models/Holistic/index.d.ts +49 -0
  158. package/dist/models/Holistic/result.d.ts +68 -0
  159. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  160. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  161. package/dist/models/index.d.ts +2 -0
  162. package/dist/product/ProductDimensions.d.ts +16 -0
  163. package/dist/product/ProductHotspot.d.ts +16 -0
  164. package/dist/product/ProductViewer.d.ts +9 -0
  165. package/dist/product/details.d.ts +53 -0
  166. package/dist/product/index.d.ts +14 -0
  167. package/dist/product/loadModelViewer.d.ts +4 -0
  168. package/dist/product/types.d.ts +71 -0
  169. package/dist/product/useProductAr.d.ts +37 -0
  170. package/dist/product/useProductDetails.d.ts +60 -0
  171. package/dist/product.cjs +1 -0
  172. package/dist/product.js +414 -0
  173. package/dist/providers-C0Dlhh9Z.js +365 -0
  174. package/dist/providers-YNwkmNeK.cjs +62 -0
  175. package/dist/quality/XRQualityController.d.ts +25 -0
  176. package/dist/quality/controller.d.ts +33 -0
  177. package/dist/quality/index.d.ts +6 -0
  178. package/dist/quality/types.d.ts +100 -0
  179. package/dist/quality/useXRQuality.d.ts +28 -0
  180. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-CN1cGFUo.js} +1 -1
  181. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-O4KmaMl9.cjs} +1 -1
  182. package/dist/renderPasses-Cg-zqmEz.cjs +21 -0
  183. package/dist/renderPasses-NnKZVfBy.js +1460 -0
  184. package/dist/scene-object.cjs +1 -1
  185. package/dist/scene-object.js +2 -2
  186. package/dist/screenTransform-BenfCtZt.js +44 -0
  187. package/dist/screenTransform-BiXdpVf0.cjs +1 -0
  188. package/dist/segmentation-9PhSvc-R.cjs +1 -0
  189. package/dist/segmentation-CeOTKemr.js +5 -0
  190. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  191. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  192. package/dist/segmentation2d/index.d.ts +9 -0
  193. package/dist/segmentation2d/maskUv.d.ts +23 -0
  194. package/dist/segmentation2d/rasterize.d.ts +14 -0
  195. package/dist/segmentation2d/types.d.ts +46 -0
  196. package/dist/selectors-C5G1PMYL.js +195 -0
  197. package/dist/selectors-Du_PsVnW.cjs +1 -0
  198. package/dist/{session-CpkiK5YA.cjs → session-BBr0yN8h.cjs} +7 -7
  199. package/dist/{session-DLFN_VII.js → session-Cy0m7l7-.js} +76 -76
  200. package/dist/settings-DRR7-snV.cjs +1 -0
  201. package/dist/settings-aQk845NJ.js +73 -0
  202. package/dist/subjects/index.d.ts +2 -0
  203. package/dist/subjects/select.d.ts +62 -0
  204. package/dist/subjects/types.d.ts +55 -0
  205. package/dist/tracking-config/apply.d.ts +57 -0
  206. package/dist/tracking-config/index.d.ts +7 -0
  207. package/dist/tracking-config/resolve.d.ts +25 -0
  208. package/dist/tracking-config/storage.d.ts +8 -0
  209. package/dist/tracking-config/types.d.ts +106 -0
  210. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  211. package/dist/tracking.cjs +1 -1
  212. package/dist/tracking.js +1056 -383
  213. package/dist/types/compositor.d.ts +21 -0
  214. package/dist/types/holistic.d.ts +121 -0
  215. package/dist/types/index.d.ts +1 -0
  216. package/dist/types/model.d.ts +22 -2
  217. package/dist/types/nodes.d.ts +27 -2
  218. package/dist/types/segmentation.d.ts +19 -0
  219. package/dist/types/session.d.ts +41 -3
  220. package/dist/useFaceInfo-Blf7FCu3.js +303 -0
  221. package/dist/useFaceInfo-C5mO8NQY.cjs +1 -0
  222. package/dist/useXRCapabilities-B1R2ghy-.cjs +1 -0
  223. package/dist/useXRCapabilities-C68v__wB.js +30 -0
  224. package/dist/utils/fns.d.ts +6 -3
  225. package/dist/utils/integrity.d.ts +4 -1
  226. package/dist/utils/updateThrottle.d.ts +2 -0
  227. package/dist/utils/useStableUniforms.d.ts +18 -0
  228. package/docs/api/adaptive-quality.mdx +104 -0
  229. package/docs/api/asset-lifecycle.mdx +78 -0
  230. package/docs/api/camera-permission.mdx +142 -0
  231. package/docs/api/coordinate-spaces.mdx +165 -0
  232. package/docs/api/cross-camera.mdx +88 -0
  233. package/docs/api/diagnostics-calibration.mdx +97 -0
  234. package/docs/api/face-effects.mdx +6 -0
  235. package/docs/api/face-mesh.mdx +4 -2
  236. package/docs/api/gestures.mdx +173 -0
  237. package/docs/api/holistic-tracker.mdx +159 -0
  238. package/docs/api/iris-tracking.mdx +242 -0
  239. package/docs/api/multi-subject.mdx +95 -0
  240. package/docs/api/person-cutout.mdx +136 -0
  241. package/docs/api/product-ar.mdx +111 -0
  242. package/docs/api/product-details.mdx +78 -0
  243. package/docs/api/screen-space-coordinates.mdx +4 -1
  244. package/docs/api/segmentation-overlay.mdx +301 -0
  245. package/docs/api/session-lifecycle.mdx +136 -0
  246. package/docs/api/trackers.mdx +5 -0
  247. package/docs/api/tracking-config.mdx +108 -0
  248. package/docs/docs.json +23 -1
  249. package/docs/examples/lip-shaders.mdx +224 -0
  250. package/docs/guides/lip-effect-textures.mdx +292 -0
  251. package/docs/guides/lip-uv-template.png +0 -0
  252. package/docs/guides/lip-uv-template.svg +1 -0
  253. package/package.json +13 -1
  254. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  255. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  256. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  257. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  258. package/dist/contexts-Dr62It_K.cjs +0 -1
  259. package/dist/index-9dlAQAhy.js +0 -1462
  260. package/dist/index-BpEf2BBb.cjs +0 -1
  261. package/dist/index-CyUUurQT.cjs +0 -1
  262. package/dist/index-DCiMbxC3.cjs +0 -1
  263. package/dist/index-DpI-qo5X.cjs +0 -17
  264. package/dist/index-DyVF4vEW.js +0 -111
  265. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  266. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  267. package/dist/renderLayers-zrK2pv5O.js +0 -13
  268. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  269. package/dist/renderPasses-BcquyVtu.js +0 -1500
  270. package/dist/selectors-B8H97CKA.js +0 -59
  271. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  272. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  273. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  274. package/dist/useFaceResults-CtetsO9M.js +0 -19
  275. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -1,61 +1,62 @@
1
- import { jsx as _, jsxs as w } from "react/jsx-runtime";
2
- import { useThree as k, useFrame as U } from "@react-three/fiber";
3
- import z, { useId as B, useState as W, useRef as A, useEffect as F, useSyncExternalStore as q, useMemo as v, useContext as G, createContext as J, useCallback as Q } from "react";
4
- import { u as $, a as e0, X as P, b as t0 } from "./index-9dlAQAhy.js";
5
- import { R as n0 } from "./renderLayers-zrK2pv5O.js";
1
+ import { jsx as _, jsxs as D } from "react/jsx-runtime";
2
+ import { useThree as w, useFrame as U } from "@react-three/fiber";
3
+ import z, { useId as W, useState as Z, useRef as E, useEffect as F, useSyncExternalStore as q, useMemo as S, useContext as G, createContext as J, useCallback as Q } from "react";
4
+ import { u as $, m as e0, k as t0, X as P, o as n0 } from "./index-CnGox6Xr.js";
5
+ import { R as r0 } from "./selectors-C5G1PMYL.js";
6
6
  import * as T from "three";
7
- function r0(e) {
7
+ function s0(e) {
8
8
  return JSON.stringify(e ?? {});
9
9
  }
10
- function j(e, t, r = !0) {
11
- const { session: n } = $(), s = B(), [i, f] = W(null), u = r0(t), o = A(t);
10
+ function H(e, t, r = !0) {
11
+ const { session: n } = $(), s = W(), [c, f] = Z(null), u = s0(t), o = E(t);
12
12
  o.current = t, F(() => {
13
- let c = !1;
14
- return f(null), n.registry.acquire(e, s, o.current).catch((l) => {
15
- c || f(l instanceof Error ? l : new Error(String(l)));
13
+ let l = !1;
14
+ return f(null), n.registry.acquire(e, s, o.current).catch((d) => {
15
+ l || f(d instanceof Error ? d : new Error(String(d)));
16
16
  }), () => {
17
- c = !0, n.registry.release(e, s);
17
+ l = !0, n.registry.release(e, s);
18
18
  };
19
19
  }, [n, e, s, u]), F(() => {
20
20
  n.registry.setActive(e, s, r);
21
21
  }, [n, e, s, r]);
22
- const d = n.store, h = q(
23
- (c) => d.subscribe(c),
24
- () => d.getSnapshot().pipeline.get(e) ?? null,
22
+ const h = n.store, p = q(
23
+ (l) => h.subscribe(l),
24
+ () => h.getSnapshot().pipeline.get(e) ?? null,
25
25
  () => null
26
- ), p = v(() => h ? h.getModelNode() : null, [h]);
26
+ ), A = S(() => p ? p.getModelNode() : null, [p]), i = S(() => c ? e0(c) : null, [c]);
27
27
  return {
28
- ready: h !== null && i === null,
29
- node: p,
30
- error: i
28
+ ready: p !== null && c === null,
29
+ node: A,
30
+ error: c,
31
+ fallback: i
31
32
  };
32
33
  }
33
- const s0 = ({ materialProps: e, settings: t }) => t.type === "basic" ? /* @__PURE__ */ _("meshBasicMaterial", { ...e }) : /* @__PURE__ */ _(
34
+ const o0 = ({ materialProps: e, settings: t }) => t.type === "basic" ? /* @__PURE__ */ _("meshBasicMaterial", { ...e }) : /* @__PURE__ */ _(
34
35
  "meshStandardMaterial",
35
36
  {
36
37
  ...e,
37
38
  roughness: t.roughness,
38
39
  metalness: t.metalness
39
40
  }
40
- ), g = 1e-6, o0 = (e) => {
41
+ ), g = 1e-6, c0 = (e) => {
41
42
  const { x: t, y: r, z: n } = e.scale;
42
43
  return Math.abs(t - r) <= g && Math.abs(t - n) <= g ? t : 1;
43
- }, R0 = (e, t, r, n) => {
44
+ }, b0 = (e, t, r, n) => {
44
45
  if (!r.enabled) return e;
45
- const s = o0(r);
46
+ const s = c0(r);
46
47
  return n.x = t.x + (e.x - t.x) * s + r.position.x, n.y = t.y + (e.y - t.y) * s - r.position.y, n.z = t.z + (e.z - t.z) * s + r.position.z, n;
47
- }, c0 = (e, t, r) => e0(e, t, r), b0 = (e, t, r) => {
48
- const n = (e.x - 0.5) * 2, s = (0.5 - e.y) * 2, i = T.MathUtils.clamp(e.z * 2, -1, 1);
49
- return r.set(n, s, i).unproject(t);
50
- }, i0 = (e, t, r, n, s, i) => {
48
+ }, i0 = (e, t, r) => t0(e, t, r), T0 = (e, t, r) => {
49
+ const n = (e.x - 0.5) * 2, s = (0.5 - e.y) * 2, c = T.MathUtils.clamp(e.z * 2, -1, 1);
50
+ return r.set(n, s, c).unproject(t);
51
+ }, a0 = (e, t, r, n, s, c) => {
51
52
  const f = Math.min(t, e.length);
52
53
  for (let u = 0; u < f; u++) {
53
- s(e[u], n, i);
54
+ s(e[u], n, c);
54
55
  const o = u * 3;
55
- r[o] = i.x, r[o + 1] = i.y, r[o + 2] = i.z;
56
+ r[o] = c.x, r[o + 1] = c.y, r[o + 2] = c.z;
56
57
  }
57
58
  return f;
58
- }, a0 = [
59
+ }, u0 = [
59
60
  [127, 34, 139],
60
61
  [11, 0, 37],
61
62
  [232, 231, 120],
@@ -909,7 +910,7 @@ const s0 = ({ materialProps: e, settings: t }) => t.type === "basic" ? /* @__PUR
909
910
  [390, 339, 249],
910
911
  [339, 448, 255],
911
912
  [255, 339, 448]
912
- ].flat(), u0 = [
913
+ ].flat(), l0 = [
913
914
  0.5104879319667817,
914
915
  0.33515610277652746,
915
916
  0.5174233198165894,
@@ -1866,61 +1867,61 @@ const s0 = ({ materialProps: e, settings: t }) => t.type === "basic" ? /* @__PUR
1866
1867
  0.618020570576191,
1867
1868
  0.33353258967399596,
1868
1869
  0.5936576622724534
1869
- ], H = 468, l0 = H * 3, f0 = {
1870
+ ], K = 468, f0 = K * 3, d0 = {
1870
1871
  type: "standard",
1871
1872
  color: "#ffffff",
1872
1873
  opacity: 1,
1873
1874
  wireframe: !1,
1874
1875
  roughness: 1,
1875
1876
  metalness: 0
1876
- }, K = ({
1877
+ }, j = ({
1877
1878
  material: e,
1878
1879
  faceIndex: t = 0,
1879
1880
  numFaces: r,
1880
1881
  visible: n = !0,
1881
1882
  children: s
1882
1883
  }) => {
1883
- const { ready: i, node: f } = j(
1884
+ const { ready: c, node: f } = H(
1884
1885
  P.FACE_TRACKER,
1885
1886
  r === void 0 ? void 0 : { numFaces: r }
1886
- ), { camera: u } = k(), o = A(null), d = A(null), h = A(null), p = A(null), c = A(null), l = A(new T.Vector3()), E = v(() => {
1887
- const m = new Uint16Array(a0), x = new T.BufferAttribute(m, 1), y = new T.Float32BufferAttribute(u0, 2), R = new Float32Array(l0), a = new T.Float32BufferAttribute(R, 3);
1888
- return a.setUsage(T.DynamicDrawUsage), { indexAttr: x, uvAttr: y, positionAttr: a, positions: R };
1887
+ ), { camera: u } = w(), o = E(null), h = E(null), p = E(null), A = E(null), i = E(null), l = E(new T.Vector3()), d = S(() => {
1888
+ const m = new Uint16Array(u0), M = new T.BufferAttribute(m, 1), y = new T.Float32BufferAttribute(l0, 2), R = new Float32Array(f0), a = new T.Float32BufferAttribute(R, 3);
1889
+ return a.setUsage(T.DynamicDrawUsage), { indexAttr: M, uvAttr: y, positionAttr: a, positions: R };
1889
1890
  }, []);
1890
1891
  F(() => {
1891
- p.current = E.indexAttr, c.current = E.uvAttr, h.current = E.positionAttr, d.current = E.positions;
1892
+ A.current = d.indexAttr, i.current = d.uvAttr, p.current = d.positionAttr, h.current = d.positions;
1892
1893
  const m = o.current;
1893
1894
  if (m) {
1894
- const x = m.geometry;
1895
- x.setAttribute("position", E.positionAttr), x.setAttribute("uv", E.uvAttr), x.setIndex(E.indexAttr);
1895
+ const M = m.geometry;
1896
+ M.setAttribute("position", d.positionAttr), M.setAttribute("uv", d.uvAttr), M.setIndex(d.indexAttr);
1896
1897
  }
1897
1898
  return () => {
1898
- p.current = null, c.current = null, h.current = null, d.current = null;
1899
+ A.current = null, i.current = null, p.current = null, h.current = null;
1899
1900
  };
1900
- }, [E]), U(() => {
1901
- var M;
1902
- if (!i || !f || !o.current) return;
1903
- const { detectionResults: m } = f, x = (M = m == null ? void 0 : m.faceLandmarks) == null ? void 0 : M[t], y = o.current.geometry, R = d.current, a = h.current;
1904
- if (!x || x.length === 0 || !R || !a) {
1901
+ }, [d]), U(() => {
1902
+ var x;
1903
+ if (!c || !f || !o.current) return;
1904
+ const { detectionResults: m } = f, M = (x = m == null ? void 0 : m.faceLandmarks) == null ? void 0 : x[t], y = o.current.geometry, R = h.current, a = p.current;
1905
+ if (!M || M.length === 0 || !R || !a) {
1905
1906
  y.drawRange.count !== 0 && y.setDrawRange(0, 0);
1906
1907
  return;
1907
1908
  }
1908
- y.getAttribute("position") !== a && (y.setAttribute("position", a), y.setAttribute("uv", c.current), y.setIndex(p.current)), y.drawRange.count === 0 && y.setDrawRange(0, 1 / 0), i0(
1909
- x,
1910
- H,
1909
+ y.getAttribute("position") !== a && (y.setAttribute("position", a), y.setAttribute("uv", i.current), y.setIndex(A.current)), y.drawRange.count === 0 && y.setDrawRange(0, 1 / 0), a0(
1910
+ M,
1911
+ K,
1911
1912
  R,
1912
1913
  u,
1913
- c0,
1914
+ i0,
1914
1915
  l.current
1915
1916
  ), a.needsUpdate = !0, y.computeVertexNormals();
1916
1917
  });
1917
- const S = s != null && s !== !1;
1918
- return /* @__PURE__ */ w("mesh", { material: e, ref: o, visible: n, children: [
1918
+ const v = s != null && s !== !1;
1919
+ return /* @__PURE__ */ D("mesh", { material: e, ref: o, visible: n, children: [
1919
1920
  /* @__PURE__ */ _("bufferGeometry", {}),
1920
- !e && !S && /* @__PURE__ */ _(
1921
- s0,
1921
+ !e && !v && /* @__PURE__ */ _(
1922
+ o0,
1922
1923
  {
1923
- settings: f0,
1924
+ settings: d0,
1924
1925
  materialProps: {
1925
1926
  attach: "material",
1926
1927
  transparent: !0,
@@ -1930,11 +1931,11 @@ const s0 = ({ materialProps: e, settings: t }) => t.type === "basic" ? /* @__PUR
1930
1931
  }
1931
1932
  }
1932
1933
  ),
1933
- !e && S ? s : null
1934
+ !e && v ? s : null
1934
1935
  ] });
1935
1936
  };
1936
- K.displayName = "FaceMesh";
1937
- const L = {
1937
+ j.displayName = "FaceMesh";
1938
+ const _0 = (e, t, r) => !!(r && r > 0 && e - t < 1 / r), L = {
1938
1939
  "face.forehead": 10,
1939
1940
  "face.noseTip": 1,
1940
1941
  "face.chin": 152,
@@ -1949,110 +1950,111 @@ const L = {
1949
1950
  "face.center": [10, 152, 234, 454],
1950
1951
  "face.leftEye": [263, 362, 387, 373],
1951
1952
  "face.rightEye": [33, 133, 158, 145]
1952
- }, V = (e, t = 0) => Number.isFinite(e) ? e : t, D = (e) => Math.max(-1, Math.min(1, V(e))), d0 = { x: 0, y: 0, z: 0 }, h0 = (e, t, r = d0, n = { x: 0, y: 0, z: 0, visibility: 0 }) => {
1953
+ }, V = (e, t = 0) => Number.isFinite(e) ? e : t, k = (e) => Math.max(-1, Math.min(1, V(e))), h0 = { x: 0, y: 0, z: 0 }, p0 = (e, t, r = h0, n = { x: 0, y: 0, z: 0, visibility: 0 }) => {
1953
1954
  const s = L[e];
1954
1955
  if (s !== void 0) {
1955
- const c = t[s];
1956
- return c ? Object.assign(n, c) : null;
1956
+ const i = t[s];
1957
+ return i ? Object.assign(n, i) : null;
1957
1958
  }
1958
- const i = y0[e];
1959
- if (i) {
1959
+ const c = y0[e];
1960
+ if (c) {
1960
1961
  n.x = 0, n.y = 0, n.z = 0;
1961
- for (const c of i) {
1962
- const l = t[c];
1962
+ for (const i of c) {
1963
+ const l = t[i];
1963
1964
  if (!l) return null;
1964
1965
  n.x += l.x, n.y += l.y, n.z += l.z;
1965
1966
  }
1966
- return n.x /= i.length, n.y /= i.length, n.z /= i.length, n.visibility = 1, n;
1967
+ return n.x /= c.length, n.y /= c.length, n.z /= c.length, n.visibility = 1, n;
1967
1968
  }
1968
1969
  if (e !== "face.custom" || t.length === 0) return null;
1969
- let f = 1 / 0, u = 1 / 0, o = -1 / 0, d = -1 / 0, h = 0;
1970
- for (const c of t)
1971
- f = Math.min(f, c.x), u = Math.min(u, c.y), o = Math.max(o, c.x), d = Math.max(d, c.y), h += c.z;
1972
- const p = o - f;
1973
- return n.x = (f + o) * 0.5 - D(r.x) * p * 0.5, n.y = (u + d) * 0.5 - D(r.y) * (d - u) * 0.5, n.z = h / t.length - V(r.z) * p, n.visibility = 1, n;
1974
- }, T0 = {
1970
+ let f = 1 / 0, u = 1 / 0, o = -1 / 0, h = -1 / 0, p = 0;
1971
+ for (const i of t)
1972
+ f = Math.min(f, i.x), u = Math.min(u, i.y), o = Math.max(o, i.x), h = Math.max(h, i.y), p += i.z;
1973
+ const A = o - f;
1974
+ return n.x = (f + o) * 0.5 - k(r.x) * A * 0.5, n.y = (u + h) * 0.5 - k(r.y) * (h - u) * 0.5, n.z = p / t.length - V(r.z) * A, n.visibility = 1, n;
1975
+ }, S0 = {
1975
1976
  left: L["face.leftEyeOuter"],
1976
1977
  right: L["face.rightEyeOuter"]
1977
- }, X = J(null), _0 = () => G(X), p0 = ({
1978
+ }, X = J(null), v0 = () => G(X), A0 = ({
1978
1979
  faceIndex: e = 0,
1979
1980
  numFaces: t,
1980
1981
  scaleWithFace: r = !1,
1981
1982
  followFaceRoll: n = !0,
1982
1983
  targetFps: s,
1983
- active: i = !0,
1984
+ active: c = !0,
1984
1985
  children: f
1985
1986
  }) => {
1986
- const u = A(!1), o = A(null), d = v(() => {
1987
+ const u = E(!1), o = E(null), h = S(() => {
1987
1988
  if (!(t === void 0 && s === void 0))
1988
1989
  return {
1989
1990
  ...t === void 0 ? {} : { numFaces: t },
1990
1991
  ...s === void 0 ? {} : { targetFps: s }
1991
1992
  };
1992
- }, [t, s]), { ready: h, node: p } = j(
1993
+ }, [t, s]), { ready: p, node: A } = H(
1993
1994
  P.FACE_TRACKER,
1994
- d,
1995
- i
1996
- ), { camera: c } = k(), l = A(c);
1997
- l.current !== c && (l.current = c, u.current = !1);
1998
- const E = A(null), S = A({ x: 0, y: 0, z: 0, visibility: 0 });
1995
+ h,
1996
+ c
1997
+ ), { camera: i } = w(), l = E(i);
1998
+ l.current !== i && (l.current = i, u.current = !1);
1999
+ const d = E(null), v = E({ x: 0, y: 0, z: 0, visibility: 0 });
1999
2000
  U(() => {
2000
- if (!h || !p || !o.current) return;
2001
- E.current = p, !u.current && l.current && (p.setCamera(l.current, e), u.current = !0);
2002
- const a = p.getFace(e);
2001
+ if (!p || !A || !o.current) return;
2002
+ d.current = A, !u.current && l.current && (A.setCamera(l.current, e), u.current = !0);
2003
+ const a = A.getFace(e);
2003
2004
  if (!a) {
2004
2005
  o.current.visible = !1;
2005
2006
  return;
2006
2007
  }
2007
2008
  o.current.visible = !0;
2008
- const { position: M, rotation: C, scale: b } = a.transform;
2009
- o.current.position.set(M.x, M.y, M.z), o.current.rotation.set(C.x, C.y, n ? C.z : 0), r ? o.current.scale.set(b.x, b.y, b.z) : o.current.scale.set(1, 1, 1);
2009
+ const { position: x, rotation: C, scale: b } = a.transform;
2010
+ o.current.position.set(x.x, x.y, x.z), o.current.rotation.set(C.x, C.y, n ? C.z : 0), r ? o.current.scale.set(b.x, b.y, b.z) : o.current.scale.set(1, 1, 1);
2010
2011
  });
2011
2012
  const m = Q(
2012
- (a, M) => {
2013
+ (a, x) => {
2013
2014
  var O, I;
2014
- const C = E.current, b = (I = (O = C == null ? void 0 : C.detectionResults) == null ? void 0 : O.faceLandmarks) == null ? void 0 : I[e];
2015
+ const C = d.current, b = (I = (O = C == null ? void 0 : C.detectionResults) == null ? void 0 : O.faceLandmarks) == null ? void 0 : I[e];
2015
2016
  if (!b || b.length === 0) return null;
2016
- const N = h0(
2017
+ const N = p0(
2017
2018
  a,
2018
2019
  b,
2019
- M,
2020
- S.current
2020
+ x,
2021
+ v.current
2021
2022
  );
2022
- return N ? { position: t0(N, l.current) } : null;
2023
+ return N ? { position: n0(N, l.current) } : null;
2023
2024
  },
2024
2025
  [e]
2025
- ), x = v(
2026
+ ), M = S(
2026
2027
  () => ({ type: "face", resolveLandmark: m }),
2027
2028
  [m]
2028
2029
  );
2029
2030
  let y;
2030
2031
  const R = [];
2031
2032
  return z.Children.forEach(f, (a) => {
2032
- var M, C;
2033
+ var x, C;
2033
2034
  z.isValidElement(a) && // eslint-disable-next-line @typescript-eslint/no-explicit-any
2034
- (((M = a.type) == null ? void 0 : M.displayName) === "FaceTracker.Mesh" || // eslint-disable-next-line @typescript-eslint/no-explicit-any
2035
+ (((x = a.type) == null ? void 0 : x.displayName) === "FaceTracker.Mesh" || // eslint-disable-next-line @typescript-eslint/no-explicit-any
2035
2036
  ((C = a.type) == null ? void 0 : C.displayName) === "FaceMesh") ? y = z.cloneElement(a, { faceIndex: e, numFaces: t }) : R.push(a);
2036
- }), /* @__PURE__ */ w(X.Provider, { value: x, children: [
2037
- /* @__PURE__ */ _("group", { ref: o, renderOrder: n0.TRACKED, children: R }),
2037
+ }), /* @__PURE__ */ D(X.Provider, { value: M, children: [
2038
+ /* @__PURE__ */ _("group", { ref: o, renderOrder: r0.TRACKED, children: R }),
2038
2039
  y
2039
2040
  ] });
2040
- }, Z = (e) => /* @__PURE__ */ _(K, { ...e });
2041
- Z.displayName = "FaceTracker.Mesh";
2042
- const Y = p0;
2043
- Y.Mesh = Z;
2044
- const S0 = Y;
2041
+ }, B = (e) => /* @__PURE__ */ _(j, { ...e });
2042
+ B.displayName = "FaceTracker.Mesh";
2043
+ const Y = A0;
2044
+ Y.Mesh = B;
2045
+ const z0 = Y;
2045
2046
  export {
2046
- T0 as F,
2047
- S0 as H,
2048
- s0 as M,
2047
+ S0 as F,
2048
+ z0 as H,
2049
+ o0 as M,
2049
2050
  X as T,
2050
- _0 as a,
2051
+ v0 as a,
2051
2052
  Y as b,
2052
- K as c,
2053
+ j as c,
2053
2054
  L as d,
2054
- b0 as p,
2055
- h0 as r,
2056
- R0 as t,
2057
- j as u
2055
+ T0 as p,
2056
+ p0 as r,
2057
+ _0 as s,
2058
+ b0 as t,
2059
+ H as u
2058
2060
  };
@@ -1 +1 @@
1
- "use strict";const M=require("react"),m=require("react/jsx-runtime"),v=require("@react-three/drei"),N=require("@react-three/fiber"),c=require("three"),U=require("./index-CyUUurQT.cjs"),y=M.createContext(null),F=()=>{const e=M.useContext(y);if(!e)throw new Error("useScreenSpace must be used within ScreenSpaceUI");return e},_=M.createContext(null),P=()=>M.useContext(_)??1;function W(e){const r=new Map,t=new Map,i=e.clone();return x(e,i,function(a,o){r.set(o,a),t.set(a,o)}),i.traverse(function(a){if(!a.isSkinnedMesh)return;const o=a,f=r.get(a),l=f.skeleton.bones;o.skeleton=f.skeleton.clone(),o.bindMatrix.copy(f.bindMatrix),o.skeleton.bones=l.map(function(p){return t.get(p)}),o.bind(o.skeleton,o.bindMatrix)}),i}function x(e,r,t){t(e,r);for(let i=0;i<e.children.length;i++)x(e.children[i],r.children[i],t)}const K={enabled:!0,mesh:"cube",material:{type:"standard",color:"#ffffff",opacity:1,wireframe:!1,roughness:.42,metalness:.08},shadowMode:"off",visible:!0},g={depthTest:!0,depthWrite:!0,depthFunc:"lessEqual",colorWrite:!0,colorMask:{r:!0,g:!0,b:!0,a:!0},cullMode:"back",blendMode:"normal",polygonOffset:{enabled:!1,factor:0,units:0}},E=e=>({...g,...e,colorMask:{...g.colorMask,...e==null?void 0:e.colorMask},polygonOffset:{...g.polygonOffset,...e==null?void 0:e.polygonOffset}}),D=e=>e==="never"?c.NeverDepth:e==="less"?c.LessDepth:e==="equal"?c.EqualDepth:e==="greater"?c.GreaterDepth:e==="notEqual"?c.NotEqualDepth:e==="greaterEqual"?c.GreaterEqualDepth:e==="always"?c.AlwaysDepth:c.LessEqualDepth,C=e=>e==="front"?c.BackSide:e==="off"?c.DoubleSide:c.FrontSide,O=e=>e==="additive"?c.AdditiveBlending:e==="subtractive"?c.SubtractiveBlending:e==="multiply"?c.MultiplyBlending:e==="none"?c.NoBlending:c.NormalBlending,w=e=>{const r=E(e),t=r.colorWrite&&(r.colorMask.r||r.colorMask.g||r.colorMask.b||r.colorMask.a);return{depthTest:r.depthTest,depthWrite:r.depthWrite,depthFunc:D(r.depthFunc),colorWrite:t,side:C(r.cullMode),blending:O(r.blendMode),polygonOffset:r.polygonOffset.enabled,polygonOffsetFactor:r.polygonOffset.factor,polygonOffsetUnits:r.polygonOffset.units}},T=(e,r)=>{const t=E(r);return e<1||t.blendMode!=="normal"&&t.blendMode!=="none"},b=e=>e.colorWrite&&(!e.colorMask.r||!e.colorMask.g||!e.colorMask.b||!e.colorMask.a),R="__vincenttPreviousColorMask",A="__vincenttColorMaskBaseBefore",S="__vincenttColorMaskBaseAfter",G=(e,r)=>{const t=e.userData,i=t[A]??e.onBeforeRender.bind(e),a=t[S]??e.onAfterRender.bind(e);if(t[A]=i,t[S]=a,!b(r)){e.onBeforeRender=i,e.onAfterRender=a;return}e.onBeforeRender=(o,f,l,p,n,u)=>{i(o,f,l,p,n,u);const s=o.getContext();e.userData[R]=s.getParameter(s.COLOR_WRITEMASK),s.colorMask(r.colorMask.r,r.colorMask.g,r.colorMask.b,r.colorMask.a)},e.onAfterRender=(o,f,l,p,n,u)=>{const s=e.userData[R];s&&(o.getContext().colorMask(...s),delete e.userData[R]),a(o,f,l,p,n,u)}},B=e=>({castShadow:e==="cast"||e==="castReceive",receiveShadow:e==="receive"||e==="castReceive"}),H=({mesh:e})=>e==="sphere"?m.jsx("sphereGeometry",{args:[.85,48,32]}):e==="plane"?m.jsx("planeGeometry",{args:[1.6,1.6]}):m.jsx("boxGeometry",{args:[1.4,1.4,1.4]}),I=({url:e,nodeName:r,settings:t,renderOrder:i})=>{const{scene:a,animations:o}=v.useGLTF(e),f=M.useRef(null),l=M.useMemo(()=>{const n=o.length?W(a):a.clone(!0);return n.traverse(u=>{const s=u;!s.isMesh||!s.material||(s.material=Array.isArray(s.material)?s.material.map(k=>k.clone()):s.material.clone())}),n},[a,o.length]);M.useEffect(()=>{const n=B(t.shadowMode),u=Math.min(1,Math.max(0,t.material.opacity)),s=w(t.material.renderState),k=T(u,t.material.renderState);l.traverse(L=>{const d=L;if(!d.isMesh||!d.material)return;d.castShadow=n.castShadow,d.receiveShadow=n.receiveShadow,(Array.isArray(d.material)?d.material:[d.material]).forEach(h=>{if(!h)return;const q=h;q.wireframe=t.material.wireframe,h.opacity=u,h.transparent=k,Object.assign(h,s),h.needsUpdate=!0}),G(d,E(t.material.renderState))})},[l,t.material.opacity,t.material.renderState,t.material.wireframe,t.shadowMode]);const p=r?l.getObjectByName(r):l;return M.useEffect(()=>{if(!o.length)return;const n=new c.AnimationMixer(l);return o.filter(s=>t.assetAnimation==="all"||s.name===t.assetAnimation).forEach(s=>n.clipAction(s).setLoop(c.LoopRepeat,1/0).play()),f.current=n,()=>{n.stopAllAction(),n.uncacheRoot(l),f.current=null}},[o,l,t.assetAnimation]),N.useFrame((n,u)=>{var s;return(s=f.current)==null?void 0:s.update(u)}),m.jsx("group",{renderOrder:i,children:m.jsx("primitive",{object:p??l})})},z=({renderOrder:e,value:r})=>{if(!r.enabled||!r.visible)return null;if(r.assetUrl)return m.jsx(M.Suspense,{fallback:null,children:m.jsx(I,{url:r.assetUrl,nodeName:r.assetNodeName,settings:r,renderOrder:e})});const t=Math.min(1,Math.max(0,r.material.opacity)),i={color:r.material.color,transparent:T(t,r.material.renderState),opacity:t,wireframe:r.material.wireframe,...w(r.material.renderState)};return m.jsxs("mesh",{...B(r.shadowMode),onBeforeRender:(a,o,f,l,p)=>{const n=E(r.material.renderState);if(!b(n))return;const u=a.getContext();p.userData[R]=u.getParameter(u.COLOR_WRITEMASK),u.colorMask(n.colorMask.r,n.colorMask.g,n.colorMask.b,n.colorMask.a)},onAfterRender:(a,o,f,l,p)=>{const n=p.userData[R];n&&(a.getContext().colorMask(...n),delete p.userData[R])},renderOrder:e,children:[m.jsx(H,{mesh:r.mesh}),m.jsx(U.MeshMaterial,{settings:r.material,materialProps:i})]})};exports.DEFAULT_MESH_RENDERER=K;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=g;exports.MeshRenderer=z;exports.ScreenRectAspectContext=_;exports.ScreenSpaceContext=y;exports.getThreeBlending=O;exports.getThreeDepthFunction=D;exports.getThreeSide=C;exports.normalizeMeshRendererRenderState=E;exports.useScreenRectAspect=P;exports.useScreenSpace=F;
1
+ "use strict";const M=require("react"),m=require("react/jsx-runtime"),v=require("@react-three/drei"),N=require("@react-three/fiber"),c=require("three"),U=require("./index-OCPjOaeP.cjs"),y=M.createContext(null),F=()=>{const e=M.useContext(y);if(!e)throw new Error("useScreenSpace must be used within ScreenSpaceUI");return e},_=M.createContext(null),P=()=>M.useContext(_)??1;function W(e){const r=new Map,t=new Map,i=e.clone();return x(e,i,function(a,o){r.set(o,a),t.set(a,o)}),i.traverse(function(a){if(!a.isSkinnedMesh)return;const o=a,f=r.get(a),l=f.skeleton.bones;o.skeleton=f.skeleton.clone(),o.bindMatrix.copy(f.bindMatrix),o.skeleton.bones=l.map(function(p){return t.get(p)}),o.bind(o.skeleton,o.bindMatrix)}),i}function x(e,r,t){t(e,r);for(let i=0;i<e.children.length;i++)x(e.children[i],r.children[i],t)}const K={enabled:!0,mesh:"cube",material:{type:"standard",color:"#ffffff",opacity:1,wireframe:!1,roughness:.42,metalness:.08},shadowMode:"off",visible:!0},g={depthTest:!0,depthWrite:!0,depthFunc:"lessEqual",colorWrite:!0,colorMask:{r:!0,g:!0,b:!0,a:!0},cullMode:"back",blendMode:"normal",polygonOffset:{enabled:!1,factor:0,units:0}},E=e=>({...g,...e,colorMask:{...g.colorMask,...e==null?void 0:e.colorMask},polygonOffset:{...g.polygonOffset,...e==null?void 0:e.polygonOffset}}),D=e=>e==="never"?c.NeverDepth:e==="less"?c.LessDepth:e==="equal"?c.EqualDepth:e==="greater"?c.GreaterDepth:e==="notEqual"?c.NotEqualDepth:e==="greaterEqual"?c.GreaterEqualDepth:e==="always"?c.AlwaysDepth:c.LessEqualDepth,C=e=>e==="front"?c.BackSide:e==="off"?c.DoubleSide:c.FrontSide,O=e=>e==="additive"?c.AdditiveBlending:e==="subtractive"?c.SubtractiveBlending:e==="multiply"?c.MultiplyBlending:e==="none"?c.NoBlending:c.NormalBlending,w=e=>{const r=E(e),t=r.colorWrite&&(r.colorMask.r||r.colorMask.g||r.colorMask.b||r.colorMask.a);return{depthTest:r.depthTest,depthWrite:r.depthWrite,depthFunc:D(r.depthFunc),colorWrite:t,side:C(r.cullMode),blending:O(r.blendMode),polygonOffset:r.polygonOffset.enabled,polygonOffsetFactor:r.polygonOffset.factor,polygonOffsetUnits:r.polygonOffset.units}},T=(e,r)=>{const t=E(r);return e<1||t.blendMode!=="normal"&&t.blendMode!=="none"},b=e=>e.colorWrite&&(!e.colorMask.r||!e.colorMask.g||!e.colorMask.b||!e.colorMask.a),R="__vincenttPreviousColorMask",A="__vincenttColorMaskBaseBefore",S="__vincenttColorMaskBaseAfter",G=(e,r)=>{const t=e.userData,i=t[A]??e.onBeforeRender.bind(e),a=t[S]??e.onAfterRender.bind(e);if(t[A]=i,t[S]=a,!b(r)){e.onBeforeRender=i,e.onAfterRender=a;return}e.onBeforeRender=(o,f,l,p,n,u)=>{i(o,f,l,p,n,u);const s=o.getContext();e.userData[R]=s.getParameter(s.COLOR_WRITEMASK),s.colorMask(r.colorMask.r,r.colorMask.g,r.colorMask.b,r.colorMask.a)},e.onAfterRender=(o,f,l,p,n,u)=>{const s=e.userData[R];s&&(o.getContext().colorMask(...s),delete e.userData[R]),a(o,f,l,p,n,u)}},B=e=>({castShadow:e==="cast"||e==="castReceive",receiveShadow:e==="receive"||e==="castReceive"}),H=({mesh:e})=>e==="sphere"?m.jsx("sphereGeometry",{args:[.85,48,32]}):e==="plane"?m.jsx("planeGeometry",{args:[1.6,1.6]}):m.jsx("boxGeometry",{args:[1.4,1.4,1.4]}),I=({url:e,nodeName:r,settings:t,renderOrder:i})=>{const{scene:a,animations:o}=v.useGLTF(e),f=M.useRef(null),l=M.useMemo(()=>{const n=o.length?W(a):a.clone(!0);return n.traverse(u=>{const s=u;!s.isMesh||!s.material||(s.material=Array.isArray(s.material)?s.material.map(k=>k.clone()):s.material.clone())}),n},[a,o.length]);M.useEffect(()=>{const n=B(t.shadowMode),u=Math.min(1,Math.max(0,t.material.opacity)),s=w(t.material.renderState),k=T(u,t.material.renderState);l.traverse(L=>{const d=L;if(!d.isMesh||!d.material)return;d.castShadow=n.castShadow,d.receiveShadow=n.receiveShadow,(Array.isArray(d.material)?d.material:[d.material]).forEach(h=>{if(!h)return;const q=h;q.wireframe=t.material.wireframe,h.opacity=u,h.transparent=k,Object.assign(h,s),h.needsUpdate=!0}),G(d,E(t.material.renderState))})},[l,t.material.opacity,t.material.renderState,t.material.wireframe,t.shadowMode]);const p=r?l.getObjectByName(r):l;return M.useEffect(()=>{if(!o.length)return;const n=new c.AnimationMixer(l);return o.filter(s=>t.assetAnimation==="all"||s.name===t.assetAnimation).forEach(s=>n.clipAction(s).setLoop(c.LoopRepeat,1/0).play()),f.current=n,()=>{n.stopAllAction(),n.uncacheRoot(l),f.current=null}},[o,l,t.assetAnimation]),N.useFrame((n,u)=>{var s;return(s=f.current)==null?void 0:s.update(u)}),m.jsx("group",{renderOrder:i,children:m.jsx("primitive",{object:p??l})})},z=({renderOrder:e,value:r})=>{if(!r.enabled||!r.visible)return null;if(r.assetUrl)return m.jsx(M.Suspense,{fallback:null,children:m.jsx(I,{url:r.assetUrl,nodeName:r.assetNodeName,settings:r,renderOrder:e})});const t=Math.min(1,Math.max(0,r.material.opacity)),i={color:r.material.color,transparent:T(t,r.material.renderState),opacity:t,wireframe:r.material.wireframe,...w(r.material.renderState)};return m.jsxs("mesh",{...B(r.shadowMode),onBeforeRender:(a,o,f,l,p)=>{const n=E(r.material.renderState);if(!b(n))return;const u=a.getContext();p.userData[R]=u.getParameter(u.COLOR_WRITEMASK),u.colorMask(n.colorMask.r,n.colorMask.g,n.colorMask.b,n.colorMask.a)},onAfterRender:(a,o,f,l,p)=>{const n=p.userData[R];n&&(a.getContext().colorMask(...n),delete p.userData[R])},renderOrder:e,children:[m.jsx(H,{mesh:r.mesh}),m.jsx(U.MeshMaterial,{settings:r.material,materialProps:i})]})};exports.DEFAULT_MESH_RENDERER=K;exports.DEFAULT_MESH_RENDERER_RENDER_STATE=g;exports.MeshRenderer=z;exports.ScreenRectAspectContext=_;exports.ScreenSpaceContext=y;exports.getThreeBlending=O;exports.getThreeDepthFunction=D;exports.getThreeSide=C;exports.normalizeMeshRendererRenderState=E;exports.useScreenRectAspect=P;exports.useScreenSpace=F;
@@ -0,0 +1 @@
1
+ "use strict";const C=require("three"),S=require("react/jsx-runtime"),_=require("@react-three/fiber"),A=require("react"),k=require("./selectors-Du_PsVnW.cjs"),N=require("./index-OCPjOaeP.cjs");function O(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const c=O(C),H="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=",v=()=>{const e=new Uint8Array([32,32,32,255,96,96,96,255,176,176,176,255,255,255,255,255]),t=new c.DataTexture(e,4,1,c.RGBAFormat);return t.minFilter=c.NearestFilter,t.magFilter=c.NearestFilter,t.generateMipmaps=!1,t.needsUpdate=!0,t},D=()=>{const e=document.createElement("canvas");e.width=256,e.height=256;const t=e.getContext("2d");if(!t)return new c.CanvasTexture(e);const r=t.createRadialGradient(96,80,10,128,128,128);r.addColorStop(0,"#ffffff"),r.addColorStop(.18,"#f7d794"),r.addColorStop(.45,"#d97706"),r.addColorStop(.72,"#78350f"),r.addColorStop(1,"#120701"),t.fillStyle=r,t.fillRect(0,0,e.width,e.height);const o=new c.CanvasTexture(e);return o.needsUpdate=!0,o},F=["face.center","face.forehead","face.noseTip","face.chin","face.leftEyeOuter","face.rightEyeOuter","face.leftCheek","face.rightCheek","face.mouthCenter","face.leftEye","face.rightEye","face.leftEarlobe","face.rightEarlobe","face.custom"],G=["hand.wrist","hand.thumbTip","hand.indexTip","hand.middleTip","hand.ringTip","hand.pinkyTip","hand.indexBase","hand.middleBase","hand.ringBase","hand.pinkyBase"],U=["body.head","body.neck","body.leftShoulder","body.rightShoulder","body.leftElbow","body.rightElbow","body.leftWrist","body.rightWrist","body.leftHip","body.rightHip","body.leftKnee","body.rightKnee","body.leftAnkle","body.rightAnkle"],b=e=>e.startsWith("face.")?"face":e.startsWith("hand.")?"hand":e.startsWith("body.")?"body":null,M={target:"face.center",customAnchorPoint:{x:0,y:0,z:0},offset:{x:0,y:0,z:0},smoothing:0,followFaceRoll:!1},R=(e,t,r)=>t+r*(e-t),E=(e,t)=>1/(1+1/(2*Math.PI*e)/t),q=(e,t,r,o,h,n)=>{if(!e.initialized||r<=0)return e.pos.copy(t),e.prevRaw.copy(t),e.dxHat.set(0,0,0),e.initialized=!0,e;const i=E(n,r),l=["x","y","z"];for(const a of l){const d=(t[a]-e.prevRaw[a])/r,s=R(d,e.dxHat[a],i);e.dxHat[a]=s;const f=o+h*Math.abs(s),p=E(f,r);e.pos[a]=R(t[a],e.pos[a],p),e.prevRaw[a]=t[a]}return e},x=(e,t,r,o)=>q(e,t,r,o*.1,.5,1),z=({target:e,customAnchorPoint:t,offset:r,smoothing:o=0,children:h})=>{const n=N.useTrackerContext(),i=A.useRef(null),l=A.useRef(!1),a=A.useRef(new c.Vector3),d=A.useRef({pos:new c.Vector3,prevRaw:new c.Vector3,dxHat:new c.Vector3,initialized:!1}),s=b(e),f=n!==null&&s!==null&&n.type!==s,p=n===null,y=p||f||s===null;return A.useEffect(()=>{p?console.warn(`[TrackingAnchor] target "${e}" requires a FaceTracker / HandTracker / BodyTracker ancestor; rendering null.`):f?console.warn(`[TrackingAnchor] target "${e}" namespace does not match parent tracker type "${n==null?void 0:n.type}"; rendering null.`):s===null&&console.warn(`[TrackingAnchor] target "${e}" is not a recognized face/hand/body landmark; rendering null.`)},[e,s,p,f,n==null?void 0:n.type]),_.useFrame((B,m)=>{if(y||!i.current||!n)return;const T=n.resolveLandmark(e,t);if(!T){i.current.visible=!1,l.current=!1,d.current.initialized=!1;return}i.current.visible=!0;const u=a.current.copy(T.position),g=i.current.parent;if(g){g.updateMatrixWorld();const w=new c.Matrix4().copy(g.matrixWorld).invert();u.applyMatrix4(w)}r&&(u.x+=r[0],u.y+=r[1],u.z+=r[2]),o>0?(x(d.current,u,l.current?m:0,o),i.current.position.copy(d.current.pos)):i.current.position.copy(u),l.current=!0,T.quaternion&&i.current.quaternion.copy(T.quaternion)}),y?null:S.jsx("group",{ref:i,renderOrder:k.RENDER_LAYERS.TRACKED,children:h})};exports.BODY_TARGETS=U;exports.DEFAULT_TRACKING_ANCHOR=M;exports.FACE_TARGETS=F;exports.HAND_TARGETS=G;exports.TRANSPARENT_TEXTURE_DATA_URL=H;exports.TrackingAnchor=z;exports.createMatcapTexture=D;exports.createToonGradientTexture=v;exports.getTargetNamespace=b;exports.stepTrackingSmoothing=x;
@@ -0,0 +1,144 @@
1
+ import * as a from "three";
2
+ import { jsx as b } from "react/jsx-runtime";
3
+ import { useFrame as w } from "@react-three/fiber";
4
+ import { useRef as A, useEffect as C } from "react";
5
+ import { R as k } from "./selectors-C5G1PMYL.js";
6
+ import { a as S } from "./index-CsUdQ-pn.js";
7
+ const O = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=", U = () => {
8
+ const e = new Uint8Array([
9
+ 32,
10
+ 32,
11
+ 32,
12
+ 255,
13
+ 96,
14
+ 96,
15
+ 96,
16
+ 255,
17
+ 176,
18
+ 176,
19
+ 176,
20
+ 255,
21
+ 255,
22
+ 255,
23
+ 255,
24
+ 255
25
+ ]), r = new a.DataTexture(e, 4, 1, a.RGBAFormat);
26
+ return r.minFilter = a.NearestFilter, r.magFilter = a.NearestFilter, r.generateMipmaps = !1, r.needsUpdate = !0, r;
27
+ }, G = () => {
28
+ const e = document.createElement("canvas");
29
+ e.width = 256, e.height = 256;
30
+ const r = e.getContext("2d");
31
+ if (!r)
32
+ return new a.CanvasTexture(e);
33
+ const n = r.createRadialGradient(96, 80, 10, 128, 128, 128);
34
+ n.addColorStop(0, "#ffffff"), n.addColorStop(0.18, "#f7d794"), n.addColorStop(0.45, "#d97706"), n.addColorStop(0.72, "#78350f"), n.addColorStop(1, "#120701"), r.fillStyle = n, r.fillRect(0, 0, e.width, e.height);
35
+ const i = new a.CanvasTexture(e);
36
+ return i.needsUpdate = !0, i;
37
+ }, P = [
38
+ "face.center",
39
+ "face.forehead",
40
+ "face.noseTip",
41
+ "face.chin",
42
+ "face.leftEyeOuter",
43
+ "face.rightEyeOuter",
44
+ "face.leftCheek",
45
+ "face.rightCheek",
46
+ "face.mouthCenter",
47
+ "face.leftEye",
48
+ "face.rightEye",
49
+ "face.leftEarlobe",
50
+ "face.rightEarlobe",
51
+ "face.custom"
52
+ ], V = [
53
+ "hand.wrist",
54
+ "hand.thumbTip",
55
+ "hand.indexTip",
56
+ "hand.middleTip",
57
+ "hand.ringTip",
58
+ "hand.pinkyTip",
59
+ "hand.indexBase",
60
+ "hand.middleBase",
61
+ "hand.ringBase",
62
+ "hand.pinkyBase"
63
+ ], W = [
64
+ "body.head",
65
+ "body.neck",
66
+ "body.leftShoulder",
67
+ "body.rightShoulder",
68
+ "body.leftElbow",
69
+ "body.rightElbow",
70
+ "body.leftWrist",
71
+ "body.rightWrist",
72
+ "body.leftHip",
73
+ "body.rightHip",
74
+ "body.leftKnee",
75
+ "body.rightKnee",
76
+ "body.leftAnkle",
77
+ "body.rightAnkle"
78
+ ], v = (e) => e.startsWith("face.") ? "face" : e.startsWith("hand.") ? "hand" : e.startsWith("body.") ? "body" : null, K = {
79
+ target: "face.center",
80
+ customAnchorPoint: { x: 0, y: 0, z: 0 },
81
+ offset: { x: 0, y: 0, z: 0 },
82
+ smoothing: 0,
83
+ followFaceRoll: !1
84
+ }, m = (e, r, n) => r + n * (e - r), R = (e, r) => 1 / (1 + 1 / (2 * Math.PI * e) / r), H = (e, r, n, i, y, t) => {
85
+ if (!e.initialized || n <= 0)
86
+ return e.pos.copy(r), e.prevRaw.copy(r), e.dxHat.set(0, 0, 0), e.initialized = !0, e;
87
+ const c = R(t, n), l = ["x", "y", "z"];
88
+ for (const o of l) {
89
+ const f = (r[o] - e.prevRaw[o]) / n, s = m(f, e.dxHat[o], c);
90
+ e.dxHat[o] = s;
91
+ const u = i + y * Math.abs(s), p = R(u, n);
92
+ e.pos[o] = m(r[o], e.pos[o], p), e.prevRaw[o] = r[o];
93
+ }
94
+ return e;
95
+ }, F = (e, r, n, i) => H(e, r, n, i * 0.1, 0.5, 1), q = ({
96
+ target: e,
97
+ customAnchorPoint: r,
98
+ offset: n,
99
+ smoothing: i = 0,
100
+ children: y
101
+ }) => {
102
+ const t = S(), c = A(null), l = A(!1), o = A(new a.Vector3()), f = A({
103
+ pos: new a.Vector3(),
104
+ prevRaw: new a.Vector3(),
105
+ dxHat: new a.Vector3(),
106
+ initialized: !1
107
+ }), s = v(e), u = t !== null && s !== null && t.type !== s, p = t === null, g = p || u || s === null;
108
+ return C(() => {
109
+ p ? console.warn(
110
+ `[TrackingAnchor] target "${e}" requires a FaceTracker / HandTracker / BodyTracker ancestor; rendering null.`
111
+ ) : u ? console.warn(
112
+ `[TrackingAnchor] target "${e}" namespace does not match parent tracker type "${t == null ? void 0 : t.type}"; rendering null.`
113
+ ) : s === null && console.warn(
114
+ `[TrackingAnchor] target "${e}" is not a recognized face/hand/body landmark; rendering null.`
115
+ );
116
+ }, [e, s, p, u, t == null ? void 0 : t.type]), w((B, x) => {
117
+ if (g || !c.current || !t) return;
118
+ const h = t.resolveLandmark(e, r);
119
+ if (!h) {
120
+ c.current.visible = !1, l.current = !1, f.current.initialized = !1;
121
+ return;
122
+ }
123
+ c.current.visible = !0;
124
+ const d = o.current.copy(h.position), T = c.current.parent;
125
+ if (T) {
126
+ T.updateMatrixWorld();
127
+ const E = new a.Matrix4().copy(T.matrixWorld).invert();
128
+ d.applyMatrix4(E);
129
+ }
130
+ n && (d.x += n[0], d.y += n[1], d.z += n[2]), i > 0 ? (F(f.current, d, l.current ? x : 0, i), c.current.position.copy(f.current.pos)) : c.current.position.copy(d), l.current = !0, h.quaternion && c.current.quaternion.copy(h.quaternion);
131
+ }), g ? null : /* @__PURE__ */ b("group", { ref: c, renderOrder: k.TRACKED, children: y });
132
+ };
133
+ export {
134
+ W as B,
135
+ K as D,
136
+ P as F,
137
+ V as H,
138
+ O as T,
139
+ G as a,
140
+ q as b,
141
+ U as c,
142
+ v as g,
143
+ F as s
144
+ };
@@ -0,0 +1 @@
1
+ "use strict";const T=require("react/jsx-runtime"),v=require("@react-three/fiber"),s=require("react"),S=require("./index-CeVkgsag.cjs"),X=require("./selectors-Du_PsVnW.cjs"),V=require("three");function Y(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const b=Y(V);function B(e){return JSON.stringify(e??{})}function L(e,t,n=!0){const{session:r}=S.useXRContext(),o=s.useId(),[i,d]=s.useState(null),l=B(t),c=s.useRef(t);c.current=t,s.useEffect(()=>{let f=!1;return d(null),r.registry.acquire(e,o,c.current).catch(h=>{f||d(h instanceof Error?h:new Error(String(h)))}),()=>{f=!0,r.registry.release(e,o)}},[r,e,o,l]),s.useEffect(()=>{r.registry.setActive(e,o,n)},[r,e,o,n]);const A=r.store,E=s.useSyncExternalStore(f=>A.subscribe(f),()=>A.getSnapshot().pipeline.get(e)??null,()=>null),p=s.useMemo(()=>E?E.getModelNode():null,[E]),u=s.useMemo(()=>i?S.mapModelErrorToReason(i):null,[i]);return{ready:E!==null&&i===null,node:p,error:i,fallback:u}}const U=({materialProps:e,settings:t})=>t.type==="basic"?T.jsx("meshBasicMaterial",{...e}):T.jsx("meshStandardMaterial",{...e,roughness:t.roughness,metalness:t.metalness}),j=1e-6,W=e=>{const{x:t,y:n,z:r}=e.scale;return Math.abs(t-n)<=j&&Math.abs(t-r)<=j?t:1},Z=(e,t,n,r)=>{if(!n.enabled)return e;const o=W(n);return r.x=t.x+(e.x-t.x)*o+n.position.x,r.y=t.y+(e.y-t.y)*o-n.position.y,r.z=t.z+(e.z-t.z)*o+n.position.z,r},G=(e,t,n)=>S.unprojectToZZeroInto(e,t,n),J=(e,t,n)=>{const r=(e.x-.5)*2,o=(.5-e.y)*2,i=b.MathUtils.clamp(e.z*2,-1,1);return n.set(r,o,i).unproject(t)},Q=(e,t,n,r,o,i)=>{const d=Math.min(t,e.length);for(let l=0;l<d;l++){o(e[l],r,i);const c=l*3;n[c]=i.x,n[c+1]=i.y,n[c+2]=i.z}return d},$=[[127,34,139],[11,0,37],[232,231,120],[72,37,39],[128,121,47],[232,121,128],[104,69,67],[175,171,148],[118,50,101],[73,39,40],[9,151,108],[48,115,131],[194,204,211],[74,40,185],[80,42,183],[40,92,186],[230,229,118],[202,212,214],[83,18,17],[76,61,146],[160,29,30],[56,157,173],[106,204,194],[135,214,192],[203,165,98],[21,71,68],[51,45,4],[144,24,23],[77,146,91],[205,50,187],[201,200,18],[91,106,182],[90,91,181],[85,84,17],[206,203,36],[148,171,140],[92,40,39],[193,189,244],[159,158,28],[247,246,161],[236,3,196],[54,68,104],[193,168,8],[117,228,31],[189,193,55],[98,97,99],[126,47,100],[166,79,218],[155,154,26],[209,49,131],[135,136,150],[47,126,217],[223,52,53],[45,51,134],[211,170,140],[67,69,108],[43,106,91],[230,119,120],[226,130,247],[63,53,52],[238,20,242],[46,70,156],[78,62,96],[46,53,63],[143,34,227],[123,117,111],[44,125,19],[236,134,51],[216,206,205],[154,153,22],[39,37,167],[200,201,208],[36,142,100],[57,212,202],[20,60,99],[28,158,157],[35,226,113],[160,159,27],[204,202,210],[113,225,46],[43,202,204],[62,76,77],[137,123,116],[41,38,72],[203,129,142],[64,98,240],[49,102,64],[41,73,74],[212,216,207],[42,74,184],[169,170,211],[170,149,176],[105,66,69],[122,6,168],[123,147,187],[96,77,90],[65,55,107],[89,90,180],[101,100,120],[63,105,104],[93,137,227],[15,86,85],[129,102,49],[14,87,86],[55,8,9],[100,47,121],[145,23,22],[88,89,179],[6,122,196],[88,95,96],[138,172,136],[215,58,172],[115,48,219],[42,80,81],[195,3,51],[43,146,61],[171,175,199],[81,82,38],[53,46,225],[144,163,110],[52,65,66],[229,228,117],[34,127,234],[107,108,69],[109,108,151],[48,64,235],[62,78,191],[129,209,126],[111,35,143],[117,123,50],[222,65,52],[19,125,141],[221,55,65],[3,195,197],[25,7,33],[220,237,44],[70,71,139],[122,193,245],[247,130,33],[71,21,162],[170,169,150],[188,174,196],[216,186,92],[2,97,167],[141,125,241],[164,167,37],[72,38,12],[38,82,13],[63,68,71],[226,35,111],[101,50,205],[206,92,165],[209,198,217],[165,167,97],[220,115,218],[133,112,243],[239,238,241],[214,135,169],[190,173,133],[171,208,32],[125,44,237],[86,87,178],[85,86,179],[84,85,180],[83,84,181],[201,83,182],[137,93,132],[76,62,183],[61,76,184],[57,61,185],[212,57,186],[214,207,187],[34,143,156],[79,239,237],[123,137,177],[44,1,4],[201,194,32],[64,102,129],[213,215,138],[59,166,219],[242,99,97],[2,94,141],[75,59,235],[24,110,228],[25,130,226],[23,24,229],[22,23,230],[26,22,231],[112,26,232],[189,190,243],[221,56,190],[28,56,221],[27,28,222],[29,27,223],[30,29,224],[247,30,225],[238,79,20],[166,59,75],[60,75,240],[147,177,215],[20,79,166],[187,147,213],[112,233,244],[233,128,245],[128,114,188],[114,217,174],[131,115,220],[217,198,236],[198,131,134],[177,132,58],[143,35,124],[110,163,7],[228,110,25],[356,389,368],[11,302,267],[452,350,349],[302,303,269],[357,343,277],[452,453,357],[333,332,297],[175,152,377],[347,348,330],[303,304,270],[9,336,337],[278,279,360],[418,262,431],[304,408,409],[310,415,407],[270,409,410],[450,348,347],[422,430,434],[313,314,17],[306,307,375],[387,388,260],[286,414,398],[335,406,418],[364,367,416],[423,358,327],[251,284,298],[281,5,4],[373,374,253],[307,320,321],[425,427,411],[421,313,18],[321,405,406],[320,404,405],[315,16,17],[426,425,266],[377,400,369],[322,391,269],[417,465,464],[386,257,258],[466,260,388],[456,399,419],[284,332,333],[417,285,8],[346,340,261],[413,441,285],[327,460,328],[355,371,329],[392,439,438],[382,341,256],[429,420,360],[364,394,379],[277,343,437],[443,444,283],[275,440,363],[431,262,369],[297,338,337],[273,375,321],[450,451,349],[446,342,467],[293,334,282],[458,461,462],[276,353,383],[308,324,325],[276,300,293],[372,345,447],[352,345,340],[274,1,19],[456,248,281],[436,427,425],[381,256,252],[269,391,393],[200,199,428],[266,330,329],[287,273,422],[250,462,328],[258,286,384],[265,353,342],[387,259,257],[424,431,430],[342,353,276],[273,335,424],[292,325,307],[366,447,345],[271,303,302],[423,266,371],[294,455,460],[279,278,294],[271,272,304],[432,434,427],[272,407,408],[394,430,431],[395,369,400],[334,333,299],[351,417,168],[352,280,411],[325,319,320],[295,296,336],[319,403,404],[330,348,349],[293,298,333],[323,454,447],[15,16,315],[358,429,279],[14,15,316],[285,336,9],[329,349,350],[374,380,252],[318,402,403],[6,197,419],[318,319,325],[367,364,365],[435,367,397],[344,438,439],[272,271,311],[195,5,281],[273,287,291],[396,428,199],[311,271,268],[283,444,445],[373,254,339],[282,334,296],[449,347,346],[264,447,454],[336,296,299],[338,10,151],[278,439,455],[292,407,415],[358,371,355],[340,345,372],[346,347,280],[442,443,282],[19,94,370],[441,442,295],[248,419,197],[263,255,359],[440,275,274],[300,383,368],[351,412,465],[263,467,466],[301,368,389],[395,378,379],[412,351,419],[436,426,322],[2,164,393],[370,462,461],[164,0,267],[302,11,12],[268,12,13],[293,300,301],[446,261,340],[330,266,425],[426,423,391],[429,355,437],[391,327,326],[440,457,438],[341,382,362],[459,457,461],[434,430,394],[414,463,362],[396,369,262],[354,461,457],[316,403,402],[315,404,403],[314,405,404],[313,406,405],[421,418,406],[366,401,361],[306,408,407],[291,409,408],[287,410,409],[432,436,410],[434,416,411],[264,368,383],[309,438,457],[352,376,401],[274,275,4],[421,428,262],[294,327,358],[433,416,367],[289,455,439],[462,370,326],[2,326,370],[305,460,455],[254,449,448],[255,261,446],[253,450,449],[252,451,450],[256,452,451],[341,453,452],[413,464,463],[441,413,414],[258,442,441],[257,443,442],[259,444,443],[260,445,444],[467,342,445],[459,458,250],[289,392,290],[290,328,460],[376,433,435],[250,290,392],[411,416,433],[341,463,464],[453,464,465],[357,465,412],[343,412,399],[360,363,440],[437,399,456],[420,456,363],[401,435,288],[372,383,353],[339,255,249],[448,261,255],[133,243,190],[133,155,112],[33,246,247],[33,130,25],[398,384,286],[362,398,414],[362,463,341],[263,359,467],[263,249,255],[466,467,260],[75,60,166],[238,239,79],[162,127,139],[72,11,37],[121,232,120],[73,72,39],[114,128,47],[233,232,128],[103,104,67],[152,175,148],[119,118,101],[74,73,40],[107,9,108],[49,48,131],[32,194,211],[184,74,185],[191,80,183],[185,40,186],[119,230,118],[210,202,214],[84,83,17],[77,76,146],[161,160,30],[190,56,173],[182,106,194],[138,135,192],[129,203,98],[54,21,68],[5,51,4],[145,144,23],[90,77,91],[207,205,187],[83,201,18],[181,91,182],[180,90,181],[16,85,17],[205,206,36],[176,148,140],[165,92,39],[245,193,244],[27,159,28],[30,247,161],[174,236,196],[103,54,104],[55,193,8],[111,117,31],[221,189,55],[240,98,99],[142,126,100],[219,166,218],[112,155,26],[198,209,131],[169,135,150],[114,47,217],[224,223,53],[220,45,134],[32,211,140],[109,67,108],[146,43,91],[231,230,120],[113,226,247],[105,63,52],[241,238,242],[124,46,156],[95,78,96],[70,46,63],[116,143,227],[116,123,111],[1,44,19],[3,236,51],[207,216,205],[26,154,22],[165,39,167],[199,200,208],[101,36,100],[43,57,202],[242,20,99],[56,28,157],[124,35,113],[29,160,27],[211,204,210],[124,113,46],[106,43,204],[96,62,77],[227,137,116],[73,41,72],[36,203,142],[235,64,240],[48,49,64],[42,41,74],[214,212,207],[183,42,184],[210,169,211],[140,170,176],[104,105,69],[193,122,168],[50,123,187],[89,96,90],[66,65,107],[179,89,180],[119,101,120],[68,63,104],[234,93,227],[16,15,85],[209,129,49],[15,14,86],[107,55,9],[120,100,121],[153,145,22],[178,88,179],[197,6,196],[89,88,96],[135,138,136],[138,215,172],[218,115,219],[41,42,81],[5,195,51],[57,43,61],[208,171,199],[41,81,38],[224,53,225],[24,144,110],[105,52,66],[118,229,117],[227,34,234],[66,107,69],[10,109,151],[219,48,235],[183,62,191],[142,129,126],[116,111,143],[118,117,50],[223,222,52],[94,19,141],[222,221,65],[196,3,197],[45,220,44],[156,70,139],[188,122,245],[139,71,162],[149,170,150],[122,188,196],[206,216,92],[164,2,167],[242,141,241],[0,164,37],[11,72,12],[12,38,13],[70,63,71],[31,226,111],[36,101,205],[203,206,165],[126,209,217],[98,165,97],[237,220,218],[237,239,241],[210,214,169],[140,171,32],[241,125,237],[179,86,178],[180,85,179],[181,84,180],[182,83,181],[194,201,182],[177,137,132],[184,76,183],[185,61,184],[186,57,185],[216,212,186],[192,214,187],[139,34,156],[218,79,237],[147,123,177],[45,44,4],[208,201,32],[98,64,129],[192,213,138],[235,59,219],[141,242,97],[97,2,141],[240,75,235],[229,24,228],[31,25,226],[230,23,229],[231,22,230],[232,26,231],[233,112,232],[244,189,243],[189,221,190],[222,28,221],[223,27,222],[224,29,223],[225,30,224],[113,247,225],[99,60,240],[213,147,215],[60,20,166],[192,187,213],[243,112,244],[244,233,245],[245,128,188],[188,114,174],[134,131,220],[174,217,236],[236,198,134],[215,177,58],[156,143,124],[25,110,7],[31,228,25],[264,356,368],[0,11,267],[451,452,349],[267,302,269],[350,357,277],[350,452,357],[299,333,297],[396,175,377],[280,347,330],[269,303,270],[151,9,337],[344,278,360],[424,418,431],[270,304,409],[272,310,407],[322,270,410],[449,450,347],[432,422,434],[18,313,17],[291,306,375],[259,387,260],[424,335,418],[434,364,416],[391,423,327],[301,251,298],[275,281,4],[254,373,253],[375,307,321],[280,425,411],[200,421,18],[335,321,406],[321,320,405],[314,315,17],[423,426,266],[396,377,369],[270,322,269],[413,417,464],[385,386,258],[248,456,419],[298,284,333],[168,417,8],[448,346,261],[417,413,285],[326,327,328],[277,355,329],[309,392,438],[381,382,256],[279,429,360],[365,364,379],[355,277,437],[282,443,283],[281,275,363],[395,431,369],[299,297,337],[335,273,321],[348,450,349],[359,446,467],[283,293,282],[250,458,462],[300,276,383],[292,308,325],[283,276,293],[264,372,447],[346,352,340],[354,274,19],[363,456,281],[426,436,425],[380,381,252],[267,269,393],[421,200,428],[371,266,329],[432,287,422],[290,250,328],[385,258,384],[446,265,342],[386,387,257],[422,424,430],[445,342,276],[422,273,424],[306,292,307],[352,366,345],[268,271,302],[358,423,371],[327,294,460],[331,279,294],[303,271,304],[436,432,427],[304,272,408],[395,394,431],[378,395,400],[296,334,299],[6,351,168],[376,352,411],[307,325,320],[285,295,336],[320,319,404],[329,330,349],[334,293,333],[366,323,447],[316,15,315],[331,358,279],[317,14,316],[8,285,9],[277,329,350],[253,374,252],[319,318,403],[351,6,419],[324,318,325],[397,367,365],[288,435,397],[278,344,439],[310,272,311],[248,195,281],[375,273,291],[175,396,199],[312,311,268],[276,283,445],[390,373,339],[295,282,296],[448,449,346],[356,264,454],[337,336,299],[337,338,151],[294,278,455],[308,292,415],[429,358,355],[265,340,372],[352,346,280],[295,442,282],[354,19,370],[285,441,295],[195,248,197],[457,440,274],[301,300,368],[417,351,465],[251,301,389],[394,395,379],[399,412,419],[410,436,322],[326,2,393],[354,370,461],[393,164,267],[268,302,12],[312,268,13],[298,293,301],[265,446,340],[280,330,425],[322,426,391],[420,429,437],[393,391,326],[344,440,438],[458,459,461],[364,434,394],[428,396,262],[274,354,457],[317,316,402],[316,315,403],[315,314,404],[314,313,405],[313,421,406],[323,366,361],[292,306,407],[306,291,408],[291,287,409],[287,432,410],[427,434,411],[372,264,383],[459,309,457],[366,352,401],[1,274,4],[418,421,262],[331,294,358],[435,433,367],[392,289,439],[328,462,326],[94,2,370],[289,305,455],[339,254,448],[359,255,446],[254,253,449],[253,252,450],[252,256,451],[256,341,452],[414,413,463],[286,441,414],[286,258,441],[258,257,442],[257,259,443],[259,260,444],[260,467,445],[309,459,250],[305,289,290],[305,290,460],[401,376,435],[309,250,392],[376,411,433],[453,341,464],[357,453,465],[343,357,412],[437,343,399],[344,360,440],[420,437,456],[360,420,363],[361,401,288],[265,372,353],[390,339,249],[339,448,255],[255,339,448]].flat(),e0=[.5104879319667817,.33515610277652746,.5174233198165894,.43859300494194037,.5123749554157258,.406469448208809,.5423470318317414,.5244461464881898,.5190713584423066,.46557595014572145,.5194876372814179,.5006013351678849,.5178673148155213,.5855525898933411,.7009655416011811,.5918984371423721,.5193980515003205,.6528422343730926,.520683366060257,.689273599088192,.5248700261116028,.8232529717683792,.5099657952785492,.32301718473434454,.5088536620140076,.31080526888370513,.5081197202205658,.3013389307260514,.5072353065013886,.29900476515293123,.5073091566562653,.28442813932895666,.5065075337886811,.26649361431598667,.5061309516429902,.24778731942176818,.5031875848770142,.22179436564445493,.515326726436615,.4231037962436676,.5375777959823609,.4205444622039795,.8049442350864411,.6867966356873512,.6222659975290299,.570705144405365,.6496635556221009,.567776631116867,.6773027807474137,.5670208501815797,.7126377105712891,.5800703662633897,.5999099642038346,.5764724123477936,.674340370297432,.6495546865463258,.639536875486374,.6477413746714593,.703840109705925,.642201315164566,.7209078550338746,.6294069054722786,.7342745542526246,.5601695317029953,.6015644401311875,.18118685364723203,.7114282578229905,.598883952498436,.809715884923935,.5682615923881531,.7667155593633652,.5767241555452347,.6445030301809311,.45154162526130676,.541424173116684,.34213731765747074,.5359058856964112,.3113374251127243,.5710002213716507,.33134433805942537,.5891562283039093,.31890978991985325,.5585465461015702,.3096196609735489,.5759132236242295,.30601608335971836,.6229794204235077,.2713706839084626,.5398103773593903,.43802148282527925,.545369166135788,.46441581428051,.7616913348436356,.6473416510224344,.5914883643388749,.5243312466144563,.5945767045021058,.44076132655143746,.5964909076690674,.4544808346033096,.7225886166095734,.4498931097984314,.5443432211875916,.49703910827636727,.7029067009687424,.6777765545248986,.7391736537218094,.6677046212553979,.7836920201778412,.7359224516153335,.577455359697342,.6573990839719772,.6085408657789231,.6353888112306596,.6427326381206513,.298196165561676,.7550604224205018,.30743678390979773,.5732827365398407,.4262381809949875,.5523188143968583,.417594336271286,.6096987754106522,.29745593249797825,.6036115020513535,.2985246556997299,.7549919366836548,.6845966669917107,.592850747704506,.4273046988248826,.6501948565244675,.6762702855467797,.6582381755113602,.699515787065029,.682483646273613,.802994977235794,.768890205025673,.710366437137127,.6672395795583725,.752104974091053,.7775519520044327,.6584857258200645,.7920276552438736,.6709628927707671,.5397542297840119,.3256357330083847,.5643998861312867,.3199443298578262,.5826229482889176,.313130943775177,.5657853364944458,.42035281538963326,.606510478258133,.2980171996355057,.5952901721000672,.2918463486433029,.5999826073646546,.29865378022193906,.565356719493866,.4374908703565598,.570739108324051,.30172707617282873,.5532697021961213,.303354971408844,.532040822505951,.3026815611124039,.5385064661502839,.22311560392379765,.5377482950687409,.25083183526992797,.5373399734497071,.26933391273021695,.5351483404636384,.28629542768001554,.5317461371421814,.3004490631818772,.5704152762889863,.30009212374687194,.5761924862861634,.2931597578525544,.5817892730236054,.28451425909996036,.5862761169672013,.27445026516914367,.6169582635164261,.3500816184282303,.7930811375379563,.4456584650278092,.5136566936969758,.41420710563659674,.5836256474256516,.29897587478160864,.5893380820751191,.29504160165786747,.5458188831806183,.4063113230466843,.581692311167717,.41034119904041294,.5490593492984772,.4114610868692398,.6189475685358048,.5063568043708802,.6631498366594315,.48547921061515814,.5990702986717225,.44076220870018007,.7452016949653626,.7754116746783257,.729542288184166,.7380649703741073,.7152380675077439,.6996659177541733,.6012845069169999,.2532631474733353,.5908916622400284,.6924743655323982,.6002487272024155,.7558749470114707,.611236396431923,.817432113289833,.6991332352161408,.5705236423015594,.7608276635408402,.5389788854122162,.5859951555728913,.5837152945995332,.7452233761548996,.6138822454214097,.5740126550197602,.542653586268425,.5829357832670212,.45267452478408815,.7883433729410172,.5171645599603654,.7431249052286149,.5203535276651383,.7091684520244599,.5116798001527787,.6566549122333527,.5192352938652038,.6176983743906022,.532645167708397,.590181502699852,.5458893078565599,.5431278228759766,.5780327129364013,.7785866141319275,.4588600414991379,.7662802815437317,.614813904762268,.528258103132248,.42353384375572206,.5884005159139634,.49679056286811835,.8132390558719635,.5690749335289003,.5698921114206315,.5609081107378007,.5997681200504303,.4383326607942582,.7258545190095902,.5959577548503876,.5829301953315735,.4692867088317872,.7767194837331772,.37870833754539496,.5859857678413392,.5927838939428329,.5655010223388672,.4863545227050781,.7103684276342392,.24216726005077366,.7039464592933655,.21081999421119696,.7955554753541947,.45157338261604313,.7394011497497559,.27975760281085965,.8023439675569535,.6235768947005271,.6065513819456101,.1520459520816803,.5237656712532044,.4144193726778031,.6113508373498917,.4744607317447663,.7872020035982132,.5706054615974427,.6744208365678788,.5840893256664277,.6509357273578644,.5835042405128479,.599469143152237,.28584001839160916,.76683469414711,.4027401643991471,.5548133134841919,.11242247700691227,.6348527550697327,.15134210765361789,.6676738739013672,.17523885548114776,.5231557369232178,.758142014145851,.49590798020362853,.10746171355247497,.6282390981912613,.5856175380945206,.6072420954704285,.5888098138570785,.592762503027916,.5906054276227952,.7843813925981522,.61877524882555,.610203567147255,.6159668180346489,.6345708996057511,.625477318763733,.6599059730768204,.6266139122843744,.6838259130716324,.6209151762723923,.6978932946920395,.6127474161982536,.8138886868953705,.6332776087522507,.690067994594574,.587394626736641,.5115295231342316,.3814830261468887,.593753132224083,.3682318288087845,.5745513767004014,.43174642801284796,.5468618154525757,.38006519258022314,.5175330221652985,.6183956491947173,.6776301890611649,.20638245522975923,.6439310491085053,.1795444029569626,.5587406486272812,.13319884419441225,.7303948730230332,.25156523168087,.5936179041862488,.6020026791095734,.5595558166503907,.5354639637470247,.49903409481048583,.12705478847026824,.5986292988061905,.12926876127719883,.7810411036014557,.3901792484521866,.5526776045560837,.3004089254140854,.5582781463861466,.2904709684848786,.5625745087862015,.2769930589199066,.5656344175338746,.26021293580532073,.5736826092004776,.23544175803661344,.5897697389125824,.3026730704307556,.5960018962621689,.3050022739171982,.6013990819454194,.30801084220409397,.6334722220897675,.32613734483718876,.7345953911542893,.3890004771947861,.5586504369974137,.5622388321161271,.5686756849288941,.6147718372941018,.5835970371961594,.6114995065331459,.58382708132267,.30018893957138065,.7323651343584061,.3204736191034317,.5478970587253571,.6144195291399956,.5885591685771943,.20925473153591162,.5188342511653901,.5294416445493699,.5430448532104493,.5502454686164857,.5189176678657532,.5563708889484407,.5749752998352051,.4918947476148606,.5015926539897919,.1563655036687851,.5023517191410065,.19124654710292815,.5467969954013825,.1949619370698929,.6493796885013581,.2596786844730377,.6223085105419159,.4147812741994858,.6219283074140549,.2305004018545151,.6836527764797211,.41583852946758276,.6457133769989014,.38482945740222935,.7015091359615326,.3687519657611847,.5560723870992661,.1615346747636795,.5877480685710907,.4753766226768494,.672212439775467,.23758670270442966,.6372418433427811,.20715841531753537,.6714329898357392,.2934120523929596,.7559577107429505,.3546825754642487,.7028004407882691,.28965476036071774,.7641248583793641,.3323610144853592,.6633666038513184,.34586538851261145,.5732450067996979,.5168171036243439,.5740206122398377,.4420601803064346,.5862565368413926,.4328912365436554,.5658091634511948,.46056721985340127,.5935333251953125,.6414948242902756,.643502163887024,.6581727835536004,.6862205892801285,.6599488797783852,.71900634765625,.6517863023281099,.7387710094451905,.6366994085907935,.7436862468719483,.5870225805044174,.8067718029022217,.5102852332592012,.719052392244339,.549573050737381,.6912373930215836,.5426725524663925,.6540380597114563,.5452089506387712,.6191460520029068,.5529706466197968,.5933077514171601,.5624450343847276,.5760908752679825,.5711276936531067,.8037864595651627,.5079354095458986,.5832139283418656,.42433229863643646,.5602819353342057,.5111040878295898,.5571386992931366,.44193623840808877,.5406022548675538,.42711933732032775,.5550468444824219,.43675835609436037,.5743813246488572,.4152073520421982,.5367868125438691,.42474128484725954,.5321040332317353,.41727378547191624,.5769275009632111,.5919214832782747,.5631695121526719,.5864408034086228,.555830317735672,.5819090950489045,.7057080000638962,.6055842030048371,.7297580271959305,.614007951617241,.49450652599334716,.5258826154470444,.30584611296653746,.6040364730358123,.4885244846343994,.4224347966909409,.188004332780838,.7111089858412742,.3873521864414215,.5786778944730759,.3588928759098053,.5761974024772645,.32972376346588134,.5772378969192504,.29263614416122435,.5937507289648056,.4124107241630554,.5837435233592987,.3437161326408386,.6627882960438729,.3795058310031891,.6574259343743325,.3114838480949402,.657741964161396,.2904722273349762,.6461278694868089,.2668101370334625,.5759735572338105,.3916287899017334,.18396661460399627,.2956514835357666,.6133467811346054,.17441000342369078,.5913206297159195,.23045413494110106,.5952582108974458,.3695909559726715,.4586390632390976,.4777859032154083,.34189285218715665,.4799880862236023,.31095413148403167,.4436598002910614,.32987600147724155,.42009713053703307,.3173161882162094,.4536511182785034,.3079365211725235,.431768137216568,.30468503117561346,.37606616616249083,.27423435926437384,.49449856877326964,.4396295297145844,.4917183697223663,.4654612708091736,.2524005055427551,.6652582022547722,.4289156973361969,.5291139262914657,.4268526315689087,.44427823305130004,.42474048137664794,.45817836105823523,.2809027314186096,.46354105353355407,.49383275508880614,.49885324716567997,.3271153151988983,.6924127805233002,.28349151015281676,.6843035730719567,.22369228601455687,.7584647151827812,.4591939032077789,.6617383736371993,.40913431644439696,.6426751393079757,.35715471506118773,.30240225076675414,.1987894058227539,.3237072455883026,.4482724845409393,.42876928627491,.4697932779788971,.4196605491638184,.39104996919631957,.2959751355648041,.3971476137638092,.29665681600570676,.26748310327529906,.7016683402657509,.4251814365386963,.4304117369651795,.3845069885253906,.6860294970870018,.3804918110370636,.7099798905849457,.35481985211372374,.8164000543951988,.2475942552089691,.730037857890129,.37163846492767333,.7639490339159964,.23443256616592406,.677293357551098,.2116762578487396,.6924480664730073,.4783883273601532,.32515374898910526,.44883744716644286,.3184075164794922,.42566208839416503,.31092865943908693,.45405327081680297,.4228447753190994,.3932682454586029,.2964416819810867,.4071350872516632,.290535255074501,.40034677386283873,.29673135757446295,.4610676050186157,.44076672971248626,.4361940503120422,.3005809444189072,.45694692730903624,.30211268544197084,.4812539994716644,.30183855772018436,.46574126482009887,.22492808878421783,.47153966426849364,.25130698263645174,.4740802526473999,.2694691020250321,.4768980026245117,.28705804526805884,.48090897798538207,.2996276724338532,.43501039147377013,.2992805469036102,.4293511092662811,.2932880002260208,.4233271360397339,.28415390133857726,.41761367321014403,.27479386210441586,.39445154666900634,.3538810330629349,.16652100086212157,.4672100204229355,.4183532476425171,.29779809594154355,.41378535628318786,.29400077641010286,.47695048451423644,.40816306352615356,.43489335775375365,.41207451105117804,.473628032207489,.41300628066062933,.3975309908390045,.5133917200565339,.34924407601356505,.4949547010660172,.4189921498298645,.44448454558849343,.27738903760910033,.7946441161632538,.29866914749145507,.7549788492918015,.3170970857143402,.7143296006321906,.39919986128807067,.2556870716810226,.4517517566680908,.6986333075165749,.44375439286231994,.7623249980807305,.4346091330051422,.8250303360819817,.3058603286743164,.5830274391174317,.235262531042099,.5560186910629272,.4279192566871643,.5892863947153091,.2622906148433685,.6309370476007461,.45053591132164,.5464099961519242,.44443781971931456,.45605955004692084,.20207332372665404,.5370177584886551,.25663607120513915,.5358516681194305,.29581143260002135,.5243526387214661,.3525206625461578,.5284005987644196,.39442025423049926,.5392975616455078,.42579718232154845,.5511161494255066,.49076547026634215,.5801296907663345,.20957841277122496,.47626241028308874,.23929433822631835,.6331100556254388,.5024659812450409,.4247821944952011,.432133811712265,.5009672063589097,.15906893014907836,.5940177994966507,.4492078602313995,.5648097443580629,.41579030752182006,.4419312763214112,.2798506796360016,.6113770532608032,.44294874668121337,.47275686144828805,.1783646523952484,.3979667472839356,.42730753421783446,.5981915760040284,.46777849197387694,.4889896112680436,.26486464142799376,.2499848622083664,.26026474237442015,.21801546096801755,.17761032581329345,.47220298230648045,.23215438723564147,.29172880232334136,.1906857371330261,.6463678139448166,.3811529755592346,.1541750180721283,.5033367156982422,.41569132089614874,.40528597235679625,.4797393995523453,.2049500823020935,.59123428940773,.3344294309616089,.5942869651317597,.35825960636138915,.5929379391670226,.4015964150428772,.28595646202564245,.21618961095809935,.4194869863986969,.43316020369529723,.11274379968643189,.34098224639892577,.1526068884134293,.3026312172412872,.17882644414901733,.3831480026245117,.5945327538251877,.40483357310295104,.5966399866342544,.419615763425827,.5973996269702913,.2160478115081787,.6388220790028571,.40051244497299193,.6220169800519944,.37555851340293883,.6336345481872558,.3499592423439026,.6373451414704323,.32648445963859557,.6342222797870636,.3108482539653778,.6266552078723908,.16784127354621886,.6591027337312698,.3177972316741943,.5982361245155334,.4220952868461609,.3706905978918075,.4483287215232849,.43451813936233524,.4753179132938385,.38104525983333587,.30160035490989684,.21209139108657843,.33879016637802123,.18215490162372588,.4353105306625366,.1335425513982773,.22725783586502074,.2627154815196991,.4187734603881836,.6076370733976364,.471796441078186,.5377814787626267,.3835057199001312,.13003402531147007,.18837626576423644,.4081169712543488,.4558822691440582,.3006539422273636,.45070006251335143,.29020555198192594,.44506027102470397,.276558490395546,.441160249710083,.26132532536983494,.42807196378707885,.237567846775055,.413764613866806,.300301303267479,.40849854350090026,.3033808845281601,.40325652360916137,.3060078132152558,.3719393193721771,.3296157675981522,.2585947096347809,.4027331072092057,.4712364852428436,.5652889716625213,.4525624096393585,.6187475714087487,.43274884223937987,.6166740807890891,.4197424530982971,.2985221195220948,.25107048749923705,.3324888157844544,.48253663182258605,.6165598976612092,.40862621665000914,.21186126053333282,.4922338902950287,.5517929780483246,.4509614884853363,.49562425196170806,.45456190705299376,.19553345918655402,.3438455045223236,.2646773803234101,.39053775668144225,.41997271955013277,.3724295377731323,.2345973211526871,.32362549304962157,.42551548063755035,.3627460479736328,.39166522800922393,.2982912242412567,.37974442124366764,.44216259121894835,.16258520364761353,.4327280104160309,.47912641644477844,.31535937190055846,.24389803588390352,.35182328820228576,.2114975947141648,.3249718725681305,.3009969878196716,.22358919978141784,.36996547162532806,.2854694604873657,.29810287833213805,.2033691883087158,.34796677708625795,.3403308272361755,.35305335700511936,.4522935628890991,.520306442975998,.45397244691848754,.4453733104467393,.4360526978969574,.4358169931173325,.4670851409435272,.463337938785553,.430365788936615,.6462299782037735,.3818374752998352,.6678127396106721,.3376319885253906,.6731280717253685,.3007634162902832,.6677066612243652,.2756028652191162,.6542664083838463,.25909878611564635,.6035455572605133,.17238967418670653,.5322284626960754,.28373541235923766,.5632325726747514,.3148886442184448,.5544471430778504,.35481600761413573,.554238184094429,.39195387363433837,.5604119020700455,.4199950277805328,.5684955823421478,.4408359706401825,.5755523312091828,.1607656955718994,.5315613377094268,.43638269901275634,.4271241891384125,.4722903251647949,.513996543288231,.4744726598262787,.4443250972032547,.48785080313682555,.4292660462856293,.4740713119506836,.43900651216506964,.443528014421463,.4168834346532822,.49345849752426146,.4267724323272705,.49457465410232543,.4177086848020554,.438745903968811,.5969951617717744,.4560649275779724,.5900395292043685,.4670982837677002,.5844003933668136,.3021982192993164,.6197374525666237,.27794389724731444,.6304952013492584,.6290517628192902,.6082503873109817,.601810845732689,.608769752383232,.6309714198112488,.6319623801112175,.657788547873497,.6077486652135848,.6277183473110199,.5834045577049256,.333698707818985,.6181534442305565,.3082489252090454,.6187389704585076,.3358501076698303,.6419334176182747,.3613401234149933,.618020570576191,.33353258967399596,.5936576622724534],P=468,t0=P*3,r0={type:"standard",color:"#ffffff",opacity:1,wireframe:!1,roughness:1,metalness:0},O=({material:e,faceIndex:t=0,numFaces:n,visible:r=!0,children:o})=>{const{ready:i,node:d}=L(S.XRModel.FACE_TRACKER,n===void 0?void 0:{numFaces:n}),{camera:l}=v.useThree(),c=s.useRef(null),A=s.useRef(null),E=s.useRef(null),p=s.useRef(null),u=s.useRef(null),f=s.useRef(new b.Vector3),h=s.useMemo(()=>{const R=new Uint16Array($),M=new b.BufferAttribute(R,1),y=new b.Float32BufferAttribute(e0,2),C=new Float32Array(t0),a=new b.Float32BufferAttribute(C,3);return a.setUsage(b.DynamicDrawUsage),{indexAttr:M,uvAttr:y,positionAttr:a,positions:C}},[]);s.useEffect(()=>{p.current=h.indexAttr,u.current=h.uvAttr,E.current=h.positionAttr,A.current=h.positions;const R=c.current;if(R){const M=R.geometry;M.setAttribute("position",h.positionAttr),M.setAttribute("uv",h.uvAttr),M.setIndex(h.indexAttr)}return()=>{p.current=null,u.current=null,E.current=null,A.current=null}},[h]),v.useFrame(()=>{var m;if(!i||!d||!c.current)return;const{detectionResults:R}=d,M=(m=R==null?void 0:R.faceLandmarks)==null?void 0:m[t],y=c.current.geometry,C=A.current,a=E.current;if(!M||M.length===0||!C||!a){y.drawRange.count!==0&&y.setDrawRange(0,0);return}y.getAttribute("position")!==a&&(y.setAttribute("position",a),y.setAttribute("uv",u.current),y.setIndex(p.current)),y.drawRange.count===0&&y.setDrawRange(0,1/0),Q(M,P,C,l,G,f.current),a.needsUpdate=!0,y.computeVertexNormals()});const F=o!=null&&o!==!1;return T.jsxs("mesh",{material:e,ref:c,visible:r,children:[T.jsx("bufferGeometry",{}),!e&&!F&&T.jsx(U,{settings:r0,materialProps:{attach:"material",transparent:!0,depthWrite:!1,side:b.DoubleSide,needsUpdate:!0}}),!e&&F?o:null]})};O.displayName="FaceMesh";const n0=(e,t,n)=>!!(n&&n>0&&e-t<1/n),N={"face.forehead":10,"face.noseTip":1,"face.chin":152,"face.leftEyeOuter":263,"face.rightEyeOuter":33,"face.leftCheek":425,"face.rightCheek":205,"face.mouthCenter":13,"face.leftEarlobe":454,"face.rightEarlobe":234},s0={"face.center":[10,152,234,454],"face.leftEye":[263,362,387,373],"face.rightEye":[33,133,158,145]},K=(e,t=0)=>Number.isFinite(e)?e:t,w=e=>Math.max(-1,Math.min(1,K(e))),o0={x:0,y:0,z:0},H=(e,t,n=o0,r={x:0,y:0,z:0,visibility:0})=>{const o=N[e];if(o!==void 0){const u=t[o];return u?Object.assign(r,u):null}const i=s0[e];if(i){r.x=0,r.y=0,r.z=0;for(const u of i){const f=t[u];if(!f)return null;r.x+=f.x,r.y+=f.y,r.z+=f.z}return r.x/=i.length,r.y/=i.length,r.z/=i.length,r.visibility=1,r}if(e!=="face.custom"||t.length===0)return null;let d=1/0,l=1/0,c=-1/0,A=-1/0,E=0;for(const u of t)d=Math.min(d,u.x),l=Math.min(l,u.y),c=Math.max(c,u.x),A=Math.max(A,u.y),E+=u.z;const p=c-d;return r.x=(d+c)*.5-w(n.x)*p*.5,r.y=(l+A)*.5-w(n.y)*(A-l)*.5,r.z=E/t.length-K(n.z)*p,r.visibility=1,r},c0={left:N["face.leftEyeOuter"],right:N["face.rightEyeOuter"]},k=s.createContext(null),i0=()=>s.useContext(k),u0=({faceIndex:e=0,numFaces:t,scaleWithFace:n=!1,followFaceRoll:r=!0,targetFps:o,active:i=!0,children:d})=>{const l=s.useRef(!1),c=s.useRef(null),A=s.useMemo(()=>{if(!(t===void 0&&o===void 0))return{...t===void 0?{}:{numFaces:t},...o===void 0?{}:{targetFps:o}}},[t,o]),{ready:E,node:p}=L(S.XRModel.FACE_TRACKER,A,i),{camera:u}=v.useThree(),f=s.useRef(u);f.current!==u&&(f.current=u,l.current=!1);const h=s.useRef(null),F=s.useRef({x:0,y:0,z:0,visibility:0});v.useFrame(()=>{if(!E||!p||!c.current)return;h.current=p,!l.current&&f.current&&(p.setCamera(f.current,e),l.current=!0);const a=p.getFace(e);if(!a){c.current.visible=!1;return}c.current.visible=!0;const{position:m,rotation:x,scale:_}=a.transform;c.current.position.set(m.x,m.y,m.z),c.current.rotation.set(x.x,x.y,r?x.z:0),n?c.current.scale.set(_.x,_.y,_.z):c.current.scale.set(1,1,1)});const R=s.useCallback((a,m)=>{var g,I;const x=h.current,_=(I=(g=x==null?void 0:x.detectionResults)==null?void 0:g.faceLandmarks)==null?void 0:I[e];if(!_||_.length===0)return null;const D=H(a,_,m,F.current);return D?{position:S.feedToWorld(D,f.current)}:null},[e]),M=s.useMemo(()=>({type:"face",resolveLandmark:R}),[R]);let y;const C=[];return s.Children.forEach(d,a=>{var m,x;s.isValidElement(a)&&(((m=a.type)==null?void 0:m.displayName)==="FaceTracker.Mesh"||((x=a.type)==null?void 0:x.displayName)==="FaceMesh")?y=s.cloneElement(a,{faceIndex:e,numFaces:t}):C.push(a)}),T.jsxs(k.Provider,{value:M,children:[T.jsx("group",{ref:c,renderOrder:X.RENDER_LAYERS.TRACKED,children:C}),y]})},q=e=>T.jsx(O,{...e});q.displayName="FaceTracker.Mesh";const z=u0;z.Mesh=q;const a0=z;exports.FACE_EYE_DISTANCE_LANDMARKS=c0;exports.FACE_LANDMARK_INDICES=N;exports.FaceMesh=O;exports.FaceTracker=z;exports.HeadTracker=a0;exports.MeshMaterial=U;exports.TrackerContext=k;exports.projectLandmarkWithDepth=J;exports.resolveFaceAnchorPoint=H;exports.shouldSkipUpdate=n0;exports.transformFaceMeshLandmark=Z;exports.useTrackerContext=i0;exports.useXRModel=L;