framefields 2.0.3 → 2.0.6
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.
- package/README.md +4 -26
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-DbxiKp5p.mjs → audio-D6enPyAG.mjs} +4 -4
- package/dist/{audio-DbxiKp5p.mjs.map → audio-D6enPyAG.mjs.map} +1 -1
- package/dist/{audio-Dvwwz8xU.d.mts → audio-a6pY05g2.d.mts} +3 -3
- package/dist/{audio-Dvwwz8xU.d.mts.map → audio-a6pY05g2.d.mts.map} +1 -1
- package/dist/{dist-Bx6J0VcM.mjs → dist-B9Afsv83.mjs} +47 -2
- package/dist/dist-B9Afsv83.mjs.map +1 -0
- package/dist/{dist-DKm2IyEJ.mjs → dist-DzUJmIHt.mjs} +2 -2
- package/dist/dist-DzUJmIHt.mjs.map +1 -0
- package/dist/{dist-CGIme1vZ.mjs → dist-JkiL-qy7.mjs} +60 -17
- package/dist/dist-JkiL-qy7.mjs.map +1 -0
- package/dist/{dist-DuIv211_.mjs → dist-sHqWCB9M.mjs} +215 -127
- package/dist/dist-sHqWCB9M.mjs.map +1 -0
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +25 -25
- package/dist/effects-l0T61DPU.mjs +2086 -0
- package/dist/effects-l0T61DPU.mjs.map +1 -0
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-CwwIhe1o.mjs → fonts-CuG-05-_.mjs} +13 -2
- package/dist/fonts-CuG-05-_.mjs.map +1 -0
- package/dist/{index-CnAk1hTw.d.mts → index-BJUS4Nx6.d.mts} +2 -2
- package/dist/index-BJUS4Nx6.d.mts.map +1 -0
- package/dist/{index-D7llSs-m.d.mts → index-BJx_Qxc_.d.mts} +2510 -125
- package/dist/{index-D7llSs-m.d.mts.map → index-BJx_Qxc_.d.mts.map} +1 -1
- package/dist/{index-D1ZsMpke.d.mts → index-BLbUQolI.d.mts} +3 -3
- package/dist/{index-D1ZsMpke.d.mts.map → index-BLbUQolI.d.mts.map} +1 -1
- package/dist/{index-D2wJqSl5.d.mts → index-Bi2nRZ_g.d.mts} +3 -3
- package/dist/{index-D2wJqSl5.d.mts.map → index-Bi2nRZ_g.d.mts.map} +1 -1
- package/dist/{index-BMVVmc4G.d.mts → index-CZChQhXZ.d.mts} +2 -2
- package/dist/index-CZChQhXZ.d.mts.map +1 -0
- package/dist/{index-DiSKzDGR.d.mts → index-CbzEM_o6.d.mts} +8 -1
- package/dist/index-CbzEM_o6.d.mts.map +1 -0
- package/dist/{index-D2jDC7O5.d.mts → index-WIPHLy5m.d.mts} +31 -2
- package/dist/index-WIPHLy5m.d.mts.map +1 -0
- package/dist/index.d.mts +111 -69
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +52 -45
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-D7TqF9i_.mjs → preview-CcooLR2s.mjs} +74 -66
- package/dist/preview-CcooLR2s.mjs.map +1 -0
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-H5BPCY7N.mjs → chunk-24DXIKXL.mjs} +2 -2
- package/dist/preview-engine/{chunk-QP2NI4XD.mjs → chunk-2XXICKQV.mjs} +1 -1
- package/dist/preview-engine/{chunk-EDIZNO3P.mjs → chunk-3ROJ7JVY.mjs} +1 -1
- package/dist/preview-engine/chunk-45JOFIHE.mjs +8 -0
- package/dist/preview-engine/{chunk-HAXK42HG.mjs → chunk-5NYKHIQN.mjs} +10 -10
- package/dist/preview-engine/{chunk-VSSB73UU.mjs → chunk-66NVL4BN.mjs} +2 -2
- package/dist/preview-engine/{chunk-AOLAHYVV.mjs → chunk-6JW37VJA.mjs} +1 -1
- package/dist/preview-engine/chunk-7MJVROKR.mjs +98 -0
- package/dist/preview-engine/{chunk-Z4ERCLNF.mjs → chunk-7NVDTELW.mjs} +1 -1
- package/dist/preview-engine/{chunk-SXX7HX34.mjs → chunk-AMBSW6OA.mjs} +2 -2
- package/dist/preview-engine/{chunk-UDNCEHUI.mjs → chunk-BE3CEVJB.mjs} +1 -1
- package/dist/preview-engine/{chunk-CA5N7JRZ.mjs → chunk-BQ65MU6H.mjs} +1 -1
- package/dist/preview-engine/{chunk-LEEZXHQO.mjs → chunk-BWDARDO6.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZX6APG6E.mjs → chunk-CXFEQ5PM.mjs} +1 -1
- package/dist/preview-engine/chunk-D3TETPLI.mjs +5 -0
- package/dist/preview-engine/{chunk-B6PLCMBM.mjs → chunk-DMWSTYFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-6ZOXGAYA.mjs → chunk-EJTGJVUA.mjs} +2 -2
- package/dist/preview-engine/{chunk-3O5OKR6D.mjs → chunk-EQ4QZRXB.mjs} +2 -2
- package/dist/preview-engine/{chunk-I4FH6HYU.mjs → chunk-FE6RSVKZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-U446SQP3.mjs → chunk-GHMCGTJ2.mjs} +1 -1
- package/dist/preview-engine/{chunk-M2GRYRLM.mjs → chunk-HPIULG7P.mjs} +1 -1
- package/dist/preview-engine/{chunk-G3HW4VER.mjs → chunk-HRIKNYPF.mjs} +1 -1
- package/dist/preview-engine/{chunk-G76HSKOS.mjs → chunk-IGFT3XLN.mjs} +1 -1
- package/dist/preview-engine/{chunk-NWRSVVTF.mjs → chunk-JQ4WY6BZ.mjs} +1 -1
- package/dist/preview-engine/chunk-KNZU3Z2F.mjs +3 -0
- package/dist/preview-engine/{chunk-JWNHTRED.mjs → chunk-LIHUEYI5.mjs} +2 -2
- package/dist/preview-engine/{chunk-DPPH3NK2.mjs → chunk-NRHSNPZV.mjs} +1 -1
- package/dist/preview-engine/{chunk-BUIQ5TUH.mjs → chunk-OWOSYNMF.mjs} +1 -1
- package/dist/preview-engine/chunk-OZVCWK27.mjs +418 -0
- package/dist/preview-engine/{chunk-D5PHI6ET.mjs → chunk-PO4VAAQC.mjs} +1 -1
- package/dist/preview-engine/{chunk-LP3EP33S.mjs → chunk-POPVFC5P.mjs} +1 -1
- package/dist/preview-engine/chunk-PQD5UPHG.mjs +5 -0
- package/dist/preview-engine/{chunk-SA3JUR6D.mjs → chunk-QGBSLNFI.mjs} +1 -1
- package/dist/preview-engine/{chunk-H2F5NVQ6.mjs → chunk-QM3XFEJN.mjs} +1 -1
- package/dist/preview-engine/{chunk-L62MRHGZ.mjs → chunk-R3ZH7YF3.mjs} +1 -1
- package/dist/preview-engine/{chunk-V7ZVVUQU.mjs → chunk-R6YNSBKL.mjs} +1 -1
- package/dist/preview-engine/{chunk-GYG2IIBR.mjs → chunk-RJJRPL42.mjs} +1 -1
- package/dist/preview-engine/chunk-S3P3MJYU.mjs +1 -0
- package/dist/preview-engine/chunk-SUUUYXXT.mjs +1 -0
- package/dist/preview-engine/{chunk-55CCFPUX.mjs → chunk-TNZENER3.mjs} +1 -1
- package/dist/preview-engine/chunk-V6VU46ZG.mjs +52 -0
- package/dist/preview-engine/{chunk-5XDHHOF2.mjs → chunk-XCYFPA34.mjs} +1 -1
- package/dist/preview-engine/{chunk-EHIIT4ZR.mjs → chunk-XFYXT76H.mjs} +1 -1
- package/dist/preview-engine/{chunk-V3H7WWOT.mjs → chunk-XLFYM7KH.mjs} +2 -2
- package/dist/preview-engine/{chunk-D7MZHP2Y.mjs → chunk-XSMK5E2V.mjs} +1 -1
- package/dist/preview-engine/{chunk-5UP7FSGT.mjs → chunk-Y6FEU4TV.mjs} +1 -1
- package/dist/preview-engine/{chunk-HXMDPMLB.mjs → chunk-YG35X5R5.mjs} +1 -1
- package/dist/preview-engine/{chunk-KZOLCZIV.mjs → chunk-YITWSOG4.mjs} +1 -1
- package/dist/preview-engine/{chunk-4BEJJKEU.mjs → chunk-YK4XHUP4.mjs} +7 -7
- package/dist/preview-engine/chunk-ZNGOAGAI.mjs +1 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +95 -87
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +1 -0
- package/dist/preview-engine/renderers-47UITXLZ.mjs +1 -0
- package/dist/preview-engine/renderers-4AHH6BHF.mjs +1 -0
- package/dist/preview-engine/renderers-54AQK6RF.mjs +1 -0
- package/dist/preview-engine/renderers-6PRVCTYV.mjs +1 -0
- package/dist/preview-engine/{renderers-GUKQUMGG.mjs → renderers-B52QT6MT.mjs} +1 -1
- package/dist/preview-engine/{renderers-AGMH5CRH.mjs → renderers-BE6RVJSE.mjs} +1 -1
- package/dist/preview-engine/renderers-BMM2BH56.mjs +1 -0
- package/dist/preview-engine/{renderers-YWRP23SZ.mjs → renderers-CAUWP4XH.mjs} +2 -2
- package/dist/preview-engine/renderers-CHJWUJVI.mjs +1 -0
- package/dist/preview-engine/renderers-CHOGQHVQ.mjs +1 -0
- package/dist/preview-engine/renderers-DEYDSGJX.mjs +1 -0
- package/dist/preview-engine/renderers-DZTNRCR7.mjs +1 -0
- package/dist/preview-engine/{renderers-BHVPLYNN.mjs → renderers-E3JYRLSD.mjs} +1 -1
- package/dist/preview-engine/renderers-ELO3KWTK.mjs +1 -0
- package/dist/preview-engine/{renderers-YKUQUCTO.mjs → renderers-F2KJNDWA.mjs} +1 -1
- package/dist/preview-engine/renderers-FCV4COVB.mjs +1 -0
- package/dist/preview-engine/{renderers-F2NFJI5L.mjs → renderers-GC7EGB5Z.mjs} +1 -1
- package/dist/preview-engine/renderers-GXCRINGC.mjs +1 -0
- package/dist/preview-engine/renderers-GYJTBVV2.mjs +1 -0
- package/dist/preview-engine/renderers-JA4SLMG3.mjs +1 -0
- package/dist/preview-engine/renderers-JLN77CFZ.mjs +1 -0
- package/dist/preview-engine/{renderers-6BJA6MSU.mjs → renderers-JQHUBWLL.mjs} +1 -1
- package/dist/preview-engine/{renderers-LX654SZ3.mjs → renderers-KBFW7B5F.mjs} +1 -1
- package/dist/preview-engine/{renderers-LK3NRMGR.mjs → renderers-KCP4TFHG.mjs} +1 -1
- package/dist/preview-engine/renderers-KS4HPV6Q.mjs +1 -0
- package/dist/preview-engine/renderers-LJRJMFCR.mjs +1 -0
- package/dist/preview-engine/renderers-LPAPZ5QS.mjs +1 -0
- package/dist/preview-engine/renderers-N5UPJY73.mjs +1 -0
- package/dist/preview-engine/renderers-NS3AIJVG.mjs +1 -0
- package/dist/preview-engine/renderers-OBMTU3QY.mjs +1 -0
- package/dist/preview-engine/{renderers-ZPWOUWZJ.mjs → renderers-PW4OJWHF.mjs} +1 -1
- package/dist/preview-engine/renderers-PXGLEFZO.mjs +1 -0
- package/dist/preview-engine/{renderers-7AO5746S.mjs → renderers-Q2ZDD5K2.mjs} +1 -1
- package/dist/preview-engine/renderers-Q3MD34JN.mjs +1 -0
- package/dist/preview-engine/renderers-QECJP22T.mjs +1 -0
- package/dist/preview-engine/{renderers-R3XEYD5V.mjs → renderers-R5WSHETG.mjs} +4 -4
- package/dist/preview-engine/renderers-RXGNA2Q7.mjs +1 -0
- package/dist/preview-engine/renderers-TG62LZTF.mjs +1 -0
- package/dist/preview-engine/{renderers-AHSGP6LY.mjs → renderers-TUYQLKHJ.mjs} +1 -1
- package/dist/preview-engine/renderers-VTTGFO55.mjs +1 -0
- package/dist/preview-engine/{renderers-UTFXZE3G.mjs → renderers-WG7QBD4D.mjs} +1 -1
- package/dist/preview-engine/{renderers-VGU3LNLT.mjs → renderers-WLH4HRUE.mjs} +1 -1
- package/dist/preview-engine/{renderers-5QYK6766.mjs → renderers-WSMLLSWX.mjs} +1 -1
- package/dist/preview-engine/renderers-XFC6ZPO5.mjs +1 -0
- package/dist/preview-engine/{renderers-UWPH7HBH.mjs → renderers-XUHRY3XH.mjs} +1 -1
- package/dist/preview-engine/renderers-YAOB5XU6.mjs +1 -0
- package/dist/preview-engine/renderers-YTB4FOHT.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Cjva0Nw2.mjs → program-DPFDbeL9.mjs} +12 -7
- package/dist/{program-Cjva0Nw2.mjs.map → program-DPFDbeL9.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-DG3VnR50.mjs → renderer--akPySto.mjs} +2 -2
- package/dist/{renderer-DG3VnR50.mjs.map → renderer--akPySto.mjs.map} +1 -1
- package/dist/{renderer-B8ugHLDi.mjs → renderer-0ty5QtXg.mjs} +9 -8
- package/dist/renderer-0ty5QtXg.mjs.map +1 -0
- package/dist/renderer-145WIXyW.mjs +3 -0
- package/dist/{renderer-DjYRCzzV.mjs → renderer-7v-ZNKEJ.mjs} +2 -2
- package/dist/{renderer-DjYRCzzV.mjs.map → renderer-7v-ZNKEJ.mjs.map} +1 -1
- package/dist/renderer-9W8q4Y8D.mjs +3 -0
- package/dist/{renderer-8dDNjgzG.mjs → renderer-B1IXTeF2.mjs} +2 -2
- package/dist/{renderer-8dDNjgzG.mjs.map → renderer-B1IXTeF2.mjs.map} +1 -1
- package/dist/{renderer-CBdqOoTN.mjs → renderer-B52Y2SDC.mjs} +1 -1
- package/dist/renderer-B5HBViEG.mjs +3 -0
- package/dist/renderer-B7naoaVH.mjs +3 -0
- package/dist/{renderer-z6Qb5Z-W.mjs → renderer-BD6Jkc8j.mjs} +2 -2
- package/dist/{renderer-z6Qb5Z-W.mjs.map → renderer-BD6Jkc8j.mjs.map} +1 -1
- package/dist/renderer-BHYmRBem.mjs +3 -0
- package/dist/{renderer-Daa-Af8y.mjs → renderer-BHsEOp1I.mjs} +2 -2
- package/dist/{renderer-Daa-Af8y.mjs.map → renderer-BHsEOp1I.mjs.map} +1 -1
- package/dist/renderer-BL51bhvQ.mjs +3 -0
- package/dist/{renderer-9ZcinEHr.mjs → renderer-BNBh4omF.mjs} +2 -2
- package/dist/{renderer-9ZcinEHr.mjs.map → renderer-BNBh4omF.mjs.map} +1 -1
- package/dist/{renderer-Bmt3fpzg.mjs → renderer-BShK_xMJ.mjs} +1 -1
- package/dist/{renderer-aH8p3zLE.mjs → renderer-BUJ6uaJE.mjs} +3 -3
- package/dist/{renderer-aH8p3zLE.mjs.map → renderer-BUJ6uaJE.mjs.map} +1 -1
- package/dist/{renderer-BXDrwZNT.mjs → renderer-BV_d3D_3.mjs} +3 -3
- package/dist/{renderer-BXDrwZNT.mjs.map → renderer-BV_d3D_3.mjs.map} +1 -1
- package/dist/{renderer-B5Tq5MWB.mjs → renderer-BXWu8aHU.mjs} +3 -3
- package/dist/{renderer-B5Tq5MWB.mjs.map → renderer-BXWu8aHU.mjs.map} +1 -1
- package/dist/{renderer-DDp7_TUi.d.mts → renderer-Bal8734U.d.mts} +2 -2
- package/dist/{renderer-DDp7_TUi.d.mts.map → renderer-Bal8734U.d.mts.map} +1 -1
- package/dist/{renderer-BwE5dnyL.mjs → renderer-BbwOEawB.mjs} +2 -2
- package/dist/{renderer-BwE5dnyL.mjs.map → renderer-BbwOEawB.mjs.map} +1 -1
- package/dist/renderer-BfvBHHNr.mjs +3 -0
- package/dist/{renderer-BcckaXum.mjs → renderer-BgrDGRNW.mjs} +2 -2
- package/dist/{renderer-BcckaXum.mjs.map → renderer-BgrDGRNW.mjs.map} +1 -1
- package/dist/{renderer-CkLD7Lp7.mjs → renderer-BhfFVqCx.mjs} +2 -2
- package/dist/{renderer-CkLD7Lp7.mjs.map → renderer-BhfFVqCx.mjs.map} +1 -1
- package/dist/{renderer-Y7-Us00q.mjs → renderer-Bl9C9lIo.mjs} +1 -1
- package/dist/{renderer-CuppzplW.mjs → renderer-BpTwFaja.mjs} +3 -3
- package/dist/{renderer-CuppzplW.mjs.map → renderer-BpTwFaja.mjs.map} +1 -1
- package/dist/{renderer-BBweieq9.mjs → renderer-Bpf8EGY1.mjs} +2 -2
- package/dist/{renderer-BBweieq9.mjs.map → renderer-Bpf8EGY1.mjs.map} +1 -1
- package/dist/renderer-ByxrzTRg.mjs +3 -0
- package/dist/{renderer-1ccLpvz3.mjs → renderer-C-F91lPu.mjs} +2 -2
- package/dist/{renderer-1ccLpvz3.mjs.map → renderer-C-F91lPu.mjs.map} +1 -1
- package/dist/{renderer-CeF66MG3.mjs → renderer-C5lJvf-h.mjs} +2 -2
- package/dist/{renderer-CeF66MG3.mjs.map → renderer-C5lJvf-h.mjs.map} +1 -1
- package/dist/renderer-CDirzReW.mjs +3 -0
- package/dist/renderer-CGCmbeJ2.mjs +3 -0
- package/dist/renderer-CL3evUmF.mjs +3 -0
- package/dist/{renderer-NYcVjCOi.mjs → renderer-CLUPc9do.mjs} +3 -3
- package/dist/{renderer-NYcVjCOi.mjs.map → renderer-CLUPc9do.mjs.map} +1 -1
- package/dist/{renderer-B6YiOv7l.mjs → renderer-CLWAbaCS.mjs} +9 -8
- package/dist/renderer-CLWAbaCS.mjs.map +1 -0
- package/dist/{renderer-DWvg6ZKK.mjs → renderer-CM5c8a7B.mjs} +8 -7
- package/dist/renderer-CM5c8a7B.mjs.map +1 -0
- package/dist/renderer-CO0KsnEg.mjs +3 -0
- package/dist/renderer-COO44HDO.mjs +3 -0
- package/dist/renderer-C_9SIgZX.mjs +3 -0
- package/dist/{renderer-B0DTz9Fr.mjs → renderer-Cgy1H0Ql.mjs} +2 -2
- package/dist/{renderer-B0DTz9Fr.mjs.map → renderer-Cgy1H0Ql.mjs.map} +1 -1
- package/dist/{renderer-D9lcIxrz.mjs → renderer-CmMNU1-P.mjs} +9 -9
- package/dist/renderer-CmMNU1-P.mjs.map +1 -0
- package/dist/{renderer-VHpQTPbr.mjs → renderer-Cn-p1SyO.mjs} +34 -18
- package/dist/renderer-Cn-p1SyO.mjs.map +1 -0
- package/dist/renderer-CntaTaNq.mjs +3 -0
- package/dist/{renderer-BusX07ZE.mjs → renderer-CsE9ztUa.mjs} +3 -3
- package/dist/{renderer-BusX07ZE.mjs.map → renderer-CsE9ztUa.mjs.map} +1 -1
- package/dist/renderer-CtVkU_GA.mjs.map +1 -1
- package/dist/renderer-Cv9JLpL6.mjs +3 -0
- package/dist/{renderer-x2s9LmVL.mjs → renderer-D-4Yh-RK.mjs} +2 -2
- package/dist/{renderer-x2s9LmVL.mjs.map → renderer-D-4Yh-RK.mjs.map} +1 -1
- package/dist/renderer-D0FWIsWn.mjs +3 -0
- package/dist/{renderer-CxE-8m71.mjs → renderer-D3FsnptO.mjs} +1 -1
- package/dist/renderer-D3jUYUDU.mjs +3 -0
- package/dist/renderer-D5Je-AeQ.mjs +3 -0
- package/dist/{renderer-DQQnEcSA.mjs → renderer-DJPuwTbS.mjs} +10 -8
- package/dist/renderer-DJPuwTbS.mjs.map +1 -0
- package/dist/{renderer-vnHsTpQf.mjs → renderer-DM79djHG.mjs} +58 -88
- package/dist/{renderer-vnHsTpQf.mjs.map → renderer-DM79djHG.mjs.map} +1 -1
- package/dist/renderer-DNPwpmYS.mjs +3 -0
- package/dist/{renderer-Bh1pfpzz.mjs → renderer-DRf4FLSq.mjs} +10 -9
- package/dist/renderer-DRf4FLSq.mjs.map +1 -0
- package/dist/{renderer-CcDfRa1o.mjs → renderer-DVj8jfmO.mjs} +9 -8
- package/dist/renderer-DVj8jfmO.mjs.map +1 -0
- package/dist/renderer-DawVsNLw.mjs +3 -0
- package/dist/renderer-Dl_6Kn87.mjs +3 -0
- package/dist/renderer-DlrJSfaw.mjs +3 -0
- package/dist/{renderer-Dm0r9IBd.mjs → renderer-DnXQXk-8.mjs} +2 -2
- package/dist/{renderer-Dm0r9IBd.mjs.map → renderer-DnXQXk-8.mjs.map} +1 -1
- package/dist/{renderer-s_HENMCc.mjs → renderer-Dntxca07.mjs} +2 -2
- package/dist/{renderer-s_HENMCc.mjs.map → renderer-Dntxca07.mjs.map} +1 -1
- package/dist/renderer-DpScOWGG.mjs +4 -0
- package/dist/{renderer-CXO4wWOT.mjs → renderer-DvHpzsUV.mjs} +2 -2
- package/dist/{renderer-CXO4wWOT.mjs.map → renderer-DvHpzsUV.mjs.map} +1 -1
- package/dist/renderer-DxYOA1MM.mjs +3 -0
- package/dist/{renderer-BgAzIw8w.mjs → renderer-E5D4H5dK.mjs} +3 -3
- package/dist/{renderer-BgAzIw8w.mjs.map → renderer-E5D4H5dK.mjs.map} +1 -1
- package/dist/{renderer-DFA0KBdj.mjs → renderer-L72D1mwv.mjs} +3 -3
- package/dist/{renderer-DFA0KBdj.mjs.map → renderer-L72D1mwv.mjs.map} +1 -1
- package/dist/renderer-S7jOr_jF.mjs +3 -0
- package/dist/{renderer-BQgAn_oc.mjs → renderer-XRGwrdg8.mjs} +5 -5
- package/dist/renderer-XRGwrdg8.mjs.map +1 -0
- package/dist/{renderer-DVSagfD4.mjs → renderer-doPt4zQZ.mjs} +2 -2
- package/dist/{renderer-DVSagfD4.mjs.map → renderer-doPt4zQZ.mjs.map} +1 -1
- package/dist/{renderer-Dm08-hAU.mjs → renderer-h-HOoLwD.mjs} +2 -2
- package/dist/{renderer-Dm08-hAU.mjs.map → renderer-h-HOoLwD.mjs.map} +1 -1
- package/dist/renderer-kN2TeWks.mjs +3 -0
- package/dist/{renderers-BWg16W-V-FofeEqQL.mjs → renderers-CP8CFWDs-CAs5DgWj.mjs} +16 -13
- package/dist/renderers-CP8CFWDs-CAs5DgWj.mjs.map +1 -0
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-BwbdO3AN.mjs → signals-CsxqD2AA.mjs} +3 -3
- package/dist/{signals-BwbdO3AN.mjs.map → signals-CsxqD2AA.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/dist-Bx6J0VcM.mjs.map +0 -1
- package/dist/dist-CGIme1vZ.mjs.map +0 -1
- package/dist/dist-DKm2IyEJ.mjs.map +0 -1
- package/dist/dist-DuIv211_.mjs.map +0 -1
- package/dist/effects-B_APkGJJ.mjs +0 -811
- package/dist/effects-B_APkGJJ.mjs.map +0 -1
- package/dist/fonts-CwwIhe1o.mjs.map +0 -1
- package/dist/index-BMVVmc4G.d.mts.map +0 -1
- package/dist/index-CnAk1hTw.d.mts.map +0 -1
- package/dist/index-D2jDC7O5.d.mts.map +0 -1
- package/dist/index-DiSKzDGR.d.mts.map +0 -1
- package/dist/preview-D7TqF9i_.mjs.map +0 -1
- package/dist/preview-engine/chunk-47VT677S.mjs +0 -8
- package/dist/preview-engine/chunk-4Q7JG6WJ.mjs +0 -1
- package/dist/preview-engine/chunk-CVGM2U4J.mjs +0 -47
- package/dist/preview-engine/chunk-N4PWLBZ7.mjs +0 -5
- package/dist/preview-engine/chunk-P3HBP725.mjs +0 -1
- package/dist/preview-engine/chunk-PCB2VB5K.mjs +0 -98
- package/dist/preview-engine/chunk-QARN3FLA.mjs +0 -418
- package/dist/preview-engine/chunk-SZ7YRPKO.mjs +0 -3
- package/dist/preview-engine/chunk-TMRLZV5X.mjs +0 -1
- package/dist/preview-engine/chunk-XD4GKD6H.mjs +0 -5
- package/dist/preview-engine/chunk-YSTLMWCG.mjs +0 -1
- package/dist/preview-engine/renderers-2AUSIYZN.mjs +0 -1
- package/dist/preview-engine/renderers-2QN6KZJP.mjs +0 -1
- package/dist/preview-engine/renderers-32SKW7ML.mjs +0 -1
- package/dist/preview-engine/renderers-6QAF3LQ2.mjs +0 -1
- package/dist/preview-engine/renderers-76MPTVZK.mjs +0 -1
- package/dist/preview-engine/renderers-AFYKNM6N.mjs +0 -1
- package/dist/preview-engine/renderers-ASTBICLA.mjs +0 -1
- package/dist/preview-engine/renderers-D7PVQFVU.mjs +0 -1
- package/dist/preview-engine/renderers-DB4ABTNA.mjs +0 -1
- package/dist/preview-engine/renderers-FI7YHNLY.mjs +0 -1
- package/dist/preview-engine/renderers-GBHULMPH.mjs +0 -1
- package/dist/preview-engine/renderers-HGT7QDY3.mjs +0 -1
- package/dist/preview-engine/renderers-HOYLA7ZK.mjs +0 -1
- package/dist/preview-engine/renderers-KKI2D3MZ.mjs +0 -1
- package/dist/preview-engine/renderers-KRAJNV4E.mjs +0 -1
- package/dist/preview-engine/renderers-KUGZKSVE.mjs +0 -1
- package/dist/preview-engine/renderers-L2EQQIOC.mjs +0 -1
- package/dist/preview-engine/renderers-MCFQFYEL.mjs +0 -1
- package/dist/preview-engine/renderers-OEVXCGE2.mjs +0 -1
- package/dist/preview-engine/renderers-QVD6C4CS.mjs +0 -1
- package/dist/preview-engine/renderers-RBFWJWVM.mjs +0 -1
- package/dist/preview-engine/renderers-RX3VLVLO.mjs +0 -1
- package/dist/preview-engine/renderers-SM6JP64K.mjs +0 -1
- package/dist/preview-engine/renderers-TKMAATVS.mjs +0 -1
- package/dist/preview-engine/renderers-UZGECFVO.mjs +0 -1
- package/dist/preview-engine/renderers-WJUTT5BB.mjs +0 -1
- package/dist/preview-engine/renderers-XA2M4YXK.mjs +0 -1
- package/dist/preview-engine/renderers-XIHRFEFQ.mjs +0 -1
- package/dist/preview-engine/renderers-XJTA5MFG.mjs +0 -1
- package/dist/preview-engine/renderers-XLTY5APF.mjs +0 -1
- package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +0 -1
- package/dist/renderer-0kXgErRZ.mjs +0 -3
- package/dist/renderer-B6YiOv7l.mjs.map +0 -1
- package/dist/renderer-B8ugHLDi.mjs.map +0 -1
- package/dist/renderer-B9e4XyZy.mjs +0 -3
- package/dist/renderer-BBhCaxS2.mjs +0 -3
- package/dist/renderer-BC0iMueW.mjs +0 -3
- package/dist/renderer-BGd1VV9J.mjs +0 -3
- package/dist/renderer-BJKbasW6.mjs +0 -3
- package/dist/renderer-BQgAn_oc.mjs.map +0 -1
- package/dist/renderer-BV3mlZMX.mjs +0 -3
- package/dist/renderer-BgO4XWZz.mjs +0 -3
- package/dist/renderer-Bh1pfpzz.mjs.map +0 -1
- package/dist/renderer-Bk842iGl.mjs +0 -4
- package/dist/renderer-Bn7jX6n3.mjs +0 -3
- package/dist/renderer-CPKOjnkT.mjs +0 -3
- package/dist/renderer-CSgVUPHu.mjs +0 -3
- package/dist/renderer-CUr66blo.mjs +0 -3
- package/dist/renderer-CYC-j_8W.mjs +0 -3
- package/dist/renderer-CcDfRa1o.mjs.map +0 -1
- package/dist/renderer-Cy7k7eN9.mjs +0 -3
- package/dist/renderer-D3poaM-T.mjs +0 -3
- package/dist/renderer-D69vFGNB.mjs +0 -3
- package/dist/renderer-D9lcIxrz.mjs.map +0 -1
- package/dist/renderer-DPSsf8-t.mjs +0 -3
- package/dist/renderer-DQQnEcSA.mjs.map +0 -1
- package/dist/renderer-DWvg6ZKK.mjs.map +0 -1
- package/dist/renderer-DiXzb5FQ.mjs +0 -3
- package/dist/renderer-DkKjy-Q0.mjs +0 -3
- package/dist/renderer-DlxCfGuA.mjs +0 -3
- package/dist/renderer-DnUe5mD1.mjs +0 -3
- package/dist/renderer-DwtLqidh.mjs +0 -3
- package/dist/renderer-VHpQTPbr.mjs.map +0 -1
- package/dist/renderer-WaLyCr37.mjs +0 -3
- package/dist/renderer-rrz9Fhwo.mjs +0 -3
- package/dist/renderer-ssnm_dWv.mjs +0 -3
- package/dist/renderer-xc9wkiC7.mjs +0 -3
- package/dist/renderers-BWg16W-V-FofeEqQL.mjs.map +0 -1
- /package/dist/preview-engine/{chunk-VJGK7MLJ.mjs → chunk-CBM7B7EW.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{a as En}from"./chunk-JPXQPP6J.mjs";import{a as ln}from"./chunk-CNSHAFEA.mjs";import{h as Qn,l as Cn}from"./chunk-24P6DAB3.mjs";import{d as Bn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as cn,f as NA,g as ft,h as un}from"./chunk-4BEJJKEU.mjs";import{r as yA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),yn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),yn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=yn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),y=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=y;M++)D+=(s[M]??0)*(s[M]??0);let U=Math.min(1,Math.sqrt(D/(y-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:U,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),y=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:y,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var pn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,y=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,U=[m,y,D],M=k.subtract(U,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<pn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<pn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof yA<"u"&&yA.existsSync)try{let w=JA.resolve(r.basePath,q);if(yA.existsSync(w)){let L=yA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,y=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>y&&(y=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,y=1);let D=(E+h)*.5,U=(Q+m)*.5,M=(C+y)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),N=Math.max(1e-4,y-C),T=Math.max(b,x,N),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?U:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(y-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
2
|
-
v `)||r.includes("\rv "))&&typeof yA<"u"&&yA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}yA.existsSync(i)?(n=yA.readFileSync(i,"utf-8"),t={basePath:t.basePath??JA.dirname(i),...t}):n=A}catch{n=A}else n=A}return ue.parse(n,e,t)}$();var xn=In(bn(),1);var qA=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=t.byteLength)return null;let g,I,B;if(o){if(i+25>t.byteLength)return null;g=Number(n.getBigUint64(i,!0)),I=Number(n.getBigUint64(i+8,!0)),B=n.getUint8(i+24),i+=25}else{if(i+13>t.byteLength)return null;g=n.getUint32(i,!0),I=n.getUint32(i+4,!0),B=n.getUint8(i+12),i+=13}if(g===0)return null;let u=new TextDecoder().decode(t.subarray(i,i+B));i+=B;let E=[];for(let C=0;C<I;C++){let h=String.fromCharCode(t[i]);switch(i+=1,h){case"Y":{E.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{E.push(n.getUint8(i)!==0),i+=1;break}case"I":{E.push(n.getInt32(i,!0)),i+=4;break}case"F":{E.push(n.getFloat32(i,!0)),i+=4;break}case"D":{E.push(n.getFloat64(i,!0)),i+=8;break}case"L":{E.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let m=n.getUint32(i,!0);i+=4;let y=new TextDecoder().decode(t.subarray(i,i+m));E.push(y),i+=m;break}case"R":{let m=n.getUint32(i,!0);i+=4;let y=t.subarray(i,i+m);E.push(y),i+=m;break}case"f":case"d":case"i":case"l":case"b":case"c":{let m=n.getUint32(i,!0),y=n.getUint32(i+4,!0),D=n.getUint32(i+8,!0);i+=12;let U;if(y===1){let b=t.subarray(i,i+D);U=(0,xn.inflateSync)(b),i+=D}else{let x=m*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);U=t.subarray(i,i+x),i+=x}let M=new DataView(U.buffer,U.byteOffset,U.byteLength);if(h==="f"){let b=new Float32Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat32(x*4,!0);E.push(b)}else if(h==="d"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat64(x*8,!0);E.push(b)}else if(h==="i"){let b=new Int32Array(m);for(let x=0;x<m;x++)b[x]=M.getInt32(x*4,!0);E.push(b)}else if(h==="l"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=Number(M.getBigInt64(x*8,!0));E.push(b)}else if(h==="b"){let b=new Uint8Array(m);for(let x=0;x<m;x++)b[x]=M.getUint8(x);E.push(b)}else E.push(U);break}default:break}}let Q=[];for(;i<g;){let C=s();if(C)Q.push(C);else break}return i=g,{name:u,props:E,children:Q}};for(;i<t.byteLength-(o?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let o=0;o<r.length;o++){let i=r[o]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),g=i.substring(a+1).trim(),I=g.endsWith("{"),B=I?g.slice(0,-1).trim():g,u=[];if(B){let C=B.split(",").map(h=>h.trim());for(let h of C)h.startsWith('"')&&h.endsWith('"')?u.push(h.slice(1,-1)):Number.isNaN(Number(h))?u.push(h):u.push(Number(h))}let E={name:s,props:u,children:[]},Q=n[n.length-1];Q&&Q.children.push(E),I&&n.push(E)}return t}static buildModelFromTree(e,t={}){let n=e.children.find(N=>N.name==="Objects"),r=e.children.find(N=>N.name==="Connections"),o=new Map;if(n)for(let N of n.children){let T=N.props[0]??0,O=String(N.props[1]??"").split("::"),v=O.length>1?O[1]:O[0],tA=String(N.props[2]??N.name);o.set(T,{id:T,name:v,type:tA,node:N})}let i=[];if(r){for(let N of r.children)if(N.name==="C"||N.name==="Connect"){let T=String(N.props[0]),Y=N.props[1]??0,O=N.props[2]??0,v=T==="OP"?String(N.props[3]):void 0;i.push({childId:Y,parentId:O,propName:v})}}let a=[],s={};function g(N){if(!N)return[];if(N.props[0]instanceof Float32Array||N.props[0]instanceof Float64Array||N.props[0]instanceof Int32Array||Array.isArray(N.props[0]))return N.props[0];let T=N.children.find(Y=>Y.name==="a");return T&&T.props.length>0?T.props:Array.isArray(N.props)&&N.props.length>0&&typeof N.props[0]=="number"?N.props:[]}for(let[N,T]of o)if(T.node.name==="Geometry"&&(T.type==="Mesh"||T.node.props[2]==="Mesh"||T.type==="")){let Y=T.node,O=Y.children.find(w=>w.name==="Vertices"),v=Y.children.find(w=>w.name==="PolygonVertexIndex"),tA=Y.children.find(w=>w.name==="LayerElementNormal"),X=Y.children.find(w=>w.name==="LayerElementUV");if(!O||!v)continue;let F=g(O),sA=g(v),H=tA?.children.find(w=>w.name==="Normals"),V=g(H),rA=X?.children.find(w=>w.name==="UV"),K=X?.children.find(w=>w.name==="UVIndex"),S=g(rA),_=g(K),j=[],W=[],nA=[];for(let w=0;w<sA.length;w++){let L=sA[w];if(L<0){if(nA.push(-(L+1)),W.push(w),nA.length>=3)for(let z=1;z<nA.length-1;z++)j.push([nA[0],nA[z],nA[z+1]]);nA=[]}else nA.push(L),W.push(w)}let lA=[],oA=[],aA=[],R=[];for(let w=0;w<j.length;w++){let L=j[w];for(let z=0;z<3;z++){let iA=L[z],EA=lA.length/3,CA=F[iA*3]??0,QA=F[iA*3+1]??0,mA=F[iA*3+2]??0;if(lA.push(CA,QA,mA),V.length>0){let dA=V[iA*3]??0,DA=V[iA*3+1]??0,wA=V[iA*3+2]??0;oA.push(dA,DA,wA)}else oA.push(0,0,1);if(S.length>0){let dA=iA;_.length>0&&(dA=_[iA]??iA);let DA=S[dA*2]??0,wA=S[dA*2+1]??0;aA.push(DA,1-wA)}else aA.push(0,0);R.push(EA)}}if(V.length===0||t.smoothNormals){let w=new Float32Array(lA.length);for(let L=0;L<R.length;L+=3){let z=R[L],iA=R[L+1],EA=R[L+2],CA=[lA[z*3],lA[z*3+1],lA[z*3+2]],QA=[lA[iA*3],lA[iA*3+1],lA[iA*3+2]],mA=[lA[EA*3],lA[EA*3+1],lA[EA*3+2]],dA=k.subtract(QA,CA),DA=k.subtract(mA,CA),wA=k.cross(dA,DA);w[z*3]+=wA[0],w[z*3+1]+=wA[1],w[z*3+2]+=wA[2],w[iA*3]+=wA[0],w[iA*3+1]+=wA[1],w[iA*3+2]+=wA[2],w[EA*3]+=wA[0],w[EA*3+1]+=wA[1],w[EA*3+2]+=wA[2]}for(let L=0;L<lA.length/3;L++){let z=w[L*3],iA=w[L*3+1],EA=w[L*3+2],CA=Math.hypot(z,iA,EA)||1;oA[L*3]=z/CA,oA[L*3+1]=iA/CA,oA[L*3+2]=EA/CA}}let gA=i.find(w=>w.parentId===N&&o.get(w.childId)?.type==="Deformer"&&o.get(w.childId)?.node.props[2]==="Skin"),AA,IA;if(gA){let w=lA.length/3;AA=new Float32Array(w*4),IA=new Float32Array(w*4),i.filter(z=>z.parentId===gA.childId&&o.get(z.childId)?.type==="Deformer"&&o.get(z.childId)?.node.props[2]==="Cluster").forEach((z,iA)=>{let EA=o.get(z.childId)?.node,CA=EA?.children.find(mA=>mA.name==="Indexes"),QA=EA?.children.find(mA=>mA.name==="Weights");if(CA&&QA){let mA=g(CA),dA=g(QA);for(let DA=0;DA<mA.length;DA++){let wA=dA[DA]??0;for(let UA=0;UA<w;UA++)for(let SA=0;SA<4;SA++)if(IA[UA*4+SA]===0){AA[UA*4+SA]=iA,IA[UA*4+SA]=wA;break}}}})}let q=lA.length/3>65535;a.push({id:`fbx_mesh_${N}`,name:T.name,positions:new Float32Array(lA),normals:new Float32Array(oA),uvs:new Float32Array(aA),indices:q?new Uint32Array(R):new Uint16Array(R),jointIndices:AA,jointWeights:IA,materialName:T.name})}for(let[,N]of o)if(N.node.name==="Material"){let Y=N.node.children.find(X=>X.name==="Properties70"),O=[1,1,1,1],v=32,tA=1;if(Y){for(let X of Y.children)if(X.name==="P"){let F=String(X.props[0]);if(F==="DiffuseColor"||F==="Color"){let sA=Number(X.props[4]??1),H=Number(X.props[5]??1),V=Number(X.props[6]??1);O=[sA,H,V,1]}else F==="Shininess"||F==="ShininessExponent"?v=Number(X.props[4]??32):F==="Opacity"&&(tA=Number(X.props[4]??1),O[3]=tA)}}s[N.name]={name:N.name,diffuseColor:O,shininess:v,opacity:tA}}let I=[];for(let[N,T]of o)if(T.node.name==="AnimationStack"){let Y=T.name||"Take 001",O=[],v=i.find(X=>X.parentId===N&&o.get(X.childId)?.node.name==="AnimationLayer");if(v){let X=i.filter(sA=>sA.parentId===v.childId&&o.get(sA.childId)?.node.name==="AnimationCurveNode"),F=new Map;for(let sA of X){let H=o.get(sA.childId);if(!H)continue;let V=i.find(W=>W.childId===H.id&&o.get(W.parentId)?.node.name==="Model"),rA=V?o.get(V.parentId):void 0,K=Mn(V?.propName)??Mn(H.name);if(!K)continue;let S=`${rA?.id??H.id}|${K}`,_=F.get(S);if(!_){let W=rA?.node;_={nodeName:rA?.name??H.name,model:W,kind:K,defaults:Yr(W,H.node,K),channels:[void 0,void 0,void 0]},F.set(S,_)}i.filter(W=>W.parentId===H.id&&o.get(W.childId)?.node.name==="AnimationCurve").forEach((W,nA)=>{let lA=Kr(W.propName)??nA;if(lA>2)return;let oA=o.get(W.childId)?.node,aA=g(oA?.children.find(AA=>AA.name==="KeyTime")),R=g(oA?.children.find(AA=>AA.name==="KeyValueFloat")),gA=Math.min(aA.length,R.length);gA!==0&&(_.channels[lA]={times:Array.from(aA.slice(0,gA),AA=>Number(AA)),values:Array.from(R.slice(0,gA),AA=>Number(AA))})})}for(let sA of F.values()){let H=zr(sA);H&&O.push(H)}}let tA=1;for(let X of O)if(X.times.length>0){let F=X.times[X.times.length-1]??0;F>tA&&(tA=F)}I.push({name:Y,duration:tA,fps:30,tracks:O})}let B=1/0,u=1/0,E=1/0,Q=-1/0,C=-1/0,h=-1/0;for(let N of a)for(let T=0;T<N.positions.length;T+=3){let Y=N.positions[T],O=N.positions[T+1],v=N.positions[T+2];Y<B&&(B=Y),O<u&&(u=O),v<E&&(E=v),Y>Q&&(Q=Y),O>C&&(C=O),v>h&&(h=v)}Number.isFinite(B)||(B=-1,u=-1,E=-1,Q=1,C=1,h=1);let m=Q-B,y=C-u,D=h-E,U=(B+Q)*.5,M=(u+C)*.5,b=(E+h)*.5,x=Math.hypot(m,y,D)*.5;return{meshes:a,materials:s,animations:I,bounds:{min:[B,u,E],max:[Q,C,h],center:[U,M,b],size:[m,y,D],boundingSphereRadius:x}}}};function Mn(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Kr(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function ht(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function Yr(A,e,t){let n=t==="S"?1:0,r=ht(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),o=[n,n,n];for(let i=0;i<3;i++){let a=r?.[i],s=ht(e,`d|${"XYZ"[i]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(o[i]=g)}return o}var Or=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Vr(A){let e=ht(A,"RotationOrder")?.[0]??0;return Or[e]??"XYZ"}function Wr(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),o=(A[r]??0)*Math.PI/360,i=Math.sin(o),a=[0,0,0,Math.cos(o)];a[r]=i,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function Xr(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let o=0;for(;o<r-1&&t[o+1]<=e;)o++;let i=t[o],a=t[o+1],s=a>i?(e-i)/(a-i):0;return n[o]+(n[o+1]-n[o])*s}function zr(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",o=new Float32Array(t.length*(r?4:3)),i=r?Vr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/qA.FBX_KTIME;let I=[0,1,2].map(u=>{let E=A.channels[u];return E?Xr(E,s):A.defaults[u]});if(!r){o.set(I,g*3);return}let B=Wr(I,i);if(a&&a[0]*B[0]+a[1]*B[1]+a[2]*B[2]+a[3]*B[3]<0)for(let u=0;u<4;u++)B[u]=-B[u];a=B,o.set(B,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?o:void 0,rotations:r?o:void 0,scales:A.kind==="S"?o:void 0}}function qo(A,e={}){return qA.parse(A,e)}function Qe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof yA<"u"&&yA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}if(yA.existsSync(o)){let i=yA.readFileSync(o);t=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)}}catch{}}return qA.parse(t,e)}$();$();var Fn=`
|
|
1
|
+
import{a as Cn}from"./chunk-JPXQPP6J.mjs";import{a as un}from"./chunk-CNSHAFEA.mjs";import{h as Bn,l as ln}from"./chunk-24P6DAB3.mjs";import{d as cn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as En,f as NA,g as ft,h as Qn}from"./chunk-YK4XHUP4.mjs";import{r as pA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),pn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),pn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=pn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),p=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=p;M++)D+=(s[M]??0)*(s[M]??0);let U=Math.min(1,Math.sqrt(D/(p-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:U,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),p=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:p,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var yn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,p=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,U=[m,p,D],M=k.subtract(U,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<yn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<yn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof pA<"u"&&pA.existsSync)try{let w=JA.resolve(r.basePath,q);if(pA.existsSync(w)){let L=pA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,p=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>p&&(p=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,p=1);let D=(E+h)*.5,U=(Q+m)*.5,M=(C+p)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),N=Math.max(1e-4,p-C),T=Math.max(b,x,N),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?U:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(p-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
2
|
+
v `)||r.includes("\rv "))&&typeof pA<"u"&&pA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}pA.existsSync(i)?(n=pA.readFileSync(i,"utf-8"),t={basePath:t.basePath??JA.dirname(i),...t}):n=A}catch{n=A}else n=A}return ue.parse(n,e,t)}$();var xn=In(bn(),1);var qA=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=t.byteLength)return null;let g,I,B;if(o){if(i+25>t.byteLength)return null;g=Number(n.getBigUint64(i,!0)),I=Number(n.getBigUint64(i+8,!0)),B=n.getUint8(i+24),i+=25}else{if(i+13>t.byteLength)return null;g=n.getUint32(i,!0),I=n.getUint32(i+4,!0),B=n.getUint8(i+12),i+=13}if(g===0)return null;let u=new TextDecoder().decode(t.subarray(i,i+B));i+=B;let E=[];for(let C=0;C<I;C++){let h=String.fromCharCode(t[i]);switch(i+=1,h){case"Y":{E.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{E.push(n.getUint8(i)!==0),i+=1;break}case"I":{E.push(n.getInt32(i,!0)),i+=4;break}case"F":{E.push(n.getFloat32(i,!0)),i+=4;break}case"D":{E.push(n.getFloat64(i,!0)),i+=8;break}case"L":{E.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let m=n.getUint32(i,!0);i+=4;let p=new TextDecoder().decode(t.subarray(i,i+m));E.push(p),i+=m;break}case"R":{let m=n.getUint32(i,!0);i+=4;let p=t.subarray(i,i+m);E.push(p),i+=m;break}case"f":case"d":case"i":case"l":case"b":case"c":{let m=n.getUint32(i,!0),p=n.getUint32(i+4,!0),D=n.getUint32(i+8,!0);i+=12;let U;if(p===1){let b=t.subarray(i,i+D);U=(0,xn.inflateSync)(b),i+=D}else{let x=m*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);U=t.subarray(i,i+x),i+=x}let M=new DataView(U.buffer,U.byteOffset,U.byteLength);if(h==="f"){let b=new Float32Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat32(x*4,!0);E.push(b)}else if(h==="d"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat64(x*8,!0);E.push(b)}else if(h==="i"){let b=new Int32Array(m);for(let x=0;x<m;x++)b[x]=M.getInt32(x*4,!0);E.push(b)}else if(h==="l"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=Number(M.getBigInt64(x*8,!0));E.push(b)}else if(h==="b"){let b=new Uint8Array(m);for(let x=0;x<m;x++)b[x]=M.getUint8(x);E.push(b)}else E.push(U);break}default:break}}let Q=[];for(;i<g;){let C=s();if(C)Q.push(C);else break}return i=g,{name:u,props:E,children:Q}};for(;i<t.byteLength-(o?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let o=0;o<r.length;o++){let i=r[o]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),g=i.substring(a+1).trim(),I=g.endsWith("{"),B=I?g.slice(0,-1).trim():g,u=[];if(B){let C=B.split(",").map(h=>h.trim());for(let h of C)h.startsWith('"')&&h.endsWith('"')?u.push(h.slice(1,-1)):Number.isNaN(Number(h))?u.push(h):u.push(Number(h))}let E={name:s,props:u,children:[]},Q=n[n.length-1];Q&&Q.children.push(E),I&&n.push(E)}return t}static buildModelFromTree(e,t={}){let n=e.children.find(N=>N.name==="Objects"),r=e.children.find(N=>N.name==="Connections"),o=new Map;if(n)for(let N of n.children){let T=N.props[0]??0,O=String(N.props[1]??"").split("::"),v=O.length>1?O[1]:O[0],tA=String(N.props[2]??N.name);o.set(T,{id:T,name:v,type:tA,node:N})}let i=[];if(r){for(let N of r.children)if(N.name==="C"||N.name==="Connect"){let T=String(N.props[0]),Y=N.props[1]??0,O=N.props[2]??0,v=T==="OP"?String(N.props[3]):void 0;i.push({childId:Y,parentId:O,propName:v})}}let a=[],s={};function g(N){if(!N)return[];if(N.props[0]instanceof Float32Array||N.props[0]instanceof Float64Array||N.props[0]instanceof Int32Array||Array.isArray(N.props[0]))return N.props[0];let T=N.children.find(Y=>Y.name==="a");return T&&T.props.length>0?T.props:Array.isArray(N.props)&&N.props.length>0&&typeof N.props[0]=="number"?N.props:[]}for(let[N,T]of o)if(T.node.name==="Geometry"&&(T.type==="Mesh"||T.node.props[2]==="Mesh"||T.type==="")){let Y=T.node,O=Y.children.find(w=>w.name==="Vertices"),v=Y.children.find(w=>w.name==="PolygonVertexIndex"),tA=Y.children.find(w=>w.name==="LayerElementNormal"),X=Y.children.find(w=>w.name==="LayerElementUV");if(!O||!v)continue;let F=g(O),sA=g(v),H=tA?.children.find(w=>w.name==="Normals"),V=g(H),rA=X?.children.find(w=>w.name==="UV"),K=X?.children.find(w=>w.name==="UVIndex"),S=g(rA),_=g(K),j=[],W=[],nA=[];for(let w=0;w<sA.length;w++){let L=sA[w];if(L<0){if(nA.push(-(L+1)),W.push(w),nA.length>=3)for(let z=1;z<nA.length-1;z++)j.push([nA[0],nA[z],nA[z+1]]);nA=[]}else nA.push(L),W.push(w)}let lA=[],oA=[],aA=[],R=[];for(let w=0;w<j.length;w++){let L=j[w];for(let z=0;z<3;z++){let iA=L[z],EA=lA.length/3,CA=F[iA*3]??0,QA=F[iA*3+1]??0,mA=F[iA*3+2]??0;if(lA.push(CA,QA,mA),V.length>0){let dA=V[iA*3]??0,DA=V[iA*3+1]??0,wA=V[iA*3+2]??0;oA.push(dA,DA,wA)}else oA.push(0,0,1);if(S.length>0){let dA=iA;_.length>0&&(dA=_[iA]??iA);let DA=S[dA*2]??0,wA=S[dA*2+1]??0;aA.push(DA,1-wA)}else aA.push(0,0);R.push(EA)}}if(V.length===0||t.smoothNormals){let w=new Float32Array(lA.length);for(let L=0;L<R.length;L+=3){let z=R[L],iA=R[L+1],EA=R[L+2],CA=[lA[z*3],lA[z*3+1],lA[z*3+2]],QA=[lA[iA*3],lA[iA*3+1],lA[iA*3+2]],mA=[lA[EA*3],lA[EA*3+1],lA[EA*3+2]],dA=k.subtract(QA,CA),DA=k.subtract(mA,CA),wA=k.cross(dA,DA);w[z*3]+=wA[0],w[z*3+1]+=wA[1],w[z*3+2]+=wA[2],w[iA*3]+=wA[0],w[iA*3+1]+=wA[1],w[iA*3+2]+=wA[2],w[EA*3]+=wA[0],w[EA*3+1]+=wA[1],w[EA*3+2]+=wA[2]}for(let L=0;L<lA.length/3;L++){let z=w[L*3],iA=w[L*3+1],EA=w[L*3+2],CA=Math.hypot(z,iA,EA)||1;oA[L*3]=z/CA,oA[L*3+1]=iA/CA,oA[L*3+2]=EA/CA}}let gA=i.find(w=>w.parentId===N&&o.get(w.childId)?.type==="Deformer"&&o.get(w.childId)?.node.props[2]==="Skin"),AA,IA;if(gA){let w=lA.length/3;AA=new Float32Array(w*4),IA=new Float32Array(w*4),i.filter(z=>z.parentId===gA.childId&&o.get(z.childId)?.type==="Deformer"&&o.get(z.childId)?.node.props[2]==="Cluster").forEach((z,iA)=>{let EA=o.get(z.childId)?.node,CA=EA?.children.find(mA=>mA.name==="Indexes"),QA=EA?.children.find(mA=>mA.name==="Weights");if(CA&&QA){let mA=g(CA),dA=g(QA);for(let DA=0;DA<mA.length;DA++){let wA=dA[DA]??0;for(let UA=0;UA<w;UA++)for(let SA=0;SA<4;SA++)if(IA[UA*4+SA]===0){AA[UA*4+SA]=iA,IA[UA*4+SA]=wA;break}}}})}let q=lA.length/3>65535;a.push({id:`fbx_mesh_${N}`,name:T.name,positions:new Float32Array(lA),normals:new Float32Array(oA),uvs:new Float32Array(aA),indices:q?new Uint32Array(R):new Uint16Array(R),jointIndices:AA,jointWeights:IA,materialName:T.name})}for(let[,N]of o)if(N.node.name==="Material"){let Y=N.node.children.find(X=>X.name==="Properties70"),O=[1,1,1,1],v=32,tA=1;if(Y){for(let X of Y.children)if(X.name==="P"){let F=String(X.props[0]);if(F==="DiffuseColor"||F==="Color"){let sA=Number(X.props[4]??1),H=Number(X.props[5]??1),V=Number(X.props[6]??1);O=[sA,H,V,1]}else F==="Shininess"||F==="ShininessExponent"?v=Number(X.props[4]??32):F==="Opacity"&&(tA=Number(X.props[4]??1),O[3]=tA)}}s[N.name]={name:N.name,diffuseColor:O,shininess:v,opacity:tA}}let I=[];for(let[N,T]of o)if(T.node.name==="AnimationStack"){let Y=T.name||"Take 001",O=[],v=i.find(X=>X.parentId===N&&o.get(X.childId)?.node.name==="AnimationLayer");if(v){let X=i.filter(sA=>sA.parentId===v.childId&&o.get(sA.childId)?.node.name==="AnimationCurveNode"),F=new Map;for(let sA of X){let H=o.get(sA.childId);if(!H)continue;let V=i.find(W=>W.childId===H.id&&o.get(W.parentId)?.node.name==="Model"),rA=V?o.get(V.parentId):void 0,K=Mn(V?.propName)??Mn(H.name);if(!K)continue;let S=`${rA?.id??H.id}|${K}`,_=F.get(S);if(!_){let W=rA?.node;_={nodeName:rA?.name??H.name,model:W,kind:K,defaults:Yr(W,H.node,K),channels:[void 0,void 0,void 0]},F.set(S,_)}i.filter(W=>W.parentId===H.id&&o.get(W.childId)?.node.name==="AnimationCurve").forEach((W,nA)=>{let lA=Kr(W.propName)??nA;if(lA>2)return;let oA=o.get(W.childId)?.node,aA=g(oA?.children.find(AA=>AA.name==="KeyTime")),R=g(oA?.children.find(AA=>AA.name==="KeyValueFloat")),gA=Math.min(aA.length,R.length);gA!==0&&(_.channels[lA]={times:Array.from(aA.slice(0,gA),AA=>Number(AA)),values:Array.from(R.slice(0,gA),AA=>Number(AA))})})}for(let sA of F.values()){let H=zr(sA);H&&O.push(H)}}let tA=1;for(let X of O)if(X.times.length>0){let F=X.times[X.times.length-1]??0;F>tA&&(tA=F)}I.push({name:Y,duration:tA,fps:30,tracks:O})}let B=1/0,u=1/0,E=1/0,Q=-1/0,C=-1/0,h=-1/0;for(let N of a)for(let T=0;T<N.positions.length;T+=3){let Y=N.positions[T],O=N.positions[T+1],v=N.positions[T+2];Y<B&&(B=Y),O<u&&(u=O),v<E&&(E=v),Y>Q&&(Q=Y),O>C&&(C=O),v>h&&(h=v)}Number.isFinite(B)||(B=-1,u=-1,E=-1,Q=1,C=1,h=1);let m=Q-B,p=C-u,D=h-E,U=(B+Q)*.5,M=(u+C)*.5,b=(E+h)*.5,x=Math.hypot(m,p,D)*.5;return{meshes:a,materials:s,animations:I,bounds:{min:[B,u,E],max:[Q,C,h],center:[U,M,b],size:[m,p,D],boundingSphereRadius:x}}}};function Mn(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Kr(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function ht(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function Yr(A,e,t){let n=t==="S"?1:0,r=ht(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),o=[n,n,n];for(let i=0;i<3;i++){let a=r?.[i],s=ht(e,`d|${"XYZ"[i]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(o[i]=g)}return o}var Or=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Vr(A){let e=ht(A,"RotationOrder")?.[0]??0;return Or[e]??"XYZ"}function Wr(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),o=(A[r]??0)*Math.PI/360,i=Math.sin(o),a=[0,0,0,Math.cos(o)];a[r]=i,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function Xr(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let o=0;for(;o<r-1&&t[o+1]<=e;)o++;let i=t[o],a=t[o+1],s=a>i?(e-i)/(a-i):0;return n[o]+(n[o+1]-n[o])*s}function zr(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",o=new Float32Array(t.length*(r?4:3)),i=r?Vr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/qA.FBX_KTIME;let I=[0,1,2].map(u=>{let E=A.channels[u];return E?Xr(E,s):A.defaults[u]});if(!r){o.set(I,g*3);return}let B=Wr(I,i);if(a&&a[0]*B[0]+a[1]*B[1]+a[2]*B[2]+a[3]*B[3]<0)for(let u=0;u<4;u++)B[u]=-B[u];a=B,o.set(B,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?o:void 0,rotations:r?o:void 0,scales:A.kind==="S"?o:void 0}}function qo(A,e={}){return qA.parse(A,e)}function Qe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof pA<"u"&&pA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}if(pA.existsSync(o)){let i=pA.readFileSync(o);t=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)}}catch{}}return qA.parse(t,e)}$();$();var Fn=`
|
|
3
3
|
struct AudioLatentBuffer {
|
|
4
4
|
fftBins : array<f32, 1024>,
|
|
5
5
|
bassEnergy : f32,
|
|
@@ -138,7 +138,7 @@ fn cs_displace(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
138
138
|
|
|
139
139
|
dstVertices[idx] = outV;
|
|
140
140
|
}
|
|
141
|
-
`;var Zr={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},Ye=class{device;pipeline;bindGroupLayout;uniformPool;deformedBuffers=new WeakMap;uniformData=new ArrayBuffer(32);uniformUint32=new Uint32Array(this.uniformData);uniformFloat32=new Float32Array(this.uniformData);constructor(e){this.device=e,this.uniformPool=new NA(32,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.bindGroupLayout=e.createBindGroupLayout({label:"AudioMeshDeformBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let t=e.createShaderModule({label:"audioMeshDisplace.wgsl",code:Fn}),n=e.createPipelineLayout({label:"AudioMeshDeformPipelineLayout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=e.createComputePipeline({label:"AudioMeshDeformComputePipeline",layout:n,compute:{module:t,entryPoint:"cs_displace"}})}getOrCreateDeformedBuffer(e,t){let n=this.deformedBuffers.get(e);return(!n||n.size<t)&&(n?.destroy(),n=this.device.createBuffer({label:"DeformedMeshVertexBuffer",size:Math.max(64,Math.ceil(t/4)*4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}),this.deformedBuffers.set(e,n)),n}execute(e,t,n){let{config:r,audioLatentBuffer:o,vertexCount:i,timeMs:a=0,sampleRate:s=48e3}=n,g=i*64,I=this.getOrCreateDeformedBuffer(t,g),B=Zr[r.mode]??0,u=s/2048,E=r.frequencyRange?r.frequencyRange[0]:20,Q=r.frequencyRange?r.frequencyRange[1]:120,C=Math.max(0,Math.min(1023,Math.round(E/u))),h=Math.max(C,Math.min(1023,Math.round(Q/u))),m=typeof r.amplitudeMultiplier=="number"?r.amplitudeMultiplier:typeof r.amplitudeMultiplier?.value=="number"?r.amplitudeMultiplier.value:1,
|
|
141
|
+
`;var Zr={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},Ye=class{device;pipeline;bindGroupLayout;uniformPool;deformedBuffers=new WeakMap;uniformData=new ArrayBuffer(32);uniformUint32=new Uint32Array(this.uniformData);uniformFloat32=new Float32Array(this.uniformData);constructor(e){this.device=e,this.uniformPool=new NA(32,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.bindGroupLayout=e.createBindGroupLayout({label:"AudioMeshDeformBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let t=e.createShaderModule({label:"audioMeshDisplace.wgsl",code:Fn}),n=e.createPipelineLayout({label:"AudioMeshDeformPipelineLayout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=e.createComputePipeline({label:"AudioMeshDeformComputePipeline",layout:n,compute:{module:t,entryPoint:"cs_displace"}})}getOrCreateDeformedBuffer(e,t){let n=this.deformedBuffers.get(e);return(!n||n.size<t)&&(n?.destroy(),n=this.device.createBuffer({label:"DeformedMeshVertexBuffer",size:Math.max(64,Math.ceil(t/4)*4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}),this.deformedBuffers.set(e,n)),n}execute(e,t,n){let{config:r,audioLatentBuffer:o,vertexCount:i,timeMs:a=0,sampleRate:s=48e3}=n,g=i*64,I=this.getOrCreateDeformedBuffer(t,g),B=Zr[r.mode]??0,u=s/2048,E=r.frequencyRange?r.frequencyRange[0]:20,Q=r.frequencyRange?r.frequencyRange[1]:120,C=Math.max(0,Math.min(1023,Math.round(E/u))),h=Math.max(C,Math.min(1023,Math.round(Q/u))),m=typeof r.amplitudeMultiplier=="number"?r.amplitudeMultiplier:typeof r.amplitudeMultiplier?.value=="number"?r.amplitudeMultiplier.value:1,p=r.damping??0;this.uniformUint32[0]=B,this.uniformUint32[1]=C,this.uniformUint32[2]=h,this.uniformUint32[3]=i,this.uniformFloat32[4]=m,this.uniformFloat32[5]=p,this.uniformFloat32[6]=a,this.uniformFloat32[7]=0;let D=this.uniformPool.getBuffer(this.device,new Uint8Array(this.uniformData)),U=this.device.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:{buffer:D}},{binding:2,resource:{buffer:t}},{binding:3,resource:{buffer:I}}]}),M=e.beginComputePass({label:"AudioMeshDeformComputePass"});M.setPipeline(this.pipeline),M.setBindGroup(0,U);let b=Math.ceil(i/256);return M.dispatchWorkgroups(b),M.end(),I}resetPools(){this.uniformPool.reset()}destroy(){this.uniformPool.destroy()}};$();$();var Nn=`
|
|
142
142
|
struct CameraUniforms {
|
|
143
143
|
viewMatrix : mat4x4<f32>,
|
|
144
144
|
projMatrix : mat4x4<f32>,
|
|
@@ -230,8 +230,8 @@ fn fs_dof(in: VSOut) -> @location(0) vec4<f32> {
|
|
|
230
230
|
return accumColor / totalWeight;
|
|
231
231
|
}
|
|
232
232
|
`;$();var Ce=class A{static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<84)return!1;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(80,!0),o=84+r*50;if(t.length===o)return!0;let i=Math.min(t.length,512);for(let s=0;s<i;s++){let g=t[s];if(g>127||g<32&&g!==9&&g!==10&&g!==13)return!0}let a=new TextDecoder("utf-8").decode(t.subarray(0,80)).trim();return a.startsWith("solid")&&!a.includes(`
|
|
233
|
-
`)?t.length>=84+r*50:!a.startsWith("solid")}static parse(e,t={}){if(typeof e=="string")return A.parseAscii(e,t);let n=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isBinary(n))return A.parseBinary(n,t);let r=new TextDecoder("utf-8").decode(n);return A.parseAscii(r,t)}static parseBinary(e,t={}){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(80,!0),o=[],i=[],a=[],s=84;for(let g=0;g<r&&!(s+50>e.byteLength);g++){let I=n.getFloat32(s,!0),B=n.getFloat32(s+4,!0),u=n.getFloat32(s+8,!0);s+=12;let E=n.getFloat32(s,!0),Q=n.getFloat32(s+4,!0),C=n.getFloat32(s+8,!0);s+=12;let h=n.getFloat32(s,!0),m=n.getFloat32(s+4,!0),
|
|
234
|
-
`,o);return i===-1?i=o+10:i+=1,{text:r.substring(0,i),endOffset:i}}static parseHeader(e){let t=e.split(/\r?\n/),n="ascii",r="1.0",o=[],i=null;for(let a of t){let s=a.trim();if(!s||s.startsWith("comment"))continue;let g=s.split(/\s+/),I=g[0]?.toLowerCase();if(I!=="ply"){if(I==="format"){let B=g[1]?.toLowerCase();B==="binary_little_endian"?n="binary_little_endian":B==="binary_big_endian"?n="binary_big_endian":n="ascii",r=g[2]??"1.0"}else if(I==="element"){let B=g[1]??"",u=Number.parseInt(g[2]??"0",10);i={name:B,count:u,properties:[]},o.push(i)}else if(I==="property"&&i)g[1]?.toLowerCase()==="list"?i.properties.push({name:g[4]??"",type:"list",isList:!0,countType:g[2]??"uchar",itemType:g[3]??"int"}):i.properties.push({name:g[2]??"",type:g[1]?.toLowerCase()??"float"});else if(I==="end_header")break}}return{format:n,version:r,elements:o}}static parseAsciiBody(e,t,n){let r=e.elements.find(F=>F.name==="vertex"),o=e.elements.find(F=>F.name==="face"),i=r?.count??0,a=o?.count??0,s=[],g=[],I=[],B=[],u=[],E=r?.properties??[],Q=E.findIndex(F=>F.name==="x"),C=E.findIndex(F=>F.name==="y"),h=E.findIndex(F=>F.name==="z"),m=E.findIndex(F=>F.name==="nx"),y=E.findIndex(F=>F.name==="ny"),D=E.findIndex(F=>F.name==="nz"),U=E.findIndex(F=>F.name==="u"||F.name==="s"||F.name==="texture_u"),M=E.findIndex(F=>F.name==="v"||F.name==="t"||F.name==="texture_v"),b=E.findIndex(F=>F.name==="red"||F.name==="r"),x=E.findIndex(F=>F.name==="green"||F.name==="g"),N=E.findIndex(F=>F.name==="blue"||F.name==="b"),T=E.findIndex(F=>F.name==="alpha"||F.name==="a"),Y=m!==-1&&y!==-1&&D!==-1,O=b!==-1&&x!==-1&&N!==-1,v=U!==-1&&M!==-1,tA=t.trim().split(/\r?\n/),X=0;for(let F=0;F<i&&!(X>=tA.length);F++){let sA=tA[X++]?.trim();if(!sA)continue;let H=sA.split(/\s+/),V=Number.parseFloat(H[Q]??"0")||0,rA=Number.parseFloat(H[C]??"0")||0,K=Number.parseFloat(H[h]??"0")||0;if(s.push(V,rA,K),Y){let S=Number.parseFloat(H[m]??"0")||0,_=Number.parseFloat(H[y]??"0")||0,j=Number.parseFloat(H[D]??"0")||0;g.push(S,_,j)}else g.push(0,0,0);if(v){let S=Number.parseFloat(H[U]??"0")||0,_=Number.parseFloat(H[M]??"0")||0;I.push(S,1-_)}else I.push(0,0);if(O){let S=(Number.parseFloat(H[b]??"255")||0)/255,_=(Number.parseFloat(H[x]??"255")||0)/255,j=(Number.parseFloat(H[N]??"255")||0)/255,W=T!==-1?(Number.parseFloat(H[T]??"255")||0)/255:1;B.push(S,_,j,W)}}for(let F=0;F<a&&!(X>=tA.length);F++){let sA=tA[X++]?.trim();if(!sA)continue;let H=sA.split(/\s+/),V=Number.parseInt(H[0]??"0",10);if(V>=3){let rA=Number.parseInt(H[1]??"0",10);for(let K=1;K<V-1;K++){let S=Number.parseInt(H[K+1]??"0",10),_=Number.parseInt(H[K+2]??"0",10);u.push(rA,S,_)}}}return A.finalizeModel(s,g,I,O?B:void 0,u,Y,n)}static parseBinaryBody(e,t,n,r){let o=new DataView(t.buffer,t.byteOffset,t.byteLength),i=0,a=e.elements.find(b=>b.name==="vertex"),s=e.elements.find(b=>b.name==="face"),g=a?.count??0,I=s?.count??0,B=[],u=[],E=[],Q=[],C=[],h=a?.properties??[],m=h.some(b=>b.name==="nx"),y=h.some(b=>b.name==="red"||b.name==="r"),D=b=>{let x=0;switch(b.toLowerCase()){case"char":case"int8":x=o.getInt8(i),i+=1;break;case"uchar":case"uint8":x=o.getUint8(i),i+=1;break;case"short":case"int16":x=o.getInt16(i,n),i+=2;break;case"ushort":case"uint16":x=o.getUint16(i,n),i+=2;break;case"int":case"int32":x=o.getInt32(i,n),i+=4;break;case"uint":case"uint32":x=o.getUint32(i,n),i+=4;break;case"float":case"float32":x=o.getFloat32(i,n),i+=4;break;case"double":case"float64":x=o.getFloat64(i,n),i+=8;break;default:x=o.getFloat32(i,n),i+=4;break}return x};for(let b=0;b<g;b++){let x=0,N=0,T=0,Y=0,O=0,v=0,tA=0,X=0,F=1,sA=1,H=1,V=1;for(let rA of h){let K=D(rA.type),S=rA.name.toLowerCase();S==="x"?x=K:S==="y"?N=K:S==="z"?T=K:S==="nx"?Y=K:S==="ny"?O=K:S==="nz"?v=K:S==="u"||S==="s"?tA=K:S==="v"||S==="t"?X=K:S==="red"||S==="r"?F=rA.type.includes("int")?K/255:K:S==="green"||S==="g"?sA=rA.type.includes("int")?K/255:K:S==="blue"||S==="b"?H=rA.type.includes("int")?K/255:K:(S==="alpha"||S==="a")&&(V=rA.type.includes("int")?K/255:K)}B.push(x,N,T),u.push(Y,O,v),E.push(tA,1-X),y&&Q.push(F,sA,H,V)}let M=(s?.properties??[]).find(b=>b.isList);for(let b=0;b<I&&!(i>=t.byteLength);b++)if(M){let x=D(M.countType??"uchar"),N=[];for(let T=0;T<x;T++)N.push(D(M.itemType??"int"));if(N.length>=3){let T=N[0];for(let Y=1;Y<N.length-1;Y++)C.push(T,N[Y],N[Y+1])}}return A.finalizeModel(B,u,E,y?Q:void 0,C,m,r)}static finalizeModel(e,t,n,r,o,i,a){if(!i||a.smoothNormals){for(let j=0;j<o.length;j+=3){let W=o[j],nA=o[j+1],lA=o[j+2],oA=[e[W*3],e[W*3+1],e[W*3+2]],aA=[e[nA*3],e[nA*3+1],e[nA*3+2]],R=[e[lA*3],e[lA*3+1],e[lA*3+2]],gA=k.subtract(aA,oA),AA=k.subtract(R,oA),IA=k.cross(gA,AA);t[W*3]+=IA[0],t[W*3+1]+=IA[1],t[W*3+2]+=IA[2],t[nA*3]+=IA[0],t[nA*3+1]+=IA[1],t[nA*3+2]+=IA[2],t[lA*3]+=IA[0],t[lA*3+1]+=IA[1],t[lA*3+2]+=IA[2]}for(let j=0;j<t.length;j+=3){let W=t[j],nA=t[j+1],lA=t[j+2],oA=Math.hypot(W,nA,lA)||1;t[j]=W/oA,t[j+1]=nA/oA,t[j+2]=lA/oA}}let s=1/0,g=1/0,I=1/0,B=-1/0,u=-1/0,E=-1/0;for(let j=0;j<e.length;j+=3){let W=e[j],nA=e[j+1],lA=e[j+2];W<s&&(s=W),W>B&&(B=W),nA<g&&(g=nA),nA>u&&(u=nA),lA<I&&(I=lA),lA>E&&(E=lA)}Number.isFinite(s)||(s=g=I=0,B=u=E=0);let Q=(s+B)*.5,C=(g+u)*.5,h=(I+E)*.5,m=B-s,y=u-g,D=E-I,U=Math.max(m,y,D,1e-4),M=1;a.normalizeSize&&a.normalizeSize>0&&(M=a.normalizeSize/U);let b=M,x=M,N=M;typeof a.scale=="number"?(b*=a.scale,x*=a.scale,N*=a.scale):Array.isArray(a.scale)&&(b*=a.scale[0],x*=a.scale[1],N*=a.scale[2]);let T=a.center?Q:0,Y=a.center?C:0,O=a.center?h:0,v=new Float32Array(e.length);for(let j=0;j<e.length;j+=3)v[j]=(e[j]-T)*b,v[j+1]=(e[j+1]-Y)*x,v[j+2]=(e[j+2]-O)*N;let X=v.length/3>65535?new Uint32Array(o):new Uint16Array(o),F={name:"ply_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial},sA=[{id:"ply_mesh_0",name:"ply_geometry",positions:v,normals:new Float32Array(t),uvs:new Float32Array(n),colors:r?new Float32Array(r):void 0,indices:X,materialName:"ply_default"}],H=(s-T)*b,V=(g-Y)*x,rA=(I-O)*N,K=(B-T)*b,S=(u-Y)*x,_=(E-O)*N;return{name:"PLY_Model",meshes:sA,materials:{ply_default:F},animations:[],bounds:{min:[H,V,rA],max:[K,S,_],center:[(H+K)*.5,(V+S)*.5,(rA+_)*.5],size:[K-H,S-V,_-rA],boundingSphereRadius:Math.hypot(K-H,S-V,_-rA)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=yA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function de(A,e={}){return mt.load(A,e)}$();$();var he=128;function qr(A,e,t){let[n,r,o,i]=e,a=n*n,s=r*r,g=o*o,I=n*r,B=n*o,u=r*o,E=i*n,Q=i*r,C=i*o;return[(1-2*(s+g))*t[0],2*(I+C)*t[0],2*(B-Q)*t[0],0,2*(I-C)*t[1],(1-2*(a+g))*t[1],2*(u+E)*t[1],0,2*(B+Q)*t[2],2*(u-E)*t[2],(1-2*(a+s))*t[2],0,A[0],A[1],A[2],1]}function Gn(A){let e=Math.hypot(A[0],A[1],A[2],A[3])||1;return[A[0]/e,A[1]/e,A[2]/e,A[3]/e]}function jr(A,e,t){let n=A[0]*e[0]+A[1]*e[1]+A[2]*e[2]+A[3]*e[3],r=n<0?-1:1;if(n*=r,n>.9995)return Gn([A[0]+(r*e[0]-A[0])*t,A[1]+(r*e[1]-A[1])*t,A[2]+(r*e[2]-A[2])*t,A[3]+(r*e[3]-A[3])*t]);let o=Math.acos(n),i=Math.sin(o),a=Math.sin((1-t)*o)/i,s=r*Math.sin(t*o)/i;return[A[0]*a+e[0]*s,A[1]*a+e[1]*s,A[2]*a+e[2]*s,A[3]*a+e[3]*s]}function _r(A,e){let t=0,n=A.length-1;for(;t<n;){let r=t+n+1>>1;(A[r]??0)<=e?t=r:n=r-1}return t}function jA(A,e,t,n,r=1){let o=n?(e*3+r)*t:e*t;return Array.from(A.subarray(o,o+t))}function yt(A,e,t,n){let{times:r}=A,o=A.interpolation==="cubic",i=r.length-1;if(n<=(r[0]??0))return jA(e,0,t,o);if(n>=(r[i]??0))return jA(e,i,t,o);let a=_r(r,n);if(A.interpolation==="step")return jA(e,a,t,o);let s=r[a]??0,g=(r[a+1]??s)-s,I=g>0?(n-s)/g:0,B=jA(e,a,t,o),u=jA(e,a+1,t,o);if(o){let E=jA(e,a,t,!0,2),Q=jA(e,a+1,t,!0,0),C=I*I,h=C*I,m=B.map((y,D)=>(2*h-3*C+1)*y+(h-2*C+I)*g*(E[D]??0)+(-2*h+3*C)*(u[D]??0)+(h-C)*g*(Q[D]??0));return t===4?Gn(m):m}return t===4?jr(B,u,I):B.map((E,Q)=>E+((u[Q]??E)-E)*I)}function $r(A,e,t){let n=A.map(a=>[...a.translation]),r=A.map(a=>[...a.rotation]),o=A.map(a=>[...a.scale]),i=new Map(A.map((a,s)=>[a.name,s]));for(let a of e?.tracks??[]){let s=a.node??i.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=yt(a,a.translations,3,t)),a.rotations&&(r[s]=yt(a,a.rotations,4,t)),a.scales&&(o[s]=yt(a,a.scales,3,t)))}return A.map((a,s)=>a.matrix??qr(n[s],r[s],o[s]))}function Un(A,e,t){let n=A.nodes??[],r=$r(n,e,t),o=new Array(n.length),i=a=>{let s=o[a];if(s)return s;let g=n[a].parent,I=g<0?r[a]:cA.multiply(i(g),r[a]);return o[a]=I,I};return n.map((a,s)=>i(s))}function Qa(A,e,t){let n=A.skins?.[e];if(!n)throw new Error(`model has no skin ${e}`);let r=new Float32Array(he*16);for(let o=0;o<he;o++){let i=n.joints[o];if(i===void 0){r.set(cA.identity(),o*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(o*16,o*16+16));r.set(cA.multiply(t[i],a),o*16)}return r}var Ai={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ei={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function ti(A,e=!1){switch(A){case 5120:return e?(t,n)=>Math.max(t.getInt8(n)/127,-1):(t,n)=>t.getInt8(n);case 5121:return e?(t,n)=>t.getUint8(n)/255:(t,n)=>t.getUint8(n);case 5122:return e?(t,n)=>Math.max(t.getInt16(n,!0)/32767,-1):(t,n)=>t.getInt16(n,!0);case 5123:return e?(t,n)=>t.getUint16(n,!0)/65535:(t,n)=>t.getUint16(n,!0);case 5125:return(t,n)=>t.getUint32(n,!0);default:return(t,n)=>t.getFloat32(n,!0)}}var Sn=1179937895,ni=1313821514,ri=5130562,ie=class A{static isGlb(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<12?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0)===Sn}static parse(e,t={},n){let r,o=[];if(typeof e=="string")try{r=JSON.parse(e)}catch(i){throw new Error(`Failed to parse glTF JSON: ${String(i)}`)}else{let i=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isGlb(i)){let a=A.unpackGlb(i);r=a.doc,a.binBuffer&&o.push(a.binBuffer)}else{let a=new TextDecoder("utf-8").decode(i);r=JSON.parse(a)}}if(r.buffers)for(let i=0;i<r.buffers.length;i++){if(i===0&&o.length>0)continue;let a=r.buffers[i];if(a.uri){if(a.uri.startsWith("data:")){let s=a.uri.indexOf("base64,");if(s!==-1){let g=a.uri.substring(s+7),I=Buffer.from(g,"base64");o[i]=new Uint8Array(I.buffer,I.byteOffset,I.byteLength)}}else if(n){let s=JA.isAbsolute(a.uri)?a.uri:JA.join(n,a.uri);if(yA.existsSync(s)){let g=yA.readFileSync(s);o[i]=new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}}}}return A.buildModel(r,o,t,n)}static unpackGlb(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0,!0),r=t.getUint32(8,!0);if(n!==Sn)throw new Error("Invalid GLB header: magic mismatch");let o=12,i=null,a;for(;o<r&&o<e.byteLength;){let s=t.getUint32(o,!0),g=t.getUint32(o+4,!0);o+=8;let I=e.subarray(o,o+s);if(o+=s,g===ni){let B=new TextDecoder("utf-8").decode(I);i=JSON.parse(B)}else g===ri&&(a=I)}if(!i)throw new Error("Invalid GLB: JSON chunk not found");return{doc:i,binBuffer:a}}static readFloats(e,t,n){let r=e.accessors?.[n];if(!r)throw new Error(`Accessor ${n} not found`);let o=Ai[r.type]??1,i=new Float32Array(r.count*o);if(r.bufferView===void 0)return{data:i,itemSize:o,count:r.count};let a=e.bufferViews?.[r.bufferView];if(!a)throw new Error(`BufferView ${r.bufferView} not found`);let s=t[a.buffer];if(!s)throw new Error(`Binary buffer ${a.buffer} not loaded`);let g=ei[r.componentType]??4,I=a.byteStride??g*o,B=new DataView(s.buffer,s.byteOffset,s.byteLength),u=(a.byteOffset??0)+(r.byteOffset??0),E=ti(r.componentType,r.normalized);for(let Q=0;Q<r.count;Q++)for(let C=0;C<o;C++)i[Q*o+C]=E(B,u+Q*I+C*g);return{data:i,itemSize:o,count:r.count}}static readIndices(e,t,n){let{data:r}=A.readFloats(e,t,n);return r.reduce((i,a)=>a>i?a:i,0)>65535?Uint32Array.from(r):Uint16Array.from(r)}static imageBytes(e,t,n,r){let o=e.images?.[n];if(!o)return;if(o.bufferView!==void 0){let s=e.bufferViews?.[o.bufferView],g=s?t[s.buffer]:void 0;if(!s||!g)return;let I=s.byteOffset??0;return{bytes:g.subarray(I,I+s.byteLength),mime:o.mimeType??"image/png"}}if(!o.uri)return;if(o.uri.startsWith("data:")){let s=o.uri.indexOf(","),g=o.uri.slice(5,o.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(o.uri.slice(s+1),"base64")),mime:g}}if(!r)return;let i=JA.isAbsolute(o.uri)?o.uri:JA.join(r,decodeURIComponent(o.uri));if(!yA.existsSync(i))return;let a=JA.extname(i).toLowerCase();return{bytes:new Uint8Array(yA.readFileSync(i)),mime:o.mimeType??(a===".png"?"image/png":"image/jpeg")}}static buildMaterial(e,t,n,r,o){let i=n.pbrMetallicRoughness,a=i?.baseColorFactor??[1,1,1,1],s={name:r,diffuseColor:a,roughness:i?.roughnessFactor??.5,metallic:i?.metallicFactor??0,shininess:32*(1-(i?.roughnessFactor??.5)),opacity:a[3]??1,twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},g=n.extensions?.VRMC_materials_mtoon;g?(s.shading="toon",s.shadeColor=g.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let I=i?.baseColorTexture,B=I?e.textures?.[I.index]:void 0;if(B?.source!==void 0){let u=A.imageBytes(e,t,B.source,o);if(u){s.diffuseTextureBuffer=u.bytes,s.diffuseTextureMime=u.mime;let E=B.sampler!==void 0?e.samplers?.[B.sampler]?.wrapS:void 0;s.textureWrap=E===33071?"clamp":E===33648?"mirror":"repeat"}}return s}static buildNodes(e){let t=(e.nodes??[]).map((n,r)=>({name:n.name??`node_${r}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(e.nodes??[]).forEach((n,r)=>{for(let o of n.children??[]){let i=t[o];i&&(i.parent=r)}}),t}static buildAnimations(e,t,n){return(e.animations??[]).map((r,o)=>{let i=[],a=0;for(let s of r.channels){let g=r.samplers[s.sampler],I=s.target.node;if(!g||I===void 0||s.target.path==="weights")continue;let B=A.readFloats(e,t,g.input).data,u=A.readFloats(e,t,g.output).data;a=Math.max(a,B[B.length-1]??0);let E={nodeName:n[I]?.name??`node_${I}`,node:I,times:B,interpolation:g.interpolation==="STEP"?"step":g.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?E.translations=u:s.target.path==="rotation"?E.rotations=u:E.scales=u,i.push(E)}return{name:r.name??`Animation_${o}`,duration:a>0?a:1,fps:30,tracks:i}})}static buildModel(e,t,n,r){let o=(e.materials??[]).map((v,tA,X)=>{let F=v.name??`material_${tA}`;return X.findIndex((sA,H)=>(sA.name??`material_${H}`)===F)===tA?F:`${F}#${tA}`}),i={};(e.materials??[]).forEach((v,tA)=>{let X=o[tA];i[X]=A.buildMaterial(e,t,v,X,r)});let a=A.buildNodes(e),s=(e.skins??[]).map(v=>({joints:v.joints,inverseBindMatrices:v.inverseBindMatrices!==void 0?A.readFloats(e,t,v.inverseBindMatrices).data:Float32Array.from(v.joints.flatMap(()=>cA.identity()))})),g=A.buildAnimations(e,t,a),I=(e.nodes??[]).flatMap((v,tA)=>v.mesh!==void 0?[{mesh:v.mesh,node:tA,skin:v.skin}]:[]),B=I.length>0?I:(e.meshes??[]).map((v,tA)=>({mesh:tA})),u={name:"glTF_Model",meshes:[],materials:i,nodes:a,skins:s,animations:g,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},E=Un(u,void 0,0),Q=1/0,C=1/0,h=1/0,m=-1/0,y=-1/0,D=-1/0,U=(v,tA,X)=>{v<Q&&(Q=v),v>m&&(m=v),tA<C&&(C=tA),tA>y&&(y=tA),X<h&&(h=X),X>D&&(D=X)};for(let v of B){let tA=e.meshes?.[v.mesh];tA&&tA.primitives.forEach((X,F)=>{if(X.attributes.POSITION===void 0||X.mode!==void 0&&X.mode!==4)return;let sA=W=>W===void 0?void 0:A.readFloats(e,t,W),H=sA(X.attributes.POSITION),V=H.count,rA=sA(X.attributes.COLOR_0),K;if(rA){K=new Float32Array(V*4).fill(1);for(let W=0;W<V;W++)for(let nA=0;nA<rA.itemSize;nA++)K[W*4+nA]=rA.data[W*rA.itemSize+nA]??1}let S;if(X.indices!==void 0)S=A.readIndices(e,t,X.indices);else{S=V>65535?new Uint32Array(V):new Uint16Array(V);for(let W=0;W<V;W++)S[W]=W}let _=v.skin!==void 0&&X.attributes.JOINTS_0!==void 0,j=!_&&v.node!==void 0?E[v.node]:void 0;for(let W=0;W<V;W++){let nA=H.data[W*3],lA=H.data[W*3+1],oA=H.data[W*3+2];if(j){let aA=cA.projectPoint(j,[nA,lA,oA]);U(aA[0],aA[1],aA[2])}else U(nA,lA,oA)}u.meshes.push({id:`gltf_mesh_${v.mesh}_${F}${v.node!==void 0?`_n${v.node}`:""}`,name:tA.name??`Mesh_${v.mesh}`,positions:H.data,normals:sA(X.attributes.NORMAL)?.data??new Float32Array(V*3),uvs:sA(X.attributes.TEXCOORD_0)?.data??new Float32Array(V*2),colors:K,jointIndices:_?sA(X.attributes.JOINTS_0)?.data:void 0,jointWeights:_?sA(X.attributes.WEIGHTS_0)?.data:void 0,indices:S,materialName:X.material!==void 0?o[X.material]:void 0,node:v.node,skin:_?v.skin:void 0})})}for(let v of s)if(v.joints.length>he)throw new Error(`glTF skin has ${v.joints.length} joints; the mesh shader holds ${he}`);Number.isFinite(Q)||(Q=C=h=0,m=y=D=0);let M=Math.max(m-Q,y-C,D-h,1e-4),b=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/M:1,x=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],N=[b*x[0],b*x[1],b*x[2]],T=n.center?[(Q+m)*.5,(C+y)*.5,(h+D)*.5]:[0,0,0];u.rootTransform=cA.multiply(cA.scale(N[0],N[1],N[2]),cA.translate(-T[0],-T[1],-T[2]));let Y=[(Q-T[0])*N[0],(C-T[1])*N[1],(h-T[2])*N[2]],O=[(m-T[0])*N[0],(y-T[1])*N[1],(D-T[2])*N[2]];return u.bounds={min:Y,max:O,center:[(Y[0]+O[0])*.5,(Y[1]+O[1])*.5,(Y[2]+O[2])*.5],size:[O[0]-Y[0],O[1]-Y[1],O[2]-Y[2]],boundingSphereRadius:Math.hypot(O[0]-Y[0],O[1]-Y[1],O[2]-Y[2])*.5},u}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=yA.readFileSync(n),o=JA.dirname(n);return A.parse(r,t,o)}return A.parse(e,t)}};function Oe(A,e={}){return ie.load(A,e)}function Rn(A,e={}){return ie.load(A,e)}$();var ii=[[0,0,0,0],...Array.from({length:255},(A,e)=>{let t=(e+1)/256;return[t,t,t,1]})],me=class A{static isVox(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<8?!1:new TextDecoder("ascii").decode(t.subarray(0,4))==="VOX "}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let i=8,a=16,s=16,g=16,I=[],B=[...ii];for(;i+12<=n.byteLength;){let u=new TextDecoder("ascii").decode(n.subarray(i,i+4)),E=r.getUint32(i+4,!0);i+=12;let Q=i;if(u==="SIZE")a=r.getUint32(Q,!0),s=r.getUint32(Q+4,!0),g=r.getUint32(Q+8,!0);else if(u==="XYZI"){let C=r.getUint32(Q,!0),h=Q+4;for(let m=0;m<C&&!(h+4>n.byteLength);m++){let y=r.getUint8(h),D=r.getUint8(h+1),U=r.getUint8(h+2),M=r.getUint8(h+3);h+=4,I.push({x:y,y:D,z:U,colorIndex:M})}}else if(u==="RGBA")for(let C=0;C<256;C++){let h=Q+C*4;if(h+4>n.byteLength)break;let m=r.getUint8(h)/255,y=r.getUint8(h+1)/255,D=r.getUint8(h+2)/255,U=r.getUint8(h+3)/255,M=C===255?0:C+1;B[M]=[m,y,D,U]}i+=E}return A.buildModel(I,B,a,s,g,t)}static buildModel(e,t,n,r,o,i){let a=new Set;e.forEach(R=>a.add(`${R.x},${R.y},${R.z}`));let s=[],g=[],I=[],B=[],u=[],E=(R,gA,AA,IA,q,w)=>{let L=s.length/3;s.push(...R,...gA,...AA,...IA),g.push(...q,...q,...q,...q),I.push(...w,...w,...w,...w),B.push(0,0,1,0,1,1,0,1),u.push(L,L+1,L+2,L,L+2,L+3)};for(let R of e){let{x:gA,y:AA,z:IA,colorIndex:q}=R,w=t[q]??[.8,.8,.8,1],L=gA,z=-IA,iA=AA;a.has(`${gA+1},${AA},${IA}`)||E([L+1,z,iA],[L+1,z-1,iA],[L+1,z-1,iA+1],[L+1,z,iA+1],[1,0,0],w),a.has(`${gA-1},${AA},${IA}`)||E([L,z,iA+1],[L,z-1,iA+1],[L,z-1,iA],[L,z,iA],[-1,0,0],w),a.has(`${gA},${AA},${IA+1}`)||E([L,z-1,iA],[L+1,z-1,iA],[L+1,z-1,iA+1],[L,z-1,iA+1],[0,-1,0],w),a.has(`${gA},${AA},${IA-1}`)||E([L,z,iA+1],[L+1,z,iA+1],[L+1,z,iA],[L,z,iA],[0,1,0],w),a.has(`${gA},${AA+1},${IA}`)||E([L+1,z,iA+1],[L+1,z-1,iA+1],[L,z-1,iA+1],[L,z,iA+1],[0,0,1],w),a.has(`${gA},${AA-1},${IA}`)||E([L,z,iA],[L,z-1,iA],[L+1,z-1,iA],[L+1,z,iA],[0,0,-1],w)}let Q=1/0,C=1/0,h=1/0,m=-1/0,y=-1/0,D=-1/0;for(let R=0;R<s.length;R+=3){let gA=s[R],AA=s[R+1],IA=s[R+2];gA<Q&&(Q=gA),gA>m&&(m=gA),AA<C&&(C=AA),AA>y&&(y=AA),IA<h&&(h=IA),IA>D&&(D=IA)}Number.isFinite(Q)||(Q=C=h=0,m=y=D=0);let U=(Q+m)*.5,M=(C+y)*.5,b=(h+D)*.5,x=m-Q,N=y-C,T=D-h,Y=Math.max(x,N,T,1e-4),O=1;i.normalizeSize&&i.normalizeSize>0&&(O=i.normalizeSize/Y);let v=O,tA=O,X=O;typeof i.scale=="number"?(v*=i.scale,tA*=i.scale,X*=i.scale):Array.isArray(i.scale)&&(v*=i.scale[0],tA*=i.scale[1],X*=i.scale[2]);let F=i.center?U:0,sA=i.center?M:0,H=i.center?b:0,V=new Float32Array(s.length);for(let R=0;R<s.length;R+=3)V[R]=(s[R]-F)*v,V[R+1]=(s[R+1]-sA)*tA,V[R+2]=(s[R+2]-H)*X;let K=V.length/3>65535?new Uint32Array(u):new Uint16Array(u),S={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...i.defaultMaterial},_=[{id:"vox_mesh_0",name:"vox_geometry",positions:V,normals:new Float32Array(g),uvs:new Float32Array(B),colors:new Float32Array(I),indices:K,materialName:"vox_default"}],j=(Q-F)*v,W=(C-sA)*tA,nA=(h-H)*X,lA=(m-F)*v,oA=(y-sA)*tA,aA=(D-H)*X;return{name:"VOX_Model",meshes:_,materials:{vox_default:S},animations:[],bounds:{min:[j,W,nA],max:[lA,oA,aA],center:[(j+lA)*.5,(W+oA)*.5,(nA+aA)*.5],size:[lA-j,oA-W,aA-nA],boundingSphereRadius:Math.hypot(lA-j,oA-W,aA-nA)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=yA.readFileSync(n);return A.parse(r,t)}throw new Error("VOX files must be binary buffers or local file paths")}};function Ve(A,e={}){return me.load(A,e)}$();var pt=19789,oi=15677,ai=16384,si=16640,gi=16656,Ii=16672,Bi=16704,li=45055,ci=40960,ui=40992,Ei=16,Qi=17,ye=class A{static is3DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<6?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(0,!0)===pt}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(r.getUint16(0,!0)!==pt)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let i=[],a={};return A.readChunk(r,0,n.byteLength,i,a),A.buildModel(i,a,t)}static readChunk(e,t,n,r,o,i="Object"){let a=t;for(;a+6<=n&&a+6<=e.byteLength;){let s=e.getUint16(a,!0),g=e.getUint32(a+2,!0);if(g<6)break;let I=a+g,B=a+6,u=Math.min(I,n,e.byteLength);switch(s){case pt:case oi:A.readChunk(e,B,u,r,o,i);break;case ai:{let E=B;for(;E<u&&e.getUint8(E)!==0;)E++;let Q=new Uint8Array(e.buffer,e.byteOffset+B,E-B),C=new TextDecoder("ascii").decode(Q)||"Object";A.readChunk(e,E+1,u,r,o,C);break}case si:{let E={name:i,positions:[],indices:[],uvs:[]};A.readTriMesh(e,B,u,E,o),E.positions.length>0&&E.indices.length>0&&r.push(E);break}case li:A.readMaterial(e,B,u,o);break;default:break}a=I}}static readTriMesh(e,t,n,r,o){let i=t;for(;i+6<=n;){let a=e.getUint16(i,!0),s=e.getUint32(i+2,!0);if(s<6)break;let g=i+s,I=i+6;if(a===gi){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+12>n);E++){let Q=e.getFloat32(u,!0),C=e.getFloat32(u+4,!0),h=e.getFloat32(u+8,!0);r.positions.push(Q,C,h),u+=12}}else if(a===Ii){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+8>n);E++){let Q=e.getUint16(u,!0),C=e.getUint16(u+2,!0),h=e.getUint16(u+4,!0);r.indices.push(Q,C,h),u+=8}}else if(a===Bi){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+8>n);E++){let Q=e.getFloat32(u,!0),C=e.getFloat32(u+4,!0);r.uvs.push(Q,1-C),u+=8}}i=g}}static readMaterial(e,t,n,r){let o=t,i="Material",a=[.8,.8,.8,1];for(;o+6<=n;){let s=e.getUint16(o,!0),g=e.getUint32(o+2,!0);if(g<6)break;let I=o+g,B=o+6;if(s===ci){let u=B;for(;u<I&&e.getUint8(u)!==0;)u++;let E=new Uint8Array(e.buffer,e.byteOffset+B,u-B);i=new TextDecoder("ascii").decode(E)||i}else if(s===ui&&B+6<=I){let u=e.getUint16(B,!0);if(u===Ei&&B+18<=I){let E=e.getFloat32(B+6,!0),Q=e.getFloat32(B+10,!0),C=e.getFloat32(B+14,!0);a=[E,Q,C,1]}else if(u===Qi&&B+9<=I){let E=e.getUint8(B+6)/255,Q=e.getUint8(B+7)/255,C=e.getUint8(B+8)/255;a=[E,Q,C,1]}}o=I}r[i]={name:i,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(e,t,n){let r=1/0,o=1/0,i=1/0,a=-1/0,s=-1/0,g=-1/0;for(let F of e)for(let sA=0;sA<F.positions.length;sA+=3){let H=F.positions[sA],V=F.positions[sA+1],rA=F.positions[sA+2];H<r&&(r=H),H>a&&(a=H),V<o&&(o=V),V>s&&(s=V),rA<i&&(i=rA),rA>g&&(g=rA)}Number.isFinite(r)||(r=o=i=0,a=s=g=0);let I=(r+a)*.5,B=(o+s)*.5,u=(i+g)*.5,E=a-r,Q=s-o,C=g-i,h=Math.max(E,Q,C,1e-4),m=1;n.normalizeSize&&n.normalizeSize>0&&(m=n.normalizeSize/h);let y=m,D=m,U=m;typeof n.scale=="number"?(y*=n.scale,D*=n.scale,U*=n.scale):Array.isArray(n.scale)&&(y*=n.scale[0],D*=n.scale[1],U*=n.scale[2]);let M=n.center?I:0,b=n.center?B:0,x=n.center?u:0,N=e.map((F,sA)=>{let H=new Float32Array(F.positions.length);for(let _=0;_<F.positions.length;_+=3)H[_]=(F.positions[_]-M)*y,H[_+1]=(F.positions[_+1]-b)*D,H[_+2]=(F.positions[_+2]-x)*U;let V=new Float32Array(F.positions.length);for(let _=0;_<F.indices.length;_+=3){let j=F.indices[_],W=F.indices[_+1],nA=F.indices[_+2],lA=[H[j*3],H[j*3+1],H[j*3+2]],oA=[H[W*3],H[W*3+1],H[W*3+2]],aA=[H[nA*3],H[nA*3+1],H[nA*3+2]],R=k.subtract(oA,lA),gA=k.subtract(aA,lA),AA=k.cross(R,gA);V[j*3]+=AA[0],V[j*3+1]+=AA[1],V[j*3+2]+=AA[2],V[W*3]+=AA[0],V[W*3+1]+=AA[1],V[W*3+2]+=AA[2],V[nA*3]+=AA[0],V[nA*3+1]+=AA[1],V[nA*3+2]+=AA[2]}for(let _=0;_<V.length;_+=3){let j=V[_],W=V[_+1],nA=V[_+2],lA=Math.hypot(j,W,nA)||1;V[_]=j/lA,V[_+1]=W/lA,V[_+2]=nA/lA}let rA=F.uvs.length===F.positions.length/3*2?new Float32Array(F.uvs):new Float32Array(F.positions.length/3*2),S=H.length/3>65535?new Uint32Array(F.indices):new Uint16Array(F.indices);return{id:`3ds_mesh_${sA}`,name:F.name,positions:H,normals:V,uvs:rA,indices:S,materialName:F.materialName}}),T=(r-M)*y,Y=(o-b)*D,O=(i-x)*U,v=(a-M)*y,tA=(s-b)*D,X=(g-x)*U;return{name:"3DS_Model",meshes:N,materials:t,animations:[],bounds:{min:[T,Y,O],max:[v,tA,X],center:[(T+v)*.5,(Y+tA)*.5,(O+X)*.5],size:[v-T,tA-Y,X-O],boundingSphereRadius:Math.hypot(v-T,tA-Y,X-O)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=yA.readFileSync(n);return A.parse(r,t)}throw new Error("3DS files must be binary buffers or local file paths")}};function We(A,e={}){return ye.load(A,e)}$();var Dt=class A{static parse(e,t={}){let r=(typeof e=="string"?e:new TextDecoder("utf-8").decode(e instanceof Uint8Array?e:new Uint8Array(e))).split(/\r?\n/),o=0;for(;o<r.length&&(!r[o].trim()||r[o].trim().startsWith("#"));)o++;if(o>=r.length)throw new Error("Empty OFF file");let i=r[o++].trim(),a=!1,s=!1;if(i.startsWith("NOFF")||i.startsWith("STOFF"))a=!0;else if(i.startsWith("COFF"))s=!0;else if(!i.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");i=i.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let g=0,I=0;if(i.length>0){let q=i.split(/\s+/);g=Number.parseInt(q[0]??"0",10),I=Number.parseInt(q[1]??"0",10)}else for(;o<r.length;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/);g=Number.parseInt(w[0]??"0",10),I=Number.parseInt(w[1]??"0",10);break}let B=[],u=[],E=[],Q=[],C=[],h=0;for(;o<r.length&&h<g;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/),L=Number.parseFloat(w[0]??"0")||0,z=Number.parseFloat(w[1]??"0")||0,iA=Number.parseFloat(w[2]??"0")||0;B.push(L,z,iA);let EA=3;if(a){let CA=Number.parseFloat(w[EA]??"0")||0,QA=Number.parseFloat(w[EA+1]??"0")||0,mA=Number.parseFloat(w[EA+2]??"0")||0;u.push(CA,QA,mA),EA+=3}else u.push(0,0,0);if(s&&w.length>EA){let CA=(Number.parseFloat(w[EA]??"255")||0)/(Number.parseFloat(w[EA]??"255")>1?255:1),QA=(Number.parseFloat(w[EA+1]??"255")||0)/(Number.parseFloat(w[EA+1]??"255")>1?255:1),mA=(Number.parseFloat(w[EA+2]??"255")||0)/(Number.parseFloat(w[EA+2]??"255")>1?255:1),dA=w.length>EA+3&&Number.parseFloat(w[EA+3]??"1")||1;E.push(CA,QA,mA,dA)}Q.push(0,0),h++}let m=0;for(;o<r.length&&m<I;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/),L=Number.parseInt(w[0]??"0",10);if(L>=3){let z=Number.parseInt(w[1]??"0",10);for(let iA=1;iA<L-1;iA++){let EA=Number.parseInt(w[iA+1]??"0",10),CA=Number.parseInt(w[iA+2]??"0",10);C.push(z,EA,CA)}}m++}if(!a||t.smoothNormals){for(let q=0;q<C.length;q+=3){let w=C[q],L=C[q+1],z=C[q+2],iA=[B[w*3],B[w*3+1],B[w*3+2]],EA=[B[L*3],B[L*3+1],B[L*3+2]],CA=[B[z*3],B[z*3+1],B[z*3+2]],QA=k.subtract(EA,iA),mA=k.subtract(CA,iA),dA=k.cross(QA,mA);u[w*3]+=dA[0],u[w*3+1]+=dA[1],u[w*3+2]+=dA[2],u[L*3]+=dA[0],u[L*3+1]+=dA[1],u[L*3+2]+=dA[2],u[z*3]+=dA[0],u[z*3+1]+=dA[1],u[z*3+2]+=dA[2]}for(let q=0;q<u.length;q+=3){let w=u[q],L=u[q+1],z=u[q+2],iA=Math.hypot(w,L,z)||1;u[q]=w/iA,u[q+1]=L/iA,u[q+2]=z/iA}}let y=1/0,D=1/0,U=1/0,M=-1/0,b=-1/0,x=-1/0;for(let q=0;q<B.length;q+=3){let w=B[q],L=B[q+1],z=B[q+2];w<y&&(y=w),w>M&&(M=w),L<D&&(D=L),L>b&&(b=L),z<U&&(U=z),z>x&&(x=z)}Number.isFinite(y)||(y=D=U=0,M=b=x=0);let N=(y+M)*.5,T=(D+b)*.5,Y=(U+x)*.5,O=M-y,v=b-D,tA=x-U,X=Math.max(O,v,tA,1e-4),F=1;t.normalizeSize&&t.normalizeSize>0&&(F=t.normalizeSize/X);let sA=F,H=F,V=F;typeof t.scale=="number"?(sA*=t.scale,H*=t.scale,V*=t.scale):Array.isArray(t.scale)&&(sA*=t.scale[0],H*=t.scale[1],V*=t.scale[2]);let rA=t.center?N:0,K=t.center?T:0,S=t.center?Y:0,_=new Float32Array(B.length);for(let q=0;q<B.length;q+=3)_[q]=(B[q]-rA)*sA,_[q+1]=(B[q+1]-K)*H,_[q+2]=(B[q+2]-S)*V;let W=_.length/3>65535?new Uint32Array(C):new Uint16Array(C),nA={name:"off_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...t.defaultMaterial},lA=[{id:"off_mesh_0",name:"off_geometry",positions:_,normals:new Float32Array(u),uvs:new Float32Array(Q),colors:s?new Float32Array(E):void 0,indices:W,materialName:"off_default"}],oA=(y-rA)*sA,aA=(D-K)*H,R=(U-S)*V,gA=(M-rA)*sA,AA=(b-K)*H,IA=(x-S)*V;return{name:"OFF_Model",meshes:lA,materials:{off_default:nA},animations:[],bounds:{min:[oA,aA,R],max:[gA,AA,IA],center:[(oA+gA)*.5,(aA+AA)*.5,(R+IA)*.5],size:[gA-oA,AA-aA,IA-R],boundingSphereRadius:Math.hypot(gA-oA,AA-aA,IA-R)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=yA.readFileSync(n,"utf-8");return A.parse(r,t)}return A.parse(e,t)}};function Xe(A,e={}){return Dt.load(A,e)}$();$();var Ln=`
|
|
233
|
+
`)?t.length>=84+r*50:!a.startsWith("solid")}static parse(e,t={}){if(typeof e=="string")return A.parseAscii(e,t);let n=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isBinary(n))return A.parseBinary(n,t);let r=new TextDecoder("utf-8").decode(n);return A.parseAscii(r,t)}static parseBinary(e,t={}){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(80,!0),o=[],i=[],a=[],s=84;for(let g=0;g<r&&!(s+50>e.byteLength);g++){let I=n.getFloat32(s,!0),B=n.getFloat32(s+4,!0),u=n.getFloat32(s+8,!0);s+=12;let E=n.getFloat32(s,!0),Q=n.getFloat32(s+4,!0),C=n.getFloat32(s+8,!0);s+=12;let h=n.getFloat32(s,!0),m=n.getFloat32(s+4,!0),p=n.getFloat32(s+8,!0);s+=12;let D=n.getFloat32(s,!0),U=n.getFloat32(s+4,!0),M=n.getFloat32(s+8,!0);s+=12,s+=2;let b=I,x=B,N=u;if(b===0&&x===0&&N===0){let Y=k.subtract([h,m,p],[E,Q,C]),O=k.subtract([D,U,M],[E,Q,C]),v=k.normalize(k.cross(Y,O));b=v[0],x=v[1],N=v[2]}let T=o.length/3;o.push(E,Q,C,h,m,p,D,U,M),i.push(b,x,N,b,x,N,b,x,N),a.push(T,T+1,T+2)}return A.finalizeModel(o,i,a,t)}static parseAscii(e,t={}){let n=[],r=[],o=[],i=e.split(/\r?\n/),a=[0,0,1],s=[];for(let g of i){let I=g.trim();if(I){if(I.startsWith("facet normal")){let B=I.split(/\s+/),u=Number.parseFloat(B[2]??"0")||0,E=Number.parseFloat(B[3]??"0")||0,Q=Number.parseFloat(B[4]??"0")||0;a=[u,E,Q],s=[]}else if(I.startsWith("vertex")){let B=I.split(/\s+/),u=Number.parseFloat(B[1]??"0")||0,E=Number.parseFloat(B[2]??"0")||0,Q=Number.parseFloat(B[3]??"0")||0;s.push([u,E,Q])}else if(I.startsWith("endfacet")){if(s.length>=3){let B=s[0],u=s[1],E=s[2],Q=a;if(Q[0]===0&&Q[1]===0&&Q[2]===0){let C=k.subtract(u,B),h=k.subtract(E,B);Q=k.normalize(k.cross(C,h))}for(let C=1;C<s.length-1;C++){let h=s[C],m=s[C+1],p=n.length/3;n.push(B[0],B[1],B[2],h[0],h[1],h[2],m[0],m[1],m[2]),r.push(Q[0],Q[1],Q[2],Q[0],Q[1],Q[2],Q[0],Q[1],Q[2]),o.push(p,p+1,p+2)}}s=[]}}}return A.finalizeModel(n,r,o,t)}static finalizeModel(e,t,n,r={}){let o=1/0,i=1/0,a=1/0,s=-1/0,g=-1/0,I=-1/0;for(let S=0;S<e.length;S+=3){let _=e[S],j=e[S+1],W=e[S+2];_<o&&(o=_),_>s&&(s=_),j<i&&(i=j),j>g&&(g=j),W<a&&(a=W),W>I&&(I=W)}Number.isFinite(o)||(o=i=a=0,s=g=I=0);let B=(o+s)*.5,u=(i+g)*.5,E=(a+I)*.5,Q=s-o,C=g-i,h=I-a,m=Math.max(Q,C,h,1e-4),p=1;r.normalizeSize&&r.normalizeSize>0&&(p=r.normalizeSize/m);let D=p,U=p,M=p;typeof r.scale=="number"?(D*=r.scale,U*=r.scale,M*=r.scale):Array.isArray(r.scale)&&(D*=r.scale[0],U*=r.scale[1],M*=r.scale[2]);let b=r.center?B:0,x=r.center?u:0,N=r.center?E:0,T=new Float32Array(e.length),Y=new Float32Array(e.length/3*2);for(let S=0;S<e.length;S+=3){let _=(e[S]-b)*D,j=(e[S+1]-x)*U,W=(e[S+2]-N)*M;T[S]=_,T[S+1]=j,T[S+2]=W;let nA=S/3*2;Y[nA]=Q>0?(e[S]-o)/Q:0,Y[nA+1]=C>0?(e[S+1]-i)/C:0}let v=T.length/3>65535?new Uint32Array(n):new Uint16Array(n),tA={name:"stl_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...r.defaultMaterial},X=[{id:"stl_mesh_0",name:"stl_geometry",positions:T,normals:new Float32Array(t),uvs:Y,indices:v,materialName:"stl_default"}],F=(o-b)*D,sA=(i-x)*U,H=(a-N)*M,V=(s-b)*D,rA=(g-x)*U,K=(I-N)*M;return{name:"STL_Model",meshes:X,materials:{stl_default:tA},animations:[],bounds:{min:[F,sA,H],max:[V,rA,K],center:[(F+V)*.5,(sA+rA)*.5,(H+K)*.5],size:[V-F,rA-sA,K-H],boundingSphereRadius:Math.hypot(V-F,rA-sA,K-H)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function fe(A,e={}){return Ce.load(A,e)}$();var mt=class A{static parse(e,t={}){let n=typeof e=="string"?new TextEncoder().encode(e):e instanceof Uint8Array?e:new Uint8Array(e),r=A.extractHeader(n),o=A.parseHeader(r.text);if(o.format==="ascii"){let a=new TextDecoder("utf-8").decode(n.subarray(r.endOffset));return A.parseAsciiBody(o,a,t)}let i=o.format==="binary_little_endian";return A.parseBinaryBody(o,n.subarray(r.endOffset),i,t)}static extractHeader(e){let t=Math.min(e.length,1e4),n=e.subarray(0,t),r=new TextDecoder("utf-8").decode(n),o=r.indexOf("end_header");if(o===-1)throw new Error("Invalid PLY file: 'end_header' marker not found");let i=r.indexOf(`
|
|
234
|
+
`,o);return i===-1?i=o+10:i+=1,{text:r.substring(0,i),endOffset:i}}static parseHeader(e){let t=e.split(/\r?\n/),n="ascii",r="1.0",o=[],i=null;for(let a of t){let s=a.trim();if(!s||s.startsWith("comment"))continue;let g=s.split(/\s+/),I=g[0]?.toLowerCase();if(I!=="ply"){if(I==="format"){let B=g[1]?.toLowerCase();B==="binary_little_endian"?n="binary_little_endian":B==="binary_big_endian"?n="binary_big_endian":n="ascii",r=g[2]??"1.0"}else if(I==="element"){let B=g[1]??"",u=Number.parseInt(g[2]??"0",10);i={name:B,count:u,properties:[]},o.push(i)}else if(I==="property"&&i)g[1]?.toLowerCase()==="list"?i.properties.push({name:g[4]??"",type:"list",isList:!0,countType:g[2]??"uchar",itemType:g[3]??"int"}):i.properties.push({name:g[2]??"",type:g[1]?.toLowerCase()??"float"});else if(I==="end_header")break}}return{format:n,version:r,elements:o}}static parseAsciiBody(e,t,n){let r=e.elements.find(F=>F.name==="vertex"),o=e.elements.find(F=>F.name==="face"),i=r?.count??0,a=o?.count??0,s=[],g=[],I=[],B=[],u=[],E=r?.properties??[],Q=E.findIndex(F=>F.name==="x"),C=E.findIndex(F=>F.name==="y"),h=E.findIndex(F=>F.name==="z"),m=E.findIndex(F=>F.name==="nx"),p=E.findIndex(F=>F.name==="ny"),D=E.findIndex(F=>F.name==="nz"),U=E.findIndex(F=>F.name==="u"||F.name==="s"||F.name==="texture_u"),M=E.findIndex(F=>F.name==="v"||F.name==="t"||F.name==="texture_v"),b=E.findIndex(F=>F.name==="red"||F.name==="r"),x=E.findIndex(F=>F.name==="green"||F.name==="g"),N=E.findIndex(F=>F.name==="blue"||F.name==="b"),T=E.findIndex(F=>F.name==="alpha"||F.name==="a"),Y=m!==-1&&p!==-1&&D!==-1,O=b!==-1&&x!==-1&&N!==-1,v=U!==-1&&M!==-1,tA=t.trim().split(/\r?\n/),X=0;for(let F=0;F<i&&!(X>=tA.length);F++){let sA=tA[X++]?.trim();if(!sA)continue;let H=sA.split(/\s+/),V=Number.parseFloat(H[Q]??"0")||0,rA=Number.parseFloat(H[C]??"0")||0,K=Number.parseFloat(H[h]??"0")||0;if(s.push(V,rA,K),Y){let S=Number.parseFloat(H[m]??"0")||0,_=Number.parseFloat(H[p]??"0")||0,j=Number.parseFloat(H[D]??"0")||0;g.push(S,_,j)}else g.push(0,0,0);if(v){let S=Number.parseFloat(H[U]??"0")||0,_=Number.parseFloat(H[M]??"0")||0;I.push(S,1-_)}else I.push(0,0);if(O){let S=(Number.parseFloat(H[b]??"255")||0)/255,_=(Number.parseFloat(H[x]??"255")||0)/255,j=(Number.parseFloat(H[N]??"255")||0)/255,W=T!==-1?(Number.parseFloat(H[T]??"255")||0)/255:1;B.push(S,_,j,W)}}for(let F=0;F<a&&!(X>=tA.length);F++){let sA=tA[X++]?.trim();if(!sA)continue;let H=sA.split(/\s+/),V=Number.parseInt(H[0]??"0",10);if(V>=3){let rA=Number.parseInt(H[1]??"0",10);for(let K=1;K<V-1;K++){let S=Number.parseInt(H[K+1]??"0",10),_=Number.parseInt(H[K+2]??"0",10);u.push(rA,S,_)}}}return A.finalizeModel(s,g,I,O?B:void 0,u,Y,n)}static parseBinaryBody(e,t,n,r){let o=new DataView(t.buffer,t.byteOffset,t.byteLength),i=0,a=e.elements.find(b=>b.name==="vertex"),s=e.elements.find(b=>b.name==="face"),g=a?.count??0,I=s?.count??0,B=[],u=[],E=[],Q=[],C=[],h=a?.properties??[],m=h.some(b=>b.name==="nx"),p=h.some(b=>b.name==="red"||b.name==="r"),D=b=>{let x=0;switch(b.toLowerCase()){case"char":case"int8":x=o.getInt8(i),i+=1;break;case"uchar":case"uint8":x=o.getUint8(i),i+=1;break;case"short":case"int16":x=o.getInt16(i,n),i+=2;break;case"ushort":case"uint16":x=o.getUint16(i,n),i+=2;break;case"int":case"int32":x=o.getInt32(i,n),i+=4;break;case"uint":case"uint32":x=o.getUint32(i,n),i+=4;break;case"float":case"float32":x=o.getFloat32(i,n),i+=4;break;case"double":case"float64":x=o.getFloat64(i,n),i+=8;break;default:x=o.getFloat32(i,n),i+=4;break}return x};for(let b=0;b<g;b++){let x=0,N=0,T=0,Y=0,O=0,v=0,tA=0,X=0,F=1,sA=1,H=1,V=1;for(let rA of h){let K=D(rA.type),S=rA.name.toLowerCase();S==="x"?x=K:S==="y"?N=K:S==="z"?T=K:S==="nx"?Y=K:S==="ny"?O=K:S==="nz"?v=K:S==="u"||S==="s"?tA=K:S==="v"||S==="t"?X=K:S==="red"||S==="r"?F=rA.type.includes("int")?K/255:K:S==="green"||S==="g"?sA=rA.type.includes("int")?K/255:K:S==="blue"||S==="b"?H=rA.type.includes("int")?K/255:K:(S==="alpha"||S==="a")&&(V=rA.type.includes("int")?K/255:K)}B.push(x,N,T),u.push(Y,O,v),E.push(tA,1-X),p&&Q.push(F,sA,H,V)}let M=(s?.properties??[]).find(b=>b.isList);for(let b=0;b<I&&!(i>=t.byteLength);b++)if(M){let x=D(M.countType??"uchar"),N=[];for(let T=0;T<x;T++)N.push(D(M.itemType??"int"));if(N.length>=3){let T=N[0];for(let Y=1;Y<N.length-1;Y++)C.push(T,N[Y],N[Y+1])}}return A.finalizeModel(B,u,E,p?Q:void 0,C,m,r)}static finalizeModel(e,t,n,r,o,i,a){if(!i||a.smoothNormals){for(let j=0;j<o.length;j+=3){let W=o[j],nA=o[j+1],lA=o[j+2],oA=[e[W*3],e[W*3+1],e[W*3+2]],aA=[e[nA*3],e[nA*3+1],e[nA*3+2]],R=[e[lA*3],e[lA*3+1],e[lA*3+2]],gA=k.subtract(aA,oA),AA=k.subtract(R,oA),IA=k.cross(gA,AA);t[W*3]+=IA[0],t[W*3+1]+=IA[1],t[W*3+2]+=IA[2],t[nA*3]+=IA[0],t[nA*3+1]+=IA[1],t[nA*3+2]+=IA[2],t[lA*3]+=IA[0],t[lA*3+1]+=IA[1],t[lA*3+2]+=IA[2]}for(let j=0;j<t.length;j+=3){let W=t[j],nA=t[j+1],lA=t[j+2],oA=Math.hypot(W,nA,lA)||1;t[j]=W/oA,t[j+1]=nA/oA,t[j+2]=lA/oA}}let s=1/0,g=1/0,I=1/0,B=-1/0,u=-1/0,E=-1/0;for(let j=0;j<e.length;j+=3){let W=e[j],nA=e[j+1],lA=e[j+2];W<s&&(s=W),W>B&&(B=W),nA<g&&(g=nA),nA>u&&(u=nA),lA<I&&(I=lA),lA>E&&(E=lA)}Number.isFinite(s)||(s=g=I=0,B=u=E=0);let Q=(s+B)*.5,C=(g+u)*.5,h=(I+E)*.5,m=B-s,p=u-g,D=E-I,U=Math.max(m,p,D,1e-4),M=1;a.normalizeSize&&a.normalizeSize>0&&(M=a.normalizeSize/U);let b=M,x=M,N=M;typeof a.scale=="number"?(b*=a.scale,x*=a.scale,N*=a.scale):Array.isArray(a.scale)&&(b*=a.scale[0],x*=a.scale[1],N*=a.scale[2]);let T=a.center?Q:0,Y=a.center?C:0,O=a.center?h:0,v=new Float32Array(e.length);for(let j=0;j<e.length;j+=3)v[j]=(e[j]-T)*b,v[j+1]=(e[j+1]-Y)*x,v[j+2]=(e[j+2]-O)*N;let X=v.length/3>65535?new Uint32Array(o):new Uint16Array(o),F={name:"ply_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial},sA=[{id:"ply_mesh_0",name:"ply_geometry",positions:v,normals:new Float32Array(t),uvs:new Float32Array(n),colors:r?new Float32Array(r):void 0,indices:X,materialName:"ply_default"}],H=(s-T)*b,V=(g-Y)*x,rA=(I-O)*N,K=(B-T)*b,S=(u-Y)*x,_=(E-O)*N;return{name:"PLY_Model",meshes:sA,materials:{ply_default:F},animations:[],bounds:{min:[H,V,rA],max:[K,S,_],center:[(H+K)*.5,(V+S)*.5,(rA+_)*.5],size:[K-H,S-V,_-rA],boundingSphereRadius:Math.hypot(K-H,S-V,_-rA)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function de(A,e={}){return mt.load(A,e)}$();$();var he=128;function qr(A,e,t){let[n,r,o,i]=e,a=n*n,s=r*r,g=o*o,I=n*r,B=n*o,u=r*o,E=i*n,Q=i*r,C=i*o;return[(1-2*(s+g))*t[0],2*(I+C)*t[0],2*(B-Q)*t[0],0,2*(I-C)*t[1],(1-2*(a+g))*t[1],2*(u+E)*t[1],0,2*(B+Q)*t[2],2*(u-E)*t[2],(1-2*(a+s))*t[2],0,A[0],A[1],A[2],1]}function Gn(A){let e=Math.hypot(A[0],A[1],A[2],A[3])||1;return[A[0]/e,A[1]/e,A[2]/e,A[3]/e]}function jr(A,e,t){let n=A[0]*e[0]+A[1]*e[1]+A[2]*e[2]+A[3]*e[3],r=n<0?-1:1;if(n*=r,n>.9995)return Gn([A[0]+(r*e[0]-A[0])*t,A[1]+(r*e[1]-A[1])*t,A[2]+(r*e[2]-A[2])*t,A[3]+(r*e[3]-A[3])*t]);let o=Math.acos(n),i=Math.sin(o),a=Math.sin((1-t)*o)/i,s=r*Math.sin(t*o)/i;return[A[0]*a+e[0]*s,A[1]*a+e[1]*s,A[2]*a+e[2]*s,A[3]*a+e[3]*s]}function _r(A,e){let t=0,n=A.length-1;for(;t<n;){let r=t+n+1>>1;(A[r]??0)<=e?t=r:n=r-1}return t}function jA(A,e,t,n,r=1){let o=n?(e*3+r)*t:e*t;return Array.from(A.subarray(o,o+t))}function pt(A,e,t,n){let{times:r}=A,o=A.interpolation==="cubic",i=r.length-1;if(n<=(r[0]??0))return jA(e,0,t,o);if(n>=(r[i]??0))return jA(e,i,t,o);let a=_r(r,n);if(A.interpolation==="step")return jA(e,a,t,o);let s=r[a]??0,g=(r[a+1]??s)-s,I=g>0?(n-s)/g:0,B=jA(e,a,t,o),u=jA(e,a+1,t,o);if(o){let E=jA(e,a,t,!0,2),Q=jA(e,a+1,t,!0,0),C=I*I,h=C*I,m=B.map((p,D)=>(2*h-3*C+1)*p+(h-2*C+I)*g*(E[D]??0)+(-2*h+3*C)*(u[D]??0)+(h-C)*g*(Q[D]??0));return t===4?Gn(m):m}return t===4?jr(B,u,I):B.map((E,Q)=>E+((u[Q]??E)-E)*I)}function $r(A,e,t){let n=A.map(a=>[...a.translation]),r=A.map(a=>[...a.rotation]),o=A.map(a=>[...a.scale]),i=new Map(A.map((a,s)=>[a.name,s]));for(let a of e?.tracks??[]){let s=a.node??i.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=pt(a,a.translations,3,t)),a.rotations&&(r[s]=pt(a,a.rotations,4,t)),a.scales&&(o[s]=pt(a,a.scales,3,t)))}return A.map((a,s)=>a.matrix??qr(n[s],r[s],o[s]))}function Un(A,e,t){let n=A.nodes??[],r=$r(n,e,t),o=new Array(n.length),i=a=>{let s=o[a];if(s)return s;let g=n[a].parent,I=g<0?r[a]:cA.multiply(i(g),r[a]);return o[a]=I,I};return n.map((a,s)=>i(s))}function Qa(A,e,t){let n=A.skins?.[e];if(!n)throw new Error(`model has no skin ${e}`);let r=new Float32Array(he*16);for(let o=0;o<he;o++){let i=n.joints[o];if(i===void 0){r.set(cA.identity(),o*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(o*16,o*16+16));r.set(cA.multiply(t[i],a),o*16)}return r}var Ai={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ei={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function ti(A,e=!1){switch(A){case 5120:return e?(t,n)=>Math.max(t.getInt8(n)/127,-1):(t,n)=>t.getInt8(n);case 5121:return e?(t,n)=>t.getUint8(n)/255:(t,n)=>t.getUint8(n);case 5122:return e?(t,n)=>Math.max(t.getInt16(n,!0)/32767,-1):(t,n)=>t.getInt16(n,!0);case 5123:return e?(t,n)=>t.getUint16(n,!0)/65535:(t,n)=>t.getUint16(n,!0);case 5125:return(t,n)=>t.getUint32(n,!0);default:return(t,n)=>t.getFloat32(n,!0)}}var Sn=1179937895,ni=1313821514,ri=5130562,ie=class A{static isGlb(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<12?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0)===Sn}static parse(e,t={},n){let r,o=[];if(typeof e=="string")try{r=JSON.parse(e)}catch(i){throw new Error(`Failed to parse glTF JSON: ${String(i)}`)}else{let i=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isGlb(i)){let a=A.unpackGlb(i);r=a.doc,a.binBuffer&&o.push(a.binBuffer)}else{let a=new TextDecoder("utf-8").decode(i);r=JSON.parse(a)}}if(r.buffers)for(let i=0;i<r.buffers.length;i++){if(i===0&&o.length>0)continue;let a=r.buffers[i];if(a.uri){if(a.uri.startsWith("data:")){let s=a.uri.indexOf("base64,");if(s!==-1){let g=a.uri.substring(s+7),I=Buffer.from(g,"base64");o[i]=new Uint8Array(I.buffer,I.byteOffset,I.byteLength)}}else if(n){let s=JA.isAbsolute(a.uri)?a.uri:JA.join(n,a.uri);if(pA.existsSync(s)){let g=pA.readFileSync(s);o[i]=new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}}}}return A.buildModel(r,o,t,n)}static unpackGlb(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0,!0),r=t.getUint32(8,!0);if(n!==Sn)throw new Error("Invalid GLB header: magic mismatch");let o=12,i=null,a;for(;o<r&&o<e.byteLength;){let s=t.getUint32(o,!0),g=t.getUint32(o+4,!0);o+=8;let I=e.subarray(o,o+s);if(o+=s,g===ni){let B=new TextDecoder("utf-8").decode(I);i=JSON.parse(B)}else g===ri&&(a=I)}if(!i)throw new Error("Invalid GLB: JSON chunk not found");return{doc:i,binBuffer:a}}static readFloats(e,t,n){let r=e.accessors?.[n];if(!r)throw new Error(`Accessor ${n} not found`);let o=Ai[r.type]??1,i=new Float32Array(r.count*o);if(r.bufferView===void 0)return{data:i,itemSize:o,count:r.count};let a=e.bufferViews?.[r.bufferView];if(!a)throw new Error(`BufferView ${r.bufferView} not found`);let s=t[a.buffer];if(!s)throw new Error(`Binary buffer ${a.buffer} not loaded`);let g=ei[r.componentType]??4,I=a.byteStride??g*o,B=new DataView(s.buffer,s.byteOffset,s.byteLength),u=(a.byteOffset??0)+(r.byteOffset??0),E=ti(r.componentType,r.normalized);for(let Q=0;Q<r.count;Q++)for(let C=0;C<o;C++)i[Q*o+C]=E(B,u+Q*I+C*g);return{data:i,itemSize:o,count:r.count}}static readIndices(e,t,n){let{data:r}=A.readFloats(e,t,n);return r.reduce((i,a)=>a>i?a:i,0)>65535?Uint32Array.from(r):Uint16Array.from(r)}static imageBytes(e,t,n,r){let o=e.images?.[n];if(!o)return;if(o.bufferView!==void 0){let s=e.bufferViews?.[o.bufferView],g=s?t[s.buffer]:void 0;if(!s||!g)return;let I=s.byteOffset??0;return{bytes:g.subarray(I,I+s.byteLength),mime:o.mimeType??"image/png"}}if(!o.uri)return;if(o.uri.startsWith("data:")){let s=o.uri.indexOf(","),g=o.uri.slice(5,o.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(o.uri.slice(s+1),"base64")),mime:g}}if(!r)return;let i=JA.isAbsolute(o.uri)?o.uri:JA.join(r,decodeURIComponent(o.uri));if(!pA.existsSync(i))return;let a=JA.extname(i).toLowerCase();return{bytes:new Uint8Array(pA.readFileSync(i)),mime:o.mimeType??(a===".png"?"image/png":"image/jpeg")}}static buildMaterial(e,t,n,r,o){let i=n.pbrMetallicRoughness,a=i?.baseColorFactor??[1,1,1,1],s={name:r,diffuseColor:a,roughness:i?.roughnessFactor??.5,metallic:i?.metallicFactor??0,shininess:32*(1-(i?.roughnessFactor??.5)),opacity:a[3]??1,twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},g=n.extensions?.VRMC_materials_mtoon;g?(s.shading="toon",s.shadeColor=g.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let I=i?.baseColorTexture,B=I?e.textures?.[I.index]:void 0;if(B?.source!==void 0){let u=A.imageBytes(e,t,B.source,o);if(u){s.diffuseTextureBuffer=u.bytes,s.diffuseTextureMime=u.mime;let E=B.sampler!==void 0?e.samplers?.[B.sampler]?.wrapS:void 0;s.textureWrap=E===33071?"clamp":E===33648?"mirror":"repeat"}}return s}static buildNodes(e){let t=(e.nodes??[]).map((n,r)=>({name:n.name??`node_${r}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(e.nodes??[]).forEach((n,r)=>{for(let o of n.children??[]){let i=t[o];i&&(i.parent=r)}}),t}static buildAnimations(e,t,n){return(e.animations??[]).map((r,o)=>{let i=[],a=0;for(let s of r.channels){let g=r.samplers[s.sampler],I=s.target.node;if(!g||I===void 0||s.target.path==="weights")continue;let B=A.readFloats(e,t,g.input).data,u=A.readFloats(e,t,g.output).data;a=Math.max(a,B[B.length-1]??0);let E={nodeName:n[I]?.name??`node_${I}`,node:I,times:B,interpolation:g.interpolation==="STEP"?"step":g.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?E.translations=u:s.target.path==="rotation"?E.rotations=u:E.scales=u,i.push(E)}return{name:r.name??`Animation_${o}`,duration:a>0?a:1,fps:30,tracks:i}})}static buildModel(e,t,n,r){let o=(e.materials??[]).map((v,tA,X)=>{let F=v.name??`material_${tA}`;return X.findIndex((sA,H)=>(sA.name??`material_${H}`)===F)===tA?F:`${F}#${tA}`}),i={};(e.materials??[]).forEach((v,tA)=>{let X=o[tA];i[X]=A.buildMaterial(e,t,v,X,r)});let a=A.buildNodes(e),s=(e.skins??[]).map(v=>({joints:v.joints,inverseBindMatrices:v.inverseBindMatrices!==void 0?A.readFloats(e,t,v.inverseBindMatrices).data:Float32Array.from(v.joints.flatMap(()=>cA.identity()))})),g=A.buildAnimations(e,t,a),I=(e.nodes??[]).flatMap((v,tA)=>v.mesh!==void 0?[{mesh:v.mesh,node:tA,skin:v.skin}]:[]),B=I.length>0?I:(e.meshes??[]).map((v,tA)=>({mesh:tA})),u={name:"glTF_Model",meshes:[],materials:i,nodes:a,skins:s,animations:g,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},E=Un(u,void 0,0),Q=1/0,C=1/0,h=1/0,m=-1/0,p=-1/0,D=-1/0,U=(v,tA,X)=>{v<Q&&(Q=v),v>m&&(m=v),tA<C&&(C=tA),tA>p&&(p=tA),X<h&&(h=X),X>D&&(D=X)};for(let v of B){let tA=e.meshes?.[v.mesh];tA&&tA.primitives.forEach((X,F)=>{if(X.attributes.POSITION===void 0||X.mode!==void 0&&X.mode!==4)return;let sA=W=>W===void 0?void 0:A.readFloats(e,t,W),H=sA(X.attributes.POSITION),V=H.count,rA=sA(X.attributes.COLOR_0),K;if(rA){K=new Float32Array(V*4).fill(1);for(let W=0;W<V;W++)for(let nA=0;nA<rA.itemSize;nA++)K[W*4+nA]=rA.data[W*rA.itemSize+nA]??1}let S;if(X.indices!==void 0)S=A.readIndices(e,t,X.indices);else{S=V>65535?new Uint32Array(V):new Uint16Array(V);for(let W=0;W<V;W++)S[W]=W}let _=v.skin!==void 0&&X.attributes.JOINTS_0!==void 0,j=!_&&v.node!==void 0?E[v.node]:void 0;for(let W=0;W<V;W++){let nA=H.data[W*3],lA=H.data[W*3+1],oA=H.data[W*3+2];if(j){let aA=cA.projectPoint(j,[nA,lA,oA]);U(aA[0],aA[1],aA[2])}else U(nA,lA,oA)}u.meshes.push({id:`gltf_mesh_${v.mesh}_${F}${v.node!==void 0?`_n${v.node}`:""}`,name:tA.name??`Mesh_${v.mesh}`,positions:H.data,normals:sA(X.attributes.NORMAL)?.data??new Float32Array(V*3),uvs:sA(X.attributes.TEXCOORD_0)?.data??new Float32Array(V*2),colors:K,jointIndices:_?sA(X.attributes.JOINTS_0)?.data:void 0,jointWeights:_?sA(X.attributes.WEIGHTS_0)?.data:void 0,indices:S,materialName:X.material!==void 0?o[X.material]:void 0,node:v.node,skin:_?v.skin:void 0})})}for(let v of s)if(v.joints.length>he)throw new Error(`glTF skin has ${v.joints.length} joints; the mesh shader holds ${he}`);Number.isFinite(Q)||(Q=C=h=0,m=p=D=0);let M=Math.max(m-Q,p-C,D-h,1e-4),b=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/M:1,x=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],N=[b*x[0],b*x[1],b*x[2]],T=n.center?[(Q+m)*.5,(C+p)*.5,(h+D)*.5]:[0,0,0];u.rootTransform=cA.multiply(cA.scale(N[0],N[1],N[2]),cA.translate(-T[0],-T[1],-T[2]));let Y=[(Q-T[0])*N[0],(C-T[1])*N[1],(h-T[2])*N[2]],O=[(m-T[0])*N[0],(p-T[1])*N[1],(D-T[2])*N[2]];return u.bounds={min:Y,max:O,center:[(Y[0]+O[0])*.5,(Y[1]+O[1])*.5,(Y[2]+O[2])*.5],size:[O[0]-Y[0],O[1]-Y[1],O[2]-Y[2]],boundingSphereRadius:Math.hypot(O[0]-Y[0],O[1]-Y[1],O[2]-Y[2])*.5},u}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n),o=JA.dirname(n);return A.parse(r,t,o)}return A.parse(e,t)}};function Oe(A,e={}){return ie.load(A,e)}function Rn(A,e={}){return ie.load(A,e)}$();var ii=[[0,0,0,0],...Array.from({length:255},(A,e)=>{let t=(e+1)/256;return[t,t,t,1]})],me=class A{static isVox(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<8?!1:new TextDecoder("ascii").decode(t.subarray(0,4))==="VOX "}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let i=8,a=16,s=16,g=16,I=[],B=[...ii];for(;i+12<=n.byteLength;){let u=new TextDecoder("ascii").decode(n.subarray(i,i+4)),E=r.getUint32(i+4,!0);i+=12;let Q=i;if(u==="SIZE")a=r.getUint32(Q,!0),s=r.getUint32(Q+4,!0),g=r.getUint32(Q+8,!0);else if(u==="XYZI"){let C=r.getUint32(Q,!0),h=Q+4;for(let m=0;m<C&&!(h+4>n.byteLength);m++){let p=r.getUint8(h),D=r.getUint8(h+1),U=r.getUint8(h+2),M=r.getUint8(h+3);h+=4,I.push({x:p,y:D,z:U,colorIndex:M})}}else if(u==="RGBA")for(let C=0;C<256;C++){let h=Q+C*4;if(h+4>n.byteLength)break;let m=r.getUint8(h)/255,p=r.getUint8(h+1)/255,D=r.getUint8(h+2)/255,U=r.getUint8(h+3)/255,M=C===255?0:C+1;B[M]=[m,p,D,U]}i+=E}return A.buildModel(I,B,a,s,g,t)}static buildModel(e,t,n,r,o,i){let a=new Set;e.forEach(R=>a.add(`${R.x},${R.y},${R.z}`));let s=[],g=[],I=[],B=[],u=[],E=(R,gA,AA,IA,q,w)=>{let L=s.length/3;s.push(...R,...gA,...AA,...IA),g.push(...q,...q,...q,...q),I.push(...w,...w,...w,...w),B.push(0,0,1,0,1,1,0,1),u.push(L,L+1,L+2,L,L+2,L+3)};for(let R of e){let{x:gA,y:AA,z:IA,colorIndex:q}=R,w=t[q]??[.8,.8,.8,1],L=gA,z=-IA,iA=AA;a.has(`${gA+1},${AA},${IA}`)||E([L+1,z,iA],[L+1,z-1,iA],[L+1,z-1,iA+1],[L+1,z,iA+1],[1,0,0],w),a.has(`${gA-1},${AA},${IA}`)||E([L,z,iA+1],[L,z-1,iA+1],[L,z-1,iA],[L,z,iA],[-1,0,0],w),a.has(`${gA},${AA},${IA+1}`)||E([L,z-1,iA],[L+1,z-1,iA],[L+1,z-1,iA+1],[L,z-1,iA+1],[0,-1,0],w),a.has(`${gA},${AA},${IA-1}`)||E([L,z,iA+1],[L+1,z,iA+1],[L+1,z,iA],[L,z,iA],[0,1,0],w),a.has(`${gA},${AA+1},${IA}`)||E([L+1,z,iA+1],[L+1,z-1,iA+1],[L,z-1,iA+1],[L,z,iA+1],[0,0,1],w),a.has(`${gA},${AA-1},${IA}`)||E([L,z,iA],[L,z-1,iA],[L+1,z-1,iA],[L+1,z,iA],[0,0,-1],w)}let Q=1/0,C=1/0,h=1/0,m=-1/0,p=-1/0,D=-1/0;for(let R=0;R<s.length;R+=3){let gA=s[R],AA=s[R+1],IA=s[R+2];gA<Q&&(Q=gA),gA>m&&(m=gA),AA<C&&(C=AA),AA>p&&(p=AA),IA<h&&(h=IA),IA>D&&(D=IA)}Number.isFinite(Q)||(Q=C=h=0,m=p=D=0);let U=(Q+m)*.5,M=(C+p)*.5,b=(h+D)*.5,x=m-Q,N=p-C,T=D-h,Y=Math.max(x,N,T,1e-4),O=1;i.normalizeSize&&i.normalizeSize>0&&(O=i.normalizeSize/Y);let v=O,tA=O,X=O;typeof i.scale=="number"?(v*=i.scale,tA*=i.scale,X*=i.scale):Array.isArray(i.scale)&&(v*=i.scale[0],tA*=i.scale[1],X*=i.scale[2]);let F=i.center?U:0,sA=i.center?M:0,H=i.center?b:0,V=new Float32Array(s.length);for(let R=0;R<s.length;R+=3)V[R]=(s[R]-F)*v,V[R+1]=(s[R+1]-sA)*tA,V[R+2]=(s[R+2]-H)*X;let K=V.length/3>65535?new Uint32Array(u):new Uint16Array(u),S={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...i.defaultMaterial},_=[{id:"vox_mesh_0",name:"vox_geometry",positions:V,normals:new Float32Array(g),uvs:new Float32Array(B),colors:new Float32Array(I),indices:K,materialName:"vox_default"}],j=(Q-F)*v,W=(C-sA)*tA,nA=(h-H)*X,lA=(m-F)*v,oA=(p-sA)*tA,aA=(D-H)*X;return{name:"VOX_Model",meshes:_,materials:{vox_default:S},animations:[],bounds:{min:[j,W,nA],max:[lA,oA,aA],center:[(j+lA)*.5,(W+oA)*.5,(nA+aA)*.5],size:[lA-j,oA-W,aA-nA],boundingSphereRadius:Math.hypot(lA-j,oA-W,aA-nA)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n);return A.parse(r,t)}throw new Error("VOX files must be binary buffers or local file paths")}};function Ve(A,e={}){return me.load(A,e)}$();var yt=19789,oi=15677,ai=16384,si=16640,gi=16656,Ii=16672,Bi=16704,li=45055,ci=40960,ui=40992,Ei=16,Qi=17,pe=class A{static is3DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<6?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(0,!0)===yt}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(r.getUint16(0,!0)!==yt)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let i=[],a={};return A.readChunk(r,0,n.byteLength,i,a),A.buildModel(i,a,t)}static readChunk(e,t,n,r,o,i="Object"){let a=t;for(;a+6<=n&&a+6<=e.byteLength;){let s=e.getUint16(a,!0),g=e.getUint32(a+2,!0);if(g<6)break;let I=a+g,B=a+6,u=Math.min(I,n,e.byteLength);switch(s){case yt:case oi:A.readChunk(e,B,u,r,o,i);break;case ai:{let E=B;for(;E<u&&e.getUint8(E)!==0;)E++;let Q=new Uint8Array(e.buffer,e.byteOffset+B,E-B),C=new TextDecoder("ascii").decode(Q)||"Object";A.readChunk(e,E+1,u,r,o,C);break}case si:{let E={name:i,positions:[],indices:[],uvs:[]};A.readTriMesh(e,B,u,E,o),E.positions.length>0&&E.indices.length>0&&r.push(E);break}case li:A.readMaterial(e,B,u,o);break;default:break}a=I}}static readTriMesh(e,t,n,r,o){let i=t;for(;i+6<=n;){let a=e.getUint16(i,!0),s=e.getUint32(i+2,!0);if(s<6)break;let g=i+s,I=i+6;if(a===gi){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+12>n);E++){let Q=e.getFloat32(u,!0),C=e.getFloat32(u+4,!0),h=e.getFloat32(u+8,!0);r.positions.push(Q,C,h),u+=12}}else if(a===Ii){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+8>n);E++){let Q=e.getUint16(u,!0),C=e.getUint16(u+2,!0),h=e.getUint16(u+4,!0);r.indices.push(Q,C,h),u+=8}}else if(a===Bi){let B=e.getUint16(I,!0),u=I+2;for(let E=0;E<B&&!(u+8>n);E++){let Q=e.getFloat32(u,!0),C=e.getFloat32(u+4,!0);r.uvs.push(Q,1-C),u+=8}}i=g}}static readMaterial(e,t,n,r){let o=t,i="Material",a=[.8,.8,.8,1];for(;o+6<=n;){let s=e.getUint16(o,!0),g=e.getUint32(o+2,!0);if(g<6)break;let I=o+g,B=o+6;if(s===ci){let u=B;for(;u<I&&e.getUint8(u)!==0;)u++;let E=new Uint8Array(e.buffer,e.byteOffset+B,u-B);i=new TextDecoder("ascii").decode(E)||i}else if(s===ui&&B+6<=I){let u=e.getUint16(B,!0);if(u===Ei&&B+18<=I){let E=e.getFloat32(B+6,!0),Q=e.getFloat32(B+10,!0),C=e.getFloat32(B+14,!0);a=[E,Q,C,1]}else if(u===Qi&&B+9<=I){let E=e.getUint8(B+6)/255,Q=e.getUint8(B+7)/255,C=e.getUint8(B+8)/255;a=[E,Q,C,1]}}o=I}r[i]={name:i,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(e,t,n){let r=1/0,o=1/0,i=1/0,a=-1/0,s=-1/0,g=-1/0;for(let F of e)for(let sA=0;sA<F.positions.length;sA+=3){let H=F.positions[sA],V=F.positions[sA+1],rA=F.positions[sA+2];H<r&&(r=H),H>a&&(a=H),V<o&&(o=V),V>s&&(s=V),rA<i&&(i=rA),rA>g&&(g=rA)}Number.isFinite(r)||(r=o=i=0,a=s=g=0);let I=(r+a)*.5,B=(o+s)*.5,u=(i+g)*.5,E=a-r,Q=s-o,C=g-i,h=Math.max(E,Q,C,1e-4),m=1;n.normalizeSize&&n.normalizeSize>0&&(m=n.normalizeSize/h);let p=m,D=m,U=m;typeof n.scale=="number"?(p*=n.scale,D*=n.scale,U*=n.scale):Array.isArray(n.scale)&&(p*=n.scale[0],D*=n.scale[1],U*=n.scale[2]);let M=n.center?I:0,b=n.center?B:0,x=n.center?u:0,N=e.map((F,sA)=>{let H=new Float32Array(F.positions.length);for(let _=0;_<F.positions.length;_+=3)H[_]=(F.positions[_]-M)*p,H[_+1]=(F.positions[_+1]-b)*D,H[_+2]=(F.positions[_+2]-x)*U;let V=new Float32Array(F.positions.length);for(let _=0;_<F.indices.length;_+=3){let j=F.indices[_],W=F.indices[_+1],nA=F.indices[_+2],lA=[H[j*3],H[j*3+1],H[j*3+2]],oA=[H[W*3],H[W*3+1],H[W*3+2]],aA=[H[nA*3],H[nA*3+1],H[nA*3+2]],R=k.subtract(oA,lA),gA=k.subtract(aA,lA),AA=k.cross(R,gA);V[j*3]+=AA[0],V[j*3+1]+=AA[1],V[j*3+2]+=AA[2],V[W*3]+=AA[0],V[W*3+1]+=AA[1],V[W*3+2]+=AA[2],V[nA*3]+=AA[0],V[nA*3+1]+=AA[1],V[nA*3+2]+=AA[2]}for(let _=0;_<V.length;_+=3){let j=V[_],W=V[_+1],nA=V[_+2],lA=Math.hypot(j,W,nA)||1;V[_]=j/lA,V[_+1]=W/lA,V[_+2]=nA/lA}let rA=F.uvs.length===F.positions.length/3*2?new Float32Array(F.uvs):new Float32Array(F.positions.length/3*2),S=H.length/3>65535?new Uint32Array(F.indices):new Uint16Array(F.indices);return{id:`3ds_mesh_${sA}`,name:F.name,positions:H,normals:V,uvs:rA,indices:S,materialName:F.materialName}}),T=(r-M)*p,Y=(o-b)*D,O=(i-x)*U,v=(a-M)*p,tA=(s-b)*D,X=(g-x)*U;return{name:"3DS_Model",meshes:N,materials:t,animations:[],bounds:{min:[T,Y,O],max:[v,tA,X],center:[(T+v)*.5,(Y+tA)*.5,(O+X)*.5],size:[v-T,tA-Y,X-O],boundingSphereRadius:Math.hypot(v-T,tA-Y,X-O)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n);return A.parse(r,t)}throw new Error("3DS files must be binary buffers or local file paths")}};function We(A,e={}){return pe.load(A,e)}$();var Dt=class A{static parse(e,t={}){let r=(typeof e=="string"?e:new TextDecoder("utf-8").decode(e instanceof Uint8Array?e:new Uint8Array(e))).split(/\r?\n/),o=0;for(;o<r.length&&(!r[o].trim()||r[o].trim().startsWith("#"));)o++;if(o>=r.length)throw new Error("Empty OFF file");let i=r[o++].trim(),a=!1,s=!1;if(i.startsWith("NOFF")||i.startsWith("STOFF"))a=!0;else if(i.startsWith("COFF"))s=!0;else if(!i.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");i=i.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let g=0,I=0;if(i.length>0){let q=i.split(/\s+/);g=Number.parseInt(q[0]??"0",10),I=Number.parseInt(q[1]??"0",10)}else for(;o<r.length;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/);g=Number.parseInt(w[0]??"0",10),I=Number.parseInt(w[1]??"0",10);break}let B=[],u=[],E=[],Q=[],C=[],h=0;for(;o<r.length&&h<g;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/),L=Number.parseFloat(w[0]??"0")||0,z=Number.parseFloat(w[1]??"0")||0,iA=Number.parseFloat(w[2]??"0")||0;B.push(L,z,iA);let EA=3;if(a){let CA=Number.parseFloat(w[EA]??"0")||0,QA=Number.parseFloat(w[EA+1]??"0")||0,mA=Number.parseFloat(w[EA+2]??"0")||0;u.push(CA,QA,mA),EA+=3}else u.push(0,0,0);if(s&&w.length>EA){let CA=(Number.parseFloat(w[EA]??"255")||0)/(Number.parseFloat(w[EA]??"255")>1?255:1),QA=(Number.parseFloat(w[EA+1]??"255")||0)/(Number.parseFloat(w[EA+1]??"255")>1?255:1),mA=(Number.parseFloat(w[EA+2]??"255")||0)/(Number.parseFloat(w[EA+2]??"255")>1?255:1),dA=w.length>EA+3&&Number.parseFloat(w[EA+3]??"1")||1;E.push(CA,QA,mA,dA)}Q.push(0,0),h++}let m=0;for(;o<r.length&&m<I;){let q=r[o++].trim();if(!q||q.startsWith("#"))continue;let w=q.split(/\s+/),L=Number.parseInt(w[0]??"0",10);if(L>=3){let z=Number.parseInt(w[1]??"0",10);for(let iA=1;iA<L-1;iA++){let EA=Number.parseInt(w[iA+1]??"0",10),CA=Number.parseInt(w[iA+2]??"0",10);C.push(z,EA,CA)}}m++}if(!a||t.smoothNormals){for(let q=0;q<C.length;q+=3){let w=C[q],L=C[q+1],z=C[q+2],iA=[B[w*3],B[w*3+1],B[w*3+2]],EA=[B[L*3],B[L*3+1],B[L*3+2]],CA=[B[z*3],B[z*3+1],B[z*3+2]],QA=k.subtract(EA,iA),mA=k.subtract(CA,iA),dA=k.cross(QA,mA);u[w*3]+=dA[0],u[w*3+1]+=dA[1],u[w*3+2]+=dA[2],u[L*3]+=dA[0],u[L*3+1]+=dA[1],u[L*3+2]+=dA[2],u[z*3]+=dA[0],u[z*3+1]+=dA[1],u[z*3+2]+=dA[2]}for(let q=0;q<u.length;q+=3){let w=u[q],L=u[q+1],z=u[q+2],iA=Math.hypot(w,L,z)||1;u[q]=w/iA,u[q+1]=L/iA,u[q+2]=z/iA}}let p=1/0,D=1/0,U=1/0,M=-1/0,b=-1/0,x=-1/0;for(let q=0;q<B.length;q+=3){let w=B[q],L=B[q+1],z=B[q+2];w<p&&(p=w),w>M&&(M=w),L<D&&(D=L),L>b&&(b=L),z<U&&(U=z),z>x&&(x=z)}Number.isFinite(p)||(p=D=U=0,M=b=x=0);let N=(p+M)*.5,T=(D+b)*.5,Y=(U+x)*.5,O=M-p,v=b-D,tA=x-U,X=Math.max(O,v,tA,1e-4),F=1;t.normalizeSize&&t.normalizeSize>0&&(F=t.normalizeSize/X);let sA=F,H=F,V=F;typeof t.scale=="number"?(sA*=t.scale,H*=t.scale,V*=t.scale):Array.isArray(t.scale)&&(sA*=t.scale[0],H*=t.scale[1],V*=t.scale[2]);let rA=t.center?N:0,K=t.center?T:0,S=t.center?Y:0,_=new Float32Array(B.length);for(let q=0;q<B.length;q+=3)_[q]=(B[q]-rA)*sA,_[q+1]=(B[q+1]-K)*H,_[q+2]=(B[q+2]-S)*V;let W=_.length/3>65535?new Uint32Array(C):new Uint16Array(C),nA={name:"off_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...t.defaultMaterial},lA=[{id:"off_mesh_0",name:"off_geometry",positions:_,normals:new Float32Array(u),uvs:new Float32Array(Q),colors:s?new Float32Array(E):void 0,indices:W,materialName:"off_default"}],oA=(p-rA)*sA,aA=(D-K)*H,R=(U-S)*V,gA=(M-rA)*sA,AA=(b-K)*H,IA=(x-S)*V;return{name:"OFF_Model",meshes:lA,materials:{off_default:nA},animations:[],bounds:{min:[oA,aA,R],max:[gA,AA,IA],center:[(oA+gA)*.5,(aA+AA)*.5,(R+IA)*.5],size:[gA-oA,AA-aA,IA-R],boundingSphereRadius:Math.hypot(gA-oA,AA-aA,IA-R)*.5}}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=pA.readFileSync(n,"utf-8");return A.parse(r,t)}return A.parse(e,t)}};function Xe(A,e={}){return Dt.load(A,e)}$();$();var Ln=`
|
|
235
235
|
struct CameraUniforms {
|
|
236
236
|
viewMatrix : mat4x4<f32>,
|
|
237
237
|
projMatrix : mat4x4<f32>,
|
|
@@ -503,7 +503,7 @@ fn fs_single(in: VertexOutput, @builtin(front_facing) isFront: bool) -> @locatio
|
|
|
503
503
|
let litRgb = calculateLighting(in, isFront, baseRgb);
|
|
504
504
|
return vec4<f32>(litRgb * alpha, alpha);
|
|
505
505
|
}
|
|
506
|
-
`;var ze=class{device;pipelineSingle;pipelineMrt;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;defaultSkinningBuffer;modelData=new Float32Array(48);constructor(e,t,n="depth24plus",r,o,i=1){this.device=e,this.modelPool=new NA(192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new NA(8192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"mesh3d.wgsl",code:Ln});this.cameraLayout=r??e.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform"}}]}),this.textureLayout=e.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=o??e.createBindGroupLayout({label:"Mesh3DLightsLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),g={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]}]};this.pipelineSingle=e.createRenderPipeline({label:"Mesh3DPipelineSingle",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_single",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}}),this.pipelineMrt=e.createRenderPipeline({label:"Mesh3DPipelineMrt",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_mrt",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}},{format:"rgba16float"}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}}),this.defaultWhiteTexture=e.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let I=new Float32Array(2048);for(let B=0;B<128;B++)I[B*16]=1,I[B*16+5]=1,I[B*16+10]=1,I[B*16+15]=1;this.defaultSkinningBuffer=e.createBuffer({size:8192,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(I),this.defaultSkinningBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}draw(e,t,n,r,o,i,a,s=!1){let g=a.modelMatrix;for(let b=0;b<16;b++)this.modelData[b]=g[b]??0;let I=a.normalMatrix??g;for(let b=0;b<16;b++)this.modelData[16+b]=I[b]??0;let B=a.colorTint??[1,1,1,1];this.modelData[32]=B[0],this.modelData[33]=B[1],this.modelData[34]=B[2],this.modelData[35]=B[3],this.modelData[36]=a.opacity??1,this.modelData[37]=a.twoSided?1:0,this.modelData[38]=a.isSkinned?1:0,this.modelData[39]=a.wireframe?1:0;let u=a.roughness!==void 0?Math.max(1,(1-a.roughness)*128):a.shininess??32,E=a.metallic!==void 0?a.metallic:a.specularIntensity??.5,Q=a.ambientIntensity??1,C=a.material==="unlit"?0:a.material==="toon"?2:1;this.modelData[40]=u,this.modelData[41]=E,this.modelData[42]=Q,this.modelData[43]=C;let h=a.shadeColor??[1,1,1];this.modelData[44]=h[0],this.modelData[45]=h[1],this.modelData[46]=h[2],this.modelData[47]=a.alphaCutoff??0;let m=this.modelPool.getBuffer(this.device,this.modelData),
|
|
506
|
+
`;var ze=class{device;pipelineSingle;pipelineMrt;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;defaultSkinningBuffer;modelData=new Float32Array(48);constructor(e,t,n="depth24plus",r,o,i=1){this.device=e,this.modelPool=new NA(192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new NA(8192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"mesh3d.wgsl",code:Ln});this.cameraLayout=r??e.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform"}}]}),this.textureLayout=e.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=o??e.createBindGroupLayout({label:"Mesh3DLightsLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),g={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]}]};this.pipelineSingle=e.createRenderPipeline({label:"Mesh3DPipelineSingle",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_single",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}}),this.pipelineMrt=e.createRenderPipeline({label:"Mesh3DPipelineMrt",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_mrt",targets:[{format:t,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}},{format:"rgba16float"}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:i}}),this.defaultWhiteTexture=e.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let I=new Float32Array(2048);for(let B=0;B<128;B++)I[B*16]=1,I[B*16+5]=1,I[B*16+10]=1,I[B*16+15]=1;this.defaultSkinningBuffer=e.createBuffer({size:8192,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(I),this.defaultSkinningBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}draw(e,t,n,r,o,i,a,s=!1){let g=a.modelMatrix;for(let b=0;b<16;b++)this.modelData[b]=g[b]??0;let I=a.normalMatrix??g;for(let b=0;b<16;b++)this.modelData[16+b]=I[b]??0;let B=a.colorTint??[1,1,1,1];this.modelData[32]=B[0],this.modelData[33]=B[1],this.modelData[34]=B[2],this.modelData[35]=B[3],this.modelData[36]=a.opacity??1,this.modelData[37]=a.twoSided?1:0,this.modelData[38]=a.isSkinned?1:0,this.modelData[39]=a.wireframe?1:0;let u=a.roughness!==void 0?Math.max(1,(1-a.roughness)*128):a.shininess??32,E=a.metallic!==void 0?a.metallic:a.specularIntensity??.5,Q=a.ambientIntensity??1,C=a.material==="unlit"?0:a.material==="toon"?2:1;this.modelData[40]=u,this.modelData[41]=E,this.modelData[42]=Q,this.modelData[43]=C;let h=a.shadeColor??[1,1,1];this.modelData[44]=h[0],this.modelData[45]=h[1],this.modelData[46]=h[2],this.modelData[47]=a.alphaCutoff??0;let m=this.modelPool.getBuffer(this.device,this.modelData),p=a.isSkinned&&a.skinningMatrices?this.skinningPool.getBuffer(this.device,a.skinningMatrices):this.defaultSkinningBuffer,D=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:m}},{binding:1,resource:{buffer:p}}]}),U=o??this.defaultWhiteTexture,M=this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:i},{binding:1,resource:U.createView()}]});e.setPipeline(s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,D),e.setBindGroup(2,M),e.setBindGroup(3,n),e.setVertexBuffer(0,r.vertexBuffer),e.setIndexBuffer(r.indexBuffer,r.indexFormat),e.drawIndexed(r.indexCount)}destroy(){this.modelPool.destroy(),this.skinningPool.destroy(),this.defaultWhiteTexture.destroy(),this.defaultSkinningBuffer.destroy()}};$();$();$();var Ze=`
|
|
507
507
|
struct CameraUniforms {
|
|
508
508
|
viewMatrix : mat4x4<f32>,
|
|
509
509
|
projMatrix : mat4x4<f32>,
|
|
@@ -847,7 +847,7 @@ struct TextModelUniforms {
|
|
|
847
847
|
@group(2) @binding(1) var bandsTex : texture_2d<u32>;
|
|
848
848
|
@group(3) @binding(0) var<uniform> lights : LightsUniforms;
|
|
849
849
|
|
|
850
|
-
${
|
|
850
|
+
${Qn}
|
|
851
851
|
|
|
852
852
|
struct VSOut {
|
|
853
853
|
@builtin(position) pos : vec4<f32>,
|
|
@@ -992,6 +992,6 @@ struct MrtOutput {
|
|
|
992
992
|
out.depth = vec4<f32>(in.linearDepth, 0.0, 0.0, 1.0);
|
|
993
993
|
return out;
|
|
994
994
|
}
|
|
995
|
-
`;var Hn=24,je=class{device;pipelineSingle;pipelineMrt;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40);constructor(e,t,n,r,o,i=1){this.device=e,this.modelPool=new NA(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new NA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:vn});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,o]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:Hn*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},I={color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},B={format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},u={topology:"triangle-list",cullMode:"none"},E={count:i};this.pipelineSingle=e.createRenderPipeline({label:"Slug3DPipelineSingle",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_single",targets:[{format:t,blend:I}]},depthStencil:B,primitive:u,multisample:E}),this.pipelineMrt=e.createRenderPipeline({label:"Slug3DPipelineMrt",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_mrt",targets:[{format:t,blend:I},{format:"rgba16float"}]},depthStencil:B,primitive:u,multisample:E})}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,o,i,a,s=!1){if(i===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(wt(a),36);let g=this.modelPool.getBuffer(this.device,this.modelData),I=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:g}}]}),B=this.instancePool.getBuffer(this.device,o.subarray(0,i*Hn));e.setPipeline(s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,I),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,B),e.draw(6,i)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var Ci={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},fi=5e-4,Pn=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new ft;lightsUniformBindGroupCache=new ft;samplerCache=new En;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;modelCache=new Map;lastCameraPose=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new qe(e,t,"depth24plus",n),this.slug3dPipeline=new je(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new ze(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new Ye(e),this.cameraPool=new NA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new NA(dt,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:Nn});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.cameraPool.reset(),this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,o){return e&&e.width===r&&e.height===o?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:o},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let o=ne.computeViewMatrix(e),i=ne.computeProjectionMatrix(e),a=ne.computeViewProjectionMatrix(e),s=cA.invert(a)??cA.identity();this.cameraUniformData.set(o,0),this.cameraUniformData.set(i,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=k.normalize(k.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let I=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=I,I}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e){let t=re.packLightsUniforms(e??[]);return this.lightsPool.getBuffer(this.device,t)}beginPass(e,t,n,r,o,i="clear",a={r:0,g:0,b:0,a:0},s,g){let I=this.getOrCreateDepthTexture(n,r),B=this.packCameraUniforms(o,n,r),u=this.createCameraBindGroup(B),E=this.getOrCreateLightsBuffer(g),Q=this.lightsUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.lightsLayout,E),C=this.sampleCount>1;if(C&&i==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let h=(D,U,M,b)=>U?{view:U.createView(),resolveTarget:D,loadOp:"clear",storeOp:"discard",clearValue:M}:{view:D,loadOp:b,storeOp:"store",clearValue:M};C&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let m=[h(t,C?this.msaaColorTexture:null,a,i)];return s&&(C&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),m.push(h(s,C?this.msaaLinearDepthTexture:null,{r:o.far,g:0,b:0,a:1},"clear"))),{pass:e.beginRenderPass({colorAttachments:m,depthStencilAttachment:{view:I.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:C?"discard":"store"}}),cameraBindGroup:u,cameraBuffer:B,lightsBindGroup:Q}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:o=[0,0,0],scale:i=[1,1,1],anchor:a=[.5,.5]}=e,s=cA.identity();s=cA.multiply(s,cA.translate(t[0],t[1],t[2]));let g=o[0]*Math.PI/180,I=o[1]*Math.PI/180,B=o[2]*Math.PI/180;B!==0&&(s=cA.multiply(s,cA.rotateZ(B))),I!==0&&(s=cA.multiply(s,cA.rotateY(I))),g!==0&&(s=cA.multiply(s,cA.rotateX(g)));let u=n*i[0],E=r*i[1],Q=i[2];s=cA.multiply(s,cA.scale(u,E,Q));let C=.5-a[0],h=.5-a[1];return(C!==0||h!==0)&&(s=cA.multiply(s,cA.translate(C,h,0))),s}drawSlugText(e,t,n,r,o,i=0,a=!1){let{width:s,height:g}=o;if(!(s>0&&g>0))return;let I=this.quadModelMatrix(o),B=o.normalMatrix??re.computeNormalMatrix(I),u=cA.multiply(I,cA.multiply(cA.translate(-.5,-.5,0),cA.scale(1/s,1/g,1)));for(let E=0;E<r.length;E++){let Q=r[E],[C,h,m,y,D,U]=Q.transform,M=[C,h,0,0,m,y,0,0,0,0,1,0,D,U,0,1];this.slug3dPipeline.draw(e,t,n,Q.font,Q.instances,Q.instanceCount,{modelMatrix:cA.multiply(u,M),normalMatrix:B,opacity:Q.opacity*(o.opacity??1),slant:Q.slant,twoSided:o.twoSided??!0,depthPull:fi*(i+E+1),material:o.material,shininess:o.shininess??32,roughness:o.roughness,specularIntensity:o.specularIntensity??.5,ambientIntensity:o.ambientIntensity??1,metallic:o.metallic},a)}}drawTextureQuad(e,t,n,r,o,i=!1){let{width:a,height:s,opacity:g=1,colorTint:I=[1,1,1,1],borderColor:B,borderWidth:u=0,borderRadius:E=0,twoSided:Q=!0,material:C="lit",shininess:h=32,roughness:m,specularIntensity:y=.5,ambientIntensity:D=1,metallic:U}=o,M=this.quadModelMatrix(o),b=o.normalMatrix??re.computeNormalMatrix(M),x=this.samplerCache.getSampler(this.device),N;if(B)if(Array.isArray(B))N=B;else{let T=ln(B);N=[T.r,T.g,T.b,T.a]}this.quad3dPipeline.draw(e,t,n,r,x,{modelMatrix:M,normalMatrix:b,colorTint:I,borderColor:N,borderWidth:u,opacity:g,borderRadius:E,twoSided:Q,width:a,height:s,textureExtent:o.textureExtent,material:C,shininess:h,roughness:m,specularIntensity:y,ambientIntensity:D,metallic:U},i)}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let I=0;I<n;I++){let B=I*16;r[B]=e.positions[I*3]??0,r[B+1]=e.positions[I*3+1]??0,r[B+2]=e.positions[I*3+2]??0,r[B+3]=e.uvs[I*2]??0,r[B+4]=e.uvs[I*2+1]??0,r[B+5]=e.normals[I*3]??0,r[B+6]=e.normals[I*3+1]??0,r[B+7]=e.normals[I*3+2]??1,e.jointIndices?(r[B+8]=e.jointIndices[I*4]??0,r[B+9]=e.jointIndices[I*4+1]??0,r[B+10]=e.jointIndices[I*4+2]??0,r[B+11]=e.jointIndices[I*4+3]??0):(r[B+8]=0,r[B+9]=0,r[B+10]=0,r[B+11]=0),e.jointWeights?(r[B+12]=e.jointWeights[I*4]??0,r[B+13]=e.jointWeights[I*4+1]??0,r[B+14]=e.jointWeights[I*4+2]??0,r[B+15]=e.jointWeights[I*4+3]??0):(r[B+12]=0,r[B+13]=0,r[B+14]=0,r[B+15]=0)}let o=Math.ceil(r.byteLength/4)*4,i=this.device.createBuffer({size:Math.max(4,o),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(i.getMappedRange()).set(r),i.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap(),t={vertexBuffer:i,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16"},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),o=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:o,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat}}drawMesh3D(e,t,n,r,o,i={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{position:g=[0,0,0],rotation:I=[0,0,0],scale:B=[1,1,1],opacity:u=1,colorTint:E=[1,1,1,1],twoSided:Q=!0,wireframe:C=!1,isSkinned:h=!1,skinningMatrices:m,material:y="lit",shadeColor:D,alphaCutoff:U,textureWrap:M="clamp",shininess:b=32,roughness:x,specularIntensity:N=.5,ambientIntensity:T=1,metallic:Y}=i,O;if(i.modelMatrix)O=i.modelMatrix;else{O=cA.identity(),O=cA.multiply(O,cA.translate(g[0],g[1],g[2]));let F=I[0]*Math.PI/180,sA=I[1]*Math.PI/180,H=I[2]*Math.PI/180;H!==0&&(O=cA.multiply(O,cA.rotateZ(H))),sA!==0&&(O=cA.multiply(O,cA.rotateY(sA))),F!==0&&(O=cA.multiply(O,cA.rotateX(F))),O=cA.multiply(O,cA.scale(B[0],B[1],B[2]))}let v=i.normalMatrix??re.computeNormalMatrix(O),tA=Ci[M],X=this.samplerCache.getSampler(this.device,{addressModeU:tA,addressModeV:tA});this.mesh3dPipeline.draw(e,t,n,s,o,X,{modelMatrix:O,normalMatrix:v,colorTint:E,opacity:u,twoSided:Q,wireframe:C,isSkinned:h,skinningMatrices:m,material:y,shadeColor:D,alphaCutoff:U,shininess:b,roughness:x,specularIntensity:N,ambientIntensity:T,metallic:Y},a)}loadModel(e,t="auto",n={}){if(typeof e!="string")return Jn(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,o=this.modelCache.get(r);return o||(o=Jn(e,t,n),this.modelCache.set(r,o)),o}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}async uploadMaterialTexture(e){let t=e.diffuseTextureBuffer;if(!t)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(t instanceof Uint8Array?t:new Uint8Array(t)),{width:o,height:i}=await n(r).metadata();if(!o||!i)return;let a=Math.floor(Math.log2(Math.max(o,i)))+1,s=this.device.createTexture({label:`Material:${e.name}`,size:{width:o,height:i},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let I=Math.max(1,o>>g),B=Math.max(1,i>>g),u=await n(r).ensureAlpha().resize(I,B,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},u,{bytesPerRow:I*4,rowsPerImage:B},{width:I,height:B})}return s}applyDepthOfField(e,t,n,r,o){let i=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:i},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.depthTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy(),this.lightsUniformBindGroupCache.destroy()}};function Jn(A,e="auto",t={}){if(e==="gltf"||e==="glb")return Oe(A,t);if(e==="stl")return fe(A,t);if(e==="ply")return de(A,t);if(e==="vox")return Ve(A,t);if(e==="3ds")return We(A,t);if(e==="off")return Xe(A,t);if(e==="fbx")return Qe(A,t);if(e==="obj")return Ee(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",o=r.toLowerCase();if(o.endsWith(".glb")||o.endsWith(".gltf"))return Oe(A,t);if(o.endsWith(".stl"))return fe(A,t);if(o.endsWith(".ply"))return de(A,t);if(o.endsWith(".vox"))return Ve(A,t);if(o.endsWith(".3ds"))return We(A,t);if(o.endsWith(".off"))return Xe(A,t);if(o.endsWith(".fbx"))return Qe(A,t);if(o.endsWith(".obj"))return Ee(A,void 0,t);if(n){let i=A instanceof Uint8Array?A:new Uint8Array(A);return ie.isGlb(i)?Rn(i,t):qA.isBinary(i)?Qe(i,t):me.isVox(i)?Ve(i,t):ye.is3DS(i)?We(i,t):i.length>=3&&i[0]===112&&i[1]===108&&i[2]===121?de(i,t):Ce.isBinary(i)?fe(i,t):Ee(i,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?Oe(r,t):r.startsWith("ply")||r.startsWith("PLY")?de(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?Xe(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Qe(r,t):r.startsWith("solid")&&r.includes("facet")?fe(r,t):Ee(A,void 0,t)}$();var{cbrt:bt,sqrt:Mt,PI:oe}=Math,di=(A,e,t,n,r)=>{let o=e+t*A,i=o**2+n;if(i>0){let I=Mt(i);return bt(o+I)+bt(o-I)-r}let a=bt(Mt(o*o-i)),s=o?Math.atan(Mt(-i)/o):-oe/2,g;return t<0?g=(o>0?2*oe:oe)-s:r<0?g=(o>0?2*oe:-3*oe)+s:g=(o>0?0:oe)+s,2*a*Math.cos(g/3)-r},hi=(A,e,t,n)=>((e*A+3*t)*A+n)*A,xt=A=>A;function Tn(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return xt;let r=6*(3*A-3*t+1),o=6*(t-2*A),i=3*A,a=r*r,s=o*o,g=o/r,I=3*o*i/a-s*o/(a*r),B=2*i/r-s/a,u=B*B*B,E=3/r,Q=3*e-3*n+1,C=n-2*e,h=3*e,m=r?di:xt;return function(D){return D===0||D===1?D:hi(m(D,I,E,u,g),Q,C,h)}}var ds={linear:xt,ease:Tn(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:Tn,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function Kn(A,e,t,n){let r=n?.extrapolateLeft??"extend",o=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let i=e[0],a=e[e.length-1];if(A<i){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(o==="clamp")return t[t.length-1];if(o==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],I=e[s],B=t[s-1],u=t[s];if(g===I)return B;let E=(A-g)/(I-g);return n?.easing&&(E=n.easing(E)),B+E*(u-B)}$();var mi={damping:10,mass:1,stiffness:100,overshootClamping:!1},Ft={};function yi({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:o,velocity:i}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,I=t.stiffness,B=[n,r,o,i,s,g,I,e].join("-");if(Ft[B])return Ft[B];let u=-i,E=n-o,Q=s/(2*Math.sqrt(I*g)),C=Math.sqrt(I/g),h=C*Math.sqrt(1-Q**2),m=a/1e3,y=Math.sin(h*m),D=Math.cos(h*m),U=Math.exp(-Q*C*m),M=U*(y*((u+Q*C*E)/h)+E*D),b=n-M,x=Q*C*M-U*(D*(u+Q*C*E)-h*E*y),N=Math.exp(-C*m),T=n-N*(E+(u+C*E)*m),Y=N*(u*(m*C-1)+m*E*C*C),O={toValue:n,prevPosition:o,lastTimestamp:e,current:Q<1?b:T,velocity:Q<1?x:Y};return Ft[B]=O,O}var Nt={};function Yn({frame:A,fps:e,config:t={}}){let o=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(Nt[o])return Nt[o];let i={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let I=g/e*1e3;i=yi({animation:i,now:I,config:{...mi,...t}})}return Nt[o]=i,i}var Gt=new Map;function pi({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(Gt.has(n))return Gt.get(n);let r=0,o=0,i=()=>Yn({fps:A,frame:r,config:e}),a=i(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=i(),g=s();o=r;for(let I=0;I<20;I++)r++,a=i(),g=s(),g>=t&&(I=0,o=r+1);return Gt.set(n,o),o}function ps({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:o,durationRestThreshold:i,delay:a=0,reverse:s=!1}){let g=s||typeof o<"u",I=g?pi({fps:e,config:t,threshold:i}):void 0,B=g?{get:()=>I}:{get:()=>{throw new Error("did not calculate natural duration")}},E=(s?(o??B.get())-A:A)+(s?a:-a),Q=o===void 0?E:E/(o/B.get());if(o&&E>o)return r;let C=Yn({fps:e,frame:Q,config:t}),h=t.overshootClamping?r>=n?Math.min(C.current,r):Math.max(C.current,r):C.current;return n===0&&r===1?h:Kn(h,[0,1],[n,r])}$();$();$();var we=new Set,Ut=!1;function Pt(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;we.size&&we.clear();let o=Xn(A,0,r,t,!0),i=[];if(!o||o.next===o.prev)return i;let a=0,s=0,g=0;if(n&&(o=xi(A,e,o,t)),A.length>80*t){a=A[0],s=A[1];let I=a,B=s;for(let u=t;u<r;u+=t){let E=A[u],Q=A[u+1];E<a&&(a=E),Q<s&&(s=Q),E>I&&(I=E),Q>B&&(B=Q)}g=Math.max(I-a,B-s),g=g!==0?32767/g:0}return St(o,i,a,s,g),i}function Xn(A,e,t,n,r){let o=null;if(r===Ti(A,e,t,n)>0)for(let i=e;i<t;i+=n)o=Wn(i/n|0,A[i],A[i+1],o);else for(let i=t-n;i>=e;i-=n)o=Wn(i/n|0,A[i],A[i+1],o);return o&&be(o,o.next)&&(xe(o),o=o.next),o}function $A(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(we.size===0||!we.has(n))&&(be(n,n.next)||xA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),Ut=!0,xe(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function St(A,e,t,n,r){r&&Li(A,t,n,r);let o=A,i=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(xA(a,A,s)<0&&(r?wi(A,t,n,r):Di(A))){e.push(a.i,A.i,s.i),xe(A),A=s,o=s;continue}if(A=s,A===o){if(Ut=!1,A=$A(A),Ut){o=A;continue}if(!i){A=bi(A,e),o=A,i=!0;continue}Mi(A,e,t,n,r);break}}}function Di(A){let e=A.prev,t=A,n=A.next,r=e.x,o=t.x,i=n.x,a=e.y,s=t.y,g=n.y,I=Math.min(r,o,i),B=Math.min(a,s,g),u=Math.max(r,o,i),E=Math.max(a,s,g),Q=n.next;for(;Q!==e;){if(Q.x>=I&&Q.x<=u&&Q.y>=B&&Q.y<=E&&!(r===Q.x&&a===Q.y)&&et(r,a,o,s,i,g,Q.x,Q.y)&&xA(Q.prev,Q,Q.next)>=0)return!1;Q=Q.next}return!0}function wi(A,e,t,n){let r=A.prev,o=A,i=A.next,a=r.x,s=o.x,g=i.x,I=r.y,B=o.y,u=i.y,E=Math.min(a,s,g),Q=Math.min(I,B,u),C=Math.max(a,s,g),h=Math.max(I,B,u),m=vt(E,Q,e,t,n),y=vt(C,h,e,t,n),D=A.prevZ;for(;D&&D.z>=m;){if(D.x>=E&&D.x<=C&&D.y>=Q&&D.y<=h&&D!==i&&!(a===D.x&&I===D.y)&&et(a,I,s,B,g,u,D.x,D.y)&&xA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let U=A.nextZ;for(;U&&U.z<=y;){if(U.x>=E&&U.x<=C&&U.y>=Q&&U.y<=h&&U!==i&&!(a===U.x&&I===U.y)&&et(a,I,s,B,g,u,U.x,U.y)&&xA(U.prev,U,U.next)>=0)return!1;U=U.nextZ}return!0}function bi(A,e){let t=A,n=!1;do{let r=t.prev,o=t.next.next;qn(r,t,t.next,o,!1)&&Me(r,o)&&Me(o,r)&&(e.push(r.i,t.i,o.i),xe(t),xe(t.next),t=A=o,n=!0),t=t.next}while(t!==A);return n?$A(t):t}function Mi(A,e,t,n,r){let o=A;do{let i=o.next.next;for(;i!==o.prev;){if(o.i!==i.i&&Hi(o,i)){let a=jn(o,i);o=$A(o,o.next),a=$A(a,a.next),St(o,e,t,n,r),St(a,e,t,n,r);return}i=i.next}o=o.next}while(o!==A)}var Rt=!1;function xi(A,e,t,n){let r=[];for(let o=0,i=e.length;o<i;o++){let a=e[o]*n,s=o<i-1?e[o+1]*n:A.length,g=Xn(A,a,s,n,!1);g===g.next&&we.add(g),r.push(vi(g))}r.sort(Fi),Gi(A.length/n,e.length),Zn(t,t),Rt=!0;for(let o=0;o<r.length;o++)t=Ni(r[o],t);return Rt=!1,$A(t)}function Fi(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Ni(A,e){let t=Si(A,e);if(!t)return e;let n=jn(t,A),r=n.next;return Zn(t,r.next),$A(n,n.next),$A(t,t.next)}var zn=16,bA=new Float64Array(0),At=0,Lt=[],kt=[];function Gi(A,e){let t=Math.ceil((A+2*e)/zn)+e+2;bA.length<t*4&&(bA=new Float64Array(t*4)),At=0}function Zn(A,e){let t=A;do{let n=At++;Lt[n]=t;let r=t.x,o=t.y,i=t.x,a=t.y,s=0;do{let I=t.next;t.z=n,I.x<r&&(r=I.x),I.x>i&&(i=I.x),I.y<o&&(o=I.y),I.y>a&&(a=I.y),t=I}while(++s<zn&&t!==e);kt[n]=t;let g=n*4;bA[g]=r,bA[g+1]=o,bA[g+2]=i,bA[g+3]=a}while(t!==e)}function Ui(A,e){let t=A.z*4;e.x<bA[t]&&(bA[t]=e.x),e.y<bA[t+1]&&(bA[t+1]=e.y),e.x>bA[t+2]&&(bA[t+2]=e.x),e.y>bA[t+3]&&(bA[t+3]=e.y)}function On(A){let e=kt[A];for(;e.prev.next!==e;)e=e.next;return kt[A]=e,e}function Vn(A){let e=Lt[A];for(;e.prev.next!==e;)e=e.next;return Lt[A]=e,e}function Si(A,e){let t=e,n=A.x,r=A.y,o=-1/0,i;if(be(A,t))return t;for(let u=0,E=0;u<At;u++,E+=4){if(r<bA[E+1]||r>bA[E+3]||bA[E]>n||bA[E+2]<=o)continue;let Q=On(u);t=Vn(u);do{if(t.prev.next===t){if(be(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let C=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(C<=n&&C>o&&(o=C,i=t.x<t.next.x?t:t.next,C===n))return i}}t=t.next}while(t!==Q)}if(!i)return null;let a=i.x,s=i.y,g=Math.min(r,s),I=Math.max(r,s),B=1/0;for(let u=0,E=0;u<At;u++,E+=4){if(bA[E+2]<a||bA[E]>n||bA[E+3]<g||bA[E+1]>I)continue;let Q=On(u);t=Vn(u);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&et(r<s?n:o,r,a,s,r<s?o:n,r,t.x,t.y)){let C=Math.abs(r-t.y)/(n-t.x);(Me(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(C<B||C===B&&(t.x>i.x||t.x===i.x&&Ri(i,t)))&&(i=t,B=C)}t=t.next}while(t!==Q)}return i}function Ri(A,e){return xA(A.prev,A,e.prev)<0&&xA(e.next,A,A.next)<0}var GA=[],ae=[],_A=new Uint32Array(0),pe=new Uint32Array(0),De=new Uint32Array(256);function Li(A,e,t,n){let r=A,o=0;do r.z=vt(r.x,r.y,e,t,n),GA[o++]=r,r=r.next;while(r!==A);ki(o);let i=null;for(let a=0;a<o;a++){let s=GA[a];s.prevZ=i,i&&(i.nextZ=s),i=s}i.nextZ=null,GA.fill(null,0,o),ae.fill(null,0,o)}function ki(A){if(A<=32){for(let e=1;e<A;e++){let t=GA[e],n=t.z,r=e-1;for(;r>=0&&GA[r].z>n;)GA[r+1]=GA[r],r--;GA[r+1]=t}return}_A.length<A&&(_A=new Uint32Array(A),pe=new Uint32Array(A),ae=new Array(A));for(let e=0;e<A;e++)_A[e]=GA[e].z;_e(A,GA,_A,ae,pe,0),_e(A,ae,pe,GA,_A,8),_e(A,GA,_A,ae,pe,16),_e(A,ae,pe,GA,_A,24)}function _e(A,e,t,n,r,o){De.fill(0);for(let a=0;a<A;a++)De[t[a]>>>o&255]++;let i=0;for(let a=0;a<256;a++){let s=De[a];De[a]=i,i+=s}for(let a=0;a<A;a++){let s=t[a],g=De[s>>>o&255]++;n[g]=e[a],r[g]=s}}function vt(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function vi(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function et(A,e,t,n,r,o,i,a){return(r-i)*(e-a)>=(A-i)*(o-a)&&(A-i)*(n-a)>=(t-i)*(e-a)&&(t-i)*(o-a)>=(r-i)*(n-a)}function Hi(A,e){let t=be(A,e)&&xA(A.prev,A,A.next)>0&&xA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Me(A,e)&&Me(e,A)&&(xA(A.prev,A,e.prev)!==0||xA(A,e.prev,e)!==0))&&!Pi(A,e)&&(t||Ji(A,e))}function xA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function be(A,e){return A.x===e.x&&A.y===e.y}function qn(A,e,t,n,r=!0){let o=xA(A,e,t),i=xA(A,e,n),a=xA(t,n,A),s=xA(t,n,e);return(o>0&&i<0||o<0&&i>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(o===0&&$e(A,t,e)||i===0&&$e(A,n,e)||a===0&&$e(t,A,n)||s===0&&$e(t,e,n)):!1}function $e(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function Pi(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),o=Math.max(A.y,e.y),i=A;do{let a=i.next;if(i.x>n&&a.x>n||i.x<t&&a.x<t||i.y>o&&a.y>o||i.y<r&&a.y<r){i=a;continue}if(i.i!==A.i&&a.i!==A.i&&i.i!==e.i&&a.i!==e.i&&qn(i,a,A,e))return!0;i=a}while(i!==A);return!1}function Me(A,e){return xA(A.prev,A,A.next)<0?xA(A,e,A.next)>=0&&xA(A,A.prev,e)>=0:xA(A,e,A.prev)<0||xA(A,A.next,e)<0}function Ji(A,e){let t=A,n=!1,r=(A.x+e.x)/2,o=(A.y+e.y)/2;do{let i=t.next;t.y>o!=i.y>o&&r<(i.x-t.x)*(o-t.y)/(i.y-t.y)+t.x&&(n=!n),t=i}while(t!==A);return n}function jn(A,e){let t=Ht(A.i,A.x,A.y),n=Ht(e.i,e.x,e.y),r=A.next,o=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,o.next=n,n.prev=o,n}function Wn(A,e,t,n){let r=Ht(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function xe(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),Rt&&Ui(A.prev,A.next)}function Ht(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function Ti(A,e,t,n){let r=0;for(let o=e,i=t-n;o<t;o+=n)r+=(A[i]-A[o])*(A[o+1]+A[i+1]),i=o;return r}var tr=In($n(),1);function Ar(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,o=Number.parseInt(t[2]+t[2],16)/255;return[n,r,o,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,o=Number.parseInt(t.slice(4,6),16)/255;return[n,r,o,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,o=Number.parseInt(t.slice(4,6),16)/255,i=Number.parseInt(t.slice(6,8),16)/255;return[n,r,o,i]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,o=(t[2]??0)/255,i=t[3]!==void 0?t[3]:1;return[n,r,o,i]}return[1,1,1,1]}function Fe(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function nt(A,e){let t=!1,n=e.length;for(let r=0,o=n-1;r<n;o=r++){let i=e[r].x,a=e[r].y,s=e[o].x,g=e[o].y;a>A.y!=g>A.y&&A.x<(s-i)*(A.y-a)/(g-a)+i&&(t=!t)}return t}var Ki=.1,Yi=64;function nr(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(Yi,Math.max(1,t))}function Oi(A,e,t,n,r){let o=nr(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let i=1;i<=o;i++){let a=i/o,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function Vi(A,e,t,n,r,o){let i=nr(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=i;a++){let s=a/i,g=1-s;o.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function Wi(A){try{let e=new tr.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function Xi(A,e,t,n,r){let o=A.path?.toSVG();if(!o)return{contours:[],simplified:!0};let i=Wi(o),a=i!==null;i??=(A.path?.commands??[]).map(u=>[u.command,...u.args]);let s=[],g={x:0,y:0},I=[],B=()=>{if(I.length>=3){let u=I[0],E=I[I.length-1];Math.hypot(E.x-u.x,E.y-u.y)<1e-4&&I.pop(),I.length>=3&&s.push(I)}I=[]};for(let u of i){let E=u[0],Q=u.slice(1);if(E==="moveTo")B(),g={x:(e+Q[0])*n,y:-(t+Q[1])*n},I=[g];else if(E==="lineTo")g={x:(e+Q[0])*n,y:-(t+Q[1])*n},I.push(g);else if(E==="quadraticCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},h={x:(e+Q[2])*n,y:-(t+Q[3])*n};Oi(g,C,h,r,I),g=h}else if(E==="bezierCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},h={x:(e+Q[2])*n,y:-(t+Q[3])*n},m={x:(e+Q[4])*n,y:-(t+Q[5])*n};Vi(g,C,h,m,r,I),g=m}else E==="closePath"&&B()}return B(),{contours:s,simplified:a}}var zi=Math.cos(30*Math.PI/180);function Zi({contours:A,simplified:e}){if(!e)return qi(A);let t=A.map(i=>({contour:i,area:Math.abs(Fe(i))}));t.sort((i,a)=>a.area-i.area);let n=t.map(()=>[]);for(let i=0;i<t.length;i++){let a=t[i].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<i;g++){if(t[g].area<=t[i].area)continue;let I=t[g].contour;(nt(a[0],I)||nt(s,I))&&n[i].push(g)}}let r=[],o=new Map;for(let i=0;i<t.length;i++){let a=n[i];if(a.length%2===0){let s={outer:t[i].contour,holes:[]};r.push(s),o.set(i,s)}else o.get(a[a.length-1])?.holes.push(t[i].contour)}return r}function qi(A){let e=A.map(r=>{let o=Fe(r);return{contour:r,signed:o,area:Math.abs(o)}});if(e.length===0)return[];e.sort((r,o)=>o.area-r.area);let t=Math.sign(e[0].signed),n=[];for(let r of e)Math.sign(r.signed)===t&&n.push({outer:r.contour,holes:[]});for(let r of e){if(Math.sign(r.signed)===t)continue;let o=r.contour[0],i=r.contour[Math.floor(r.contour.length/2)],a,s=Number.POSITIVE_INFINITY;for(let g of n){let I=Math.abs(Fe(g.outer));I>r.area&&I<s&&(nt(o,g.outer)||nt(i,g.outer))&&(a=g,s=I)}a?.holes.push(r.contour)}return n}var er=new WeakMap;function ji(A,e,t,n,r,o){let i=er.get(A);i||(i=new Map,er.set(A,i));let a=`${e.id}|${r}|${o.segments??""}|${o.tolerance}`,s=i.get(a);s||(s=Zi(Xi(e,0,0,r,o)),i.set(a,s));let g=t*r,I=-n*r,B=u=>u.map(E=>({x:E.x+g,y:E.y+I}));return s.map(u=>({outer:B(u.outer),holes:u.holes.map(B)}))}function Gs(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,o={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??Ki)},i=e.unitsPerEm||1e3,a=t/i,s=e.layout(A.text),g=0,I=[];for(let rA=0;rA<s.glyphs.length;rA++){let K=s.glyphs[rA],S=s.positions[rA],_=g+(S.xOffset??0),j=S.yOffset??0,W=ji(e,K,_,j,a,o);for(let nA of W)I.push(nA);g+=(S.xAdvance??K.advanceWidth??0)+(A.letterSpacing?A.letterSpacing/a:0)}let B=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,E=Number.POSITIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(let rA of I){for(let K of rA.outer)K.x<B&&(B=K.x),K.x>u&&(u=K.x),K.y<E&&(E=K.y),K.y>Q&&(Q=K.y);for(let K of rA.holes)for(let S of K)S.x<B&&(B=S.x),S.x>u&&(u=S.x),S.y<E&&(E=S.y),S.y>Q&&(Q=S.y)}Number.isFinite(B)||(B=0,u=0,E=0,Q=0);let C=u-B,h=Q-E,m=(B+u)/2;(A.align==="left"||A.align==="start")&&(m=B),(A.align==="right"||A.align==="end")&&(m=u);let y=(E+Q)/2;A.verticalAlign==="top"&&(y=E),A.verticalAlign==="bottom"&&(y=Q);for(let rA of I){for(let K of rA.outer)K.x-=m,K.y-=y;for(let K of rA.holes)for(let S of K)S.x-=m,S.y-=y}B-=m,u-=m,E-=y,Q-=y;let D=[],U=[],M=[],b=[],x=[],N=[],T=[],Y=[],O=(rA,K,S)=>{let _=x.length/3;return x.push(rA.x,rA.y,r,rA.x,rA.y,-r),N.push(K.x,K.y,0,K.x,K.y,0),T.push(S,0,S,1),_},v=rA=>{let K=rA.filter((aA,R)=>{let gA=rA[(R+1)%rA.length];return Math.hypot(gA.x-aA.x,gA.y-aA.y)>=1e-6}),S=K.length;if(S<2)return;let _=[],j=K.map((aA,R)=>{let gA=K[(R+1)%S],AA=Math.hypot(gA.x-aA.x,gA.y-aA.y);return _.push(AA),{x:(gA.y-aA.y)/AA,y:-(gA.x-aA.x)/AA}}),W=_.reduce((aA,R)=>aA+R,0),nA=[],lA=[],oA=0;for(let aA=0;aA<S;aA++){let R=j[(aA-1+S)%S],gA=j[aA],AA=oA/W,IA=R.x+gA.x,q=R.y+gA.y,L=R.x*gA.x+R.y*gA.y>=zi?{x:IA/Math.hypot(IA,q),y:q/Math.hypot(IA,q)}:null;L&&aA>0?nA[aA]=lA[aA]=O(K[aA],L,AA):(lA[aA]=O(K[aA],L??R,aA===0?1:AA),nA[aA]=O(K[aA],L??gA,AA)),oA+=_[aA]}for(let aA=0;aA<S;aA++){let R=nA[aA],gA=lA[(aA+1)%S];Y.push(R,gA+1,gA),Y.push(R,R+1,gA+1)}};for(let rA of I){let K=rA.outer;Fe(K)<0&&K.reverse();for(let oA of rA.holes)Fe(oA)>0&&oA.reverse();let S=[],_=[];for(let oA of K)S.push(oA.x,oA.y);for(let oA of rA.holes){_.push(S.length/2);for(let aA of oA)S.push(aA.x,aA.y)}let j=Pt(S,_,2),W=S.length/2,nA=D.length/3;for(let oA=0;oA<W;oA++){let aA=S[oA*2],R=S[oA*2+1];D.push(aA,R,-r),U.push(0,0,-1),M.push((aA-B)/(C||1),(R-E)/(h||1))}for(let oA=0;oA<j.length;oA+=3)b.push(nA+j[oA],nA+j[oA+2],nA+j[oA+1]);let lA=D.length/3;for(let oA=0;oA<W;oA++){let aA=S[oA*2],R=S[oA*2+1];D.push(aA,R,r),U.push(0,0,1),M.push((aA-B)/(C||1),(R-E)/(h||1))}for(let oA=0;oA<j.length;oA+=3)b.push(lA+j[oA],lA+j[oA+1],lA+j[oA+2]);v(K);for(let oA of rA.holes)v(oA)}let tA=Ar(A.fill??"#ffffff"),X=Ar(A.bevelColor??A.fill??"#ffffff"),F={name:"front-material",diffuseColor:tA,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},sA={name:"side-material",diffuseColor:X,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},H=[];return b.length>0&&H.push({id:"text-front-mesh",name:"front",positions:new Float32Array(D),normals:new Float32Array(U),uvs:new Float32Array(M),indices:D.length/3>65535?new Uint32Array(b):new Uint16Array(b),materialName:"front-material"}),Y.length>0&&H.push({id:"text-side-mesh",name:"side",positions:new Float32Array(x),normals:new Float32Array(N),uvs:new Float32Array(T),indices:x.length/3>65535?new Uint32Array(Y):new Uint16Array(Y),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:H,materials:{"front-material":F,"side-material":sA},animations:[],bounds:{min:[B,E,-r],max:[u,Q,r],center:[(B+u)/2,(E+Q)/2,0],size:[C,h,n],boundingSphereRadius:Math.hypot(C,h,n)/2}},bounds:{minX:B,maxX:u,minY:E,maxY:Q,width:C,height:h,depth:n}}}var Jt=new Map;function _i(A,e){return JSON.stringify({text:A,...e})}function Tt(A,e){let t=A?String(A):" ",n=_i(t,e),r=Jt.get(n);if(r)return r;let o=e.fontSize??48,i=e.fontFamily??"Inter";ZA.isFailed(i)&&(i="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*o:e.lineHeight??o*1.2,g=ZA.getFont(i,e.fontWeight,null),I=e.padding??0;if(!g){if(!ZA.isFailed(i)){let m=Ct(i);ZA.preloadSlugFont(null,i,m).catch(()=>{})}let E=t.split(`
|
|
996
|
-
`),Q=0,C=e.width!==void 0?Math.max(10,e.width-I*2):0;for(let m of E)if(C>0){let y=m.length*o*.55+a*m.length,D=Math.max(1,Math.ceil(y/C));Q+=D}else Q+=1;let h={width:e.width!==void 0?e.width:Math.ceil(t.length*o*.6+a*t.length)+2+I*2,height:e.height!==void 0?e.height:Math.ceil(Q*s)+2+I*2};return Jt.set(n,h),h}let B=cn.measure(t,g,o,a,s,e.width!==void 0?Math.max(0,e.width-I*2):void 0,e.spans),u={width:e.width!==void 0&&!e.keepNaturalWidth?e.width:Math.ceil(B.width)+I*2+8,height:e.height!==void 0?e.height:Math.ceil(B.height)+I*2};return Jt.set(n,u),u}function ks(A,e){let t=e.fontFamily??"Inter";if(ZA.isFailed(t)&&(t="Inter"),ZA.isFailed(t))return Promise.resolve(Tt(A,e));let n=Ct(t);return ZA.preloadSlugFont(null,t,n).then(()=>Tt(A,e)).catch(()=>Tt(A,e))}$();$();$();var $i=(()=>{var A=import.meta.url;return(function(e){e=e||{};var t;t||(t=typeof e<"u"?e:{});var n,r;t.ready=new Promise(function(l,c){n=l,r=c});var o=Object.assign({},t),i="";typeof document<"u"&&document.currentScript&&(i=document.currentScript.src),A&&(i=A),i.indexOf("blob:")!==0?i=i.substr(0,i.replace(/[?#].*/,"").lastIndexOf("/")+1):i="";var a=t.print||console.log.bind(console),s=t.printErr||console.warn.bind(console);Object.assign(t,o),o=null;var g;t.wasmBinary&&(g=t.wasmBinary);var I=t.noExitRuntime||!0;typeof WebAssembly!="object"&&sA("no native wasm support detected");var B,u=!1;function E(l,c,f){f=c+f;for(var d="";!(c>=f);){var p=l[c++];if(!p)break;if(p&128){var G=l[c++]&63;if((p&224)==192)d+=String.fromCharCode((p&31)<<6|G);else{var P=l[c++]&63;p=(p&240)==224?(p&15)<<12|G<<6|P:(p&7)<<18|G<<12|P<<6|l[c++]&63,65536>p?d+=String.fromCharCode(p):(p-=65536,d+=String.fromCharCode(55296|p>>10,56320|p&1023))}}else d+=String.fromCharCode(p)}return d}var Q,C,h,m,y,D,U,M,b;function x(){var l=B.buffer;Q=l,t.HEAP8=C=new Int8Array(l),t.HEAP16=m=new Int16Array(l),t.HEAP32=D=new Int32Array(l),t.HEAPU8=h=new Uint8Array(l),t.HEAPU16=y=new Uint16Array(l),t.HEAPU32=U=new Uint32Array(l),t.HEAPF32=M=new Float32Array(l),t.HEAPF64=b=new Float64Array(l)}var N,T=[],Y=[],O=[];function v(){var l=t.preRun.shift();T.unshift(l)}var tA=0,X=null,F=null;function sA(l){throw t.onAbort&&t.onAbort(l),l="Aborted("+l+")",s(l),u=!0,l=new WebAssembly.RuntimeError(l+". Build with -sASSERTIONS for more info."),r(l),l}function H(l){return l.startsWith("data:application/octet-stream;base64,")}var V;if(V="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!H(V)){var rA=V;V=t.locateFile?t.locateFile(rA,i):i+rA}function K(){var l=V;try{if(l==V&&g)return new Uint8Array(g);if(H(l))try{var c=Hr(l.slice(37)),f=new Uint8Array(c.length);for(l=0;l<c.length;++l)f[l]=c.charCodeAt(l);var d=f}catch{throw Error("Converting base64 string to bytes failed.")}else d=void 0;var p=d;if(p)return p;throw"both async and sync fetching of the wasm failed"}catch(G){sA(G)}}function S(){return g||typeof fetch!="function"?Promise.resolve().then(function(){return K()}):fetch(V,{credentials:"same-origin"}).then(function(l){if(!l.ok)throw"failed to load wasm binary file at '"+V+"'";return l.arrayBuffer()}).catch(function(){return K()})}function _(l){for(;0<l.length;)l.shift()(t)}function j(l){if(l===void 0)return"_unknown";l=l.replace(/[^a-zA-Z0-9_]/g,"$");var c=l.charCodeAt(0);return 48<=c&&57>=c?"_"+l:l}function W(l,c){return l=j(l),function(){return c.apply(this,arguments)}}var nA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],lA=[];function oA(l){var c=Error,f=W(l,function(d){this.name=l,this.message=d,d=Error(d).stack,d!==void 0&&(this.stack=this.toString()+`
|
|
997
|
-
`+d.replace(/^Error(:[^\n]*)?\n/,""))});return f.prototype=Object.create(c.prototype),f.prototype.constructor=f,f.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},f}var aA=void 0;function R(l){throw new aA(l)}var gA=l=>(l||R("Cannot use deleted val. handle = "+l),nA[l].value),AA=l=>{switch(l){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var c=lA.length?lA.pop():nA.length;return nA[c]={ga:1,value:l},c}},IA=void 0,q=void 0;function w(l){for(var c="";h[l];)c+=q[h[l++]];return c}var L=[];function z(){for(;L.length;){var l=L.pop();l.M.$=!1,l.delete()}}var iA=void 0,EA={};function CA(l,c){for(c===void 0&&R("ptr should not be undefined");l.R;)c=l.ba(c),l=l.R;return c}var QA={};function mA(l){l=rn(l);var c=w(l);return YA(l),c}function dA(l,c){var f=QA[l];return f===void 0&&R(c+" has unknown type "+mA(l)),f}function DA(){}var wA=!1;function UA(l){--l.count.value,l.count.value===0&&(l.T?l.U.W(l.T):l.P.N.W(l.O))}function SA(l,c,f){return c===f?l:f.R===void 0?null:(l=SA(l,c,f.R),l===null?null:f.na(l))}var kA={};function ot(l,c){return c=CA(l,c),EA[c]}var RA=void 0;function Se(l){throw new RA(l)}function Re(l,c){return c.P&&c.O||Se("makeClassHandle requires ptr and ptrType"),!!c.U!=!!c.T&&Se("Both smartPtrType and smartPtr must be specified"),c.count={value:1},ee(Object.create(l,{M:{value:c}}))}function ee(l){return typeof FinalizationRegistry>"u"?(ee=c=>c,l):(wA=new FinalizationRegistry(c=>{UA(c.M)}),ee=c=>{var f=c.M;return f.T&&wA.register(c,{M:f},c),c},DA=c=>{wA.unregister(c)},ee(l))}var Le={};function at(l){for(;l.length;){var c=l.pop();l.pop()(c)}}function Be(l){return this.fromWireType(D[l>>2])}var te={},ke={};function XA(l,c,f){function d(J){J=f(J),J.length!==l.length&&Se("Mismatched type converter count");for(var eA=0;eA<l.length;++eA)TA(l[eA],J[eA])}l.forEach(function(J){ke[J]=c});var p=Array(c.length),G=[],P=0;c.forEach((J,eA)=>{QA.hasOwnProperty(J)?p[eA]=QA[J]:(G.push(J),te.hasOwnProperty(J)||(te[J]=[]),te[J].push(()=>{p[eA]=QA[J],++P,P===G.length&&d(p)}))}),G.length===0&&d(p)}function st(l){switch(l){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+l)}}function TA(l,c,f={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=c.name;if(l||R('type "'+d+'" must have a positive integer typeid pointer'),QA.hasOwnProperty(l)){if(f.ua)return;R("Cannot register type '"+d+"' twice")}QA[l]=c,delete ke[l],te.hasOwnProperty(l)&&(c=te[l],delete te[l],c.forEach(p=>p()))}function gt(l){R(l.M.P.N.name+" instance already deleted")}function zA(){}function It(l,c,f){if(l[c].S===void 0){var d=l[c];l[c]=function(){return l[c].S.hasOwnProperty(arguments.length)||R("Function '"+f+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+l[c].S+")!"),l[c].S[arguments.length].apply(this,arguments)},l[c].S=[],l[c].S[d.Z]=d}}function dr(l,c){t.hasOwnProperty(l)?(R("Cannot register public name '"+l+"' twice"),It(t,l,l),t.hasOwnProperty(void 0)&&R("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),t[l].S[void 0]=c):t[l]=c}function hr(l,c,f,d,p,G,P,J){this.name=l,this.constructor=c,this.X=f,this.W=d,this.R=p,this.pa=G,this.ba=P,this.na=J,this.ja=[]}function Bt(l,c,f){for(;c!==f;)c.ba||R("Expected null or instance of "+f.name+", got an instance of "+c.name),l=c.ba(l),c=c.R;return l}function mr(l,c){return c===null?(this.ea&&R("null is not a valid "+this.name),0):(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),Bt(c.M.O,c.M.P.N,this.N))}function yr(l,c){if(c===null){if(this.ea&&R("null is not a valid "+this.name),this.da){var f=this.fa();return l!==null&&l.push(this.W,f),f}return 0}if(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&c.M.P.ca&&R("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name),f=Bt(c.M.O,c.M.P.N,this.N),this.da)switch(c.M.T===void 0&&R("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:c.M.U===this?f=c.M.T:R("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name);break;case 1:f=c.M.T;break;case 2:if(c.M.U===this)f=c.M.T;else{var d=c.clone();f=this.xa(f,AA(function(){d.delete()})),l!==null&&l.push(this.W,f)}break;default:R("Unsupporting sharing policy")}return f}function pr(l,c){return c===null?(this.ea&&R("null is not a valid "+this.name),0):(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),c.M.P.ca&&R("Cannot convert argument of type "+c.M.P.name+" to parameter type "+this.name),Bt(c.M.O,c.M.P.N,this.N))}function KA(l,c,f,d){this.name=l,this.N=c,this.ea=f,this.ca=d,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,c.R!==void 0?this.toWireType=yr:(this.toWireType=d?mr:pr,this.V=null)}function Dr(l,c){t.hasOwnProperty(l)||Se("Replacing nonexistant public symbol"),t[l]=c,t[l].Z=void 0}function wr(l,c){var f=[];return function(){if(f.length=0,Object.assign(f,arguments),l.includes("j")){var d=t["dynCall_"+l];d=f&&f.length?d.apply(null,[c].concat(f)):d.call(null,c)}else d=N.get(c).apply(null,f);return d}}function vA(l,c){l=w(l);var f=l.includes("j")?wr(l,c):N.get(c);return typeof f!="function"&&R("unknown function pointer with signature "+l+": "+c),f}var An=void 0;function ve(l,c){function f(G){p[G]||QA[G]||(ke[G]?ke[G].forEach(f):(d.push(G),p[G]=!0))}var d=[],p={};throw c.forEach(f),new An(l+": "+d.map(mA).join([", "]))}function lt(l,c,f,d,p){var G=c.length;2>G&&R("argTypes array size mismatch! Must at least get return value and 'this' types!");var P=c[1]!==null&&f!==null,J=!1;for(f=1;f<c.length;++f)if(c[f]!==null&&c[f].V===void 0){J=!0;break}var eA=c[0].name!=="void",Z=G-2,BA=Array(Z),uA=[],hA=[];return function(){if(arguments.length!==Z&&R("function "+l+" called with "+arguments.length+" arguments, expected "+Z+" args!"),hA.length=0,uA.length=P?2:1,uA[0]=p,P){var MA=c[1].toWireType(hA,this);uA[1]=MA}for(var pA=0;pA<Z;++pA)BA[pA]=c[pA+2].toWireType(hA,arguments[pA]),uA.push(BA[pA]);if(pA=d.apply(null,uA),J)at(hA);else for(var FA=P?1:2;FA<c.length;FA++){var HA=FA===1?MA:BA[FA-2];c[FA].V!==null&&c[FA].V(HA)}return MA=eA?c[0].fromWireType(pA):void 0,MA}}function ct(l,c){for(var f=[],d=0;d<l;d++)f.push(U[c+4*d>>2]);return f}function ut(l){4<l&&--nA[l].ga===0&&(nA[l]=void 0,lA.push(l))}function Et(l){if(l===null)return"null";var c=typeof l;return c==="object"||c==="array"||c==="function"?l.toString():""+l}function br(l,c){switch(c){case 2:return function(f){return this.fromWireType(M[f>>2])};case 3:return function(f){return this.fromWireType(b[f>>3])};default:throw new TypeError("Unknown float type: "+l)}}function Mr(l,c,f){switch(c){case 0:return f?function(d){return C[d]}:function(d){return h[d]};case 1:return f?function(d){return m[d>>1]}:function(d){return y[d>>1]};case 2:return f?function(d){return D[d>>2]}:function(d){return U[d>>2]};default:throw new TypeError("Unknown integer type: "+l)}}function xr(l,c){for(var f="",d=0;!(d>=c/2);++d){var p=m[l+2*d>>1];if(p==0)break;f+=String.fromCharCode(p)}return f}function Fr(l,c,f){if(f===void 0&&(f=2147483647),2>f)return 0;f-=2;var d=c;f=f<2*l.length?f/2:l.length;for(var p=0;p<f;++p)m[c>>1]=l.charCodeAt(p),c+=2;return m[c>>1]=0,c-d}function Nr(l){return 2*l.length}function Gr(l,c){for(var f=0,d="";!(f>=c/4);){var p=D[l+4*f>>2];if(p==0)break;++f,65536<=p?(p-=65536,d+=String.fromCharCode(55296|p>>10,56320|p&1023)):d+=String.fromCharCode(p)}return d}function Ur(l,c,f){if(f===void 0&&(f=2147483647),4>f)return 0;var d=c;f=d+f-4;for(var p=0;p<l.length;++p){var G=l.charCodeAt(p);if(55296<=G&&57343>=G){var P=l.charCodeAt(++p);G=65536+((G&1023)<<10)|P&1023}if(D[c>>2]=G,c+=4,c+4>f)break}return D[c>>2]=0,c-d}function Sr(l){for(var c=0,f=0;f<l.length;++f){var d=l.charCodeAt(f);55296<=d&&57343>=d&&++f,c+=4}return c}var Rr={};function en(l){var c=Rr[l];return c===void 0?w(l):c}var He=[];function Lr(l){var c=He.length;return He.push(l),c}function kr(l,c){for(var f=Array(l),d=0;d<l;++d)f[d]=dA(U[c+4*d>>2],"parameter "+d);return f}var tn=[],vr=[null,[],[]];aA=t.BindingError=oA("BindingError"),t.count_emval_handles=function(){for(var l=0,c=5;c<nA.length;++c)nA[c]!==void 0&&++l;return l},t.get_first_emval=function(){for(var l=5;l<nA.length;++l)if(nA[l]!==void 0)return nA[l];return null},IA=t.PureVirtualError=oA("PureVirtualError");for(var nn=Array(256),Pe=0;256>Pe;++Pe)nn[Pe]=String.fromCharCode(Pe);q=nn,t.getInheritedInstanceCount=function(){return Object.keys(EA).length},t.getLiveInheritedInstances=function(){var l=[],c;for(c in EA)EA.hasOwnProperty(c)&&l.push(EA[c]);return l},t.flushPendingDeletes=z,t.setDelayFunction=function(l){iA=l,L.length&&iA&&iA(z)},RA=t.InternalError=oA("InternalError"),zA.prototype.isAliasOf=function(l){if(!(this instanceof zA&&l instanceof zA))return!1;var c=this.M.P.N,f=this.M.O,d=l.M.P.N;for(l=l.M.O;c.R;)f=c.ba(f),c=c.R;for(;d.R;)l=d.ba(l),d=d.R;return c===d&&f===l},zA.prototype.clone=function(){if(this.M.O||gt(this),this.M.aa)return this.M.count.value+=1,this;var l=ee,c=Object,f=c.create,d=Object.getPrototypeOf(this),p=this.M;return l=l(f.call(c,d,{M:{value:{count:p.count,$:p.$,aa:p.aa,O:p.O,P:p.P,T:p.T,U:p.U}}})),l.M.count.value+=1,l.M.$=!1,l},zA.prototype.delete=function(){this.M.O||gt(this),this.M.$&&!this.M.aa&&R("Object already scheduled for deletion"),DA(this),UA(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},zA.prototype.isDeleted=function(){return!this.M.O},zA.prototype.deleteLater=function(){return this.M.O||gt(this),this.M.$&&!this.M.aa&&R("Object already scheduled for deletion"),L.push(this),L.length===1&&iA&&iA(z),this.M.$=!0,this},KA.prototype.qa=function(l){return this.ka&&(l=this.ka(l)),l},KA.prototype.ha=function(l){this.W&&this.W(l)},KA.prototype.argPackAdvance=8,KA.prototype.readValueFromPointer=Be,KA.prototype.deleteObject=function(l){l!==null&&l.delete()},KA.prototype.fromWireType=function(l){function c(){return this.da?Re(this.N.X,{P:this.wa,O:f,U:this,T:l}):Re(this.N.X,{P:this,O:l})}var f=this.qa(l);if(!f)return this.ha(l),null;var d=ot(this.N,f);if(d!==void 0)return d.M.count.value===0?(d.M.O=f,d.M.T=l,d.clone()):(d=d.clone(),this.ha(l),d);if(d=this.N.pa(f),d=kA[d],!d)return c.call(this);d=this.ca?d.la:d.pointerType;var p=SA(f,this.N,d.N);return p===null?c.call(this):this.da?Re(d.N.X,{P:d,O:p,U:this,T:l}):Re(d.N.X,{P:d,O:p})},An=t.UnboundTypeError=oA("UnboundTypeError");var Hr=typeof atob=="function"?atob:function(l){var c="",f=0;l=l.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),P="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++));d=d<<2|p>>4,p=(p&15)<<4|G>>2;var J=(G&3)<<6|P;c+=String.fromCharCode(d),G!==64&&(c+=String.fromCharCode(p)),P!==64&&(c+=String.fromCharCode(J))}while(f<l.length);return c},Pr={l:function(l,c,f,d){sA("Assertion failed: "+(l?E(h,l):"")+", at: "+[c?c?E(h,c):"":"unknown filename",f,d?d?E(h,d):"":"unknown function"])},q:function(l,c,f){l=w(l),c=dA(c,"wrapper"),f=gA(f);var d=[].slice,p=c.N,G=p.X,P=p.R.X,J=p.R.constructor;l=W(l,function(){p.R.ja.forEach(function(Z){if(this[Z]===P[Z])throw new IA("Pure virtual function "+Z+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:G}),this.__construct.apply(this,d.call(arguments))}),G.__construct=function(){this===G&&R("Pass correct 'this' to __construct");var Z=J.implement.apply(void 0,[this].concat(d.call(arguments)));DA(Z);var BA=Z.M;Z.notifyOnDestruction(),BA.aa=!0,Object.defineProperties(this,{M:{value:BA}}),ee(this),Z=BA.O,Z=CA(p,Z),EA.hasOwnProperty(Z)?R("Tried to register registered instance: "+Z):EA[Z]=this},G.__destruct=function(){this===G&&R("Pass correct 'this' to __destruct"),DA(this);var Z=this.M.O;Z=CA(p,Z),EA.hasOwnProperty(Z)?delete EA[Z]:R("Tried to unregister unregistered instance: "+Z)},l.prototype=Object.create(G);for(var eA in f)l.prototype[eA]=f[eA];return AA(l)},j:function(l){var c=Le[l];delete Le[l];var f=c.fa,d=c.W,p=c.ia,G=p.map(P=>P.ta).concat(p.map(P=>P.za));XA([l],G,P=>{var J={};return p.forEach((eA,Z)=>{var BA=P[Z],uA=eA.ra,hA=eA.sa,MA=P[Z+p.length],pA=eA.ya,FA=eA.Aa;J[eA.oa]={read:HA=>BA.fromWireType(uA(hA,HA)),write:(HA,le)=>{var OA=[];pA(FA,HA,MA.toWireType(OA,le)),at(OA)}}}),[{name:c.name,fromWireType:function(eA){var Z={},BA;for(BA in J)Z[BA]=J[BA].read(eA);return d(eA),Z},toWireType:function(eA,Z){for(var BA in J)if(!(BA in Z))throw new TypeError('Missing field: "'+BA+'"');var uA=f();for(BA in J)J[BA].write(uA,Z[BA]);return eA!==null&&eA.push(d,uA),uA},argPackAdvance:8,readValueFromPointer:Be,V:d}]})},v:function(){},B:function(l,c,f,d,p){var G=st(f);c=w(c),TA(l,{name:c,fromWireType:function(P){return!!P},toWireType:function(P,J){return J?d:p},argPackAdvance:8,readValueFromPointer:function(P){if(f===1)var J=C;else if(f===2)J=m;else if(f===4)J=D;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(J[P>>G])},V:null})},f:function(l,c,f,d,p,G,P,J,eA,Z,BA,uA,hA){BA=w(BA),G=vA(p,G),J&&(J=vA(P,J)),Z&&(Z=vA(eA,Z)),hA=vA(uA,hA);var MA=j(BA);dr(MA,function(){ve("Cannot construct "+BA+" due to unbound types",[d])}),XA([l,c,f],d?[d]:[],function(pA){if(pA=pA[0],d)var FA=pA.N,HA=FA.X;else HA=zA.prototype;pA=W(MA,function(){if(Object.getPrototypeOf(this)!==le)throw new aA("Use 'new' to construct "+BA);if(OA.Y===void 0)throw new aA(BA+" has no accessible constructor");var sn=OA.Y[arguments.length];if(sn===void 0)throw new aA("Tried to invoke ctor of "+BA+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(OA.Y).toString()+") parameters instead!");return sn.apply(this,arguments)});var le=Object.create(HA,{constructor:{value:pA}});pA.prototype=le;var OA=new hr(BA,pA,le,hA,FA,G,J,Z);FA=new KA(BA,OA,!0,!1),HA=new KA(BA+"*",OA,!1,!1);var an=new KA(BA+" const*",OA,!1,!0);return kA[l]={pointerType:HA,la:an},Dr(MA,pA),[FA,HA,an]})},d:function(l,c,f,d,p,G,P){var J=ct(f,d);c=w(c),G=vA(p,G),XA([],[l],function(eA){function Z(){ve("Cannot call "+BA+" due to unbound types",J)}eA=eA[0];var BA=eA.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]);var uA=eA.N.constructor;return uA[c]===void 0?(Z.Z=f-1,uA[c]=Z):(It(uA,c,BA),uA[c].S[f-1]=Z),XA([],J,function(hA){return hA=lt(BA,[hA[0],null].concat(hA.slice(1)),null,G,P),uA[c].S===void 0?(hA.Z=f-1,uA[c]=hA):uA[c].S[f-1]=hA,[]}),[]})},p:function(l,c,f,d,p,G){0<c||sA();var P=ct(c,f);p=vA(d,p),XA([],[l],function(J){J=J[0];var eA="constructor "+J.name;if(J.N.Y===void 0&&(J.N.Y=[]),J.N.Y[c-1]!==void 0)throw new aA("Cannot register multiple constructors with identical number of parameters ("+(c-1)+") for class '"+J.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return J.N.Y[c-1]=()=>{ve("Cannot construct "+J.name+" due to unbound types",P)},XA([],P,function(Z){return Z.splice(1,0,null),J.N.Y[c-1]=lt(eA,Z,null,p,G),[]}),[]})},a:function(l,c,f,d,p,G,P,J){var eA=ct(f,d);c=w(c),G=vA(p,G),XA([],[l],function(Z){function BA(){ve("Cannot call "+uA+" due to unbound types",eA)}Z=Z[0];var uA=Z.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]),J&&Z.N.ja.push(c);var hA=Z.N.X,MA=hA[c];return MA===void 0||MA.S===void 0&&MA.className!==Z.name&&MA.Z===f-2?(BA.Z=f-2,BA.className=Z.name,hA[c]=BA):(It(hA,c,uA),hA[c].S[f-2]=BA),XA([],eA,function(pA){return pA=lt(uA,pA,Z,G,P),hA[c].S===void 0?(pA.Z=f-2,hA[c]=pA):hA[c].S[f-2]=pA,[]}),[]})},A:function(l,c){c=w(c),TA(l,{name:c,fromWireType:function(f){var d=gA(f);return ut(f),d},toWireType:function(f,d){return AA(d)},argPackAdvance:8,readValueFromPointer:Be,V:null})},n:function(l,c,f){f=st(f),c=w(c),TA(l,{name:c,fromWireType:function(d){return d},toWireType:function(d,p){return p},argPackAdvance:8,readValueFromPointer:br(c,f),V:null})},e:function(l,c,f,d,p){c=w(c),p===-1&&(p=4294967295),p=st(f);var G=J=>J;if(d===0){var P=32-8*f;G=J=>J<<P>>>P}f=c.includes("unsigned")?function(J,eA){return eA>>>0}:function(J,eA){return eA},TA(l,{name:c,fromWireType:G,toWireType:f,argPackAdvance:8,readValueFromPointer:Mr(c,p,d!==0),V:null})},b:function(l,c,f){function d(G){G>>=2;var P=U;return new p(Q,P[G+1],P[G])}var p=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][c];f=w(f),TA(l,{name:f,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0})},o:function(l,c){c=w(c);var f=c==="std::string";TA(l,{name:c,fromWireType:function(d){var p=U[d>>2],G=d+4;if(f)for(var P=G,J=0;J<=p;++J){var eA=G+J;if(J==p||h[eA]==0){if(P=P?E(h,P,eA-P):"",Z===void 0)var Z=P;else Z+="\0",Z+=P;P=eA+1}}else{for(Z=Array(p),J=0;J<p;++J)Z[J]=String.fromCharCode(h[G+J]);Z=Z.join("")}return YA(d),Z},toWireType:function(d,p){p instanceof ArrayBuffer&&(p=new Uint8Array(p));var G,P=typeof p=="string";if(P||p instanceof Uint8Array||p instanceof Uint8ClampedArray||p instanceof Int8Array||R("Cannot pass non-string to std::string"),f&&P){var J=0;for(G=0;G<p.length;++G){var eA=p.charCodeAt(G);127>=eA?J++:2047>=eA?J+=2:55296<=eA&&57343>=eA?(J+=4,++G):J+=3}G=J}else G=p.length;if(J=Qt(4+G+1),eA=J+4,U[J>>2]=G,f&&P){if(P=eA,eA=G+1,G=h,0<eA){eA=P+eA-1;for(var Z=0;Z<p.length;++Z){var BA=p.charCodeAt(Z);if(55296<=BA&&57343>=BA){var uA=p.charCodeAt(++Z);BA=65536+((BA&1023)<<10)|uA&1023}if(127>=BA){if(P>=eA)break;G[P++]=BA}else{if(2047>=BA){if(P+1>=eA)break;G[P++]=192|BA>>6}else{if(65535>=BA){if(P+2>=eA)break;G[P++]=224|BA>>12}else{if(P+3>=eA)break;G[P++]=240|BA>>18,G[P++]=128|BA>>12&63}G[P++]=128|BA>>6&63}G[P++]=128|BA&63}}G[P]=0}}else if(P)for(P=0;P<G;++P)Z=p.charCodeAt(P),255<Z&&(YA(eA),R("String has UTF-16 code units that do not fit in 8 bits")),h[eA+P]=Z;else for(P=0;P<G;++P)h[eA+P]=p[P];return d!==null&&d.push(YA,J),J},argPackAdvance:8,readValueFromPointer:Be,V:function(d){YA(d)}})},i:function(l,c,f){if(f=w(f),c===2)var d=xr,p=Fr,G=Nr,P=()=>y,J=1;else c===4&&(d=Gr,p=Ur,G=Sr,P=()=>U,J=2);TA(l,{name:f,fromWireType:function(eA){for(var Z=U[eA>>2],BA=P(),uA,hA=eA+4,MA=0;MA<=Z;++MA){var pA=eA+4+MA*c;(MA==Z||BA[pA>>J]==0)&&(hA=d(hA,pA-hA),uA===void 0?uA=hA:(uA+="\0",uA+=hA),hA=pA+c)}return YA(eA),uA},toWireType:function(eA,Z){typeof Z!="string"&&R("Cannot pass non-string to C++ string type "+f);var BA=G(Z),uA=Qt(4+BA+c);return U[uA>>2]=BA>>J,p(Z,uA+4,BA+c),eA!==null&&eA.push(YA,uA),uA},argPackAdvance:8,readValueFromPointer:Be,V:function(eA){YA(eA)}})},k:function(l,c,f,d,p,G){Le[l]={name:w(c),fa:vA(f,d),W:vA(p,G),ia:[]}},h:function(l,c,f,d,p,G,P,J,eA,Z){Le[l].ia.push({oa:w(c),ta:f,ra:vA(d,p),sa:G,za:P,ya:vA(J,eA),Aa:Z})},C:function(l,c){c=w(c),TA(l,{va:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(l,c,f,d,p){l=He[l],c=gA(c),f=en(f);var G=[];return U[d>>2]=AA(G),l(c,f,G,p)},t:function(l,c,f,d){l=He[l],c=gA(c),f=en(f),l(c,f,null,d)},g:ut,m:function(l,c){var f=kr(l,c),d=f[0];c=d.name+"_$"+f.slice(1).map(function(P){return P.name}).join("_")+"$";var p=tn[c];if(p!==void 0)return p;var G=Array(l-1);return p=Lr((P,J,eA,Z)=>{for(var BA=0,uA=0;uA<l-1;++uA)G[uA]=f[uA+1].readValueFromPointer(Z+BA),BA+=f[uA+1].argPackAdvance;for(P=P[J].apply(P,G),uA=0;uA<l-1;++uA)f[uA+1].ma&&f[uA+1].ma(G[uA]);if(!d.va)return d.toWireType(eA,P)}),tn[c]=p},D:function(l){4<l&&(nA[l].ga+=1)},r:function(l){var c=gA(l);at(c),ut(l)},c:function(){sA("")},x:function(l,c,f){h.copyWithin(l,c,c+f)},w:function(l){var c=h.length;if(l>>>=0,2147483648<l)return!1;for(var f=1;4>=f;f*=2){var d=c*(1+.2/f);d=Math.min(d,l+100663296);var p=Math;d=Math.max(l,d),p=p.min.call(p,2147483648,d+(65536-d%65536)%65536);A:{try{B.grow(p-Q.byteLength+65535>>>16),x();var G=1;break A}catch{}G=void 0}if(G)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(l,c,f,d){for(var p=0,G=0;G<f;G++){var P=U[c>>2],J=U[c+4>>2];c+=8;for(var eA=0;eA<J;eA++){var Z=h[P+eA],BA=vr[l];Z===0||Z===10?((l===1?a:s)(E(BA,0)),BA.length=0):BA.push(Z)}p+=J}return U[d>>2]=p,0}};(function(){function l(p){t.asm=p.exports,B=t.asm.E,x(),N=t.asm.J,Y.unshift(t.asm.F),tA--,t.monitorRunDependencies&&t.monitorRunDependencies(tA),tA==0&&(X!==null&&(clearInterval(X),X=null),F&&(p=F,F=null,p()))}function c(p){l(p.instance)}function f(p){return S().then(function(G){return WebAssembly.instantiate(G,d)}).then(function(G){return G}).then(p,function(G){s("failed to asynchronously prepare wasm: "+G),sA(G)})}var d={a:Pr};if(tA++,t.monitorRunDependencies&&t.monitorRunDependencies(tA),t.instantiateWasm)try{return t.instantiateWasm(d,l)}catch(p){s("Module.instantiateWasm callback failed with error: "+p),r(p)}return(function(){return g||typeof WebAssembly.instantiateStreaming!="function"||H(V)||typeof fetch!="function"?f(c):fetch(V,{credentials:"same-origin"}).then(function(p){return WebAssembly.instantiateStreaming(p,d).then(c,function(G){return s("wasm streaming compile failed: "+G),s("falling back to ArrayBuffer instantiation"),f(c)})})})().catch(r),{}})(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.F).apply(null,arguments)};var rn=t.___getTypeName=function(){return(rn=t.___getTypeName=t.asm.G).apply(null,arguments)};t.__embind_initialize_bindings=function(){return(t.__embind_initialize_bindings=t.asm.H).apply(null,arguments)};var Qt=t._malloc=function(){return(Qt=t._malloc=t.asm.I).apply(null,arguments)},YA=t._free=function(){return(YA=t._free=t.asm.K).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.L).apply(null,arguments)};var Je;F=function l(){Je||on(),Je||(F=l)};function on(){function l(){if(!Je&&(Je=!0,t.calledRun=!0,!u)){if(_(Y),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var c=t.postRun.shift();O.unshift(c)}_(O)}}if(!(0<tA)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)v();_(T),0<tA||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),l()},1)):l())}}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();return on(),e.ready})})(),rr=$i;$();$();var VA=(function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A})({}),ir=(function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A})({}),or=(function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A})({}),Ne=(function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A})({}),Kt=(function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A})({}),WA=(function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A})({}),se=(function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A})({}),Ao=(function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A})({}),rt=(function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A})({}),Yt=(function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A})({}),ge=(function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A})({}),Ie=(function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A})({}),Ot=(function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A})({}),ar=(function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A})({}),Vt=(function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A})({}),Wt=(function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A})({}),PA=(function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A})({}),Xt=(function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A})({}),eo={ALIGN_AUTO:VA.Auto,ALIGN_FLEX_START:VA.FlexStart,ALIGN_CENTER:VA.Center,ALIGN_FLEX_END:VA.FlexEnd,ALIGN_STRETCH:VA.Stretch,ALIGN_BASELINE:VA.Baseline,ALIGN_SPACE_BETWEEN:VA.SpaceBetween,ALIGN_SPACE_AROUND:VA.SpaceAround,ALIGN_SPACE_EVENLY:VA.SpaceEvenly,BOX_SIZING_BORDER_BOX:ir.BorderBox,BOX_SIZING_CONTENT_BOX:ir.ContentBox,DIMENSION_WIDTH:or.Width,DIMENSION_HEIGHT:or.Height,DIRECTION_INHERIT:Ne.Inherit,DIRECTION_LTR:Ne.LTR,DIRECTION_RTL:Ne.RTL,DISPLAY_FLEX:Kt.Flex,DISPLAY_NONE:Kt.None,DISPLAY_CONTENTS:Kt.Contents,EDGE_LEFT:WA.Left,EDGE_TOP:WA.Top,EDGE_RIGHT:WA.Right,EDGE_BOTTOM:WA.Bottom,EDGE_START:WA.Start,EDGE_END:WA.End,EDGE_HORIZONTAL:WA.Horizontal,EDGE_VERTICAL:WA.Vertical,EDGE_ALL:WA.All,ERRATA_NONE:se.None,ERRATA_STRETCH_FLEX_BASIS:se.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:se.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:se.AbsolutePercentAgainstInnerSize,ERRATA_ALL:se.All,ERRATA_CLASSIC:se.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Ao.WebFlexBasis,FLEX_DIRECTION_COLUMN:rt.Column,FLEX_DIRECTION_COLUMN_REVERSE:rt.ColumnReverse,FLEX_DIRECTION_ROW:rt.Row,FLEX_DIRECTION_ROW_REVERSE:rt.RowReverse,GUTTER_COLUMN:Yt.Column,GUTTER_ROW:Yt.Row,GUTTER_ALL:Yt.All,JUSTIFY_FLEX_START:ge.FlexStart,JUSTIFY_CENTER:ge.Center,JUSTIFY_FLEX_END:ge.FlexEnd,JUSTIFY_SPACE_BETWEEN:ge.SpaceBetween,JUSTIFY_SPACE_AROUND:ge.SpaceAround,JUSTIFY_SPACE_EVENLY:ge.SpaceEvenly,LOG_LEVEL_ERROR:Ie.Error,LOG_LEVEL_WARN:Ie.Warn,LOG_LEVEL_INFO:Ie.Info,LOG_LEVEL_DEBUG:Ie.Debug,LOG_LEVEL_VERBOSE:Ie.Verbose,LOG_LEVEL_FATAL:Ie.Fatal,MEASURE_MODE_UNDEFINED:Ot.Undefined,MEASURE_MODE_EXACTLY:Ot.Exactly,MEASURE_MODE_AT_MOST:Ot.AtMost,NODE_TYPE_DEFAULT:ar.Default,NODE_TYPE_TEXT:ar.Text,OVERFLOW_VISIBLE:Vt.Visible,OVERFLOW_HIDDEN:Vt.Hidden,OVERFLOW_SCROLL:Vt.Scroll,POSITION_TYPE_STATIC:Wt.Static,POSITION_TYPE_RELATIVE:Wt.Relative,POSITION_TYPE_ABSOLUTE:Wt.Absolute,UNIT_UNDEFINED:PA.Undefined,UNIT_POINT:PA.Point,UNIT_PERCENT:PA.Percent,UNIT_AUTO:PA.Auto,WRAP_NO_WRAP:Xt.NoWrap,WRAP_WRAP:Xt.Wrap,WRAP_WRAP_REVERSE:Xt.WrapReverse},sr=eo;function zt(A){function e(r,o,i){let a=r[o];r[o]=function(){for(var s=arguments.length,g=new Array(s),I=0;I<s;I++)g[I]=arguments[I];return i.call(this,a,...g)}}for(let r of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let o={[PA.Point]:A.Node.prototype[r],[PA.Percent]:A.Node.prototype[`${r}Percent`],[PA.Auto]:A.Node.prototype[`${r}Auto`]};e(A.Node.prototype,r,function(i){for(var a=arguments.length,s=new Array(a>1?a-1:0),g=1;g<a;g++)s[g-1]=arguments[g];let I=s.pop(),B,u;if(I==="auto")B=PA.Auto,u=void 0;else if(typeof I=="object")B=I.unit,u=I.valueOf();else if(B=typeof I=="string"&&I.endsWith("%")?PA.Percent:PA.Point,u=parseFloat(I),I!==void 0&&!Number.isNaN(I)&&Number.isNaN(u))throw new Error(`Invalid value ${I} for ${r}`);if(!o[B])throw new Error(`Failed to execute "${r}": Unsupported unit '${I}'`);return u!==void 0?o[B].call(this,...s,u):o[B].call(this,...s)})}function t(r){return A.MeasureCallback.implement({measure:function(){let{width:o,height:i}=r(...arguments);return{width:o??NaN,height:i??NaN}}})}e(A.Node.prototype,"setMeasureFunc",function(r,o){return o?r.call(this,t(o)):this.unsetMeasureFunc()});function n(r){return A.DirtiedCallback.implement({dirtied:r})}return e(A.Node.prototype,"setDirtiedFunc",function(r,o){r.call(this,n(o))}),e(A.Config.prototype,"free",function(){A.Config.destroy(this)}),e(A.Node,"create",(r,o)=>o?A.Node.createWithConfig(o):A.Node.createDefault()),e(A.Node.prototype,"free",function(){A.Node.destroy(this)}),e(A.Node.prototype,"freeRecursive",function(){for(let r=0,o=this.getChildCount();r<o;++r)this.getChild(0).freeRecursive();this.free()}),e(A.Node.prototype,"calculateLayout",function(r){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ne.LTR;return r.call(this,o,i,a)}),{Config:A.Config,Node:A.Node,...sr}}async function gr(){return zt(await rr())}var it=null;async function to(){return it||(it=await gr(),it)}function no(A,e){switch(e){case"center":return A.JUSTIFY_CENTER;case"end":return A.JUSTIFY_FLEX_END;case"space-between":return A.JUSTIFY_SPACE_BETWEEN;case"space-around":return A.JUSTIFY_SPACE_AROUND;default:return A.JUSTIFY_FLEX_START}}function ro(A,e){switch(e){case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;default:return A.ALIGN_FLEX_START}}function io(A,e){switch(e){case"start":return A.ALIGN_FLEX_START;case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;case"baseline":return A.ALIGN_BASELINE;default:return A.ALIGN_AUTO}}function Ae(A){if(A!=null){if(typeof A=="number"||typeof A=="string")return A;if(typeof A=="object"){if("unit"in A&&typeof A.unit=="number")return A;let e=Number(A);if(!Number.isNaN(e))return e}}}function oo(A){switch(A.kind){case"flex":return A.dir??"row";case"block":return"column";case"box":return A.children&&A.children.length>0?"column":null;default:return null}}function ao(A){if(A.kind==="block")return"fill"}function so(A){let e=0;if(A.kind==="flex"||A.kind==="block"){let i=Ae(A.gap);e=typeof i=="number"?i:0}let t=0;if(A.kind==="flex"||A.kind==="block"||A.kind==="box"||A.kind==="text"){let i=Ae(A.padding);t=typeof i=="number"?i:0}let n="start";A.kind==="flex"&&(n=A.justify??"start");let r="start";(A.kind==="flex"||A.kind==="block")&&(r=A.align??"start");let o=!1;return A.kind==="flex"&&(o=typeof A.wrap=="boolean"?A.wrap:!1),{gap:e,padding:t,justify:n,align:r,wrap:o}}function Ge(A){let e=A;return e.position==="absolute"||e.position===void 0&&(e.x!==void 0||e.y!==void 0)}function go(A){return"children"in A&&A.children?A.children.filter(e=>!Ge(e)):[]}function Io(A){return"children"in A&&A.children?A.children.filter(e=>Ge(e)):[]}function Br(A,e,t,n,r){let o=e,i=A.Node.create(),a=oo(o),s=a!==null,g=[];if(Ge(o)){i.setPositionType(A.POSITION_TYPE_ABSOLUTE);let m=Ae(o.x),y=Ae(o.y);m!==void 0&&i.setPosition(A.EDGE_LEFT,m),y!==void 0&&i.setPosition(A.EDGE_TOP,y)}else i.setPositionType(A.POSITION_TYPE_RELATIVE);let B=Ae(o.grow);B!==void 0&&i.setFlexGrow(typeof B=="number"?B:parseFloat(B));let u=Ae(o.flexShrink);u!==void 0?i.setFlexShrink(typeof u=="number"?u:parseFloat(u)):i.setFlexShrink(r!==null?1:0),o.flexBasis!==void 0&&i.setFlexBasis(o.flexBasis),o.alignSelf!==void 0&&i.setAlignSelf(io(A,o.alignSelf));let E=o.width??ao(o),Q=o.height,C=r==="row",h=r==="column";if(Ir(i,"width",E,t?.width,C),Ir(i,"height",Q,t?.height,h),s){let m=so(o);i.setFlexDirection(a==="row"?A.FLEX_DIRECTION_ROW:A.FLEX_DIRECTION_COLUMN),i.setJustifyContent(no(A,m.justify)),i.setAlignItems(ro(A,m.align)),i.setFlexWrap(m.wrap?A.WRAP_WRAP:A.WRAP_NO_WRAP),m.padding>0&&i.setPadding(A.EDGE_ALL,m.padding),m.gap>0&&i.setGap(A.GUTTER_ALL,m.gap);let y=go(o),D=Io(o),U=[...y,...D];for(let M=0;M<U.length;M++){let b=Br(A,U[M],void 0,n,Ge(o)?null:a);i.insertChild(b.yogaNode,M),g.push(b)}}else if(o.kind==="text"||o.kind==="media"&&o.dataType==="Caption")i.setMeasureFunc((m,y,D,U)=>{let M;(y===1||y===2)&&(M=m);let b=n?.(o,M)??{width:0,height:0},x=b.width,N=b.height;return y===1&&(x=m),U===1&&(N=D),{width:x,height:N}});else{let m=n?.(o)??null;if(m){let y=o.aspectRatio!==void 0,D=o.dataType==="Caption",U=m.height>0?m.width/m.height:1;o.kind==="media"&&!D&&!y&&i.setAspectRatio(U);let M=E===void 0||E==="auto"||E==="fit",b=Q===void 0||Q==="auto"||Q==="fit";if(M&&b){let x=o.aspectRatio??(o.kind==="media"?U:void 0)??1;i.setMeasureFunc((N,T,Y,O)=>{let v=m.width,tA=m.height;if(T===1&&O===1)v=N,tA=Y;else if(T===1)v=N,tA=x>0?Math.round(N/x):m.height;else if(O===1)tA=Y,v=x>0?Math.round(Y*x):m.width;else if(T===2&&O===2){let X=Math.min(1,N/m.width,Y/m.height);v=Math.round(m.width*X),tA=Math.round(m.height*X)}else T===2?m.width>N&&(v=N,tA=x>0?Math.round(N/x):m.height):O===2&&m.height>Y&&(tA=Y,v=x>0?Math.round(Y*x):m.width);return{width:v,height:tA}})}else if(M){let x=o.aspectRatio??(o.kind==="media"?U:void 0);(x===void 0||x<=0)&&i.setWidth(m.width)}else if(b){let x=o.aspectRatio??(o.kind==="media"?U:void 0);(x===void 0||x<=0)&&i.setHeight(m.height)}}}return{yogaNode:i,layoutNode:o,children:g}}function Ir(A,e,t,n,r){if(t===void 0||t==="auto"||t==="fit")return;let o=Ae(t);if(typeof o=="number"){e==="width"?A.setWidth(o):A.setHeight(o);return}if(o==="fill"){if(r){A.getFlexGrow()===0&&A.setFlexGrow(1),A.setFlexBasis(0);return}n!==void 0?e==="width"?A.setWidth(n):A.setHeight(n):e==="width"?A.setWidthPercent(100):A.setHeightPercent(100)}}function lr(A,e,t,n,r){let o=A.yogaNode.getComputedLayout(),i=e+o.left,a=t+o.top,s=o.width,g=o.height,I=A.layoutNode;Ge(I)||(i+=Number(I.x??0),a+=Number(I.y??0)),n[A.layoutNode.id]={x:Math.round(i*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3},r[A.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3};for(let B of A.children)lr(B,i,a,n,r)}function cr(A){for(let e of A.children)cr(e);A.yogaNode.free()}function Bo(A,e){let{layout:t,viewport:n,measure:r}=e,o={},i={};for(let a of t){let s=A.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(A.FLEX_DIRECTION_COLUMN);let g=Br(A,a,{width:n.width,height:n.height},r,null);s.insertChild(g.yogaNode,0),s.calculateLayout(n.width,n.height);let I=g.yogaNode.getComputedLayout(),B=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),u=B?I.left:Number(a.x??0),E=B?I.top:Number(a.y??0);o[a.id]={x:Math.round(u*1e3)/1e3,y:Math.round(E*1e3)/1e3,width:Math.round(I.width*1e3)/1e3,height:Math.round(I.height*1e3)/1e3},i[a.id]={width:Math.round(I.width*1e3)/1e3,height:Math.round(I.height*1e3)/1e3};for(let Q of g.children)lr(Q,u,E,o,i);cr(g),s.free()}return{rects:o,sizes:i}}async function $s(A){let e=await to();return Bo(e,A)}$();function ur(A,e){let t=Math.floor(A)^e*1013|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967295*2-1}function lo(A,e){let t=Math.floor(A),n=t+1,r=A-t,o=r*r*(3-2*r),i=ur(t,e),a=ur(n,e),s=i*r,g=a*(r-1);return(s*(1-o)+g*o)*2}function co(A,e,t=0){let n=A.frequency??2,r=A.amplitude??50,o=Math.max(1,Math.min(4,A.octaves??1)),i=A.seed??1234,a=0,s=0,g=1,I=n;for(let u=0;u<o;u++){let E=lo(e*I,i+u*7919);a+=E*g,s+=g,g*=.5,I*=2}let B=s>0?a/s:0;return t+B*r}function uo(A,e,t,n){if(e<=0)return t;let r=Math.max(.001,A.mass??1),o=Math.max(.001,A.stiffness??180),i=Math.max(.001,A.damping??12),a=Math.sqrt(o/r),s=i/(2*Math.sqrt(o*r)),g=1;if(s<1){let I=a*Math.sqrt(1-s*s),B=-1,u=-s*a/I;g=1+Math.exp(-s*a*e)*(B*Math.cos(I*e)+u*Math.sin(I*e))}else if(Math.abs(s-1)<1e-4)g=1+Math.exp(-a*e)*(-1-a*e);else{let I=Math.sqrt(s*s-1),B=-a*(s-I),u=-a*(s+I),E=-1/(1-B/u),Q=-1-E;g=1+E*Math.exp(B*e)+Q*Math.exp(u*e)}return t+(n-t)*g}function LA(A,e,t){if(A==null)return 0;if(typeof A=="number")return A;if(typeof A=="function")return Number(A(e,t))||0;if(Array.isArray(A)||ArrayBuffer.isView(A)){let n=A;if(n.length===0)return 0;let r=Math.max(0,Math.min(n.length-1,Math.round(e)));return Number(n[r])||0}if(typeof A=="object"){let n=A;if(typeof n.get=="function")return Number(n.get({frame:e,fps:t,time:t>0?e/t:0}))||0;if(n.type==="Signal"&&n.data)return LA(n.data,e,t);let r=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(r)||ArrayBuffer.isView(r)){let o=r;if(o.length===0)return 0;let i=Number(n.fps)||24,a=t>0?t:24,s=e/a,g=Math.max(0,Math.min(o.length-1,Math.round(s*i)));return Number(o[g])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let o=n.nodeId;if(o){let i=n.channel??"primary",a=Bn.getChannelSamples(o,i);if(a&&a.length>0){let s=Number(n.fps)||24,g=t>0?t:24,I=e/g,B=Math.max(0,Math.min(a.length-1,Math.round(I*s)));return Number(a[B])||0}}return 0}if(n.type==="generator"){let o=typeof n.amplitude=="number"?n.amplitude:1,i=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let m=typeof n.bars=="number"&&n.bars>0?n.bars:1;i=n.bpm/60/m}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,g=e/(t>0?t:24),I=n.baseType??"sine",B=!!n.fmEnabled,u=g;if(B){let m=Number(n.fmAmplitude)||1,y=Number(n.fmFrequency)||.5;u=g+Math.sin(g*y*Math.PI*2)*m}let E=0,Q=(u*i+a/(Math.PI*2))%1,C=Q<0?Q+1:Q,h=m=>(m%1+1)%1;switch(I){case"triangle":E=4*Math.abs(C-.5)-1;break;case"sawtooth":E=2*C-1;break;case"square":E=C<.5?1:-1;break;case"constant":E=1;break;case"noise_smooth":{let m=u*i+a,y=Math.floor(m),D=m-y,U=D*D*(3-2*D),M=h(Math.sin(y*12.9898)*43758.5453),b=h(Math.sin((y+1)*12.9898)*43758.5453);E=(M*(1-U)+b*U)*2-1;break}case"noise_white":E=h(Math.sin(u*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let m=a===0?.5:Math.max(.01,Math.min(.99,a));E=h(u*i)<m?1:-1;break}case"bounce":E=Math.abs(Math.sin(u*i*Math.PI+a));break;case"staircase":E=Math.floor(C*8)/7*2-1;break;default:E=Math.sin(u*i*Math.PI*2+a);break}return E*o+s}if(n.type==="gate"){let o=n.sourceSignal??n.signal,i=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,g=typeof n.debounceMs=="number"?n.debounceMs:0,I=Math.max(1,Math.round(g/1e3*t)),B=Math.max(1,Number(n.holdFrames)||4),u=0;if(a==="gate")u=LA(o,e,t)>=i?1:0;else if(a==="trigger"){let E=-1/0,Q=Math.max(0,e-300);for(let C=Q;C<=e;C++){let h=LA(o,C,t),m=C>0?LA(o,C-1,t):0;h>=i&&m<i&&C-E>=I&&(E=C)}u=e>=E&&e<E+B?1:0}else if(a==="toggle"){let E=0,Q=-1/0;for(let C=0;C<=e;C++){let h=LA(o,C,t),m=C>0?LA(o,C-1,t):0;h>=i&&m<i&&C-Q>=I&&(E++,Q=C)}u=E%2===1?1:0}return s?1-u:u}if(n.type==="signal_math"){let o=LA(n.signalA,e,t),a=n.signalB!==void 0?LA(n.signalB,e,t):Number(n.bValue)||0;switch(n.operation){case"add":return o+a;case"subtract":return o-a;case"multiply":return o*a;case"divide":return a!==0?o/a:0;case"min":return Math.min(o,a);case"max":return Math.max(o,a);case"clamp":{let s=Number(n.clampMin)||0,g=Number(n.clampMax)||1;return Math.max(s,Math.min(g,o))}case"abs":return Math.abs(o);case"negate":return-o;case"invert":return 1-o;case"power":return o**(Number(n.exponent)||2);case"modulo":return a!==0?o%a:0;case"remap":{let s=Number(n.inMin)||0,g=Number(n.inMax)||1,I=Number(n.outMin)||0,B=Number(n.outMax)||1,u=g-s,E=u!==0?(o-s)/u:0;return I+E*(B-I)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,I=(Number(n.aMax??n.inMax)||1)-s;return I!==0?Math.max(0,Math.min(1,(o-s)/I)):0}case"smoothstep":{let s=Number(n.edge0)||0,I=(Number(n.edge1)||1)-s,B=I!==0?Math.max(0,Math.min(1,(o-s)/I)):0;return B*B*(3-2*B)}case"custom":return o;default:return o}}if(typeof n.value=="number")return n.value}return 0}function Eo(A,e,t,n=.15,r=2){if(e<0||!A)return 0;let o=A,i=0,a=-1/0;for(let s=0;s<=e;s++){let g=LA(o,s,t),I=s>0?LA(o,s-1,t):0;g>=n&&I<n&&s-a>=r&&(i++,a=s)}return i}function Qo(A,e,t,n={}){let r=n[A.inputHandleId];if(r===void 0&&n){let u=Object.keys(n);if(u.length===1)r=n[u[0]];else if(u.length>1){let E=u.find(Q=>Q===A.inputHandleId);r=E?n[E]:n[u[0]]}}if(A.channel&&r&&typeof r=="object"){let u=r[A.channel];u!==void 0?r=u:typeof r.get!="function"&&(r={...r,channel:A.channel})}if(A.signalMode==="accumulate"){let u=A.threshold??A.accumulateThreshold??.15,E=A.debounceFrames??2,Q=Eo(r,e,t,u,E),C=A.multiplier??1,h=A.offset??0;return Q*C+h}let o=A.multiplier??1,i=A.offset??0,a=Math.max(0,Math.round(A.smoothingWindowFrames??0));if(a<=1)return LA(r,e,t)*o+i;let s=0,g=0,I=Math.max(0,e-a+1);for(let u=I;u<=e;u++)s+=LA(r,u,t),g++;return(g>0?s/g:0)*o+i}function Ue(A,e,t){return A+(e-A)*t}function jt(A){let e=A.trim().replace("#","");if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===6){let t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255,1]}if(e.length===8){let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,(t&255)/255]}return[255,255,255,1]}function Er(A,e,t){if(!A.startsWith("#")||!e.startsWith("#"))return t<.5?A:e;let[n,r,o,i]=jt(A),[a,s,g,I]=jt(e),B=Math.round(Ue(n,a,t)),u=Math.round(Ue(r,s,t)),E=Math.round(Ue(o,g,t)),Q=Ue(i,I,t),C=h=>h.toString(16).padStart(2,"0");return Q>=.999?`#${C(B)}${C(u)}${C(E)}`:`rgba(${B}, ${u}, ${E}, ${Math.round(Q*100)/100})`}function Zt(A,e,t){let n=t;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?A+(e-A)*6*n:n<1/2?e:n<2/3?A+(e-A)*(2/3-n)*6:A}function Co(A,e){let[t,n,r,o]=jt(A),i=t/255,a=n/255,s=r/255,g=Math.max(i,a,s),I=Math.min(i,a,s),B=0,u=0,E=(g+I)/2;if(g!==I){let y=g-I;switch(u=E>.5?y/(2-g-I):y/(g+I),g){case i:B=(a-s)/y+(a<s?6:0);break;case a:B=(s-i)/y+2;break;case s:B=(i-a)/y+4;break}B/=6}B=(B+e%1+1)%1;let Q=E,C=E,h=E;if(u!==0){let y=E<.5?E*(1+u):E+u-E*u,D=2*E-y;Q=Zt(D,y,B+1/3),C=Zt(D,y,B),h=Zt(D,y,B-1/3)}let m=y=>Math.round(Math.max(0,Math.min(255,y*255))).toString(16).padStart(2,"0");return o>=.999?`#${m(Q)}${m(C)}${m(h)}`:`rgba(${Math.round(Q*255)}, ${Math.round(C*255)}, ${Math.round(h*255)}, ${Math.round(o*100)/100})`}var fo=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function qt(A,e){let t=A.keyframes??[];if(t.length===0)return 0;if(t.length===1||e<=t[0].frame)return t[0].value;if(e>=t[t.length-1].frame)return t[t.length-1].value;for(let n=0;n<t.length-1;n++){let r=t[n],o=t[n+1];if(e>=r.frame&&e<=o.frame){let i=o.frame-r.frame,a=i>0?(e-r.frame)/i:0;if(typeof r.value=="boolean")return a>=1?o.value:r.value;if(typeof r.value=="string"&&typeof o.value=="string")return Er(r.value,o.value,a);let s=Number(r.value)||0,g=Number(o.value)||0;return Ue(s,g,a)}}return t[t.length-1].value}function ho(A,e,t=24,n={}){let r=n.startFrame??0,o=e-r,i=A.source??{type:"keyframe"},a=n.baseValues?.[A.prop];switch(i.type){case"keyframe":return qt(A,o);case"wiggle":{let s=typeof a=="number"?a:0,g=A.keyframes&&A.keyframes.length>0?Number(qt(A,o))||0:s,I=o/(t>0?t:24);return co(i,I,g)}case"springOvershoot":{let s=0,g=1;A.keyframes&&A.keyframes.length>=2?(s=Number(A.keyframes[0].value)||0,g=Number(A.keyframes[1].value)||1):A.keyframes&&A.keyframes.length===1?(s=Number(a)||0,g=Number(A.keyframes[0].value)||0):typeof a=="number"&&(s=a,g=a);let I=o/(t>0?t:24);return uo(i,I,s,g)}case"signal":{let s=Qo(i,e,t,n.signals);if(fo.has(A.prop)){let g=i,I=g.colorA??"#ffffff",B=g.colorB??"#ffffff",u=g.colorMode??"interpolate";if(u==="threshold"){let Q=g.colorThreshold??.5;return s>=Q?B:I}if(u==="hueRotate")return Co(I,s);let E=Math.max(0,Math.min(1,s));return Er(I,B,E)}return s}default:return qt(A,o)}}function ng(A,e,t=24,n={}){let r={};if(!A?.tracks)return r;for(let o of A.tracks)r[o.prop]=ho(o,e,t,n);return r}$();function _t(A,e,t,n="forward"){if(t<=0||e<=1)return 0;switch(n){case"reverse":return(e-1-A)*t;case"center-out":{let r=(e-1)/2,o=Math.abs(A-r);return Math.round(o*t)}default:return A*t}}function og(A,e,t="forward",n=0){return!A||A.length===0?[]:e<=0&&n===0?[...A]:A.map((r,o)=>{let i=_t(o,A.length,e,t),a=r.startFrame??0;return{...r,startFrame:a+i+n}})}$();$();var Cr=Symbol.for("framefields.inlineSignal"),Qr=new WeakMap,mo=0;function yo(A){let e=Qr.get(A);return e===void 0&&(e=`inline_signal_${mo++}`,Qr.set(A,e)),e}function gg(A){if(typeof A=="string")return{handleId:A};if(A===null||typeof A!="object"&&typeof A!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(A)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let e=A;return typeof e.inputHandleId=="string"?{handleId:e.inputHandleId}:typeof e.gpuBinding?.nodeId=="string"?typeof e.get=="function"?{handleId:e.gpuBinding.nodeId,inline:A}:{handleId:e.gpuBinding.nodeId}:{handleId:yo(A),inline:A}}function Ig(A,e){Object.defineProperty(A,Cr,{value:e,enumerable:!1,configurable:!0,writable:!0})}function po(A){if(!(!A||typeof A!="object"))return A[Cr]}function $t(A,e={}){for(let t of A){if(!t||typeof t!="object")continue;let{animation:n,children:r}=t,o=n?.tracks;if(Array.isArray(o))for(let i of o){let a=i?.source,s=po(a);s&&typeof a?.inputHandleId=="string"&&(e[a.inputHandleId]=s)}Array.isArray(r)&&$t(r,e)}return e}function fr(A,e,t,n=0,r,o){let i=[],a=A.src??A.inputHandleId,s=y=>typeof y=="string"&&(y.startsWith("http://")||y.startsWith("https://")||y.startsWith("file://")||y.startsWith("/")||y.startsWith("./")||y.startsWith("blob:")||y.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt)$/i.test(y)),g;if(A.kind==="media"){if(e&&(g=e(A.inputHandleId)),!g&&a&&(s(a)||A.src)&&(g=Qn(a,A.dataType??"Video")),g&&A.crop){let y=A.crop,D=typeof y.toOperation=="function"?y.toOperation():y;g={metadata:{...g.metadata},operation:{op:"Crop",...D,dataType:g.operation.dataType},children:[g]}}if(g&&Array.isArray(A.effects))for(let y of A.effects){let D=typeof y.toOperation=="function"?y.toOperation():y;g={metadata:{...g.metadata},operation:{id:A.id?`${A.id}-${D.op??"effect"}`:void 0,effect:y,...D,dataType:g.operation.dataType},children:[g]}}if(g&&A.vision){let y=A.vision,D=typeof y.toOperation=="function"?y.toOperation():y;g={metadata:{...g.metadata},operation:{op:"Vision",id:A.id,effect:y,...D,dataType:g.operation.dataType},children:[g]}}}if(A.kind==="media")i=g?[g]:[];else if("children"in A&&A.children){let y="staggerFrames"in A&&typeof A.staggerFrames=="number"?A.staggerFrames:0,D="staggerDirection"in A&&typeof A.staggerDirection=="string"?A.staggerDirection:"forward",U=typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)?Math.round(A.startFrame):0,M=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)?Math.round(A.durationFrames):o;i=A.children.map((b,x)=>{let N=_t(x,A.children.length,y,D),T=n+U+N;return fr(b,e,t,T,r,b.durationFrames===void 0?M:void 0)})}let I="Image",B;if(g){I=g.operation?.dataType??"Image";let D=I==="Image"||I==="SVG"?void 0:Cn(g)?.durationMs;D!=null&&(B=Math.max(1,Math.round(D/1e3*t)))}let u=g?.operation?.dataType==="Caption",E=A.kind==="flex"||A.kind==="block"||A.kind==="box",Q=(typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)&&A.startFrame>=0?Math.round(A.startFrame):0)+n,C=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)&&A.durationFrames>0?Math.round(A.durationFrames):void 0,h=o??Math.round((r??1e4)/1e3*t);if(E&&i.length>0){if(C===void 0){let y=i.map(D=>(D.operation?.startFrame??0)+(D.operation?.durationFrames??h));C=Math.max(1,Math.max(...y)-Q)}}else u&&B!==void 0&&B>0?C=B:C!==void 0?(I==="Video"||I==="Audio")&&B!==void 0&&B>0&&(C=Math.min(C,B)):C=B??o??Math.round((r??1e4)/1e3*t);let m=C/t*1e3;return A.kind==="media"&&g&&(!g.metadata?.durationMs||g.metadata.durationMs<=0)&&(g.metadata||(g.metadata={}),g.metadata.durationMs=m),{metadata:{durationMs:m},operation:{op:"CompositorLayer",...A,startFrame:Q,durationFrames:C,dataType:I},children:i}}function Qg(A,e){let{isVideoMode:t,fps:n,durationMs:r,resolveMedia:o,signals:i}=e,a={metadata:{width:A.width,height:A.height,fps:n,...r!==void 0&&{durationMs:r}},operation:{op:"Compositor",width:A.width,height:A.height,fps:n,mode:A.mode??"Video",backgroundColor:A.backgroundColor,...A.antialias3d!==void 0&&{antialias3d:A.antialias3d},volume:A.volume??1,dataType:t?"Video":"Image",layout:A.layout,signals:{...$t(A.layout),...i??A.signals??{}},...(A.onRequestFrame||e.onRequestFrame)&&{onRequestFrame:A.onRequestFrame??e.onRequestFrame}},children:A.layout.map(I=>fr(I,o,n,0,r))},s=Array.isArray(e.effects)?e.effects:Array.isArray(A.effects)?A.effects:[];for(let I of s){let B=typeof I.toOperation=="function"?I.toOperation():I;a={metadata:{...a.metadata},operation:{...B,dataType:a.operation.dataType},children:[a]}}let g=A.vision??e.vision;if(g){let I=typeof g.toOperation=="function"?g.toOperation():g;a={metadata:{...a.metadata},operation:{op:"Vision",...I,dataType:a.operation.dataType},children:[a]}}return a}function Cg(A){let e=[],t=n=>{n?.operation?.op==="CompositorLayer"&&e.push(n);for(let r of n?.children??[])t(r)};for(let n of A)t(n);return e}export{Te as a,fn as b,k as c,cA as d,ne as e,re as f,Ko as g,Yo as h,Ee as i,qo as j,Qe as k,Un as l,Qa as m,Ye as n,Pn as o,Jn as p,$n as q,Gs as r,Tn as s,ds as t,Kn as u,Yn as v,pi as w,ps as x,Tt as y,ks as z,to as A,Bo as B,$s as C,gg as D,Ig as E,ho as F,ng as G,_t as H,og as I,Qg as J,Cg as K};
|
|
995
|
+
`;var Hn=24,je=class{device;pipelineSingle;pipelineMrt;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40);constructor(e,t,n,r,o,i=1){this.device=e,this.modelPool=new NA(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new NA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:vn});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,o]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:Hn*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},I={color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},B={format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},u={topology:"triangle-list",cullMode:"none"},E={count:i};this.pipelineSingle=e.createRenderPipeline({label:"Slug3DPipelineSingle",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_single",targets:[{format:t,blend:I}]},depthStencil:B,primitive:u,multisample:E}),this.pipelineMrt=e.createRenderPipeline({label:"Slug3DPipelineMrt",layout:s,vertex:g,fragment:{module:a,entryPoint:"fs_mrt",targets:[{format:t,blend:I},{format:"rgba16float"}]},depthStencil:B,primitive:u,multisample:E})}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,o,i,a,s=!1){if(i===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(wt(a),36);let g=this.modelPool.getBuffer(this.device,this.modelData),I=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:g}}]}),B=this.instancePool.getBuffer(this.device,o.subarray(0,i*Hn));e.setPipeline(s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,I),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,B),e.draw(6,i)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var Ci={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},fi=5e-4,Pn=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new ft;lightsUniformBindGroupCache=new ft;samplerCache=new Cn;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;modelCache=new Map;lastCameraPose=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new qe(e,t,"depth24plus",n),this.slug3dPipeline=new je(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new ze(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new Ye(e),this.cameraPool=new NA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new NA(dt,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:Nn});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.cameraPool.reset(),this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,o){return e&&e.width===r&&e.height===o?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:o},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let o=ne.computeViewMatrix(e),i=ne.computeProjectionMatrix(e),a=ne.computeViewProjectionMatrix(e),s=cA.invert(a)??cA.identity();this.cameraUniformData.set(o,0),this.cameraUniformData.set(i,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=k.normalize(k.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let I=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=I,I}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e){let t=re.packLightsUniforms(e??[]);return this.lightsPool.getBuffer(this.device,t)}beginPass(e,t,n,r,o,i="clear",a={r:0,g:0,b:0,a:0},s,g){let I=this.getOrCreateDepthTexture(n,r),B=this.packCameraUniforms(o,n,r),u=this.createCameraBindGroup(B),E=this.getOrCreateLightsBuffer(g),Q=this.lightsUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.lightsLayout,E),C=this.sampleCount>1;if(C&&i==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let h=(D,U,M,b)=>U?{view:U.createView(),resolveTarget:D,loadOp:"clear",storeOp:"discard",clearValue:M}:{view:D,loadOp:b,storeOp:"store",clearValue:M};C&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let m=[h(t,C?this.msaaColorTexture:null,a,i)];return s&&(C&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),m.push(h(s,C?this.msaaLinearDepthTexture:null,{r:o.far,g:0,b:0,a:1},"clear"))),{pass:e.beginRenderPass({colorAttachments:m,depthStencilAttachment:{view:I.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:C?"discard":"store"}}),cameraBindGroup:u,cameraBuffer:B,lightsBindGroup:Q}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:o=[0,0,0],scale:i=[1,1,1],anchor:a=[.5,.5]}=e,s=cA.identity();s=cA.multiply(s,cA.translate(t[0],t[1],t[2]));let g=o[0]*Math.PI/180,I=o[1]*Math.PI/180,B=o[2]*Math.PI/180;B!==0&&(s=cA.multiply(s,cA.rotateZ(B))),I!==0&&(s=cA.multiply(s,cA.rotateY(I))),g!==0&&(s=cA.multiply(s,cA.rotateX(g)));let u=n*i[0],E=r*i[1],Q=i[2];s=cA.multiply(s,cA.scale(u,E,Q));let C=.5-a[0],h=.5-a[1];return(C!==0||h!==0)&&(s=cA.multiply(s,cA.translate(C,h,0))),s}drawSlugText(e,t,n,r,o,i=0,a=!1){let{width:s,height:g}=o;if(!(s>0&&g>0))return;let I=this.quadModelMatrix(o),B=o.normalMatrix??re.computeNormalMatrix(I),u=cA.multiply(I,cA.multiply(cA.translate(-.5,-.5,0),cA.scale(1/s,1/g,1)));for(let E=0;E<r.length;E++){let Q=r[E],[C,h,m,p,D,U]=Q.transform,M=[C,h,0,0,m,p,0,0,0,0,1,0,D,U,0,1];this.slug3dPipeline.draw(e,t,n,Q.font,Q.instances,Q.instanceCount,{modelMatrix:cA.multiply(u,M),normalMatrix:B,opacity:Q.opacity*(o.opacity??1),slant:Q.slant,twoSided:o.twoSided??!0,depthPull:fi*(i+E+1),material:o.material,shininess:o.shininess??32,roughness:o.roughness,specularIntensity:o.specularIntensity??.5,ambientIntensity:o.ambientIntensity??1,metallic:o.metallic},a)}}drawTextureQuad(e,t,n,r,o,i=!1){let{width:a,height:s,opacity:g=1,colorTint:I=[1,1,1,1],borderColor:B,borderWidth:u=0,borderRadius:E=0,twoSided:Q=!0,material:C="lit",shininess:h=32,roughness:m,specularIntensity:p=.5,ambientIntensity:D=1,metallic:U}=o,M=this.quadModelMatrix(o),b=o.normalMatrix??re.computeNormalMatrix(M),x=this.samplerCache.getSampler(this.device),N;if(B)if(Array.isArray(B))N=B;else{let T=un(B);N=[T.r,T.g,T.b,T.a]}this.quad3dPipeline.draw(e,t,n,r,x,{modelMatrix:M,normalMatrix:b,colorTint:I,borderColor:N,borderWidth:u,opacity:g,borderRadius:E,twoSided:Q,width:a,height:s,textureExtent:o.textureExtent,material:C,shininess:h,roughness:m,specularIntensity:p,ambientIntensity:D,metallic:U},i)}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let I=0;I<n;I++){let B=I*16;r[B]=e.positions[I*3]??0,r[B+1]=e.positions[I*3+1]??0,r[B+2]=e.positions[I*3+2]??0,r[B+3]=e.uvs[I*2]??0,r[B+4]=e.uvs[I*2+1]??0,r[B+5]=e.normals[I*3]??0,r[B+6]=e.normals[I*3+1]??0,r[B+7]=e.normals[I*3+2]??1,e.jointIndices?(r[B+8]=e.jointIndices[I*4]??0,r[B+9]=e.jointIndices[I*4+1]??0,r[B+10]=e.jointIndices[I*4+2]??0,r[B+11]=e.jointIndices[I*4+3]??0):(r[B+8]=0,r[B+9]=0,r[B+10]=0,r[B+11]=0),e.jointWeights?(r[B+12]=e.jointWeights[I*4]??0,r[B+13]=e.jointWeights[I*4+1]??0,r[B+14]=e.jointWeights[I*4+2]??0,r[B+15]=e.jointWeights[I*4+3]??0):(r[B+12]=0,r[B+13]=0,r[B+14]=0,r[B+15]=0)}let o=Math.ceil(r.byteLength/4)*4,i=this.device.createBuffer({size:Math.max(4,o),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(i.getMappedRange()).set(r),i.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap(),t={vertexBuffer:i,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16"},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),o=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:o,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat}}drawMesh3D(e,t,n,r,o,i={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{position:g=[0,0,0],rotation:I=[0,0,0],scale:B=[1,1,1],opacity:u=1,colorTint:E=[1,1,1,1],twoSided:Q=!0,wireframe:C=!1,isSkinned:h=!1,skinningMatrices:m,material:p="lit",shadeColor:D,alphaCutoff:U,textureWrap:M="clamp",shininess:b=32,roughness:x,specularIntensity:N=.5,ambientIntensity:T=1,metallic:Y}=i,O;if(i.modelMatrix)O=i.modelMatrix;else{O=cA.identity(),O=cA.multiply(O,cA.translate(g[0],g[1],g[2]));let F=I[0]*Math.PI/180,sA=I[1]*Math.PI/180,H=I[2]*Math.PI/180;H!==0&&(O=cA.multiply(O,cA.rotateZ(H))),sA!==0&&(O=cA.multiply(O,cA.rotateY(sA))),F!==0&&(O=cA.multiply(O,cA.rotateX(F))),O=cA.multiply(O,cA.scale(B[0],B[1],B[2]))}let v=i.normalMatrix??re.computeNormalMatrix(O),tA=Ci[M],X=this.samplerCache.getSampler(this.device,{addressModeU:tA,addressModeV:tA});this.mesh3dPipeline.draw(e,t,n,s,o,X,{modelMatrix:O,normalMatrix:v,colorTint:E,opacity:u,twoSided:Q,wireframe:C,isSkinned:h,skinningMatrices:m,material:p,shadeColor:D,alphaCutoff:U,shininess:b,roughness:x,specularIntensity:N,ambientIntensity:T,metallic:Y},a)}loadModel(e,t="auto",n={}){if(typeof e!="string")return Jn(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,o=this.modelCache.get(r);return o||(o=Jn(e,t,n),this.modelCache.set(r,o)),o}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}async uploadMaterialTexture(e){let t=e.diffuseTextureBuffer;if(!t)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(t instanceof Uint8Array?t:new Uint8Array(t)),{width:o,height:i}=await n(r).metadata();if(!o||!i)return;let a=Math.floor(Math.log2(Math.max(o,i)))+1,s=this.device.createTexture({label:`Material:${e.name}`,size:{width:o,height:i},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let I=Math.max(1,o>>g),B=Math.max(1,i>>g),u=await n(r).ensureAlpha().resize(I,B,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},u,{bytesPerRow:I*4,rowsPerImage:B},{width:I,height:B})}return s}applyDepthOfField(e,t,n,r,o){let i=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:i},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.depthTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy(),this.lightsUniformBindGroupCache.destroy()}};function Jn(A,e="auto",t={}){if(e==="gltf"||e==="glb")return Oe(A,t);if(e==="stl")return fe(A,t);if(e==="ply")return de(A,t);if(e==="vox")return Ve(A,t);if(e==="3ds")return We(A,t);if(e==="off")return Xe(A,t);if(e==="fbx")return Qe(A,t);if(e==="obj")return Ee(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",o=r.toLowerCase();if(o.endsWith(".glb")||o.endsWith(".gltf"))return Oe(A,t);if(o.endsWith(".stl"))return fe(A,t);if(o.endsWith(".ply"))return de(A,t);if(o.endsWith(".vox"))return Ve(A,t);if(o.endsWith(".3ds"))return We(A,t);if(o.endsWith(".off"))return Xe(A,t);if(o.endsWith(".fbx"))return Qe(A,t);if(o.endsWith(".obj"))return Ee(A,void 0,t);if(n){let i=A instanceof Uint8Array?A:new Uint8Array(A);return ie.isGlb(i)?Rn(i,t):qA.isBinary(i)?Qe(i,t):me.isVox(i)?Ve(i,t):pe.is3DS(i)?We(i,t):i.length>=3&&i[0]===112&&i[1]===108&&i[2]===121?de(i,t):Ce.isBinary(i)?fe(i,t):Ee(i,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?Oe(r,t):r.startsWith("ply")||r.startsWith("PLY")?de(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?Xe(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Qe(r,t):r.startsWith("solid")&&r.includes("facet")?fe(r,t):Ee(A,void 0,t)}$();var{cbrt:bt,sqrt:Mt,PI:oe}=Math,di=(A,e,t,n,r)=>{let o=e+t*A,i=o**2+n;if(i>0){let I=Mt(i);return bt(o+I)+bt(o-I)-r}let a=bt(Mt(o*o-i)),s=o?Math.atan(Mt(-i)/o):-oe/2,g;return t<0?g=(o>0?2*oe:oe)-s:r<0?g=(o>0?2*oe:-3*oe)+s:g=(o>0?0:oe)+s,2*a*Math.cos(g/3)-r},hi=(A,e,t,n)=>((e*A+3*t)*A+n)*A,xt=A=>A;function Tn(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return xt;let r=6*(3*A-3*t+1),o=6*(t-2*A),i=3*A,a=r*r,s=o*o,g=o/r,I=3*o*i/a-s*o/(a*r),B=2*i/r-s/a,u=B*B*B,E=3/r,Q=3*e-3*n+1,C=n-2*e,h=3*e,m=r?di:xt;return function(D){return D===0||D===1?D:hi(m(D,I,E,u,g),Q,C,h)}}var ds={linear:xt,ease:Tn(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:Tn,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function Kn(A,e,t,n){let r=n?.extrapolateLeft??"extend",o=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let i=e[0],a=e[e.length-1];if(A<i){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(o==="clamp")return t[t.length-1];if(o==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],I=e[s],B=t[s-1],u=t[s];if(g===I)return B;let E=(A-g)/(I-g);return n?.easing&&(E=n.easing(E)),B+E*(u-B)}$();var mi={damping:10,mass:1,stiffness:100,overshootClamping:!1},Ft={};function pi({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:o,velocity:i}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,I=t.stiffness,B=[n,r,o,i,s,g,I,e].join("-");if(Ft[B])return Ft[B];let u=-i,E=n-o,Q=s/(2*Math.sqrt(I*g)),C=Math.sqrt(I/g),h=C*Math.sqrt(1-Q**2),m=a/1e3,p=Math.sin(h*m),D=Math.cos(h*m),U=Math.exp(-Q*C*m),M=U*(p*((u+Q*C*E)/h)+E*D),b=n-M,x=Q*C*M-U*(D*(u+Q*C*E)-h*E*p),N=Math.exp(-C*m),T=n-N*(E+(u+C*E)*m),Y=N*(u*(m*C-1)+m*E*C*C),O={toValue:n,prevPosition:o,lastTimestamp:e,current:Q<1?b:T,velocity:Q<1?x:Y};return Ft[B]=O,O}var Nt={};function Yn({frame:A,fps:e,config:t={}}){let o=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(Nt[o])return Nt[o];let i={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let I=g/e*1e3;i=pi({animation:i,now:I,config:{...mi,...t}})}return Nt[o]=i,i}var Gt=new Map;function yi({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(Gt.has(n))return Gt.get(n);let r=0,o=0,i=()=>Yn({fps:A,frame:r,config:e}),a=i(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=i(),g=s();o=r;for(let I=0;I<20;I++)r++,a=i(),g=s(),g>=t&&(I=0,o=r+1);return Gt.set(n,o),o}function ys({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:o,durationRestThreshold:i,delay:a=0,reverse:s=!1}){let g=s||typeof o<"u",I=g?yi({fps:e,config:t,threshold:i}):void 0,B=g?{get:()=>I}:{get:()=>{throw new Error("did not calculate natural duration")}},E=(s?(o??B.get())-A:A)+(s?a:-a),Q=o===void 0?E:E/(o/B.get());if(o&&E>o)return r;let C=Yn({fps:e,frame:Q,config:t}),h=t.overshootClamping?r>=n?Math.min(C.current,r):Math.max(C.current,r):C.current;return n===0&&r===1?h:Kn(h,[0,1],[n,r])}$();$();$();var we=new Set,Ut=!1;function Pt(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;we.size&&we.clear();let o=Xn(A,0,r,t,!0),i=[];if(!o||o.next===o.prev)return i;let a=0,s=0,g=0;if(n&&(o=xi(A,e,o,t)),A.length>80*t){a=A[0],s=A[1];let I=a,B=s;for(let u=t;u<r;u+=t){let E=A[u],Q=A[u+1];E<a&&(a=E),Q<s&&(s=Q),E>I&&(I=E),Q>B&&(B=Q)}g=Math.max(I-a,B-s),g=g!==0?32767/g:0}return St(o,i,a,s,g),i}function Xn(A,e,t,n,r){let o=null;if(r===Ti(A,e,t,n)>0)for(let i=e;i<t;i+=n)o=Wn(i/n|0,A[i],A[i+1],o);else for(let i=t-n;i>=e;i-=n)o=Wn(i/n|0,A[i],A[i+1],o);return o&&be(o,o.next)&&(xe(o),o=o.next),o}function $A(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(we.size===0||!we.has(n))&&(be(n,n.next)||xA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),Ut=!0,xe(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function St(A,e,t,n,r){r&&Li(A,t,n,r);let o=A,i=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(xA(a,A,s)<0&&(r?wi(A,t,n,r):Di(A))){e.push(a.i,A.i,s.i),xe(A),A=s,o=s;continue}if(A=s,A===o){if(Ut=!1,A=$A(A),Ut){o=A;continue}if(!i){A=bi(A,e),o=A,i=!0;continue}Mi(A,e,t,n,r);break}}}function Di(A){let e=A.prev,t=A,n=A.next,r=e.x,o=t.x,i=n.x,a=e.y,s=t.y,g=n.y,I=Math.min(r,o,i),B=Math.min(a,s,g),u=Math.max(r,o,i),E=Math.max(a,s,g),Q=n.next;for(;Q!==e;){if(Q.x>=I&&Q.x<=u&&Q.y>=B&&Q.y<=E&&!(r===Q.x&&a===Q.y)&&et(r,a,o,s,i,g,Q.x,Q.y)&&xA(Q.prev,Q,Q.next)>=0)return!1;Q=Q.next}return!0}function wi(A,e,t,n){let r=A.prev,o=A,i=A.next,a=r.x,s=o.x,g=i.x,I=r.y,B=o.y,u=i.y,E=Math.min(a,s,g),Q=Math.min(I,B,u),C=Math.max(a,s,g),h=Math.max(I,B,u),m=vt(E,Q,e,t,n),p=vt(C,h,e,t,n),D=A.prevZ;for(;D&&D.z>=m;){if(D.x>=E&&D.x<=C&&D.y>=Q&&D.y<=h&&D!==i&&!(a===D.x&&I===D.y)&&et(a,I,s,B,g,u,D.x,D.y)&&xA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let U=A.nextZ;for(;U&&U.z<=p;){if(U.x>=E&&U.x<=C&&U.y>=Q&&U.y<=h&&U!==i&&!(a===U.x&&I===U.y)&&et(a,I,s,B,g,u,U.x,U.y)&&xA(U.prev,U,U.next)>=0)return!1;U=U.nextZ}return!0}function bi(A,e){let t=A,n=!1;do{let r=t.prev,o=t.next.next;qn(r,t,t.next,o,!1)&&Me(r,o)&&Me(o,r)&&(e.push(r.i,t.i,o.i),xe(t),xe(t.next),t=A=o,n=!0),t=t.next}while(t!==A);return n?$A(t):t}function Mi(A,e,t,n,r){let o=A;do{let i=o.next.next;for(;i!==o.prev;){if(o.i!==i.i&&Hi(o,i)){let a=jn(o,i);o=$A(o,o.next),a=$A(a,a.next),St(o,e,t,n,r),St(a,e,t,n,r);return}i=i.next}o=o.next}while(o!==A)}var Rt=!1;function xi(A,e,t,n){let r=[];for(let o=0,i=e.length;o<i;o++){let a=e[o]*n,s=o<i-1?e[o+1]*n:A.length,g=Xn(A,a,s,n,!1);g===g.next&&we.add(g),r.push(vi(g))}r.sort(Fi),Gi(A.length/n,e.length),Zn(t,t),Rt=!0;for(let o=0;o<r.length;o++)t=Ni(r[o],t);return Rt=!1,$A(t)}function Fi(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Ni(A,e){let t=Si(A,e);if(!t)return e;let n=jn(t,A),r=n.next;return Zn(t,r.next),$A(n,n.next),$A(t,t.next)}var zn=16,bA=new Float64Array(0),At=0,Lt=[],kt=[];function Gi(A,e){let t=Math.ceil((A+2*e)/zn)+e+2;bA.length<t*4&&(bA=new Float64Array(t*4)),At=0}function Zn(A,e){let t=A;do{let n=At++;Lt[n]=t;let r=t.x,o=t.y,i=t.x,a=t.y,s=0;do{let I=t.next;t.z=n,I.x<r&&(r=I.x),I.x>i&&(i=I.x),I.y<o&&(o=I.y),I.y>a&&(a=I.y),t=I}while(++s<zn&&t!==e);kt[n]=t;let g=n*4;bA[g]=r,bA[g+1]=o,bA[g+2]=i,bA[g+3]=a}while(t!==e)}function Ui(A,e){let t=A.z*4;e.x<bA[t]&&(bA[t]=e.x),e.y<bA[t+1]&&(bA[t+1]=e.y),e.x>bA[t+2]&&(bA[t+2]=e.x),e.y>bA[t+3]&&(bA[t+3]=e.y)}function On(A){let e=kt[A];for(;e.prev.next!==e;)e=e.next;return kt[A]=e,e}function Vn(A){let e=Lt[A];for(;e.prev.next!==e;)e=e.next;return Lt[A]=e,e}function Si(A,e){let t=e,n=A.x,r=A.y,o=-1/0,i;if(be(A,t))return t;for(let u=0,E=0;u<At;u++,E+=4){if(r<bA[E+1]||r>bA[E+3]||bA[E]>n||bA[E+2]<=o)continue;let Q=On(u);t=Vn(u);do{if(t.prev.next===t){if(be(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let C=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(C<=n&&C>o&&(o=C,i=t.x<t.next.x?t:t.next,C===n))return i}}t=t.next}while(t!==Q)}if(!i)return null;let a=i.x,s=i.y,g=Math.min(r,s),I=Math.max(r,s),B=1/0;for(let u=0,E=0;u<At;u++,E+=4){if(bA[E+2]<a||bA[E]>n||bA[E+3]<g||bA[E+1]>I)continue;let Q=On(u);t=Vn(u);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&et(r<s?n:o,r,a,s,r<s?o:n,r,t.x,t.y)){let C=Math.abs(r-t.y)/(n-t.x);(Me(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(C<B||C===B&&(t.x>i.x||t.x===i.x&&Ri(i,t)))&&(i=t,B=C)}t=t.next}while(t!==Q)}return i}function Ri(A,e){return xA(A.prev,A,e.prev)<0&&xA(e.next,A,A.next)<0}var GA=[],ae=[],_A=new Uint32Array(0),ye=new Uint32Array(0),De=new Uint32Array(256);function Li(A,e,t,n){let r=A,o=0;do r.z=vt(r.x,r.y,e,t,n),GA[o++]=r,r=r.next;while(r!==A);ki(o);let i=null;for(let a=0;a<o;a++){let s=GA[a];s.prevZ=i,i&&(i.nextZ=s),i=s}i.nextZ=null,GA.fill(null,0,o),ae.fill(null,0,o)}function ki(A){if(A<=32){for(let e=1;e<A;e++){let t=GA[e],n=t.z,r=e-1;for(;r>=0&&GA[r].z>n;)GA[r+1]=GA[r],r--;GA[r+1]=t}return}_A.length<A&&(_A=new Uint32Array(A),ye=new Uint32Array(A),ae=new Array(A));for(let e=0;e<A;e++)_A[e]=GA[e].z;_e(A,GA,_A,ae,ye,0),_e(A,ae,ye,GA,_A,8),_e(A,GA,_A,ae,ye,16),_e(A,ae,ye,GA,_A,24)}function _e(A,e,t,n,r,o){De.fill(0);for(let a=0;a<A;a++)De[t[a]>>>o&255]++;let i=0;for(let a=0;a<256;a++){let s=De[a];De[a]=i,i+=s}for(let a=0;a<A;a++){let s=t[a],g=De[s>>>o&255]++;n[g]=e[a],r[g]=s}}function vt(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function vi(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function et(A,e,t,n,r,o,i,a){return(r-i)*(e-a)>=(A-i)*(o-a)&&(A-i)*(n-a)>=(t-i)*(e-a)&&(t-i)*(o-a)>=(r-i)*(n-a)}function Hi(A,e){let t=be(A,e)&&xA(A.prev,A,A.next)>0&&xA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Me(A,e)&&Me(e,A)&&(xA(A.prev,A,e.prev)!==0||xA(A,e.prev,e)!==0))&&!Pi(A,e)&&(t||Ji(A,e))}function xA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function be(A,e){return A.x===e.x&&A.y===e.y}function qn(A,e,t,n,r=!0){let o=xA(A,e,t),i=xA(A,e,n),a=xA(t,n,A),s=xA(t,n,e);return(o>0&&i<0||o<0&&i>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(o===0&&$e(A,t,e)||i===0&&$e(A,n,e)||a===0&&$e(t,A,n)||s===0&&$e(t,e,n)):!1}function $e(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function Pi(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),o=Math.max(A.y,e.y),i=A;do{let a=i.next;if(i.x>n&&a.x>n||i.x<t&&a.x<t||i.y>o&&a.y>o||i.y<r&&a.y<r){i=a;continue}if(i.i!==A.i&&a.i!==A.i&&i.i!==e.i&&a.i!==e.i&&qn(i,a,A,e))return!0;i=a}while(i!==A);return!1}function Me(A,e){return xA(A.prev,A,A.next)<0?xA(A,e,A.next)>=0&&xA(A,A.prev,e)>=0:xA(A,e,A.prev)<0||xA(A,A.next,e)<0}function Ji(A,e){let t=A,n=!1,r=(A.x+e.x)/2,o=(A.y+e.y)/2;do{let i=t.next;t.y>o!=i.y>o&&r<(i.x-t.x)*(o-t.y)/(i.y-t.y)+t.x&&(n=!n),t=i}while(t!==A);return n}function jn(A,e){let t=Ht(A.i,A.x,A.y),n=Ht(e.i,e.x,e.y),r=A.next,o=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,o.next=n,n.prev=o,n}function Wn(A,e,t,n){let r=Ht(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function xe(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),Rt&&Ui(A.prev,A.next)}function Ht(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function Ti(A,e,t,n){let r=0;for(let o=e,i=t-n;o<t;o+=n)r+=(A[i]-A[o])*(A[o+1]+A[i+1]),i=o;return r}var tr=In($n(),1);function Ar(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,o=Number.parseInt(t[2]+t[2],16)/255;return[n,r,o,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,o=Number.parseInt(t.slice(4,6),16)/255;return[n,r,o,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,o=Number.parseInt(t.slice(4,6),16)/255,i=Number.parseInt(t.slice(6,8),16)/255;return[n,r,o,i]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,o=(t[2]??0)/255,i=t[3]!==void 0?t[3]:1;return[n,r,o,i]}return[1,1,1,1]}function Fe(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function nt(A,e){let t=!1,n=e.length;for(let r=0,o=n-1;r<n;o=r++){let i=e[r].x,a=e[r].y,s=e[o].x,g=e[o].y;a>A.y!=g>A.y&&A.x<(s-i)*(A.y-a)/(g-a)+i&&(t=!t)}return t}var Ki=.1,Yi=64;function nr(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(Yi,Math.max(1,t))}function Oi(A,e,t,n,r){let o=nr(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let i=1;i<=o;i++){let a=i/o,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function Vi(A,e,t,n,r,o){let i=nr(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=i;a++){let s=a/i,g=1-s;o.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function Wi(A){try{let e=new tr.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function Xi(A,e,t,n,r){let o=A.path?.toSVG();if(!o)return{contours:[],simplified:!0};let i=Wi(o),a=i!==null;i??=(A.path?.commands??[]).map(u=>[u.command,...u.args]);let s=[],g={x:0,y:0},I=[],B=()=>{if(I.length>=3){let u=I[0],E=I[I.length-1];Math.hypot(E.x-u.x,E.y-u.y)<1e-4&&I.pop(),I.length>=3&&s.push(I)}I=[]};for(let u of i){let E=u[0],Q=u.slice(1);if(E==="moveTo")B(),g={x:(e+Q[0])*n,y:-(t+Q[1])*n},I=[g];else if(E==="lineTo")g={x:(e+Q[0])*n,y:-(t+Q[1])*n},I.push(g);else if(E==="quadraticCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},h={x:(e+Q[2])*n,y:-(t+Q[3])*n};Oi(g,C,h,r,I),g=h}else if(E==="bezierCurveTo"){let C={x:(e+Q[0])*n,y:-(t+Q[1])*n},h={x:(e+Q[2])*n,y:-(t+Q[3])*n},m={x:(e+Q[4])*n,y:-(t+Q[5])*n};Vi(g,C,h,m,r,I),g=m}else E==="closePath"&&B()}return B(),{contours:s,simplified:a}}var zi=Math.cos(30*Math.PI/180);function Zi({contours:A,simplified:e}){if(!e)return qi(A);let t=A.map(i=>({contour:i,area:Math.abs(Fe(i))}));t.sort((i,a)=>a.area-i.area);let n=t.map(()=>[]);for(let i=0;i<t.length;i++){let a=t[i].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<i;g++){if(t[g].area<=t[i].area)continue;let I=t[g].contour;(nt(a[0],I)||nt(s,I))&&n[i].push(g)}}let r=[],o=new Map;for(let i=0;i<t.length;i++){let a=n[i];if(a.length%2===0){let s={outer:t[i].contour,holes:[]};r.push(s),o.set(i,s)}else o.get(a[a.length-1])?.holes.push(t[i].contour)}return r}function qi(A){let e=A.map(r=>{let o=Fe(r);return{contour:r,signed:o,area:Math.abs(o)}});if(e.length===0)return[];e.sort((r,o)=>o.area-r.area);let t=Math.sign(e[0].signed),n=[];for(let r of e)Math.sign(r.signed)===t&&n.push({outer:r.contour,holes:[]});for(let r of e){if(Math.sign(r.signed)===t)continue;let o=r.contour[0],i=r.contour[Math.floor(r.contour.length/2)],a,s=Number.POSITIVE_INFINITY;for(let g of n){let I=Math.abs(Fe(g.outer));I>r.area&&I<s&&(nt(o,g.outer)||nt(i,g.outer))&&(a=g,s=I)}a?.holes.push(r.contour)}return n}var er=new WeakMap;function ji(A,e,t,n,r,o){let i=er.get(A);i||(i=new Map,er.set(A,i));let a=`${e.id}|${r}|${o.segments??""}|${o.tolerance}`,s=i.get(a);s||(s=Zi(Xi(e,0,0,r,o)),i.set(a,s));let g=t*r,I=-n*r,B=u=>u.map(E=>({x:E.x+g,y:E.y+I}));return s.map(u=>({outer:B(u.outer),holes:u.holes.map(B)}))}function Gs(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,o={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??Ki)},i=e.unitsPerEm||1e3,a=t/i,s=e.layout(A.text),g=0,I=[];for(let rA=0;rA<s.glyphs.length;rA++){let K=s.glyphs[rA],S=s.positions[rA],_=g+(S.xOffset??0),j=S.yOffset??0,W=ji(e,K,_,j,a,o);for(let nA of W)I.push(nA);g+=(S.xAdvance??K.advanceWidth??0)+(A.letterSpacing?A.letterSpacing/a:0)}let B=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,E=Number.POSITIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(let rA of I){for(let K of rA.outer)K.x<B&&(B=K.x),K.x>u&&(u=K.x),K.y<E&&(E=K.y),K.y>Q&&(Q=K.y);for(let K of rA.holes)for(let S of K)S.x<B&&(B=S.x),S.x>u&&(u=S.x),S.y<E&&(E=S.y),S.y>Q&&(Q=S.y)}Number.isFinite(B)||(B=0,u=0,E=0,Q=0);let C=u-B,h=Q-E,m=(B+u)/2;(A.align==="left"||A.align==="start")&&(m=B),(A.align==="right"||A.align==="end")&&(m=u);let p=(E+Q)/2;A.verticalAlign==="top"&&(p=E),A.verticalAlign==="bottom"&&(p=Q);for(let rA of I){for(let K of rA.outer)K.x-=m,K.y-=p;for(let K of rA.holes)for(let S of K)S.x-=m,S.y-=p}B-=m,u-=m,E-=p,Q-=p;let D=[],U=[],M=[],b=[],x=[],N=[],T=[],Y=[],O=(rA,K,S)=>{let _=x.length/3;return x.push(rA.x,rA.y,r,rA.x,rA.y,-r),N.push(K.x,K.y,0,K.x,K.y,0),T.push(S,0,S,1),_},v=rA=>{let K=rA.filter((aA,R)=>{let gA=rA[(R+1)%rA.length];return Math.hypot(gA.x-aA.x,gA.y-aA.y)>=1e-6}),S=K.length;if(S<2)return;let _=[],j=K.map((aA,R)=>{let gA=K[(R+1)%S],AA=Math.hypot(gA.x-aA.x,gA.y-aA.y);return _.push(AA),{x:(gA.y-aA.y)/AA,y:-(gA.x-aA.x)/AA}}),W=_.reduce((aA,R)=>aA+R,0),nA=[],lA=[],oA=0;for(let aA=0;aA<S;aA++){let R=j[(aA-1+S)%S],gA=j[aA],AA=oA/W,IA=R.x+gA.x,q=R.y+gA.y,L=R.x*gA.x+R.y*gA.y>=zi?{x:IA/Math.hypot(IA,q),y:q/Math.hypot(IA,q)}:null;L&&aA>0?nA[aA]=lA[aA]=O(K[aA],L,AA):(lA[aA]=O(K[aA],L??R,aA===0?1:AA),nA[aA]=O(K[aA],L??gA,AA)),oA+=_[aA]}for(let aA=0;aA<S;aA++){let R=nA[aA],gA=lA[(aA+1)%S];Y.push(R,gA+1,gA),Y.push(R,R+1,gA+1)}};for(let rA of I){let K=rA.outer;Fe(K)<0&&K.reverse();for(let oA of rA.holes)Fe(oA)>0&&oA.reverse();let S=[],_=[];for(let oA of K)S.push(oA.x,oA.y);for(let oA of rA.holes){_.push(S.length/2);for(let aA of oA)S.push(aA.x,aA.y)}let j=Pt(S,_,2),W=S.length/2,nA=D.length/3;for(let oA=0;oA<W;oA++){let aA=S[oA*2],R=S[oA*2+1];D.push(aA,R,-r),U.push(0,0,-1),M.push((aA-B)/(C||1),(R-E)/(h||1))}for(let oA=0;oA<j.length;oA+=3)b.push(nA+j[oA],nA+j[oA+2],nA+j[oA+1]);let lA=D.length/3;for(let oA=0;oA<W;oA++){let aA=S[oA*2],R=S[oA*2+1];D.push(aA,R,r),U.push(0,0,1),M.push((aA-B)/(C||1),(R-E)/(h||1))}for(let oA=0;oA<j.length;oA+=3)b.push(lA+j[oA],lA+j[oA+1],lA+j[oA+2]);v(K);for(let oA of rA.holes)v(oA)}let tA=Ar(A.fill??"#ffffff"),X=Ar(A.bevelColor??A.fill??"#ffffff"),F={name:"front-material",diffuseColor:tA,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},sA={name:"side-material",diffuseColor:X,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},H=[];return b.length>0&&H.push({id:"text-front-mesh",name:"front",positions:new Float32Array(D),normals:new Float32Array(U),uvs:new Float32Array(M),indices:D.length/3>65535?new Uint32Array(b):new Uint16Array(b),materialName:"front-material"}),Y.length>0&&H.push({id:"text-side-mesh",name:"side",positions:new Float32Array(x),normals:new Float32Array(N),uvs:new Float32Array(T),indices:x.length/3>65535?new Uint32Array(Y):new Uint16Array(Y),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:H,materials:{"front-material":F,"side-material":sA},animations:[],bounds:{min:[B,E,-r],max:[u,Q,r],center:[(B+u)/2,(E+Q)/2,0],size:[C,h,n],boundingSphereRadius:Math.hypot(C,h,n)/2}},bounds:{minX:B,maxX:u,minY:E,maxY:Q,width:C,height:h,depth:n}}}var Jt=new Map;function _i(A,e){return JSON.stringify({text:A,...e})}function Tt(A,e){let t=A?String(A):" ",n=_i(t,e),r=Jt.get(n);if(r)return r;let o=e.fontSize??48,i=e.fontFamily??"Inter";ZA.isFailed(i)&&(i="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*o:e.lineHeight??o*1.2,g=ZA.getFont(i,e.fontWeight,null),I=e.padding??0;if(!g){if(!ZA.isFailed(i)){let m=Ct(i);ZA.preloadSlugFont(null,i,m).catch(()=>{})}let E=t.split(`
|
|
996
|
+
`),Q=0,C=e.width!==void 0?Math.max(10,e.width-I*2):0;for(let m of E)if(C>0){let p=m.length*o*.55+a*m.length,D=Math.max(1,Math.ceil(p/C));Q+=D}else Q+=1;let h={width:e.width!==void 0?e.width:Math.ceil(t.length*o*.6+a*t.length)+2+I*2,height:e.height!==void 0?e.height:Math.ceil(Q*s)+2+I*2};return Jt.set(n,h),h}let B=En.measure(t,g,o,a,s,e.width!==void 0?Math.max(0,e.width-I*2):void 0,e.spans),u={width:e.width!==void 0&&!e.keepNaturalWidth?e.width:Math.ceil(B.width)+I*2+8,height:e.height!==void 0?e.height:Math.ceil(B.height)+I*2};return Jt.set(n,u),u}function ks(A,e){let t=e.fontFamily??"Inter";if(ZA.isFailed(t)&&(t="Inter"),ZA.isFailed(t))return Promise.resolve(Tt(A,e));let n=Ct(t);return ZA.preloadSlugFont(null,t,n).then(()=>Tt(A,e)).catch(()=>Tt(A,e))}$();$();$();var $i=(()=>{var A=import.meta.url;return(function(e){e=e||{};var t;t||(t=typeof e<"u"?e:{});var n,r;t.ready=new Promise(function(l,c){n=l,r=c});var o=Object.assign({},t),i="";typeof document<"u"&&document.currentScript&&(i=document.currentScript.src),A&&(i=A),i.indexOf("blob:")!==0?i=i.substr(0,i.replace(/[?#].*/,"").lastIndexOf("/")+1):i="";var a=t.print||console.log.bind(console),s=t.printErr||console.warn.bind(console);Object.assign(t,o),o=null;var g;t.wasmBinary&&(g=t.wasmBinary);var I=t.noExitRuntime||!0;typeof WebAssembly!="object"&&sA("no native wasm support detected");var B,u=!1;function E(l,c,f){f=c+f;for(var d="";!(c>=f);){var y=l[c++];if(!y)break;if(y&128){var G=l[c++]&63;if((y&224)==192)d+=String.fromCharCode((y&31)<<6|G);else{var P=l[c++]&63;y=(y&240)==224?(y&15)<<12|G<<6|P:(y&7)<<18|G<<12|P<<6|l[c++]&63,65536>y?d+=String.fromCharCode(y):(y-=65536,d+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else d+=String.fromCharCode(y)}return d}var Q,C,h,m,p,D,U,M,b;function x(){var l=B.buffer;Q=l,t.HEAP8=C=new Int8Array(l),t.HEAP16=m=new Int16Array(l),t.HEAP32=D=new Int32Array(l),t.HEAPU8=h=new Uint8Array(l),t.HEAPU16=p=new Uint16Array(l),t.HEAPU32=U=new Uint32Array(l),t.HEAPF32=M=new Float32Array(l),t.HEAPF64=b=new Float64Array(l)}var N,T=[],Y=[],O=[];function v(){var l=t.preRun.shift();T.unshift(l)}var tA=0,X=null,F=null;function sA(l){throw t.onAbort&&t.onAbort(l),l="Aborted("+l+")",s(l),u=!0,l=new WebAssembly.RuntimeError(l+". Build with -sASSERTIONS for more info."),r(l),l}function H(l){return l.startsWith("data:application/octet-stream;base64,")}var V;if(V="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMkAEEBIQQgA0EIaiAAQfwAaiIFIAAgAUEBdGpB8gBqIgEvAQAQHwJAAkAgAyoCCCIHIAIqAgAiBlwEQCAHIAdbBEAgAi0ABCECDAILIAYgBlwhBAsgAi0ABCECIARFDQAgAy0ADCACQf8BcUYNAQsgBSABIAYgAhA5A0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC5AMiAA0ACwsgA0EQaiQACwoAIABBMGtBCkkLBQAQAgALBAAgAAsUACAABEAgACAAKAIAKAIEEQAACwsrAQF/IAAoAgwiAQRAIAEQIwsgACgCACIBBEAgACABNgIEIAEQIwsgABAjC4EEAQN/IwBBEGsiAyQAIABCADcCBCAAQcEgOwAVIABCADcCDCAAQoCAgICAgIACNwIYIAAgAC0AF0HgAXE6ABcgACAALQAAQeABcUEFcjoAACAAIAAtABRBgAFxOgAUIABBIGpBAEHOABAqGiAAQgA3AXIgAEGEgBA2AW4gAEEANgF6IABCADcCgAEgAEIANwKIASAAQgA3ApABIABCADcCoAEgAEKAgICAgICA4P8ANwKYASAAQQA6AKgBIABBrAFqQQBBxAEQKhogAEHwAmohBCAAQbABaiECA0AgAkKAgID8i4CAwL9/NwIQIAJCgYCAgBA3AgggAkKAgID8i4CAwL9/NwIAIAJBGGoiAiAERw0ACyAAQoCAgPyLgIDAv383AvACIABCgICA/IuAgMC/fzcCgAMgAEKBgICAEDcC+AIgAEKAgID+h4CA4P8ANwKUAyAAQoCAgP6HgIDg/wA3AowDIABBiANqIgIgAi0AAEH4AXE6AAAgAEGcA2pBAEHYABAqGiAAQQA6AIQEIABBgICA/gc2AoAEIABBADoA/AMgAEGAgID+BzYC+AMgACABNgL0AyABBEAgAS0ACEEBcQRAIAAgAC0AFEHzAXFBCHI6ABQgACAALwAVQfD/A3FBBHI7ABULIANBEGokACAADwsgA0GiGjYCACADEHIQJAALMwAgACABQQJ0QfwlaigCAEECdGoqApQDIABBFGoiACABQQEgAhAiIAAgAUEBIAIQIZKSC44DAQp/IwBB0AJrIgEkACAAKALoAyIDIAAoAuwDIgVHBEAgAUGMAmohBiABQeABaiEHIAFBIGohCCABQRxqIQkgAUEQaiEEA0AgAygCACICLQAXQRB0QYCAMHFBgIAgRgRAIAFBCGpBAEHEAhAqGiABQYCAgP4HNgIMIARBADoACCAEQgA3AgAgCUEAQcQBECoaIAghAANAIABCgICA/IuAgMC/fzcCECAAQoGAgIAQNwIIIABCgICA/IuAgMC/fzcCACAAQRhqIgAgB0cNAAsgAUKAgID8i4CAwL9/NwPwASABQoGAgIAQNwPoASABQoCAgPyLgIDAv383A+ABIAFCgICA/oeAgOD/ADcChAIgAUKAgID+h4CA4P8ANwL8ASABIAEtAPgBQfgBcToA+AEgBkEAQcAAECoaIAJBmAFqIAFBCGpBxAIQKxogAkIANwKMAyACIAItAAAiAEEBciIKQfsBcSAKIABBBHEbOgAAIAIQTyACEF4LIANBBGoiAyAFRw0ACwsgAUHQAmokAAtMAQF/QQEhAQJAIAAtAB5BB3ENACAALQAiQQdxDQAgAC0ALkEHcQ0AIAAtACpBB3ENACAALQAmQQdxDQAgAC0AKEEHcUEARyEBCyABC3YCAX8BfSMAQRBrIgQkACAEQQhqIAAgAUECdEHcJWooAgAgAhBQQwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAACXQwAAAAAgBSAFWxsLogQCBn8CfgJ/QQghBAJAAkAgAEFHSw0AA0BBCCAEIARBCE0bIQRB6DopAwAiBwJ/QQggAEEDakF8cSAAQQhNGyIAQf8ATQRAIABBA3ZBAWsMAQsgAEEdIABnIgFrdkEEcyABQQJ0a0HuAGogAEH/H00NABpBPyAAQR4gAWt2QQJzIAFBAXRrQccAaiIBIAFBP08bCyIDrYgiCFBFBEADQCAIIAh6IgiIIQcCfiADIAinaiIDQQR0IgJB6DJqKAIAIgEgAkHgMmoiBkcEQCABIAQgABBjIgUNBSABKAIEIgUgASgCCDYCCCABKAIIIAU2AgQgASAGNgIIIAEgAkHkMmoiAigCADYCBCACIAE2AgAgASgCBCABNgIIIANBAWohAyAHQgGIDAELQeg6Qeg6KQMAQn4gA62JgzcDACAHQgGFCyIIQgBSDQALQeg6KQMAIQcLAkAgB1BFBEBBPyAHeadrIgZBBHQiAkHoMmooAgAhAQJAIAdCgICAgARUDQBB4wAhAyABIAJB4DJqIgJGDQADQCADRQ0BIAEgBCAAEGMiBQ0FIANBAWshAyABKAIIIgEgAkcNAAsgAiEBCyAAQTBqEGQNASABRQ0EIAEgBkEEdEHgMmoiAkYNBANAIAEgBCAAEGMiBQ0EIAEoAggiASACRw0ACwwECyAAQTBqEGRFDQMLQQAhBSAEIARBAWtxDQEgAEFHTQ0ACwsgBQwBC0EACwtwAgF/AX0jAEEQayIEJAAgBEEIaiAAIAFBAnRB7CVqKAIAIAIQKEMAAMB/IQUCQAJAAkAgBC0ADEEBaw4CAAECCyAEKgIIIQUMAQsgBCoCCCADlEMK1yM8lCEFCyAEQRBqJAAgBUMAAAAAIAUgBVsbC6ADAQN/IAEgAEEEaiIEakEBa0EAIAFrcSIFIAJqIAAgACgCACIBakEEa00EfyAAKAIEIgMgACgCCDYCCCAAKAIIIAM2AgQgBCAFRwRAIAAgAEEEaygCAEF+cWsiAyAFIARrIgQgAygCAGoiBTYCACAFQXxxIANqQQRrIAU2AgAgACAEaiIAIAEgBGsiATYCAAsCQCABIAJBGGpPBEAgACACakEIaiIDIAEgAmtBCGsiATYCACABQXxxIANqQQRrIAFBAXI2AgAgAwJ/IAMoAgBBCGsiAUH/AE0EQCABQQN2QQFrDAELIAFnIQQgAUEdIARrdkEEcyAEQQJ0a0HuAGogAUH/H00NABpBPyABQR4gBGt2QQJzIARBAXRrQccAaiIBIAFBP08bCyIBQQR0IgRB4DJqNgIEIAMgBEHoMmoiBCgCADYCCCAEIAM2AgAgAygCCCADNgIEQeg6Qeg6KQMAQgEgAa2GhDcDACAAIAJBCGoiATYCACABQXxxIABqQQRrIAE2AgAMAQsgACABakEEayABNgIACyAAQQRqBSADCwvmAwEFfwJ/QbAwKAIAIgEgAEEHakF4cSIDaiECAkAgA0EAIAEgAk8bDQAgAj8AQRB0SwRAIAIQFkUNAQtBsDAgAjYCACABDAELQfw7QTA2AgBBfwsiAkF/RwRAIAAgAmoiA0EQayIBQRA2AgwgAUEQNgIAAkACf0HgOigCACIABH8gACgCCAVBAAsgAkYEQCACIAJBBGsoAgBBfnFrIgRBBGsoAgAhBSAAIAM2AghBcCAEIAVBfnFrIgAgACgCAGpBBGstAABBAXFFDQEaIAAoAgQiAyAAKAIINgIIIAAoAgggAzYCBCAAIAEgAGsiATYCAAwCCyACQRA2AgwgAkEQNgIAIAIgAzYCCCACIAA2AgRB4DogAjYCAEEQCyACaiIAIAEgAGsiATYCAAsgAUF8cSAAakEEayABQQFyNgIAIAACfyAAKAIAQQhrIgFB/wBNBEAgAUEDdkEBawwBCyABQR0gAWciA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiADa3ZBAnMgA0EBdGtBxwBqIgEgAUE/TxsLIgFBBHQiA0HgMmo2AgQgACADQegyaiIDKAIANgIIIAMgADYCACAAKAIIIAA2AgRB6DpB6DopAwBCASABrYaENwMACyACQX9HC80BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQSBqIgEvAQAQHwJAAkAgAyoCCCIHIAIqAgAiBlwEQCAHIAdbBEAgAi0ABCECDAILIAYgBlwhBAsgAi0ABCECIARFDQAgAy0ADCACQf8BcUYNAQsgBSABIAYgAhA5A0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC5AMiAA0ACwsgA0EQaiQAC0ABAX8CQEGsOy0AAEEBcQRAQag7KAIAIQIMAQtBAUGAJxAMIQJBrDtBAToAAEGoOyACNgIACyACIAAgAUEAEBMLzQECA38CfSMAQRBrIgMkAEEBIQQgA0EIaiAAQfwAaiIFIAAgAUEBdGpBMmoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALDwAgASAAKAIAaiACOQMACw0AIAEgACgCAGorAwALCwAgAARAIAAQIwsLxwECBH8CfSMAQRBrIgIkACACQQhqIABB/ABqIgQgAEEeaiIFLwEAEB9BASEDAkACQCACKgIIIgcgASoCACIGXARAIAcgB1sEQCABLQAEIQEMAgsgBiAGXCEDCyABLQAEIQEgA0UNACACLQAMIAFB/wFxRg0BCyAEIAUgBiABEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyACQRBqJAALlgMCA34CfyAAvSICQjSIp0H/D3EiBEH/D0YEQCAARAAAAAAAAPA/oiIAIACjDwsgAkIBhiIBQoCAgICAgIDw/wBYBEAgAEQAAAAAAAAAAKIgACABQoCAgICAgIDw/wBRGw8LAn4gBEUEQEEAIQQgAkIMhiIBQgBZBEADQCAEQQFrIQQgAUIBhiIBQgBZDQALCyACQQEgBGuthgwBCyACQv////////8Hg0KAgICAgICACIQLIQEgBEH/B0oEQANAAkAgAUKAgICAgICACH0iA0IAUw0AIAMiAUIAUg0AIABEAAAAAAAAAACiDwsgAUIBhiEBIARBAWsiBEH/B0oNAAtB/wchBAsCQCABQoCAgICAgIAIfSIDQgBTDQAgAyIBQgBSDQAgAEQAAAAAAAAAAKIPCyABQv////////8HWARAA0AgBEEBayEEIAFCgICAgICAgARUIQUgAUIBhiEBIAUNAAsLIAJCgICAgICAgICAf4MgAUKAgICAgICACH0gBK1CNIaEIAFBASAEa62IIARBAEobhL8LiwEBA38DQCAAQQR0IgFB5DJqIAFB4DJqIgI2AgAgAUHoMmogAjYCACAAQQFqIgBBwABHDQALQTAQZBpBmDtBBjYCAEGcO0EANgIAEJwBQZw7Qcg7KAIANgIAQcg7QZg7NgIAQcw7QcMBNgIAQdA7QQA2AgAQjwFB0DtByDsoAgA2AgBByDtBzDs2AgALjwEBAn8jAEEQayIEJAACfUMAAAAAIAAvABVBgOAAcUUNABogBEEIaiAAQRRqIgBBASACQQJGQQF0IAFB/gFxQQJHGyIFIAIQNgJAIAQtAAxFDQAgBEEIaiAAIAUgAhA2IAQtAAxBA0YNACAAIAEgAiADEIEBDAELIAAgASACIAMQgAGMCyEDIARBEGokACADC4QBAQJ/AkACQCAAKALoAyICIAAoAuwDIgNGDQADQCACKAIAIAFGDQEgAkEEaiICIANHDQALDAELIAIgA0YNACABLQAXQRB0QYCAMHFBgIAgRgRAIAAgACgC4ANBAWs2AuADCyACIAJBBGoiASADIAFrEDMaIAAgA0EEazYC7ANBAQ8LQQALCwBByDEgACABEEkLPAAgAEUEQCACQQVHQQAgAhtFBEBBuDAgAyAEEEkaDwsgAyAEEHAaDwsgACABIAIgAyAEIAAoAgQRDQAaCyYBAX8jAEEQayIBJAAgASAANgIMQbgwQdglIAAQSRogAUEQaiQAC4cDAwN/BXwCfSAAKgKgA7siBiACoCECIAAqApwDuyIHIAGgIQggACgC9AMqAhgiC0MAAAAAXARAIAAqApADuyEJIAAqAowDIQwgACAHIAu7IgFBACAALQAAQRBxIgNBBHYiBBA0OAKcAyAAIAYgAUEAIAQQNDgCoAMgASAMuyIHohBsIgYgBmIiBEUgBplELUMc6+I2Gj9jcUUEQCAEIAZEAAAAAAAA8L+gmUQtQxzr4jYaP2NFciEFCyACIAmgIQogCCAHoCEHAn8gASAJohBsIgYgBmIiBEUEQEEAIAaZRC1DHOviNho/Yw0BGgsgBCAGRAAAAAAAAPC/oJlELUMc6+I2Gj9jRXILIQQgACAHIAEgA0EARyIDIAVxIAMgBUEBc3EQNCAIIAFBACADEDSTOAKMAyAAIAogASADIARxIAMgBEEBc3EQNCACIAFBACADEDSTOAKQAwsgACgC6AMiAyAAKALsAyIARwRAA0AgAygCACAIIAIQcyADQQRqIgMgAEcNAAsLC1UBAX0gAEEUaiIAIAEgAkECSSICIAQgBRA1IQYgACABIAIgBCAFEC0iBUMAAAAAYCADIAVecQR9IAUFIAZDAAAAAGBFBEAgAw8LIAYgAyADIAZdGwsLeAEBfwJAIAAoAgAiAgRAA0AgAUUNAiACIAEoAgQ2AgQgAiABKAIINgIIIAEoAgAhASAAKAIAIQAgAigCACICDQALCyAAIAEQPA8LAkAgAEUNACAAKAIAIgFFDQAgAEEANgIAA0AgASgCACEAIAEQIyAAIgENAAsLC5kCAgZ/AX0gAEEUaiEHQQMhBCAALQAUQQJ2QQNxIQUCQAJ/AkAgAUEBIAAoAuQDGyIIQQJGBEACQCAFQQJrDgIEAAILQQIhBAwDC0ECIQRBACAFQQFLDQEaCyAECyEGIAUhBAsgACAEIAggAyACIARBAkkiBRsQbiEKIAAgBiAIIAIgAyAFGxBuIQMgAEGcA2oiAEEBIAFBAkZBAXQiCCAFG0ECdGogCiAHIAQgASACECKSOAIAIABBAyABQQJHQQF0IgkgBRtBAnRqIAogByAEIAEgAhAhkjgCACAAIAhBASAGQQF2IgQbQQJ0aiADIAcgBiABIAIQIpI4AgAgACAJQQMgBBtBAnRqIAMgByAGIAEgAhAhkjgCAAvUAgEDfyMAQdACayIBJAAgAUEIakEAQcQCECoaIAFBADoAGCABQgA3AxAgAUGAgID+BzYCDCABQRxqQQBBxAEQKhogAUHgAWohAyABQSBqIQIDQCACQoCAgPyLgIDAv383AhAgAkKBgICAEDcCCCACQoCAgPyLgIDAv383AgAgAkEYaiICIANHDQALIAFCgICA/IuAgMC/fzcD8AEgAUKBgICAEDcD6AEgAUKAgID8i4CAwL9/NwPgASABQoCAgP6HgIDg/wA3AoQCIAFCgICA/oeAgOD/ADcC/AEgASABLQD4AUH4AXE6APgBIAFBjAJqQQBBwAAQKhogAEGYAWogAUEIakHEAhArGiAAQgA3AowDIAAgAC0AAEEBcjoAACAAEE8gACgC6AMiAiAAKALsAyIARwRAA0AgAigCABB3IAJBBGoiAiAARw0ACwsgAUHQAmokAAuuAgIKfwJ9IwBBIGsiASQAIAFBgAI7AB4gAEHuAGohByAAQfgDaiEFIABB8gBqIQggAEH2AGohCSAAQfwAaiEDQQAhAANAIAFBEGogAyAJIAFBHmogBGotAAAiAkEBdCIEaiIGLwEAEB8CQAJAIAEtABRFDQAgAUEIaiADIAYvAQAQHyABIAMgBCAIai8BABAfIAEtAAwgAS0ABEcNAAJAIAEqAggiDCAMXCIKIAEqAgAiCyALXHJFBEAgDCALk4tDF7fROF0NAQwCCyAKRSALIAtbcg0BCyABQRBqIAMgBi8BABAfDAELIAFBEGogAyAEIAdqLwEAEB8LIAUgAkEDdGoiAiABLQAUOgAEIAIgASgCEDYCAEEBIQQgACECQQEhACACRQ0ACyABQSBqJAALMgACf0EAIAAvABVBgOAAcUGAwABGDQAaQQEgABA7QwAAAABcDQAaIAAQQEMAAAAAXAsLewEBfSADIASTIgMgA1sEfUMAAAAAIABBFGoiACABIAIgBSAGEDUiByAEkyAHIAdcGyIHQ///f38gACABIAIgBSAGEC0iBSAEkyAFIAVcGyIEIAMgAyAEXhsiAyADIAddGyAHIAMgAyADXBsgAyADWyAHIAdbcRsFIAMLC98FAwR/BX0BfCAJQwAAAABdIAhDAAAAAF1yBH8gDQUgBSESIAEhEyADIRQgByERIAwqAhgiFUMAAAAAXARAIAG7IBW7IhZBAEEAEDQhEyADuyAWQQBBABA0IRQgBbsgFkEAQQAQNCESIAe7IBZBAEEAEDQhEQsCf0EAIAAgBEcNABogEiATk4tDF7fROF0gEyATXCINIBIgElxyRQ0AGkEAIBIgElsNABogDQshDAJAIAIgBkcNACAUIBRcIg0gESARXHJFBEAgESAUk4tDF7fROF0hDwwBCyARIBFbDQAgDSEPC0EBIQ5BASENAkAgDA0AIAEgCpMhAQJAIABFBEAgASABXCIAIAggCFxyRQRAQQAhDCABIAiTi0MXt9E4XUUNAgwDC0EAIQwgCCAIWw0BIAANAgwBCyAAQQJGIQwgAEECRw0AIARBAUcNACABIAhgDQECQCAIIAhcIgAgASABXHJFBEAgASAIk4tDF7fROF1FDQEMAwtBACENIAEgAVsNAkEBIQ0gAA0CC0EAIQ0MAQtBACENIAggCFwiACABIAVdRXINACAMRSABIAFcIhAgBSAFXHIgBEECR3JyDQBBASENIAEgCGANAEEAIQ0gACAQcg0AIAEgCJOLQxe30ThdIQ0LAkAgDw0AIAMgC5MhAQJAAkAgAkUEQCABIAFcIgIgCSAJXHJFBEBBACEAIAEgCZOLQxe30ThdRQ0CDAQLQQAhACAJIAlbDQEgAg0DDAELIAJBAkYhACACQQJHIAZBAUdyDQAgASAJYARADAMLIAkgCVwiACABIAFcckUEQCABIAmTi0MXt9E4XUUNAgwDC0EAIQ4gASABWw0CQQEhDiAADQIMAQsgCSAJXCICIAEgB11Fcg0AIABFIAEgAVwiBCAHIAdcciAGQQJHcnINACABIAlgDQFBACEOIAIgBHINASABIAmTi0MXt9E4XSEODAELQQAhDgsgDSAOcQsL4wEBA38jAEEQayIBJAACQAJAIAAtABRBCHFFDQBBASEDIAAvABVB8AFxQdAARg0AIAEgABAyIAEoAgQhAAJAIAEoAgAiAkUEQEEAIQMgAEUNAQsDQCACKALsAyACKALoAyICa0ECdSAATQ0DIAIgAEECdGooAgAiAC8AFSAALQAXQRB0ciIAQYDgAHFBgMAARyAAQYAecUGACkZxIgMNASABEC4gASgCBCIAIAEoAgAiAnINAAsLIAEoAggiAEUNAANAIAAoAgAhAiAAECMgAiIADQALCyABQRBqJAAgAw8LEAIAC7IBAQR/AkACQCAAKAIEIgMgACgCACIEKALsAyAEKALoAyIBa0ECdUkEQCABIANBAnRqIQIDQCACKAIAIgEtABdBEHRBgIAwcUGAgCBHDQMgASgC7AMgASgC6ANGDQJBDBAeIgIgBDYCBCACIAM2AgggAiAAKAIINgIAQQAhAyAAQQA2AgQgACABNgIAIAAgAjYCCCABIQQgASgC6AMiAiABKALsA0cNAAsLEAIACyAAEC4LC4wQAgx/B30jAEEgayINJAAgDUEIaiABEDIgDSgCCCIOIA0oAgwiDHIEQCADQQEgAxshFSAAQRRqIRQgBUEBaiEWA0ACQAJAAn8CQAJAAkACQAJAIAwgDigC7AMgDigC6AMiDmtBAnVJBEAgDiAMQQJ0aigCACILLwAVIAstABdBEHRyIgxBgIAwcUGAgBBGDQgCQAJAIAxBDHZBA3EOAwEKAAoLIAkhFyAKIRogASgC9AMtABRBBHFFBEAgACoClAMgFEECQQEQMCAUQQJBARAvkpMhFyAAKgKYAyAUQQBBARAwIBRBAEEBEC+SkyEaCyALQRRqIQ8gAS0AFEECdkEDcSEQAkACfwJAIANBAkciE0UEQEEAIQ5BAyEMAkAgEEECaw4CBAACC0ECIQwMAwtBAiEMQQAgEEEBSw0BGgsgDAshDiAQIQwLIA9BAkEBIBcQIiAPQQJBASAXECGSIR0gD0EAQQEgFxAiIRwgD0EAQQEgFxAhIRsgCyoC+AMhGAJAAkACQAJAIAstAPwDQQFrDgIBAAILIBggF5RDCtcjPJQhGAsgGEMAAAAAYEUNACAdIAsgA0EAIBcgFxAxkiEYDAELIA1BGGogDyALQTJqIhAgAxBFQwAAwH8hGCANLQAcRQ0AIA1BGGogDyAQIAMQRCANLQAcRQ0AIA1BGGogDyAQIAMQRSANLQAcQQNGDQAgDUEYaiAPIBAgAxBEIA0tABxBA0YNACALQQIgAyAAKgKUAyAUQQIgAxBLIBRBAiADEFKSkyAPQQIgAyAXEFEgD0ECIAMgFxCDAZKTIBcgFxAlIRgLIBwgG5IhHCALKgKABCEZAkACQAJAIAstAIQEQQFrDgIBAAILIBkgGpRDCtcjPJQhGQsgGUMAAAAAYEUNACAcIAsgA0EBIBogFxAxkiEZDAMLIA1BGGogDyALQTJqIhAQQwJAIA0tABxFDQAgDUEYaiAPIBAQQiANLQAcRQ0AIA1BGGogDyAQEEMgDS0AHEEDRg0AIA1BGGogDyAQEEIgDS0AHEEDRg0AIAtBACADIAAqApgDIBRBACADEEsgFEEAIAMQUpKTIA9BACADIBoQUSAPQQAgAyAaEIMBkpMgGiAXECUhGQwDC0MAAMB/IRkgGCAYXA0GIAtB/ABqIhAgC0H6AGoiEi8BABAgIhsgG1sNAwwFCyALLQAAQQhxDQggCxBPIAAgCyACIAstABRBA3EiDCAVIAwbIAQgFiAGIAsqApwDIAeSIAsqAqADIAiSIAkgChB+IBFyIQxBACERIAxBAXFFDQhBASERIAsgCy0AAEEBcjoAAAwICxACAAsgGCAYXCAZIBlcRg0BIAtB/ABqIhAgC0H6AGoiEi8BABAgIhsgG1wNASAYIBhcBEAgGSAckyAQIAsvAXoQIJQgHZIhGAwCCyAZIBlbDQELIBwgGCAdkyAQIBIvAQAQIJWSIRkLIBggGFwNASAZIBlbDQMLQQAMAQtBAQshEiALIBcgGCACQQFHIAxBAklxIBdDAAAAAF5xIBJxIhAbIBkgA0ECIBIgEBsgGSAZXCAXIBpBAEEGIAQgBSAGED0aIAsqApQDIA9BAkEBIBcQIiAPQQJBASAXECGSkiEYIAsqApgDIA9BAEEBIBcQIiAPQQBBASAXECGSkiEZC0EBIRAgCyAYIBkgA0EAQQAgFyAaQQFBASAEIAUgBhA9GiAAIAEgCyADIAxBASAXIBoQggEgACABIAsgAyAOQQAgFyAaEIIBIBFBAXFFBEAgCy0AAEEBcSEQCyABLQAUIhJBAnZBA3EhDAJAAn8CQAJAAkACQAJAAkACQAJAAkACfwJAIBNFBEBBACERQQMhDiAMQQJrDgIDDQELQQIhDkEAIAxBAUsNARoLIA4LIREgEkEEcUUNBCASQQhxRQ0BIAwhDgsgASEMIA8QXw0BDAILAkAgCy0ANEEHcQ0AIAstADhBB3ENACALLQBCQQdxDQAgDCEOIAEhDCALQUBrLwEAQQdxRQ0CDAELIAwhDgsgACEMCwJ/AkACQAJAIA5BAWsOAwABAgULIAtBmANqIQ4gC0GoA2ohE0EBIRIgDEGYA2oMAgsgC0GUA2ohDiALQZwDaiETQQIhEiAMQZQDagwBCyALQZQDaiEOIAtBpANqIRNBACESIAxBlANqCyEMIAsgEkECdGogDCoCACAOKgIAkyATKgIAkzgCnAMLIBFBAXFFDQUCQAJAIBFBAnEEQCABIQwgDxBfDQEMAgsgCy0ANEEHcQ0AIAstADhBB3ENACALLQBCQQdxDQAgASEMIAtBQGsvAQBBB3FFDQELIAAhDAsgEUEBaw4DAQIDAAsQJAALIAtBmANqIREgC0GoA2ohDkEBIRMgDEGYA2oMAgsgC0GUA2ohESALQZwDaiEOQQIhEyAMQZQDagwBCyALQZQDaiERIAtBpANqIQ5BACETIAxBlANqCyEMIAsgE0ECdGogDCoCACARKgIAkyAOKgIAkzgCnAMLIAsqAqADIRsgCyoCnAMgB0MAAAAAIA8QXxuTIRcCfQJAIAstADRBB3ENACALLQA4QQdxDQAgCy0AQkEHcQ0AIAtBQGsvAQBBB3ENAEMAAAAADAELIAgLIRogCyAXOAKcAyALIBsgGpM4AqADIBAhEQsgDUEIahAuIA0oAgwiDCANKAIIIg5yDQALCyANKAIQIgwEQANAIAwoAgAhACAMECMgACIMDQALCyANQSBqJAAgEUEBcQt2AgF/AX0jAEEQayIEJAAgBEEIaiAAIAFBAnRB7CVqKAIAIAIQUEMAAMB/IQUCQAJAAkAgBC0ADEEBaw4CAAECCyAEKgIIIQUMAQsgBCoCCCADlEMK1yM8lCEFCyAEQRBqJAAgBUMAAAAAl0MAAAAAIAUgBVsbC3gCAX8BfSMAQRBrIgQkACAEQQhqIABBAyACQQJHQQF0IAFB/gFxQQJHGyACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt4AgF/AX0jAEEQayIEJAAgBEEIaiAAQQEgAkECRkEBdCABQf4BcUECRxsgAhA2QwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsLoA0BBH8jAEEQayIJJAAgCUEIaiACQRRqIgggA0ECRkEBdEEBIARB/gFxQQJGIgobIgsgAxA2IAYgByAKGyEHAkACQAJAAkACQAJAIAktAAxFDQAgCUEIaiAIIAsgAxA2IAktAAxBA0YNACAIIAQgAyAHEIEBIABBFGogBCADEDCSIAggBCADIAcQIpIhBkEBIQMCQAJ/AkACQAJAAkAgBA4EAgMBAAcLQQIhAwwBC0EAIQMLIAMgC0YNAgJAAkAgBA4EAgIAAQYLIABBlANqIQNBAAwCCyAAQZQDaiEDQQAMAQsgAEGYA2ohA0EBCyEAIAMqAgAgAiAAQQJ0aioClAOTIAaTIQYLIAIgBEECdEHcJWooAgBBAnRqIAY4ApwDDAULIAlBCGogCCADQQJHQQF0QQMgChsiCiADEDYCQCAJLQAMRQ0AIAlBCGogCCAKIAMQNiAJLQAMQQNGDQACfwJAAkACQCAEDgQCAgABBQsgAEGUA2ohBUEADAILIABBlANqIQVBAAwBCyAAQZgDaiEFQQELIQEgBSoCACACQZQDaiIFIAFBAnRqKgIAkyAAQRRqIAQgAxAvkyAIIAQgAyAHECGTIAggBCADIAcQgAGTIQZBASEDAkACfwJAAkACQAJAIAQOBAIDAQAHC0ECIQMMAQtBACEDCyADIAtGDQICQAJAIAQOBAICAAEGCyAAQZQDaiEDQQAMAgsgAEGUA2ohA0EADAELIABBmANqIQNBAQshACADKgIAIAUgAEECdGoqAgCTIAaTIQYLIAIgBEECdEHcJWooAgBBAnRqIAY4ApwDDAULAkACQAJAIAUEQCABLQAUQQR2QQdxIgBBBUsNCEEBIAB0IgBBMnENASAAQQlxBEAgBEECdEHcJWooAgAhACAIIAQgAyAGEEEgASAAQQJ0IgBqIgEqArwDkiEGIAAgAmogAigC9AMtABRBAnEEfSAGBSAGIAEqAswDkgs4ApwDDAkLIAEgBEECdEHsJWooAgBBAnRqIgAqArwDIAggBCADIAYQYpIhBiACKAL0Ay0AFEECcUUEQCAGIAAqAswDkiEGCwJAAkACQAJAIAQOBAEBAgAICyABKgKUAyACKgKUA5MhB0ECIQMMAgsgASoCmAMgAioCmAOTIQdBASEDAkAgBA4CAgAHC0EDIQMMAQsgASoClAMgAioClAOTIQdBACEDCyACIANBAnRqIAcgBpM4ApwDDAgLIAIvABZBD3EiBUUEQCABLQAVQQR2IQULIAVBBUYEQCABLQAUQQhxRQ0CCyABLwAVQYCAA3FBgIACRgRAIAVBAmsOAgEHAwsgBUEISw0HQQEgBXRB8wNxDQYgBUECRw0CC0EAIQACfQJ/AkACQAJAAkACfwJAAkACQCAEDgQCAgABBAsgASoClAMhB0ECIQAgAUG8A2oMAgsgASoClAMhByABQcQDagwBCyABKgKYAyEHAkACQCAEDgIAAQMLQQMhACABQcADagwBC0EBIQAgAUHIA2oLIQUgByAFKgIAkyABQbwDaiIIIABBAnRqKgIAkyIHIAIoAvQDLQAUQQJxDQUaAkAgBA4EAAIDBAELQQMhACABQdADagwECxAkAAtBASEAIAFB2ANqDAILQQIhACABQcwDagwBC0EAIQAgAUHUA2oLIQUgByAFKgIAkyABIABBAnRqKgLMA5MLIAIgBEECdCIFQfwlaigCAEECdGoqApQDIAJBFGoiACAEQQEgBhAiIAAgBEEBIAYQIZKSk0MAAAA/lCAIIAVB3CVqKAIAIgVBAnRqKgIAkiAAIAQgAyAGEEGSIQYgAiAFQQJ0aiACKAL0Ay0AFEECcQR9IAYFIAYgASAFQQJ0aioCzAOSCzgCnAMMBgsgAS8AFUGAgANxQYCAAkcNBAsgASAEQQJ0QewlaigCAEECdGoiACoCvAMgCCAEIAMgBhBikiEGIAIoAvQDLQAUQQJxRQRAIAYgACoCzAOSIQYLAkACQCAEDgQBAQMAAgsgASoClAMgAioClAOTIQdBAiEDDAMLIAEqApgDIAIqApgDkyEHQQEhAwJAIAQOAgMAAQtBAyEDDAILECQACyABKgKUAyACKgKUA5MhB0EAIQMLIAIgA0ECdGogByAGkzgCnAMMAQsgBEECdEHcJWooAgAhACAIIAQgAyAGEEEgASAAQQJ0IgBqIgEqArwDkiEGIAAgAmogAigC9AMtABRBAnEEfSAGBSAGIAEqAswDkgs4ApwDCyAJQRBqJAALcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QewlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQYwmCwdpaQB2AHZpAEGgJgs3ox0AAKEdAADhHQAA2x0AAOEdAADbHQAAaWlpZmlmaQDUHQAApB0AAHZpaQClHQAA6B0AAGlpaQBB4CYLCcQAAADFAAAAxgBB9CYLDsQAAADHAAAAyAAAANQdAEGQJws+ox0AAOEdAADbHQAA4R0AANsdAADoHQAA4x0AAOgdAABpaWlpAAAAANQdAAC5HQAA1B0AALsdAAC8HQAA6B0AQdgnCwnJAAAAygAAAMsAQewnCxbJAAAAzAAAAMgAAAC/HQAA1B0AAL8dAEGQKAuiA9QdAAC/HQAA2x0AANUdAAB2aWlpaQAAANQdAAC/HQAA4R0AAHZpaWYAAAAA1B0AAL8dAADbHQAAdmlpaQAAAADUHQAAvx0AANUdAADVHQAAwB0AANsdAADbHQAAwB0AANUdAADAHQAAaQBkaWkAdmlpZAAAxB0AAMQdAAC/HQAA1B0AAMQdAADUHQAAxB0AAMMdAADUHQAAxB0AANsdAADUHQAAxB0AANsdAADiHQAAdmlpaWQAAADUHQAAxB0AAOIdAADbHQAAxR0AAMIdAADFHQAA2x0AAMIdAADFHQAA4h0AAMUdAADiHQAAxR0AANsdAABkaWlpAAAAAOEdAADEHQAA2x0AAGZpaWkAAAAA1B0AAMQdAADEHQAA3B0AANQdAADEHQAAxB0AANwdAADFHQAAxB0AAMQdAADEHQAAxB0AANwdAADUHQAAxB0AANUdAADVHQAAxB0AANQdAADEHQAAoR0AANQdAADEHQAAuR0AANUdAADFHQAAAAAAANQdAADEHQAA4h0AAOIdAADbHQAAdmlpZGRpAADBHQAAxR0AQcArC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBkSwLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBByywLAQwAQdcsCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQYUtCwEQAEGRLQsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEG/LQsBEgBByy0LHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgi4LDhoAAAAaGhoAAAAAAAAJAEGzLgsBFABBvy4LFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7S4LARYAQfkuCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQcQvCwHSAEHsLwsI//////////8AQbAwCwkQIgEAAAAAAAUAQcQwCwHNAEHcMAsKzgAAAM8AAAD8HQBB9DALAQIAQYQxCwj//////////wBByDELAQUAQdQxCwHQAEHsMQsOzgAAANEAAAAIHgAAAAQAQYQyCwEBAEGUMgsF/////woAQdgyCwHT",!H(V)){var rA=V;V=t.locateFile?t.locateFile(rA,i):i+rA}function K(){var l=V;try{if(l==V&&g)return new Uint8Array(g);if(H(l))try{var c=Hr(l.slice(37)),f=new Uint8Array(c.length);for(l=0;l<c.length;++l)f[l]=c.charCodeAt(l);var d=f}catch{throw Error("Converting base64 string to bytes failed.")}else d=void 0;var y=d;if(y)return y;throw"both async and sync fetching of the wasm failed"}catch(G){sA(G)}}function S(){return g||typeof fetch!="function"?Promise.resolve().then(function(){return K()}):fetch(V,{credentials:"same-origin"}).then(function(l){if(!l.ok)throw"failed to load wasm binary file at '"+V+"'";return l.arrayBuffer()}).catch(function(){return K()})}function _(l){for(;0<l.length;)l.shift()(t)}function j(l){if(l===void 0)return"_unknown";l=l.replace(/[^a-zA-Z0-9_]/g,"$");var c=l.charCodeAt(0);return 48<=c&&57>=c?"_"+l:l}function W(l,c){return l=j(l),function(){return c.apply(this,arguments)}}var nA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],lA=[];function oA(l){var c=Error,f=W(l,function(d){this.name=l,this.message=d,d=Error(d).stack,d!==void 0&&(this.stack=this.toString()+`
|
|
997
|
+
`+d.replace(/^Error(:[^\n]*)?\n/,""))});return f.prototype=Object.create(c.prototype),f.prototype.constructor=f,f.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},f}var aA=void 0;function R(l){throw new aA(l)}var gA=l=>(l||R("Cannot use deleted val. handle = "+l),nA[l].value),AA=l=>{switch(l){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var c=lA.length?lA.pop():nA.length;return nA[c]={ga:1,value:l},c}},IA=void 0,q=void 0;function w(l){for(var c="";h[l];)c+=q[h[l++]];return c}var L=[];function z(){for(;L.length;){var l=L.pop();l.M.$=!1,l.delete()}}var iA=void 0,EA={};function CA(l,c){for(c===void 0&&R("ptr should not be undefined");l.R;)c=l.ba(c),l=l.R;return c}var QA={};function mA(l){l=rn(l);var c=w(l);return YA(l),c}function dA(l,c){var f=QA[l];return f===void 0&&R(c+" has unknown type "+mA(l)),f}function DA(){}var wA=!1;function UA(l){--l.count.value,l.count.value===0&&(l.T?l.U.W(l.T):l.P.N.W(l.O))}function SA(l,c,f){return c===f?l:f.R===void 0?null:(l=SA(l,c,f.R),l===null?null:f.na(l))}var kA={};function ot(l,c){return c=CA(l,c),EA[c]}var RA=void 0;function Se(l){throw new RA(l)}function Re(l,c){return c.P&&c.O||Se("makeClassHandle requires ptr and ptrType"),!!c.U!=!!c.T&&Se("Both smartPtrType and smartPtr must be specified"),c.count={value:1},ee(Object.create(l,{M:{value:c}}))}function ee(l){return typeof FinalizationRegistry>"u"?(ee=c=>c,l):(wA=new FinalizationRegistry(c=>{UA(c.M)}),ee=c=>{var f=c.M;return f.T&&wA.register(c,{M:f},c),c},DA=c=>{wA.unregister(c)},ee(l))}var Le={};function at(l){for(;l.length;){var c=l.pop();l.pop()(c)}}function Be(l){return this.fromWireType(D[l>>2])}var te={},ke={};function XA(l,c,f){function d(J){J=f(J),J.length!==l.length&&Se("Mismatched type converter count");for(var eA=0;eA<l.length;++eA)TA(l[eA],J[eA])}l.forEach(function(J){ke[J]=c});var y=Array(c.length),G=[],P=0;c.forEach((J,eA)=>{QA.hasOwnProperty(J)?y[eA]=QA[J]:(G.push(J),te.hasOwnProperty(J)||(te[J]=[]),te[J].push(()=>{y[eA]=QA[J],++P,P===G.length&&d(y)}))}),G.length===0&&d(y)}function st(l){switch(l){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+l)}}function TA(l,c,f={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=c.name;if(l||R('type "'+d+'" must have a positive integer typeid pointer'),QA.hasOwnProperty(l)){if(f.ua)return;R("Cannot register type '"+d+"' twice")}QA[l]=c,delete ke[l],te.hasOwnProperty(l)&&(c=te[l],delete te[l],c.forEach(y=>y()))}function gt(l){R(l.M.P.N.name+" instance already deleted")}function zA(){}function It(l,c,f){if(l[c].S===void 0){var d=l[c];l[c]=function(){return l[c].S.hasOwnProperty(arguments.length)||R("Function '"+f+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+l[c].S+")!"),l[c].S[arguments.length].apply(this,arguments)},l[c].S=[],l[c].S[d.Z]=d}}function dr(l,c){t.hasOwnProperty(l)?(R("Cannot register public name '"+l+"' twice"),It(t,l,l),t.hasOwnProperty(void 0)&&R("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),t[l].S[void 0]=c):t[l]=c}function hr(l,c,f,d,y,G,P,J){this.name=l,this.constructor=c,this.X=f,this.W=d,this.R=y,this.pa=G,this.ba=P,this.na=J,this.ja=[]}function Bt(l,c,f){for(;c!==f;)c.ba||R("Expected null or instance of "+f.name+", got an instance of "+c.name),l=c.ba(l),c=c.R;return l}function mr(l,c){return c===null?(this.ea&&R("null is not a valid "+this.name),0):(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),Bt(c.M.O,c.M.P.N,this.N))}function pr(l,c){if(c===null){if(this.ea&&R("null is not a valid "+this.name),this.da){var f=this.fa();return l!==null&&l.push(this.W,f),f}return 0}if(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&c.M.P.ca&&R("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name),f=Bt(c.M.O,c.M.P.N,this.N),this.da)switch(c.M.T===void 0&&R("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:c.M.U===this?f=c.M.T:R("Cannot convert argument of type "+(c.M.U?c.M.U.name:c.M.P.name)+" to parameter type "+this.name);break;case 1:f=c.M.T;break;case 2:if(c.M.U===this)f=c.M.T;else{var d=c.clone();f=this.xa(f,AA(function(){d.delete()})),l!==null&&l.push(this.W,f)}break;default:R("Unsupporting sharing policy")}return f}function yr(l,c){return c===null?(this.ea&&R("null is not a valid "+this.name),0):(c.M||R('Cannot pass "'+Et(c)+'" as a '+this.name),c.M.O||R("Cannot pass deleted object as a pointer of type "+this.name),c.M.P.ca&&R("Cannot convert argument of type "+c.M.P.name+" to parameter type "+this.name),Bt(c.M.O,c.M.P.N,this.N))}function KA(l,c,f,d){this.name=l,this.N=c,this.ea=f,this.ca=d,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,c.R!==void 0?this.toWireType=pr:(this.toWireType=d?mr:yr,this.V=null)}function Dr(l,c){t.hasOwnProperty(l)||Se("Replacing nonexistant public symbol"),t[l]=c,t[l].Z=void 0}function wr(l,c){var f=[];return function(){if(f.length=0,Object.assign(f,arguments),l.includes("j")){var d=t["dynCall_"+l];d=f&&f.length?d.apply(null,[c].concat(f)):d.call(null,c)}else d=N.get(c).apply(null,f);return d}}function vA(l,c){l=w(l);var f=l.includes("j")?wr(l,c):N.get(c);return typeof f!="function"&&R("unknown function pointer with signature "+l+": "+c),f}var An=void 0;function ve(l,c){function f(G){y[G]||QA[G]||(ke[G]?ke[G].forEach(f):(d.push(G),y[G]=!0))}var d=[],y={};throw c.forEach(f),new An(l+": "+d.map(mA).join([", "]))}function lt(l,c,f,d,y){var G=c.length;2>G&&R("argTypes array size mismatch! Must at least get return value and 'this' types!");var P=c[1]!==null&&f!==null,J=!1;for(f=1;f<c.length;++f)if(c[f]!==null&&c[f].V===void 0){J=!0;break}var eA=c[0].name!=="void",Z=G-2,BA=Array(Z),uA=[],hA=[];return function(){if(arguments.length!==Z&&R("function "+l+" called with "+arguments.length+" arguments, expected "+Z+" args!"),hA.length=0,uA.length=P?2:1,uA[0]=y,P){var MA=c[1].toWireType(hA,this);uA[1]=MA}for(var yA=0;yA<Z;++yA)BA[yA]=c[yA+2].toWireType(hA,arguments[yA]),uA.push(BA[yA]);if(yA=d.apply(null,uA),J)at(hA);else for(var FA=P?1:2;FA<c.length;FA++){var HA=FA===1?MA:BA[FA-2];c[FA].V!==null&&c[FA].V(HA)}return MA=eA?c[0].fromWireType(yA):void 0,MA}}function ct(l,c){for(var f=[],d=0;d<l;d++)f.push(U[c+4*d>>2]);return f}function ut(l){4<l&&--nA[l].ga===0&&(nA[l]=void 0,lA.push(l))}function Et(l){if(l===null)return"null";var c=typeof l;return c==="object"||c==="array"||c==="function"?l.toString():""+l}function br(l,c){switch(c){case 2:return function(f){return this.fromWireType(M[f>>2])};case 3:return function(f){return this.fromWireType(b[f>>3])};default:throw new TypeError("Unknown float type: "+l)}}function Mr(l,c,f){switch(c){case 0:return f?function(d){return C[d]}:function(d){return h[d]};case 1:return f?function(d){return m[d>>1]}:function(d){return p[d>>1]};case 2:return f?function(d){return D[d>>2]}:function(d){return U[d>>2]};default:throw new TypeError("Unknown integer type: "+l)}}function xr(l,c){for(var f="",d=0;!(d>=c/2);++d){var y=m[l+2*d>>1];if(y==0)break;f+=String.fromCharCode(y)}return f}function Fr(l,c,f){if(f===void 0&&(f=2147483647),2>f)return 0;f-=2;var d=c;f=f<2*l.length?f/2:l.length;for(var y=0;y<f;++y)m[c>>1]=l.charCodeAt(y),c+=2;return m[c>>1]=0,c-d}function Nr(l){return 2*l.length}function Gr(l,c){for(var f=0,d="";!(f>=c/4);){var y=D[l+4*f>>2];if(y==0)break;++f,65536<=y?(y-=65536,d+=String.fromCharCode(55296|y>>10,56320|y&1023)):d+=String.fromCharCode(y)}return d}function Ur(l,c,f){if(f===void 0&&(f=2147483647),4>f)return 0;var d=c;f=d+f-4;for(var y=0;y<l.length;++y){var G=l.charCodeAt(y);if(55296<=G&&57343>=G){var P=l.charCodeAt(++y);G=65536+((G&1023)<<10)|P&1023}if(D[c>>2]=G,c+=4,c+4>f)break}return D[c>>2]=0,c-d}function Sr(l){for(var c=0,f=0;f<l.length;++f){var d=l.charCodeAt(f);55296<=d&&57343>=d&&++f,c+=4}return c}var Rr={};function en(l){var c=Rr[l];return c===void 0?w(l):c}var He=[];function Lr(l){var c=He.length;return He.push(l),c}function kr(l,c){for(var f=Array(l),d=0;d<l;++d)f[d]=dA(U[c+4*d>>2],"parameter "+d);return f}var tn=[],vr=[null,[],[]];aA=t.BindingError=oA("BindingError"),t.count_emval_handles=function(){for(var l=0,c=5;c<nA.length;++c)nA[c]!==void 0&&++l;return l},t.get_first_emval=function(){for(var l=5;l<nA.length;++l)if(nA[l]!==void 0)return nA[l];return null},IA=t.PureVirtualError=oA("PureVirtualError");for(var nn=Array(256),Pe=0;256>Pe;++Pe)nn[Pe]=String.fromCharCode(Pe);q=nn,t.getInheritedInstanceCount=function(){return Object.keys(EA).length},t.getLiveInheritedInstances=function(){var l=[],c;for(c in EA)EA.hasOwnProperty(c)&&l.push(EA[c]);return l},t.flushPendingDeletes=z,t.setDelayFunction=function(l){iA=l,L.length&&iA&&iA(z)},RA=t.InternalError=oA("InternalError"),zA.prototype.isAliasOf=function(l){if(!(this instanceof zA&&l instanceof zA))return!1;var c=this.M.P.N,f=this.M.O,d=l.M.P.N;for(l=l.M.O;c.R;)f=c.ba(f),c=c.R;for(;d.R;)l=d.ba(l),d=d.R;return c===d&&f===l},zA.prototype.clone=function(){if(this.M.O||gt(this),this.M.aa)return this.M.count.value+=1,this;var l=ee,c=Object,f=c.create,d=Object.getPrototypeOf(this),y=this.M;return l=l(f.call(c,d,{M:{value:{count:y.count,$:y.$,aa:y.aa,O:y.O,P:y.P,T:y.T,U:y.U}}})),l.M.count.value+=1,l.M.$=!1,l},zA.prototype.delete=function(){this.M.O||gt(this),this.M.$&&!this.M.aa&&R("Object already scheduled for deletion"),DA(this),UA(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},zA.prototype.isDeleted=function(){return!this.M.O},zA.prototype.deleteLater=function(){return this.M.O||gt(this),this.M.$&&!this.M.aa&&R("Object already scheduled for deletion"),L.push(this),L.length===1&&iA&&iA(z),this.M.$=!0,this},KA.prototype.qa=function(l){return this.ka&&(l=this.ka(l)),l},KA.prototype.ha=function(l){this.W&&this.W(l)},KA.prototype.argPackAdvance=8,KA.prototype.readValueFromPointer=Be,KA.prototype.deleteObject=function(l){l!==null&&l.delete()},KA.prototype.fromWireType=function(l){function c(){return this.da?Re(this.N.X,{P:this.wa,O:f,U:this,T:l}):Re(this.N.X,{P:this,O:l})}var f=this.qa(l);if(!f)return this.ha(l),null;var d=ot(this.N,f);if(d!==void 0)return d.M.count.value===0?(d.M.O=f,d.M.T=l,d.clone()):(d=d.clone(),this.ha(l),d);if(d=this.N.pa(f),d=kA[d],!d)return c.call(this);d=this.ca?d.la:d.pointerType;var y=SA(f,this.N,d.N);return y===null?c.call(this):this.da?Re(d.N.X,{P:d,O:y,U:this,T:l}):Re(d.N.X,{P:d,O:y})},An=t.UnboundTypeError=oA("UnboundTypeError");var Hr=typeof atob=="function"?atob:function(l){var c="",f=0;l=l.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++)),P="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(l.charAt(f++));d=d<<2|y>>4,y=(y&15)<<4|G>>2;var J=(G&3)<<6|P;c+=String.fromCharCode(d),G!==64&&(c+=String.fromCharCode(y)),P!==64&&(c+=String.fromCharCode(J))}while(f<l.length);return c},Pr={l:function(l,c,f,d){sA("Assertion failed: "+(l?E(h,l):"")+", at: "+[c?c?E(h,c):"":"unknown filename",f,d?d?E(h,d):"":"unknown function"])},q:function(l,c,f){l=w(l),c=dA(c,"wrapper"),f=gA(f);var d=[].slice,y=c.N,G=y.X,P=y.R.X,J=y.R.constructor;l=W(l,function(){y.R.ja.forEach(function(Z){if(this[Z]===P[Z])throw new IA("Pure virtual function "+Z+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:G}),this.__construct.apply(this,d.call(arguments))}),G.__construct=function(){this===G&&R("Pass correct 'this' to __construct");var Z=J.implement.apply(void 0,[this].concat(d.call(arguments)));DA(Z);var BA=Z.M;Z.notifyOnDestruction(),BA.aa=!0,Object.defineProperties(this,{M:{value:BA}}),ee(this),Z=BA.O,Z=CA(y,Z),EA.hasOwnProperty(Z)?R("Tried to register registered instance: "+Z):EA[Z]=this},G.__destruct=function(){this===G&&R("Pass correct 'this' to __destruct"),DA(this);var Z=this.M.O;Z=CA(y,Z),EA.hasOwnProperty(Z)?delete EA[Z]:R("Tried to unregister unregistered instance: "+Z)},l.prototype=Object.create(G);for(var eA in f)l.prototype[eA]=f[eA];return AA(l)},j:function(l){var c=Le[l];delete Le[l];var f=c.fa,d=c.W,y=c.ia,G=y.map(P=>P.ta).concat(y.map(P=>P.za));XA([l],G,P=>{var J={};return y.forEach((eA,Z)=>{var BA=P[Z],uA=eA.ra,hA=eA.sa,MA=P[Z+y.length],yA=eA.ya,FA=eA.Aa;J[eA.oa]={read:HA=>BA.fromWireType(uA(hA,HA)),write:(HA,le)=>{var OA=[];yA(FA,HA,MA.toWireType(OA,le)),at(OA)}}}),[{name:c.name,fromWireType:function(eA){var Z={},BA;for(BA in J)Z[BA]=J[BA].read(eA);return d(eA),Z},toWireType:function(eA,Z){for(var BA in J)if(!(BA in Z))throw new TypeError('Missing field: "'+BA+'"');var uA=f();for(BA in J)J[BA].write(uA,Z[BA]);return eA!==null&&eA.push(d,uA),uA},argPackAdvance:8,readValueFromPointer:Be,V:d}]})},v:function(){},B:function(l,c,f,d,y){var G=st(f);c=w(c),TA(l,{name:c,fromWireType:function(P){return!!P},toWireType:function(P,J){return J?d:y},argPackAdvance:8,readValueFromPointer:function(P){if(f===1)var J=C;else if(f===2)J=m;else if(f===4)J=D;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(J[P>>G])},V:null})},f:function(l,c,f,d,y,G,P,J,eA,Z,BA,uA,hA){BA=w(BA),G=vA(y,G),J&&(J=vA(P,J)),Z&&(Z=vA(eA,Z)),hA=vA(uA,hA);var MA=j(BA);dr(MA,function(){ve("Cannot construct "+BA+" due to unbound types",[d])}),XA([l,c,f],d?[d]:[],function(yA){if(yA=yA[0],d)var FA=yA.N,HA=FA.X;else HA=zA.prototype;yA=W(MA,function(){if(Object.getPrototypeOf(this)!==le)throw new aA("Use 'new' to construct "+BA);if(OA.Y===void 0)throw new aA(BA+" has no accessible constructor");var sn=OA.Y[arguments.length];if(sn===void 0)throw new aA("Tried to invoke ctor of "+BA+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(OA.Y).toString()+") parameters instead!");return sn.apply(this,arguments)});var le=Object.create(HA,{constructor:{value:yA}});yA.prototype=le;var OA=new hr(BA,yA,le,hA,FA,G,J,Z);FA=new KA(BA,OA,!0,!1),HA=new KA(BA+"*",OA,!1,!1);var an=new KA(BA+" const*",OA,!1,!0);return kA[l]={pointerType:HA,la:an},Dr(MA,yA),[FA,HA,an]})},d:function(l,c,f,d,y,G,P){var J=ct(f,d);c=w(c),G=vA(y,G),XA([],[l],function(eA){function Z(){ve("Cannot call "+BA+" due to unbound types",J)}eA=eA[0];var BA=eA.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]);var uA=eA.N.constructor;return uA[c]===void 0?(Z.Z=f-1,uA[c]=Z):(It(uA,c,BA),uA[c].S[f-1]=Z),XA([],J,function(hA){return hA=lt(BA,[hA[0],null].concat(hA.slice(1)),null,G,P),uA[c].S===void 0?(hA.Z=f-1,uA[c]=hA):uA[c].S[f-1]=hA,[]}),[]})},p:function(l,c,f,d,y,G){0<c||sA();var P=ct(c,f);y=vA(d,y),XA([],[l],function(J){J=J[0];var eA="constructor "+J.name;if(J.N.Y===void 0&&(J.N.Y=[]),J.N.Y[c-1]!==void 0)throw new aA("Cannot register multiple constructors with identical number of parameters ("+(c-1)+") for class '"+J.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return J.N.Y[c-1]=()=>{ve("Cannot construct "+J.name+" due to unbound types",P)},XA([],P,function(Z){return Z.splice(1,0,null),J.N.Y[c-1]=lt(eA,Z,null,y,G),[]}),[]})},a:function(l,c,f,d,y,G,P,J){var eA=ct(f,d);c=w(c),G=vA(y,G),XA([],[l],function(Z){function BA(){ve("Cannot call "+uA+" due to unbound types",eA)}Z=Z[0];var uA=Z.name+"."+c;c.startsWith("@@")&&(c=Symbol[c.substring(2)]),J&&Z.N.ja.push(c);var hA=Z.N.X,MA=hA[c];return MA===void 0||MA.S===void 0&&MA.className!==Z.name&&MA.Z===f-2?(BA.Z=f-2,BA.className=Z.name,hA[c]=BA):(It(hA,c,uA),hA[c].S[f-2]=BA),XA([],eA,function(yA){return yA=lt(uA,yA,Z,G,P),hA[c].S===void 0?(yA.Z=f-2,hA[c]=yA):hA[c].S[f-2]=yA,[]}),[]})},A:function(l,c){c=w(c),TA(l,{name:c,fromWireType:function(f){var d=gA(f);return ut(f),d},toWireType:function(f,d){return AA(d)},argPackAdvance:8,readValueFromPointer:Be,V:null})},n:function(l,c,f){f=st(f),c=w(c),TA(l,{name:c,fromWireType:function(d){return d},toWireType:function(d,y){return y},argPackAdvance:8,readValueFromPointer:br(c,f),V:null})},e:function(l,c,f,d,y){c=w(c),y===-1&&(y=4294967295),y=st(f);var G=J=>J;if(d===0){var P=32-8*f;G=J=>J<<P>>>P}f=c.includes("unsigned")?function(J,eA){return eA>>>0}:function(J,eA){return eA},TA(l,{name:c,fromWireType:G,toWireType:f,argPackAdvance:8,readValueFromPointer:Mr(c,y,d!==0),V:null})},b:function(l,c,f){function d(G){G>>=2;var P=U;return new y(Q,P[G+1],P[G])}var y=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][c];f=w(f),TA(l,{name:f,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0})},o:function(l,c){c=w(c);var f=c==="std::string";TA(l,{name:c,fromWireType:function(d){var y=U[d>>2],G=d+4;if(f)for(var P=G,J=0;J<=y;++J){var eA=G+J;if(J==y||h[eA]==0){if(P=P?E(h,P,eA-P):"",Z===void 0)var Z=P;else Z+="\0",Z+=P;P=eA+1}}else{for(Z=Array(y),J=0;J<y;++J)Z[J]=String.fromCharCode(h[G+J]);Z=Z.join("")}return YA(d),Z},toWireType:function(d,y){y instanceof ArrayBuffer&&(y=new Uint8Array(y));var G,P=typeof y=="string";if(P||y instanceof Uint8Array||y instanceof Uint8ClampedArray||y instanceof Int8Array||R("Cannot pass non-string to std::string"),f&&P){var J=0;for(G=0;G<y.length;++G){var eA=y.charCodeAt(G);127>=eA?J++:2047>=eA?J+=2:55296<=eA&&57343>=eA?(J+=4,++G):J+=3}G=J}else G=y.length;if(J=Qt(4+G+1),eA=J+4,U[J>>2]=G,f&&P){if(P=eA,eA=G+1,G=h,0<eA){eA=P+eA-1;for(var Z=0;Z<y.length;++Z){var BA=y.charCodeAt(Z);if(55296<=BA&&57343>=BA){var uA=y.charCodeAt(++Z);BA=65536+((BA&1023)<<10)|uA&1023}if(127>=BA){if(P>=eA)break;G[P++]=BA}else{if(2047>=BA){if(P+1>=eA)break;G[P++]=192|BA>>6}else{if(65535>=BA){if(P+2>=eA)break;G[P++]=224|BA>>12}else{if(P+3>=eA)break;G[P++]=240|BA>>18,G[P++]=128|BA>>12&63}G[P++]=128|BA>>6&63}G[P++]=128|BA&63}}G[P]=0}}else if(P)for(P=0;P<G;++P)Z=y.charCodeAt(P),255<Z&&(YA(eA),R("String has UTF-16 code units that do not fit in 8 bits")),h[eA+P]=Z;else for(P=0;P<G;++P)h[eA+P]=y[P];return d!==null&&d.push(YA,J),J},argPackAdvance:8,readValueFromPointer:Be,V:function(d){YA(d)}})},i:function(l,c,f){if(f=w(f),c===2)var d=xr,y=Fr,G=Nr,P=()=>p,J=1;else c===4&&(d=Gr,y=Ur,G=Sr,P=()=>U,J=2);TA(l,{name:f,fromWireType:function(eA){for(var Z=U[eA>>2],BA=P(),uA,hA=eA+4,MA=0;MA<=Z;++MA){var yA=eA+4+MA*c;(MA==Z||BA[yA>>J]==0)&&(hA=d(hA,yA-hA),uA===void 0?uA=hA:(uA+="\0",uA+=hA),hA=yA+c)}return YA(eA),uA},toWireType:function(eA,Z){typeof Z!="string"&&R("Cannot pass non-string to C++ string type "+f);var BA=G(Z),uA=Qt(4+BA+c);return U[uA>>2]=BA>>J,y(Z,uA+4,BA+c),eA!==null&&eA.push(YA,uA),uA},argPackAdvance:8,readValueFromPointer:Be,V:function(eA){YA(eA)}})},k:function(l,c,f,d,y,G){Le[l]={name:w(c),fa:vA(f,d),W:vA(y,G),ia:[]}},h:function(l,c,f,d,y,G,P,J,eA,Z){Le[l].ia.push({oa:w(c),ta:f,ra:vA(d,y),sa:G,za:P,ya:vA(J,eA),Aa:Z})},C:function(l,c){c=w(c),TA(l,{va:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(l,c,f,d,y){l=He[l],c=gA(c),f=en(f);var G=[];return U[d>>2]=AA(G),l(c,f,G,y)},t:function(l,c,f,d){l=He[l],c=gA(c),f=en(f),l(c,f,null,d)},g:ut,m:function(l,c){var f=kr(l,c),d=f[0];c=d.name+"_$"+f.slice(1).map(function(P){return P.name}).join("_")+"$";var y=tn[c];if(y!==void 0)return y;var G=Array(l-1);return y=Lr((P,J,eA,Z)=>{for(var BA=0,uA=0;uA<l-1;++uA)G[uA]=f[uA+1].readValueFromPointer(Z+BA),BA+=f[uA+1].argPackAdvance;for(P=P[J].apply(P,G),uA=0;uA<l-1;++uA)f[uA+1].ma&&f[uA+1].ma(G[uA]);if(!d.va)return d.toWireType(eA,P)}),tn[c]=y},D:function(l){4<l&&(nA[l].ga+=1)},r:function(l){var c=gA(l);at(c),ut(l)},c:function(){sA("")},x:function(l,c,f){h.copyWithin(l,c,c+f)},w:function(l){var c=h.length;if(l>>>=0,2147483648<l)return!1;for(var f=1;4>=f;f*=2){var d=c*(1+.2/f);d=Math.min(d,l+100663296);var y=Math;d=Math.max(l,d),y=y.min.call(y,2147483648,d+(65536-d%65536)%65536);A:{try{B.grow(y-Q.byteLength+65535>>>16),x();var G=1;break A}catch{}G=void 0}if(G)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(l,c,f,d){for(var y=0,G=0;G<f;G++){var P=U[c>>2],J=U[c+4>>2];c+=8;for(var eA=0;eA<J;eA++){var Z=h[P+eA],BA=vr[l];Z===0||Z===10?((l===1?a:s)(E(BA,0)),BA.length=0):BA.push(Z)}y+=J}return U[d>>2]=y,0}};(function(){function l(y){t.asm=y.exports,B=t.asm.E,x(),N=t.asm.J,Y.unshift(t.asm.F),tA--,t.monitorRunDependencies&&t.monitorRunDependencies(tA),tA==0&&(X!==null&&(clearInterval(X),X=null),F&&(y=F,F=null,y()))}function c(y){l(y.instance)}function f(y){return S().then(function(G){return WebAssembly.instantiate(G,d)}).then(function(G){return G}).then(y,function(G){s("failed to asynchronously prepare wasm: "+G),sA(G)})}var d={a:Pr};if(tA++,t.monitorRunDependencies&&t.monitorRunDependencies(tA),t.instantiateWasm)try{return t.instantiateWasm(d,l)}catch(y){s("Module.instantiateWasm callback failed with error: "+y),r(y)}return(function(){return g||typeof WebAssembly.instantiateStreaming!="function"||H(V)||typeof fetch!="function"?f(c):fetch(V,{credentials:"same-origin"}).then(function(y){return WebAssembly.instantiateStreaming(y,d).then(c,function(G){return s("wasm streaming compile failed: "+G),s("falling back to ArrayBuffer instantiation"),f(c)})})})().catch(r),{}})(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.F).apply(null,arguments)};var rn=t.___getTypeName=function(){return(rn=t.___getTypeName=t.asm.G).apply(null,arguments)};t.__embind_initialize_bindings=function(){return(t.__embind_initialize_bindings=t.asm.H).apply(null,arguments)};var Qt=t._malloc=function(){return(Qt=t._malloc=t.asm.I).apply(null,arguments)},YA=t._free=function(){return(YA=t._free=t.asm.K).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.L).apply(null,arguments)};var Je;F=function l(){Je||on(),Je||(F=l)};function on(){function l(){if(!Je&&(Je=!0,t.calledRun=!0,!u)){if(_(Y),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var c=t.postRun.shift();O.unshift(c)}_(O)}}if(!(0<tA)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)v();_(T),0<tA||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),l()},1)):l())}}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();return on(),e.ready})})(),rr=$i;$();$();var VA=(function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A})({}),ir=(function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A})({}),or=(function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A})({}),Ne=(function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A})({}),Kt=(function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A})({}),WA=(function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A})({}),se=(function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A})({}),Ao=(function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A})({}),rt=(function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A})({}),Yt=(function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A})({}),ge=(function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A})({}),Ie=(function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A})({}),Ot=(function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A})({}),ar=(function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A})({}),Vt=(function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A})({}),Wt=(function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A})({}),PA=(function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A})({}),Xt=(function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A})({}),eo={ALIGN_AUTO:VA.Auto,ALIGN_FLEX_START:VA.FlexStart,ALIGN_CENTER:VA.Center,ALIGN_FLEX_END:VA.FlexEnd,ALIGN_STRETCH:VA.Stretch,ALIGN_BASELINE:VA.Baseline,ALIGN_SPACE_BETWEEN:VA.SpaceBetween,ALIGN_SPACE_AROUND:VA.SpaceAround,ALIGN_SPACE_EVENLY:VA.SpaceEvenly,BOX_SIZING_BORDER_BOX:ir.BorderBox,BOX_SIZING_CONTENT_BOX:ir.ContentBox,DIMENSION_WIDTH:or.Width,DIMENSION_HEIGHT:or.Height,DIRECTION_INHERIT:Ne.Inherit,DIRECTION_LTR:Ne.LTR,DIRECTION_RTL:Ne.RTL,DISPLAY_FLEX:Kt.Flex,DISPLAY_NONE:Kt.None,DISPLAY_CONTENTS:Kt.Contents,EDGE_LEFT:WA.Left,EDGE_TOP:WA.Top,EDGE_RIGHT:WA.Right,EDGE_BOTTOM:WA.Bottom,EDGE_START:WA.Start,EDGE_END:WA.End,EDGE_HORIZONTAL:WA.Horizontal,EDGE_VERTICAL:WA.Vertical,EDGE_ALL:WA.All,ERRATA_NONE:se.None,ERRATA_STRETCH_FLEX_BASIS:se.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:se.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:se.AbsolutePercentAgainstInnerSize,ERRATA_ALL:se.All,ERRATA_CLASSIC:se.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Ao.WebFlexBasis,FLEX_DIRECTION_COLUMN:rt.Column,FLEX_DIRECTION_COLUMN_REVERSE:rt.ColumnReverse,FLEX_DIRECTION_ROW:rt.Row,FLEX_DIRECTION_ROW_REVERSE:rt.RowReverse,GUTTER_COLUMN:Yt.Column,GUTTER_ROW:Yt.Row,GUTTER_ALL:Yt.All,JUSTIFY_FLEX_START:ge.FlexStart,JUSTIFY_CENTER:ge.Center,JUSTIFY_FLEX_END:ge.FlexEnd,JUSTIFY_SPACE_BETWEEN:ge.SpaceBetween,JUSTIFY_SPACE_AROUND:ge.SpaceAround,JUSTIFY_SPACE_EVENLY:ge.SpaceEvenly,LOG_LEVEL_ERROR:Ie.Error,LOG_LEVEL_WARN:Ie.Warn,LOG_LEVEL_INFO:Ie.Info,LOG_LEVEL_DEBUG:Ie.Debug,LOG_LEVEL_VERBOSE:Ie.Verbose,LOG_LEVEL_FATAL:Ie.Fatal,MEASURE_MODE_UNDEFINED:Ot.Undefined,MEASURE_MODE_EXACTLY:Ot.Exactly,MEASURE_MODE_AT_MOST:Ot.AtMost,NODE_TYPE_DEFAULT:ar.Default,NODE_TYPE_TEXT:ar.Text,OVERFLOW_VISIBLE:Vt.Visible,OVERFLOW_HIDDEN:Vt.Hidden,OVERFLOW_SCROLL:Vt.Scroll,POSITION_TYPE_STATIC:Wt.Static,POSITION_TYPE_RELATIVE:Wt.Relative,POSITION_TYPE_ABSOLUTE:Wt.Absolute,UNIT_UNDEFINED:PA.Undefined,UNIT_POINT:PA.Point,UNIT_PERCENT:PA.Percent,UNIT_AUTO:PA.Auto,WRAP_NO_WRAP:Xt.NoWrap,WRAP_WRAP:Xt.Wrap,WRAP_WRAP_REVERSE:Xt.WrapReverse},sr=eo;function zt(A){function e(r,o,i){let a=r[o];r[o]=function(){for(var s=arguments.length,g=new Array(s),I=0;I<s;I++)g[I]=arguments[I];return i.call(this,a,...g)}}for(let r of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let o={[PA.Point]:A.Node.prototype[r],[PA.Percent]:A.Node.prototype[`${r}Percent`],[PA.Auto]:A.Node.prototype[`${r}Auto`]};e(A.Node.prototype,r,function(i){for(var a=arguments.length,s=new Array(a>1?a-1:0),g=1;g<a;g++)s[g-1]=arguments[g];let I=s.pop(),B,u;if(I==="auto")B=PA.Auto,u=void 0;else if(typeof I=="object")B=I.unit,u=I.valueOf();else if(B=typeof I=="string"&&I.endsWith("%")?PA.Percent:PA.Point,u=parseFloat(I),I!==void 0&&!Number.isNaN(I)&&Number.isNaN(u))throw new Error(`Invalid value ${I} for ${r}`);if(!o[B])throw new Error(`Failed to execute "${r}": Unsupported unit '${I}'`);return u!==void 0?o[B].call(this,...s,u):o[B].call(this,...s)})}function t(r){return A.MeasureCallback.implement({measure:function(){let{width:o,height:i}=r(...arguments);return{width:o??NaN,height:i??NaN}}})}e(A.Node.prototype,"setMeasureFunc",function(r,o){return o?r.call(this,t(o)):this.unsetMeasureFunc()});function n(r){return A.DirtiedCallback.implement({dirtied:r})}return e(A.Node.prototype,"setDirtiedFunc",function(r,o){r.call(this,n(o))}),e(A.Config.prototype,"free",function(){A.Config.destroy(this)}),e(A.Node,"create",(r,o)=>o?A.Node.createWithConfig(o):A.Node.createDefault()),e(A.Node.prototype,"free",function(){A.Node.destroy(this)}),e(A.Node.prototype,"freeRecursive",function(){for(let r=0,o=this.getChildCount();r<o;++r)this.getChild(0).freeRecursive();this.free()}),e(A.Node.prototype,"calculateLayout",function(r){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ne.LTR;return r.call(this,o,i,a)}),{Config:A.Config,Node:A.Node,...sr}}async function gr(){return zt(await rr())}var it=null;async function to(){return it||(it=await gr(),it)}function no(A,e){switch(e){case"center":return A.JUSTIFY_CENTER;case"end":return A.JUSTIFY_FLEX_END;case"space-between":return A.JUSTIFY_SPACE_BETWEEN;case"space-around":return A.JUSTIFY_SPACE_AROUND;default:return A.JUSTIFY_FLEX_START}}function ro(A,e){switch(e){case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;default:return A.ALIGN_FLEX_START}}function io(A,e){switch(e){case"start":return A.ALIGN_FLEX_START;case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;case"baseline":return A.ALIGN_BASELINE;default:return A.ALIGN_AUTO}}function Ae(A){if(A!=null){if(typeof A=="number"||typeof A=="string")return A;if(typeof A=="object"){if("unit"in A&&typeof A.unit=="number")return A;let e=Number(A);if(!Number.isNaN(e))return e}}}function oo(A){switch(A.kind){case"flex":return A.dir??"row";case"block":return"column";case"box":return A.children&&A.children.length>0?"column":null;default:return null}}function ao(A){if(A.kind==="block")return"fill"}function so(A){let e=0;if(A.kind==="flex"||A.kind==="block"){let i=Ae(A.gap);e=typeof i=="number"?i:0}let t=0;if(A.kind==="flex"||A.kind==="block"||A.kind==="box"||A.kind==="text"){let i=Ae(A.padding);t=typeof i=="number"?i:0}let n="start";A.kind==="flex"&&(n=A.justify??"start");let r="start";(A.kind==="flex"||A.kind==="block")&&(r=A.align??"start");let o=!1;return A.kind==="flex"&&(o=typeof A.wrap=="boolean"?A.wrap:!1),{gap:e,padding:t,justify:n,align:r,wrap:o}}function Ge(A){let e=A;return e.position==="absolute"||e.position===void 0&&(e.x!==void 0||e.y!==void 0)}function go(A){return"children"in A&&A.children?A.children.filter(e=>!Ge(e)):[]}function Io(A){return"children"in A&&A.children?A.children.filter(e=>Ge(e)):[]}function Br(A,e,t,n,r){let o=e,i=A.Node.create(),a=oo(o),s=a!==null,g=[];if(Ge(o)){i.setPositionType(A.POSITION_TYPE_ABSOLUTE);let m=Ae(o.x),p=Ae(o.y);m!==void 0&&i.setPosition(A.EDGE_LEFT,m),p!==void 0&&i.setPosition(A.EDGE_TOP,p)}else i.setPositionType(A.POSITION_TYPE_RELATIVE);let B=Ae(o.grow);B!==void 0&&i.setFlexGrow(typeof B=="number"?B:parseFloat(B));let u=Ae(o.flexShrink);u!==void 0?i.setFlexShrink(typeof u=="number"?u:parseFloat(u)):i.setFlexShrink(r!==null?1:0),o.flexBasis!==void 0&&i.setFlexBasis(o.flexBasis),o.alignSelf!==void 0&&i.setAlignSelf(io(A,o.alignSelf));let E=o.width??ao(o),Q=o.height,C=r==="row",h=r==="column";if(Ir(i,"width",E,t?.width,C),Ir(i,"height",Q,t?.height,h),s){let m=so(o);i.setFlexDirection(a==="row"?A.FLEX_DIRECTION_ROW:A.FLEX_DIRECTION_COLUMN),i.setJustifyContent(no(A,m.justify)),i.setAlignItems(ro(A,m.align)),i.setFlexWrap(m.wrap?A.WRAP_WRAP:A.WRAP_NO_WRAP),m.padding>0&&i.setPadding(A.EDGE_ALL,m.padding),m.gap>0&&i.setGap(A.GUTTER_ALL,m.gap);let p=go(o),D=Io(o),U=[...p,...D];for(let M=0;M<U.length;M++){let b=Br(A,U[M],void 0,n,Ge(o)?null:a);i.insertChild(b.yogaNode,M),g.push(b)}}else if(o.kind==="text"||o.kind==="media"&&o.dataType==="Caption")i.setMeasureFunc((m,p,D,U)=>{let M;(p===1||p===2)&&(M=m);let b=n?.(o,M)??{width:0,height:0},x=b.width,N=b.height;return p===1&&(x=m),U===1&&(N=D),{width:x,height:N}});else{let m=n?.(o)??null;if(m){let p=o.aspectRatio!==void 0,D=o.dataType==="Caption",U=m.height>0?m.width/m.height:1;o.kind==="media"&&!D&&!p&&i.setAspectRatio(U);let M=E===void 0||E==="auto"||E==="fit",b=Q===void 0||Q==="auto"||Q==="fit";if(M&&b){let x=o.aspectRatio??(o.kind==="media"?U:void 0)??1;i.setMeasureFunc((N,T,Y,O)=>{let v=m.width,tA=m.height;if(T===1&&O===1)v=N,tA=Y;else if(T===1)v=N,tA=x>0?Math.round(N/x):m.height;else if(O===1)tA=Y,v=x>0?Math.round(Y*x):m.width;else if(T===2&&O===2){let X=Math.min(1,N/m.width,Y/m.height);v=Math.round(m.width*X),tA=Math.round(m.height*X)}else T===2?m.width>N&&(v=N,tA=x>0?Math.round(N/x):m.height):O===2&&m.height>Y&&(tA=Y,v=x>0?Math.round(Y*x):m.width);return{width:v,height:tA}})}else if(M){let x=o.aspectRatio??(o.kind==="media"?U:void 0);(x===void 0||x<=0)&&i.setWidth(m.width)}else if(b){let x=o.aspectRatio??(o.kind==="media"?U:void 0);(x===void 0||x<=0)&&i.setHeight(m.height)}}}return{yogaNode:i,layoutNode:o,children:g}}function Ir(A,e,t,n,r){if(t===void 0||t==="auto"||t==="fit")return;let o=Ae(t);if(typeof o=="number"){e==="width"?A.setWidth(o):A.setHeight(o);return}if(o==="fill"){if(r){A.getFlexGrow()===0&&A.setFlexGrow(1),A.setFlexBasis(0);return}n!==void 0?e==="width"?A.setWidth(n):A.setHeight(n):e==="width"?A.setWidthPercent(100):A.setHeightPercent(100)}}function lr(A,e,t,n,r){let o=A.yogaNode.getComputedLayout(),i=e+o.left,a=t+o.top,s=o.width,g=o.height,I=A.layoutNode;Ge(I)||(i+=Number(I.x??0),a+=Number(I.y??0)),n[A.layoutNode.id]={x:Math.round(i*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3},r[A.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3};for(let B of A.children)lr(B,i,a,n,r)}function cr(A){for(let e of A.children)cr(e);A.yogaNode.free()}function Bo(A,e){let{layout:t,viewport:n,measure:r}=e,o={},i={};for(let a of t){let s=A.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(A.FLEX_DIRECTION_COLUMN);let g=Br(A,a,{width:n.width,height:n.height},r,null);s.insertChild(g.yogaNode,0),s.calculateLayout(n.width,n.height);let I=g.yogaNode.getComputedLayout(),B=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),u=B?I.left:Number(a.x??0),E=B?I.top:Number(a.y??0);o[a.id]={x:Math.round(u*1e3)/1e3,y:Math.round(E*1e3)/1e3,width:Math.round(I.width*1e3)/1e3,height:Math.round(I.height*1e3)/1e3},i[a.id]={width:Math.round(I.width*1e3)/1e3,height:Math.round(I.height*1e3)/1e3};for(let Q of g.children)lr(Q,u,E,o,i);cr(g),s.free()}return{rects:o,sizes:i}}async function $s(A){let e=await to();return Bo(e,A)}$();function ur(A,e){let t=Math.floor(A)^e*1013|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967295*2-1}function lo(A,e){let t=Math.floor(A),n=t+1,r=A-t,o=r*r*(3-2*r),i=ur(t,e),a=ur(n,e),s=i*r,g=a*(r-1);return(s*(1-o)+g*o)*2}function co(A,e,t=0){let n=A.frequency??2,r=A.amplitude??50,o=Math.max(1,Math.min(4,A.octaves??1)),i=A.seed??1234,a=0,s=0,g=1,I=n;for(let u=0;u<o;u++){let E=lo(e*I,i+u*7919);a+=E*g,s+=g,g*=.5,I*=2}let B=s>0?a/s:0;return t+B*r}function uo(A,e,t,n){if(e<=0)return t;let r=Math.max(.001,A.mass??1),o=Math.max(.001,A.stiffness??180),i=Math.max(.001,A.damping??12),a=Math.sqrt(o/r),s=i/(2*Math.sqrt(o*r)),g=1;if(s<1){let I=a*Math.sqrt(1-s*s),B=-1,u=-s*a/I;g=1+Math.exp(-s*a*e)*(B*Math.cos(I*e)+u*Math.sin(I*e))}else if(Math.abs(s-1)<1e-4)g=1+Math.exp(-a*e)*(-1-a*e);else{let I=Math.sqrt(s*s-1),B=-a*(s-I),u=-a*(s+I),E=-1/(1-B/u),Q=-1-E;g=1+E*Math.exp(B*e)+Q*Math.exp(u*e)}return t+(n-t)*g}function LA(A,e,t){if(A==null)return 0;if(typeof A=="number")return A;if(typeof A=="function")return Number(A(e,t))||0;if(Array.isArray(A)||ArrayBuffer.isView(A)){let n=A;if(n.length===0)return 0;let r=Math.max(0,Math.min(n.length-1,Math.round(e)));return Number(n[r])||0}if(typeof A=="object"){let n=A;if(typeof n.get=="function")return Number(n.get({frame:e,fps:t,time:t>0?e/t:0}))||0;if(n.type==="Signal"&&n.data)return LA(n.data,e,t);let r=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(r)||ArrayBuffer.isView(r)){let o=r;if(o.length===0)return 0;let i=Number(n.fps)||24,a=t>0?t:24,s=e/a,g=Math.max(0,Math.min(o.length-1,Math.round(s*i)));return Number(o[g])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let o=n.nodeId;if(o){let i=n.channel??"primary",a=cn.getChannelSamples(o,i);if(a&&a.length>0){let s=Number(n.fps)||24,g=t>0?t:24,I=e/g,B=Math.max(0,Math.min(a.length-1,Math.round(I*s)));return Number(a[B])||0}}return 0}if(n.type==="generator"){let o=typeof n.amplitude=="number"?n.amplitude:1,i=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let m=typeof n.bars=="number"&&n.bars>0?n.bars:1;i=n.bpm/60/m}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,g=e/(t>0?t:24),I=n.baseType??"sine",B=!!n.fmEnabled,u=g;if(B){let m=Number(n.fmAmplitude)||1,p=Number(n.fmFrequency)||.5;u=g+Math.sin(g*p*Math.PI*2)*m}let E=0,Q=(u*i+a/(Math.PI*2))%1,C=Q<0?Q+1:Q,h=m=>(m%1+1)%1;switch(I){case"triangle":E=4*Math.abs(C-.5)-1;break;case"sawtooth":E=2*C-1;break;case"square":E=C<.5?1:-1;break;case"constant":E=1;break;case"noise_smooth":{let m=u*i+a,p=Math.floor(m),D=m-p,U=D*D*(3-2*D),M=h(Math.sin(p*12.9898)*43758.5453),b=h(Math.sin((p+1)*12.9898)*43758.5453);E=(M*(1-U)+b*U)*2-1;break}case"noise_white":E=h(Math.sin(u*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let m=a===0?.5:Math.max(.01,Math.min(.99,a));E=h(u*i)<m?1:-1;break}case"bounce":E=Math.abs(Math.sin(u*i*Math.PI+a));break;case"staircase":E=Math.floor(C*8)/7*2-1;break;default:E=Math.sin(u*i*Math.PI*2+a);break}return E*o+s}if(n.type==="gate"){let o=n.sourceSignal??n.signal,i=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,g=typeof n.debounceMs=="number"?n.debounceMs:0,I=Math.max(1,Math.round(g/1e3*t)),B=Math.max(1,Number(n.holdFrames)||4),u=0;if(a==="gate")u=LA(o,e,t)>=i?1:0;else if(a==="trigger"){let E=-1/0,Q=Math.max(0,e-300);for(let C=Q;C<=e;C++){let h=LA(o,C,t),m=C>0?LA(o,C-1,t):0;h>=i&&m<i&&C-E>=I&&(E=C)}u=e>=E&&e<E+B?1:0}else if(a==="toggle"){let E=0,Q=-1/0;for(let C=0;C<=e;C++){let h=LA(o,C,t),m=C>0?LA(o,C-1,t):0;h>=i&&m<i&&C-Q>=I&&(E++,Q=C)}u=E%2===1?1:0}return s?1-u:u}if(n.type==="signal_math"){let o=LA(n.signalA,e,t),a=n.signalB!==void 0?LA(n.signalB,e,t):Number(n.bValue)||0;switch(n.operation){case"add":return o+a;case"subtract":return o-a;case"multiply":return o*a;case"divide":return a!==0?o/a:0;case"min":return Math.min(o,a);case"max":return Math.max(o,a);case"clamp":{let s=Number(n.clampMin)||0,g=Number(n.clampMax)||1;return Math.max(s,Math.min(g,o))}case"abs":return Math.abs(o);case"negate":return-o;case"invert":return 1-o;case"power":return o**(Number(n.exponent)||2);case"modulo":return a!==0?o%a:0;case"remap":{let s=Number(n.inMin)||0,g=Number(n.inMax)||1,I=Number(n.outMin)||0,B=Number(n.outMax)||1,u=g-s,E=u!==0?(o-s)/u:0;return I+E*(B-I)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,I=(Number(n.aMax??n.inMax)||1)-s;return I!==0?Math.max(0,Math.min(1,(o-s)/I)):0}case"smoothstep":{let s=Number(n.edge0)||0,I=(Number(n.edge1)||1)-s,B=I!==0?Math.max(0,Math.min(1,(o-s)/I)):0;return B*B*(3-2*B)}case"custom":return o;default:return o}}if(typeof n.value=="number")return n.value}return 0}function Eo(A,e,t,n=.15,r=2){if(e<0||!A)return 0;let o=A,i=0,a=-1/0;for(let s=0;s<=e;s++){let g=LA(o,s,t),I=s>0?LA(o,s-1,t):0;g>=n&&I<n&&s-a>=r&&(i++,a=s)}return i}function Qo(A,e,t,n={}){let r=n[A.inputHandleId];if(r===void 0&&n){let u=Object.keys(n);if(u.length===1)r=n[u[0]];else if(u.length>1){let E=u.find(Q=>Q===A.inputHandleId);r=E?n[E]:n[u[0]]}}if(A.channel&&r&&typeof r=="object"){let u=r[A.channel];u!==void 0?r=u:typeof r.get!="function"&&(r={...r,channel:A.channel})}if(A.signalMode==="accumulate"){let u=A.threshold??A.accumulateThreshold??.15,E=A.debounceFrames??2,Q=Eo(r,e,t,u,E),C=A.multiplier??1,h=A.offset??0;return Q*C+h}let o=A.multiplier??1,i=A.offset??0,a=Math.max(0,Math.round(A.smoothingWindowFrames??0));if(a<=1)return LA(r,e,t)*o+i;let s=0,g=0,I=Math.max(0,e-a+1);for(let u=I;u<=e;u++)s+=LA(r,u,t),g++;return(g>0?s/g:0)*o+i}function Ue(A,e,t){return A+(e-A)*t}function jt(A){let e=A.trim().replace("#","");if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===6){let t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255,1]}if(e.length===8){let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,(t&255)/255]}return[255,255,255,1]}function Er(A,e,t){if(!A.startsWith("#")||!e.startsWith("#"))return t<.5?A:e;let[n,r,o,i]=jt(A),[a,s,g,I]=jt(e),B=Math.round(Ue(n,a,t)),u=Math.round(Ue(r,s,t)),E=Math.round(Ue(o,g,t)),Q=Ue(i,I,t),C=h=>h.toString(16).padStart(2,"0");return Q>=.999?`#${C(B)}${C(u)}${C(E)}`:`rgba(${B}, ${u}, ${E}, ${Math.round(Q*100)/100})`}function Zt(A,e,t){let n=t;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?A+(e-A)*6*n:n<1/2?e:n<2/3?A+(e-A)*(2/3-n)*6:A}function Co(A,e){let[t,n,r,o]=jt(A),i=t/255,a=n/255,s=r/255,g=Math.max(i,a,s),I=Math.min(i,a,s),B=0,u=0,E=(g+I)/2;if(g!==I){let p=g-I;switch(u=E>.5?p/(2-g-I):p/(g+I),g){case i:B=(a-s)/p+(a<s?6:0);break;case a:B=(s-i)/p+2;break;case s:B=(i-a)/p+4;break}B/=6}B=(B+e%1+1)%1;let Q=E,C=E,h=E;if(u!==0){let p=E<.5?E*(1+u):E+u-E*u,D=2*E-p;Q=Zt(D,p,B+1/3),C=Zt(D,p,B),h=Zt(D,p,B-1/3)}let m=p=>Math.round(Math.max(0,Math.min(255,p*255))).toString(16).padStart(2,"0");return o>=.999?`#${m(Q)}${m(C)}${m(h)}`:`rgba(${Math.round(Q*255)}, ${Math.round(C*255)}, ${Math.round(h*255)}, ${Math.round(o*100)/100})`}var fo=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function qt(A,e){let t=A.keyframes??[];if(t.length===0)return 0;if(t.length===1||e<=t[0].frame)return t[0].value;if(e>=t[t.length-1].frame)return t[t.length-1].value;for(let n=0;n<t.length-1;n++){let r=t[n],o=t[n+1];if(e>=r.frame&&e<=o.frame){let i=o.frame-r.frame,a=i>0?(e-r.frame)/i:0;if(typeof r.value=="boolean")return a>=1?o.value:r.value;if(typeof r.value=="string"&&typeof o.value=="string")return Er(r.value,o.value,a);let s=Number(r.value)||0,g=Number(o.value)||0;return Ue(s,g,a)}}return t[t.length-1].value}function ho(A,e,t=24,n={}){let r=n.startFrame??0,o=e-r,i=A.source??{type:"keyframe"},a=n.baseValues?.[A.prop];switch(i.type){case"keyframe":return qt(A,o);case"wiggle":{let s=typeof a=="number"?a:0,g=A.keyframes&&A.keyframes.length>0?Number(qt(A,o))||0:s,I=o/(t>0?t:24);return co(i,I,g)}case"springOvershoot":{let s=0,g=1;A.keyframes&&A.keyframes.length>=2?(s=Number(A.keyframes[0].value)||0,g=Number(A.keyframes[1].value)||1):A.keyframes&&A.keyframes.length===1?(s=Number(a)||0,g=Number(A.keyframes[0].value)||0):typeof a=="number"&&(s=a,g=a);let I=o/(t>0?t:24);return uo(i,I,s,g)}case"signal":{let s=Qo(i,e,t,n.signals);if(fo.has(A.prop)){let g=i,I=g.colorA??"#ffffff",B=g.colorB??"#ffffff",u=g.colorMode??"interpolate";if(u==="threshold"){let Q=g.colorThreshold??.5;return s>=Q?B:I}if(u==="hueRotate")return Co(I,s);let E=Math.max(0,Math.min(1,s));return Er(I,B,E)}return s}default:return qt(A,o)}}function ng(A,e,t=24,n={}){let r={};if(!A?.tracks)return r;for(let o of A.tracks)r[o.prop]=ho(o,e,t,n);return r}$();function _t(A,e,t,n="forward"){if(t<=0||e<=1)return 0;switch(n){case"reverse":return(e-1-A)*t;case"center-out":{let r=(e-1)/2,o=Math.abs(A-r);return Math.round(o*t)}default:return A*t}}function og(A,e,t="forward",n=0){return!A||A.length===0?[]:e<=0&&n===0?[...A]:A.map((r,o)=>{let i=_t(o,A.length,e,t),a=r.startFrame??0;return{...r,startFrame:a+i+n}})}$();$();var Cr=Symbol.for("framefields.inlineSignal"),Qr=new WeakMap,mo=0;function po(A){let e=Qr.get(A);return e===void 0&&(e=`inline_signal_${mo++}`,Qr.set(A,e)),e}function gg(A){if(typeof A=="string")return{handleId:A};if(A===null||typeof A!="object"&&typeof A!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(A)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let e=A;return typeof e.inputHandleId=="string"?{handleId:e.inputHandleId}:typeof e.gpuBinding?.nodeId=="string"?typeof e.get=="function"?{handleId:e.gpuBinding.nodeId,inline:A}:{handleId:e.gpuBinding.nodeId}:{handleId:po(A),inline:A}}function Ig(A,e){Object.defineProperty(A,Cr,{value:e,enumerable:!1,configurable:!0,writable:!0})}function yo(A){if(!(!A||typeof A!="object"))return A[Cr]}function $t(A,e={}){for(let t of A){if(!t||typeof t!="object")continue;let{animation:n,children:r}=t,o=n?.tracks;if(Array.isArray(o))for(let i of o){let a=i?.source,s=yo(a);s&&typeof a?.inputHandleId=="string"&&(e[a.inputHandleId]=s)}Array.isArray(r)&&$t(r,e)}return e}function fr(A,e,t,n=0,r,o){let i=[],a=A.src??A.inputHandleId,s=p=>typeof p=="string"&&(p.startsWith("http://")||p.startsWith("https://")||p.startsWith("file://")||p.startsWith("/")||p.startsWith("./")||p.startsWith("blob:")||p.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt)$/i.test(p)),g;if(A.kind==="media"){if(e&&(g=e(A.inputHandleId)),!g&&a&&(s(a)||A.src)&&(g=Bn(a,A.dataType??"Video")),g&&A.crop){let p=A.crop,D=typeof p.toOperation=="function"?p.toOperation():p;g={metadata:{...g.metadata},operation:{op:"Crop",...D,dataType:g.operation.dataType},children:[g]}}if(g&&Array.isArray(A.effects))for(let p of A.effects){let D=typeof p.toOperation=="function"?p.toOperation():p;g={metadata:{...g.metadata},operation:{id:A.id?`${A.id}-${D.op??"effect"}`:void 0,effect:p,...D,dataType:g.operation.dataType},children:[g]}}if(g&&A.vision){let p=A.vision,D=typeof p.toOperation=="function"?p.toOperation():p;g={metadata:{...g.metadata},operation:{op:"Vision",id:A.id,effect:p,...D,dataType:g.operation.dataType},children:[g]}}}if(A.kind==="media")i=g?[g]:[];else if("children"in A&&A.children){let p="staggerFrames"in A&&typeof A.staggerFrames=="number"?A.staggerFrames:0,D="staggerDirection"in A&&typeof A.staggerDirection=="string"?A.staggerDirection:"forward",U=typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)?Math.round(A.startFrame):0,M=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)?Math.round(A.durationFrames):o;i=A.children.map((b,x)=>{let N=_t(x,A.children.length,p,D),T=n+U+N;return fr(b,e,t,T,r,b.durationFrames===void 0?M:void 0)})}let I="Image",B;if(g){I=g.operation?.dataType??"Image";let D=I==="Image"||I==="SVG"?void 0:ln(g)?.durationMs;D!=null&&(B=Math.max(1,Math.round(D/1e3*t)))}let u=g?.operation?.dataType==="Caption",E=A.kind==="flex"||A.kind==="block"||A.kind==="box",Q=(typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)&&A.startFrame>=0?Math.round(A.startFrame):0)+n,C=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)&&A.durationFrames>0?Math.round(A.durationFrames):void 0,h=o??Math.round((r??1e4)/1e3*t);if(E&&i.length>0){if(C===void 0){let p=i.map(D=>(D.operation?.startFrame??0)+(D.operation?.durationFrames??h));C=Math.max(1,Math.max(...p)-Q)}}else u&&B!==void 0&&B>0?C=B:C!==void 0?(I==="Video"||I==="Audio")&&B!==void 0&&B>0&&(C=Math.min(C,B)):C=B??o??Math.round((r??1e4)/1e3*t);let m=C/t*1e3;if(A.kind==="media"&&g){let p=g;for(;p;)(!p.metadata?.durationMs||p.metadata.durationMs<=0)&&(p.metadata||(p.metadata={}),p.metadata.durationMs=m),p.operation?.sourceMeta&&!p.operation.sourceMeta.durationMs&&(p.operation.sourceMeta.durationMs=m),p=p.children?.[0]}return{metadata:{durationMs:m},operation:{op:"CompositorLayer",...A,startFrame:Q,durationFrames:C,dataType:I},children:i}}function Qg(A,e){let{isVideoMode:t,fps:n,durationMs:r,resolveMedia:o,signals:i}=e,a={metadata:{width:A.width,height:A.height,fps:n,...r!==void 0&&{durationMs:r}},operation:{op:"Compositor",width:A.width,height:A.height,fps:n,mode:A.mode??"Video",backgroundColor:A.backgroundColor,...A.antialias3d!==void 0&&{antialias3d:A.antialias3d},volume:A.volume??1,dataType:t?"Video":"Image",layout:A.layout,signals:{...$t(A.layout),...i??A.signals??{}},...(A.onRequestFrame||e.onRequestFrame)&&{onRequestFrame:A.onRequestFrame??e.onRequestFrame}},children:A.layout.map(I=>fr(I,o,n,0,r))},s=Array.isArray(e.effects)?e.effects:Array.isArray(A.effects)?A.effects:[];for(let I of s){let B=typeof I.toOperation=="function"?I.toOperation():I;a={metadata:{...a.metadata},operation:{...B,dataType:a.operation.dataType},children:[a]}}let g=A.vision??e.vision;if(g){let I=typeof g.toOperation=="function"?g.toOperation():g;a={metadata:{...a.metadata},operation:{op:"Vision",...I,dataType:a.operation.dataType},children:[a]}}return a}function Cg(A){let e=[],t=n=>{n?.operation?.op==="CompositorLayer"&&e.push(n);for(let r of n?.children??[])t(r)};for(let n of A)t(n);return e}export{Te as a,fn as b,k as c,cA as d,ne as e,re as f,Ko as g,Yo as h,Ee as i,qo as j,Qe as k,Un as l,Qa as m,Ye as n,Pn as o,Jn as p,$n as q,Gs as r,Tn as s,ds as t,Kn as u,Yn as v,yi as w,ys as x,Tt as y,ks as z,to as A,Bo as B,$s as C,gg as D,Ig as E,ho as F,ng as G,_t as H,og as I,Qg as J,Cg as K};
|