cozyclay 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/THIRD_PARTY_NOTICES.md +10 -0
  3. package/bin/agent/pi-tools.mjs +12 -1
  4. package/bin/agent/studio-context-budget.mjs +8 -2
  5. package/bin/agent/studio-prompt.mjs +1 -1
  6. package/bin/agent/studio-tools.mjs +1 -1
  7. package/dist/app/index.html +4 -4
  8. package/dist/assets/analytics-DbKG0NgD.js +6 -0
  9. package/dist/assets/app-34i-iUy1.js +5088 -0
  10. package/dist/assets/compile-worker-DYpa2nvO.js +5 -0
  11. package/dist/assets/{first-shot-handoff-DNO8kv_N.js → first-shot-handoff-CrGZ3n_O.js} +1 -1
  12. package/dist/assets/helvetiker-bold.typeface-BUlyMz0-.js +13 -0
  13. package/dist/assets/{landing-yfZaJkWc.js → landing-mq5bnqFE.js} +1 -1
  14. package/dist/assets/scene-asset-sync-7J-w5oNh.js +20 -0
  15. package/dist/assets/{workflow-D78eiKTa.js → workflow-dUhurYUc.js} +1 -1
  16. package/dist/cozyclay-package.json +1 -1
  17. package/dist/index.html +3 -3
  18. package/dist/workflow/index.html +3 -3
  19. package/package.json +1 -1
  20. package/src/agent-turn-mark.js +33 -0
  21. package/src/command-bus.js +8 -9
  22. package/src/commands/elements/character.js +2 -1
  23. package/src/commands/elements/motion.js +7 -1
  24. package/src/commands/elements/scene.js +3 -0
  25. package/src/commands/elements/stage.js +2 -1
  26. package/src/commands/elements/take-read.js +31 -0
  27. package/src/commands/elements.js +16 -2
  28. package/src/commands/motion3.js +3 -1
  29. package/src/commands/objects.js +2 -2
  30. package/src/motion3/compiler/anchors.js +60 -4
  31. package/src/motion3/compiler/compile.js +5 -1
  32. package/src/motion3/compiler/grip.js +8 -2
  33. package/src/motion3/compiler/socket-grip.js +107 -0
  34. package/src/motion3/compiler/validate-parts.js +7 -2
  35. package/src/motion3/compiler/vocab.js +6 -0
  36. package/src/motion3/free-motion.js +12 -4
  37. package/src/motion3/object-keys.js +36 -5
  38. package/src/motion3/object-pose.js +38 -5
  39. package/src/motion3/scene.js +4 -3
  40. package/src/motion3/schema/fields.js +1 -1
  41. package/src/motion3/schema/topics.js +3 -2
  42. package/src/motion3/schema/types.js +2 -2
  43. package/src/motion3/skills/basic.js +8 -2
  44. package/src/motion3/skills/info.js +4 -4
  45. package/src/motion3/sockets.js +104 -0
  46. package/src/motion3/take-edit.js +1 -1
  47. package/src/motion3/take.js +6 -4
  48. package/src/object-catalog.jsx +3 -1
  49. package/src/object-grasp.js +38 -0
  50. package/src/object-look.js +2 -0
  51. package/src/object-travel.js +6 -3
  52. package/src/panels/ObjectLookPanel.jsx +24 -3
  53. package/src/props.jsx +5 -5
  54. package/src/scene-objects.js +19 -11
  55. package/src/shell/details-selection.js +2 -1
  56. package/src/studio-agent-protocol.js +5 -6
  57. package/src/studio-app-binding.js +1 -1
  58. package/src/studio-elements.js +3 -1
  59. package/src/text/fonts/helvetiker-LICENSE.txt +13 -0
  60. package/src/text/fonts/helvetiker-bold.typeface.json +1 -0
  61. package/src/text/text-object.jsx +106 -0
  62. package/src/text/text-record.js +122 -0
  63. package/tools/run-tests.mjs +1 -1
  64. package/dist/assets/analytics-BWCqdgWA.js +0 -1
  65. package/dist/assets/app-DfTCxaKk.js +0 -5087
  66. package/dist/assets/compile-worker-BxKXh07s.js +0 -5
  67. package/dist/assets/scene-asset-sync-U3kS2rvK.js +0 -20
@@ -0,0 +1,20 @@
1
+ import{r as e,t}from"./rolldown-runtime-hePW80VL.js";import{$ as n,B as r,Ct as i,G as a,N as o,X as s,Z as c,i as l,it as u,j as d,m as f,n as p,nt as m,q as h,r as g,s as _,t as v,ut as y,vt as b,wt as x,y as S}from"./analytics-DbKG0NgD.js";import{Aa as C,An as w,Br as T,Cr as E,Ct as D,D as O,Gr as k,H as ee,Hn as A,It as te,Jt as j,K as M,Kn as ne,M as re,Mn as ie,Mt as ae,Nr as oe,Rn as se,Rt as ce,Ui as le,W as ue,Wr as de,Zi as fe,aa as pe,ar as me,eo as he,fr as ge,ga as _e,i as ve,ir as ye,ja as be,kr as xe,la as Se,lr as Ce,no as we,o as Te,qn as Ee,ro as De,rr as Oe,sa as ke,st as Ae,t as je,to as Me,tr as Ne,w as Pe,wr as Fe,za as Ie}from"./fflate.module-KbGj5-H6.js";var Le=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ee=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function te(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function j(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,j(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ee,`$&/`)+`/`),j(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ee,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+A(a,u),c+=j(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+A(a,u++),c+=j(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return j(te(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function M(e,t,n){if(e==null)return e;var r=[],i=0;return j(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function ne(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var re=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ie={map:M,forEach:function(e,t,n){M(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return M(e,function(){t++}),t},toArray:function(e){return M(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=ie,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:ne}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,re)}catch(e){re(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),Re=t(((e,t)=>{t.exports=Le()})),ze=t((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,ee=k.port2;k.port1.onmessage=D,O=function(){ee.postMessage(null)}}else O=function(){_(D,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),N=t(((e,t)=>{t.exports=ze()})),Be=t((e=>{var t=Re();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`)if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`)if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.8`})),Ve=t(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Be()})),He=t((e=>{var t=N(),n=Re(),r=Ve();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}var f=Object.assign,p=Symbol.for(`react.element`),m=Symbol.for(`react.transitional.element`),h=Symbol.for(`react.portal`),g=Symbol.for(`react.fragment`),_=Symbol.for(`react.strict_mode`),v=Symbol.for(`react.profiler`),y=Symbol.for(`react.consumer`),b=Symbol.for(`react.context`),x=Symbol.for(`react.forward_ref`),S=Symbol.for(`react.suspense`),C=Symbol.for(`react.suspense_list`),w=Symbol.for(`react.memo`),T=Symbol.for(`react.lazy`),E=Symbol.for(`react.activity`),D=Symbol.for(`react.memo_cache_sentinel`),O=Symbol.iterator;function k(e){return typeof e!=`object`||!e?null:(e=O&&e[O]||e[`@@iterator`],typeof e==`function`?e:null)}var ee=Symbol.for(`react.client.reference`);function A(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===ee?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case g:return`Fragment`;case v:return`Profiler`;case _:return`StrictMode`;case S:return`Suspense`;case C:return`SuspenseList`;case E:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case h:return`Portal`;case b:return e.displayName||`Context`;case y:return(e._context.displayName||`Context`)+`.Consumer`;case x:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case w:return t=e.displayName||null,t===null?A(e.type)||`Memo`:t;case T:t=e._payload,e=e._init;try{return A(e(t))}catch{}}return null}var te=Array.isArray,j=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,M=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pending:!1,data:null,method:null,action:null},re=[],ie=-1;function ae(e){return{current:e}}function oe(e){0>ie||(e.current=re[ie],re[ie]=null,ie--)}function se(e,t){ie++,re[ie]=e.current,e.current=t}var ce=ae(null),le=ae(null),ue=ae(null),de=ae(null);function fe(e,t){switch(se(ue,t),se(le,e),se(ce,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Kd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Kd(t),e=qd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}oe(ce),se(ce,e)}function pe(){oe(ce),oe(le),oe(ue)}function me(e){e.memoizedState!==null&&se(de,e);var t=ce.current,n=qd(t,e.type);t!==n&&(se(le,e),se(ce,n))}function he(e){le.current===e&&(oe(ce),oe(le)),de.current===e&&(oe(de),np._currentValue=ne)}var ge,_e;function ve(e){if(ge===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ge=t&&t[1]||``,_e=-1<e.stack.indexOf(`
2
+ at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
3
+ `+ge+e+_e}var ye=!1;function be(e,t){if(!e||ye)return``;ye=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
4
+ `),l=s.split(`
5
+ `);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
6
+ `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ye=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ve(n):``}function xe(e,t){switch(e.tag){case 26:case 27:case 5:return ve(e.type);case 16:return ve(`Lazy`);case 13:return e.child!==t&&t!==null?ve(`Suspense Fallback`):ve(`Suspense`);case 19:return ve(`SuspenseList`);case 0:case 15:return be(e.type,!1);case 11:return be(e.type.render,!1);case 1:return be(e.type,!0);case 31:return ve(`Activity`);default:return``}}function Se(e){try{var t=``,n=null;do t+=xe(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
7
+ Error generating stack: `+e.message+`
8
+ `+e.stack}}var Ce=Object.prototype.hasOwnProperty,we=t.unstable_scheduleCallback,Te=t.unstable_cancelCallback,Ee=t.unstable_shouldYield,De=t.unstable_requestPaint,Oe=t.unstable_now,ke=t.unstable_getCurrentPriorityLevel,Ae=t.unstable_ImmediatePriority,je=t.unstable_UserBlockingPriority,Me=t.unstable_NormalPriority,Ne=t.unstable_LowPriority,Pe=t.unstable_IdlePriority,Fe=t.log,Ie=t.unstable_setDisableYieldValue,Le=null,ze=null;function Be(e){if(typeof Fe==`function`&&Ie(e),ze&&typeof ze.setStrictMode==`function`)try{ze.setStrictMode(Le,e)}catch{}}var He=Math.clz32?Math.clz32:Ge,Ue=Math.log,We=Math.LN2;function Ge(e){return e>>>=0,e===0?32:31-(Ue(e)/We|0)|0}var Ke=256,qe=262144,Je=4194304;function Ye(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Xe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ye(n))):i=Ye(o):i=Ye(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ye(n))):i=Ye(o)):i=Ye(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ze(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Qe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function $e(){var e=Je;return Je<<=1,!(Je&62914560)&&(Je=4194304),e}function et(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function tt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function nt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-He(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&rt(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function rt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-He(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function it(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-He(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function at(e,t){var n=t&-t;return n=n&42?1:ot(n),(n&(e.suspendedLanes|t))===0?n:0}function ot(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function st(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function ct(){var e=M.p;return e===0?(e=window.event,e===void 0?32:vp(e.type)):e}function lt(e,t){var n=M.p;try{return M.p=e,t()}finally{M.p=n}}var ut=Math.random().toString(36).slice(2),dt=`__reactFiber$`+ut,ft=`__reactProps$`+ut,pt=`__reactContainer$`+ut,mt=`__reactEvents$`+ut,ht=`__reactListeners$`+ut,gt=`__reactHandles$`+ut,_t=`__reactResources$`+ut,vt=`__reactMarker$`+ut;function yt(e){delete e[dt],delete e[ft],delete e[mt],delete e[ht],delete e[gt]}function bt(e){var t=e[dt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[pt]||n[dt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=gf(e);e!==null;){if(n=e[dt])return n;e=gf(e)}return t}e=n,n=e.parentNode}return null}function xt(e){if(e=e[dt]||e[pt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function St(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function Ct(e){var t=e[_t];return t||=e[_t]={hoistableStyles:new Map,hoistableScripts:new Map},t}function wt(e){e[vt]=!0}var Tt=new Set,Et={};function Dt(e,t){Ot(e,t),Ot(e+`Capture`,t)}function Ot(e,t){for(Et[e]=t,e=0;e<t.length;e++)Tt.add(t[e])}var kt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),At={},jt={};function Mt(e){return Ce.call(jt,e)?!0:Ce.call(At,e)?!1:kt.test(e)?jt[e]=!0:(At[e]=!0,!1)}function Nt(e,t,n){if(Mt(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}function Pt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function Ft(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function It(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function Lt(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function Rt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function zt(e){if(!e._valueTracker){var t=Lt(e)?`checked`:`value`;e._valueTracker=Rt(e,t,``+e[t])}}function Bt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=Lt(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function Vt(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Ht=/[\n"\\]/g;function Ut(e){return e.replace(Ht,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Wt(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+It(t)):e.value!==``+It(t)&&(e.value=``+It(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):Kt(e,o,It(n)):Kt(e,o,It(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+It(s):e.removeAttribute(`name`)}function Gt(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){zt(e);return}n=n==null?``:``+It(n),t=t==null?n:``+It(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),zt(e)}function Kt(e,t,n){t===`number`&&Vt(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function qt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+It(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function Jt(e,t,n){if(t!=null&&(t=``+It(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+It(n)}function Yt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(te(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=It(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),zt(e)}function Xt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Zt=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function Qt(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||Zt.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function $t(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&Qt(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&Qt(e,o,t[o])}function en(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var tn=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),nn=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function rn(e){return nn.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function an(){}var on=null;function sn(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var cn=null,ln=null;function un(e){var t=xt(e);if(t&&(e=t.stateNode)){var n=e[ft]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Wt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Ut(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[ft]||null;if(!a)throw Error(i(90));Wt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&Bt(r)}break a;case`textarea`:Jt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&qt(e,!!n.multiple,t,!1)}}}var P=!1;function dn(e,t,n){if(P)return e(t,n);P=!0;try{return e(t)}finally{if(P=!1,(cn!==null||ln!==null)&&(Su(),cn&&(t=cn,e=ln,ln=cn=null,un(t),e)))for(t=0;t<e.length;t++)un(e[t])}}function fn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[ft]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var pn=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),mn=!1;if(pn)try{var hn={};Object.defineProperty(hn,"passive",{get:function(){mn=!0}}),window.addEventListener(`test`,hn,hn),window.removeEventListener(`test`,hn,hn)}catch{mn=!1}var gn=null,_n=null,vn=null;function yn(){if(vn)return vn;var e,t=_n,n=t.length,r,i=`value`in gn?gn.value:gn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return vn=i.slice(e,1<r?1-r:void 0)}function bn(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function xn(){return!0}function Sn(){return!1}function Cn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?xn:Sn,this.isPropagationStopped=Sn,this}return f(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=xn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=xn)},persist:function(){},isPersistent:xn}),t}var wn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Tn=Cn(wn),En=f({},wn,{view:0,detail:0}),Dn=Cn(En),On,kn,An,jn=f({},En,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Hn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==An&&(An&&e.type===`mousemove`?(On=e.screenX-An.screenX,kn=e.screenY-An.screenY):kn=On=0,An=e),On)},movementY:function(e){return`movementY`in e?e.movementY:kn}}),Mn=Cn(jn),Nn=Cn(f({},jn,{dataTransfer:0})),Pn=Cn(f({},En,{relatedTarget:0})),Fn=Cn(f({},wn,{animationName:0,elapsedTime:0,pseudoElement:0})),In=Cn(f({},wn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),Ln=Cn(f({},wn,{data:0})),Rn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},zn={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},Bn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Vn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Bn[e])?!!t[e]:!1}function Hn(){return Vn}var Un=Cn(f({},En,{key:function(e){if(e.key){var t=Rn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=bn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?zn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Hn,charCode:function(e){return e.type===`keypress`?bn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?bn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),Wn=Cn(f({},jn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Gn=Cn(f({},En,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Hn})),Kn=Cn(f({},wn,{propertyName:0,elapsedTime:0,pseudoElement:0})),qn=Cn(f({},jn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Jn=Cn(f({},wn,{newState:0,oldState:0})),Yn=[9,13,27,32],Xn=pn&&`CompositionEvent`in window,Zn=null;pn&&`documentMode`in document&&(Zn=document.documentMode);var Qn=pn&&`TextEvent`in window&&!Zn,$n=pn&&(!Xn||Zn&&8<Zn&&11>=Zn),er=` `,tr=!1;function nr(e,t){switch(e){case`keyup`:return Yn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function rr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var ir=!1;function ar(e,t){switch(e){case`compositionend`:return rr(t);case`keypress`:return t.which===32?(tr=!0,er):null;case`textInput`:return e=t.data,e===er&&tr?null:e;default:return null}}function or(e,t){if(ir)return e===`compositionend`||!Xn&&nr(e,t)?(e=yn(),vn=_n=gn=null,ir=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return $n&&t.locale!==`ko`?null:t.data;default:return null}}var sr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function cr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!sr[e.type]:t===`textarea`}function lr(e,t,n,r){cn?ln?ln.push(r):ln=[r]:cn=r,t=Ad(t,`onChange`),0<t.length&&(n=new Tn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var ur=null,dr=null;function fr(e){Sd(e,0)}function pr(e){if(Bt(St(e)))return e}function mr(e,t){if(e===`change`)return t}var hr=!1;if(pn){var gr;if(pn){var _r=`oninput`in document;if(!_r){var vr=document.createElement(`div`);vr.setAttribute(`oninput`,`return;`),_r=typeof vr.oninput==`function`}gr=_r}else gr=!1;hr=gr&&(!document.documentMode||9<document.documentMode)}function yr(){ur&&(ur.detachEvent(`onpropertychange`,F),dr=ur=null)}function F(e){if(e.propertyName===`value`&&pr(dr)){var t=[];lr(t,dr,e,sn(e)),dn(fr,t)}}function br(e,t,n){e===`focusin`?(yr(),ur=t,dr=n,ur.attachEvent(`onpropertychange`,F)):e===`focusout`&&yr()}function xr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return pr(dr)}function Sr(e,t){if(e===`click`)return pr(t)}function Cr(e,t){if(e===`input`||e===`change`)return pr(t)}function wr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var Tr=typeof Object.is==`function`?Object.is:wr;function Er(e,t){if(Tr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!Ce.call(t,i)||!Tr(e[i],t[i]))return!1}return!0}function Dr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Or(e,t){var n=Dr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Dr(n)}}function kr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ar(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Vt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Vt(e.document)}return t}function jr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Mr=pn&&`documentMode`in document&&11>=document.documentMode,Nr=null,Pr=null,Fr=null,Ir=!1;function Lr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ir||Nr==null||Nr!==Vt(r)||(r=Nr,`selectionStart`in r&&jr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Fr&&Er(Fr,r)||(Fr=r,r=Ad(Pr,`onSelect`),0<r.length&&(t=new Tn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Nr)))}function Rr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var zr={animationend:Rr(`Animation`,`AnimationEnd`),animationiteration:Rr(`Animation`,`AnimationIteration`),animationstart:Rr(`Animation`,`AnimationStart`),transitionrun:Rr(`Transition`,`TransitionRun`),transitionstart:Rr(`Transition`,`TransitionStart`),transitioncancel:Rr(`Transition`,`TransitionCancel`),transitionend:Rr(`Transition`,`TransitionEnd`)},Br={},Vr={};pn&&(Vr=document.createElement(`div`).style,`AnimationEvent`in window||(delete zr.animationend.animation,delete zr.animationiteration.animation,delete zr.animationstart.animation),`TransitionEvent`in window||delete zr.transitionend.transition);function Hr(e){if(Br[e])return Br[e];if(!zr[e])return e;var t=zr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Vr)return Br[e]=t[n];return e}var Ur=Hr(`animationend`),Wr=Hr(`animationiteration`),Gr=Hr(`animationstart`),Kr=Hr(`transitionrun`),qr=Hr(`transitionstart`),Jr=Hr(`transitioncancel`),Yr=Hr(`transitionend`),Xr=new Map,Zr=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);Zr.push(`scrollEnd`);function Qr(e,t){Xr.set(e,t),Dt(t,[e])}var $r=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ei=[],ti=0,ni=0;function ri(){for(var e=ti,t=ni=ti=0;t<e;){var n=ei[t];ei[t++]=null;var r=ei[t];ei[t++]=null;var i=ei[t];ei[t++]=null;var a=ei[t];if(ei[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&si(n,i,a)}}function ii(e,t,n,r){ei[ti++]=e,ei[ti++]=t,ei[ti++]=n,ei[ti++]=r,ni|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function ai(e,t,n,r){return ii(e,t,n,r),ci(e)}function oi(e,t){return ii(e,null,null,t),ci(e)}function si(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-He(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function ci(e){if(50<pu)throw pu=0,mu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var li={};function ui(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function di(e,t,n,r){return new ui(e,t,n,r)}function fi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function pi(e,t){var n=e.alternate;return n===null?(n=di(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function mi(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function hi(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)fi(e)&&(s=1);else if(typeof e==`string`)s=qf(e,n,ce.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case E:return e=di(31,n,t,a),e.elementType=E,e.lanes=o,e;case g:return gi(n.children,a,o,t);case _:s=8,a|=24;break;case v:return e=di(12,n,t,a|2),e.elementType=v,e.lanes=o,e;case S:return e=di(13,n,t,a),e.elementType=S,e.lanes=o,e;case C:return e=di(19,n,t,a),e.elementType=C,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case b:s=10;break a;case y:s=9;break a;case x:s=11;break a;case w:s=14;break a;case T:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=di(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function gi(e,t,n,r){return e=di(7,e,r,t),e.lanes=n,e}function _i(e,t,n){return e=di(6,e,null,t),e.lanes=n,e}function vi(e){var t=di(18,null,null,0);return t.stateNode=e,t}function yi(e,t,n){return t=di(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var bi=new WeakMap;function xi(e,t){if(typeof e==`object`&&e){var n=bi.get(e);return n===void 0?(t={value:e,source:t,stack:Se(t)},bi.set(e,t),t):n}return{value:e,source:t,stack:Se(t)}}var Si=[],Ci=0,wi=null,Ti=0,Ei=[],Di=0,Oi=null,ki=1,Ai=``;function ji(e,t){Si[Ci++]=Ti,Si[Ci++]=wi,wi=e,Ti=t}function Mi(e,t,n){Ei[Di++]=ki,Ei[Di++]=Ai,Ei[Di++]=Oi,Oi=e;var r=ki;e=Ai;var i=32-He(r)-1;r&=~(1<<i),n+=1;var a=32-He(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,ki=1<<32-He(t)+i|n<<i|r,Ai=a+e}else ki=1<<a|n<<i|r,Ai=e}function Ni(e){e.return!==null&&(ji(e,1),Mi(e,1,0))}function Pi(e){for(;e===wi;)wi=Si[--Ci],Si[Ci]=null,Ti=Si[--Ci],Si[Ci]=null;for(;e===Oi;)Oi=Ei[--Di],Ei[Di]=null,Ai=Ei[--Di],Ei[Di]=null,ki=Ei[--Di],Ei[Di]=null}function Fi(e,t){Ei[Di++]=ki,Ei[Di++]=Ai,Ei[Di++]=Oi,ki=t.id,Ai=t.overflow,Oi=e}var Ii=null,Li=null,Ri=!1,zi=null,Bi=!1,Vi=Error(i(519));function Hi(e){throw Ji(xi(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),Vi}function Ui(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[dt]=e,t[ft]=r,n){case`dialog`:Cd(`cancel`,t),Cd(`close`,t);break;case`iframe`:case`object`:case`embed`:Cd(`load`,t);break;case`video`:case`audio`:for(n=0;n<bd.length;n++)Cd(bd[n],t);break;case`source`:Cd(`error`,t);break;case`img`:case`image`:case`link`:Cd(`error`,t),Cd(`load`,t);break;case`details`:Cd(`toggle`,t);break;case`input`:Cd(`invalid`,t),Gt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Cd(`invalid`,t);break;case`textarea`:Cd(`invalid`,t),Yt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||Id(t.textContent,n)?(r.popover!=null&&(Cd(`beforetoggle`,t),Cd(`toggle`,t)),r.onScroll!=null&&Cd(`scroll`,t),r.onScrollEnd!=null&&Cd(`scrollend`,t),r.onClick!=null&&(t.onclick=an),t=!0):t=!1,t||Hi(e,!0)}function Wi(e){for(Ii=e.return;Ii;)switch(Ii.tag){case 5:case 31:case 13:Bi=!1;return;case 27:case 3:Bi=!0;return;default:Ii=Ii.return}}function Gi(e){if(e!==Ii)return!1;if(!Ri)return Wi(e),Ri=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||Jd(e.type,e.memoizedProps)),n=!n),n&&Li&&Hi(e),Wi(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Li=hf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Li=hf(e)}else t===27?(t=Li,nf(e.type)?(e=mf,mf=null,Li=e):Li=t):Li=Ii?pf(e.stateNode.nextSibling):null;return!0}function Ki(){Li=Ii=null,Ri=!1}function qi(){var e=zi;return e!==null&&($l===null?$l=e:$l.push.apply($l,e),zi=null),e}function Ji(e){zi===null?zi=[e]:zi.push(e)}var Yi=ae(null),Xi=null,Zi=null;function Qi(e,t,n){se(Yi,t._currentValue),t._currentValue=n}function $i(e){e._currentValue=Yi.current,oe(Yi)}function ea(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function ta(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),ea(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),ea(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function na(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;Tr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===de.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[np]:e.push(np))}a=a.return}e!==null&&ta(t,e,n,r),t.flags|=262144}function ra(e){for(e=e.firstContext;e!==null;){if(!Tr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function ia(e){Xi=e,Zi=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function aa(e){return sa(Xi,e)}function oa(e,t){return Xi===null&&ia(e),sa(e,t)}function sa(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Zi===null){if(e===null)throw Error(i(308));Zi=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Zi=Zi.next=t;return n}var ca=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},la=t.unstable_scheduleCallback,ua=t.unstable_NormalPriority,da={$$typeof:b,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function fa(){return{controller:new ca,data:new Map,refCount:0}}function pa(e){e.refCount--,e.refCount===0&&la(ua,function(){e.controller.abort()})}var ma=null,ha=0,ga=0,_a=null;function va(e,t){if(ma===null){var n=ma=[];ha=0,ga=md(),_a={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ha++,t.then(ya,ya),t}function ya(){if(--ha===0&&ma!==null){_a!==null&&(_a.status=`fulfilled`);var e=ma;ma=null,ga=0,_a=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function ba(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var xa=j.S;j.S=function(e,t){nu=Oe(),typeof t==`object`&&t&&typeof t.then==`function`&&va(e,t),xa!==null&&xa(e,t)};var Sa=ae(null);function Ca(){var e=Sa.current;return e===null?zl.pooledCache:e}function wa(e,t){t===null?se(Sa,Sa.current):se(Sa,t.pool)}function Ta(){var e=Ca();return e===null?null:{parent:da._currentValue,pool:e}}var Ea=Error(i(460)),Da=Error(i(474)),Oa=Error(i(542)),ka={then:function(){}};function Aa(e){return e=e.status,e===`fulfilled`||e===`rejected`}function ja(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(an,an),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Fa(e),e;default:if(typeof t.status==`string`)t.then(an,an);else{if(e=zl,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Fa(e),e}throw Na=t,Ea}}function Ma(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(Na=e,Ea):e}}var Na=null;function Pa(){if(Na===null)throw Error(i(459));var e=Na;return Na=null,e}function Fa(e){if(e===Ea||e===Oa)throw Error(i(483))}var Ia=null,La=0;function Ra(e){var t=La;return La+=1,Ia===null&&(Ia=[]),ja(Ia,e,t)}function za(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Ba(e,t){throw t.$$typeof===p?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function Va(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=pi(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=_i(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===g?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===T&&Ma(i)===t.type)?(t=a(t,n.props),za(t,n),t.return=e,t):(t=hi(n.type,n.key,n.props,null,e.mode,r),za(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=yi(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=gi(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=_i(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case m:return n=hi(t.type,t.key,t.props,null,e.mode,n),za(n,t),n.return=e,n;case h:return t=yi(t,e.mode,n),t.return=e,t;case T:return t=Ma(t),f(e,t,n)}if(te(t)||k(t))return t=gi(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,Ra(t),n);if(t.$$typeof===b)return f(e,oa(e,t),n);Ba(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case m:return n.key===i?l(e,t,n,r):null;case h:return n.key===i?u(e,t,n,r):null;case T:return n=Ma(n),p(e,t,n,r)}if(te(n)||k(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,Ra(n),r);if(n.$$typeof===b)return p(e,t,oa(e,n),r);Ba(e,n)}return null}function _(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case m:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case h:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case T:return r=Ma(r),_(e,t,n,r,i)}if(te(r)||k(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return _(e,t,n,Ra(r),i);if(r.$$typeof===b)return _(e,t,n,oa(t,r),i);Ba(t,r)}return null}function v(i,a,s,c){for(var l=null,u=null,d=a,m=a=0,h=null;d!==null&&m<s.length;m++){d.index>m?(h=d,d=null):h=d.sibling;var g=p(i,d,s[m],c);if(g===null){d===null&&(d=h);break}e&&d&&g.alternate===null&&t(i,d),a=o(g,a,m),u===null?l=g:u.sibling=g,u=g,d=h}if(m===s.length)return n(i,d),Ri&&ji(i,m),l;if(d===null){for(;m<s.length;m++)d=f(i,s[m],c),d!==null&&(a=o(d,a,m),u===null?l=d:u.sibling=d,u=d);return Ri&&ji(i,m),l}for(d=r(d);m<s.length;m++)h=_(d,i,m,s[m],c),h!==null&&(e&&h.alternate!==null&&d.delete(h.key===null?m:h.key),a=o(h,a,m),u===null?l=h:u.sibling=h,u=h);return e&&d.forEach(function(e){return t(i,e)}),Ri&&ji(i,m),l}function y(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,m=s,h=s=0,g=null,v=c.next();m!==null&&!v.done;h++,v=c.next()){m.index>h?(g=m,m=null):g=m.sibling;var y=p(a,m,v.value,l);if(y===null){m===null&&(m=g);break}e&&m&&y.alternate===null&&t(a,m),s=o(y,s,h),d===null?u=y:d.sibling=y,d=y,m=g}if(v.done)return n(a,m),Ri&&ji(a,h),u;if(m===null){for(;!v.done;h++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,h),d===null?u=v:d.sibling=v,d=v);return Ri&&ji(a,h),u}for(m=r(m);!v.done;h++,v=c.next())v=_(m,a,h,v.value,l),v!==null&&(e&&v.alternate!==null&&m.delete(v.key===null?h:v.key),s=o(v,s,h),d===null?u=v:d.sibling=v,d=v);return e&&m.forEach(function(e){return t(a,e)}),Ri&&ji(a,h),u}function x(e,r,o,c){if(typeof o==`object`&&o&&o.type===g&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case m:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===g){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===T&&Ma(l)===r.type){n(e,r.sibling),c=a(r,o.props),za(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===g?(c=gi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=hi(o.type,o.key,o.props,null,e.mode,c),za(c,o),c.return=e,e=c)}return s(e);case h:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}t(e,r),r=r.sibling}c=yi(o,e.mode,c),c.return=e,e=c}return s(e);case T:return o=Ma(o),x(e,r,o,c)}if(te(o))return v(e,r,o,c);if(k(o)){if(l=k(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),y(e,r,o,c)}if(typeof o.then==`function`)return x(e,r,Ra(o),c);if(o.$$typeof===b)return x(e,r,oa(e,o),c);Ba(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=_i(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{La=0;var i=x(e,t,n,r);return Ia=null,i}catch(t){if(t===Ea||t===Oa)throw t;var a=di(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ha=Va(!0),Ua=Va(!1),Wa=!1;function Ga(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ka(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function qa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ja(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Rl&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ci(e),si(e,null,n),t}return ii(e,r,t,n),ci(e)}function Ya(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,it(e,n)}}function Xa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Za=!1;function Qa(){if(Za){var e=_a;if(e!==null)throw e}}function $a(e,t,n,r){Za=!1;var i=e.updateQueue;Wa=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var p=s.lane&-536870913,m=p!==s.lane;if(m?(J&p)===p:(r&p)===p){p!==0&&p===ga&&(Za=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;p=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,p);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,p=typeof h==`function`?h.call(_,d,p):h,p==null)break a;d=f({},d,p);break a;case 2:Wa=!0}}p=s.callback,p!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[p]:m.push(p))}else m={lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=p;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),ql|=o,e.lanes=o,e.memoizedState=d}}function eo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function to(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)eo(n[e],t)}var no=ae(null),ro=ae(0);function io(e,t){e=Gl,se(ro,e),se(no,t),Gl=e|t.baseLanes}function ao(){se(ro,Gl),se(no,no.current)}function oo(){Gl=ro.current,oe(no),oe(ro)}var so=ae(null),co=null;function lo(e){var t=e.alternate;se(ho,ho.current&1),se(so,e),co===null&&(t===null||no.current!==null||t.memoizedState!==null)&&(co=e)}function uo(e){se(ho,ho.current),se(so,e),co===null&&(co=e)}function fo(e){e.tag===22?(se(ho,ho.current),se(so,e),co===null&&(co=e)):po(e)}function po(){se(ho,ho.current),se(so,so.current)}function mo(e){oe(so),co===e&&(co=null),oe(ho)}var ho=ae(0);function go(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||uf(n)||df(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _o=0,I=null,vo=null,yo=null,bo=!1,xo=!1,So=!1,Co=0,wo=0,To=null,Eo=0;function Do(){throw Error(i(321))}function Oo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Tr(e[n],t[n]))return!1;return!0}function ko(e,t,n,r,i,a){return _o=a,I=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,j.H=e===null||e.memoizedState===null?Is:Ls,So=!1,a=n(r,i),So=!1,xo&&(a=jo(t,n,r,i)),Ao(e),a}function Ao(e){j.H=Fs;var t=vo!==null&&vo.next!==null;if(_o=0,yo=vo=I=null,bo=!1,wo=0,To=null,t)throw Error(i(300));e===null||ec||(e=e.dependencies,e!==null&&ra(e)&&(ec=!0))}function jo(e,t,n,r){I=e;var a=0;do{if(xo&&(To=null),wo=0,xo=!1,25<=a)throw Error(i(301));if(a+=1,yo=vo=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}j.H=Rs,o=t(n,r)}while(xo);return o}function Mo(){var e=j.H,t=e.useState()[0];return t=typeof t.then==`function`?Ro(t):t,e=e.useState()[0],(vo===null?null:vo.memoizedState)!==e&&(I.flags|=1024),t}function No(){var e=Co!==0;return Co=0,e}function Po(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Fo(e){if(bo){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}bo=!1}_o=0,yo=vo=I=null,xo=!1,wo=Co=0,To=null}function Io(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return yo===null?I.memoizedState=yo=e:yo=yo.next=e,yo}function L(){if(vo===null){var e=I.alternate;e=e===null?null:e.memoizedState}else e=vo.next;var t=yo===null?I.memoizedState:yo.next;if(t!==null)yo=t,vo=e;else{if(e===null)throw I.alternate===null?Error(i(467)):Error(i(310));vo=e,e={memoizedState:vo.memoizedState,baseState:vo.baseState,baseQueue:vo.baseQueue,queue:vo.queue,next:null},yo===null?I.memoizedState=yo=e:yo=yo.next=e}return yo}function Lo(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Ro(e){var t=wo;return wo+=1,To===null&&(To=[]),e=ja(To,e,t),t=I,(yo===null?t.memoizedState:yo.next)===null&&(t=t.alternate,j.H=t===null||t.memoizedState===null?Is:Ls),e}function zo(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return Ro(e);if(e.$$typeof===b)return aa(e)}throw Error(i(438,String(e)))}function Bo(e){var t=null,n=I.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=I.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Lo(),I.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=D;return t.index++,n}function Vo(e,t){return typeof t==`function`?t(e):t}function Ho(e){return Uo(L(),vo,e)}function Uo(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(_o&f)===f:(J&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===ga&&(d=!0);else if((_o&p)===p){u=u.next,p===ga&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,I.lanes|=p,ql|=p;f=u.action,So&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,I.lanes|=f,ql|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!Tr(o,e.memoizedState)&&(ec=!0,d&&(n=_a,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Wo(e){var t=L(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);Tr(o,t.memoizedState)||(ec=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Go(e,t,n){var r=I,a=L(),o=Ri;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!Tr((vo||a).memoizedState,n);if(s&&(a.memoizedState=n,ec=!0),a=a.queue,B(Jo.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||yo!==null&&yo.memoizedState.tag&1){if(r.flags|=2048,ds(9,{destroy:void 0},qo.bind(null,r,a,n,t),null),zl===null)throw Error(i(349));o||_o&127||Ko(r,t,n)}return n}function Ko(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=I.updateQueue,t===null?(t=Lo(),I.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function qo(e,t,n,r){t.value=n,t.getSnapshot=r,Yo(t)&&Xo(e)}function Jo(e,t,n){return n(function(){Yo(t)&&Xo(e)})}function Yo(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Tr(e,n)}catch{return!0}}function Xo(e){var t=oi(e,2);t!==null&&_u(t,e,2)}function Zo(e){var t=Io();if(typeof e==`function`){var n=e;if(e=n(),So){Be(!0);try{n()}finally{Be(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:e},t}function Qo(e,t,n,r){return e.baseState=n,Uo(e,vo,typeof r==`function`?r:Vo)}function $o(e,t,n,r,a){if(Ms(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};j.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,es(t,o)):(o.next=n.next,t.pending=n.next=o)}}function es(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=j.T,o={};j.T=o;try{var s=n(i,r),c=j.S;c!==null&&c(o,s),ts(e,t,s)}catch(n){rs(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),j.T=a}}else try{a=n(i,r),ts(e,t,a)}catch(n){rs(e,t,n)}}function ts(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){ns(e,t,n)},function(n){return rs(e,t,n)}):ns(e,t,n)}function ns(e,t,n){t.status=`fulfilled`,t.value=n,is(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,es(e,n)))}function rs(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,is(t),t=t.next;while(t!==r)}e.action=null}function is(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function as(e,t){return t}function os(e,t){if(Ri){var n=zl.formState;if(n!==null){a:{var r=I;if(Ri){if(Li){b:{for(var i=Li,a=Bi;i.nodeType!==8;){if(!a){i=null;break b}if(i=pf(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){Li=pf(i.nextSibling),r=i.data===`F!`;break a}}Hi(r)}r=!1}r&&(t=n[0])}}return n=Io(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:as,lastRenderedState:t},n.queue=r,n=ks.bind(null,I,r),r.dispatch=n,r=Zo(!1),a=js.bind(null,I,!1,r.queue),r=Io(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=$o.bind(null,I,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function ss(e){return cs(L(),vo,e)}function cs(e,t,n){if(t=Uo(e,t,as)[0],e=Ho(Vo)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=Ro(t)}catch(e){throw e===Ea?Oa:e}else r=t;t=L();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(I.flags|=2048,ds(9,{destroy:void 0},ls.bind(null,i,n),null)),[r,a,e]}function ls(e,t){e.action=t}function us(e){var t=L(),n=vo;if(n!==null)return cs(t,n,e);L(),t=t.memoizedState,n=L();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function ds(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=I.updateQueue,t===null&&(t=Lo(),I.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function fs(){return L().memoizedState}function ps(e,t,n,r){var i=Io();I.flags|=e,i.memoizedState=ds(1|t,{destroy:void 0},n,r===void 0?null:r)}function R(e,t,n,r){var i=L();r=r===void 0?null:r;var a=i.memoizedState.inst;vo!==null&&r!==null&&Oo(r,vo.memoizedState.deps)?i.memoizedState=ds(t,a,n,r):(I.flags|=e,i.memoizedState=ds(1|t,a,n,r))}function z(e,t){ps(8390656,8,e,t)}function B(e,t){R(2048,8,e,t)}function V(e){I.flags|=4;var t=I.updateQueue;if(t===null)t=Lo(),I.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function ms(e){var t=L().memoizedState;return V({ref:t,nextImpl:e}),function(){if(Rl&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function H(e,t){return R(4,2,e,t)}function hs(e,t){return R(4,4,e,t)}function U(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function gs(e,t,n){n=n==null?null:n.concat([e]),R(4,4,U.bind(null,t,e),n)}function _s(){}function vs(e,t){var n=L();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&Oo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ys(e,t){var n=L();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&Oo(t,r[1]))return r[0];if(r=e(),So){Be(!0);try{e()}finally{Be(!1)}}return n.memoizedState=[r,t],r}function W(e,t,n){return n===void 0||_o&1073741824&&!(J&261930)?e.memoizedState=t:(e.memoizedState=n,e=gu(),I.lanes|=e,ql|=e,n)}function G(e,t,n,r){return Tr(n,t)?n:no.current===null?!(_o&42)||_o&1073741824&&!(J&261930)?(ec=!0,e.memoizedState=n):(e=gu(),I.lanes|=e,ql|=e,t):(e=W(e,n,r),Tr(e,t)||(ec=!0),e)}function K(e,t,n,r,i){var a=M.p;M.p=a!==0&&8>a?a:8;var o=j.T,s={};j.T=s,js(e,!1,t,n);try{var c=i(),l=j.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?As(e,t,ba(c,r),hu(e)):As(e,t,r,hu(e))}catch(n){As(e,t,{then:function(){},status:`rejected`,reason:n},hu())}finally{M.p=a,o!==null&&s.types!==null&&(o.types=s.types),j.T=o}}function bs(){}function xs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ss(e).queue;K(e,a,t,ne,n===null?bs:function(){return Cs(e),n(r)})}function Ss(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:ne},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Cs(e){var t=Ss(e);t.next===null&&(t=e.alternate.memoizedState),As(e,t.next.queue,{},hu())}function ws(){return aa(np)}function Ts(){return L().memoizedState}function Es(){return L().memoizedState}function Ds(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=hu();e=qa(n);var r=Ja(t,e,n);r!==null&&(_u(r,t,n),Ya(r,t,n)),t={cache:fa()},e.payload=t;return}t=t.return}}function Os(e,t,n){var r=hu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ms(e)?Ns(t,n):(n=ai(e,t,n,r),n!==null&&(_u(n,e,r),Ps(n,t,r)))}function ks(e,t,n){As(e,t,n,hu())}function As(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ms(e))Ns(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Tr(s,o))return ii(e,t,i,0),zl===null&&ri(),!1}catch{}if(n=ai(e,t,i,r),n!==null)return _u(n,e,r),Ps(n,t,r),!0}return!1}function js(e,t,n,r){if(r={lane:2,revertLane:md(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ms(e)){if(t)throw Error(i(479))}else t=ai(e,n,r,2),t!==null&&_u(t,e,2)}function Ms(e){var t=e.alternate;return e===I||t!==null&&t===I}function Ns(e,t){xo=bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ps(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,it(e,n)}}var Fs={readContext:aa,use:zo,useCallback:Do,useContext:Do,useEffect:Do,useImperativeHandle:Do,useLayoutEffect:Do,useInsertionEffect:Do,useMemo:Do,useReducer:Do,useRef:Do,useState:Do,useDebugValue:Do,useDeferredValue:Do,useTransition:Do,useSyncExternalStore:Do,useId:Do,useHostTransitionStatus:Do,useFormState:Do,useActionState:Do,useOptimistic:Do,useMemoCache:Do,useCacheRefresh:Do};Fs.useEffectEvent=Do;var Is={readContext:aa,use:zo,useCallback:function(e,t){return Io().memoizedState=[e,t===void 0?null:t],e},useContext:aa,useEffect:z,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ps(4194308,4,U.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ps(4194308,4,e,t)},useInsertionEffect:function(e,t){ps(4,2,e,t)},useMemo:function(e,t){var n=Io();t=t===void 0?null:t;var r=e();if(So){Be(!0);try{e()}finally{Be(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Io();if(n!==void 0){var i=n(t);if(So){Be(!0);try{n(t)}finally{Be(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Os.bind(null,I,e),[r.memoizedState,e]},useRef:function(e){var t=Io();return e={current:e},t.memoizedState=e},useState:function(e){e=Zo(e);var t=e.queue,n=ks.bind(null,I,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:_s,useDeferredValue:function(e,t){return W(Io(),e,t)},useTransition:function(){var e=Zo(!1);return e=K.bind(null,I,e.queue,!0,!1),Io().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=I,a=Io();if(Ri){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),zl===null)throw Error(i(349));J&127||Ko(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,z(Jo.bind(null,r,o,e),[e]),r.flags|=2048,ds(9,{destroy:void 0},qo.bind(null,r,o,n,t),null),n},useId:function(){var e=Io(),t=zl.identifierPrefix;if(Ri){var n=Ai,r=ki;n=(r&~(1<<32-He(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Co++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=Eo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:ws,useFormState:os,useActionState:os,useOptimistic:function(e){var t=Io();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=js.bind(null,I,!0,n),n.dispatch=t,[e,t]},useMemoCache:Bo,useCacheRefresh:function(){return Io().memoizedState=Ds.bind(null,I)},useEffectEvent:function(e){var t=Io(),n={impl:e};return t.memoizedState=n,function(){if(Rl&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},Ls={readContext:aa,use:zo,useCallback:vs,useContext:aa,useEffect:B,useImperativeHandle:gs,useInsertionEffect:H,useLayoutEffect:hs,useMemo:ys,useReducer:Ho,useRef:fs,useState:function(){return Ho(Vo)},useDebugValue:_s,useDeferredValue:function(e,t){return G(L(),vo.memoizedState,e,t)},useTransition:function(){var e=Ho(Vo)[0],t=L().memoizedState;return[typeof e==`boolean`?e:Ro(e),t]},useSyncExternalStore:Go,useId:Ts,useHostTransitionStatus:ws,useFormState:ss,useActionState:ss,useOptimistic:function(e,t){return Qo(L(),vo,e,t)},useMemoCache:Bo,useCacheRefresh:Es};Ls.useEffectEvent=ms;var Rs={readContext:aa,use:zo,useCallback:vs,useContext:aa,useEffect:B,useImperativeHandle:gs,useInsertionEffect:H,useLayoutEffect:hs,useMemo:ys,useReducer:Wo,useRef:fs,useState:function(){return Wo(Vo)},useDebugValue:_s,useDeferredValue:function(e,t){var n=L();return vo===null?W(n,e,t):G(n,vo.memoizedState,e,t)},useTransition:function(){var e=Wo(Vo)[0],t=L().memoizedState;return[typeof e==`boolean`?e:Ro(e),t]},useSyncExternalStore:Go,useId:Ts,useHostTransitionStatus:ws,useFormState:us,useActionState:us,useOptimistic:function(e,t){var n=L();return vo===null?(n.baseState=e,[e,n.queue.dispatch]):Qo(n,vo,e,t)},useMemoCache:Bo,useCacheRefresh:Es};Rs.useEffectEvent=ms;function zs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:f({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Bs={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=hu(),i=qa(r);i.payload=t,n!=null&&(i.callback=n),t=Ja(e,i,r),t!==null&&(_u(t,e,r),Ya(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=hu(),i=qa(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Ja(e,i,r),t!==null&&(_u(t,e,r),Ya(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=hu(),r=qa(n);r.tag=2,t!=null&&(r.callback=t),t=Ja(e,r,n),t!==null&&(_u(t,e,n),Ya(t,e,n))}};function Vs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Er(n,r)||!Er(i,a):!0}function Hs(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Bs.enqueueReplaceState(t,t.state,null)}function Us(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=f({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Ws(e){$r(e)}function Gs(e){console.error(e)}function Ks(e){$r(e)}function qs(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function Js(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Ys(e,t,n){return n=qa(n),n.tag=3,n.payload={element:null},n.callback=function(){qs(e,t)},n}function Xs(e){return e=qa(e),e.tag=3,e}function Zs(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){Js(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){Js(t,n,r),typeof i!=`function`&&(au===null?au=new Set([this]):au.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function Qs(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&na(t,n,a,!0),n=so.current,n!==null){switch(n.tag){case 31:case 13:return co===null?ku():n.alternate===null&&Kl===0&&(Kl=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===ka?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Ju(e,r,a)),!1;case 22:return n.flags|=65536,r===ka?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),Ju(e,r,a)),!1}throw Error(i(435,n.tag))}return Ju(e,r,a),ku(),!1}if(Ri)return t=so.current,t===null?(r!==Vi&&(t=Error(i(423),{cause:r}),Ji(xi(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=xi(r,n),a=Ys(e.stateNode,r,a),Xa(e,a),Kl!==4&&(Kl=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==Vi&&(e=Error(i(422),{cause:r}),Ji(xi(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=xi(o,n),Ql===null?Ql=[o]:Ql.push(o),Kl!==4&&(Kl=2),t===null)return!0;r=xi(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Ys(n.stateNode,r,e),Xa(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(au===null||!au.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Xs(a),Zs(a,e,n,r),Xa(n,a),!1}n=n.return}while(n!==null);return!1}var $s=Error(i(461)),ec=!1;function tc(e,t,n,r){t.child=e===null?Ua(t,null,n,r):Ha(t,e.child,n,r)}function nc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return ia(t),r=ko(e,t,n,o,a,i),s=No(),e!==null&&!ec?(Po(e,t,i),Ec(e,t,i)):(Ri&&s&&Ni(t),t.flags|=1,tc(e,t,r,i),t.child)}function rc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!fi(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,ic(e,t,a,r,i)):(e=hi(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!Dc(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Er:n,n(o,r)&&e.ref===t.ref)return Ec(e,t,i)}return t.flags|=1,e=pi(a,r),e.ref=t.ref,e.return=t,t.child=e}function ic(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Er(a,r)&&e.ref===t.ref)if(ec=!1,t.pendingProps=r=a,Dc(e,i))e.flags&131072&&(ec=!0);else return t.lanes=e.lanes,Ec(e,t,i)}return fc(e,t,n,r,i)}function ac(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return sc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&wa(t,a===null?null:a.cachePool),a===null?ao():io(t,a),fo(t);else return r=t.lanes=536870912,sc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&wa(t,null),ao(),po(t)):(wa(t,a.cachePool),io(t,a),po(t),t.memoizedState=null);return tc(e,t,i,n),t.child}function oc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function sc(e,t,n,r,i){var a=Ca();return a=a===null?null:{parent:da._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&wa(t,null),ao(),fo(t),e!==null&&na(e,t,r,!0),t.childLanes=i,null}function cc(e,t){return t=xc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function lc(e,t,n){return Ha(t,e.child,null,n),e=cc(t,t.pendingProps),e.flags|=2,mo(t),t.memoizedState=null,e}function uc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(Ri){if(r.mode===`hidden`)return e=cc(t,r),t.lanes=536870912,oc(null,e);if(uo(t),(e=Li)?(e=lf(e,Bi),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Oi===null?null:{id:ki,overflow:Ai},retryLane:536870912,hydrationErrors:null},n=vi(e),n.return=t,t.child=n,Ii=t,Li=null)):e=null,e===null)throw Hi(t);return t.lanes=536870912,null}return cc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(uo(t),a)if(t.flags&256)t.flags&=-257,t=lc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558));else if(ec||na(e,t,n,!1),a=(n&e.childLanes)!==0,ec||a){if(r=zl,r!==null&&(s=at(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,oi(e,s),_u(r,e,s),$s;ku(),t=lc(e,t,n)}else e=o.treeContext,Li=pf(s.nextSibling),Ii=t,Ri=!0,zi=null,Bi=!1,e!==null&&Fi(t,e),t=cc(t,r),t.flags|=4096;return t}return e=pi(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function dc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function fc(e,t,n,r,i){return ia(t),n=ko(e,t,n,r,void 0,i),r=No(),e!==null&&!ec?(Po(e,t,i),Ec(e,t,i)):(Ri&&r&&Ni(t),t.flags|=1,tc(e,t,n,i),t.child)}function pc(e,t,n,r,i,a){return ia(t),t.updateQueue=null,n=jo(t,r,n,i),Ao(e),r=No(),e!==null&&!ec?(Po(e,t,a),Ec(e,t,a)):(Ri&&r&&Ni(t),t.flags|=1,tc(e,t,n,a),t.child)}function mc(e,t,n,r,i){if(ia(t),t.stateNode===null){var a=li,o=n.contextType;typeof o==`object`&&o&&(a=aa(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Bs,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Ga(t),o=n.contextType,a.context=typeof o==`object`&&o?aa(o):li,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(zs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&Bs.enqueueReplaceState(a,a.state,null),$a(t,r,a,i),Qa(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Us(n,s);a.props=c;var l=a.context,u=n.contextType;o=li,typeof u==`object`&&u&&(o=aa(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Hs(t,a,r,o),Wa=!1;var f=t.memoizedState;a.state=f,$a(t,r,a,i),Qa(),l=t.memoizedState,s||f!==l||Wa?(typeof d==`function`&&(zs(t,n,d,r),l=t.memoizedState),(c=Wa||Vs(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Ka(e,t),o=t.memoizedProps,u=Us(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=li,typeof l==`object`&&l&&(c=aa(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Hs(t,a,r,c),Wa=!1,f=t.memoizedState,a.state=f,$a(t,r,a,i),Qa();var p=t.memoizedState;o!==d||f!==p||Wa||e!==null&&e.dependencies!==null&&ra(e.dependencies)?(typeof s==`function`&&(zs(t,n,s,r),p=t.memoizedState),(u=Wa||Vs(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&ra(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,dc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Ha(t,e.child,null,i),t.child=Ha(t,null,n,i)):tc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=Ec(e,t,i),e}function hc(e,t,n,r){return Ki(),t.flags|=256,tc(e,t,n,r),t.child}var gc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function _c(e){return{baseLanes:e,cachePool:Ta()}}function vc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=Xl),e}function yc(e,t,n){var r=t.pendingProps,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(ho.current&2)),s&&(a=!0,t.flags&=-129),s=!!(t.flags&32),t.flags&=-33,e===null){if(Ri){if(a?lo(t):po(t),(e=Li)?(e=lf(e,Bi),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Oi===null?null:{id:ki,overflow:Ai},retryLane:536870912,hydrationErrors:null},n=vi(e),n.return=t,t.child=n,Ii=t,Li=null)):e=null,e===null)throw Hi(t);return df(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(po(t),a=t.mode,c=xc({mode:`hidden`,children:c},a),r=gi(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=_c(n),r.childLanes=vc(e,s,n),t.memoizedState=gc,oc(null,r)):(lo(t),bc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(lo(t),t.flags&=-257,t=Sc(e,t,n)):t.memoizedState===null?(po(t),c=r.fallback,a=t.mode,r=xc({mode:`visible`,children:r.children},a),c=gi(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Ha(t,e.child,null,n),r=t.child,r.memoizedState=_c(n),r.childLanes=vc(e,s,n),t.memoizedState=gc,t=oc(null,r)):(po(t),t.child=e.child,t.flags|=128,t=null);else if(lo(t),df(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Ji({value:r,source:null,stack:null}),t=Sc(e,t,n)}else if(ec||na(e,t,n,!1),s=(n&e.childLanes)!==0,ec||s){if(s=zl,s!==null&&(r=at(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,oi(e,r),_u(s,e,r),$s;uf(c)||ku(),t=Sc(e,t,n)}else uf(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,Li=pf(c.nextSibling),Ii=t,Ri=!0,zi=null,Bi=!1,e!==null&&Fi(t,e),t=bc(t,r.children),t.flags|=4096);return t}return a?(po(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=pi(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=gi(c,a,n,null),c.flags|=2):c=pi(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,oc(null,r),r=t.child,c=e.child.memoizedState,c===null?c=_c(n):(a=c.cachePool,a===null?a=Ta():(l=da._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=vc(e,s,n),t.memoizedState=gc,oc(e.child,r)):(lo(t),n=e.child,e=n.sibling,n=pi(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function bc(e,t){return t=xc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function xc(e,t){return e=di(22,e,null,t),e.lanes=0,e}function Sc(e,t,n){return Ha(t,e.child,null,n),e=bc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Cc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),ea(e.return,t,n)}function wc(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function Tc(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=ho.current,s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,se(ho,o),tc(e,t,r,n),r=Ri?Ti:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Cc(e,n,t);else if(e.tag===19)Cc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&go(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),wc(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&go(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}wc(t,!0,n,null,a,r);break;case`together`:wc(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function Ec(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ql|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(na(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=pi(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=pi(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Dc(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&ra(e)))}function Oc(e,t,n){switch(t.tag){case 3:fe(t,t.stateNode.containerInfo),Qi(t,da,e.memoizedState.cache),Ki();break;case 27:case 5:me(t);break;case 4:fe(t,t.stateNode.containerInfo);break;case 10:Qi(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,uo(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(lo(t),e=Ec(e,t,n),e===null?null:e.sibling):yc(e,t,n):(lo(t),t.flags|=128,null);lo(t);break;case 19:var i=!!(e.flags&128);if(r=(n&t.childLanes)!==0,r||=(na(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return Tc(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),se(ho,ho.current),r)break;return null;case 22:return t.lanes=0,ac(e,t,n,t.pendingProps);case 24:Qi(t,da,e.memoizedState.cache)}return Ec(e,t,n)}function kc(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)ec=!0;else{if(!Dc(e,n)&&!(t.flags&128))return ec=!1,Oc(e,t,n);ec=!!(e.flags&131072)}else ec=!1,Ri&&t.flags&1048576&&Mi(t,Ti,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=Ma(t.elementType),t.type=e,typeof e==`function`)fi(e)?(r=Us(e,r),t.tag=1,t=mc(null,t,e,r,n)):(t.tag=0,t=fc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===x){t.tag=11,t=nc(null,t,e,r,n);break a}if(a===w){t.tag=14,t=rc(null,t,e,r,n);break a}}throw t=A(e)||e,Error(i(306,t,``))}}return t;case 0:return fc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Us(r,t.pendingProps),mc(e,t,r,a,n);case 3:a:{if(fe(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,Ka(e,t),$a(t,r,null,n);var s=t.memoizedState;if(r=s.cache,Qi(t,da,r),r!==o.cache&&ta(t,[da],n,!0),Qa(),r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=hc(e,t,r,n);break a}else if(r!==a){a=xi(Error(i(424)),t),Ji(a),t=hc(e,t,r,n);break a}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(Li=pf(e.firstChild),Ii=t,Ri=!0,zi=null,Bi=!0,n=Ua(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ki(),r===a){t=Ec(e,t,n);break a}tc(e,t,r,n)}t=t.child}return t;case 26:return dc(e,t),e===null?(n=Pf(t.type,null,t.pendingProps,null))?t.memoizedState=n:Ri||(n=t.type,e=t.pendingProps,r=Gd(ue.current).createElement(n),r[dt]=t,r[ft]=e,zd(r,n,e),wt(r),t.stateNode=r):t.memoizedState=Pf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return me(t),e===null&&Ri&&(r=t.stateNode=_f(t.type,t.pendingProps,ue.current),Ii=t,Bi=!0,a=Li,nf(t.type)?(mf=a,Li=pf(r.firstChild)):Li=a),tc(e,t,t.pendingProps.children,n),dc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ri&&((a=r=Li)&&(r=sf(r,t.type,t.pendingProps,Bi),r===null?a=!1:(t.stateNode=r,Ii=t,Li=pf(r.firstChild),Bi=!1,a=!0)),a||Hi(t)),me(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Jd(a,o)?r=null:s!==null&&Jd(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=ko(e,t,Mo,null,null,n),np._currentValue=a),dc(e,t),tc(e,t,r,n),t.child;case 6:return e===null&&Ri&&((e=n=Li)&&(n=cf(n,t.pendingProps,Bi),n===null?e=!1:(t.stateNode=n,Ii=t,Li=null,e=!0)),e||Hi(t)),null;case 13:return yc(e,t,n);case 4:return fe(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ha(t,null,r,n):tc(e,t,r,n),t.child;case 11:return nc(e,t,t.type,t.pendingProps,n);case 7:return tc(e,t,t.pendingProps,n),t.child;case 8:return tc(e,t,t.pendingProps.children,n),t.child;case 12:return tc(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,Qi(t,t.type,r.value),tc(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,ia(t),a=aa(a),r=r(a),t.flags|=1,tc(e,t,r,n),t.child;case 14:return rc(e,t,t.type,t.pendingProps,n);case 15:return ic(e,t,t.type,t.pendingProps,n);case 19:return Tc(e,t,n);case 31:return uc(e,t,n);case 22:return ac(e,t,n,t.pendingProps);case 24:return ia(t),r=aa(da),e===null?(a=Ca(),a===null&&(a=zl,o=fa(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Ga(t),Qi(t,da,a)):((e.lanes&n)!==0&&(Ka(e,t),$a(t,null,null,n),Qa()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,Qi(t,da,r),r!==a.cache&&ta(t,[da],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),Qi(t,da,r))),tc(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Ac(e){e.flags|=4}function jc(e,t,n,r,i){if((t=!!(e.mode&32))&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i)if(e.stateNode.complete)e.flags|=8192;else if(Eu())e.flags|=8192;else throw Na=ka,Da}else e.flags&=-16777217}function Mc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Jf(t))if(Eu())e.flags|=8192;else throw Na=ka,Da}function Nc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:$e(),e.lanes|=t,Zl|=t)}function Pc(e,t){if(!Ri)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Fc(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ic(e,t,n){var r=t.pendingProps;switch(Pi(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fc(t),null;case 1:return Fc(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),$i(da),pe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Gi(t)?Ac(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,qi())),Fc(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(Ac(t),o===null?(Fc(t),jc(t,a,null,r,n)):(Fc(t),Mc(t,o))):o?o===e.memoizedState?(Fc(t),t.flags&=-16777217):(Ac(t),Fc(t),Mc(t,o)):(e=e.memoizedProps,e!==r&&Ac(t),Fc(t),jc(t,a,e,r,n)),null;case 27:if(he(t),n=ue.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Ac(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Fc(t),null}e=ce.current,Gi(t)?Ui(t,e):(e=_f(a,r,n),t.stateNode=e,Ac(t))}return Fc(t),null;case 5:if(he(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Ac(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Fc(t),null}if(o=ce.current,Gi(t))Ui(t,o);else{var s=Gd(ue.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[dt]=t,o[ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(zd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Ac(t)}}return Fc(t),jc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Ac(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ue.current,Gi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ii,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[dt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Id(e.nodeValue,n)),e||Hi(t,!0)}else e=Gd(e).createTextNode(r),e[dt]=t,t.stateNode=e}return Fc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Gi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[dt]=t}else Ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),e=!1}else n=qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(mo(t),t):(mo(t),null);if(t.flags&128)throw Error(i(558))}return Fc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Gi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[dt]=t}else Ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),a=!1}else a=qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(mo(t),t):(mo(t),null)}return mo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Nc(t,t.updateQueue),Fc(t),null);case 4:return pe(),e===null&&Ed(t.stateNode.containerInfo),Fc(t),null;case 10:return $i(t.type),Fc(t),null;case 19:if(oe(ho),r=t.memoizedState,r===null)return Fc(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null)if(a)Pc(r,!1);else{if(Kl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=go(e),o!==null){for(t.flags|=128,Pc(r,!1),e=o.updateQueue,t.updateQueue=e,Nc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)mi(n,e),n=n.sibling;return se(ho,ho.current&1|2),Ri&&ji(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Oe()>ru&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304)}else{if(!a)if(e=go(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Nc(t,e),Pc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!Ri)return Fc(t),null}else 2*Oe()-r.renderingStartTime>ru&&n!==536870912&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Fc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Oe(),e.sibling=null,n=ho.current,se(ho,a?n&1|2:n&1),Ri&&ji(t,r.treeForkCount),e);case 22:case 23:return mo(t),oo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Fc(t),t.subtreeFlags&6&&(t.flags|=8192)):Fc(t),n=t.updateQueue,n!==null&&Nc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&oe(Sa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),$i(da),Fc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Lc(e,t){switch(Pi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return $i(da),pe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return he(t),null;case 31:if(t.memoizedState!==null){if(mo(t),t.alternate===null)throw Error(i(340));Ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(mo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(ho),null;case 4:return pe(),null;case 10:return $i(t.type),null;case 22:case 23:return mo(t),oo(),e!==null&&oe(Sa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return $i(da),null;case 25:return null;default:return null}}function Rc(e,t){switch(Pi(t),t.tag){case 3:$i(da),pe();break;case 26:case 27:case 5:he(t);break;case 4:pe();break;case 31:t.memoizedState!==null&&mo(t);break;case 13:mo(t);break;case 19:oe(ho);break;case 10:$i(t.type);break;case 22:case 23:mo(t),oo(),e!==null&&oe(Sa);break;case 24:$i(da)}}function zc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){qu(t,t.return,e)}}function Bc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){qu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){qu(t,t.return,e)}}function Vc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{to(t,n)}catch(t){qu(e,e.return,t)}}}function Hc(e,t,n){n.props=Us(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){qu(e,t,n)}}function Uc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){qu(e,t,n)}}function Wc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){qu(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){qu(e,t,n)}else n.current=null}function Gc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){qu(e,e.return,t)}}function Kc(e,t,n){try{var r=e.stateNode;Bd(r,e.type,n,t),r[ft]=t}catch(t){qu(e,e.return,t)}}function qc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&nf(e.type)||e.tag===4}function Jc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||qc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&nf(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Yc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=an));else if(r!==4&&(r===27&&nf(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Yc(e,t,n),e=e.sibling;e!==null;)Yc(e,t,n),e=e.sibling}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&nf(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);zd(t,r,n),t[dt]=e,t[ft]=n}catch(t){qu(e,e.return,t)}}var Qc=!1,$c=!1,el=!1,tl=typeof WeakSet==`function`?WeakSet:Set,nl=null;function rl(e,t){if(e=e.containerInfo,Ud=dp,e=Ar(e),jr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Wd={focusedElem:e,selectionRange:n},dp=!1,nl=t;nl!==null;)if(t=nl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,nl=e;else for(;nl!==null;){switch(t=nl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Us(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){qu(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)of(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:of(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,nl=e;break}nl=t.return}}function il(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:yl(e,n),r&4&&zc(5,n);break;case 1:if(yl(e,n),r&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){qu(n,n.return,e)}else{var i=Us(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){qu(n,n.return,e)}}r&64&&Vc(n),r&512&&Uc(n,n.return);break;case 3:if(yl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{to(e,t)}catch(e){qu(n,n.return,e)}}break;case 27:t===null&&r&4&&Zc(n);case 26:case 5:yl(e,n),t===null&&r&4&&Gc(n),r&512&&Uc(n,n.return);break;case 12:yl(e,n);break;case 31:yl(e,n),r&4&&ul(e,n);break;case 13:yl(e,n),r&4&&dl(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Zu.bind(null,n),ff(e,n))));break;case 22:if(r=n.memoizedState!==null||Qc,!r){t=t!==null&&t.memoizedState!==null||$c,i=Qc;var a=$c;Qc=r,($c=t)&&!a?xl(e,n,!!(n.subtreeFlags&8772)):yl(e,n),Qc=i,$c=a}break;case 30:break;default:yl(e,n)}}function al(e){var t=e.alternate;t!==null&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&yt(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var ol=null,sl=!1;function cl(e,t,n){for(n=n.child;n!==null;)ll(e,t,n),n=n.sibling}function ll(e,t,n){if(ze&&typeof ze.onCommitFiberUnmount==`function`)try{ze.onCommitFiberUnmount(Le,n)}catch{}switch(n.tag){case 26:$c||Wc(n,t),cl(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:$c||Wc(n,t);var r=ol,i=sl;nf(n.type)&&(ol=n.stateNode,sl=!1),cl(e,t,n),vf(n.stateNode),ol=r,sl=i;break;case 5:$c||Wc(n,t);case 6:if(r=ol,i=sl,ol=null,cl(e,t,n),ol=r,sl=i,ol!==null)if(sl)try{(ol.nodeType===9?ol.body:ol.nodeName===`HTML`?ol.ownerDocument.body:ol).removeChild(n.stateNode)}catch(e){qu(n,t,e)}else try{ol.removeChild(n.stateNode)}catch(e){qu(n,t,e)}break;case 18:ol!==null&&(sl?(e=ol,rf(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Lp(e)):rf(ol,n.stateNode));break;case 4:r=ol,i=sl,ol=n.stateNode.containerInfo,sl=!0,cl(e,t,n),ol=r,sl=i;break;case 0:case 11:case 14:case 15:Bc(2,n,t),$c||Bc(4,n,t),cl(e,t,n);break;case 1:$c||(Wc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Hc(n,t,r)),cl(e,t,n);break;case 21:cl(e,t,n);break;case 22:$c=(r=$c)||n.memoizedState!==null,cl(e,t,n),$c=r;break;default:cl(e,t,n)}}function ul(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Lp(e)}catch(e){qu(t,t.return,e)}}}function dl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Lp(e)}catch(e){qu(t,t.return,e)}}function fl(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new tl),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new tl),t;default:throw Error(i(435,e.tag))}}function pl(e,t){var n=fl(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Qu.bind(null,e,t);t.then(r,r)}})}function ml(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(nf(c.type)){ol=c.stateNode,sl=!1;break a}break;case 5:ol=c.stateNode,sl=!1;break a;case 3:case 4:ol=c.stateNode.containerInfo,sl=!0;break a}c=c.return}if(ol===null)throw Error(i(160));ll(o,s,a),ol=null,sl=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)gl(t,e),t=t.sibling}var hl=null;function gl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:ml(t,e),_l(e),r&4&&(Bc(3,e,e.return),zc(3,e),Bc(5,e,e.return));break;case 1:ml(t,e),_l(e),r&512&&($c||n===null||Wc(n,n.return)),r&64&&Qc&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=hl;if(ml(t,e),_l(e),r&512&&($c||n===null||Wc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null)if(r===null)if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[vt]||o[dt]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),zd(o,r,n),o[dt]=e,wt(o),r=o;break a;case`link`:var s=Gf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),zd(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Gf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),zd(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[dt]=e,wt(o),r=o}e.stateNode=r}else Kf(a,e.type,e.stateNode);else e.stateNode=Vf(a,r,e.memoizedProps);else o===r?r===null&&e.stateNode!==null&&Kc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Kf(a,e.type,e.stateNode):Vf(a,r,e.memoizedProps))}break;case 27:ml(t,e),_l(e),r&512&&($c||n===null||Wc(n,n.return)),n!==null&&r&4&&Kc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(ml(t,e),_l(e),r&512&&($c||n===null||Wc(n,n.return)),e.flags&32){a=e.stateNode;try{Xt(a,``)}catch(t){qu(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Kc(e,a,n===null?a:n.memoizedProps)),r&1024&&(el=!0);break;case 6:if(ml(t,e),_l(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){qu(e,e.return,t)}}break;case 3:if(Wf=null,a=hl,hl=xf(t.containerInfo),ml(t,e),hl=a,_l(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Lp(t.containerInfo)}catch(t){qu(e,e.return,t)}el&&(el=!1,vl(e));break;case 4:r=hl,hl=xf(e.stateNode.containerInfo),ml(t,e),_l(e),hl=r;break;case 12:ml(t,e),_l(e);break;case 31:ml(t,e),_l(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,pl(e,r)));break;case 13:ml(t,e),_l(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(tu=Oe()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,pl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=Qc,d=$c;if(Qc=u||a,$c=d||l,ml(t,e),$c=d,Qc=u,_l(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||Qc||$c||bl(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){qu(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){qu(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?af(m,!0):af(l.stateNode,!1)}catch(e){qu(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,pl(e,n))));break;case 19:ml(t,e),_l(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,pl(e,r)));break;case 30:break;case 21:break;default:ml(t,e),_l(e)}}function _l(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(qc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Xc(e,Jc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Xt(o,``),n.flags&=-33),Xc(e,Jc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;Yc(e,Jc(e),s);break;default:throw Error(i(161))}}catch(t){qu(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function vl(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;vl(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function yl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)il(e,t.alternate,t),t=t.sibling}function bl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Bc(4,t,t.return),bl(t);break;case 1:Wc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Hc(t,t.return,n),bl(t);break;case 27:vf(t.stateNode);case 26:case 5:Wc(t,t.return),bl(t);break;case 22:t.memoizedState===null&&bl(t);break;case 30:bl(t);break;default:bl(t)}e=e.sibling}}function xl(e,t,n){for(n&&=!!(t.subtreeFlags&8772),t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:xl(i,a,n),zc(4,a);break;case 1:if(xl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){qu(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)eo(c[i],s)}catch(e){qu(r,r.return,e)}}n&&o&64&&Vc(a),Uc(a,a.return);break;case 27:Zc(a);case 26:case 5:xl(i,a,n),n&&r===null&&o&4&&Gc(a),Uc(a,a.return);break;case 12:xl(i,a,n);break;case 31:xl(i,a,n),n&&o&4&&ul(i,a);break;case 13:xl(i,a,n),n&&o&4&&dl(i,a);break;case 22:a.memoizedState===null&&xl(i,a,n),Uc(a,a.return);break;case 30:break;default:xl(i,a,n)}t=t.sibling}}function Sl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&pa(n))}function Cl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&pa(e))}function wl(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Tl(e,t,n,r),t=t.sibling}function Tl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:wl(e,t,n,r),i&2048&&zc(9,t);break;case 1:wl(e,t,n,r);break;case 3:wl(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&pa(e)));break;case 12:if(i&2048){wl(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){qu(t,t.return,e)}}else wl(e,t,n,r);break;case 31:wl(e,t,n,r);break;case 13:wl(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?wl(e,t,n,r):(a._visibility|=2,El(e,t,n,r,!!(t.subtreeFlags&10256)||!1)):a._visibility&2?wl(e,t,n,r):Dl(e,t),i&2048&&Sl(o,t);break;case 24:wl(e,t,n,r),i&2048&&Cl(t.alternate,t);break;default:wl(e,t,n,r)}}function El(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:El(a,o,s,c,i),zc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,El(a,o,s,c,i)):u._visibility&2?El(a,o,s,c,i):Dl(a,o),i&&l&2048&&Sl(o.alternate,o);break;case 24:El(a,o,s,c,i),i&&l&2048&&Cl(o.alternate,o);break;default:El(a,o,s,c,i)}t=t.sibling}}function Dl(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:Dl(n,r),i&2048&&Sl(r.alternate,r);break;case 24:Dl(n,r),i&2048&&Cl(r.alternate,r);break;default:Dl(n,r)}t=t.sibling}}var Ol=8192;function kl(e,t,n){if(e.subtreeFlags&Ol)for(e=e.child;e!==null;)Al(e,t,n),e=e.sibling}function Al(e,t,n){switch(e.tag){case 26:kl(e,t,n),e.flags&Ol&&e.memoizedState!==null&&Yf(n,hl,e.memoizedState,e.memoizedProps);break;case 5:kl(e,t,n);break;case 3:case 4:var r=hl;hl=xf(e.stateNode.containerInfo),kl(e,t,n),hl=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Ol,Ol=16777216,kl(e,t,n),Ol=r):kl(e,t,n));break;default:kl(e,t,n)}}function jl(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Ml(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];nl=r,Fl(r,e)}jl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Nl(e),e=e.sibling}function Nl(e){switch(e.tag){case 0:case 11:case 15:Ml(e),e.flags&2048&&Bc(9,e,e.return);break;case 3:Ml(e);break;case 12:Ml(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Pl(e)):Ml(e);break;default:Ml(e)}}function Pl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];nl=r,Fl(r,e)}jl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Bc(8,t,t.return),Pl(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Pl(t));break;default:Pl(t)}e=e.sibling}}function Fl(e,t){for(;nl!==null;){var n=nl;switch(n.tag){case 0:case 11:case 15:Bc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:pa(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,nl=r;else a:for(n=e;nl!==null;){r=nl;var i=r.sibling,a=r.return;if(al(r),r===n){nl=null;break a}if(i!==null){i.return=a,nl=i;break a}nl=a}}}var Il={getCacheForType:function(e){var t=aa(da),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return aa(da).controller.signal}},Ll=typeof WeakMap==`function`?WeakMap:Map,Rl=0,zl=null,q=null,J=0,Bl=0,Vl=null,Hl=!1,Ul=!1,Wl=!1,Gl=0,Kl=0,ql=0,Jl=0,Yl=0,Xl=0,Zl=0,Ql=null,$l=null,eu=!1,tu=0,nu=0,ru=1/0,iu=null,au=null,ou=0,su=null,cu=null,lu=0,uu=0,du=null,fu=null,pu=0,mu=null;function hu(){return Rl&2&&J!==0?J&-J:j.T===null?ct():md()}function gu(){if(Xl===0)if(!(J&536870912)||Ri){var e=qe;qe<<=1,!(qe&3932160)&&(qe=262144),Xl=e}else Xl=536870912;return e=so.current,e!==null&&(e.flags|=32),Xl}function _u(e,t,n){(e===zl&&(Bl===2||Bl===9)||e.cancelPendingCommit!==null)&&(wu(e,0),xu(e,J,Xl,!1)),tt(e,n),(!(Rl&2)||e!==zl)&&(e===zl&&(!(Rl&2)&&(Jl|=n),Kl===4&&xu(e,J,Xl,!1)),od(e))}function vu(e,t,n){if(Rl&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||Ze(e,t),a=r?Mu(e,t):Au(e,t,!0),o=r;do{if(a===0){Ul&&!r&&xu(e,t,0,!1);break}if(n=e.current.alternate,o&&!bu(n)){a=Au(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=Ql;var l=c.current.memoizedState.isDehydrated;if(l&&(wu(c,s).flags|=256),s=Au(c,s,!1),s!==2){if(Wl&&!l){c.errorRecoveryDisabledLanes|=o,Jl|=o,a=4;break a}o=$l,$l=a,o!==null&&($l===null?$l=o:$l.push.apply($l,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){wu(e,0),xu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:xu(r,t,Xl,!Hl);break a;case 2:$l=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=tu+300-Oe(),10<a)){if(xu(r,t,Xl,!Hl),Xe(r,0,!0)!==0)break a;lu=t,r.timeoutHandle=Zd(yu.bind(null,r,n,$l,iu,eu,t,Xl,Jl,Zl,Hl,o,`Throttled`,-0,0),a);break a}yu(r,n,$l,iu,eu,t,Xl,Jl,Zl,Hl,o,null,-0,0)}break}while(1);od(e)}function yu(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:an},Al(t,a,d);var m=(a&62914560)===a?tu-Oe():(a&4194048)===a?nu-Oe():0;if(m=Zf(d,m),m!==null){lu=a,e.cancelPendingCommit=m(zu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),xu(e,a,o,!l);return}}zu(e,t,a,n,r,i,o,s,c)}function bu(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!Tr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function xu(e,t,n,r){t&=~Yl,t&=~Jl,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-He(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&rt(e,n,t)}function Su(){return Rl&6?!0:(sd(0,!1),!1)}function Cu(){if(q!==null){if(Bl===0)var e=q.return;else e=q,Zi=Xi=null,Fo(e),Ia=null,La=0,e=q;for(;e!==null;)Rc(e.alternate,e),e=e.return;q=null}}function wu(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,Qd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),lu=0,Cu(),zl=e,q=n=pi(e.current,null),J=t,Bl=0,Vl=null,Hl=!1,Ul=Ze(e,t),Wl=!1,Zl=Xl=Yl=Jl=ql=Kl=0,$l=Ql=null,eu=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-He(r),a=1<<i;t|=e[i],r&=~a}return Gl=t,ri(),n}function Tu(e,t){I=null,j.H=Fs,t===Ea||t===Oa?(t=Pa(),Bl=3):t===Da?(t=Pa(),Bl=4):Bl=t===$s?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Vl=t,q===null&&(Kl=1,qs(e,xi(t,e.current)))}function Eu(){var e=so.current;return e===null?!0:(J&4194048)===J?co===null:(J&62914560)===J||J&536870912?e===co:!1}function Du(){var e=j.H;return j.H=Fs,e===null?Fs:e}function Ou(){var e=j.A;return j.A=Il,e}function ku(){Kl=4,Hl||(J&4194048)!==J&&so.current!==null||(Ul=!0),!(ql&134217727)&&!(Jl&134217727)||zl===null||xu(zl,J,Xl,!1)}function Au(e,t,n){var r=Rl;Rl|=2;var i=Du(),a=Ou();(zl!==e||J!==t)&&(iu=null,wu(e,t)),t=!1;var o=Kl;a:do try{if(Bl!==0&&q!==null){var s=q,c=Vl;switch(Bl){case 8:Cu(),o=6;break a;case 3:case 2:case 9:case 6:so.current===null&&(t=!0);var l=Bl;if(Bl=0,Vl=null,Iu(e,s,c,l),n&&Ul){o=0;break a}break;default:l=Bl,Bl=0,Vl=null,Iu(e,s,c,l)}}ju(),o=Kl;break}catch(t){Tu(e,t)}while(1);return t&&e.shellSuspendCounter++,Zi=Xi=null,Rl=r,j.H=i,j.A=a,q===null&&(zl=null,J=0,ri()),o}function ju(){for(;q!==null;)Pu(q)}function Mu(e,t){var n=Rl;Rl|=2;var r=Du(),a=Ou();zl!==e||J!==t?(iu=null,ru=Oe()+500,wu(e,t)):Ul=Ze(e,t);a:do try{if(Bl!==0&&q!==null){t=q;var o=Vl;b:switch(Bl){case 1:Bl=0,Vl=null,Iu(e,t,o,1);break;case 2:case 9:if(Aa(o)){Bl=0,Vl=null,Fu(t);break}t=function(){Bl!==2&&Bl!==9||zl!==e||(Bl=7),od(e)},o.then(t,t);break a;case 3:Bl=7;break a;case 4:Bl=5;break a;case 7:Aa(o)?(Bl=0,Vl=null,Fu(t)):(Bl=0,Vl=null,Iu(e,t,o,7));break;case 5:var s=null;switch(q.tag){case 26:s=q.memoizedState;case 5:case 27:var c=q;if(s?Jf(s):c.stateNode.complete){Bl=0,Vl=null;var l=c.sibling;if(l!==null)q=l;else{var u=c.return;u===null?q=null:(q=u,Lu(u))}break b}}Bl=0,Vl=null,Iu(e,t,o,5);break;case 6:Bl=0,Vl=null,Iu(e,t,o,6);break;case 8:Cu(),Kl=6;break a;default:throw Error(i(462))}}Nu();break}catch(t){Tu(e,t)}while(1);return Zi=Xi=null,j.H=r,j.A=a,Rl=n,q===null?(zl=null,J=0,ri(),Kl):0}function Nu(){for(;q!==null&&!Ee();)Pu(q)}function Pu(e){var t=kc(e.alternate,e,Gl);e.memoizedProps=e.pendingProps,t===null?Lu(e):q=t}function Fu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=pc(n,t,t.pendingProps,t.type,void 0,J);break;case 11:t=pc(n,t,t.pendingProps,t.type.render,t.ref,J);break;case 5:Fo(t);default:Rc(n,t),t=q=mi(t,Gl),t=kc(n,t,Gl)}e.memoizedProps=e.pendingProps,t===null?Lu(e):q=t}function Iu(e,t,n,r){Zi=Xi=null,Fo(t),Ia=null,La=0;var i=t.return;try{if(Qs(e,i,t,n,J)){Kl=1,qs(e,xi(n,e.current)),q=null;return}}catch(t){if(i!==null)throw q=i,t;Kl=1,qs(e,xi(n,e.current)),q=null;return}t.flags&32768?(Ri||r===1?e=!0:Ul||J&536870912?e=!1:(Hl=e=!0,(r===2||r===9||r===3||r===6)&&(r=so.current,r!==null&&r.tag===13&&(r.flags|=16384))),Ru(t,e)):Lu(t)}function Lu(e){var t=e;do{if(t.flags&32768){Ru(t,Hl);return}e=t.return;var n=Ic(t.alternate,t,Gl);if(n!==null){q=n;return}if(t=t.sibling,t!==null){q=t;return}q=t=e}while(t!==null);Kl===0&&(Kl=5)}function Ru(e,t){do{var n=Lc(e.alternate,e);if(n!==null){n.flags&=32767,q=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){q=e;return}q=e=n}while(e!==null);Kl=6,q=null}function zu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Wu();while(ou!==0);if(Rl&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=ni,nt(e,n,o,s,c,l),e===zl&&(q=zl=null,J=0),cu=t,su=e,lu=n,uu=o,du=a,fu=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,$u(Me,function(){return Gu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=j.T,j.T=null,a=M.p,M.p=2,s=Rl,Rl|=4;try{rl(e,t,n)}finally{Rl=s,M.p=a,j.T=r}}ou=1,Bu(),Vu(),Hu()}}function Bu(){if(ou===1){ou=0;var e=su,t=cu,n=!!(t.flags&13878);if(t.subtreeFlags&13878||n){n=j.T,j.T=null;var r=M.p;M.p=2;var i=Rl;Rl|=4;try{gl(t,e);var a=Wd,o=Ar(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&kr(s.ownerDocument.documentElement,s)){if(c!==null&&jr(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Or(s,h),v=Or(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}dp=!!Ud,Wd=Ud=null}finally{Rl=i,M.p=r,j.T=n}}e.current=t,ou=2}}function Vu(){if(ou===2){ou=0;var e=su,t=cu,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=j.T,j.T=null;var r=M.p;M.p=2;var i=Rl;Rl|=4;try{il(e,t.alternate,t)}finally{Rl=i,M.p=r,j.T=n}}ou=3}}function Hu(){if(ou===4||ou===3){ou=0,De();var e=su,t=cu,n=lu,r=fu;t.subtreeFlags&10256||t.flags&10256?ou=5:(ou=0,cu=su=null,Uu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(au=null),st(n),t=t.stateNode,ze&&typeof ze.onCommitFiberRoot==`function`)try{ze.onCommitFiberRoot(Le,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=j.T,i=M.p,M.p=2,j.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{j.T=t,M.p=i}}lu&3&&Wu(),od(e),i=e.pendingLanes,n&261930&&i&42?e===mu?pu++:(pu=0,mu=e):pu=0,sd(0,!1)}}function Uu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,pa(t)))}function Wu(){return Bu(),Vu(),Hu(),Gu()}function Gu(){if(ou!==5)return!1;var e=su,t=uu;uu=0;var n=st(lu),r=j.T,a=M.p;try{M.p=32>n?32:n,j.T=null,n=du,du=null;var o=su,s=lu;if(ou=0,cu=su=null,lu=0,Rl&6)throw Error(i(331));var c=Rl;if(Rl|=4,Nl(o.current),Tl(o,o.current,s,n),Rl=c,sd(0,!1),ze&&typeof ze.onPostCommitFiberRoot==`function`)try{ze.onPostCommitFiberRoot(Le,o)}catch{}return!0}finally{M.p=a,j.T=r,Uu(e,t)}}function Ku(e,t,n){t=xi(n,t),t=Ys(e.stateNode,t,2),e=Ja(e,t,2),e!==null&&(tt(e,2),od(e))}function qu(e,t,n){if(e.tag===3)Ku(e,e,n);else for(;t!==null;){if(t.tag===3){Ku(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(au===null||!au.has(r))){e=xi(n,e),n=Xs(2),r=Ja(t,n,2),r!==null&&(Zs(n,r,t,e),tt(r,2),od(r));break}}t=t.return}}function Ju(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ll;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Wl=!0,i.add(n),e=Yu.bind(null,e,t,n),t.then(e,e))}function Yu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,zl===e&&(J&n)===n&&(Kl===4||Kl===3&&(J&62914560)===J&&300>Oe()-tu?!(Rl&2)&&wu(e,0):Yl|=n,Zl===J&&(Zl=0)),od(e)}function Xu(e,t){t===0&&(t=$e()),e=oi(e,t),e!==null&&(tt(e,t),od(e))}function Zu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Xu(e,n)}function Qu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Xu(e,n)}function $u(e,t){return we(e,t)}var ed=null,td=null,nd=!1,rd=!1,id=!1,ad=0;function od(e){e!==td&&e.next===null&&(td===null?ed=td=e:td=td.next=e),rd=!0,nd||(nd=!0,pd())}function sd(e,t){if(!id&&rd){id=!0;do for(var n=!1,r=ed;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-He(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,fd(r,a))}else a=J,a=Xe(r,r===zl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ze(r,a)||(n=!0,fd(r,a));r=r.next}while(n);id=!1}}function cd(){ld()}function ld(){rd=nd=!1;var e=0;ad!==0&&Xd()&&(e=ad);for(var t=Oe(),n=null,r=ed;r!==null;){var i=r.next,a=ud(r,t);a===0?(r.next=null,n===null?ed=i:n.next=i,i===null&&(td=n)):(n=r,(e!==0||a&3)&&(rd=!0)),r=i}ou!==0&&ou!==5||sd(e,!1),ad!==0&&(ad=0)}function ud(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-He(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=Qe(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=zl,n=J,n=Xe(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Bl===2||Bl===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&Te(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||Ze(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&Te(r),st(n)){case 2:case 8:n=je;break;case 32:n=Me;break;case 268435456:n=Pe;break;default:n=Me}return r=dd.bind(null,e),n=we(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&Te(r),e.callbackPriority=2,e.callbackNode=null,2}function dd(e,t){if(ou!==0&&ou!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Wu()&&e.callbackNode!==n)return null;var r=J;return r=Xe(e,e===zl?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(vu(e,r,t),ud(e,Oe()),e.callbackNode!=null&&e.callbackNode===n?dd.bind(null,e):null)}function fd(e,t){if(Wu())return null;vu(e,t,!0)}function pd(){ef(function(){Rl&6?we(Ae,cd):ld()})}function md(){if(ad===0){var e=ga;e===0&&(e=Ke,Ke<<=1,!(Ke&261888)&&(Ke=256)),ad=e}return ad}function hd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:rn(``+e)}function gd(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function _d(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=hd((i[ft]||null).action),o=r.submitter;o&&(t=(t=o[ft]||null)?hd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new Tn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(ad!==0){var e=o?gd(i,o):new FormData(i);xs(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?gd(i,o):new FormData(i),xs(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var vd=0;vd<Zr.length;vd++){var yd=Zr[vd];Qr(yd.toLowerCase(),`on`+(yd[0].toUpperCase()+yd.slice(1)))}Qr(Ur,`onAnimationEnd`),Qr(Wr,`onAnimationIteration`),Qr(Gr,`onAnimationStart`),Qr(`dblclick`,`onDoubleClick`),Qr(`focusin`,`onFocus`),Qr(`focusout`,`onBlur`),Qr(Kr,`onTransitionRun`),Qr(qr,`onTransitionStart`),Qr(Jr,`onTransitionCancel`),Qr(Yr,`onTransitionEnd`),Ot(`onMouseEnter`,[`mouseout`,`mouseover`]),Ot(`onMouseLeave`,[`mouseout`,`mouseover`]),Ot(`onPointerEnter`,[`pointerout`,`pointerover`]),Ot(`onPointerLeave`,[`pointerout`,`pointerover`]),Dt(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),Dt(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),Dt(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),Dt(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),Dt(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),Dt(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var bd=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),xd=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(bd));function Sd(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){$r(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){$r(e)}i.currentTarget=null,a=c}}}}function Cd(e,t){var n=t[mt];n===void 0&&(n=t[mt]=new Set);var r=e+`__bubble`;n.has(r)||(Dd(t,e,2,!1),n.add(r))}function wd(e,t,n){var r=0;t&&(r|=4),Dd(n,e,r,t)}var Td=`_reactListening`+Math.random().toString(36).slice(2);function Ed(e){if(!e[Td]){e[Td]=!0,Tt.forEach(function(t){t!==`selectionchange`&&(xd.has(t)||wd(t,!1,e),wd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Td]||(t[Td]=!0,wd(`selectionchange`,!1,t))}}function Dd(e,t,n,r){switch(vp(t)){case 2:var i=fp;break;case 8:i=pp;break;default:i=mp}n=i.bind(null,t,n,e),i=void 0,!mn||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Od(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=bt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}dn(function(){var r=a,i=sn(n),s=[];a:{var c=Xr.get(e);if(c!==void 0){var l=Tn,u=e;switch(e){case`keypress`:if(bn(n)===0)break a;case`keydown`:case`keyup`:l=Un;break;case`focusin`:u=`focus`,l=Pn;break;case`focusout`:u=`blur`,l=Pn;break;case`beforeblur`:case`afterblur`:l=Pn;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=Mn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=Nn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Gn;break;case Ur:case Wr:case Gr:l=Fn;break;case Yr:l=Kn;break;case`scroll`:case`scrollend`:l=Dn;break;case`wheel`:l=qn;break;case`copy`:case`cut`:case`paste`:l=In;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=Wn;break;case`toggle`:case`beforetoggle`:l=Jn}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=fn(m,p),g!=null&&d.push(kd(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==on&&(u=n.relatedTarget||n.fromElement)&&(bt(u)||u[pt]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?bt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=Mn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=Wn,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:St(l),h=u==null?c:St(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,bt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=jd,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Md(s,c,l,d,!1),u!==null&&f!==null&&Md(s,f,u,d,!0)}}a:{if(c=r?St(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=mr;else if(cr(c))if(hr)v=Cr;else{v=xr;var y=br}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&en(r.elementType)&&(v=mr):v=Sr;if(v&&=v(e,r)){lr(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&Kt(c,`number`,c.value)}switch(y=r?St(r):window,e){case`focusin`:(cr(y)||y.contentEditable===`true`)&&(Nr=y,Pr=r,Fr=null);break;case`focusout`:Fr=Pr=Nr=null;break;case`mousedown`:Ir=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Ir=!1,Lr(s,n,i);break;case`selectionchange`:if(Mr)break;case`keydown`:case`keyup`:Lr(s,n,i)}var b;if(Xn)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else ir?nr(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&($n&&n.locale!==`ko`&&(ir||x!==`onCompositionStart`?x===`onCompositionEnd`&&ir&&(b=yn()):(gn=i,_n=`value`in gn?gn.value:gn.textContent,ir=!0)),y=Ad(r,x),0<y.length&&(x=new Ln(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=rr(n),b!==null&&(x.data=b)))),(b=Qn?ar(e,n):or(e,n))&&(x=Ad(r,`onBeforeInput`),0<x.length&&(y=new Ln(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),_d(s,e,r,n,i)}Sd(s,t)})}function kd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ad(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=fn(e,n),i!=null&&r.unshift(kd(e,i,a)),i=fn(e,t),i!=null&&r.push(kd(e,i,a))),e.tag===3)return r;e=e.return}return[]}function jd(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Md(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=fn(n,a),l!=null&&o.unshift(kd(n,l,c))):i||(l=fn(n,a),l!=null&&o.push(kd(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Nd=/\r\n?/g,Pd=/\u0000|\uFFFD/g;function Fd(e){return(typeof e==`string`?e:``+e).replace(Nd,`
9
+ `).replace(Pd,``)}function Id(e,t){return t=Fd(t),Fd(e)===t}function Ld(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Xt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Xt(e,``+r);break;case`className`:Pt(e,`class`,r);break;case`tabIndex`:Pt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Pt(e,n,r);break;case`style`:$t(e,r,o);break;case`data`:if(t!==`object`){Pt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=rn(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&Ld(e,t,`name`,a.name,a,null),Ld(e,t,`formEncType`,a.formEncType,a,null),Ld(e,t,`formMethod`,a.formMethod,a,null),Ld(e,t,`formTarget`,a.formTarget,a,null)):(Ld(e,t,`encType`,a.encType,a,null),Ld(e,t,`method`,a.method,a,null),Ld(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=rn(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=an);break;case`onScroll`:r!=null&&Cd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Cd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=rn(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Cd(`beforetoggle`,e),Cd(`toggle`,e),Nt(e,`popover`,r);break;case`xlinkActuate`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Ft(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Ft(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Ft(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Ft(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:Nt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=tn.get(n)||n,Nt(e,n,r))}}function Rd(e,t,n,r,a,o){switch(n){case`style`:$t(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Xt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Xt(e,``+r);break;case`onScroll`:r!=null&&Cd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Cd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=an);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!Et.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[ft]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):Nt(e,n,r)}}}function zd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Cd(`error`,e),Cd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Ld(e,t,o,s,n,null)}}a&&Ld(e,t,`srcSet`,n.srcSet,n,null),r&&Ld(e,t,`src`,n.src,n,null);return;case`input`:Cd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Ld(e,t,r,d,n,null)}}Gt(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Cd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Ld(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&qt(e,!!r,n,!0):qt(e,!!r,t,!1);return;case`textarea`:for(s in Cd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Ld(e,t,s,c,n,null)}Yt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Ld(e,t,l,r,n,null)}return;case`dialog`:Cd(`beforetoggle`,e),Cd(`toggle`,e),Cd(`cancel`,e),Cd(`close`,e);break;case`iframe`:case`object`:Cd(`load`,e);break;case`video`:case`audio`:for(r=0;r<bd.length;r++)Cd(bd[r],e);break;case`image`:Cd(`error`,e),Cd(`load`,e);break;case`details`:Cd(`toggle`,e);break;case`embed`:case`source`:case`link`:Cd(`error`,e),Cd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Ld(e,t,u,r,n,null)}return;default:if(en(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Rd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Ld(e,t,c,r,n,null))}function Bd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Ld(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Ld(e,t,p,m,r,f)}}Wt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Ld(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Ld(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?qt(e,!!n,n?[]:``,!1):qt(e,!!n,t,!0)):qt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Ld(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Ld(e,t,s,a,r,o)}Jt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Ld(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Ld(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Ld(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Ld(e,t,u,p,r,m)}return;default:if(en(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Rd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Rd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Ld(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Ld(e,t,f,p,r,m)}function Vd(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Hd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Vd(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Vd(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Ud=null,Wd=null;function Gd(e){return e.nodeType===9?e:e.ownerDocument}function Kd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function qd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Jd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Yd=null;function Xd(){var e=window.event;return e&&e.type===`popstate`?e!==Yd&&(Yd=e,!0):(Yd=null,!1)}var Zd=typeof setTimeout==`function`?setTimeout:void 0,Qd=typeof clearTimeout==`function`?clearTimeout:void 0,$d=typeof Promise==`function`?Promise:void 0,ef=typeof queueMicrotask==`function`?queueMicrotask:$d===void 0?Zd:function(e){return $d.resolve(null).then(e).catch(tf)};function tf(e){setTimeout(function(){throw e})}function nf(e){return e===`head`}function rf(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Lp(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)vf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,vf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[vt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&vf(e.ownerDocument.body);n=i}while(n);Lp(t)}function af(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8)if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++;n=r}while(n)}function of(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:of(n),yt(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function sf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r)if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e;else if(!e[vt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=pf(e.nextSibling),e===null)break}return null}function cf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=pf(e.nextSibling),e===null))return null;return e}function lf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=pf(e.nextSibling),e===null))return null;return e}function uf(e){return e.data===`$?`||e.data===`$~`}function df(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function ff(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function pf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var mf=null;function hf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return pf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function gf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function _f(e,t,n){switch(t=Gd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function vf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);yt(e)}var yf=new Map,bf=new Set;function xf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Sf=M.d;M.d={f:Cf,r:wf,D:Df,C:Of,L:kf,m:Af,X:Mf,S:jf,M:Nf};function Cf(){var e=Sf.f(),t=Su();return e||t}function wf(e){var t=xt(e);t!==null&&t.tag===5&&t.type===`form`?Cs(t):Sf.r(e)}var Tf=typeof document>`u`?null:document;function Ef(e,t,n){var r=Tf;if(r&&typeof t==`string`&&t){var i=Ut(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),bf.has(i)||(bf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),zd(t,`link`,e),wt(t),r.head.appendChild(t)))}}function Df(e){Sf.D(e),Ef(`dns-prefetch`,e,null)}function Of(e,t){Sf.C(e,t),Ef(`preconnect`,e,t)}function kf(e,t,n){Sf.L(e,t,n);var r=Tf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Ut(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Ut(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Ut(n.imageSizes)+`"]`)):i+=`[href="`+Ut(e)+`"]`;var a=i;switch(t){case`style`:a=Ff(e);break;case`script`:a=zf(e)}yf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),yf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(If(a))||t===`script`&&r.querySelector(Bf(a))||(t=r.createElement(`link`),zd(t,`link`,e),wt(t),r.head.appendChild(t)))}}function Af(e,t){Sf.m(e,t);var n=Tf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Ut(r)+`"][href="`+Ut(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=zf(e)}if(!yf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),yf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Bf(a)))return}r=n.createElement(`link`),zd(r,`link`,e),wt(r),n.head.appendChild(r)}}}function jf(e,t,n){Sf.S(e,t,n);var r=Tf;if(r&&e){var i=Ct(r).hoistableStyles,a=Ff(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(If(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=yf.get(a))&&Y(e,n);var c=o=r.createElement(`link`);wt(c),zd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Hf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Mf(e,t){Sf.X(e,t);var n=Tf;if(n&&e){var r=Ct(n).hoistableScripts,i=zf(e),a=r.get(i);a||(a=n.querySelector(Bf(i)),a||(e=f({src:e,async:!0},t),(t=yf.get(i))&&Uf(e,t),a=n.createElement(`script`),wt(a),zd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nf(e,t){Sf.M(e,t);var n=Tf;if(n&&e){var r=Ct(n).hoistableScripts,i=zf(e),a=r.get(i);a||(a=n.querySelector(Bf(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=yf.get(i))&&Uf(e,t),a=n.createElement(`script`),wt(a),zd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Pf(e,t,n,r){var a=(a=ue.current)?xf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Ff(n.href),n=Ct(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Ff(n.href);var o=Ct(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(If(e)))&&!o._p&&(s.instance=o,s.state.loading=5),yf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},yf.set(e,n),o||Rf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=zf(n),n=Ct(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Ff(e){return`href="`+Ut(e)+`"`}function If(e){return`link[rel="stylesheet"][`+e+`]`}function Lf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Rf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),zd(t,`link`,n),wt(t),e.head.appendChild(t))}function zf(e){return`[src="`+Ut(e)+`"]`}function Bf(e){return`script[async]`+e}function Vf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Ut(n.href)+`"]`);if(r)return t.instance=r,wt(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),wt(r),zd(r,`style`,a),Hf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Ff(n.href);var o=e.querySelector(If(a));if(o)return t.state.loading|=4,t.instance=o,wt(o),o;r=Lf(n),(a=yf.get(a))&&Y(r,a),o=(e.ownerDocument||e).createElement(`link`),wt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),zd(o,`link`,r),t.state.loading|=4,Hf(o,n.precedence,e),t.instance=o;case`script`:return o=zf(n.src),(a=e.querySelector(Bf(o)))?(t.instance=a,wt(a),a):(r=n,(a=yf.get(o))&&(r=f({},n),Uf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),wt(a),zd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Hf(r,n.precedence,e));return t.instance}function Hf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Y(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Uf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Wf=null;function Gf(e,t,n){if(Wf===null){var r=new Map,i=Wf=new Map;i.set(n,r)}else i=Wf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[vt]||a[dt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Kf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function qf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Yf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Ff(r.href),a=t.querySelector(If(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Qf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,wt(a);return}a=t.ownerDocument||t,r=Lf(r),(i=yf.get(i))&&Y(r,i),a=a.createElement(`link`),wt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),zd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Qf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Xf=0;function Zf(e,t){return e.stylesheets&&e.count===0&&ep(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&ep(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Xf===0&&(Xf=62500*Hd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&ep(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Xf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Qf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ep(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var $f=null;function ep(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,$f=new Map,t.forEach(tp,e),$f=null,Qf.call(e))}function tp(e,t){if(!(t.state.loading&4)){var n=$f.get(e);if(n)var r=n.get(null);else{n=new Map,$f.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Qf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var np={$$typeof:b,Provider:null,Consumer:null,_currentValue:ne,_currentValue2:ne,_threadCount:0};function rp(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=et(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=et(0),this.hiddenUpdates=et(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function ip(e,t,n,r,i,a,o,s,c,l,u,d){return e=new rp(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=di(3,null,null,t),e.current=a,a.stateNode=e,t=fa(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Ga(a),e}function ap(e){return e?(e=li,e):li}function op(e,t,n,r,i,a){i=ap(i),r.context===null?r.context=i:r.pendingContext=i,r=qa(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ja(e,r,t),n!==null&&(_u(n,e,t),Ya(n,e,t))}function sp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function cp(e,t){sp(e,t),(e=e.alternate)&&sp(e,t)}function lp(e){if(e.tag===13||e.tag===31){var t=oi(e,67108864);t!==null&&_u(t,e,67108864),cp(e,67108864)}}function up(e){if(e.tag===13||e.tag===31){var t=hu();t=ot(t);var n=oi(e,t);n!==null&&_u(n,e,t),cp(e,t)}}var dp=!0;function fp(e,t,n,r){var i=j.T;j.T=null;var a=M.p;try{M.p=2,mp(e,t,n,r)}finally{M.p=a,j.T=i}}function pp(e,t,n,r){var i=j.T;j.T=null;var a=M.p;try{M.p=8,mp(e,t,n,r)}finally{M.p=a,j.T=i}}function mp(e,t,n,r){if(dp){var i=hp(r);if(i===null)Od(e,t,r,gp,n),Dp(e,r);else if(kp(i,e,t,n,r))r.stopPropagation();else if(Dp(e,r),t&4&&-1<Ep.indexOf(e)){for(;i!==null;){var a=xt(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Ye(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-He(o);s.entanglements[1]|=c,o&=~c}od(a),!(Rl&6)&&(ru=Oe()+500,sd(0,!1))}}break;case 31:case 13:s=oi(a,2),s!==null&&_u(s,a,2),Su(),cp(a,2)}if(a=hp(r),a===null&&Od(e,t,r,gp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Od(e,t,r,null,n)}}function hp(e){return e=sn(e),_p(e)}var gp=null;function _p(e){if(gp=null,e=bt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return gp=e,null}function vp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(ke()){case Ae:return 2;case je:return 8;case Me:case Ne:return 32;case Pe:return 268435456;default:return 32}default:return 32}}var yp=!1,bp=null,xp=null,Sp=null,Cp=new Map,wp=new Map,Tp=[],Ep=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Dp(e,t){switch(e){case`focusin`:case`focusout`:bp=null;break;case`dragenter`:case`dragleave`:xp=null;break;case`mouseover`:case`mouseout`:Sp=null;break;case`pointerover`:case`pointerout`:Cp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:wp.delete(t.pointerId)}}function Op(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=xt(t),t!==null&&lp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function kp(e,t,n,r,i){switch(t){case`focusin`:return bp=Op(bp,e,t,n,r,i),!0;case`dragenter`:return xp=Op(xp,e,t,n,r,i),!0;case`mouseover`:return Sp=Op(Sp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return Cp.set(a,Op(Cp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,wp.set(a,Op(wp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ap(e){var t=bt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,lt(e.priority,function(){up(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,lt(e.priority,function(){up(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function jp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=hp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);on=r,n.target.dispatchEvent(r),on=null}else return t=xt(n),t!==null&&lp(t),e.blockedOn=n,!1;t.shift()}return!0}function Mp(e,t,n){jp(e)&&n.delete(t)}function Np(){yp=!1,bp!==null&&jp(bp)&&(bp=null),xp!==null&&jp(xp)&&(xp=null),Sp!==null&&jp(Sp)&&(Sp=null),Cp.forEach(Mp),wp.forEach(Mp)}function Pp(e,n){e.blockedOn===n&&(e.blockedOn=null,yp||(yp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Np)))}var Fp=null;function Ip(e){Fp!==e&&(Fp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Fp===e&&(Fp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(_p(r||n)===null)continue;break}var a=xt(n);a!==null&&(e.splice(t,3),t-=3,xs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Lp(e){function t(t){return Pp(t,e)}bp!==null&&Pp(bp,e),xp!==null&&Pp(xp,e),Sp!==null&&Pp(Sp,e),Cp.forEach(t),wp.forEach(t);for(var n=0;n<Tp.length;n++){var r=Tp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Tp.length&&(n=Tp[0],n.blockedOn===null);)Ap(n),n.blockedOn===null&&Tp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[ft]||null;if(typeof a==`function`)o||Ip(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[ft]||null)s=o.formAction;else if(_p(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Ip(n)}}}function Rp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function zp(e){this._internalRoot=e}Bp.prototype.render=zp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;op(n,hu(),e,t,null,null)},Bp.prototype.unmount=zp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;op(e.current,2,null,e,null,null),Su(),t[pt]=null}};function Bp(e){this._internalRoot=e}Bp.prototype.unstable_scheduleHydration=function(e){if(e){var t=ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Tp.length&&t!==0&&t<Tp[n].priority;n++);Tp.splice(n,0,e),n===0&&Ap(e)}};var Vp=n.version;if(Vp!==`19.2.8`)throw Error(i(527,Vp,`19.2.8`));M.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=u(t),e=e===null?null:d(e),e=e===null?null:e.stateNode,e};var Hp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:j,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Up=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Up.isDisabled&&Up.supportsFiber)try{Le=Up.inject(Hp),ze=Up}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Ws,s=Gs,c=Ks;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=ip(e,1,!1,null,null,n,r,null,o,s,c,Rp),e[pt]=t.current,Ed(e),new zp(t)}})),Ue=t(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=He()})),We=`hdr-`,Ge=/^hdr-[0-9a-f]{32}$/,Ke=33554432,qe=16777216,Je=Object.freeze([`image/vnd.radiance`,`image/x-exr`,`image/png`,`image/jpeg`]),Ye=Object.freeze([{id:`builtin:night-street`,name:`Night street`,ko:`밤거리`,brightest:[.72,.2,.66],note:`dark blue night sky, a building skyline with lit windows, two warm sodium street lamps (front right and back left) pooling light on wet asphalt, a dim moon`},{id:`builtin:overcast-field`,name:`Overcast field`,ko:`흐린 들판`,brightest:[-.35,.66,-.67],note:`bright soft grey overcast sky (brighter overhead), a faint sun glow behind the clouds back left, a distant tree line and a green field`},{id:`builtin:studio-softbox`,name:`Studio softbox`,ko:`스튜디오 소프트박스`,brightest:[-.6,.4,.7],note:`dark grey photo studio: a large white softbox front left, a tall strip light right, a soft overhead panel and a rim panel behind`}].map(e=>Object.freeze({...e,brightest:Object.freeze(e.brightest)}))),Xe=new Set(Ye.map(e=>e.id)),Ze=e=>typeof e==`string`&&Ge.test(e),Qe=e=>Xe.has(e),$e=e=>Qe(e)||Ze(e),et=e=>typeof e==`number`&&Number.isFinite(e),tt=e=>((e+180)%360+360)%360-180;function nt(e={}){return{hdr:$e(e.hdr)?e.hdr:null,hdrRotation:et(e.hdrRotation)?Number(tt(e.hdrRotation).toFixed(3)):0,hdrIntensity:et(e.hdrIntensity)?Math.max(0,Math.min(4,e.hdrIntensity)):1,hdrBackground:typeof e.hdrBackground!=`boolean`||e.hdrBackground}}var rt=Object.freeze(Object.keys(nt())),it=(e,t,n)=>String.fromCharCode(...e.subarray(t,Math.min(e.length,t+n)));function at(e){return it(e,0,10)===`#?RADIANCE`||it(e,0,6)===`#?RGBE`?`image/vnd.radiance`:e[0]===118&&e[1]===47&&e[2]===49&&e[3]===1?`image/x-exr`:e[0]===137&&it(e,1,3)===`PNG`?`image/png`:e[0]===255&&e[1]===216&&e[2]===255?`image/jpeg`:null}function ot(e){let t=/\n\s*-Y\s+(\d+)\s+\+X\s+(\d+)\s*\n/.exec(it(e,0,8192));return t?{width:Number(t[2]),height:Number(t[1])}:null}function st(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t=>{let n=t;for(;n<e.length&&e[n]!==0;)n++;return[it(e,t,n-t),n+1]},r=8;for(;r<Math.min(e.length,65536);){let[e,i]=n(r);if(!e)return null;let[,a]=n(i),o=t.getInt32(a,!0),s=a+4;if(e===`dataWindow`&&o===16){let[e,n,r,i]=[0,4,8,12].map(e=>t.getInt32(s+e,!0));return{width:r-e+1,height:i-n+1}}r=s+o}return null}function ct(e,t){try{return e===`image/vnd.radiance`?ot(t):e===`image/x-exr`?st(t):null}catch{return null}}function lt(e,t,n){return e>33554432?`that file is ${(e/1048576).toFixed(1)} MB; an HDR environment can be at most ${Ke/1048576} MB`:t?(t===`image/vnd.radiance`||t===`image/x-exr`)&&!n?`that HDR file has no readable image size`:n&&n.width*n.height>16777216?`that HDR is ${n.width} x ${n.height}; the limit is ${qe/1048576} megapixels (4096 x 4096)`:null:`that file is not an HDR environment CozyClay can load (Radiance .hdr, OpenEXR .exr, or an equirectangular .png / .jpg)`}async function ut(e,t){if(!t?.digest)throw Error(`SubtleCrypto is unavailable — a secure context is required to load an HDR`);let n=await t.digest(`SHA-256`,e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));return Array.from(new Uint8Array(n),e=>e.toString(16).padStart(2,`0`)).join(``)}async function dt(e,t=globalThis.crypto?.subtle){return`${We}${(await ut(e instanceof ArrayBuffer?new Uint8Array(e):e,t)).slice(0,32)}`}var ft=e=>Array.isArray(e)&&e.length===3&&e.every(et)?e.map(e=>Number(e.toFixed(2))):null;function pt(e,t){if(!Ze(e?.id)||typeof e.type!=`string`||!Je.includes(e.type.toLowerCase()))return null;let n=Math.round(Number(e.width)),r=Math.round(Number(e.height)),i=ft(e.brightest);return{id:e.id,type:e.type.toLowerCase(),bytes:t,name:typeof e.name==`string`?e.name:``,...n>0&&r>0?{width:n,height:r}:{},...i?{brightest:i}:{}}}var mt=`img-`,ht=`mesh-`,gt=32,_t=`cozyclay.assets`,vt=1,yt=`images`,bt=Object.freeze([`image/png`,`image/webp`,`image/jpeg`,`image/gif`]),xt=Object.freeze([`model/gltf-binary`,`model/obj`,`model/fbx`]),St=33554432,Ct=2048;function wt(e){return typeof e==`string`&&bt.includes(e.toLowerCase())}function Tt(e){return typeof e==`string`&&xt.includes(e.toLowerCase())}function Et(e,t){if(typeof t!=`string`)return null;let n=t.trim().toLowerCase();return!/^[0-9a-f]+$/.test(n)||n.length<gt?null:`${e}${n.slice(0,gt)}`}function Dt(e,t){return typeof t==`string`&&RegExp(`^${e}[0-9a-f]{${gt}}$`).test(t)}function Ot(e){return Et(mt,e)}function kt(e){return Et(ht,e)}function At(e){return Dt(mt,e)}function jt(e){return Dt(ht,e)}function Mt(e){return At(e)||jt(e)||Ze(e)}async function Nt(e,t){if(!t?.digest)throw Error(`SubtleCrypto is unavailable — a secure context is required to import images`);let n=e instanceof ArrayBuffer?e:e?.buffer?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):null;if(!n)return null;let r=await t.digest(`SHA-256`,n);return Array.from(new Uint8Array(r),e=>e.toString(16).padStart(2,`0`)).join(``)}async function Pt(e,t=globalThis.crypto?.subtle){let n=await Nt(e,t);if(!n)throw TypeError(`assetIdForBytes needs an ArrayBuffer or a typed array`);return Ot(n)}async function Ft(e,t=globalThis.crypto?.subtle){let n=await Nt(e,t);if(!n)throw TypeError(`meshIdForBytes needs an ArrayBuffer or a typed array`);return kt(n)}function It(e,t,n=Ct){let r=Math.max(0,Math.round(Number(e)||0)),i=Math.max(0,Math.round(Number(t)||0));if(!r||!i)return null;let a=Math.max(r,i);if(a<=n)return{width:r,height:i,scaled:!1};let o=n/a;return{width:Math.max(1,Math.round(r*o)),height:Math.max(1,Math.round(i*o)),scaled:!0}}function Lt(e){let t=Number(e?.width),n=Number(e?.height);return!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n<=0?null:t/n}function Rt(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e.bytes instanceof ArrayBuffer?e.bytes:null;if(!t||!t.byteLength)return null;if(Ze(e.id))return pt(e,t);if(jt(e.id))return Tt(e.type)?{id:e.id,type:e.type.toLowerCase(),bytes:t,name:typeof e.name==`string`?e.name:``,...typeof e.role==`string`?{role:e.role}:{}}:null;if(!At(e.id)||!wt(e.type))return null;let n=Math.round(Number(e.width)),r=Math.round(Number(e.height));return!Number.isInteger(n)||!Number.isInteger(r)||n<=0||r<=0?null:{id:e.id,type:e.type.toLowerCase(),width:n,height:r,bytes:t,name:typeof e.name==`string`?e.name:``,...typeof e.role==`string`?{role:e.role}:{}}}function zt(e){return Array.from(e?.files??[]).filter(e=>{if(!e)return!1;if(wt(e.type))return!0;if(e.type)return!1;let t=String(e.name??``).toLowerCase().match(/\.([a-z0-9]+)$/)?.[1];return[`png`,`webp`,`jpg`,`jpeg`,`gif`].includes(t)})}function Bt(e){let t=[],n=Array.from(e?.items??[]);for(let e of n){if(e.kind!==`file`||!wt(e.type))continue;let n=e.getAsFile?.();n&&t.push(n.name&&n.name!==`image.png`?n:new File([n],`pasted-${Date.now()}.${e.type.split(`/`)[1]||`png`}`,{type:e.type}))}return t.length?t:zt(e)}function Vt(e){return e===`image/jpeg`?`image/jpeg`:`image/png`}function Ht(e,t){if(typeof OffscreenCanvas==`function`)return new OffscreenCanvas(e,t);throw Error(`this browser cannot resize images — OffscreenCanvas is unavailable`)}async function Ut(e,{subtle:t=globalThis.crypto?.subtle,createBitmap:n=globalThis.createImageBitmap,makeCanvas:r=Ht,maxDimension:i=Ct,maxSourceBytes:a=St}={}){if(!e||typeof e.arrayBuffer!=`function`)throw TypeError(`importImageFile needs a File or Blob`);let o=typeof e.type==`string`?e.type.toLowerCase():``;if(!wt(o))throw Error(`that file is not an image CozyClay can import (PNG, WebP, JPEG or GIF)`);if(Number(e.size)>a)throw Error(`that image is larger than ${Math.round(a/1048576)} MB`);if(typeof n!=`function`)throw Error(`this browser cannot decode images — createImageBitmap is unavailable`);let s=await n(e);try{let n=It(s.width,s.height,i);if(!n)throw Error(`that image has no usable size`);let a=o,c;if(n.scaled){let e=r(n.width,n.height),t=e.getContext(`2d`);if(!t)throw Error(`this browser cannot resize images — no 2D context`);t.drawImage(s,0,0,n.width,n.height),a=Vt(o),c=await(await e.convertToBlob({type:a})).arrayBuffer()}else c=await e.arrayBuffer();let l=Rt({id:await Pt(c,t),type:a,width:n.width,height:n.height,bytes:c,name:typeof e.name==`string`?e.name:``});if(!l)throw Error(`that image could not be prepared for the set`);return l}finally{s?.close?.()}}function Wt(e){let t=new Set(Gt(e).keys());for(let n of Array.isArray(e)?e:[]){for(let e of Array.isArray(n?.shotDocument?.shots)?n.shotDocument.shots:[])At(e?.stylizedAssetId)&&t.add(e.stylizedAssetId);Ze(n?.stage?.lighting?.hdr)&&t.add(n.stage.lighting.hdr)}return t}function Gt(e){let t=new Map;for(let n of Array.isArray(e)?e:[])for(let e of Array.isArray(n?.objects)?n.objects:[]){let n=new Set;for(let t of[e?.assetId,e?.sourceAssetId,e?.matteAssetId])Mt(t)&&n.add(t);for(let e of n)t.set(e,(t.get(e)??0)+1)}return t}function Kt(e){return JSON.stringify((Array.isArray(e)?e:[]).map(e=>[typeof e?.id==`string`?e.id:null,(Array.isArray(e?.objects)?e.objects:[]).map(e=>[typeof e?.id==`string`?e.id:null,...[e?.assetId,e?.sourceAssetId,e?.matteAssetId].map(e=>Mt(e)?e:null)])]))}async function qt({expectedGraphSignature:e,deleteRecord:t,restoreRecord:n,readGraphSignature:r}){return await t(),r()===e||(await n(),!1)}function Jt(e,t){let n=Wt(t);return(Array.isArray(e)?e:[]).filter(e=>Mt(e)&&!n.has(e))}var Yt=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)});function Xt(e=globalThis.indexedDB){return e?new Promise((t,n)=>{let r=e.open(_t,vt);r.onupgradeneeded=()=>{r.result.objectStoreNames.contains(yt)||r.result.createObjectStore(yt,{keyPath:`id`})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error),r.onblocked=()=>n(Error(`the asset database is blocked by another tab`))}):Promise.reject(Error(`IndexedDB is unavailable`))}async function Zt(e,t){let n=Rt(t);if(!n)throw TypeError(`putAsset needs a normalizable asset record`);let r=e.transaction(yt,`readwrite`);return r.objectStore(yt).put(n),await new Promise((e,t)=>{r.oncomplete=e,r.onerror=()=>t(r.error),r.onabort=()=>t(r.error)}),n}async function Qt(e,t){return Mt(t)?Rt(await Yt(e.transaction(yt,`readonly`).objectStore(yt).get(t))):null}async function $t(e){return(await Yt(e.transaction(yt,`readonly`).objectStore(yt).getAllKeys())??[]).filter(Mt)}async function en(e,t){if(!Mt(t))return!1;let n=e.transaction(yt,`readwrite`);return n.objectStore(yt).delete(t),await new Promise((e,t)=>{n.oncomplete=e,n.onerror=()=>t(n.error),n.onabort=()=>t(n.error)}),!0}function tn(e,t,n){let r=n.length-e-1;if(t>=n[r])return r-1;if(t<=n[e])return e;let i=e,a=r,o=Math.floor((i+a)/2);for(;t<n[o]||t>=n[o+1];)t<n[o]?a=o:i=o,o=Math.floor((i+a)/2);return o}function nn(e,t,n,r){let i=[],a=[],o=[];i[0]=1;for(let s=1;s<=n;++s){a[s]=t-r[e+1-s],o[s]=r[e+s]-t;let n=0;for(let e=0;e<s;++e){let t=o[e+1],r=a[s-e],c=i[e]/(t+r);i[e]=n+t*c,n=r*c}i[s]=n}return i}function rn(e,t,n,r){let i=tn(e,r,t),a=nn(i,r,e,t),o=new we(0,0,0,0);for(let t=0;t<=e;++t){let r=n[i-e+t],s=a[t],c=r.w*s;o.x+=r.x*c,o.y+=r.y*c,o.z+=r.z*c,o.w+=r.w*s}return o}function an(e,t,n,r,i){let a=[];for(let e=0;e<=n;++e)a[e]=0;let o=[];for(let e=0;e<=r;++e)o[e]=a.slice(0);let s=[];for(let e=0;e<=n;++e)s[e]=a.slice(0);s[0][0]=1;let c=a.slice(0),l=a.slice(0);for(let r=1;r<=n;++r){c[r]=t-i[e+1-r],l[r]=i[e+r]-t;let n=0;for(let e=0;e<r;++e){let t=l[e+1],i=c[r-e];s[r][e]=t+i;let a=s[e][r-1]/s[r][e];s[e][r]=n+t*a,n=i*a}s[r][r]=n}for(let e=0;e<=n;++e)o[0][e]=s[e][n];for(let e=0;e<=n;++e){let t=0,i=1,c=[];for(let e=0;e<=n;++e)c[e]=a.slice(0);c[0][0]=1;for(let a=1;a<=r;++a){let r=0,l=e-a,u=n-a;e>=a&&(c[i][0]=c[t][0]/s[u+1][l],r=c[i][0]*s[l][u]);let d=l>=-1?1:-l,f=e-1<=u?a-1:n-e;for(let e=d;e<=f;++e)c[i][e]=(c[t][e]-c[t][e-1])/s[u+1][l+e],r+=c[i][e]*s[l+e][u];e<=u&&(c[i][a]=-c[t][a-1]/s[u+1][e],r+=c[i][a]*s[e][u]),o[a][e]=r;let p=t;t=i,i=p}}let u=n;for(let e=1;e<=r;++e){for(let t=0;t<=n;++t)o[e][t]*=u;u*=n-e}return o}function on(e,t,n,r,i){let a=i<e?i:e,o=[],s=tn(e,r,t),c=an(s,r,e,a,t),l=[];for(let e=0;e<n.length;++e){let t=n[e].clone(),r=t.w;t.x*=r,t.y*=r,t.z*=r,l[e]=t}for(let t=0;t<=a;++t){let n=l[s-e].clone().multiplyScalar(c[t][0]);for(let r=1;r<=e;++r)n.add(l[s-e+r].clone().multiplyScalar(c[t][r]));o[t]=n}for(let e=a+1;e<=i+1;++e)o[e]=new we(0,0,0);return o}function sn(e,t){let n=1;for(let t=2;t<=e;++t)n*=t;let r=1;for(let e=2;e<=t;++e)r*=e;for(let n=2;n<=e-t;++n)r*=n;return n/r}function cn(e){let t=e.length,n=[],r=[];for(let i=0;i<t;++i){let t=e[i];n[i]=new Me(t.x,t.y,t.z),r[i]=t.w}let i=[];for(let e=0;e<t;++e){let t=n[e].clone();for(let n=1;n<=e;++n)t.sub(i[e-n].clone().multiplyScalar(sn(e,n)*r[n]));i[e]=t.divideScalar(r[0])}return i}function ln(e,t,n,r,i){return cn(on(e,t,n,r,i))}var un=class extends Ae{constructor(e,t,n,r,i){super();let a=t?t.length-1:0,o=n?n.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=i||a;for(let e=0;e<o;++e){let t=n[e];this.controlPoints[e]=new we(t.x,t.y,t.z,t.w)}}getPoint(e,t=new Me){let n=t,r=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),i=rn(this.degree,this.knots,this.controlPoints,r);return i.w!==1&&i.divideScalar(i.w),n.set(i.x,i.y,i.z)}getTangent(e,t=new Me){let n=t,r=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),i=ln(this.degree,this.knots,this.controlPoints,r,1);return n.copy(i[1]).normalize(),n}toJSON(){let e=super.toJSON();return e.degree=this.degree,e.knots=[...this.knots],e.controlPoints=this.controlPoints.map(e=>e.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(e=>new we(e[0],e[1],e[2],e[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}},P,dn,fn,pn=class extends ne{constructor(e){super(e)}load(e,t,n,r){let i=this,a=i.path===``?Ee.extractUrlBase(e):i.path,o=new te(this.manager);o.setPath(i.path),o.setResponseType(`arraybuffer`),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(n){try{t(i.parse(n,a))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e,t){if(xn(e))P=new vn().parse(e);else{let t=Mn(e);if(!Sn(t))throw Error(`THREE.FBXLoader: Unknown format.`);if(Cn(t)<7e3)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+Cn(t));P=new _n().parse(t)}return new mn(new be(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),this.manager).parse(P)}},mn=class{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){dn=this.parseConnections();let e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),r=this.parseDeformers(),i=new hn().parse(r);return this.parseScene(r,i,n),fn}parseConnections(){let e=new Map;return`Connections`in P&&P.Connections.connections.forEach(function(t){let n=t[0],r=t[1],i=t[2];e.has(n)||e.set(n,{parents:[],children:[]});let a={ID:r,relationship:i};e.get(n).parents.push(a),e.has(r)||e.set(r,{parents:[],children:[]});let o={ID:n,relationship:i};e.get(r).children.push(o)}),e}parseImages(){let e={},t={};if(`Video`in P.Objects){let n=P.Objects.Video;for(let r in n){let i=n[r],a=parseInt(r);if(e[a]=i.RelativeFilename||i.Filename,`Content`in i){let e=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,a=typeof i.Content==`string`&&i.Content!==``;if(e||a){let e=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let n in e){let r=e[n];e[n]=t[r]===void 0?e[n].split(`\\`).pop():t[r]}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(`.`)+1).toLowerCase(),i;switch(r){case`bmp`:i=`image/bmp`;break;case`jpg`:case`jpeg`:i=`image/jpeg`;break;case`png`:i=`image/png`;break;case`tif`:i=`image/tiff`;break;case`tga`:this.manager.getHandler(`.tga`)===null&&console.warn(`FBXLoader: TGA loader not found, skipping `,n),i=`image/tga`;break;case`webp`:i=`image/webp`;break;default:console.warn(`FBXLoader: Image type "`+r+`" is not supported.`);return}if(typeof t==`string`)return`data:`+i+`;base64,`+t;{let e=new Uint8Array(t);return window.URL.createObjectURL(new Blob([e],{type:i}))}}parseTextures(e){let t=new Map;if(`Texture`in P.Objects){let n=P.Objects.Texture;for(let r in n){let i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let r=e.WrapModeU,i=e.WrapModeV,a=r===void 0?0:r.value,o=i===void 0?0:i.value;if(n.wrapS=a===0?le:ee,n.wrapT=o===0?le:ee,`Scaling`in e){let t=e.Scaling.value;n.repeat.x=t[0],n.repeat.y=t[1]}if(`Translation`in e){let t=e.Translation.value;n.offset.x=t[0],n.offset.y=t[1]}return n}loadTexture(e,t){let n=e.FileName.split(`.`).pop().toLowerCase(),r=this.manager.getHandler(`.${n}`);r===null&&(r=this.textureLoader);let i=r.path;i||r.setPath(this.textureLoader.path);let a=dn.get(e.id).children,o;if(a!==void 0&&a.length>0&&t[a[0].ID]!==void 0&&(o=t[a[0].ID],(o.indexOf(`blob:`)===0||o.indexOf(`data:`)===0)&&r.setPath(void 0)),o===void 0)return console.warn(`FBXLoader: Undefined filename, creating placeholder texture.`),new C;let s=r.load(o);return r.setPath(i),s}parseMaterials(e){let t=new Map;if(`Material`in P.Objects){let n=P.Objects.Material;for(let r in n){let i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let n=e.id,r=e.attrName,i=e.ShadingModel;if(typeof i==`object`&&(i=i.value),!dn.has(n))return null;let a=this.parseParameters(e,t,n),o;switch(i.toLowerCase()){case`phong`:o=new ge;break;case`lambert`:o=new Ce;break;default:console.warn(`THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.`,i),o=new ge}return o.setValues(a),o.name=r,o}parseParameters(e,t,n){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=M.colorSpaceToWorking(new ue().fromArray(e.Diffuse.value),fe):e.DiffuseColor&&(e.DiffuseColor.type===`Color`||e.DiffuseColor.type===`ColorRGB`)&&(r.color=M.colorSpaceToWorking(new ue().fromArray(e.DiffuseColor.value),fe)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=M.colorSpaceToWorking(new ue().fromArray(e.Emissive.value),fe):e.EmissiveColor&&(e.EmissiveColor.type===`Color`||e.EmissiveColor.type===`ColorRGB`)&&(r.emissive=M.colorSpaceToWorking(new ue().fromArray(e.EmissiveColor.value),fe)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),r.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(r.opacity===1||r.opacity===0)&&(r.opacity=e.Opacity?parseFloat(e.Opacity.value):null,r.opacity===null&&(r.opacity=1)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=M.colorSpaceToWorking(new ue().fromArray(e.Specular.value),fe):e.SpecularColor&&e.SpecularColor.type===`Color`&&(r.specular=M.colorSpaceToWorking(new ue().fromArray(e.SpecularColor.value),fe));let i=this;return dn.get(n).children.forEach(function(e){let n=e.relationship;switch(n){case`Bump`:r.bumpMap=i.getTexture(t,e.ID);break;case`Maya|TEX_ao_map`:r.aoMap=i.getTexture(t,e.ID);break;case`DiffuseColor`:case`Maya|TEX_color_map`:r.map=i.getTexture(t,e.ID),r.map!==void 0&&(r.map.colorSpace=fe);break;case`DisplacementColor`:r.displacementMap=i.getTexture(t,e.ID);break;case`EmissiveColor`:r.emissiveMap=i.getTexture(t,e.ID),r.emissiveMap!==void 0&&(r.emissiveMap.colorSpace=fe);break;case`NormalMap`:case`Maya|TEX_normal_map`:r.normalMap=i.getTexture(t,e.ID);break;case`ReflectionColor`:r.envMap=i.getTexture(t,e.ID),r.envMap!==void 0&&(r.envMap.mapping=303,r.envMap.colorSpace=fe);break;case`SpecularColor`:r.specularMap=i.getTexture(t,e.ID),r.specularMap!==void 0&&(r.specularMap.colorSpace=fe);break;case`TransparentColor`:case`TransparencyFactor`:r.alphaMap=i.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn(`THREE.FBXLoader: %s map is not supported in three.js, skipping texture.`,n)}}),r}getTexture(e,t){return`LayeredTexture`in P.Objects&&t in P.Objects.LayeredTexture&&(console.warn(`THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.`),t=dn.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if(`Deformer`in P.Objects){let n=P.Objects.Deformer;for(let r in n){let i=n[r],a=dn.get(parseInt(r));if(i.attrType===`Skin`){let t=this.parseSkeleton(a,n);t.ID=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: skeleton attached to more than one geometry is not supported.`),t.geometryID=a.parents[0].ID,e[r]=t}else if(i.attrType===`BlendShape`){let e={id:r};e.rawTargets=this.parseMorphTargets(a,n),e.id=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: morph target attached to more than one geometry is not supported.`),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let n=[];return e.children.forEach(function(e){let r=t[e.ID];if(r.attrType!==`Cluster`)return;let i={ID:e.ID,indices:[],weights:[],transformLink:new ye().fromArray(r.TransformLink.a)};`Indexes`in r&&(i.indices=r.Indexes.a,i.weights=r.Weights.a),n.push(i)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){let n=[];for(let r=0;r<e.children.length;r++){let i=e.children[r],a=t[i.ID],o={name:a.attrName,initialWeight:a.DeformPercent,id:a.id,fullWeights:a.FullWeights.a};if(a.attrType!==`BlendShapeChannel`)return;o.geoID=dn.get(parseInt(i.ID)).children.filter(function(e){return e.relationship===void 0})[0].ID,n.push(o)}return n}parseScene(e,t,n){fn=new j;let r=this.parseModels(e.skeletons,t,n),i=P.Objects.Model,a=this;r.forEach(function(e){let t=i[e.ID];a.setLookAtProperties(e,t),dn.get(e.ID).parents.forEach(function(t){let n=r.get(t.ID);n!==void 0&&n.add(e)}),e.parent===null&&fn.add(e)}),this.addGlobalSceneSettings(),fn.traverse(function(e){if(e.userData.transformData){e.parent&&(e.userData.transformData.parentMatrix=e.parent.matrix,e.userData.transformData.parentMatrixWorld=e.parent.matrixWorld);let t=kn(e.userData.transformData);e.applyMatrix4(t),e.updateWorldMatrix()}});let o=this.parsePoseNodes(),s=new Set;for(let t in e.skeletons)e.skeletons[t].rawBones.forEach(function(n,r){let i=e.skeletons[t].bones[r];i&&s.add(i.ID)});let c=new ye;fn.traverse(function(e){if(e.isBone&&e.ID!==void 0&&!s.has(e.ID)){let t=o[e.ID];t!==void 0&&(e.parent?(c.copy(e.parent.matrixWorld).invert(),c.multiply(t)):c.copy(t),c.decompose(e.position,e.quaternion,e.scale),e.updateMatrix(),e.matrixWorld.copy(t))}}),this.bindSkeleton(e.skeletons,t,r);let l=new gn().parse();fn.children.length===1&&fn.children[0].isGroup&&(fn.children[0].animations=l,fn=fn.children[0]),fn.animations=l,`GlobalSettings`in P&&`UpAxis`in P.GlobalSettings&&P.GlobalSettings.UpAxis.value===2&&(console.warn(`THREE.FBXLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted.`),fn.rotation.set(-Math.PI/2,0,0))}parseModels(e,t,n){let r=new Map,i=P.Objects.Model;for(let a in i){let o=parseInt(a),s=i[a],c=dn.get(o),l=this.buildSkeleton(c,e,o,s.attrName);if(!l){switch(s.attrType){case`Camera`:l=this.createCamera(c);break;case`Light`:l=this.createLight(c);break;case`Mesh`:l=this.createMesh(c,t,n);break;case`NurbsCurve`:l=this.createCurve(c,t);break;case`LimbNode`:case`Root`:l=new Pe;break;default:l=new j}l.name=s.attrName?T.sanitizeNodeName(s.attrName):``,l.userData.originalName=s.attrName,l.ID=o}this.getTransformData(l,s),r.set(o,l)}return r}buildSkeleton(e,t,n,r){let i=null;return e.parents.forEach(function(e){for(let a in t){let o=t[a];o.rawBones.forEach(function(t,a){if(t.ID===e.ID){let e=i;i=new Pe,i.matrixWorld.copy(t.transformLink),i.name=r?T.sanitizeNodeName(r):``,i.userData.originalName=r,i.ID=n,o.bones[a]=i,e!==null&&i.add(e)}})}}),i}createCamera(e){let t,n;if(e.children.forEach(function(e){let t=P.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new Fe;else{let e=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(e=1);let r=1;n.NearPlane!==void 0&&(r=n.NearPlane.value/1e3);let i=1e3;n.FarPlane!==void 0&&(i=n.FarPlane.value/1e3);let a=window.innerWidth,o=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,o=n.AspectHeight.value);let s=a/o,c=45;n.FieldOfView!==void 0&&(c=n.FieldOfView.value);let l=n.FocalLength?n.FocalLength.value:null;switch(e){case 0:t=new xe(c,s,r,i),l!==null&&t.setFocalLength(l);break;case 1:console.warn(`THREE.FBXLoader: Orthographic cameras not supported yet.`),t=new Fe;break;default:console.warn(`THREE.FBXLoader: Unknown camera type `+e+`.`),t=new Fe}}return t}createLight(e){let t,n;if(e.children.forEach(function(e){let t=P.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new Fe;else{let e;e=n.LightType===void 0?0:n.LightType.value;let r=16777215;n.Color!==void 0&&(r=M.colorSpaceToWorking(new ue().fromArray(n.Color.value),fe));let i=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(i=0);let a=0;switch(n.FarAttenuationEnd!==void 0&&(a=n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?0:n.FarAttenuationEnd.value),e){case 0:t=new oe(r,i,a,1);break;case 1:t=new D(r,i);break;case 2:let e=Math.PI/3,o=0;n.OuterAngle===void 0?n.InnerAngle!==void 0&&(e=Ne.degToRad(n.InnerAngle.value)):(e=Ne.degToRad(n.OuterAngle.value),n.InnerAngle!==void 0&&(o=1-n.InnerAngle.value/n.OuterAngle.value,o=Math.max(0,o))),t=new _e(r,i,a,e,o,1);break;default:console.warn(`THREE.FBXLoader: Unknown light type `+n.LightType.value+`, defaulting to a PointLight.`),t=new oe(r,i)}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let r,i=null,a=null,o=[];if(e.children.forEach(function(e){t.has(e.ID)&&(i=t.get(e.ID)),n.has(e.ID)&&o.push(n.get(e.ID))}),o.length>1?a=o:o.length>0?a=o[0]:(a=new ge({name:ne.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(a)),`color`in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,n=i.groups.length;t<n;t++){let n=i.groups[t];(n.materialIndex<0||n.materialIndex>=o.length)&&(n.materialIndex=o.length,e=!0)}if(e){let e=new ge;o.push(e)}}return i.FBX_Deformer?(r=new Se(i,a),r.normalizeSkinWeights()):r=new me(i,a),r}createCurve(e,t){let n=e.children.reduce(function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e},null),r=new ie({name:ne.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new w(n,r)}getTransformData(e,t){let n={};`InheritType`in t&&(n.inheritType=parseInt(t.InheritType.value)),n.eulerOrder=`RotationOrder`in t?An(t.RotationOrder.value):An(0),`Lcl_Translation`in t&&(n.translation=t.Lcl_Translation.value),`PreRotation`in t&&(n.preRotation=t.PreRotation.value),`Lcl_Rotation`in t&&(n.rotation=t.Lcl_Rotation.value),`PostRotation`in t&&(n.postRotation=t.PostRotation.value),`Lcl_Scaling`in t&&(n.scale=t.Lcl_Scaling.value),`ScalingOffset`in t&&(n.scalingOffset=t.ScalingOffset.value),`ScalingPivot`in t&&(n.scalingPivot=t.ScalingPivot.value),`RotationOffset`in t&&(n.rotationOffset=t.RotationOffset.value),`RotationPivot`in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){`LookAtProperty`in t&&dn.get(e.ID).children.forEach(function(t){if(t.relationship===`LookAtProperty`){let n=P.Objects.Model[t.ID];if(`Lcl_Translation`in n){let t=n.Lcl_Translation.value;e.target===void 0?e.lookAt(new Me().fromArray(t)):(e.target.position.fromArray(t),fn.add(e.target))}}})}bindSkeleton(e,t,n){for(let r in e){let i=e[r],a=[];for(let e=0,t=i.bones.length;e<t;e++){let t=new ye;i.bones[e]&&i.rawBones[e]&&t.copy(i.rawBones[e].transformLink).invert(),a.push(t)}dn.get(parseInt(i.ID)).parents.forEach(function(e){if(t.has(e.ID)){let t=e.ID;dn.get(t).parents.forEach(function(e){if(n.has(e.ID)){let t=n.get(e.ID);t.updateMatrixWorld(!0),t.bind(new ke(i.bones,a),t.matrixWorld)}})}})}}parsePoseNodes(){let e={};if(`Pose`in P.Objects){let t=P.Objects.Pose;for(let n in t)if(t[n].attrType===`BindPose`&&t[n].NbPoseNodes>0){let r=t[n].PoseNode;Array.isArray(r)?r.forEach(function(t){e[t.Node]=new ye().fromArray(t.Matrix.a)}):e[r.Node]=new ye().fromArray(r.Matrix.a)}}return e}addGlobalSceneSettings(){if(`GlobalSettings`in P){if(`AmbientColor`in P.GlobalSettings){let e=P.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],r=e[2];if(t!==0||n!==0||r!==0){let e=new ue().setRGB(t,n,r,fe);fn.add(new ve(e,1))}}`UnitScaleFactor`in P.GlobalSettings&&(fn.userData.unitScaleFactor=P.GlobalSettings.UnitScaleFactor.value)}}},hn=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if(`Geometry`in P.Objects){let n=P.Objects.Geometry;for(let r in n){let i=dn.get(parseInt(r)),a=this.parseGeometry(i,n[r],e);t.set(parseInt(r),a)}}return this.negativeMaterialIndices===!0&&console.warn(`THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.`),t}parseGeometry(e,t,n){switch(t.attrType){case`Mesh`:return this.parseMeshGeometry(e,t,n);case`NurbsCurve`:return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let r=n.skeletons,i=[],a=e.parents.map(function(e){return P.Objects.Model[e.ID]});if(a.length===0)return;let o=e.children.reduce(function(e,t){return r[t.ID]!==void 0&&(e=r[t.ID]),e},null);e.children.forEach(function(e){n.morphTargets[e.ID]!==void 0&&i.push(n.morphTargets[e.ID])});let s=a[0],c={};`RotationOrder`in s&&(c.eulerOrder=An(s.RotationOrder.value)),`InheritType`in s&&(c.inheritType=parseInt(s.InheritType.value)),`GeometricTranslation`in s&&(c.translation=s.GeometricTranslation.value),`GeometricRotation`in s&&(c.rotation=s.GeometricRotation.value),`GeometricScaling`in s&&(c.scale=s.GeometricScaling.value);let l=kn(c);return this.genGeometry(t,o,i,l)}genGeometry(e,t,n,r){let i=new re;e.attrName&&(i.name=e.attrName);let a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new ce(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute(`position`,s),o.colors.length>0&&i.setAttribute(`color`,new ce(o.colors,3)),t&&(i.setAttribute(`skinIndex`,new Ie(o.weightsIndices,4)),i.setAttribute(`skinWeight`,new ce(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new Oe().getNormalMatrix(r),t=new ce(o.normal,3);t.applyNormalMatrix(e),i.setAttribute(`normal`,t)}if(o.uvs.forEach(function(e,t){let n=t===0?`uv`:`uv${t}`;i.setAttribute(n,new ce(o.uvs[t],2))}),a.material&&a.material.mappingType!==`AllSame`){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(n,r){n!==e&&(i.addGroup(t,r-t,e),e=n,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],n=t.start+t.count;n!==o.materialIndex.length&&i.addGroup(n,o.materialIndex.length-n,e)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices===void 0?[]:e.Vertices.a,n.vertexIndices=e.PolygonVertexIndex===void 0?[]:e.PolygonVertexIndex.a,e.LayerElementColor&&e.LayerElementColor[0].Colors&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],u=[],d=this;return e.vertexIndices.forEach(function(f,p){let m,h=!1;f<0&&(f^=-1,h=!0);let g=[],_=[];if(a.push(f*3,f*3+1,f*3+2),e.color){let t=En(p,n,f,e.color);s.push(t[0],t[1],t[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(e){_.push(e.weight),g.push(e.id)}),_.length>4){i||=(console.warn(`THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.`),!0);let e=[0,0,0,0],t=[0,0,0,0];_.forEach(function(n,r){let i=n,a=g[r];t.forEach(function(t,n,r){if(i>t){r[n]=i,i=t;let o=e[n];e[n]=a,a=o}})}),g=e,_=t}for(;_.length<4;)_.push(0),g.push(0);for(let e=0;e<4;++e)l.push(_[e]),u.push(g[e])}if(e.normal){let t=En(p,n,f,e.normal);o.push(t[0],t[1],t[2])}e.material&&e.material.mappingType!==`AllSame`&&(m=En(p,n,f,e.material)[0],m<0&&(d.negativeMaterialIndices=!0,m=0)),e.uv&&e.uv.forEach(function(e,t){let r=En(p,n,f,e);c[t]===void 0&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])}),r++,h&&(d.genFace(t,e,a,m,o,s,c,l,u,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],u=[])}),t}getNormalNewell(e){let t=new Me(0,0,0);for(let n=0;n<e.length;n++){let r=e[n],i=e[(n+1)%e.length];t.x+=(r.y-i.y)*(r.z+i.z),t.y+=(r.z-i.z)*(r.x+i.x),t.z+=(r.x-i.x)*(r.y+i.y)}return t.normalize(),t}getNormalTangentAndBitangent(e){let t=this.getNormalNewell(e),n=(Math.abs(t.z)>.5?new Me(0,1,0):new Me(0,0,1)).cross(t).normalize();return{normal:t,tangent:n,bitangent:t.clone().cross(n).normalize()}}flattenVertex(e,t,n){return new he(e.dot(t),e.dot(n))}genFace(e,t,n,r,i,a,o,s,c,l){let u;if(l>3){let e=[],r=t.baseVertexPositions||t.vertexPositions;for(let t=0;t<n.length;t+=3)e.push(new Me(r[n[t]],r[n[t+1]],r[n[t+2]]));let{tangent:i,bitangent:a}=this.getNormalTangentAndBitangent(e),o=[];for(let t of e)o.push(this.flattenVertex(t,i,a));u=pe.triangulateShape(o,[])}else u=[[0,1,2]];for(let[l,d,f]of u)e.vertex.push(t.vertexPositions[n[l*3]]),e.vertex.push(t.vertexPositions[n[l*3+1]]),e.vertex.push(t.vertexPositions[n[l*3+2]]),e.vertex.push(t.vertexPositions[n[d*3]]),e.vertex.push(t.vertexPositions[n[d*3+1]]),e.vertex.push(t.vertexPositions[n[d*3+2]]),e.vertex.push(t.vertexPositions[n[f*3]]),e.vertex.push(t.vertexPositions[n[f*3+1]]),e.vertex.push(t.vertexPositions[n[f*3+2]]),t.skeleton&&(e.vertexWeights.push(s[l*4]),e.vertexWeights.push(s[l*4+1]),e.vertexWeights.push(s[l*4+2]),e.vertexWeights.push(s[l*4+3]),e.vertexWeights.push(s[d*4]),e.vertexWeights.push(s[d*4+1]),e.vertexWeights.push(s[d*4+2]),e.vertexWeights.push(s[d*4+3]),e.vertexWeights.push(s[f*4]),e.vertexWeights.push(s[f*4+1]),e.vertexWeights.push(s[f*4+2]),e.vertexWeights.push(s[f*4+3]),e.weightsIndices.push(c[l*4]),e.weightsIndices.push(c[l*4+1]),e.weightsIndices.push(c[l*4+2]),e.weightsIndices.push(c[l*4+3]),e.weightsIndices.push(c[d*4]),e.weightsIndices.push(c[d*4+1]),e.weightsIndices.push(c[d*4+2]),e.weightsIndices.push(c[d*4+3]),e.weightsIndices.push(c[f*4]),e.weightsIndices.push(c[f*4+1]),e.weightsIndices.push(c[f*4+2]),e.weightsIndices.push(c[f*4+3])),t.color&&(e.colors.push(a[l*3]),e.colors.push(a[l*3+1]),e.colors.push(a[l*3+2]),e.colors.push(a[d*3]),e.colors.push(a[d*3+1]),e.colors.push(a[d*3+2]),e.colors.push(a[f*3]),e.colors.push(a[f*3+1]),e.colors.push(a[f*3+2])),t.material&&t.material.mappingType!==`AllSame`&&(e.materialIndex.push(r),e.materialIndex.push(r),e.materialIndex.push(r)),t.normal&&(e.normal.push(i[l*3]),e.normal.push(i[l*3+1]),e.normal.push(i[l*3+2]),e.normal.push(i[d*3]),e.normal.push(i[d*3+1]),e.normal.push(i[d*3+2]),e.normal.push(i[f*3]),e.normal.push(i[f*3+1]),e.normal.push(i[f*3+2])),t.uv&&t.uv.forEach(function(t,n){e.uvs[n]===void 0&&(e.uvs[n]=[]),e.uvs[n].push(o[n][l*2]),e.uvs[n].push(o[n][l*2+1]),e.uvs[n].push(o[n][d*2]),e.uvs[n].push(o[n][d*2+1]),e.uvs[n].push(o[n][f*2]),e.uvs[n].push(o[n][f*2+1])})}addMorphTargets(e,t,n,r){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];let i=r.clone().setPosition(0,0,0),a=this;n.forEach(function(n){n.rawTargets.forEach(function(n){let r=P.Objects.Geometry[n.geoID];r!==void 0&&a.genMorphGeometry(e,t,r,i,n.name)})})}genMorphGeometry(e,t,n,r,i){let a=t.Vertices===void 0?[]:t.Vertices.a,o=t.PolygonVertexIndex===void 0?[]:t.PolygonVertexIndex.a,s=n.Vertices===void 0?[]:n.Vertices.a,c=n.Indexes===void 0?[]:n.Indexes.a,l=e.attributes.position.count*3,u=new Float32Array(l);for(let e=0;e<c.length;e++){let t=c[e]*3;u[t]=s[e*3],u[t+1]=s[e*3+1],u[t+2]=s[e*3+2]}let d={vertexIndices:o,vertexPositions:u,baseVertexPositions:a},f=this.genBuffers(d),p=new ce(f.vertex,3);p.name=i||n.attrName,p.applyMatrix4(r),e.morphAttributes.position.push(p)}parseNormals(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Normals.a,i=[];return n===`IndexToDirect`&&(`NormalIndex`in e?i=e.NormalIndex.a:`NormalsIndex`in e&&(i=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:i,mappingType:t,referenceType:n}}parseUVs(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.UV.a,i=[];return n===`IndexToDirect`&&(i=e.UVIndex.a),{dataSize:2,buffer:r,indices:i,mappingType:t,referenceType:n}}parseVertexColors(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Colors.a,i=[];n===`IndexToDirect`&&(i=e.ColorIndex.a);for(let e=0,t=new ue;e<r.length;e+=4)t.fromArray(r,e),M.colorSpaceToWorking(t,fe),t.toArray(r,e);return{dataSize:4,buffer:r,indices:i,mappingType:t,referenceType:n}}parseMaterialIndices(e){let t=e.MappingInformationType,n=e.ReferenceInformationType;if(t===`NoMappingInformation`)return{dataSize:1,buffer:[0],indices:[0],mappingType:`AllSame`,referenceType:n};let r=e.Materials.a,i=[];for(let e=0;e<r.length;++e)i.push(e);return{dataSize:1,buffer:r,indices:i,mappingType:t,referenceType:n}}parseNurbsGeometry(e){let t=parseInt(e.Order);if(isNaN(t))return console.error(`THREE.FBXLoader: Invalid Order %s given for geometry ID: %s`,e.Order,e.id),new re;let n=t-1,r=e.KnotVector.a,i=[],a=e.Points.a;for(let e=0,t=a.length;e<t;e+=4)i.push(new we().fromArray(a,e));let o,s;if(e.Form===`Closed`)i.push(i[0]);else if(e.Form===`Periodic`){o=n,s=r.length-1-o;for(let e=0;e<n;++e)i.push(i[e])}let c=new un(n,r,i,o,s).getPoints(i.length*12);return new re().setFromPoints(c)}},gn=class{parse(){let e=[],t=this.parseClips();if(t!==void 0)for(let n in t){let r=t[n],i=this.addClip(r);e.push(i)}return e}parseClips(){if(P.Objects.AnimationCurve===void 0)return;let e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);let t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){let e=P.Objects.AnimationCurveNode,t=new Map;for(let n in e){let r=e[n];if(r.attrName.match(/S|R|T|DeformPercent/)!==null){let e={id:r.id,attr:r.attrName,curves:{}};t.set(e.id,e)}}return t}parseAnimationCurves(e){let t=P.Objects.AnimationCurve;for(let n in t){let r={id:t[n].id,times:t[n].KeyTime.a.map(wn),values:t[n].KeyValueFloat.a},i=dn.get(r.id);if(i!==void 0){let t=i.parents[0].ID,n=i.parents[0].relationship;n.match(/X/)?e.get(t).curves.x=r:n.match(/Y/)?e.get(t).curves.y=r:n.match(/Z/)?e.get(t).curves.z=r:n.match(/DeformPercent/)&&e.has(t)&&(e.get(t).curves.morph=r)}}}parseAnimationLayers(e){let t=P.Objects.AnimationLayer,n=new Map;for(let r in t){let t=[],i=dn.get(parseInt(r));i!==void 0&&(i.children.forEach(function(n,r){if(e.has(n.ID)){let i=e.get(n.ID);if(i.curves.x!==void 0||i.curves.y!==void 0||i.curves.z!==void 0){if(t[r]===void 0){let e=dn.get(n.ID).parents.filter(function(e){return e.relationship!==void 0});if(e.length===0)return;let i=e[0].ID;if(i!==void 0){let e=P.Objects.Model[i.toString()];if(e===void 0){console.warn(`THREE.FBXLoader: Encountered a unused curve.`,n);return}let a={modelName:e.attrName?T.sanitizeNodeName(e.attrName):``,ID:e.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};fn.traverse(function(t){t.ID===e.id&&(a.transform=t.matrix,t.userData.transformData&&(a.eulerOrder=t.userData.transformData.eulerOrder,t.userData.transformData.rotation&&(a.initialRotation=t.userData.transformData.rotation)))}),a.transform||=new ye,`PreRotation`in e&&(a.preRotation=e.PreRotation.value),`PostRotation`in e&&(a.postRotation=e.PostRotation.value),t[r]=a}}t[r]&&(t[r][i.attr]=i)}else if(i.curves.morph!==void 0){if(t[r]===void 0){let e=dn.get(n.ID).parents.filter(function(e){return e.relationship!==void 0});if(e.length===0)return;let i=e[0].ID,a=dn.get(i).parents[0].ID,o=dn.get(a).parents[0].ID,s=dn.get(o).parents[0].ID,c=P.Objects.Model[s],l={modelName:c.attrName?T.sanitizeNodeName(c.attrName):``,morphName:P.Objects.Deformer[i].attrName};t[r]=l}t[r][i.attr]=i}}}),n.set(parseInt(r),t))}return n}parseAnimStacks(e){let t=P.Objects.AnimationStack,n={};for(let r in t){let i=dn.get(parseInt(r)).children;i.length>1&&console.warn(`THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.`);let a=e.get(i[0].ID);n[r]={name:t[r].attrName,layer:a}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(e){t=t.concat(n.generateTracks(e))}),new Te(e.name,-1,t)}generateTracks(e){let t=[],n=new Me,r=new Me;if(e.transform&&e.transform.decompose(n,new de,r),n=n.toArray(),r=r.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let r=this.generateVectorTrack(e.modelName,e.T.curves,n,`position`);r!==void 0&&t.push(r)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let n=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder,e.initialRotation);n!==void 0&&t.push(n)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let n=this.generateVectorTrack(e.modelName,e.S.curves,r,`scale`);n!==void 0&&t.push(n)}if(e.DeformPercent!==void 0){let n=this.generateMorphTrack(e);n!==void 0&&t.push(n)}return t}generateVectorTrack(e,t,n,r){let i=this.getTimesForAllAxes(t),a=this.getKeyframeTrackValues(i,t,n);return new De(e+`.`+r,i,a)}generateRotationTrack(e,t,n,r,i,a){let o,s;if(t.x!==void 0||t.y!==void 0||t.z!==void 0){let e=this.getTimesForAllAxes(t);if(e.length>0){let n=a||[0,0,0],r=this.synchronizeCurve(t.x,e,n[0]),c=this.synchronizeCurve(t.y,e,n[1]),l=this.synchronizeCurve(t.z,e,n[2]),u=this.interpolateRotations(r,c,l,i);o=u[0],s=u[1]}}let c=An(0);n!==void 0&&(n=n.map(Ne.degToRad),n.push(c),n=new ae().fromArray(n),n=new de().setFromEuler(n)),r!==void 0&&(r=r.map(Ne.degToRad),r.push(c),r=new ae().fromArray(r),r=new de().setFromEuler(r).invert());let l=new de,u=new ae,d=[];if(!(!s||!o)){for(let e=0;e<s.length;e+=3)u.set(s[e],s[e+1],s[e+2],i),l.setFromEuler(u),n!==void 0&&l.premultiply(n),r!==void 0&&l.multiply(r),e>2&&new de().fromArray(d,(e-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(d,e/3*4);return new k(e+`.quaternion`,o,d)}}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(e){return e/100}),r=fn.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new E(e.modelName+`.morphTargetInfluences[`+r+`]`,t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(e,t){return e-t}),t.length>1){let e=1,n=t[0];for(let r=1;r<t.length;r++){let i=t[r];i!==n&&(t[e]=i,n=i,e++)}t=t.slice(0,e)}return t}getKeyframeTrackValues(e,t,n){let r=n,i=[],a=-1,o=-1,s=-1;return e.forEach(function(e){if(t.x&&(a=t.x.times.indexOf(e)),t.y&&(o=t.y.times.indexOf(e)),t.z&&(s=t.z.times.indexOf(e)),a!==-1){let e=t.x.values[a];i.push(e),r[0]=e}else i.push(r[0]);if(o!==-1){let e=t.y.values[o];i.push(e),r[1]=e}else i.push(r[1]);if(s!==-1){let e=t.z.values[s];i.push(e),r[2]=e}else i.push(r[2])}),i}synchronizeCurve(e,t,n){if(e===void 0)return{times:t,values:t.map(()=>n)};if(e.times.length===t.length)return e;let r=[];for(let i=0;i<t.length;i++)r.push(this.sampleCurveValue(e,t[i],n));return{times:t,values:r}}sampleCurveValue(e,t,n){let r=e.times,i=e.values;if(t<=r[0])return i[0];if(t>=r[r.length-1])return i[i.length-1];for(let e=0;e<r.length-1;e++)if(t>=r[e]&&t<=r[e+1]){if(r[e]===t)return i[e];let n=(t-r[e])/(r[e+1]-r[e]);return i[e]*(1-n)+i[e+1]*n}return n}interpolateRotations(e,t,n,r){let i=[],a=[];i.push(e.times[0]),a.push(Ne.degToRad(e.values[0])),a.push(Ne.degToRad(t.values[0])),a.push(Ne.degToRad(n.values[0]));for(let o=1;o<e.values.length;o++){let s=[e.values[o-1],t.values[o-1],n.values[o-1]];if(isNaN(s[0])||isNaN(s[1])||isNaN(s[2]))continue;let c=s.map(Ne.degToRad),l=[e.values[o],t.values[o],n.values[o]];if(isNaN(l[0])||isNaN(l[1])||isNaN(l[2]))continue;let u=l.map(Ne.degToRad),d=[l[0]-s[0],l[1]-s[1],l[2]-s[2]],f=[Math.abs(d[0]),Math.abs(d[1]),Math.abs(d[2])];if(f[0]>=180||f[1]>=180||f[2]>=180){let t=Math.max(...f)/180,n=new ae(...c,r),s=new ae(...u,r),l=new de().setFromEuler(n),d=new de().setFromEuler(s);l.dot(d)<0&&d.set(-d.x,-d.y,-d.z,-d.w);let p=e.times[o-1],m=e.times[o]-p,h=new de,g=new ae;for(let e=0;e<1;e+=1/t)h.copy(l.clone().slerp(d.clone(),e)),i.push(p+e*m),g.setFromQuaternion(h,r),a.push(g.x),a.push(g.y),a.push(g.z)}else i.push(e.times[o]),a.push(Ne.degToRad(e.values[o])),a.push(Ne.degToRad(t.values[o])),a.push(Ne.degToRad(n.values[o]))}return[i,a]}},_n=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),--this.currentIndent}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new bn,this.nodeStack=[],this.currentProp=[],this.currentPropName=``;let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),a=e.match(/^[\s\t]*$/);if(i||a)return;let o=e.match(`^\\t{`+t.currentIndent+`}(\\w+):(.*){`,``),s=e.match(`^\\t{`+t.currentIndent+`}(\\w+):[\\s\\t\\r\\n](.*)`),c=e.match(`^\\t{`+(t.currentIndent-1)+`}}`);o?t.parseNodeBegin(e,o):s?t.parseNodeProperty(e,s,n[++r]):c?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,``).replace(/"$/,``),r=t[2].split(`,`).map(function(e){return e.trim().replace(/^"/,``).replace(/"$/,``)}),i={name:n},a=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n===`PoseNode`?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),a.id!==``&&(o[n][a.id]=i)):typeof a.id==`number`?(o[n]={},o[n][a.id]=i):n!==`Properties70`&&(o[n]=n===`PoseNode`?[i]:i),typeof a.id==`number`&&(i.id=a.id),a.name!==``&&(i.attrName=a.name),a.type!==``&&(i.attrType=a.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==``&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n=``,r=``;return e.length>1&&(n=e[1].replace(/^(\w+)::/,``),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,``).replace(/"$/,``).trim(),i=t[2].replace(/^"/,``).replace(/"$/,``).trim();r===`Content`&&i===`,`&&(i=n.replace(/"/g,``).replace(/,$/,``).trim());let a=this.getCurrentNode();if(a.name===`Properties70`){this.parseNodeSpecialProperty(e,r,i);return}if(r===`C`){let e=i.split(`,`).slice(1),t=parseInt(e[0]),n=parseInt(e[1]),o=i.split(`,`).slice(3);o=o.map(function(e){return e.trim().replace(/^"/,``)}),r=`connections`,i=[t,n],Nn(i,o),a[r]===void 0&&(a[r]=[])}r===`Node`&&(a.id=i),r in a&&Array.isArray(a[r])?a[r].push(i):r===`a`?a.a=i:a[r]=i,this.setCurrentProp(a,r),r===`a`&&i.slice(-1)!==`,`&&(a.a=jn(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==`,`&&(t.a=jn(t.a))}parseNodeSpecialProperty(e,t,n){let r=n.split(`",`).map(function(e){return e.trim().replace(/^\"/,``).replace(/\s/,`_`)}),i=r[0],a=r[1],o=r[2],s=r[3],c=r[4];switch(a){case`int`:case`enum`:case`bool`:case`ULongLong`:case`double`:case`Number`:case`FieldOfView`:c=parseFloat(c);break;case`Color`:case`ColorRGB`:case`Vector3D`:case`Lcl_Translation`:case`Lcl_Rotation`:case`Lcl_Scaling`:c=jn(c)}this.getPrevNode()[i]={type:a,type2:o,flag:s,value:c},this.setCurrentProp(this.getPrevNode(),i)}},vn=class{parse(e){let t=new yn(e);t.skip(23);let n=t.getUint32();if(n<6400)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+n);let r=new bn;for(;!this.endOfContent(t);){let e=this.parseNode(t,n);e!==null&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let a=e.getUint8(),o=e.getString(a);if(r===0)return null;let s=[];for(let t=0;t<i;t++)s.push(this.parseProperty(e));let c=s.length>0?s[0]:``,l=s.length>1?s[1]:``,u=s.length>2?s[2]:``;for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);r!==null&&this.parseSubNode(o,n,r)}return n.propertyList=s,typeof c==`number`&&(n.id=c),l!==``&&(n.attrName=l),u!==``&&(n.attrType=u),o!==``&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let e=n.propertyList[0];Array.isArray(e)?(t[n.name]=n,n.a=e):t[n.name]=e}else if(e===`Connections`&&n.name===`C`){let e=[];n.propertyList.forEach(function(t,n){n!==0&&e.push(t)}),t.connections===void 0&&(t.connections=[]),t.connections.push(e)}else if(n.name===`Properties70`)Object.keys(n).forEach(function(e){t[e]=n[e]});else if(e===`Properties70`&&n.name===`P`){let e=n.propertyList[0],r=n.propertyList[1],i=n.propertyList[2],a=n.propertyList[3],o;e.indexOf(`Lcl `)===0&&(e=e.replace(`Lcl `,`Lcl_`)),r.indexOf(`Lcl `)===0&&(r=r.replace(`Lcl `,`Lcl_`)),o=r===`Color`||r===`ColorRGB`||r===`Vector`||r===`Vector3D`||r.indexOf(`Lcl_`)===0?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[e]={type:r,type2:i,flag:a,value:o}}else t[n.name]===void 0?typeof n.id==`number`?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name===`PoseNode`?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case`C`:return e.getBoolean();case`D`:return e.getFloat64();case`F`:return e.getFloat32();case`I`:return e.getInt32();case`L`:return e.getInt64();case`R`:return n=e.getUint32(),e.getArrayBuffer(n);case`S`:return n=e.getUint32(),e.getString(n);case`Y`:return e.getInt16();case`b`:case`c`:case`d`:case`f`:case`i`:case`l`:let r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(i===0)switch(t){case`b`:case`c`:return e.getBooleanArray(r);case`d`:return e.getFloat64Array(r);case`f`:return e.getFloat32Array(r);case`i`:return e.getInt32Array(r);case`l`:return e.getInt64Array(r)}let o=new yn(je(new Uint8Array(e.getArrayBuffer(a))).buffer);switch(t){case`b`:case`c`:return o.getBooleanArray(r);case`d`:return o.getFloat64Array(r);case`f`:return o.getFloat32Array(r);case`i`:return o.getInt32Array(r);case`l`:return o.getInt64Array(r)}break;default:throw Error(`THREE.FBXLoader: Unknown property type `+t)}}},yn=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t===void 0||t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)==1}getBooleanArray(e){let t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){let e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){let e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){let e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){let e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){let e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){let e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){let t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=this.offset,n=new Uint8Array(this.dv.buffer,t,e);this.skip(e);let r=n.indexOf(0);return r>=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}},bn=class{add(e,t){this[e]=t}};function xn(e){return e.byteLength>=21&&Mn(e,0,21)===`Kaydara FBX Binary \0`}function Sn(e){let t=[`K`,`a`,`y`,`d`,`a`,`r`,`a`,`\\`,`F`,`B`,`X`,`\\`,`B`,`i`,`n`,`a`,`r`,`y`,`\\`,`\\`],n=0;function r(t){let r=e[t-1];return e=e.slice(n+t),n++,r}for(let e=0;e<t.length;++e)if(r(1)===t[e])return!1;return!0}function Cn(e){let t=e.match(/FBXVersion: (\d+)/);if(t)return parseInt(t[1]);throw Error(`THREE.FBXLoader: Cannot find the version number for the file given.`)}function wn(e){return e/46186158e3}var Tn=[];function En(e,t,n,r){let i;switch(r.mappingType){case`ByPolygonVertex`:i=e;break;case`ByPolygon`:i=t;break;case`ByVertice`:i=n;break;case`AllSame`:i=r.indices[0];break;default:console.warn(`THREE.FBXLoader: unknown attribute mapping type `+r.mappingType)}r.referenceType===`IndexToDirect`&&(i=r.indices[i]);let a=i*r.dataSize,o=a+r.dataSize;return Pn(Tn,r.buffer,a,o)}var Dn=new ae,On=new Me;function kn(e){let t=new ye,n=new ye,r=new ye,i=new ye,a=new ye,o=new ye,s=new ye,c=new ye,l=new ye,u=new ye,d=new ye,f=new ye,p=e.inheritType?e.inheritType:0;e.translation&&t.setPosition(On.fromArray(e.translation));let m=An(0);if(e.preRotation){let t=e.preRotation.map(Ne.degToRad);t.push(m),n.makeRotationFromEuler(Dn.fromArray(t))}if(e.rotation){let t=e.rotation.map(Ne.degToRad);t.push(e.eulerOrder||m),r.makeRotationFromEuler(Dn.fromArray(t))}if(e.postRotation){let t=e.postRotation.map(Ne.degToRad);t.push(m),i.makeRotationFromEuler(Dn.fromArray(t)),i.invert()}e.scale&&a.scale(On.fromArray(e.scale)),e.scalingOffset&&s.setPosition(On.fromArray(e.scalingOffset)),e.scalingPivot&&o.setPosition(On.fromArray(e.scalingPivot)),e.rotationOffset&&c.setPosition(On.fromArray(e.rotationOffset)),e.rotationPivot&&l.setPosition(On.fromArray(e.rotationPivot)),e.parentMatrixWorld&&(d.copy(e.parentMatrix),u.copy(e.parentMatrixWorld));let h=n.clone().multiply(r).multiply(i),g=new ye;g.extractRotation(u);let _=new ye;_.copyPosition(u);let v=_.clone().invert().multiply(u),y=g.clone().invert().multiply(v),b=a,x=new ye;if(p===0)x.copy(g).multiply(h).multiply(y).multiply(b);else if(p===1)x.copy(g).multiply(y).multiply(h).multiply(b);else{let e=new ye().scale(new Me().setFromMatrixScale(d)).clone().invert(),t=y.clone().multiply(e);x.copy(g).multiply(h).multiply(t).multiply(b)}let S=l.clone().invert(),C=o.clone().invert(),w=t.clone().multiply(c).multiply(l).multiply(n).multiply(r).multiply(i).multiply(S).multiply(s).multiply(o).multiply(a).multiply(C),T=new ye().copyPosition(w),E=u.clone().multiply(T);return f.copyPosition(E),w=f.clone().multiply(x),w.premultiply(u.invert()),w}function An(e){e||=0;let t=[`ZYX`,`YZX`,`XZY`,`ZXY`,`YXZ`,`XYZ`];return e===6?(console.warn(`THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.`),t[0]):t[e]}function jn(e){return e.split(`,`).map(function(e){return parseFloat(e)})}function Mn(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=e.byteLength),new TextDecoder().decode(new Uint8Array(e,t,n))}function Nn(e,t){for(let n=0,r=e.length,i=t.length;n<i;n++,r++)e[r]=t[n]}function Pn(e,t,n,r){for(let i=n,a=0;i<r;i++,a++)e[a]=t[i];return e}var Fn=`Kaydara FBX Binary \0`,In=65536;function Ln(e){return e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):null}function Rn(e){return e instanceof ArrayBuffer?e:ArrayBuffer.isView(e)?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):null}function zn(e){let t=Ln(e);if(!t||t.byteLength<21)return!1;for(let e=0;e<21;e++)if(t[e]!==Fn.charCodeAt(e))return!1;return!0}function Bn(e){let t=Ln(e);if(!t||!t.byteLength)return null;let n=t.subarray(0,Math.min(t.byteLength,In)),r=new TextDecoder(`utf-8`).decode(n).match(/FBXVersion: (\d+)/);if(!r)return null;let i=Number(r[1]);return Number.isFinite(i)?i:null}function Vn(e){let t=Rn(e);return!t||!t.byteLength?null:new pn().parse(t,``)}function Hn(e){try{let t=Vn(e);if(!t)return null;t.updateMatrixWorld(!0);let n=new O().setFromObject(t),r=n.getSize(new Me);return!(r.y>0)||!Number.isFinite(r.y)?null:{min:{x:n.min.x,y:n.min.y,z:n.min.z},max:{x:n.max.x,y:n.max.y,z:n.max.z}}}catch{return null}}var Un=.05,Wn=1179937895,Gn=1313821514,Kn=12,qn=8;function Jn(e){return e instanceof ArrayBuffer?new DataView(e):ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):null}function Yn(e){let t=Jn(e);return!!(t&&t.byteLength>=4&&t.getUint32(0,!0)===Wn)}function Xn(e){let t=Jn(e);if(!t||t.byteLength<Kn||t.getUint32(0,!0)!==Wn)return null;let n=Kn;for(;n+qn<=t.byteLength;){let e=t.getUint32(n,!0),r=t.getUint32(n+4,!0),i=n+qn;if(e>t.byteLength-i)return null;if(r===Gn){let n=new Uint8Array(t.buffer,t.byteOffset+i,e);try{let e=n.length;for(;e>0&&n[e-1]===0;)--e;return JSON.parse(new TextDecoder().decode(n.subarray(0,e)))}catch{return null}}n=i+e}return null}function Zn(e){let t=Xn(e);if(!t||typeof t!=`object`)return null;let n=Array.isArray(t.accessors)?t.accessors:[],r=new Set;for(let e of Array.isArray(t.meshes)?t.meshes:[])for(let t of Array.isArray(e?.primitives)?e.primitives:[]){let e=t?.attributes?.POSITION;Number.isInteger(e)&&r.add(e)}let i=null;for(let e of r){let t=n[e],r=t?.min,a=t?.max;if(!Array.isArray(r)||!Array.isArray(a)||r.length!==3||a.length!==3)continue;let o=[Number(r[0]),Number(r[1]),Number(r[2])],s=[Number(a[0]),Number(a[1]),Number(a[2])];if(!(o.some(e=>!Number.isFinite(e))||s.some(e=>!Number.isFinite(e)))){if(!i){i={min:{x:o[0],y:o[1],z:o[2]},max:{x:s[0],y:s[1],z:s[2]}};continue}i.min.x=Math.min(i.min.x,o[0]),i.min.y=Math.min(i.min.y,o[1]),i.min.z=Math.min(i.min.z,o[2]),i.max.x=Math.max(i.max.x,s[0]),i.max.y=Math.max(i.max.y,s[1]),i.max.z=Math.max(i.max.z,s[2])}}return i}var Qn=new Set([`KHR_draco_mesh_compression`,`EXT_meshopt_compression`]),$n=`That model is compressed — export it uncompressed (no Draco / meshopt)`;function er(e){let t=new Set;if(!e||typeof e!=`object`)return t;for(let n of[e.extensionsUsed,e.extensionsRequired])if(Array.isArray(n))for(let e of n)typeof e==`string`&&t.add(e);for(let n of Array.isArray(e.meshes)?e.meshes:[])for(let e of Array.isArray(n?.primitives)?n.primitives:[]){let n=e?.extensions;if(!(!n||typeof n!=`object`))for(let e of Object.keys(n))t.add(e)}return t}function tr(e){let t=Xn(e);if(!t)return null;for(let e of er(t))if(Qn.has(e))return $n;return null}function nr(e){return e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):null}function rr(e){let t=nr(e);if(!t||!t.byteLength)return``;let n=new TextDecoder(`utf-8`).decode(t);return n.charCodeAt(0)===65279&&(n=n.slice(1)),n}function ir(e){let t=rr(e);if(!t)return null;let n=null;for(let e of t.split(/\r?\n/)){let t=e.trim();if(!/^v(?:\s|$)/.test(t))continue;let r=t.split(/\s+/);if(r[0]!==`v`)continue;let i=Number(r[1]),a=Number(r[2]),o=Number(r[3]);if([i,a,o].every(Number.isFinite)){if(!n){n={min:{x:i,y:a,z:o},max:{x:i,y:a,z:o}};continue}n.min.x=Math.min(n.min.x,i),n.min.y=Math.min(n.min.y,a),n.min.z=Math.min(n.min.z,o),n.max.x=Math.max(n.max.x,i),n.max.y=Math.max(n.max.y,a),n.max.z=Math.max(n.max.z,o)}}return n}function ar(e){let t=String(e?.type??``).toLowerCase();return t===`model/obj`?ir(e?.bytes):t===`model/fbx`?Hn(e?.bytes):t===`model/gltf-binary`?Zn(e?.bytes):null}function or({min:e,max:t}={}){let n=Number(t?.x)-Number(e?.x),r=Number(t?.y)-Number(e?.y),i=Number(t?.z)-Number(e?.z);if(!Number.isFinite(r)||!(r>0))return null;let a=r<.05||r>10?1/r:1,o=n*a,s=r*a,c=i*a;return{width:o,height:s,depth:c,fitScale:a,footprint:{width:o,depth:c}}}function sr(e){if(!e)return!1;let t=typeof e.type==`string`?e.type.toLowerCase():``;return t===`model/gltf-binary`||t===`application/gltf-binary`?!0:t===``||t===`application/octet-stream`?String(e.name??``).toLowerCase().endsWith(`.glb`):!1}function cr(e){if(!e)return!1;let t=typeof e.type==`string`?e.type.toLowerCase():``;return t===`model/obj`?!0:String(e.name??``).toLowerCase().endsWith(`.obj`)?t===``||t===`text/plain`||t===`application/octet-stream`||t===`text/x-obj`||t===`application/object`:!1}function lr(e){if(!e)return!1;let t=typeof e.type==`string`?e.type.toLowerCase():``;return t===`model/fbx`?!0:String(e.name??``).toLowerCase().endsWith(`.fbx`)?t===``||t===`text/plain`||t===`application/octet-stream`:!1}function ur(e){return Array.from(e?.files??[]).filter(e=>sr(e)||cr(e)||lr(e))}function dr(e){return e?Array.isArray(e)?e:typeof e.length==`number`&&e.files==null?Array.from(e):Array.from(e.files??[]):[]}function fr(e){let t=[],n=[],r=[];for(let i of dr(e))ur({files:[i]}).length?n.push(i):zt({files:[i]}).length?t.push(i):r.push(i);return{images:t,meshes:n,rejected:r}}async function pr(e,t=globalThis.crypto?.subtle){if(!e||typeof e.arrayBuffer!=`function`)throw Error(`importMeshFile needs a File or Blob`);if(Number(e.size)>33554432)throw Error(`That model is too large to import — larger than ${Math.round(St/1048576)} MB`);let n=await e.arrayBuffer(),r=typeof e.name==`string`?e.name:``,i=sr(e)||r.toLowerCase().endsWith(`.glb`),a=lr(e)||r.toLowerCase().endsWith(`.fbx`),o=cr(e)||r.toLowerCase().endsWith(`.obj`);if(Yn(n)){let e=tr(n);if(e)throw Error(e);let i=Zn(n),a=i?or(i):null;if(!a)throw Error(`That model has no measurable geometry`);let o=Rt({id:await Ft(n,t),type:`model/gltf-binary`,bytes:n,name:r});if(!o)throw Error(`That model could not be prepared for the set`);return{asset:o,height:a.height,footprint:a.footprint}}if(i)throw Error(`That file is not a GLB model`);let s=Bn(n);if(zn(n)||(s??0)>=7e3)try{let e=Hn(n),i=e?or(e):null;if(!i)throw Error(`That model has no measurable geometry`);let a=Rt({id:await Ft(n,t),type:`model/fbx`,bytes:n,name:r});if(!a)throw Error(`That model could not be prepared for the set`);return{asset:a,height:i.height,footprint:i.footprint}}catch(e){throw mr(e)}if(s!=null&&s<7e3)throw Error(`That FBX file is too old to import`);if(a)throw Error(`That file is not an FBX model`);let c=ir(n);if(!c)throw Error(o?`That file is not an OBJ model`:`That file is not a 3D model`);let l=or(c);if(!l)throw Error(`That model has no measurable geometry`);let u=Rt({id:await Ft(n,t),type:`model/obj`,bytes:n,name:r});if(!u)throw Error(`That model could not be prepared for the set`);return{asset:u,height:l.height,footprint:l.footprint}}function mr(e){let t=String(e?.message??e);return/too old to import/i.test(t)||/no measurable geometry/i.test(t)||/not an FBX/i.test(t)?e instanceof Error?e:Error(t):/version not supported|FileVersion/i.test(t)?Error(`That FBX file is too old to import`):Error(`That file is not an FBX model`)}var hr=`cozyclay.locale`;function gr(){try{let e=localStorage.getItem(hr);return e===`ko`||e===`en`?e:null}catch{return null}}var _r=gr()??`en`,vr=_r===`ko`,yr=gr()!==null;function F(e,t){return vr?t:e}function br(e){if(e===`ko`||e===`en`){try{localStorage.setItem(hr,e)}catch{}window.location.reload()}}var xr=1.8,Sr=1.3,Cr=Object.freeze({super16:Object.freeze({id:`super16`,label:`Super 16`,widthMm:12.52,heightMm:7.41}),super35:Object.freeze({id:`super35`,label:`Super 35`,widthMm:24.89,heightMm:18.66}),fullFrame:Object.freeze({id:`fullFrame`,label:`Full Frame`,widthMm:36,heightMm:24}),"65mm":Object.freeze({id:`65mm`,label:`65mm`,widthMm:52.63,heightMm:23.01})}),wr=`fullFrame`,Tr=16/9,Er=Object.freeze({"16:9":16/9,"2.39:1":2.39,"9:16":9/16,"1:1":1,"4:3":4/3,"12:7":12/7,"fal 480P":832/480});function Dr(e){return Er[e]??1.7777777777777777}function Or(e=wr,t=Tr){let n=Cr[e]??Cr.fullFrame,r=Number.isFinite(t)&&t>0?t:Tr;return Math.min(n.heightMm,n.widthMm/r)}function kr(e,t=wr,n=Tr){return Or(t,n)/(2*Math.tan(e/2))}function Ar(e,t=wr,n=Tr){return 2*Math.atan(Or(t,n)/(2*e))}var jr=[14,18,24,28,35,50,85,100,135];function Mr(e,t=wr,n=Tr){let r=kr(e,t,n);return jr.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e)}var Nr=[[2.8,`extreme close-up`,`ultra-realistic skin texture with visible pores and micro-detail, tack-sharp eyes, shallow depth of field`],[1.6,`close-up`,`ultra-realistic skin texture and fine facial detail, soft background blur, shallow depth of field`],[1.15,`medium close-up`,`natural skin and fabric texture, clear facial detail, shallow depth of field`],[.8,`medium shot`,`balanced detail on the subject and the surrounding space, moderate depth of field`],[.52,`medium-wide shot`,`the full figure with the environment clearly visible, deep focus`],[.3,`wide shot`,`full body in a richly detailed environment, deep focus`],[0,`extreme wide shot`,`a small figure within a vast, highly detailed environment, epic sense of scale, deep focus`]],Pr=[[2.5,`overhead`,`a directly overhead bird's-eye view looking down at the subject`],[1.8,`high angle`,`a high angle looking down at the subject`],[1.5,`eye level`,`eye level`],[1.25,`chest level`,`chest level`],[.95,`hip level`,`a low hip-level angle`],[.45,`knee level`,`a low knee-level angle looking up at the subject`],[-1/0,`ground level`,`a dramatic ground-level angle looking up at the subject`]],Fr=(e,t)=>e.find(([e])=>t>=e)??e[e.length-1];function Ir(e,t,n,r=xr,i={}){let a=i.sensorId??`fullFrame`,o=i.aspectRatio??1.7777777777777777,s=e.x-t.x,c=e.z-t.z,l=e.y-Sr,u=Math.hypot(s,c),d=Math.max(Math.hypot(u,l),1e-6),f=r/(2*d*Math.tan(n/2)),[,p,m]=Fr(Nr,f),[,h,g]=Fr(Pr,e.y),_=Math.atan2(e.y-r*.94,Math.max(u,1e-6))*180/Math.PI,v=t.rot*Math.PI/180,y={x:Math.sin(v),z:Math.cos(v)},b={x:s/Math.max(u,1e-6),z:c/Math.max(u,1e-6)},x=y.x*b.x+y.z*b.z,S=y.x*b.z-y.z*b.x>=0?`right`:`left`,C=S===`right`?`R`:`L`,w,T;return x>.85?(w=`front`,T=`seen from the front, the face toward the camera`):x<-.85?(w=`back`,T=`seen from directly behind, the back of the head toward the camera`):x>.34?(w=`front ¾ ${C}`,T=`a three-quarter front view from the ${S}`):x<-.34?(w=`rear ¾ ${C}`,T=`a three-quarter rear view from the ${S}`):(w=`${S} profile`,T=`a ${S}-side profile view`),{sizeLabel:p,sizeContext:m,levelLabel:h,levelPhrase:g,viewShort:w,viewPhrase:T,focalMm:Mr(n,a,o),exactFocalMm:kr(n,a,o),sensorId:Cr[a]?.id??`fullFrame`,usedSensorHeightMm:Or(a,o),distance:d,screenFraction:f,elevationDeg:_}}var Lr=[{id:`nano_banana_pro`,label:`Nano Banana Pro`},{id:`nano_banana_2`,label:`Nano Banana 2`},{id:`gpt_image_2`,label:`GPT Image 2`},{id:`seedream_5`,label:`Seedream 5.0`},{id:`flux_2`,label:`Flux 2`,numericLens:!0,flavor:`fine film grain, high micro-detail`}],Rr=`Custom…`,zr=[`Static / locked-off`,`Push-in (dolly in)`,`Pull-out (dolly out)`,`Pan left`,`Pan right`,`Tilt up`,`Tilt down`,`Tracking / follow`,`Orbit / arc`,`Crane up`,`Crane down`,`Handheld`,`Crash zoom in`,`Dolly-zoom (vertigo)`,`Whip pan`,`Aerial / drone`,Rr];function Br({mode:e=`image`,model:t,shot:n,subject:r,subject2:i=null,posePhrase:a=``,pose2Phrase:o=``,environment:s,style:c,cameraMove:l=zr[0],customMove:u=``,hasCharSheet:d=!1,hasEnvSheet:f=!1}){let p=t?.numericLens?`${n.focalMm}mm lens at f/2.2`:`${n.focalMm}mm lens`,m=e===`video`?`Cinematic ${n.sizeLabel} at ${p}, ${n.levelPhrase}, ${n.viewPhrase}.`:`Photorealistic cinematic film still, ${n.sizeLabel} at ${p}, ${n.levelPhrase}, ${n.viewPhrase}.`,h=(e,t)=>t?`${e}, ${t}`:e,g;g=d?i?`Both subjects are the characters from the attached character sheet. Each one exactly matches their own body pose and placement shown in the blocking frame.`:`The subject is the character from the attached character sheet, exactly matching the body pose and placement shown in the blocking frame.`:i?`Two subjects. Subject 1: ${h(r,a)}. Subject 2: ${h(i,o)}. Each subject exactly matches their own body pose and placement shown in the blocking frame.`:`Subject: ${h(r,a)}, exactly matching the body pose and placement shown in the blocking frame.`;let _=f?`The setting is the location from the attached environment sheet.`:`Environment: ${s}.`,v=l===`Custom…`?u.trim()||`static, locked-off shot`:l.toLowerCase();return[m,g,_,`${c}, ${n.sizeContext}.`,e===`video`?`Camera move: ${v}.`:null,`Use the attached blocking frame ONLY as a camera and staging guide — it fixes the exact framing, this camera angle, the lens, and the subject placement. Its floor grid is a measuring aid that encodes distance and scale: read the subject's depth and size from it, but do NOT draw the grid itself. Replace the entire setting with the described environment and render real people; do NOT reproduce its grey mannequins, grey box set, measurement grid, or flat lighting.`,t?.flavor??null,e===`video`&&(t?.audio||t?.capabilities?.audio)?`Include natural ambient sound.`:null,`16:9.`].filter(Boolean).join(` `)}var Vr=1;function Hr(e){return Array.isArray(e)?`[${e.map(Hr).join(`,`)}]`:!e||typeof e!=`object`?JSON.stringify(e):`{${Object.keys(e).filter(e=>e!==`id`).sort().map(t=>`${JSON.stringify(t)}:${Hr(e[t])}`).join(`,`)}}`}function Ur(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}var Wr=class extends Error{constructor(e,t){super(`Unknown ${e} ID: ${t}`),this.name=`UnknownStableItemIdError`}};function Gr(e){return`${e}-${Date.now().toString(36)}-${Vr++}`}function Kr(e){return typeof e==`string`&&e.trim()!==``}function qr(e,t,n=new Set){let r=n,i=new Map;return(Array.isArray(e)?e:[]).map(e=>{let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},a=Kr(n.id)?n.id:null;if(a&&!r.has(a))return r.add(a),{...n,id:a};let o=`${t}-${Ur(Hr(n))}`,s=i.get(o)??0;i.set(o,s+1);let c=s===0?o:`${o}-${s+1}`;for(;r.has(c);){let e=i.get(o)??0;i.set(o,e+1),c=`${o}-${e+1}`}return r.add(c),{...n,id:c}})}function Jr(e,t,n){let r=Array.isArray(e)?e.find(e=>e.id===t):void 0;if(!r)throw new Wr(n,t);return r}function Yr(e,t,n,r){return Jr(e,t,r),e.map(e=>e.id===t?n(e):e)}function Xr(e,t,n){return Jr(e,t,n),e.filter(e=>e.id!==t)}function Zr(e,t,n=e=>e.v){let r=e.length-1,i=Math.max(e[0].t,Math.min(e[r].t,t));if(i<=e[0].t)return n(e[0]);if(i>=e[r].t)return n(e[r]);let a=0;for(;a<e.length-2&&i>e[a+1].t;)a+=1;let o=e[a],s=e[a+1],c=s.t-o.t;if(c<1e-9)return n(s);let l=n(o),u=n(s),d=(e,t)=>(n(t)-n(e))/Math.max(t.t-e.t,1e-9),f=d(o,s),p=(e,t)=>e*t<=0?0:2*e*t/(e+t),m=a>0?p(d(e[a-1],o),f):f,h=a<e.length-2?p(f,d(s,e[a+2])):f,g=(i-o.t)/c,_=g*g,v=_*g;return(2*v-3*_+1)*l+(v-2*_+g)*c*m+(-2*v+3*_)*u+(v-_)*c*h}var Qr=.03,$r=240,ei=(e,t,n)=>Math.min(n,Math.max(t,e)),ti=(e,t=0)=>typeof e==`number`&&Number.isFinite(e)?e:t,ni=e=>{let t=Math.round(e*1e4)/1e4;return t===0?0:t};function ri(e){return e&&typeof e==`object`?{t:ti(e.t,-1),bank:ni(ei(ti(e.bank),-90,90)),pitch:ni(ei(ti(e.pitch),-90,90))}:{t:ti(e,-1),bank:0,pitch:0}}function ii(e){let t=[],n=(Array.isArray(e)?e:[]).map(ri).filter(e=>e.t>.03&&e.t<.97).sort((e,t)=>e.t-t.t);for(let e of n){let n=t.length?t[t.length-1].t:0;if(!(e.t-n<.03||1-e.t<.03)){if(t.length>=6)break;t.push(e)}}return t}function ai(e){let t=e&&typeof e==`object`?e:{};return{x:ei(ti(t.x),-240,$r),y:ei(ti(t.y),0,60),z:ei(ti(t.z),-240,$r)}}function oi(e){if(!e||typeof e!=`object`)return null;let t=Array.isArray(e.points)?e.points:[],n=[];for(let e of t){let t=ai(e),r=n[n.length-1];if(!(r&&Math.hypot(t.x-r.x,t.z-r.z,t.y-r.y)<1e-4)&&(n.push(t),n.length>=64))break}if(n.length<2)return null;let r=ti(e.speed,0),a=b(e.timing);return{points:n,marks:ii(e.marks),timing:i(a)?null:a,speed:r>0?ei(r,.01,50):0,faceTravel:e.faceTravel!==!1,loop:e.loop===!0,extend:e.extend===!0}}function si(e,t){let n=oi(e);if(!n)return null;let r=ti(t?.x),i=ti(t?.y),a=ti(t?.z);return!r&&!i&&!a?n:oi({...n,points:n.points.map(e=>({x:e.x+r,y:e.y+i,z:e.z+a}))})}var ci=.05,li=400,ui=.5,di=new Map,fi=64,pi=(e,t)=>({x:2*e.x-t.x,y:2*e.y-t.y,z:2*e.z-t.z}),mi=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y,t.z-e.z);function hi(e,t,n,r,i){let a=0+Math.max(mi(e,t)**ui,1e-6),o=a+Math.max(mi(t,n)**ui,1e-6),s=o+Math.max(mi(n,r)**ui,1e-6),c=a+(o-a)*i,l=(e,t,n,r)=>{let i=r-n<1e-12?0:(c-n)/(r-n);return{x:e.x+(t.x-e.x)*i,y:e.y+(t.y-e.y)*i,z:e.z+(t.z-e.z)*i}},u=l(e,t,0,a),d=l(t,n,a,o),f=l(n,r,o,s);return l(l(u,d,0,o),l(d,f,a,s),a,o)}function gi(e,t){let n=e[t],r=e[t+1];return[t>0?e[t-1]:pi(n,r),n,r,t+2<e.length?e[t+2]:pi(r,n)]}var _i=e=>({x:ti(e?.x),y:ti(e?.y),z:ti(e?.z)});function vi(e){return ii(e?.marks)}function yi(e){return[0,...ii(e?.marks).map(e=>e.t),1]}function bi(e,t){let n=ii(e?.marks),r=ti(t,-1);if(n.length>=6||!(r>.03&&r<.97)||n.some(e=>Math.abs(e.t-r)<.03))return null;let i=xi(e,r),a=[...n,{t:r,bank:ni(i.bank),pitch:ni(i.pitch)}].sort((e,t)=>e.t-t.t);return{marks:a,index:a.findIndex(e=>e.t===r)+1}}function xi(e,t){let n=ii(e?.marks);if(!n.some(e=>e.bank||e.pitch))return{bank:0,pitch:0};let r=[{t:0,bank:0,pitch:0},...n,{t:1,bank:0,pitch:0}],i=ei(ti(t),0,1),a=e=>Math.abs(e)<1e-12?0:e;return{bank:a(Zr(r,i,e=>e.bank)),pitch:a(Zr(r,i,e=>e.pitch))}}function Si(e,t){let n=wi(e);if(!n.points.length)return null;let r=Di({extend:!1},n,ei(ti(t),0,1)*n.length);return{x:r.x,y:r.y,z:r.z}}function Ci(e,t,n,r){let i=wi(e);if(i.length<=1e-9)return null;let a=null,o=null;for(let e=0;e<i.points.length;e+=1){let s=t(i.points[e]);if(s&&o){let t=s.x-o.screen.x,c=s.y-o.screen.y,l=t*t+c*c,u=l<1e-12?0:ei(((n-o.screen.x)*t+(r-o.screen.y)*c)/l,0,1),d=Math.hypot(o.screen.x+t*u-n,o.screen.y+c*u-r);(!a||d<a.d)&&(a={d,t:(i.cumulative[o.i]+(i.cumulative[e]-i.cumulative[o.i])*u)/i.length})}o=s?{screen:s,i:e}:null}return a&&(a.point=Si(e,a.t)),a}function wi(e){let t=(e?.points??[]).map(_i),n=t.map(e=>`${e.x},${e.y},${e.z}`).join(`;`),r=di.get(n);if(r)return r;let i=t.length?[{...t[0]}]:[];for(let e=0;e+1<t.length;e+=1){let n=gi(t,e),r=ei(Math.ceil(mi(t[e],t[e+1])/ci),2,li);for(let a=1;a<=r;a+=1){let o=a===r?{...t[e+1]}:hi(...n,a/r);i.push({x:o.x,y:Math.max(0,o.y),z:o.z})}}let a=i.length?[0]:[];for(let e=1;e<i.length;e+=1)a.push(a[e-1]+mi(i[e-1],i[e]));let o=i.map((e,t)=>Oi(i[Math.max(0,t-1)],i[Math.min(i.length-1,t+1)])),s={points:i,cumulative:a,length:a[a.length-1]??0,headings:o};return di.size>=fi&&di.delete(di.keys().next().value),di.set(n,s),s}function Ti(e){let{cumulative:t,length:n}=wi(e);return{cumulative:t,length:n}}function Ei(e,t,n){return e===null?t:t===null?e:e+(((t-e)%360+540)%360-180)*n}function Di(e,t,n){let{points:r,cumulative:i,length:a,headings:o}=t;if(n<=0)return{...r[0],heading:o[0]};let s=r.length-1;if(n>=a){let t=r[s],i=o[s];if(!e.extend)return{...t,heading:i};let c=n-a,l=r[s-1],u=mi(l,t)||1;return{x:t.x+(t.x-l.x)/u*c,y:Math.max(0,t.y+(t.y-l.y)/u*c),z:t.z+(t.z-l.z)/u*c,heading:i}}let c=0,l=s;for(;l-c>1;){let e=c+l>>1;i[e]<=n?c=e:l=e}let u=r[c],d=r[l],f=i[l]-i[c],p=f>1e-9?(n-i[c])/f:0;return{x:u.x+(d.x-u.x)*p,y:u.y+(d.y-u.y)*p,z:u.z+(d.z-u.z)*p,heading:Ei(o[c],o[l],p)}}function Oi(e,t){if(!e||!t)return null;let n=t.x-e.x,r=t.z-e.z;return Math.abs(n)<1e-9&&Math.abs(r)<1e-9?null:Math.atan2(n,r)*180/Math.PI}function ki(e,t,n,r){let i=Math.max(1,Math.round(ti(r.frameCount,1))),a=Math.max(1,ti(r.fps,24)),o=ei(ti(n),0,Math.max(0,i-1))/a,s=Math.max(1e-6,(i-1)/a),c=e.speed>0?e.speed:t.length/s,l=t.length/c,u=o/Math.max(1e-6,l);return e.loop&&t.length>1e-9?t.length*x(e.timing,u-Math.floor(u)):u>=1?t.length+(e.extend?c*(o-l):0):t.length*x(e.timing,u)}function Ai(e,t,n={}){let r=oi(e);if(!r)return null;let i=wi(r);return i.length<=1e-9?null:ei(ki(r,i,t,n)/i.length,0,1)}function ji(e,t,n={}){let r=oi(e?.path);if(!r)return null;let i=wi(r);if(i.length<=1e-9)return null;let a=ki(r,i,t,n),o=Di(r,i,a),s=xi(r,a/i.length);return{x:o.x,y:o.y,z:o.z,rot:r.faceTravel&&o.heading!==null?o.heading:null,bank:s.bank,pitch:s.pitch}}var Mi=.12;function Ni(e,t,{maxPoints:n=64,epsilon:r=Mi}={}){if(!e||e.length<2)return[];let i=t(e,r);for(let a=0;a<12&&i.length>n;a+=1)r*=1.8,i=t(e,r);if(i.length>n){let e=[i[0]];for(let t=1;t<n-1;t+=1)e.push(i[Math.round(t*(i.length-1)/(n-1))]);e.push(i[i.length-1]),i=e}return i.map(e=>({x:e.x,y:0,z:e.z}))}var Pi=1,Fi=Object.freeze([`blob`,`box`,`cylinder`,`torus`,`frame`]),Ii=Object.freeze({maxParts:48,minExtent:.005,maxExtent:20,maxOffset:20,maxDepth:8}),Li=`#c2c6c8`,Ri=`.mirror`,zi=.05,Bi=/^[a-z0-9][a-z0-9-]{0,39}$/,Vi=/^#?([0-9a-f]{3})$/i,Hi=/^#?([0-9a-f]{6})$/i,Ui=new Set([`id`,`shape`,`size`,`position`,`rotation`,`color`,`parent`,`mirror`,`roundness`,`taper`,`border`]),Wi={blob:new Set([`roundness`,`taper`]),box:new Set([`roundness`]),cylinder:new Set([`taper`]),torus:new Set,frame:new Set([`border`])},Gi={blob:.5,box:.1},Ki=e=>{let t=Math.round(e*1e4)/1e4;return t===0?0:t},qi=e=>typeof e==`number`&&Number.isFinite(e),Ji=e=>{let t=((e+180)%360+360)%360-180;return t===-180?180:t},Yi=class extends Error{constructor(e,t){super(`${e}: ${t}`),this.path=e}};function Xi(e,t){if(e===void 0)return Li;let n=typeof e==`string`?e.trim():``,r=Vi.exec(n);if(r)return`#${r[1].toLowerCase().replace(/./g,e=>e+e)}`;let i=Hi.exec(n);if(i)return`#${i[1].toLowerCase()}`;throw new Yi(t,`colour must be #rgb or #rrggbb, got ${JSON.stringify(e)}`)}function Zi(e,t,n,r){if(e===void 0&&n)return[...n];if(!Array.isArray(e)||e.length!==3||!e.every(qi))throw new Yi(t,`must be three numbers [x, y, z], got ${JSON.stringify(e)}`);return e.forEach((e,n)=>r(e,`${t}[${n}]`)),e.map(Ki)}function Qi(e,t,n,r,i){if(e===void 0)return n;if(!qi(e)||e<r||e>i)throw new Yi(t,`must be a number from ${r} to ${i}, got ${JSON.stringify(e)}`);return Ki(e)}function $i(e,t){let n=`parts[${t}]`;if(!e||typeof e!=`object`||Array.isArray(e))throw new Yi(n,`must be an object`);for(let t of Object.keys(e))if(!Ui.has(t))throw new Yi(`${n}.${t}`,`unknown key (allowed: ${[...Ui].join(`, `)})`);if(typeof e.id!=`string`||!Bi.test(e.id))throw new Yi(`${n}.id`,`must be 1-40 characters of a-z, 0-9 and -, starting with a letter or digit; got ${JSON.stringify(e.id)}`);let r=`parts[${e.id}]`;if(!Fi.includes(e.shape))throw new Yi(`${r}.shape`,`must be one of ${Fi.join(`, `)}; got ${JSON.stringify(e.shape)}`);for(let t of[`roundness`,`taper`,`border`])if(e[t]!==void 0&&!Wi[e.shape].has(t))throw new Yi(`${r}.${t}`,`does not apply to a ${e.shape}`);let i=Zi(e.size,`${r}.size`,null,(e,t)=>{if(e<Ii.minExtent||e>Ii.maxExtent)throw new Yi(t,`extent must be ${Ii.minExtent}-${Ii.maxExtent} m, got ${e}`)}),a=Zi(e.position,`${r}.position`,[0,0,0],(e,t)=>{if(Math.abs(e)>Ii.maxOffset)throw new Yi(t,`must be within ±${Ii.maxOffset} m, got ${e}`)}),o=Zi(e.rotation,`${r}.rotation`,[0,0,0],()=>{}).map(e=>Ki(Ji(e)));if(e.parent!==void 0&&(typeof e.parent!=`string`||!e.parent))throw new Yi(`${r}.parent`,`must be another part's id`);if(e.mirror!==void 0&&typeof e.mirror!=`boolean`)throw new Yi(`${r}.mirror`,`must be true or false`);let s={id:e.id,shape:e.shape,size:i,position:a,rotation:o,color:Xi(e.color,`${r}.color`)};if(e.parent!==void 0&&(s.parent=e.parent),e.mirror===!0&&(s.mirror=!0),Wi[e.shape].has(`roundness`)&&(s.roundness=Qi(e.roundness,`${r}.roundness`,Gi[e.shape],0,1)),Wi[e.shape].has(`taper`)&&(s.taper=Qi(e.taper,`${r}.taper`,0,-1,1)),e.shape===`frame`){let t=Math.min(i[0],i[1])/2,n=Ki(Math.min(i[0],i[1])*.15),a=e.border===void 0?n:e.border;if(!qi(a)||a<=0||a>=t)throw new Yi(`${r}.border`,`must be above 0 and below half the frame's smaller side (${Ki(t)} m), got ${JSON.stringify(e.border)}`);s.border=Ki(a)}if(e.shape===`torus`&&i[2]>=Math.min(i[0],i[1]))throw new Yi(`${r}.size`,`a torus's tube (size[2]) must be thinner than its outer diameter`);return s}function ea(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map,r=(e,i)=>{if(n.has(e.id))return n.get(e.id);if(!e.parent)return n.set(e.id,0),0;let a=t.get(e.parent);if(!a)throw new Yi(`parts[${e.id}].parent`,`no part named "${e.parent}"`);if(i.has(a.id))throw new Yi(`parts[${e.id}].parent`,`parents form a cycle`);let o=r(a,new Set([...i,e.id]))+1;if(o>Ii.maxDepth)throw new Yi(`parts[${e.id}].parent`,`parent chain is deeper than ${Ii.maxDepth}`);return n.set(e.id,o),o};for(let t of e)r(t,new Set([t.id]));for(let n of e)if(n.mirror){for(let e=t.get(n.parent);e;e=t.get(e.parent))if(e.mirror)throw new Yi(`parts[${n.id}].mirror`,`"${e.id}" above it is already mirrored, which copies this part too`)}return n}function ta(e){try{if(!e||typeof e!=`object`||Array.isArray(e))throw new Yi(`recipe`,`must be an object with a parts array`);for(let t of Object.keys(e))if(t!==`version`&&t!==`parts`)throw new Yi(`recipe.${t}`,`unknown key (allowed: version, parts)`);if(e.version!==void 0&&e.version!==Pi)throw new Yi(`recipe.version`,`only version ${Pi} is understood, got ${JSON.stringify(e.version)}`);if(!Array.isArray(e.parts)||e.parts.length===0)throw new Yi(`recipe.parts`,`must be a non-empty array`);let t=e.parts.map($i),n=new Set;for(let e of t){if(n.has(e.id))throw new Yi(`parts[${e.id}].id`,`is used twice`);n.add(e.id)}ea(t);let r={version:Pi,parts:t},i=ca(r).length;if(i>Ii.maxParts)throw new Yi(`recipe.parts`,`expands to ${i} parts with mirrors; the limit is ${Ii.maxParts}`);return{ok:!0,recipe:r}}catch(e){if(e instanceof Yi)return{ok:!1,error:e.message,path:e.path};throw e}}function na(e,t){let n=ta(e);if(!n.ok)return n;if(!Array.isArray(t)||t.length===0)return{ok:!1,error:`edits: must be a non-empty array`,path:`edits`};let r=n.recipe.parts.map(e=>({...e})),i=new Set;for(let[e,n]of t.entries()){let t=`edits[${e}]`,a=n&&typeof n==`object`?[`set`,`add`,`remove`].filter(e=>e in n):[];if(a.length!==1)return{ok:!1,error:`${t}: must have exactly one of set, add, remove`,path:t};if(a[0]===`add`){r.push(n.add),i.add(n.add?.id);continue}let o=n[a[0]],s=r.findIndex(e=>e.id===o);if(s<0)return{ok:!1,error:`${t}.${a[0]}: no part named ${JSON.stringify(o)}`,path:`${t}.${a[0]}`};if(a[0]===`remove`){let e=new Set([o]);for(let t=!0;t;){t=!1;for(let n of r)n.parent&&e.has(n.parent)&&!e.has(n.id)&&(e.add(n.id),t=!0)}for(let t=r.length-1;t>=0;--t)e.has(r[t].id)&&r.splice(t,1);e.forEach(e=>i.add(e));continue}let{set:c,...l}=n;if(`id`in l)return{ok:!1,error:`${t}.id: rename by remove + add`,path:`${t}.id`};let u={...r[s],...l};if(l.parent===null&&delete u.parent,l.mirror===!1&&delete u.mirror,`shape`in l)for(let e of[`roundness`,`taper`,`border`])e in l||delete u[e];r[s]=u,i.add(o)}let a=ta({version:Pi,parts:r});return a.ok?{...a,changed:[...i]}:a}var ra=Math.PI/180;function ia(e,t){let[n,r,i]=t.map(e=>e*ra),a=Math.cos(n),o=Math.sin(n),s=Math.cos(r),c=Math.sin(r),l=Math.cos(i),u=Math.sin(i),d=a*l,f=a*u,p=o*l,m=o*u;return[s*l,f+p*c,m-d*c,0,-s*u,d-m*c,p+f*c,0,c,-o*s,a*s,0,e[0],e[1],e[2],1]}function aa(e,t){let n=Array(16);for(let r=0;r<4;r+=1)for(let i=0;i<4;i+=1){let a=0;for(let n=0;n<4;n+=1)a+=e[n*4+i]*t[r*4+n];n[r*4+i]=a}return n}function oa(e,[t,n,r]){return[e[0]*t+e[4]*n+e[8]*r+e[12],e[1]*t+e[5]*n+e[9]*r+e[13],e[2]*t+e[6]*n+e[10]*r+e[14]]}function sa(e,t){let n={...e,id:`${e.id}${Ri}`,position:[Ki(-e.position[0]),e.position[1],e.position[2]],rotation:[e.rotation[0],Ki(-e.rotation[1]),Ki(-e.rotation[2])]};return delete n.mirror,t!==void 0&&(n.parent=t),n}function ca(e){let t=e.parts,n=new Map;for(let e of t){let t=e.parent??``;n.has(t)||n.set(t,[]),n.get(t).push(e)}let r=[],i=(e,t,a,o)=>{let s=o?sa(e,a):a===void 0?{...e}:{...e,parent:a},c=aa(t,ia(s.position,s.rotation));r.push({...s,matrix:c});for(let t of n.get(e.id)??[])i(t,c,s.id,o);if(e.mirror&&!o){let o=sa(e,a),s=aa(t,ia(o.position,o.rotation));r.push({...o,matrix:s});for(let t of n.get(e.id)??[])i(t,s,o.id,!0)}},a=ia([0,0,0],[0,0,0]);for(let e of n.get(``)??[])i(e,a,void 0,!1);return r}function la(e){let[t,n,r]=e.size.map(e=>e/2),i=[];for(let e of[-t,t])for(let t of[-n,n])for(let n of[-r,r])i.push([e,t,n]);return i}function ua(e){let t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let r of ca(e))for(let e of la(r)){let i=oa(r.matrix,e);for(let e=0;e<3;e+=1)t[e]=Math.min(t[e],i[e]),n[e]=Math.max(n[e],i[e])}return{min:t.map(Ki),max:n.map(Ki)}}function da(e){let{min:t,max:n}=ua(e);return{footprint:{width:Ki(Math.max(Ii.minExtent,2*Math.max(Math.abs(t[0]),Math.abs(n[0])))),depth:Ki(Math.max(Ii.minExtent,2*Math.max(Math.abs(t[2]),Math.abs(n[2]))))},height:Ki(Math.max(zi,n[1]))}}function fa(e,t=[],n=[]){if(!e||typeof e!=`object`)return!1;let r=new Map;for(let e of t)e&&typeof e.id==`string`&&r.set(e.id,e);let i=e=>n.some(t=>t&&typeof t==`object`&&t.id===e&&t.hidden===!0),a=new Set,o=e;for(;o&&typeof o==`object`;){let e=typeof o.id==`string`?o.id:null;if(e){if(a.has(e))break;a.add(e),r.has(e)&&(o=r.get(e))}if(o.hidden===!0)return!0;let t=o.attach&&typeof o.attach.characterId==`string`?o.attach.characterId:null;if(t&&i(t))return!0;let n=typeof o.parent==`string`?o.parent:null;if(!n)break;o=r.get(n)??null}return!1}function pa(e){return{width:(e.footprint?.width??1)*(e.scaleX??1),height:(e.height??1)*(e.scaleY??1),depth:(e.footprint?.depth??1)*(e.scaleZ??1)}}var ma=8,ha=/^[A-Za-z0-9_-]{1,32}$/,ga=10,_a=(e,t)=>Array.isArray(e)&&e.length===3&&e.every(Number.isFinite)&&e.every(e=>Math.abs(e)<=t)?e.map(e=>Math.round(e*1e4)/1e4):null,va=e=>{let t=_a(e,1e3),n=t&&Math.hypot(...t);return n>1e-6?t.map(e=>Math.round(e/n*1e4)/1e4):null};function ya(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t={};for(let[n,r]of Object.entries(e)){if(Object.keys(t).length>=ma||!ha.test(n)||!r||typeof r!=`object`)continue;let e=_a(r.at,ga);if(e){t[n]={at:e};for(let e of[`axis`,`from`,`thumb`]){let i=va(r[e]);i&&(t[n][e]=i)}}}return Object.keys(t).length?t:null}function ba(e){let t=ya(e?.grasp);return t?{grasp:t}:{}}function xa(e,t){if(t?.grasp===void 0)return{};let n=t.grasp===null?null:ya(t.grasp);return JSON.stringify(n)===JSON.stringify(e.grasp??null)?{}:{grasp:n}}var Sa=`light`,Ca=.35,wa=Object.freeze({point:Object.freeze({type:`point`,color:`#ffc787`,intensity:5,range:0,angle:30,softness:.3,shadow:!1,flicker:0,aim:null}),spot:Object.freeze({type:`spot`,color:`#ffe0b2`,intensity:40,range:0,angle:30,softness:.3,shadow:!0,flicker:0,aim:null})}),Ta=Object.freeze({color:`#ff9a3c`,intensity:4,halo:1.5}),Ea={footprint:{width:0,depth:0},height:0},Da=Object.freeze({kind:Sa,label:`Light`,group:`Lights`,...Ea,color:`#ffd38a`}),Oa=Object.freeze([Object.freeze({kind:`point-light`,renderer:Sa,label:`Point light`,group:`Lights`,...Ea,color:`#ffc787`,placeY:1.5,light:wa.point}),Object.freeze({kind:`spot-light`,renderer:Sa,label:`Spot light`,group:`Lights`,...Ea,color:`#ffe0b2`,placeY:3,light:wa.spot})]);function ka(e){return e===`light`?Da:Oa.find(t=>t.kind===e)??null}var Aa=(e,t,n)=>Math.min(n,Math.max(t,e)),ja=(e,t,n,r)=>{let i=typeof e==`number`||typeof e==`string`?Number(e):NaN;return Number.isFinite(i)?Aa(i,n,r):t},Ma=(e,t)=>u(e)??t,Na=e=>{if(!e||typeof e!=`object`)return null;let t={x:Number(e.x),y:Number(e.y),z:Number(e.z)};return Object.values(t).every(Number.isFinite)?t:null};function Pa(e,t=`point`){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},r=n.type===`spot`||n.type===`point`?n.type:t===`spot`?`spot`:`point`,i=wa[r];return{type:r,color:Ma(n.color,i.color),intensity:ja(n.intensity,i.intensity,0,1e3),range:ja(n.range,i.range,0,100),angle:ja(n.angle,i.angle,1,89),softness:ja(n.softness,i.softness,0,1),shadow:typeof n.shadow==`boolean`?n.shadow:i.shadow,flicker:ja(n.flicker,i.flicker,0,1),aim:Na(n.aim)}}function Fa(e){return!e||typeof e!=`object`||Array.isArray(e)?null:{color:Ma(e.color,Ta.color),intensity:ja(e.intensity,Ta.intensity,0,20),halo:ja(e.halo,Ta.halo,0,4)}}function Ia(e,t){let n={};(t.renderer??t.kind)===`light`&&(n.light=Pa(e.light,e.light?.type??t.light?.type));let r=Fa(e.glow);return r&&(n.glow=r),e.showOnlyInTake===!0&&(n.showOnlyInTake=!0),n}function La(e,t){let n={};if(t?.light&&typeof t.light==`object`&&e.renderer===`light`){let r=Pa({...e.light,...t.light},e.light?.type);JSON.stringify(r)!==JSON.stringify(e.light)&&(n.light=r)}if(t?.glow!==void 0){let r=t.glow===null?null:Fa({...e.glow??{},...t.glow});JSON.stringify(r)!==JSON.stringify(e.glow??null)&&(n.glow=r)}return n}function Ra(e){let t=2166136261;for(let n of String(e))t^=n.codePointAt(0),t=Math.imul(t,16777619)>>>0;return t}function za(e,t){let n=Math.imul(e^Math.imul(t,668265261),374761393)>>>0;return n=Math.imul(n^n>>>15,2246822507)>>>0,n=Math.imul(n^n>>>13,3266489909)>>>0,((n^n>>>16)>>>0)/2147483647-1}function Ba(e,t){let n=Math.floor(t),r=t-n,i=r*r*(3-2*r);return za(e,n)*(1-i)+za(e,n+1)*i}function Va(e,t,n,r=24){let i=ja(n,0,0,1);if(!(i>0))return 1;let a=Ra(e),o=(Number(t)||0)/(r>0?r:24),s=.55*Ba(a,o*7)+.3*Ba(a^2654435769,o*15)+.15*Ba(a^2135587861,o*31);return Math.max(0,1+i*.65*s)}function Ha(e,t=e=>e?.hidden===!0){let n=(e??[]).filter(e=>e?.renderer===`light`&&e.light?.shadow===!0&&!t(e));return{casting:n.slice(0,2).map(e=>e.id),capped:n.slice(2).map(e=>e.id)}}function Ua(e){let t=new Set(Ha(e).capped);return t.size?e.map(e=>t.has(e.id)?{...e,light:{...e.light,shadow:!1},shadowCapped:!0}:e):e}function Wa(e,t=null,n=void 0){let{casting:r,capped:i}=Ha(e,n);return i.filter(e=>!t||t.includes(e)).slice(0,4).map(e=>({code:`SHADOW_CAP`,id:e,message:`Renders without a shadow: only 2 lights cast shadows (${r.join(`, `)}).`.slice(0,120)}))}function Ga(e,t){let n=Wa(t,e?.affectedIds??[]);return n.length?{...e,warnings:[...e.warnings??[],...n]}:e}var Ka=[],qa=`XYZ`,Ja=Math.PI/180,Ya=y(`object.position`),Xa=y(`object.rotation`),Za=y(`object.scale`),Qa=(e,t,n)=>Math.min(n,Math.max(t,e)),$a=e=>{let t=Xa.min.y,n=Xa.max.y-t;return((e-t)%n+n)%n+t},eo=(e,t)=>Number((t>0?Math.round(e/t)*t:e).toFixed(4)),to=[{kind:`cube`,label:`Cube`,group:`Primitives`,footprint:{width:1,depth:1},height:1,color:m},{kind:`sphere`,label:`Sphere`,group:`Primitives`,footprint:{width:1,depth:1},height:1,color:m},{kind:`capsule`,label:`Capsule`,group:`Primitives`,footprint:{width:.7,depth:.7},height:1.4,color:m},{kind:`cylinder`,label:`Cylinder`,group:`Primitives`,footprint:{width:1,depth:1},height:1,color:m},{kind:`cone`,label:`Cone`,group:`Primitives`,footprint:{width:1,depth:1},height:1,color:m},{kind:`plane`,label:`Plane`,group:`Primitives`,footprint:{width:2,depth:2},height:0,color:m},{kind:`chair`,label:`Chair`,group:`Set pieces`,footprint:{width:.6,depth:.6},height:1.15,supportY:.495,color:`#b9855d`},{kind:`car`,label:`Car`,group:`Set pieces`,footprint:{width:1.8,depth:4.5},height:1.4,color:`#d98770`},{kind:`small-plane`,label:`Plane (aircraft)`,group:`Set pieces`,footprint:{width:3.4,depth:3.6},height:1.4,color:`#7896a4`}],no=`cutout`,ro=.02,io=1.8,ao=.05,oo=.02,so=50,co=`#ffffff`,lo={kind:no,label:`Cutout`,group:`Images`,footprint:{width:1,depth:ro},height:io,color:co},uo=`mesh`,fo={kind:uo,label:`Model`,group:`Models`,footprint:{width:1,depth:1},height:1,color:`#c49a6c`},po=`sculpt`,mo={kind:po,label:`Sculpt`,group:`Sculpts`,footprint:{width:1,depth:1},height:1,color:`#c2c6c8`},ho=`empty`,go=.3,_o={kind:ho,label:`Empty`,group:`Primitives`,footprint:{width:0,depth:0},height:0,color:`#ffffff`};function I(e){return e?.renderer===`empty`||e?.renderer===`light`}var vo=Object.freeze([_o,...to,a,...Oa,c]);function yo(e){return e===`cutout`?lo:e===`mesh`?fo:e===`sculpt`?mo:e===`empty`?_o:e===c.kind?c:e===`text`?a:to.find(t=>t.kind===e)??ka(e)}function bo(e){if(!e||typeof e!=`object`)return 0;let t=yo(e.renderer),n=Number(e.supportY??t?.supportY??e.height??t?.height);return Number.isFinite(n)?n:0}var xo=e=>Math.max(ao,e),So=e=>Qa(e,oo,so),Co=.1,wo=10,To=e=>{let t=Number(e);return Number.isFinite(t)?Qa(t,Co,wo):1};function Eo(e,t,n=1){return{width:xo(e)*So(t)*To(n),depth:ro}}var Do=Object.freeze([`hips`,`spine`,`chest`,`neck`,`head`,`leftShoulder`,`leftElbow`,`leftHand`,`rightShoulder`,`rightElbow`,`rightHand`,`leftKnee`,`leftFoot`,`rightKnee`,`rightFoot`]);function Oo(e){if(e===null)return null;if(!e||typeof e!=`object`||Array.isArray(e))return;let{characterId:t,bone:n}=e;if(!(typeof t!=`string`||!t)){if(n==null)return{characterId:t,bone:null};if(!(typeof n!=`string`||!Do.includes(n)))return{characterId:t,bone:n}}}function ko(e){return e.startsWith(`object:`)?e.slice(7):null}function Ao(e,t=[],r={},i=void 0){if(e===`cutout`||e===`mesh`||e===`sculpt`)return null;let a=yo(e);if(!a)return null;let o=new Set(t.map(e=>e.name)),s=a.label;for(let e=2;o.has(s);e+=1)s=`${a.label} ${e}`;let c=new Set(t.map(e=>e.id)),l=e;for(let t=2;c.has(l);t+=1)l=`${e}-${t}`;return{id:l,name:s,renderer:a.renderer??e,x:L.x(Number(r.x)||0),y:a.placeY??0,z:L.z(Number(r.z)||0),rot:L.rot(Number(r.rot)||0),rotX:0,rotZ:0,scaleX:1,scaleY:1,scaleZ:1,path:null,color:a.color,parent:null,attach:null,hidden:!1,footprint:{...a.footprint},height:a.height,supportY:Number.isFinite(a.supportY)?a.supportY:a.height,...Ia({},a),...n({renderer:e}),...h({renderer:e,text:i})}}function jo({assetId:e,aspect:t=1,height:n=io,name:r=``,sourceAssetId:i,matteAssetId:a,matteScale:o,stretch:s}={},c=[],l={}){if(typeof e!=`string`||!e)return null;let u=So(Number(t)),d=xo(Number(n));if(!Number.isFinite(u)||!Number.isFinite(d))return null;let f=To(s),p=typeof r==`string`&&r.trim()?r.trim():lo.label,m=new Set(c.map(e=>e.name)),h=p;for(let e=2;m.has(h);e+=1)h=`${p} ${e}`;let g=new Set(c.map(e=>e.id)),_=no;for(let e=2;g.has(_);e+=1)_=`${no}-${e}`;return{id:_,name:h,renderer:no,x:L.x(Number(l.x)||0),y:0,z:L.z(Number(l.z)||0),rot:L.rot(Number(l.rot)||0),rotX:0,rotZ:0,scaleX:1,scaleY:1,scaleZ:1,path:null,color:co,parent:null,attach:null,hidden:!1,assetId:e,sourceAssetId:typeof i==`string`&&i?i:e,matteAssetId:typeof a==`string`?a:``,matteScale:Number.isFinite(Number(o))?Number(o):1,aspect:u,stretch:f,footprint:Eo(d,u,f),height:d}}function Mo(e){return{assetId:e.assetId,aspect:e.aspect,height:e.height,name:e.name,sourceAssetId:e.sourceAssetId,matteAssetId:e.matteAssetId,matteScale:e.matteScale,stretch:e.stretch}}function No({assetId:e,height:t=1,footprint:n,name:r=``,clay:i=!1}={},a=[],o={}){if(typeof e!=`string`||!e)return null;let s=Math.max(Un,Number(t));if(!Number.isFinite(s))return null;let c=Number(n?.width),l=Number(n?.depth),u=Number.isFinite(c)&&c>0&&Number.isFinite(l)&&l>0?{width:c,depth:l}:{width:s,depth:s},d=typeof r==`string`&&r.trim()?r.trim():fo.label,f=new Set(a.map(e=>e.name)),p=d;for(let e=2;f.has(p);e+=1)p=`${d} ${e}`;let m=new Set(a.map(e=>e.id)),h=uo;for(let e=2;m.has(h);e+=1)h=`${uo}-${e}`;return{id:h,name:p,renderer:uo,x:L.x(Number(o.x)||0),y:0,z:L.z(Number(o.z)||0),rot:$a(Number(o.rot)||0),rotX:0,rotZ:0,scaleX:1,scaleY:1,scaleZ:1,path:null,color:fo.color,parent:null,attach:null,hidden:!1,assetId:e,clay:i===!0,footprint:u,height:s}}function Po(e){return{assetId:e.assetId,height:e.height,footprint:e.footprint,name:e.name,clay:e.clay===!0}}function Fo({recipe:e,name:t=``}={},n=[],r={}){let i=ta(e);if(!i.ok)return{error:i.error};let{footprint:a,height:o}=da(i.recipe),s=typeof t==`string`&&t.trim()?t.trim():mo.label,c=new Set(n.map(e=>e.name)),l=s;for(let e=2;c.has(l);e+=1)l=`${s} ${e}`;let u=new Set(n.map(e=>e.id)),d=po;for(let e=2;u.has(d);e+=1)d=`${po}-${e}`;return{object:{id:d,name:l,renderer:po,x:L.x(Number(r.x)||0),y:L.y(Number(r.y)||0),z:L.z(Number(r.z)||0),rot:$a(Number(r.rot)||0),rotX:0,rotZ:0,scaleX:1,scaleY:1,scaleZ:1,path:null,color:mo.color,parent:null,attach:null,hidden:!1,recipe:i.recipe,footprint:a,height:o}}}function Io(e){return{recipe:e.recipe,name:e.name}}var L={x:e=>Qa(e,Ya.min.x,Ya.max.x),y:e=>Qa(e,Ya.min.y,Ya.max.y),z:e=>Qa(e,Ya.min.z,Ya.max.z),rot:e=>$a(e),rotX:e=>$a(e),rotZ:e=>$a(e),scaleX:e=>Qa(e,Za.min.x,Za.max.x),scaleY:e=>Qa(e,Za.min.y,Za.max.y),scaleZ:e=>Qa(e,Za.min.z,Za.max.z)};function Lo(e){let t=[...Object.keys(L),`name`,`color`,`hidden`,`opacity`,`path`,`glow`,`grasp`];return e?.renderer===`light`&&t.push(`light`),e?.renderer===`cutout`&&t.push(`assetId`,`sourceAssetId`,`matteAssetId`,`matteScale`,`height`,`aspect`,`width`,`stretch`),e?.renderer===`mesh`&&t.push(`clay`,`assetId`,`height`),e?.renderer===`sculpt`&&t.push(`recipe`),e?.renderer===`text`&&t.push(`text`),t}function Ro(e,t){let n=[],r=new Set([t]),i=[t];for(;i.length;){let t=[];for(let a of e)a.parent&&i.includes(a.parent)&&!r.has(a.id)&&(r.add(a.id),n.push(a),t.push(a.id));i=t}return n}var zo=e=>{let t=Math.round(e*1e9)/1e9;return t===0?0:t},Bo=e=>zo($a(zo(e))),Vo=e=>new de().setFromEuler(new ae((e.rotX??0)*Ja,(e.rot??0)*Ja,(e.rotZ??0)*Ja,qa));function Ho(e,t){let n=new ae().setFromQuaternion(e,qa),r=[t.rotX??0,t.rot??0,t.rotZ??0],i=[[n.x/Ja,n.y/Ja,n.z/Ja],[n.x/Ja+180,180-n.y/Ja,n.z/Ja+180]].map(e=>e.map(Bo)),a=e=>e.reduce((e,t,n)=>e+Math.abs($a(t-r[n])),0),[o,s,c]=a(i[1])<a(i[0])?i[1]:i[0];return{rotX:o,rot:s,rotZ:c}}function Uo(e,t){if((e.rotX??0)===(t.rotX??0)&&(e.rot??0)===(t.rot??0)&&(e.rotZ??0)===(t.rotZ??0))return null;let n=Vo(t).multiply(Vo(e).invert());if(n.w<0&&n.set(-n.x,-n.y,-n.z,-n.w),n.w>1-1e-15)return null;let{x:r,y:i,z:a,w:o}=n;return{quaternion:n,matrix:[1-2*(i*i+a*a),2*(r*i-a*o),2*(r*a+i*o),2*(r*i+a*o),1-2*(r*r+a*a),2*(i*a-r*o),2*(r*a-i*o),2*(i*a+r*o),1-2*(r*r+i*i)],yaw:Bo(2*Math.atan2(i,o)/Ja),from:{x:e.x??0,y:e.y??0,z:e.z??0},to:{x:t.x??0,y:t.y??0,z:t.z??0}}}function Wo(e,t){let{matrix:n,from:r,to:i}=t,a=e.x-r.x,o=(e.y??0)-r.y,s=e.z-r.z;return{x:zo(i.x+n[0]*a+n[1]*o+n[2]*s),y:zo(i.y+n[3]*a+n[4]*o+n[5]*s),z:zo(i.z+n[6]*a+n[7]*o+n[8]*s)}}function Go(e,t){let n=new Set,r=[t];for(;r.length;){let i=[];for(let a of e)!a.parent||!r.includes(a.parent)||a.id===t||n.has(a.id)||a.attach||(n.add(a.id),i.push(a.id));r=i}return n}function Ko(e,t,n){let r=!1,i=e.find(e=>e.id===t),a=i?Ro(e,t):[],o={x:0,y:0,z:0};if(i)for(let e of[`x`,`y`,`z`]){if(n[e]===void 0)continue;let t=Number(n[e]);Number.isFinite(t)&&(o[e]=L[e](t)-i[e])}let c=new Set(a.map(e=>e.id)),l=o.x||o.y||o.z,u=null,d=null;if(i&&!i.attach&&a.length){let r={x:(i.x??0)+o.x,y:(i.y??0)+o.y,z:(i.z??0)+o.z};for(let e of[`rotX`,`rot`,`rotZ`]){let t=n[e]===void 0?NaN:Number(n[e]);r[e]=Number.isFinite(t)?L[e](t):i[e]??0}u=Uo(i,r),u&&(d=Go(e,t))}let f=e.map(e=>{if(e.id!==t){if(!l&&!u||!c.has(e.id))return e;if(u&&d.has(e.id)){let t={},n=Wo({x:e.x,y:e.y,z:e.z},u);for(let r of[`x`,`y`,`z`]){let i=L[r](n[r]);i!==(e[r]??0)&&(t[r]=i)}let i=Ho(new de().multiplyQuaternions(u.quaternion,Vo(e)),e);for(let n of[`rotX`,`rot`,`rotZ`])i[n]!==(e[n]??0)&&(t[n]=i[n]);if(e.path&&l){let n=si(e.path,o);JSON.stringify(n??null)!==JSON.stringify(e.path??null)&&(t.path=n)}return Object.keys(t).length?(r=!0,{...e,...t}):e}if(!l)return e;let t={},n={x:0,y:0,z:0};for(let r of[`x`,`y`,`z`]){if(!o[r])continue;let i=L[r](e[r]+o[r]);i!==e[r]&&(t[r]=i,n[r]=i-e[r])}return e.path&&(n.x||n.y||n.z)&&(t.path=si(e.path,n)),Object.keys(t).length?(r=!0,{...e,...t}):e}let i={};for(let[t,r]of Object.entries(L)){if(n[t]===void 0)continue;let a=Number(n[t]);if(!Number.isFinite(a))continue;let o=r(a);o!==e[t]&&(i[t]=o)}for(let t of[`name`,`color`])typeof n[t]!=`string`||!n[t]||n[t]===e[t]||(i[t]=n[t]);if(typeof n.hidden==`boolean`&&n.hidden!==(e.hidden===!0)&&(i.hidden=n.hidden),n.opacity!==void 0&&Number.isFinite(Number(n.opacity))){let t=Qo(n.opacity);t!==Qo(e.opacity)&&(i.opacity=t)}if(n.path!==void 0){let t=n.path===null?null:oi(n.path);JSON.stringify(t??null)!==JSON.stringify(e.path??null)&&(i.path=t)}else if(e.path&&l){let t=si(e.path,o);JSON.stringify(t??null)!==JSON.stringify(e.path??null)&&(i.path=t)}if(e.renderer===`cutout`){for(let t of[`assetId`,`sourceAssetId`,`matteAssetId`])typeof n[t]==`string`&&n[t]&&n[t]!==e[t]&&(i[t]=n[t]);if(Number.isFinite(Number(n.matteScale))){let t=Qa(Number(n.matteScale),.01,1);t!==e.matteScale&&(i.matteScale=t)}let t=n.height===void 0?NaN:xo(Number(n.height)),r=n.aspect===void 0?NaN:So(Number(n.aspect)),a=Number.isFinite(t)?t:e.height,o=Number.isFinite(r)?r:e.aspect,s=To(e.stretch),c=n.width!==void 0&&Number.isFinite(Number(n.width))?To(Number(n.width)/(a*o)):n.stretch===void 0?s:To(n.stretch);(a!==e.height||o!==e.aspect||c!==s)&&(i.height=a,i.aspect=o,i.stretch=c,i.footprint=Eo(a,o,c))}if(e.renderer===`mesh`){typeof n.clay==`boolean`&&n.clay!==(e.clay===!0)&&(i.clay=n.clay),typeof n.assetId==`string`&&n.assetId&&n.assetId!==e.assetId&&(i.assetId=n.assetId);let t=n.height===void 0?NaN:Math.max(Un,Number(n.height));if(Number.isFinite(t)&&t!==e.height){i.height=t;let n=Number(e.height);if(n>0){let r=t/n;i.footprint={width:Number(e.footprint?.width)*r,depth:Number(e.footprint?.depth)*r}}}}if(e.renderer===`sculpt`&&n.recipe!==void 0){let t=ta(n.recipe);t.ok&&JSON.stringify(t.recipe)!==JSON.stringify(e.recipe)&&(i.recipe=t.recipe,Object.assign(i,da(t.recipe)))}return Object.assign(i,La(e,n),s(e,n),xa(e,n)),Object.keys(i).length?(r=!0,{...e,...i}):e});return r?f:e}function qo(e,t,n){if(t===n||n!==null&&!e.some(e=>e.id===n)||n!==null&&Ro(e,t).some(e=>e.id===n))return e;let r=!1,i=e.map(e=>{if(e.id!==t)return e;let i=n??null,a=i!==null&&(e.attach??null)!==null;return(e.parent??null)===i&&!a?e:(r=!0,a?{...e,parent:i,attach:null}:{...e,parent:i})});return r?i:e}function Jo(e,t,n){let r=Oo(n);if(r===void 0||!e.some(e=>e.id===t))return e;let i=!1,a=e.map(e=>{if(e.id!==t)return e;let n=e.attach??null;if(r===null)return n===null?e:(i=!0,{...e,attach:null});let a=n!==null&&n.characterId===r.characterId&&(n.bone??null)===r.bone,o=(e.parent??null)!==null;return a&&!o?e:(i=!0,o?{...e,attach:r,parent:null}:{...e,attach:r})});return i?a:e}function Yo(e,t){let n=e.filter(e=>e.id!==t);return n.length===e.length?e:n.map(e=>e.parent===t?{...e,parent:null}:e)}function Xo(e,t){let n=e.find(e=>e.id===t);if(!n||n.attach)return null;let r=Ao(ho,e,{x:n.x,z:n.z});if(!r)return null;let i=new Set(e.map(e=>e.name)),a=`${n.name} Group`,o=a;for(let e=2;i.has(o);e+=1)o=`${a} ${e}`;let s={...r,name:o,y:L.y(n.y??0),parent:n.parent??null};return{objects:e.flatMap(e=>e.id===t?[s,{...e,parent:s.id}]:[e]),emptyId:s.id}}var Zo=.05;function Qo(e){let t=Number(e);return Number.isFinite(t)?Math.min(1,Math.max(Zo,t)):1}function $o(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=yo(e.renderer);if(!t||typeof e.id!=`string`||!e.id)return null;let r=t.kind===no,i=t.kind===uo,a=t.kind===`sculpt`?ta(e.recipe):null;if(a&&!a.ok||r&&(typeof e.assetId!=`string`||!e.assetId)||i&&(typeof e.assetId!=`string`||!e.assetId))return null;let o=e.scaleX===void 0&&e.scaleY===void 0&&e.scaleZ===void 0?Number(e.scale):NaN,s=Number.isFinite(o)?o:1,c=(e,t)=>{let n=e===void 0?t:Number(e);return Number.isFinite(n)?n:t},l=Number(e.footprint?.width),u=Number(e.footprint?.depth),d=Number.isFinite(l)&&l>0&&Number.isFinite(u)&&u>0?{width:l,depth:u}:{...t.footprint};return{id:e.id,name:typeof e.name==`string`&&e.name?e.name:t.label,renderer:t.renderer??t.kind,x:L.x(c(e.x,0)),y:L.y(c(e.y,0)),z:L.z(c(e.z,0)),rot:L.rot(c(e.rot,0)),rotX:L.rotX(c(e.rotX,0)),rotZ:L.rotZ(c(e.rotZ,0)),scaleX:L.scaleX(c(e.scaleX,s)),scaleY:L.scaleY(c(e.scaleY,s)),scaleZ:L.scaleZ(c(e.scaleZ,s)),path:oi(e.path),color:typeof e.color==`string`&&e.color?e.color:t.color,parent:typeof e.parent==`string`&&e.parent?e.parent:null,attach:Oo(e.attach)??null,hidden:e.hidden===!0,...Qo(e.opacity)<1?{opacity:Qo(e.opacity)}:{},...r?{assetId:e.assetId,sourceAssetId:typeof e.sourceAssetId==`string`&&e.sourceAssetId?e.sourceAssetId:e.assetId,matteAssetId:typeof e.matteAssetId==`string`?e.matteAssetId:``,matteScale:Qa(c(e.matteScale,1),.01,1),aspect:So(c(e.aspect,1)),stretch:To(c(e.stretch,1)),footprint:Eo(c(e.height,io),c(e.aspect,1),c(e.stretch,1)),height:xo(c(e.height,io))}:a?{recipe:a.recipe,...da(a.recipe)}:i?{assetId:e.assetId,clay:e.clay===!0,footprint:d,height:Math.max(Un,c(e.height,t.height))}:{footprint:{...t.footprint},height:t.height,supportY:Number.isFinite(t.supportY)?t.supportY:t.height},...Ia(e,t),...ba(e),...n(e),...h(e)}}var es=[`x`,`y`,`z`],ts={x:`rotX`,y:`rot`,z:`rotZ`},ns={x:`scaleX`,y:`scaleY`,z:`scaleZ`},rs=.05,is=5,as=.05;function os(e,t,n,r=rs){if(!es.includes(t)||!Number.isFinite(n))return null;let i=eo((e[t]??0)+n,r);return{[t]:i}}function ss(e,t,n,r=is){let i=ts[t];return!i||!Number.isFinite(n)?null:{[i]:$a(eo((e[i]??0)+n,r))}}function cs(e,t,n,r=as){if(!Number.isFinite(n)||n<=0)return null;let i=t===null?es:es.includes(t)?[t]:[];if(!i.length)return null;let a={};for(let t of i){let i=ns[t];a[i]=L[i](eo((e[i]??1)*n,r))}return a}function ls(e,t,n,r=is){if(!Number.isFinite(n)||!t)return null;let i=eo(n,r),a=new de().setFromEuler(new ae((e.rotX??0)*Ja,(e.rot??0)*Ja,(e.rotZ??0)*Ja,qa));a.premultiply(new de().setFromAxisAngle(t,i*Ja));let o=new ae().setFromQuaternion(a,qa);return{rotX:$a(eo(o.x/Ja,0)),rot:$a(eo(o.y/Ja,0)),rotZ:$a(eo(o.z/Ja,0))}}var us=1e-4;function ds(e){let t=pa(e),n=(e.rot??0)*Ja,r=Math.abs(Math.cos(n)),i=Math.abs(Math.sin(n)),a=(t.width*r+t.depth*i)/2,o=(t.width*i+t.depth*r)/2,s=e.x??0,c=e.z??0,l=e.y??0;return{minX:s-a,maxX:s+a,minZ:c-o,maxZ:c+o,baseY:l,topY:l+t.height}}function fs(e,t,n=[]){if(I(e))return null;let r=ds(e),i=0;for(let e of t){if(I(e)||fa(e,t,n))continue;let a=ds(e);r.minX>=a.maxX-us||a.minX>=r.maxX-us||r.minZ>=a.maxZ-us||a.minZ>=r.maxZ-us||a.topY>r.baseY+us||a.topY>i&&(i=a.topY)}return i===r.baseY?null:{y:i}}function ps(e,t,n=2.6){let r=e.x-Math.sin(t)*n,i=e.z-Math.cos(t)*n;return{x:eo(L.x(r),rs),z:eo(L.z(i),rs)}}var R=(e,t)=>[e[0]+t[0],e[1]+t[1],e[2]+t[2]],z=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]],B=(e,t)=>[e[0]*t,e[1]*t,e[2]*t],V=(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2],ms=(e,t)=>[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]],H=e=>Math.hypot(e[0],e[1],e[2]),hs=(e,t)=>H(z(e,t));function U(e){let t=H(e);return t>1e-12?[e[0]/t,e[1]/t,e[2]/t]:[0,0,0]}var gs=(e,t,n)=>Math.min(n,Math.max(t,e)),_s=e=>e*Math.PI/180,vs=e=>e*180/Math.PI,ys=()=>[[1,0,0],[0,1,0],[0,0,1]];function W(e,t){let n=[[0,0,0],[0,0,0],[0,0,0]];for(let r=0;r<3;r++)for(let i=0;i<3;i++)n[r][i]=e[r][0]*t[0][i]+e[r][1]*t[1][i]+e[r][2]*t[2][i];return n}var G=(e,t)=>[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]],K=e=>[[e[0][0],e[1][0],e[2][0]],[e[0][1],e[1][1],e[2][1]],[e[0][2],e[1][2],e[2][2]]],bs=(e,t,n)=>[[e[0],t[0],n[0]],[e[1],t[1],n[1]],[e[2],t[2],n[2]]];function xs(e){let t=_s(e),n=Math.cos(t),r=Math.sin(t);return[[1,0,0],[0,n,-r],[0,r,n]]}function Ss(e){let t=_s(e),n=Math.cos(t),r=Math.sin(t);return[[n,0,r],[0,1,0],[-r,0,n]]}function Cs(e){let t=_s(e),n=Math.cos(t),r=Math.sin(t);return[[n,-r,0],[r,n,0],[0,0,1]]}function ws(e,t){let[n,r,i]=U(e),a=_s(t),o=Math.cos(a),s=Math.sin(a),c=1-o;return[[o+n*n*c,n*r*c-i*s,n*i*c+r*s],[r*n*c+i*s,o+r*r*c,r*i*c-n*s],[i*n*c-r*s,i*r*c+n*s,o+i*i*c]]}function Ts(e,t){let n=U(e),r=z(t,B(n,V(t,n)));return H(r)<1e-9&&(r=z([0,1,0],B(n,n[1])),H(r)<1e-9&&(r=z([1,0,0],B(n,n[0])))),r=U(r),bs(n,r,ms(n,r))}var Es=(e,t,n,r)=>W(Ts(n,r),K(Ts(e,t)));function Ds(e){let t=e[0][0],n=e[1][1],r=e[2][2],i=t+n+r,a,o,s,c;if(i>0){let t=.5/Math.sqrt(i+1);c=.25/t,a=(e[2][1]-e[1][2])*t,o=(e[0][2]-e[2][0])*t,s=(e[1][0]-e[0][1])*t}else if(t>n&&t>r){let i=2*Math.sqrt(1+t-n-r);c=(e[2][1]-e[1][2])/i,a=.25*i,o=(e[0][1]+e[1][0])/i,s=(e[0][2]+e[2][0])/i}else if(n>r){let i=2*Math.sqrt(1+n-t-r);c=(e[0][2]-e[2][0])/i,a=(e[0][1]+e[1][0])/i,o=.25*i,s=(e[1][2]+e[2][1])/i}else{let i=2*Math.sqrt(1+r-t-n);c=(e[1][0]-e[0][1])/i,a=(e[0][2]+e[2][0])/i,o=(e[1][2]+e[2][1])/i,s=.25*i}let l=Math.hypot(a,o,s,c);return[a/l,o/l,s/l,c/l]}function Os([e,t,n,r]){return[[1-2*(t*t+n*n),2*(e*t-n*r),2*(e*n+t*r)],[2*(e*t+n*r),1-2*(e*e+n*n),2*(t*n-e*r)],[2*(e*n-t*r),2*(t*n+e*r),1-2*(e*e+t*t)]]}var ks=(e,t)=>vs(Math.acos(gs(V(U(e),U(t)),-1,1))),As=.01;function js(e){let t=e.bones,n=t.map(e=>e.name),r=Object.fromEntries(n.map((e,t)=>[e,t])),i=t.map(e=>e.parent),a=n.map(()=>[]);i.forEach((e,t)=>{e>=0&&a[e].push(t)});let o=n.map((e,t)=>{let n=[],r=[t];for(;r.length;){let e=r.shift();n.push(e),r.unshift(...a[e])}return n}),s=t.map(e=>e.localPos.map(e=>e*As)),c=t.map(e=>Os(e.localQuat)),l=t.map(e=>e.worldPos.map(e=>e*As)),u=t.map(e=>Os(e.worldQuat)),d=e.landmarks,f=r.Head,p=e=>G(K(u[f]),z(e.map(e=>e*As),l[f])),m={mouth:p(d.mouth),headCentre:p(d.headEllipsoid.centre),headRadii:d.headEllipsoid.radii.map(e=>e*As),sole:{ball:(d.sole?.ball??0)*As,tip:(d.sole?.tip??0)*As}};return{model:e.model,names:n,index:r,parent:i,children:a,subtree:o,restLocalPos:s,restLocalRot:c,restWorldPos:l,restWorldRot:u,landmarks:m}}function Ms(e){return{P:e.restWorldPos.map(e=>e.slice()),R:e.restWorldRot.map(e=>e.map(e=>e.slice()))}}function Ns(e,t,n,r,i){for(let a of e.subtree[n])t.P[a]=R(r,G(i,z(t.P[a],r))),t.R[a]=W(i,t.R[a])}function Ps(e,t){return{quats:e.names.map((n,r)=>{let i=e.parent[r];return Ds(i<0?t.R[r]:W(K(t.R[i]),t.R[r]))}),hips:t.P[e.index.Hips].slice()}}function Fs(e,t,n){let r=[],i=[];for(let a of e.subtree[e.index.Hips]){let o=e.parent[a],s=Os(t[a]);if(o<0){i[a]=s,r[a]=n.slice();continue}i[a]=W(i[o],s),r[a]=R(r[o],G(i[o],e.restLocalPos[a]))}return{P:r,R:i}}var Is=(e,t,n)=>R(e.P[t],G(e.R[t],n)),Ls=(e,t,n,r)=>G(t.R[n],G(K(e.restWorldRot[n]),r)),Rs=(e,t,n)=>Math.acos(gs((n*n-e*e-t*t)/(2*e*t),-1,1))*180/Math.PI,zs=(e,t,n)=>Math.sqrt(e*e+t*t+2*e*t*Math.cos(n*Math.PI/180));function Bs(e,t,n,r=145,i=150){let a=zs(e,t,r);if(n>=a)return n;let o=a-zs(e,t,i);return n>a-2*o?n+(a-n)*(a-n)/(4*o):a-o}function Vs(e,t,n,r,i,a=145,o=150){let s=zs(n,r,a),c=H(z(t,e));if(c>=s)return t;let l=Bs(n,r,c,a,o),u=B(i,zs(n,r,o)),d=R(e,u),f=z(t,d),p=H(f)>1e-9?U(f):B(i,-1),m=V(p,u);return R(d,B(p,-m+Math.sqrt(Math.max(0,m*m-V(u,u)+l*l))))}var Hs=(e,t)=>Ls(e,t,e.index.Spine2??e.index.Hips,[0,0,-1]),Us=(e,t)=>Ls(e,t,e.index.Hips,[0,1,0]),Ws=(e,t,n)=>Rs(e,t,Bs(e,t,zs(e,t,n)));function Gs(e,t,n,r,[i,a,o]=[`Arm`,`ForeArm`,`Hand`]){let s=t.P[e.index[`${n}${i}`]],c=t.P[e.index[`${n}${a}`]],l=t.P[e.index[`${n}${o}`]];return Rs(H(z(c,s)),H(z(l,c)),H(z(r,s)))}function Ks(e,t,n){let r=e.index[`${n}Arm`],i=e.index[`${n}ForeArm`],a=z(t.P[i],t.P[r]),o=z(t.P[e.index[`${n}Hand`]],t.P[i]),s=Math.acos(gs(V(U(a),U(o)),-1,1))*180/Math.PI,c=ms(a,o);s>145&&H(c)>1e-12&&Ns(e,t,i,t.P[i].slice(),ws(c,Ws(H(a),H(o),s)-s))}var qs={elbow:[145,150,Hs],knee:[150,160,Us]};function Js(e,t,n,r,i,a,o,s,c=null){let l=t.P[n],u=t.P[r],d=t.P[i],f=H(z(u,l)),p=H(z(d,u)),m=qs[c],h=m?Vs(l,a,f,p,m[2](e,t),m[0],m[1]):a,g=h===a?0:H(z(h,a)),_=z(h,l),v=H(_),y=B(_,1/Math.max(v,1e-9)),b=gs(v,Math.abs(f-p)+1e-4,(f+p)*.9995),x=(f*f-p*p+b*b)/(2*b),S=Math.sqrt(Math.max(f*f-x*x,0)),C=U(z(o,B(y,V(o,y)))),w=R(l,R(B(y,x),B(C,S))),T=Ls(e,t,n,s);Ns(e,t,n,l.slice(),Es(z(u,l),T,z(w,l),C));let E=Ls(e,t,r,s),D=R(l,B(y,b));return Ns(e,t,r,t.P[r].slice(),Es(z(t.P[i],t.P[r]),E,z(D,t.P[r]),C)),g||v-b}function Ys(e,t,n,r,i,a=null){let o=e.index[`${n}Foot`],s=e.index[`${n}ToeBase`],c=z(e.restWorldPos[s],e.restWorldPos[o]),l=a?G(a.R,G(Ss(r-a.yaw),G(xs(i),c))):G(Ss(r),G(xs(i),c)),u=a?G(a.R,[0,1,0]):[0,1,0];Ns(e,t,o,t.P[o].slice(),Es(z(t.P[s],t.P[o]),Ls(e,t,o,[0,1,0]),l,u));let d=e.index[`${n}Toe_End`];if(!a&&i>0&&d!==void 0){let n=z(t.P[d],t.P[s]),r=[n[0],0,n[2]];H(r)>1e-6&&Ns(e,t,s,t.P[s].slice(),Es(n,[0,1,0],r,[0,1,0]))}}function Xs(e,t,n){let r=e.index[`${n}Hand`],i=e.index[`${n}HandMiddle1`],a=U(z(t.P[i],t.P[r])),o=z(t.P[e.index[`${n}HandIndex1`]],t.P[e.index[`${n}HandPinky1`]]);return o=U(z(o,B(a,V(o,a)))),{d:a,l:o,n:ms(a,o)}}function Zs(e,t,n,r){let i=e.index[`${n}Arm`],a=e.index[`${n}Hand`],o=ws(z(t.P[a],t.P[i]),r);Ns(e,t,i,t.P[i].slice(),o),Ns(e,t,a,t.P[a].slice(),K(o))}function Qs(e,t,n,r,i){if(!r&&!i)return;let a=e.index[`${n}Hand`],o=e.index[`${n}ForeArm`],s=U(z(t.P[a],t.P[o])),{l:c}=Xs(e,t,n),l=U(z(c,B(s,V(c,s))));Ns(e,t,a,t.P[a].slice(),ws(l,gs(i,-70,70))),Ns(e,t,a,t.P[a].slice(),ws(s,gs(r,-85,85)))}var $s={relaxed:{Index:[12,18,10],Middle:[15,20,12],Ring:[18,22,12],Pinky:[20,24,14],Thumb:[15,10,8]},fist:{Index:[80,95,60],Middle:[85,95,60],Ring:[85,95,60],Pinky:[85,95,60],Thumb:[15,10,8]},grip:{Index:[55,60,35],Middle:[60,62,35],Ring:[62,62,35],Pinky:[65,62,35],Thumb:[15,10,8]},cigarette:{Index:[8,10,6],Middle:[10,12,8],Ring:[60,75,45],Pinky:[65,80,45],Thumb:[35,25,20]},point:{Index:[0,0,0],Middle:[80,95,60],Ring:[85,95,60],Pinky:[85,95,60],Thumb:[40,30,30]}};function ec(e,t,n,r){let i=$s.relaxed,a=n===`Left`?-1:1,o=(e,t)=>i[e][t]+Object.entries(r??{}).reduce((n,[r,a])=>n+(a||0)*(($s[r]?.[e]?.[t]??i[e][t])-i[e][t]),0);for(let r of[`Index`,`Middle`,`Ring`,`Pinky`,`Thumb`])for(let i=0;i<3;i++){let s=e.index[`${n}Hand${r}${i+1}`];if(s===void 0)continue;let{l:c,d:l}=Xs(e,t,n),u=r===`Thumb`&&i===0?l:c;Ns(e,t,s,t.P[s].slice(),ws(u,a*o(r,i)))}let s=[0,1,2,3].map(e=>Object.entries(r??{}).reduce((t,[n,r])=>t+(r||0)*(tc[n]?.[e]??0),0));s.some(Boolean)&&nc(e,t,n,s)}var tc={fist:[-70,-5,5,80],grip:[-30,-30,30,10]};function nc(e,t,n,[r,i,a,o]){let s=n===`Left`?-1:1,c=t=>e.index[`${n}HandThumb${t}`];if(c(1)===void 0)return;let{d:l,n:u}=Xs(e,t,n);Ns(e,t,c(1),t.P[c(1)].slice(),ws(l,s*r)),Ns(e,t,c(1),t.P[c(1)].slice(),ws(u,i));for(let[n,r]of[[2,a],[3,o]]){let i=U(ms(U(z(t.P[c(n+1)],t.P[c(n)])),u));Ns(e,t,c(n),t.P[c(n)].slice(),ws(i,s*r))}}var rc=(e,t)=>[e[3]*t[0]+e[0]*t[3]+e[1]*t[2]-e[2]*t[1],e[3]*t[1]-e[0]*t[2]+e[1]*t[3]+e[2]*t[0],e[3]*t[2]+e[0]*t[1]-e[1]*t[0]+e[2]*t[3],e[3]*t[3]-e[0]*t[0]-e[1]*t[1]-e[2]*t[2]],ic=e=>[-e[0],-e[1],-e[2],e[3]],ac=(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3];function oc(e){let t=Math.hypot(e[0],e[1],e[2],e[3]);return t>1e-12?[e[0]/t,e[1]/t,e[2]/t,e[3]/t]:[0,0,0,1]}function sc(e){let t=e[3]<0?-1:1,n=e[0]*t,r=e[1]*t,i=e[2]*t,a=e[3]*t,o=Math.hypot(n,r,i);if(o<1e-12)return[2*n,2*r,2*i];let s=2*Math.atan2(o,a)/o;return[n*s,r*s,i*s]}function cc(e){let t=Math.hypot(e[0],e[1],e[2]);if(t<1e-12)return oc([e[0]/2,e[1]/2,e[2]/2,1]);let n=Math.sin(t/2)/t;return[e[0]*n,e[1]*n,e[2]*n,Math.cos(t/2)]}var lc=(e,t)=>rc(rc(e,[t[0],t[1],t[2],0]),ic(e)).slice(0,3);function uc(e,t){let n=1+e[0]*t[0]+e[1]*t[1]+e[2]*t[2];if(n>1e-9)return oc([e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0],n]);let r=Math.abs(e[0])<.9?[0,e[2],-e[1]]:[-e[2],0,e[0]],i=Math.hypot(...r);return[r[0]/i,r[1]/i,r[2]/i,0]}var dc=(e,t)=>{let n=t*Math.PI/360,r=Math.sin(n);return[e[0]*r,e[1]*r,e[2]*r,Math.cos(n)]},fc=(e,t,n)=>rc(e,cc(sc(rc(ic(e),t)).map(e=>e*n))),pc={"y-bot-tpose":{model:`y-bot-tpose`,step:.015,unit:`mm`,grids:JSON.parse(`{"LeftToeBase":{"min":[-0.1083,-0.0343,-0.0724],"dims":[14,12,11],"data":"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"},"LeftFoot":{"min":[-0.1062,-0.0914,-0.1519],"dims":[15,22,17],"data":"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R0xTW2RaU0xJRkU/ODQzNDc8Q0pSXFJKQz89PDYxKigpKzM6QktWSkE7NjQzMSslICAkKjM8RVBFOzItKyorJyEcGRsjLjdBTEA1LCckJCYlIBoXGR4pNT9KPzQrJCEhIiIgHBgXHSYzP0tANiwlIiAgIiIeGxoeKDI/TEQ5MColIyMkJSIeHSAmND5MSUA2MCspKCkpJSIfISozQU5QRj84MzAwMCsnJCAkLDdCUFhPSEE9OjkzLCgkISUuOENRYlpSTEdEOjErJiQhJS44RFFrY1xXTEE3LicjIR8iKzRCT3ZvaVZKPjMqIx8dHR4oMj9Mf29iVUg9MikhHRsbHiYxPUp/cGNVST0yKiMeHRsgJzI+S39yZVhLPzUsJiIhJCctOENOf3VpXVBGPTQvKigpLTQ+SFN/e29iWE5GPDUwLi8zOkJMV39/dmpgVkxEPTk3ODtDS1Nef39+c2heVU1HQ0FCRktTW2VtaWReW1hSTEhISUxRVVtkbGNcWFRSUEpCPzw+QUZNU1xlWlROSklIQz02NDM4PkRMVV5UTEVCQEA+ODMtLS42PEdQWU5FPzo4ODk1LyooKjA2QktWSkI7NTMyNDMuKSYnLDY9SlRJQDgzMDAxMS4qJyUrMz1IVUpCOTIwLy8xMC0oKSsyPUhTTkU9NjMxMjMzMCwsLTQ9SVRSSUI8OTc2Nzc0MC4xNj9KVllQSkQ/PT09OTYyMDM4QUxYYVlRTEhFRUA6NjMwNDpDTVhpYlxVUk9GPjg1MjE0OEJNWXNrZWFWS0M7NTEvLjI2QElWfXZwX1NIPzcxLSwrLTM9R1R/dmpdUkY9NS8rKiorMjpGUX94al5SRz42MCwrKy8yPUdTf3lsYFRKQTo0MDEvMjlAS1Z/fXBlWlBIQTw3Njc6QEhRXH9/dWpfV09HQT07PEBGTVZgf398cWdfVk9IRENER0xUXWV/f395cGZeVlFOTE1RVVtjbXZxbGlnY11XVFNTVlpgZm11bmdiYF5bVU9LSUlMUVdeZm9lX1pWVFVQSkVBQUJIT1hfaV9XUU5NTExFQDw6PEJJUVtkWlFLSEVGR0I9ODY4PERMV2BXTkhDQUFCQTs3NDU6QUpUXlRNRUFAP0BAPDg2Nzk+SFJdV01GQj8+P0A/Ozc3OT9IUl1ZUEpGQkFBQkI/Ozo7QUhSXl5WT0lFREVFRUI+PT9ESlNfY1xUT0xKSUtHREE/QEZMVWFqY1xXVVJRTUhFQkBCRk9XYnJrZmFdWlJLRkNBP0JHT1die3RvamJXT0hCPz49QERLVF5/f3RoXlRLRT87Ozo8QEhSXX9/cmddUktDPTk4OTs/R1Fbf39zZ11TS0M+Ozo6PUJJUlx/f3VpX1ZNR0I+PT9BRUtVX39/eG5kWlNNSEZERUdLUltkf399c2phWlNOSklKTVFZYWp/f395cWlhWlVRUFBTWF5mcH9/f395b2hhXVlYWVtfZm52"},"RightToeBase":{"min":[-0.0781,-0.0343,-0.0724],"dims":[14,12,11],"data":"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"},"RightFoot":{"min":[-0.0907,-0.0914,-0.1519],"dims":[15,22,17],"data":"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VltgZ3BnX1pWUk9MSktJSElNUVhgaF9XUk1KR0NBQEA/QUVKUVljWFBJRUJAPDg3OTo7PkRLVF1US0M+Ozk3MjEzNTY7QEdQWlBGPzg1NDMvLCswNTg+Rk9ZTUU7NTIwLy0pKS0yOT9GTlhMQjk0MS4uLSkoKzA4QElRW05DPDQvLS0tKSgqMTlDTVVeUUY9NzIuLiwoJygwOEFNWGNWSkI6NTIuKiYjJy43Q0xYY1tSSEE8My0nIiAjKzZBTFhkY1hQR0AyKiQfHCAoMz5LV2NpYVdGPDAoIh0WHSQxQElVYnJnXUc6LycgGhQaJC8+R1RheG1kSDwwJx8ZFhkjLT1IU2B/dWxLPjIpIBsZGiEsPkhUYH9pW05CNi0lIB0eJi9BS1Vjf21gUkg9MysnJiksNUZQW2d/c2ZZTkM9NjIyMzo/SVNhbX95bWFXTUZBPj9BRUtTXGl0f391amFYUk1MTE5SV15mdn55c25qZ2RhX2BeXV5hZmpyeXFsZmJeW1hWVVVWVlhdYmt1aWRdWVZUUE1NTk1OUlZdZW5kXlZSUE1KRkVHSElNUVhgal9WUUxIR0VAP0BCRUhOVF1mXFNMSENCQT07Oj1DRk1SW2RaUUlDQD4+Ozg6O0FHTFNbZVhQR0I/PT07ODc5PkVOVV5nWFBJQj48PDs4Nzk/RU5YYmxcUUtDQD08Ozc2Nz1FTldibV5WT0lDQD04NDI1PENMV2FtZFxTTEhBOjUwLzE4QEtWYW1rYVpQRz44Mi4qLjU9SFNhbHJqYFFFPTYvKikqMTtGUV9qe3FoUUY8My4pKCgtOUNPXml/aV1RRTwzLSgmJyw3Qk5daX9sX1RJPjUuKCcoLjdBTV1pf25iVkxAODEtKy4xOkRQX2t/c2ZaUUY+NjQxNDdASFRkb394bGFWTkZBPDw+QkhRW2l0f35zaF9XT0pHR0hNU1picXt/f3txaGBZVlJSVVleZWx2f39+eXZzb2xra2lpa21wdnx/fXZxbWtoZGJhY2JjZWlvdn91b2llY2FdWlpbW1xfZGlweW9pZF9bW1hUU1RWV1teZGt0amNeWVZVU1BNTlBTV1thaXJmX1pWUlBQTElJTFFVWmBncGZdVlFPTU1KSEdKTlNaYGdwZVxVUE5MTElHRkdMU1lhanJlXlZQTEtLSUdGSExTWmNtdmdfWFJOTUtJRkVGS1FZY213amFcVlFOS0VDQUNIT1hhbXduZ19bVU5IQ0A9QEVNVV9td3VtZVtTS0VAPDg8QkpSXWx2fHNsWlJJQz05Nzc+RVBbanR/enJbUUhCOzc2NjtETlhpc39yZ1tRSEE7NzU1OkNMV2hyf3NpXlJJQzw5NTg8QkxXaHJ/dmtgVUxGPzo5Oz9ET1lqdH96b2VbUUpEQEBCRUpTXW54f390amBXUExJSElNUlljc31/f3pxaGBaVVFRU1VbYmt6f39/f3lxaWNeXFxdYWZtdH1/"},"RightLeg":{"min":[-0.1112,-0.1017,-0.1376],"dims":[16,39,18],"data":"f399dG1nYV1bWltcYWRrcXt/f391bGRfWFRRUFJTVltiaXN8f3lvZVxXUExISEpKTlNbYmx1fnRpX1dQSURBQUJDR05UXGZwem9lWlJLQz89Ojw+QklPV2JsdGpgV05HPzs5Njg5PkVLVF5pb2VbU0xFPTg3NDQ3O0NJUlxnbGJYTUY+Ojg2MzM2O0NIUVxnaV5USkE6NjM0NTU4PERKU11jZltQRz44MS4xNDg7P0ZMUVdeY1lPRDs0LCsuMTU6P0RITVNaYVZLQTgxKisuMDU5PEFGTFFZYFZKPzktKSgqLTE1OkBES1FYXlVIPjcsKSopLzA1Oj9ES1FZX1RIQDctKisrLTE2PEFGTFNbX1NJQTUwLS4tMzQ5PkNJT1VeYVVKQzoyMDAxNTg9QkdNUlpiY1hPRTs3NjU2Oj1BRkpRVl5mZVtSSD87Ozo7PkFFSE5UW2NraV5VS0VBQD9AQURHS1BVXmdybGJYUElGREJDREZJTFFYYWt2b2ZcU01LR0ZFRkhKTlNaZG55c2lfV1JNSkhHSElMT1VdZ3F7dmtjWlVPS0lISElMUVZganJ+d21kXVZQTUpISElNUVhia3R/dmxlXVVQTElISElNUVhianV/cmlhWlNOSkhHR0lMUVlia3Z/b2VdVk9KSEZFRUhLUFhia3Z/aWFYUktGREJCQkVITVZganV/Zl1VTEdEQD8+P0JFSlReaXN/Y1lRSkJAPDw7PD9CSFFbZ3J+YlhPR0E8Ozo5OjtBRlBbZXF8YVdPSEE8Ojk5Oj1AR1FbZXB8Y1hQSUE9Ozo6PD5BSFJcZXB9ZFpSTEVAPz49P0FFSlReZ3J9aF5WUEtGRURFRUhLUVlia3Z/bWRdV1FOTE1NT09SWGBncHt/dGxkX1pXWFZXWVlcYWdud39/fXRtaGVjYWJjZGVma3B3f39/f311bGNcV1NQT09SVlphaXB6f3ZtYlpUTUlGRUVHTVFYYWhyem9mXFJKREA8Ozs/REhQWWJrdWlfVExDPDg2MzU3OkFIU1xmb2VbUUY9NjItLS8wNDtDTVdhamBXTUI6Mi0rKCorLzc/SVReZltRRz83LyomJSUpLTQ9R1JcYlhNQjoyLSolJCQoLTM8R1JbX1RKPzUtKSUmJiYqLjU+R1BXXFFGOzIpIiAjJiotMjg/RUpSWk5DOC8mHhwhIycsMTU6QEZO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cmZdUUg/ODMyLzEyNj1FTldgb2NaT0Q7NC8sKisvN0A+RVBZbGFVSkA2LicjIyUoMTc4QEpUaFxRRTswJyEgHyIlKjI2PUdQY1hNQTctIRwdHCAkKTE0PURPX1RJPjMpHhkcGx8kKTE0PUVPXFFGOzEnHRoZGx8kKTI1P0dRWk5EOS8mHRkeHCAlKi82QEhSWE5COi8nHRkbHiIrLDE4QkpTVktBNy4mHR4hJCgsLjY7RE1WVUxBNy8oHxwgIygtMjc+R1BZWExCOTAoIx8lJiszNj1CS1RdWU5FOzMrIyImKi80OkBHT1dhXVJJPjUtJyUqLTM5P0ZMVFxkYFVLQjkxKyktMTc9REpRWWFqY1lPRT02Li4wNTtBSE9WX2ZvZ11USUE7NjI2OT5FTFNbY2t0a2FYT0Y/Ojc6PUJIUVpfZ295bmVcU0tFPz0/QUZMVF1janN8cWliWFBJQ0FDRUpOV2BlbXZ/dWxnXVRMR0VER0tSW2Vmb3h/eG9pX1dQSkdISU1UXGZncHp/eW9mW1NKRUJDRUhQWWNncXp/d21kWVBKQ0FBQ0hNVV5lb3h/dWthVk1GQD08QERLUVpjbHR+cWheU0pDPDg7PUBHT1dha3F6b2VbUkdAOTU4OT5ES1NcZmx2bGJZTkU9NjQzNjpAR09XYWlyal9XTUM8NjIxNDc9RExUX2dwaV5VTEM8NTIwMjU7QkpSXWVuaV9VS0M8NTIwMjU6QklRXGVval9WTUU9ODUzNDc9Q0tTXmZwbWNZUUlBPDk3ODtAR05WYWlzcmheVk9JQ0E/P0JHTlVdZW94eG5mXldSTkxKS01RV15kbXV/f39+dm5pY19cXF1eYWZsc3x/f393bmZgWlZTUlRVWF5ka3V9f3tvZ15ZUk1KSkxNUFdcZG53f3VrYVhTS0dDQ0VGSVBWXmhwe3FnXFRNRkE9PT9AREtRWGBpeW5kWVBIPzo3Nzg7QkpJUVhjdWpeVElBODMzMDM2PUNETFVecGVaT0U8NC4uLjA0OD1DSlNcbGFWS0E4LyorKy4yNzxCSFJaamBUSD43LCcqKi4yNzxCSFFaZl1SRjw0LCgoKi4yNzxCSVNcZFtPRDs0KyssKy81OD9DSlRdYllPRDowLCcqLTE1OkBFTFdfYFZMQzo0LC0vMTM6PENIT1liYVZNRDszLSouMjY7QEZLUlxlYllORz03MS4zNDlAQ0pPVl9oY1lQRz84MTE0OD1CR01TWmNsZV5US0I8NTM4O0JGTFJYX2dvamBXTUU/OTc6P0RKUFdeZW11bmRaUUlDPjw+Q0hOVltianJ6cmheVU1HQUFDR0xSWGBnb3d/dmxkWlNMSEZIS09VXGVqc3x/enFnX1hRTUxOT1RZX2hud39/fXVsZFxWUVBRU1ZcYmtxeX9/f3lwaWBaVVRUVVhfZ29ye39/f3xzaWNcV1VVV1pgaHF0fH9/f3pwZ2BYU1FRU1ddZW5zfH9/f3huZV1WUk9QUVVaYWlxen9/f3VrYllTTkxMTlJYXmZud39/fXNnX1ZPSkhJS09VW2NrdXx/enBmXFRNR0ZGSEtRV19ncHh/eG1jWlFLRENCRElOVFtja3R+dmtiWVBKREBCQkVLUVhganJ8dGphWFBJREA/QUVIT1ZfZ3B6dGpgWE9JREA/QENJT1ZeZ3B6dGtiWVFLRkNCQ0ZKUVhgaHF7d25lXVVPSkZERUlMVFtja3R+fHJqYlpUUE1MTE9TWmBocHl/f3hwaGJdWFZVVlhaYWdud39/"},"LeftLeg":{"min":[-0.1131,-0.1017,-0.1376],"dims":[16,39,18],"data":"f399dW5pYl5cW11eYWVscnx/f393bWVgWlVTUlNVWF5ja3R9f3pwZl5YUU1KSUtMUFZcY213f3VrYFhSS0ZDQkRFSVBVXWdwenFmXFNNRUA/PD4/Q0pQV19peG5jWE9HPzk2Njg7QUlJUFhidWldU0lBODIyMDI2PUJES1VecGVaTkQ8My0tLS8zNzxCSVNba2FVS0E3LikrKi0yNjtBSFFaaWBTSD42LCcpKS0xNjtBSFFaZV1RRjw0KygnKS0xNj1BSFJbY1tORDszKyorKi41Nz5DSlRcYlhOQzowKycpLDA0OUBETFZfYFZMQzozKywuMDI5PENHTlhhYFZMQzszLSouMTU6P0ZKUlxkYllNRjw3MS0yNDk/Q0pOVV9nY1hQRz84MTAzNzxBR01TWmNrZV1TS0E8NTI3OkFFS1FXXmdval9WTUU+ODY6PkNKUFZdZG11bWNaUEhCPTs+QkdOVVtiaXF5cWdeVExHQkBCRktRWF9mbnZ/dWtjWlNMR0ZISk5VW2Rqcnt/eXBnXldRTEtNT1NYX2htdn9/fXRsY1xVUU9RUlVbYWpweH9/f3hwaGBZVFNTVVdeZm9ye39/f3tzaWJbV1RVVlpfZ3Bze39/f3pwZ19XU1BRUlZcZG1yfH9/f3dtZF1WUU5PUFRaYGlwen9/f3VqYVlTTUtMTlFXXmZud39/fHJnXlZOSkdISk5UW2JqdXx/enBmXFNNR0VGR0pRV15mb3h/d21jWVFKREJBREhNU1pia3R9dWthWFBIQ0BBQURKUFhgaXJ7c2pgV09IQz8/QERITlZeZnB5c2lgV09IQ0A/QENITlZdZ3B5dGphWVFKRUNBQkVJUFdfaHF6d21kXFVOSUVERUlMVFpia3R9e3JpYVpUT01LTE5TWWBnb3h/f3dvaGJcV1ZUVVdaYWZudn5/f352bWRdWFRRUFFTWFtianN7f3duY1xVTkpHRkhJTlJZYmpze3BnXVRMRkE+PT1ARUpRWmNsdmthVU1FPjk1NTU4PEJKVF1ncmZcUEg/ODMxLjEyNj1FTVZfb2NZTkQ7NC4rKSsuNj89RU9YbGFVST82LiciIiQoMDc4P0pTZ1xRRDowJiAfHiElKTE1PEZQY1hNQTYsIBsdGx8jKDA0PUNPX1RJPjMpHhkbGh4jKDE0PEROXFFGOzEnHBkYGh8jKDE0PkZP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cGVbUUY+NzIuLTAxNTxETlhhamBXTkM6Mi4sKCssMDdASlReZltSSEA4MCsmJiYpLjU9SFJcY1hOQzoyLiomJSUpLTQ9R1JdYFVKQDYuKSUmJycqLzU+R1FXXFFHPDMqIyAkJysuMzlARUtTWk5EOTAnHh0iIygtMjY7QUdPV0xBNy0nHRodISguLjM4P0VMV0xBNSskGxccHyMnLDE2PkRNVUo+MykiGx0bIiMrLDE3PUROVUtAMywjHB4dICQsLzM6P0dQVks/NCwiHR4gIyctMTY9QkpTWE1ANi8lJCIkJyswNTpARk1XW05EOjAqJigpLDA0OD5ES1NdXVFGPjQuLi0uMDM3O0BHUFliX1RKQTgyMzEyNDY5PkNKU15pY1hOQz04NjU1Njg7PUVMV2JuZltSSUE+OTg3ODk8P0dQWmVxaV5US0Q/PDo5OTs+QUlRXWZybGJXTkhCPjs6OTs+Q0tVYGl0bmJZUEhDPjw6Ojs+RE1WX2t2bGJbUUhDPjs6OTs+RU1VYGt4aV5WT0ZAPTo5OTk+RU5WYm16ZVpRSkI9Ojg3Nzo8RE5WYm16YVVNRj45NjQ0NDg7Q0xVYWx5XFNJQjo1MzExMTI4PUlTX2t3Wk9FPjcxLy4tLjE0PUVSXWl2WE1DPDQvLSwrLC4zPEZQXGh0WE1DOzQvLCsrLC4zO0dQXGd0WE5EPDQwLSwsLi80PUdQW2h0W1BFPzg0MTAxMzI4QUpTXmp1X1VLRD06ODg5Ojs/R09YYm14ZVpSTEdDQ0FCREVITlVeaHJ8bWNaVFFOTU1OUE9TVl1kb3d/dWxlX1xZWVlbXFxfYmdud39/f399dG5oYl5bWlxdYWVrcnt/f392bWVfWVRRUVJUV1xiaXN8f3lvZV1YUUxJSEpLTlRbYm12fnRqYFdRSkVCQUNESE9UXGdwenBlW1JMRD8+Oz0+QklPV2JsdGthV05IQDs6Nzk6PkZMVF9pcGZcU0xGPjk3NTQ3PERKUl1obWNYTkY/Ozk3NDQ3PENJUl1naV9USkI6NjM1NTY4PURKU11kZlxQRz44MS8xNTk7QEdNUlheY1pPRDs1LSwvMjU6P0RJTlRbYVZLQjoyKysuLjY6PEFGTFJZYVdLQDkuKikqLTE2OkFETFFZX1VJPzctKisqLzE1Oj9FS1FZYFVIQDguKywsLjI2PEFHTVRbYFRJQTYwLi8uNDQ8P0RJT1ZeYVVLRDozMTAyNTk+Q0hOU1piY1hPRTw4NzY3Oj5CRktRV15mZltTSUA8Ozs8P0JFSU5VW2RsaV5VTEVCQUBAQkVHS1FWX2hybGNZUEpHRENERUdJTVJZYmx2cGZdVE5LSEdGR0hLTlNbZW96dGlfWFJNS0lISElNUFVdZ3F8d2xjW1ZQTEpJSEpNUVdganN+d25lXlZRTUpJSUpNUlhia3R/d2xmXVZRTUpJSEpNUllianV/c2piW1ROS0lHSEpNUVpjbHd/b2ZdV1BKSEZGRkhLUVljbHd/a2FZUUxHRUNCQ0ZITldganZ/Z11VTUhEQUA/QENFS1ReaXR/ZFpSS0NBPTw8PT9DSVFcZ3J+YlhQR0I9Ozs6OzxBR1FcZnF9YlhPSUI9Ozo6Oz1ASFBcZXF8Y1lRSkI9PDs7PD9CSVJcZXB9ZVpTTEZBPz8/QEJFS1VeaHN+aV9XUUtGRURFRUhMUlpibHZ/bmVdV1JPTU5NT09SWWBocXt/dWxlX1tYWFZYWlpcYmhvd39/fXVuaWZjYmJjZWVnbHB3f39/"},"LeftUpLeg":{"min":[-0.144,-0.1331,-0.1498],"dims":[20,41,22],"data":"f39/f399dnRyb25wcXN4fX9/f39/f39/f397dG5qaGVlZmdqb3V4fH9/f39/f394dG1mYmBdXF5gY2ZpbHF3fX9/f396cm1lX1pZVVVXV1lbXmJnbXN7f39/dWxmYFhUUk9NTk5QUlVYXmRrdH1/e3FoYVtTT0xHRUZFRklNUVdcY212fnVtZF5XT0pHQD0/Pj9DR0tRVl1ncXhvZ19ZUkxGQjs4OTg6PUJGTFJZYm1zamJbVE5IQz44NTI1NTg+Q0lPV19ob2ZeV1FLRkE8ODAvMjI1O0FGTVNcZWxjW1VPSURAOzgyKywxMzhBRUxSW2VqYVlTTUdCQDk1LyopLzE2PURLUltjZ19XUkxIQT45NDItLC0zOD1FS1JaY2heWFJLSEE8PDYzLCcpMDY8REtVXGRmXlZSTEhDPzs0MC4qKTE2PERMVFxlZl5YU0xJQj49NTUzLi4yO0BHT1VdZmlgWFVOSUVBQDc2MSorMDk9Rk1YYGlqYlpXUU1GQUA5NTMvLTM4P0ZPV2BpbWRfWVJNSERCPjo2MzQ5P0RMU1tia25mZFtUUU1IRT48NjMzOUBETVZeZ3ByamdfV1RNSUdBPzo2OT1BSE9YYGhxdW1lYVtVUExIREE8Oj5ESU5VW2RsdXhwaWVfWlRPS0dEPj9BR0tRWmJqcnp9dG1oZl5XVE5LRkNGSE1QV19mbnd/f3hwa2tjXVVRTkpISU5VWFxla3N7f397dG5wZl5YU09MTFBUWV1kbXN6f39/fndwcmlhWlVST1BUWWBkanJ5f39/f35+dGxlX1lWVFNXWl9ka3J4f39/f396eG9nX1lVUVFUWFtjaHB3f39/f39+dnNqYVtVUU1NUFJYXmdveH9/f39/enJwZl5YUk1JSk1QVV1kbHR8f39/f3hwbWRcVU9KR0ZKTVNbYmpxen9/f392bm1jW1ROSkZGSU5TWmFob3d/f39/dm5tY1tVT0tIR0lPVFthaG92fn9/f3dwb2VcVlBMSklLUVZcYWhvdn5/f396cnFnX1lTT01NTlNYXmNob3d+f39/fnZ1a2JdWFRSUVNXXWNmanF4f39/f397c2xpY15ZWFhbX2JpaW90e39/f39/f3lzb2llYmFiY2ZrcW90en5/f39/f39/eXVxbmxrbG1wcXN3en9/f39/f39/f399end2dnd4enp8f39/f39/f39/f39+eHNsaGZjY2VlaG5yeH9/f39/f39/dnJqYl5dWlhbW19kaG91en9/f39/d25qYlpWU1BQUlJWXGBjaW51fX9/e3BnY1tTTUxJR0pKTlFUWF5janN9f3ZrYVtUS0dEQUBDQURHSU5TWWFrdntxZlxUTkdBPzo3OTk7PkBFS1FZY251bGNYUEpBPTk0MTIxMjY6PkRKU11pbmRcVE1EPzg0LSorKiwvNDg/Rk5ZY2lfVk9HQDs1MCwmIyUnKzA2O0JKVV9lWlFKRD04My4sIiEkIyctMzk/R1FcYldNR0E8NjMtKCQcHyQlKzE3PkZQW2BUTEQ/OjQvLiYjGxohIygwNj5HT1ddUkpEPjkzLismJiAfICUrLzc+RU5XXVNJRD04My4vKSUgGBokKC83QUhPWVxRSUQ+ODYuLyYiIhgaJSgwNz9HUFlcUkpFPjk0Ly4qJycgICYuNDtCSFJaXlNMRkA7OTMyKSUkGxwkKTA5Q0tUXl9VTUhEPzozMSsnJyEeJysyO0NLVF5iWFNMRD88NTQxLSghJSwyOT9HTVZgY1pZUEZBPzg4MCwpJCQtMTdASVNbZGdeXFJKRD87OTMvLiosMjQ7Q0xUXWdqYFlTTUhFQDw2NCssMDc8Q0lRWWFpbWNcWFNORkE9OTcyMDQ7PkVOVl9ncHJoYFlbUktGQDs4NTg8QURKUlpianR1bGRdYFhRSUI+PDo7QUdNU1hgZ3B4dm9nYGZbUkpFQTw+QkhLUVlhaW93f3pzamNoXlVNR0NBQkZNUlhfZm52fn98cnVrYVlSTEhFRUlOU1heZ211fH9/eG5uZVtTTEhDQ0ZLUFdcZGx0fH9/f3NqaV9WT0hDPz5CRUtTW2NsdX5/f39vZmVbUUtFPzw8P0JIUVhhaHJ6f39/bGNjWE5IQTw4NzxARU5VXWVtdn9/f2phYldNR0A8Nzc7QEVNVVtia3R9f39qYWNYTUdBOzk4O0FHTVNaYmpye39/bGNkWlBJQj08OzxDSE5UWmJpcXp/f29mZ1xTS0VBQD5BRkxRVVxianF7f39yamthV1BLRkNERktQV1hdZGtzfH9/eG9nYF5WUU1MTE5SV19cYWhtdn9/f351bmdlXllWVVdZXGBnY2dtc3p/f39/fXVuaGViYWFiY2VlZ2pudHl/f39/f39+d3JubGxsbW5wcHByd3t/f39/f39/f3ZuZ2JeW1hYWlteY2hud39/f39/f3ZsZF9ZVFBOTlBQVVpeZW50en9/f3hvZFxVUEpIRERGR0pRVVxmZ253f3pxZ1xUTkhCPjs7Pj5CSUtPVVtjbXd2bGJWTkZBOjYzMzY2ODtAREpRWWRvcWddUUhCPDQvLSwuLC8zNTpASFFcaG1iWk5EPDcvKiYiJSQnKiwyOEBJVmJmW1JJQDgyKiQiHRocHyImLTA6RE9dYFVLQjs1LikiIBgVFxkeIyguNUBMV1xQRj42MSolIBsTEhIVGiAlLTM8R1NXTUI5NC0oIx8aGA8UEhgdJCsxOUZSVEpAODMsJiEiGBoMCxAVHCMpMzpCTlJIPjYwKyggIRgTFRQWFBsiKTI5QU1RSD01LyokICAdEhYJCxQbIi00O0RPUkY9NTAqKSAgGBQYChQUGyMqMztETlJHPTUzKykhHR8aHRQUHSEoMDQ+Rk5UST83Mi0rJiQfFxoMDhUcJCw3P0pTVEtAOzcuLiUhHRkbFhYcHiYuNj9KU1dNQzs2MSwnIyUhHBIYICUuNDtCTFVYT0U+OzYyKikiHh0WFR0kLTQ+RlBZW1NJQzw3NC0oJSEgHiElJy83P0hRXF5VTEVBOjgwMCgkHR0jKS84PkdMVWBiWVFJQz44MzErKSYiKSwyOUFLU1xmZ11UTEdBPDcyLSonKDE1OD9HTldfamhgWFFKRD85NDAuLC82OT9JT1ZcZW9qYltTTUdBPDczLi81PD9FTVReZW11bmZdVk9IQz45NDM0Oj9GTlRbYmpze3NnXlVOR0I9OTc2Oz9ES1NbZGpxeX9uZFpRS0Q+OjQ1ODtBSE9YYGlzen9/aV9WTktDOjUwMDQ3PUZPV2Jpc3x/f2RaUkpGPjcyLSwyNDpDTFReZW54f39hV05HQzo0LykoLDI6QUhRWWJrdH5/X1VMRUI5Mi0oKC4yOT9HTlZfaHF6f19VTEVDOTMtKiosMzk/Rk1VXWZveH9hV09HRTs1LyssMDU6QEZNVVxlb3h/ZFpRSUQ+OTMxMDI3PUJHTVVcZW94f2heVk5IQj44Nzc6PkBFSlBXXmdxen9uZVxUTkhFQUBCREZHS09VWmFqdH1/dWtjW1VRTUxMTU5QUFJWW19nb3h/f3xzbGNdWlhYW2BjXlxbXmNobnZ+f39/fHVuaGRiYmVpbGhmZmhscHZ9f39/f392bmVeWlVQTk5QUVVZX2dudn9/f392bWVbVE9JRUNDQ0ZLTlRdZW11fX95bmVcUktGPzs5ODk8QUVLVF1iaHJ8cmdeVUpCPjYyLy8vMjY8QklPVV5oc2xhWE5DOzcuKSYmKiowNDg8QkpTXmpoXFJJPTUxJyMfHyMjJSYrMTdAS1djZFhORTkwJyEdGRgXFxceHSYuOENPXV9TSUE1LCcdGRcNDA8SFxkfJjA9SldZTUA4LyYgGBEPCgcJCxAVFyEsOUVSU0g9MiojHRcSDQQDBAcMEhccJzJATk1DNy4lIBoVEQwQAAAEChAWGSQwP0tKQDUrIx4YExYKBQP8AgcOFRwmLTpGRz0xKSEdFxIVCgXu7wAHDhUcJCw4REY9MygjHBcRDRUE7fr8Bw4VISgwO0dGPTAoIxwXEg0JBf/78AcOFh4mLTlFRj4zKCUdGBMOGBLq8PAUGB8jKzE5RUc/MiojHxkcGBYIBP7/CA8YICg0PklIQTYsKiEbFxIXCgbuEgoRGiIrMz5HSkI2LiojHhkVGw0UBAQMGSEqMDhAS0tEOTEuKSUcFxQQFAcHEBcfKDA5RlBPST41MCkkHxodExMLGBofIys0PUhRUks/ODMsKyIeGhUPDxgaICs0O0NMVVZPRTw1MC4lIR0dFBofHyYuNj1HUltcU0dAOzQuKSQfHRkZJCkwNDtDTFZfXVNMRD03MSwnIhsdJCYtNTtGS1NcZF9WT0dAOTMuKSQgISktMzpCSVFaYmxjW1JJQjs1LyslJSovMzpESVFYYGdwaV5SSUE6NC8rKCcsMTc/SFBZYGdud2RaT0Y+NzEsJSYqLTM7Q0xVYGhwdn5gVUtCQjgtKCIhJCozO0NMVV5ocXt/WlBGPTwwKiQeHiEnLzc/SFFaZG12f1dMQjo5LScgGhkfJC00PERNVl9pc31VSkA4OCwlHxkZHiQrMjpBSlRcZm95VUpAODgsJh8ZGyAlKzI5QElRWmNtd1hNQzs7LighHR4iJy0yOUBIUFljbHZbT0Y+NjErIyIjJiowNDlASFBaY213X1RLQzs2MiwrKy4yMjg9Q0lSXGVvemVbUUpBOzk3Nzg6OTs9QkhOVWBpcn1sYllSSkRCQEJCREZFRkpPU1xkbXd/c2tjW1RPTU1QVllUUVFTV11ka3N8f311bWVfWlhYW2BjX1xcXmFmbXN6f39/d25lXlVQS0hFRUZIS1BWXmVueH9/eW9kXFRLRT88OTk6PEBGS1VcZW97f3NnXFJLQTs1MS4uLjE1O0FLU1xmcHprX1RKQjgxKyckIyQnKzI5Q0pSWmVwZllOQzswKSIeGhoaHiIpMTk9RVBbaGBUSD81KiIaFhIREhYaIiUpMTtHU2BeUEQ4MSQcGQ8LCwsQERQYHCQyP0xaW01BNS4gGBYLCAMCAgQGCBAcKzhIVFNHOjAlHRYOCQD8+fv+AgcNFyY0QU5LQDUmHBUMCQn//Av3+v8ECBIeLTxKRjkvIhkTDAcLAwYOC/b8AgQQGys5RkE2Kx8WEQsFAAQKEw/0+gEIFRklNEI+MigcFA8KA/8FCRYV8voACAsXIzJAPDEpGxMOCQP/6grr7PL5/xIQHSczQDwxKBsTDgkQ/+z38+zz+QEJERgkMD47MSocFA8KBADu7Ojt7u4UFhkeJDNAPDMqHhYRCxUP6vr27/T7AwsUHCo0QDwzLSMdEw0JBPD8+Ojr/QUNFh8mMz8+Ni0iGhUQFgYW/+/1+f8HFx8nLTZBQDcxJCEdEw4JEwL++P0DCxMcJTE7RkQ8NCghGxYRDBQE/PzwEhcXICkzO0hGPjcrJCMaFBALBwABBw0VHSgxOUJLS0I7MCgjHRgTDhMGExYTGyIqMj1HUU5FPjMsJiEbFhENCxMUGiYsMDhCS1RSSD83MCkjHhgUDQ4dGiEoMDlCSlJcVEpCOjMsJiAbFhITGyEsLzc+Rk5XYldNSDw1LSchHRcWGiAnMDdBRU1UXWdbUUk+NC0mIRwZGB4kLDQ8RU5XXWRuXVFGOjEqJB4XFxkfJi84QUtUXmVtdldMQTYuJiAaFBMXHSYvOEJKVV9ocXxSRjwzKiMcFhAPFBkjKzQ9Rk9ZYmx3T0M2LiYgGhMMChEYICgwOUJLVV5oc01ANSsjHhgRCgoQFx4lLTY+SFJaZW9MQDUrIx4YEQoMEhgeJCw0PEVPWGJtUEM4LiYfGhMPDxQZHiUsMztETldhblJFOzIqIx4XFhYaHSImLDM7RE5YY29XTEE4MSglIR8hJSUmKy81PUZQWmRxXlJHPzcxLi4zPD02MjE2O0JMVF5pdGVaUUk/Ozg4PERGPzo8P0NKUVljbnluZFxTTEZDREdOUEpHR0lNU1lgaXN/eG5mXlhTUFBUWVxXVFRVV11jaXF7f31yaF5XTkhEQD09PT9ESVBXX2lzfn91aV5US0U9NzMwMDEzOD1ETFVeanV/bWFVS0E5MisoJCQlJywyO0JMV2JteWZaTUM4MSghHBkYGhwiKDA5Q1BaZG9gU0Y7MCYfFxIODg8SGB8qMTxFT1pnW05ANSoiFw8KBQUGCRAXICcvOkVSXlhKPDAkHhAIAv79/wIJERgaIjE+SlZVRzktIBsMBP35/gEBAwYGDh0qNkJPT0M3KR8VCgb7+PX2+//4+wMXJDA8SUY5LyAWDAP/+vb19vv/9vT/Eh4sOEY/MiUdDgP/+f35+Pn9BAz1+wYbKjZDOi0eEQoB/fgC/v3+AggQ8/sEECMxPzYpGxQIAPzxCQUEBQkPFPP7Ag4gLz40JRwWB//79RAODQ4SF+z0/BEVIC08NCgdDwf+++wPGRgYHBvt9P0DDxsrOjAlHBgH8fz38u0f4N7l5eruEg8gLTwyJx8RCQH97PTo7Ojg5+73/wgWHCw6MicgGwsSAPr28ujq3+Pq+f8KER4rODQpIhUOBgLw7ujx7ebs8/sRFBskLzw1KyQeFhUF8fv38+/q8Pf/BxAdIzA/Oi8nGxQNCA/+7Pbr7vXwERUUICc0QDwyKiQXGAwHAvD59fP7AgkRGScwOkRCNi0mHBQQEwUA/PjvARMPFx8pMDxIRDoxKyAZEw0IA//8AggPFyQoMThBTkk9MisjHBYQCwYBAAkOFh0lLDY/SlRMQDYvJh4YEg0IAwUOFR0oLDQ7Q05ZUEM+NCggGRMOCAcNExskLDU9Q0pTXlNHQDUpIBkTDgoLERcfKDI7RExUXGVVSTwyJh0XEQwJDBEaIi02P0lTW2ZvUkQ3LiIZEw0IBQoRGiMtN0BKVF5odE5AMyUeFg8JAwEGDhcfKDI7RU5YY25KOy4iGxIMBgD9AwwZHCQtN0BJU15rRjgqIBgPCgT++wIKERkhKjM8RlBbZ0c5Kx0XDwoE/v0EChAXHycwOkNMWWZKPS4hGhINBwECBgsRFx8mLzlATVlmTUAyJR8XEQwLDQ4QERkfJy85Q05aZ1FEOi4jHRcXFhscGRscIikxPEZQXWlZTEE2MCYjISoyMSwlJygvOUBIVWFtYFVJQjozLS80PTw3MzI0OUBGUFplcWlfVUxFQDs9QUhIQ0BAQENJT1dhbHhzamBXUk1JS05UVFFOTUxPVFphanR/eG1jWlBIQT1CPj0/OTxCSVBaZG54f25kWk5FPTUwLCkoKSswNj1GUFpjb3pmW1FEOzIqJB8cGxwfJCozO0ZRXGdzXlRJOzEoHxgTEA8QExkgKDI+SVNgbFhNQjYpHxUOCAQDBQgOFh8pNkJOWWVTSDwtIhcMBf76+fr+BQ0YIjA8RlBcT0M3KBwQBv328fDy9v4GER0oMDtHU01ANScYDP/4EAwJCAkIAQ0RGiYyP0xLPzMiFgr+CwT//fz9/gECBQ4dKzhHRDcsIBYKA/348/Hw8fX+9fwJGCY0Qj0wIxcLAfj47+vp6/D4AQz3BRMiMD82KBwP/vYF/fXx7/H1/QUR8/8QHi07NCQWCfvzDAT9+fj5/QUMF+76FiEqOS8hEwX38u0NBwQCAwcOFOfv7wsZKDctHhAC+vLtGBIPDg8SGB7o8PoFHCs3Kx0PAfvz7ukdGxobHiPd4ejvFBwoMyocDfD89fDl5h8nKCva4urz+wgbKTYrHA7v/vfy7ejj2NbR2OTs9f0KFig3Kx0PEv/59O/m4ePf2N/n7/jvFh8sOC0fGBYQ/fjy7enl4dvj6/P8AxAcLDoxIxoVBwD79fHm6OTi6fDv7xMTICw8NCYeGgwE//n07+vn4+72/gYOFyQ0QTksHxoPCAL99/Lu6e/18RQMFB0pNUQ9MCcfGQwGAPr18e72/AQLEyEnLjtHQTMlHhkPCAP9+PH2/BMLEhojKjVCT0U3LR8aEQsE//r2/AIKEiAhKjA6RlFKPC8jHRMMBQD8+AAHEBkiKjQ6QkxYTj8zJR4UDAUA+/0DCxQeJzE5QktWYFFDNigbEgoD/vr+BQ0YIys0PkhSXmpOPzIkFg4GAPr3/AUOGCIsNUBKVGBtSzstIBIKAvz28vkCDBQdKDA8RVBbaEc4KhoOBf/58/D3/wcQGSIuNT1KV2RFNiUXCwL89vDv9fwEDRUeKDI8RlRiRDQmGAoC/Pfw8fb8AwoTGyQuOERRX0c5KBsOAf76+f37/AMKEhokLDhEUV9KPC0gFQkEAggLCQcGCxEbJS05RVNhT0I1KB0UDA4WFxcUEBIWHigwPElVZFdJOzAoHxocJCklIh8cICcsNkFNW2heUkc9NC4oKjA1MzAtKSwwND1HVGBtZ1xRSEE8OTg9QUE/Ozk4O0BIUVtmc3FnXFVOSkhIS1BOS0lHRUhMU1pjbXlzaF5US0M9Nzg0MzYzNz1ETVVfaXR/al9USUE3MColIyIiJioxN0BKVGBreGJWSj83LCQdGBUUFRgdJCw1QEtXY29aTkI2LSEYEQsIBwgMERkhKzdCT1toVEc6LiUXDgX/+/r7AAYOGCYvO0hVYk9BNCcfDwX79PDu8PX8BRAbJzVCUF1LPS8hGgn98+vm5Obs8/4JFSIwOkhUSDosHhYE+OwWFBIREhP5BBEdJjM+TEY4KhwO//UQDAgGBQYHCgIJER0qOUdGOCocDgELBQH9+/r7+/z9+wkWJDRCQDImHQ8GAPv28vDv7+/4BPUDESAuPTkrIBUF+/3y7Ojl5evy/Qnx/w4cKzw0JxkE/fEE+/Tv7e/0+wUP7fwLGSg2MCIOAPfpDQX++vn6/wUOF+v6CBcmNC0fE/7w5RgQCwcGBwoQGCHp9wYaJjMrGQr87ubgHBcUExQXHCPY5/UEEyIwKRcJ++zo4CclISEiJCnW3uf0BBIhMCYYCfvt6uTf2tXNysjP1ODp9REZJTMnGQv87u3l4dnY0tDL09vk7fgGFSMyKRsN/uzw6uXf29PT0NXf6O/8CBspNCweEAL18+zo497a1tbd5e318RMfLTovIhQI+/jw7Obh3dnd3+vy+wQRITA8NiUZDP/79O/q5ODd4+vy7xEKFiIyQTkqHQ8B//jy7Ofi4Ony+QAIDiAsOEY/LyETBgL79e/q5erw+ewHDxUhLTxLQTMlFwsE/ffx7env9/8IER4hKDM/TkY4KBsPB//48u3t9PwEDxcgJzQ9SFRKPS8hEwT/+PLs7/cAChMcKC45RVJdTT8wIhQH/fXw6/D5Ag0XICoyPktXZU0/LiASBPry7Ojw+QMOFyEsNEBNWmhKOy0bDQD17+jl7vf/ChMdJy88SVZkRzgqHAn88evl4uvz/AUOGCIqN0RQYEU2KBoD++7o4uHo8PgBChMZJjNAT11FNigaBfvu6enr6u/2/gcQFyMwPUxbSDkqHAj78vT49vn29v0FCxcjLj5MW0o8LiEPBPwBAwQEBP/+BgwYJTJATl1PQjUoHBAKDxISEg8NCQsSHSk0RFJgVkk8MSUbGRggISAdGxUXGSQtO0lVY11RRjwyLCgqLy8uKykmJCcuNkJOW2hnXFFHPzo2OT4+Ozg2NTE0Oj9KVGFtcWZcVE1IRUhLTUlGRENBQUZMU15odHFlWlFIQEE3LywsLDM8OUBIUVtncn5oW1BGPDMsJSEeHR4hJiw0PUdSXWl2YFJGPDEoHxgTEA8QExggKDI8R1VhbllKPjInHBMLBQIAAgYMEx0oM0BMWWdSQzYqHhII//j08vT5AAkTHys3RlNhTT8wIxYK/vXs5+Xn7fX/ChcjMD5OXEk5Kx0QA/br4tva3OLs9wMRHis8SldGNycZC/7w5CAdGxsb5fH+DBooN0NPRTYlFwn77RoVEhAPEBAR/AoYHy47R0U0JhcJ+xMPCwcFBAQEBAUFDBkmM0NDNScZC/0IBAD9+vn4+Pf++AUSIS8+PS4hFQoC/fn18u/u7ev2A/IADh0rOTYoGg0B9/706+fl5uz0/grt/AoZJzYyIxYI+hIH/vfz8fP4/wcS6vgHGycyMSETBffoEgsEAP8BBQsSHOb1BBIhMC8iEP705R4XEg8NDxIYHifk8wEQHzEsHg4A8uQqJSAdGx0gJCvV4/LxFiIwLB8O//Hj1i8uKyorLjLL1eTzARAjMSsdEfjx49jUzDY5OjzHz9jm9QMSIS8tIBUB8+Tc0tLNxsXEzNHc6vkHGyc0LiAM/vXm39vT0MzIytLZ4u79CxkoNjEjGAH06+Te2c7MytHZ3Ofx/hUdLDo1JhgF+O3n4tzX0tHY4Ofv7gQTITJAOCsfFP3v6+Xf2dHY3Ofu9vwIGyg0Qj4vIQ8B9e7n4dzX3ebu9+4DDxssOklBMyYYA/fw6ePe2+Ps9P4GDh0mMj9NRjcpGwf98urk39/o8foECRUgLDtGU0o8LhwOAPLr5N/j6/X+CA0aJzNBT1tOQDAhEgP06OLd5O34AgwYHis4RlRiTj8wIRID9OXf2+Tu+QMMEyAtOkhWZEw9Lh8QAvPk3Nri7Pb/CRUcKDVEUmBKOyweDwDx4tjW3+fx+gQLFiMwQE1bSDkqHA3/8OHd2dvk7Pb/BRIfLD1MWkg5KxwO/vHs6Ofk4eny+wIPGyw7SFdKOiweEAP3+PX18+7u8PkCDhosOUhXTT4wIhcLAQUCBAH8/Pj4BBEhLjxLWVJFNyseFA4SERMPCgcIAwoVIzFATlxYSz80KCEbHx8jHRcVFRASHSc2RFJgX1RJPjUuKiwuMSskIiMfICYxO0lXZGheU0lBOzk6PT85MjAxLS40OkVRXWpyZ15VTkpIR0xMRkE+Pjs8QUdPWWVxb2NaTkc9PTMtKikqLzc3PUZRWWVwe2ZbTkU5MSkjHRsaGx4jKTE8RFFaZnRdUkY5MSUcFRAMCwwQFh0oLzxFUl9qV0g7MiQZEAgC/v3+AggRGigwPkpWZE5DNicaDwX79O/u8PX8BQ8bKjRDUV5LPS0fEgb68Ofh3+Lo8fsGEyQwPEpZRTYoHgz+8ubb1NHU3Ofz/wwaKzlHVEQ1KBoH+eveKiclJCXf7PoIFiU0RFBCNCYTBPboIx8cGhkZGen3BRQlMD1KQDEiEwT26BgUEQ8ODQwMDA0RGik2Q0Q1JBUH+RIOCgcEAwIA//8BCBUiMD4+MiUZC/4GA//8+fj29PL/9v0UICs5OiweFwb++vj08e/t6+/6Buz6ChknNjYoGQz/8wT78+7t7vP7BA/o+BIaJDIzJRcJ+uwPBwH9+/0BBxAZ5vUEEyEwMSMUBvfpGxQPCwoLDxQcJOTz/hcjMS8hEwT26CgiHRoZGh0iKdTj8gEQHy4vIRIE9efYLyspJygrMMXU4/L/EB8uMiESBPbn2cs6ODY3Oj7I1+X0AxIgMjAiFAX36M/IxL+6t7nAzNrp9wYUIzIzJBUH+erSzcjCvrq/xtHf7fwJGCk3NCYYCfvs3tHLw7++xs3V4/EADhwtOzkpGwz+8OHTzsnEw83U3Oj2BBIhLz07LB4QAvPl19HMxc3V2ePu/AoXJTRCPzAiFAb46dzUzsvT2+Ts9AIQHSs7R0M1JhkL/O7g1dDP2N3r8/wHGiMxP01IOSsdDwDy5NbQ09zm7+8CDh4qOkVSTD4vIRID9ebW0dTg6vP6BxMkLz1LWk9AMSITBfbn1M/Y4+338AoXJDVEUl9PQDEjFAX259LP1uTu9/4LGCg3RlNiTT8wIRIE9ebOzdfh6/T+CBUlM0FQXkw+LyARAvTl1NDV3ufw9wQRHy49S1pLPC4fEALz5OLe2djh6/L/DhwrOkhXSz0uIBED9vLv7Ofg3efu/AsaKTdGVUw+MCMVCf0A/Pr07ebn7v0KGSg3RlVQQjQoGhELDAkHAfr09fIADh0rOklXVUk7LyMaFRgWFQ4HAQP+BBIhLz1LW1tPQzcuJCIkJiMbFQ8PDA0YJjNBUF5jVktBODEvMTMvKCIdHhoaIiw6R1VjbGBVTEZAPD9BPDUvKyonKCw2QU1aaHVrYVlSTkxNT0lCPDk3NDU7QEtVYm5uY1hORT07MiwoKCksNjY9Rk9ZZG97ZVlOQzkwKCIdGRkaHSIpMTpETlpmcl1QRDkuJBwUDgsKDA8VHCUvOUVRXWpVSDsvJBkPBwH8+/0BBxAaJDA8SVZjTkEzJxoOBPrz7uzu8/sEDxsnNEJPXUk7LR8SBfnu5d/b4Obv+gYTIC48SlhFNigZC/7x5NnRzdLa5fH/DBopN0VUQjMkFQf46tw0MS8uLt3r+QgWJTRJVEAxIhME9ufYKSYkIyIh5/YFFCMyQk5AMSITBPXmIh8cGRgXFRT2BRQkLzpGQjMkFQf46hcUEQ8NCwkH+QcOFyQwQEQ2JxkL/RAMCQYEAgD9+/7/BREdLDpAMCQXDQYEAf77+Pf08vkF8f0LGig4PCweEQX7A/ny7+3t8vkDDuv5BxYkMzkoGg3/8g4G//v6+wAGDxjo9gUTJTQ1JhgK/O4bEw4KCQoOExsk5vQDESMyNiUXCfvt3SEcGRgYHCEo1uXzARAfLjMlFgj67NzPKignJ8DHzdbk8wEWJDIzKBYI+uzYzjk3Nja8x83Y5vUEEyUzNCYXCfvt2M/Dv7y+vsnO3Or4BhUkMzYnHQv97trQx8TBwcXK0uHv/QsaKzg4KhsN//Di0svJxcXIzNjm9AEQHiw7OiweDwHz5dXRzsvKy9Dd6/kGFCIxPz4vIRME9uja1dPQz8/V4/D8CxknNURDMyUXCfrs39nX1NPT2uj2AxAeLDpIRTcpGw3/8OLc2tfW1t/t+wkWJDE/TUo8Lh8RA/Xm4N3a2dvk8gAOHCo4RVNOQDEjFAb36eHd2trf5/YFEyIwPkxaUUIzJRYH+erh3dra4uv5CBYlNEJRX1FCMyUWB/jq39vY2eLq+QgXJjVEUmFQQTIjFAX36NvX1Nbg6fgGFCMxQE9dTkAxIhME9efZ1NHT3OX0AhEfMD1MWk4/MSESBPXn5t/b1Nfi8P8OHCs6SVdOQDIjFAf59fTu6ODX3+78ChkoN0ZVUUM0JhoNBQQB/fXs4+Lt+woZKDdGVVVHOi0gFxISDgoB+PDv8P8NHCo5SFdaTUAzKiEfIBwWDQT9/fkDER8uO0pZYFNJPTQvLCwrIRgRCgoGCRQkMj9OXGdcUEdAODY4Ni0kGxgWEhQeKDdFU2BwZFpRS0VDRUI5MSorIyAiKDM9S1hmeW5lXldSUVJNRT04NjEuMDY9SFJfbHBkWlBFPj00LSopKi84Nz5IUVtmcHxnW1BGOjEpIx4bGhwfIyoyPEZRXGd0XlJGOy4lHRUQDQwNEBYdJS88R1NfbFdKPTIkGhAIAv79/gIJERooMz9LV2VQQzYqGg8F/PTw7vD1/AYQGys3RFFfSz0wIxIG+/Dn4uDi6PH8BxMkMT5MWkc5Kx8M//Lm3NXS1dzn8wANHyw6SFZENigbB/rs3y44OTfT3+36CBsoNlBbQzQmGQX36dozMS4tLNvp9wYaJzVGUkI0JhkF9+jaKCYkIiAe6fcGGigwPEhENigbB/nsIR0bGRcVEhH6CBYfKTVBRzkrHgz+8hUSDw0MCQcF/xEUFiIvPUI2KR0SBfoKBwQCAP78+/v+BBUdKzk+MSMXCwQC+/z59/b0+wTx9v4LGSc2Oy0fEgT69AcB/fz9AQgQ6u/5ERYlNjkrHQ8B9OgVDwsKDA8VHOXs9wcVIzI4KhwO//LlIh0aGRodItzj6u4FFCIzNykbDf7w49YrKSgpy9Tb4un3BRQiMDgpGw3/8OLV0Mw2N8bR2+Hp7wYVIzI4KhwO//Dj1tHNyszI09zi7vwKGCk4OisdDxDx5NbU0s3P0Nje5PL/DRspOTwuHxED9Obc2dXR0Nba3+n2BBIfLjw+MCETBPbp4d/c2djZ3OHv/AoWJDRCQTMkFgf57Obj4d/d3d/m8wEPHCo4RkQ2KBkL/vDq5+Xj4eHi6/gGFCIyPUtIOiwdEAL17uvo5uXl5u/+DBknNURRTD8wIhQG9vLu6+jn5+j0AxEfLTpKVlFCNCYXCfn07+zp6enr+AcWIzE/TVxURTYoGQr58+/r6erq7PsKGCc0Q1FhU0U2JxgK9/Ht6ufo6ez7CRgnNkRTYlFDNCUXCPbu6eXj5efq+gcWJDNBUF9QQjMkFQf07Ofi3+Hj5/UEEyEvPkxbUEEzJBUH9+rm4dvc3+TxAA8dLDtJWFFDNSYYC/339e7n39vg7v0MGik4R1ZVRjgrHBIKBgP79Org3ez7ChkoN0ZVWEs/MCYcGBQQCP/17Onv/QwbKjhHVl5SRjowKiUkHRMKAPj28wEPHiw7SlllWU1EOzYzMSgdFQsGBP8GFCIwP01cbWJXTkhDQD0zKB8ZFBEOEBspNkRSYHVrYVlTTktIPTYsJycfHB8mMT1KV2V9dGtkXllYU0lAOjUzLSstNDtGUl9scWVbUUhAQTgxLSwtNDw5QUlSXGdyfmhcUUY9MywmIR4dHyEmLDQ9R1JcaXZgU0c8MSgfGRMQDxAUGSAoMjxIVWFuWUs+MicdFAwGAgECBg0UHigzP0taZ1JENioeEwgA+fXz9fkACRQfKzhGVGFNPTAjFgr+9e3o5ujt9v8LFyQxPk5cSTkrHhAD9uzj3Nrd4+33BBEfLDxKWEY2KBoM/vHl2tPQ09vm8f8NGyk3VF9FNCYYCvvt4dbNys3W4u78ChknNUpWRTQmGAr77eHVMC0sKeLu/AoYJzdDTkY2KBoM/vDl2iQiIR7l8f4MGigyO0dJOysdEAP26xwZFxYTEfYDEBciLThDSDswIxYK/vQQDgwLCQb+CgoPGCY0QEQ4Kx4UDQj/+wIB//4A/P4DCBIhLzxANSUXDQL//QUBAAEFC/P3/AQOHy46QDMlFQj88/ESDw4PEujs8/oBDB4nNj0vJBMG+ern5B0cHeDk6vD3/xMgKzg8MSMSBffq4+Dc2djc4ujv8/4JGCY1PC4jEQT36uLf2tfX3eLp7/P/FB8nNj0vJBIF9+jj4NzY2d/k6vD1AA4cKjo+MiQTBvnr5uLg3d3h5uvx9wARHy07QDIlFQj67ern5eHh5Ojt7/oJFiQxP0I2JxcK/fDv7ern5ufr7/L/DhsoNkRENygaDQD09PLv7Ovs7vH1BRMgLjxISTssHhAA+Pj28/Hw8PHz/QoYJTNATko9LyIUBv38+ff19PT19AEPHCo3RVNQQjQmGwoBAPz59/b29/gGEyEvPEtYVEY4KxwOBAL++/j4+Pr8ChklM0FQXldIOiwZDwQC/fr4+fn7/g0bKTdHVWNVSDkqGwwC//v39ff4+v0MGik3RVZjVEU5KhcL//z38/Hz9fj7ChgmNUNSYFNENygVCf769fDt7/L1+QcVIzA/TlxTRDgpFwv+9vHt6ert8PQCER8tPEtZVUc4LBsPBPr07+fm6e3w/w0bKjlIV1dKPDAhFw4GAfzz6OXq7v0LGik4R1ZcT0I1KiEbFQ8I/fLr6O/+DRsqOUhWYlZJPzUuKSMcEgj++fTzARAeLTtKWWpdU0lCOzYwJx0TCwcB/QYUIjE/TVxyZ11VTklEPDIoHxkVDwwOGyg2RFFgenFnYFtXUUc9NC0mIR4aHCYwPUpXZX97c2xmY1xSSUE6Ny8sKSozO0VSXmt0aV5WS0RIPzk1NDc8Qz1ETlVfaXR/a19USUA4MCsmIyIjJioxOEBKVWBreGJWSj81LCUdGRYVFhkeJS04QExXY3BbTkI2LiIZEgwJCAkNEhoiLDdDT1xoVUg7LiIYDwYA/Pv9AAcPGScvPEhVY09CNScfEAb89fHv8fb9BhEgKDVDUF5LPjAiGgn+9Ozn5eft9P8KGiMwPkxaSTosHhcF+e7l393g5u76BRcfLTtcZEc5KxwVAvbq4tvZ3OLr9wMWHSs6Ul1HOSscFQL26uHb2dvi6/cDFh0rOUxWSDosHhcE+e3l393f5e75BRgfLTtGUEs9LyIaCf7z7Obk5+z0/gobIigzPktPQjQnHw8F/PXw7vD1/AYQGhwhKzhGSzwxJhwYDgb/+/r8AAgHCg8XHCY0QUc5LCAaDAcGAwEHAP/+/wMKFRkiMkBFNikcFgP++/j19vX19fkABwoWITA+RDQnGg3+9vTx7uvr7fH3/gQJFCMwP0MzJhkM+/Py7urn5uvw9vwDCBMeLzxDMyUYC/vz8e3p5ePr8Pb9AwkUIzI+QzMmGQz89fLu6ufn7PL4/QQKFSUzQEQ0JxoNAPf08e7p6e/0+f8DDBopNUBGNikcDgH6+PXz7+/y9/sABA8eLDlFRTgrHhgF/f36+PT09vn9AgcTJjA6SEg7LiAYCAECAP36+fr8/wIJGSgyQExLPjEnFAwEBgQC//7+/wIEDh8sN0VSUEI1Kx4REgoIBQMCAgMECBIjLjxJV1NIOiweFRUOCwgGBQUGBAwZJjNBTlxYSz0vIxgXEAwJBwcHCQkQICo4RVNgWkw+MCQZFBAMCAYHCAoKEh8tPEpXZVlKPC4hFxINCAUEBQcJBxIdLTtKWGZYSjssIBQPCgUBAAIEBgURHyo4RlRiV0g6Kh4TDQgD/vv9/wMEDRYpNEJQXlhJOywfEgsEAPv3+Pv+AwkTIzA/TVxZSz0vIhUNBP748fT3+wAFDyEtPEpZXU5AMycdFAsD+vHv8/j9Aw0dLDpJV2FURzswJh4XDgb99PL2+wIOHi07SlhoXE5EOTIrIxsSCQH7+fkCEiAvPUtabmJYT0Y+Ny4mHhUOCAT+ChckMkBOXnZsYllSS0M8MysjGxYRDhMcKjdEUmF/dm5mX1lTRz83LykkHx0eJzA+S1hmf396c21mXVRLQzw3Mi0rLTI7RlJfbHhuZFpRSUI9OTc2Nzo9Q0pRW2VueH9uZVpPRj02MCwqKSosMTc+RlFbZG97ZlxRRTwyKyUgHBwdICUrMzxHUl1ndGBVSTwyKCAZFBEQERQaICkzP0pVYG1ZTkI2Kh8WDwkFBAYJDxcgKjVDT1pnVEk9LiMXDgb/+/r8AAYOGSMxPUlVYlBEOCkdEQf/9/Px8/f/BxIeKTlFUV9NQTYlGQ0C+fHt6+3x+gIOGiY2Qk5cTUA0IxcL//bu6ejq7vf/DBgkNEBNW0xANCMXC//27uno6e73AAsXJDVBVV9OQTUlGQ0B+fHt6+3x+QINGSU2Qk1XUEQ5KB0RBv728/Hy9/4HER0pMzpFT1RIPDAiFw0F/vv5+/8GDRgjKi01P0tQRDkxKR8VDggFBAUIDxQWGyEnMTpHTUA0LCEVEhANCgsKCgoMEBcdJi04RUo9MCkbDwkHBAAAAAEDBw0UGyMrNkRIOy4nGQoCAv/8+Pn7/wULEhkeKTRDSDotJRgIAAD9+fT0+f4EChAbHSgzQkc6LSQYBwEA/Pjw8vj+BAoQGR4pN0RIOi0lGAkCAP358vP6/wULERsfKjhFSDsuJRoMAwL//Pj3/QIHDRIYIS48SUo9MigcDgYGAwD9/AEFCQ4WGCMxPktMPzIqHREKCwgGAgIECAwQFxwnMkNPT0E3KxwVFBAOCwkICAsNERYeLDlIVFJEOy0gGBkUEhAODA0OEA8ZJDA9TFhWSj0wJBweGRYUEhAQERMTHSc1Q1BdWk1AMykgHxwZFhUUFBUYGCAtOkdTYF5RRDcuKiMfGxcWFhYXFh0kMT5LV2VfUUQ4LigjHhoWFRYXGBcfKTZDTlxpXlBDNiwmIBsWExIUFhgaHCcyQU5dalxPQDQoIx0YEw8OEBIUGBwlMT5MWWdbTT8zKCIZFRELCQsNEBQYISs6R1RiXE1ANCcfFxINCAUGCQ0REx0oNkNSYF1PQjUsIRgSDAUA/wQJDRYaJDNATlxgU0c6MSUcFQwE/f4BBQsTFyIyQExbZFhLQjcuJRwTCgL9AAQJCxcjMEBNXGxgVEpBNi4mHhQNBwUGCQ4XJjVBT11zZ11TSkM7MiofGBMQDgwSGio2RFJge3BoX1ZPRj01LCUfHBkXGiQvO0hWZH97c2pjW1RJQTkyLCwlJCcrNEJOW2h/f312b2deVU1GQDo3MzI0Nz9IVWFvfnNoX1hPSUVAPj0+QEVJUVdganR+f3VsXlVMRT44NDExMjQ5PkRNVWJsdn9uY1ZMQjozLykmJSYoLTM8Q01aZG56Z1pOQzkyKSIeGhobHiMpMzpEUlxoc2FURzwxJyAYExAPEBQZICsyPUlVYm1cT0E2KyAYEAsHBgcLERgkKzZCUF1pWUs9MSUfEgkEAP8ABAoSHyYxPUxZZVZIOi4hHA0F//r6+/8FDhwjLjpJV2NVRzgsIBoLAvz49/j8AwwbIS05R1ViVUc4LCAaCwL89/f4/AMMGyAsOEhdZ1ZIOS4iGw0F/vr5+v8FDhwiLjpIVV5YSzwxJR8RCQP//v8ECRIfJjE9Rk5YXE9BNSokGBAKBwYGCxAYICszOkBIUlhORToxKh8YEw8ODxMYICYoLTc8RU9USkAzJyEgHBcVFRUWFxkdIyozOUJNUUc7LiIaGxURDwwNDhAUGiEoMTdAS1FFOiweFhgRDQoHBwkNEhgfJi4zPklPRDgrHBQVDwsIAgIHDBEXHiUtMz1ITkM4KxwUFA4KBgEBBgwRGB4nLDM+S09EOSwdFhYPCgcBAggNExkfJS00P0pPRDouIBgYEA0JBgULEBUbICctNkNPUUc8LyMaFxQRDgoKDxMXHCIoLzhFUVNIPjElHh0ZFhMQEBMWGh4lKTA7SVVXTD8zKSEiHhsZFxYXGRwgIio0P1FbWk9CNy0lJyMgHhwbGxwfIyctOENVYF1QRDgwKyknJCIgHx8gISUnMTtJVWFhVEk+NTEtKiglIyIiIyUnLDRBTVlnZFhLQjk2MS0qJiUlJSYpKzA4RVFebGVZTUM7NjAsKSUkJSYnKSwzPkpWYm9jV0tBOTMuKSUiICIlJykrMTxHVWJwYlVKPjcxKyYhHRwdICMmKzA6RVJea2FUSD01LScjHxkYGRsfIigtNUBNWWdiVUg+NiwkIBoWEhQXGx4lJzI8SldkY1ZKQTYtJh8YEw4PEhYbICUvOUZUYWZaT0U5MScgGBEMDA8TGR4lKzhGU2FrX1RKPzYuJh0UDgwOExgcJCw4RVNhcWZcUUg/NiwkGxUSERQYGiMsOkhVY3ltY1pSSkE2LiYgGxoaGx4mMT1KV2V/d25lXFRKQTkxKyckIyEjKzZCTltnf394b2deV01EPDczNS8vMjU+SFRfbH9/f3tzaWJZUElFPz85OjxAR1BaZnN/eW9nX1dRTElGRkdJTFFXX2dveX9/enBlXVVMRkI9Ozo7PUFHTFZdZnB+f3NnXVRMQjw2Mi8vMDI2PENMVF1odn9rYFVMQzoyLiglJCUoLDM6RUxYY256Z1pPRDwxKiMfHBscHycqMj1FT1tndGFVSUA2KyMcFxMTFBgcIys3P0pWY3BeUUU5MiYdFRENDA0RGx4mMzxGUl9sW05CNi8iGRcNCAgIDRgaIzA3Q09daltNQTcuIBcVChAGEAoWGCEuNUJOW2lZTUE1LSAXFQoQBREKFhggLjdBTVtpXE5CNi8iGRcMCAgSDBcZIi83Q09bZ15RRTsyJR0aEQwMFBEVHSYyOkZRWWJiVUk+NyoiHxcTExMXGyMrN0BHTlRdZFhNQzoxKSYeGxsbHyMqMTc7QkpQWl9TRzwzLSsoJSEhISEkKjMyNz5GTldcT0M2Mi0lIh8cGhobHiIsLTU8RExUWk1AMysiIh8cGRQVHBsgJiwzOkFJU1lMPzMpISEdGRYRERgaHyUrMjtASFNYTD8xKSEgHRgVDg8ZGh8lKzI5QEhTWU1ANSojIR0ZFRAQGhshJywzOkFJVFlOQjYsJSMfGxgTEx0eIyguNjlCTFhbUEQ3LyklIh8cGRkdISUqLzY8RE1ZXVJGOTIqLSokIR4eISMoLDE2PUVQXWFUSDw1MS4sKSYjIyUnKi4yNz5IVF9iVktAOTUzMS4sKikpKy0wNTlBTFdkZVlMRDw5NzUzMC8tLS4wMzY8RlFcaGhcUUhCPzw5NjMyMTEyMzU4QEpTYG1sYVZNR0Q/PDg1NDQ0NTY5PERNWWVxbmJYTkhDPjo2NDM0NTY4OUBIU11pdWxgVk1GQDs3MzAvMTI1ODo/RlFcaXZqX1NLRD45NDAsKiwtMTQ5PEVOWmVxaV1SSkE7NjEwJyYnKjEwNDtBSlVgbWleU0pBOTQuKCUhICQqLDE3PkZRXmprYFVMQTozLCYhHRwgJCkuNTpETltob2NZTkU7NS0lHxodHiInLDI5Qk1ZZ3JoXlNKQTgxJx8bGxwhJisyOEFNWWd5bmRZUEhANi4mIR4hIyYsLzhBT1xpf3ZrYlhQSD03LismJykqLTE6RVFdan9+dGxjW1FJQDozMS8vLzI3PklVYW5/f352bmNcUktEPzw6ODg5P0ZPWmZzf39/f3duZl1XT0tIRERCQ0dPWGJteX9/d29mX1tVUVBPUVJWWmBob3d/f39/d25mXFVQSkdERERHTE9VXmZueH9/eXBmXVNMR0A8Ojo8PUJGTVVeZnB8f3NoX1ZLRD43MzAwMzQ3PURNVmFqdX9uYllPRDw3LysoKCsrLzU9RFBZY256aV1USj42MSgkISEkJCgxNj9LU15pd2VZUEY6MSwjHhsbHx8jKTI8R1BaZnJjV01DNy4oHxobFxwbHyYvN0RNWGNxYlVMQjUsJx0YGhQbGR0kLTZDTFdjb2JWS0I1LCMdGRoUGhkdJyw3Q0xWYnBjV01DNi4lHxocFhsbHyguN0RNWGRwZVpPRjsxKSMeHxobHiMpMTpGUFplbWhdUko+NjAnJCQgICQoMTY+SlJbYWhrYFZMRDw0LiorJycqLzc8QkhOV15mZltQRj48OTUyMC4uMTEzPT5ES1RaYmRXTEI9OTQwLSsoKC0sMDk7QklSWWFhVUk/NzQwLSonIyMoKS40OkBHT1ZeYVRIPTUyLywoJSAgJCgtMzk/Rk5VXWBUSD41MS8rJyMhHiQoLTM5P0dNVV5iVUo/NzQvLCcnIh8lKS40OkBHTlVeY1ZLQDk1MS4qJiEiKCwxNjxCSE5XYmVYTEM7ODMwLSonJysvMzg9Q0lQWWNnW1BGPjs3NjEyLCsvMjY6P0RKUVtmaV1TSUI/PDo3NTIxMzY5PEFFS1RdaGtfVE1FQ0E/PDs4Nzg5PD5DRk5WYWxtYlhQS0dGQ0E+PTw8PT9BRElQWmVvcWZcVE9MSkdFQkFAQEBCREhNVF5odHVqYVpVUU1KR0RDQ0NDRUdKUFhibXl3bWNcVlFMSEVDQkNERUdJTVRcZnF9dWthWVNOSUVBPj0/QUNGSE1UXGZyfXRoYFhRTEdCPjo5Ojw/Q0dLUFlibXlzZ19XT0hDPzw2MzY4PT5CSU5VXml1c2lfVU1HQjw2Mi8uMjU6P0RLU1tmcnVqYVdOR0A7NDAsKy8yNzxBSE5ZY294bWJZUElCOTMsKSssMDU6QEZOV2JufHJnXVVNRTw0LiopKy80OT9FTVZibn93bGNaUklAOjIwKy0xNDk+RE1YZHB/fHNqYllQSD86NDM0NDg8QEVPWWVxf398c2piWVFJQz87PDw9QEJKU11pdX9/f310a2NZU0xHRkRERUZKUFlibnl/f39/fnVsZF5YU1BPTU1OUVhgaXR/f39/d29pY19dWllbXF9laW94f39/f39/d21mYFpVUU9PUVJWW19mb3h/f39/eXBlXVZRS0lFRUhITFJXXWdweX9/e3JoXlVQSUM/PTw/P0NKT1ZfaXN9f3dtY1dPR0I8NzU1ODg8Q0hPWmRtd39yaF5SSkM9NTEuLjIxNT5CSlRfaHN+b2VbTkY9ODEsKSksLDE6PUZQW2Vve2xiWEtDOjUtKSYlKSkuNjtDTVljbXlsYVdMQTo1KycnIycnLDU5QkpXYWt4a2BXSkE4NCsnJyMnJys1OEFMWGFsd21iWE1COjYtKSglJSktNjpDTFhibHluZFtPRTw5MCwsKSksMTg9RlBbZW95cmheU0lBPTUxMS0wMTU9Q0pSXmZudXNpY1lOR0M7Nzc0NDc7QkdPV1tianFvZF5WUExGQj8+PDw/P0FJUVhYX2dubGFYUEpGQj87OTY2Ojo+RUtSVl1lbWpeVExFQj88ODUyMjU3PEFITlRcYmppXlNKREE+OjYzLi4yODtARk9UXGJqaV1SSkRAPTo1NC8tMTg7QUdOU1thampfVExGQj48NjUwLjA5PEJIUFRbYmprYFZNRkRAPDg2MDE1OT5ESlJXXGJtbWJZUUtHQj47OjY0OT1BRktVV11kbXBlX1hSS0VCPz46Oj9AREpQWFdeZnByZ11WWFFNR0VDQEBBRElQTlNZYGlydGphWWBaVE5KSEVGSEpOVVBVWmJrdXduZF5ZVlRST05LSkpMTU9TV15mb3l6cGhhXVpYVlNRT05OT1BTVlphaXJ8f3VuZ2JfXFlWU1FRUVJTVVhdZG13f394cGlkX1pWU1FQUlNUVVdbYWhwe39/dm5nYlxjW1VRUFFUV11lW2FocXt/fnVsZV5ZXVVOSEdKSk9WXFleZW53f310a2NcVlZPSURCQ0ZJTlRVW2Fqc35+dGtiWlVSSURAPT9BREhOUlhfZ3B7f3VsY1xUUEdCPjs5PUBFS09WXGNueH94bmReVk9HQDs3Ojs+Q0pNU1pibHh/e3FoYVlRR0M8ODg6PkJJTFNaYmx3f392bmZeVU1GQT48PEBDSkxSWWJteX9/fXRsYlpSS0ZDQEFDRk1OU1pkbnp/f398c2phWlJNSUdISk1TUVZdZ3J9f39/f3xza2NcWFNRUFBVWlZbY2x2f39/f39/fHRtZ2BdXFlbXmNeY2pyfH9/f39/eXRtaWdlZGZmaW90eX9/f39/f39/d3BrZGBeXFpcXWBlanB4f39/f39/eHBoY1tXVVJRU1RXXWNocHl/f39/fHFpYFtVT05LSUxLT1VbYWlzfX9/f3dtYlpVTUhGQkJERUlPVVtjbXd/f3xyZl5VUEdDQT48Pz9DSVBWXmlzfX95b2RaUUxDPjw4Nzo6PkZMUlplcHl/d21iV09JQDs3NDQ3NzxCSU9YY254f3ZsYVZNSEE5NzUyNTU6QUhOV2Fsdn92bGBWTUdAOjU1MjU3OkFITVZhbXd/d21iV05JQjs3NjQ0NztASU9YYm13f3lvZFpRS0U+PDo3OTw+RUxRWmVwen98c2hdVU9JQj4+PD5AQkdQVV5oc3p/fXNsYlpUTkhEREJCRkhNVVpiaG93fnluaGJdWVRPS0tISUxMUFVdY2Vsc3t2bGNcV1RQTklJRURHSUxRWF5janJ5dGhgWFRRTktHRkBBQ0hKUFVbYWhwd3NpXlhTUExIRUM9PUBFSU5UWmFob3ZyZ19XUk9MR0RCPjxARUlPVFthaW92dGlgWVNRTEhEQz49P0ZKT1ZdYmhvdnVrYlpVUk5KRkQ/P0NJTFFXXmNqcHh3bWVeWVVQTklHREJGS09UWWFka3B5em9qY15XU1FOS0hITE5SWFtkZWtye3xxamJjXVlVU1FOT1BSVl1dYmZtdX1/dm1namVgWlhVU1NWVlthX2NobnZ/f3lxa2ZkYmBdWllaWFpcXmFla3F5f398dG9qaGZkYV9eXV1eXmFkaG11fX9/f3p0cG1qZ2RiYWBgYWJkZmtxeH9/f399d3JtaGRhX15gYWNkZmludHx/f39/e3Rvam5mYV1cXmBjaG9pbnV9f39/f3lya2doYVtXVVdYW2JnZmxyeX9/f394cGlkYltWUFBRU1ZbYGNpbnZ+f39/d29pY15XUk9MTU9SVlpgZWxze39/f3dvaWJcVVBKSUpMT1NXXWNpcHl/f395cWpjWlRPSUhISk1RVlthZ294f39/fXVtZV1VUEtHSUlMUFZaYGdud39/f395cWlhWlNOTEtKTlFXWl9mbnd/f39/f3dtZl9XU1FPT1FUWlxhZ295f39/f398dGtkXlpWVFVXWl9fZGpzfH9/f39/f3t0bGVjXVxdXWFmY2hvdn9/f39/f39/fXZwbGhmZWVpbmpudHx/fw=="},"RightUpLeg":{"min":[-0.1306,-0.1331,-0.1498],"dims":[20,41,22],"data":"f39/enJsZmJgXV1eX2JobXJ6f39/f39/eXBpY15YVlNSVVVYXmJpcnt/f39/fHJoYFpTT0xJSUtMT1ZaYWpzfH9/f3VrYVlTTUdEQUBDQ0ZOUlpibXZ/f3pwZltTTEZAOzk5OzxAR0tTXGdweX91a2FWTUdBOTc1MjY1OUFGTlZibHZ/cmhdUklCPDUwLi0wMTU9Q0lSXmhyfm9lW09GPjkyLSoqLS0yOj5HT1xmcHxvZFpPRD44MCsrKCwrMDg9RU5aZG56bWRaTkU8ODArKygrKzA4PkVPWmVvenBlW09GPjkxLS0qKi0yOT5HT1tmb3txZ11RSUI9NDAwLS0wNTxCSVJeaHJ9dWthVU1FQDk1NTI1NzlAR01WYWpyeHZsZltSSkY/Ozs4ODs/RkxSW19mbnVyZ2FZVE9KRkJCP0BDQ0VNVVtcY2tyb2VbU05LRkM/PTo6Pj9CSU9WWmFpcG1iWE9KR0RCPTw2Njo8QEdMUlhfZm5sYVZOSUVCPjs6MzM2PD9ES1NYXmZubGBWTkhFQj06OTQyNjw/RUtRV19lbW1iWFBKRkJAOjo0MzQ9QEZMVFhgZm5uY1hRSkhEQDw6NDU5PkNITlZbYGdwcGRdVU9LRkQ/Pjo4PUFFSlBYW2FocXNoYltWT0pHREI+PkJFSU5UW1xianN1a2FaW1VQTElHRERGSE1UU1hdZGx1d21kXWNdWFFOTElJTE5SWVVZXmZueXtwaGFdWlhWU1JPUE5QUlRXW2Jpcnx+dGxlYV5cWlhVVFNTU1RXWl5lbHZ/f3hxa2ZjYF1aWFZWVldYWlxhaHB6f398dG1oY19aV1VUVldZWlxfZWx0fn9/enJrZWBmXlhVU1VXW2BoX2VsdX5/f3hwaWJeYFhSTUtOT1NZX11iaXF6f393b2dgW1pTTUhGR0pNUlhZX2Vtdn9/eG5mXllVTUhEQkRFSExSVl1janN+f3lwZ2BYU0tGQj8+QUVJT1NaYGhxe397cWhhWlNLRD88Pj9DR05RV15mcHt/fnVsZV1UTEdAPT0/Q0ZNUFddZnB6f396cmlhWFFKRUJBQERHTlFWXGZwe39/f3dvZl1XT0lHREVHSlFSV15ncX1/f39/dm1kXVZQTUtMTlFXVVlha3V/f39/f351bWVfW1ZTVFRYXlpfZm95f39/f39/f3ZvamRgX11eYWZhZm11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Xl9gYmJjZmtwdn1/f39/f3t0b2tpaGlrbG1sbW90eH5/f39/f39/f396dG9ua2ptbnB1en9/f39/f39/f314cWtmZWFhY2NnbHF1en9/f39/f311cWliXlxZWFpbXmNmaW50en9/f393b2piW1ZVUVBTU1ZYW15kanB5f398cmpjXFRQTkpKSkpMTlFVW2BocXt/eG1lXFdPSklDQUJCREVJTVNZYGp0e3JpYFpTS0ZCPDk7Ojs/Q0dNU1pkbnVrZFxVTkhCPjY0NDQ1OT1CSE5WX2pwZl5XUEpEPzozMC4vMTU5P0VLU1xla2JZVE1HQj04NCwrLi0xNzxCSVBYY2lfV1FLRUA7NzIuJigtLjY9QUhPV2JnXVVPSUM+OzUwLCUkKy0yOUBHUFdgZVtTTkhEPTo1MC4pKCkvNDlAR09WX2RaUk5HRD04ODIvKCMlLDE4QElRWGFjWlJOR0I/OjcwLComJS4yOEBIUFhhZFtST0hEPjk4MTAvKiovNz1DS1FbY2VcVVBKREE9OzMxLSYnLDI5Q0pUXGZnXlZSTUlBPTw1MS8qKS80O0NLVFxlamBbVU5IRD8+OjYyLi81O0BIT1dfZ2tiYFhQS0lEQTo2Mi4uNTlASlJbZG1vZmRbU05JRUM9OTcyNTo9RExUXGVtcmlhXVZRTEdFQD04NjlARUpSWGFpcXVsZWFcVlBLR0NAPDo9Q0dNV19nbnd5cGlkYlpTUElHQj9CREpNU1tia3N8fXRtaGdgWlFMSkZEREpRVVphaHB3f394cGttY1pTT0tISExQVVpgaXB3fX9/enNsb2VdVlFNS0xQVVxgZm51fn9/f3p7cWhhW1VSUE9SVltgZ291fH9/f392dWxjWlVRTUxQVFdfZGx0fH9/f397cnBmX1dRTUlITE5UWmNsdH1/f39/dm5sY1pUTklERklMUVlgaXB6f39/f3RsamBYUUtGQ0FGSU9WXmVudn5/f39yamlfVlBKRkFCRUlPVl1ka3R8f39/cmpqYFdRSkdDQ0VLUFZdZGtye39/f3Rsa2JYUkxHRkRGTFJXXWRrcnp/f393bm5kW1VPS0lIS09UWl9ka3N6f39/enJyaGBZVFBOTU9TWV9hZm10e39/f393b2llX1pWVFVXW15mZWtwd35/f39/fXZvbGZiXl1eYGJnbmtwdnt/f39/f399dnFtamhoaWptbW9zd3x/f39/f39/f356dnRzc3R1d3Z4e39/f39/f39/f39/f39/e3p2dnh5e39/f39/f39/f39/f398dnJxbm1vcHN3e35/f39/f39/f398dG5raWZlZ2lqbXBzeH1/f39/f398dW5oY2JeXl9fYWNmaW50en9/f399dW9oYV5cV1ZXVlhaXWFmbHJ7f39/eXBqY11YVVBOT05PUlZaYGVsdH1/fXVuZmBZU09KR0hHSExPVFlfZm54f3dvaGJbVU9MRUJDQkRIT1BVW2JqdHtya2ReV1JMSUE9PD8/QklNUlhfZ3B3bmdhWlVQS0lBOzk8PD9GSlBWXGRtc2tkXllSTUpIQTs1Njo+QkpOVlxjbXJpY1xXUVRLQ0A5NDM4O0BIUVRbZGxwaGFbVlFTSkM+Ozc1NjtBSVFUW2NrcGdhWlVQS0hFQD02MTM5P0ZOVF5kbG9nYVtVUk1JQz48NzQ0Oj9GTlVcZW5vZ2FdVlNMSEY/Pzw4ODxDSVBXX2ZvcWljXVhUTUtJQ0A6NDY6QUdOWGBpcXJrZWFbV09LSUM/PDg3PENIT1hgaHF2bmhiW1hSTUxFREA9PkJITVRbYmtze3RsZF5aVlJOSEZAPT1DSk5WX2dvd395cGhhXVdTT0tJREBCRkxRWGBocnx/e3JpZGBaVlJOSkZESE1SVl1kbHV9f351bmhjXVpVUU1ISUtQVltja3J6f399e3RuZmFdWFVRT05QVVlfZm52f39/f397c2xmX1pXVFJTV11hZWtze39/f39/f3hvZ2FeWVdWWV1iZ210e39/f39/f396cWpkYFxZWl1iaWxyen9/f39/f398dG1oY2BfXmBjZ250eX9/f39/f39/d29oY15bW15iZWpzfH9/f39/f39/e3JrZWBbWFdaXmJncHl/f39/f39/f3duaGBcV1NUV1tfZW11fX9/f39/f391bGVfWVRRUFRZXWRrc3p/f39/f39+dWxkXVhUUFFUV11kanJ4f39/f39/f3VsZF5YVVFRVFheZGpzeH9/f39/f392bmZfWldUU1VbYGVrdHh/f39/f39/eXBoYl1ZV1dYXmJnbnZ5f39/f39/f3x0a2ZhXVxcXmFmbHJ6en9/f39/f39/eHBrZ2NiYWRna3J4f31/f39/f39/f393cm5qaWprb3J4f39/f39/f39/f39/f3p2c3J0dXh7f39/f39/f39/f39/f39/f319fn9/f39/f39/f39/fw=="},"Hips":{"min":[-0.2091,-0.1948,-0.2005],"dims":[29,30,27],"data":"f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/e3h2dXV0dXV1dXV1dnh7f39/f39/f39/f313cm1qaGlnZ2hoZ2hoam1wdnx/f39/f39/fHVuaGNfXVxaWltaWltbXmJmbHJ6f39/f39/d29nYFpTUVBNTU1NTU5QVFhdYmpze39/f397cmphWVFLSEZDRENDQ0RFSU5UWmNsdX9/f352b2VcVEtEQT06Ozo5OTs8QERMVF1oc31/f3xzamJZT0U/OzU0NTIyLzM0N0BHUVtlcHx/f3pyaF9WTUI8ODIvLi0rKy8tMzxFTVpkb3p/f3hwZl5UTEA5Mi8tKyooKisrMTtDTVdjbnp/f3lvZl1TSUA3My4rKikoKCsrMTtDTlhlb3t/f3dwZ11TSkA3MC0rKikoKSwuMz5FT1pmcXx/f3lwZ15VSkI3MS8rLSopKi4wNkBIUlxocn5/f3tyamBWTUU5My0tKywrLDAyOENNVWBrdX9/f310a2FYUEg/ODEwLi8uMDQ2PUZRWWRven9/f393bmVcU0tDOzY0MjI0Mzo9QUxWYGl0f39/f398cmpiWFFJQj05ODg4Oj1ESVFbZm95f39/f39/d29mXldQSENAPz8/QkdNUVhiam94f39/f39/fnVtZl5YUExLSUpKTVFUV1thaG53f39/f39/f352bmdeWFRPTU1NTU9RVVlfZ293f39/f39/f393bmZdV1FPS0pLTE1PVFhfaG94f39/f39/f394b2deVlFOSklKSkxPVFhfaHB5f39/f39/f395cGZfVlBNSklJSktOVFhfaHF6f39/f39/f397cWdgWFNPTEtLTE1QVlthanJ7f39/f39/f399c2liXFdUUE9PUFJUWl9lbnR9f39/f39/f39/dm5mYV5aV1ZWV1hbYGVscXh/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/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TEhEQEBAQEJER01UXWRtdn9/f39/f3hsY1tTS0VCPj0+P0BDSExTXWVtd39/f39/f3huZVtTSkVBPTw9PT9CSExUXmVueH9/f39/f3pwZlxUS0RAPTw8PT5BRk1VXmdweX9/f39/f3txaF1UTUdDPz4+P0BESk9XYGhxen9/f39/f310aF9WUUxIRENDREZJT1RbZGl0fn9/f39/f394bWRcVlJQTEtLTE1RVltgZm53f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fXl3dnZ0dXZ2dXZ2d3l8f39/f39/f39/f354c25raWpnaGloaGlpa25xd31/f39/f39/f3dwamRgXl1bW1tbW1xcX2NobXR7f39/f39/eHFpYVtWU1FOTlBQT09RVVleZGt0fH9/f399dGtjW1NNSkdERUVEREVGSk9VXWRtd39/f395cGdeVUxGQj88PDs7Ojw+QUdOVl9pdH9/f351bGNaUUdBPTc2NjI0MTU1OUFJU1xmcn1/f3x0aWBXT0Q9OjMxMC4sLTAvNT1HT1tlcHt/f3lzaF5VTUE6NjEvLSwqLC0tMz1ET1llb3t/f3lxaF5UTEI5NC8tLCspKi0tMz1FT1lmcXx/f3pyaV5VTUI5Mi8tKysqKi4vNT9IUVtncn1/f3pyaV9XTkM5MzEtLysrLC8xN0FNVV5qdH9/f31zamFXUUY7NTEvLS0tLjIzOkRPW2Fsd39/f351bGNaVElANzMxMDAwMjY4PkdSXmVve39/f394b2ZdVUxFPTc1NDQ2NTw+Q01XYWp1f39/f399dGtjWVNLRD86OTk6PD9FSlJcZ3B6f39/f39/eHBoX1hSSkVBQEBBQ0hOUlpjbHV/f39/f39/f3dvZ19ZUk1MSktMTlJYWVxianN9f39/f39/f393cGhgWlZRT09PT1BTV1tgaXJ9f39/f39/f398cWdeWFNRTUxNTU9RVlpgaXJ9f39/f39/f396cWhfWFJQTEtMTE5QVlpgaXN9f39/f39/f397cWhgWFJPTEtLTE1QVVphanR+f39/f39/f399cmliWlRRTUxNTk9SWFxja3V/f39/f39/f39+dGtkXllVUlFRUlNWW2Fnb3l/f39/f39/f39/eG9oY19cWFdYWVpdYWdtdX5/f39/"},"Spine1":{"min":[-0.213,-0.0964,-0.1216],"dims":[30,25,25],"data":"f39/enJqY15bW1lZWVtdYGZud3x/f39/f39/enRrZF1YVVVTVFRWWl1ja3R/f39/f39/f3ZvZl9aU1FRUFBRU1lcYmp0fn9/f39/f310bGNcV1NPTk9PUFJXW2Fpc31/f39/f398c2xjW1ZTT01NTk9RVlphaXJ9f39/f39/f3VtZFxWUk5NTU5PUVZaYGlyfH1/f39/f393bmZdV1NQTU5NTlFVWWBocnJzdXl/f39/eXBnYFhTUU5NTlBRVlthaWloaWxwdn5/f3xzbGNcVlRSUlFSUldcYWBeX2FkaG93f39/eHBoYVxYVVRbWVhYWl5jaVdZXGJpcX9/enNtZmBbV1VST05MTVBUWWBPUVddY21/fHRtZV9aWVNOSkdFREVIS1FTWF5TWWFqf3hvaGBYUk9JRkNAPj0+QURJS1BXUFdgaX1za2NaVk1HQ0A9OTg2Nzw/QkNKT1VdXmh5cGdeVVFIQj46NzQyMDI3Oz4/Q0hPWF5pc2tiWlFMQz45NTIvLS0vNDg7PD9ESlReaW1oXlZNRj86NjIvKykpKzE1Njk8QUpUX2tpZF1UTEM+OTQwLCkmJysvMzU4O0FJVGBsZ2JeVUxFPzozLysoJCUpLC8yMzpAS1ZhbmhiXlhQSUQ/OjUyLisqLC4vMDM5Q01XY29qZWFeVk9LRkI9OjYzMjMvKysxOkNNV2RxbmlmZV5YVFBMR0RBPj04MCwtMDpET1pmc3VwbWtoYl9bV1NQTUpGPDUxMjc9RVFeand8eHV0c25qZ2RgXVpXTUQ9Ojs+REtXYm98f39+fX56d3RxbWpnX1VOSEVFR01UXWhzf39+dW1nX1dST05MTEtNT1NaYGdxe39/f39/eG9nYFlRS0dHREZFR0pPV15mbnl/f39/f3RqYltTTUZCQkFCQ0VKTlRdZm94f39/f31yaF9XT0dFQD9AQEFESU1UXmhveH9/f399cmdeVk1IREA+Pj9AQ0hNU11ob3h/f39/fnJpYFhQSEI/Pj4/P0JITFNdZ29zdXh8f391a2JaUUlDQT49Pj9CR0xTXWdnaGtvc3t/eG9kW1RKRUE/Pj9CREhNU11dXF5gZWx0f3xyaF9YT0pGRENBQ0RITlZVVFNUV11jbX53cm1kXVVNSkhGRkdITExMS0lKTFBWXWd6cmxmYVpVUEtIRURBQ0NDQ0NCQ0ZKUFlj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ZV9bWlJLRkI9OTYyLy4uKiUmLDY+SFRncmlkYF9bVFBMSERBPjo6NCsmJCo2QEpXY3Bwa2hmZV9bWFRQTkpHQzgwLC0yOUJOW2d0eHNwb3BrZ2RhXVtYVUpAOTY2OUBIVF9seX99enl6d3RxbmtoZV1TSkVCQUNJUVtlcn5/f39/eXFqZmNjYWFhY2VpbnV+f39/f39/f39/enNsZWBeXVxdXV9iZmtze39/f39/f39/fXZuZ2JcWlpZWVpcYWVqcnp/f39/f39/f3tza2NgXFhXWFhZW2BjaXF6f39/f39/f397c2pkXltYVlZXV1pfYmlveX9/f39/f39/fHRsZF5bV1ZXV1haX2Nob3l/f39/f39/f352bWVfW1lWV1ZYWVxjaG95eXp8f39/f39/d3BoYVxaV1ZXWVpfY2lwcG5xc3d9f39/f3pza2NeXVpaWltcYGVoZ2ZmaGtwdn1/f39/d29pZGFdXmFfXl5hZGlvXmFkaXB4f39/enRtZ2NfXFlXVVRVV1tfZldaX2VsdH9/e3VsZmFfWlVST01NTFBRWFpeZVthaXJ/f3ZvZmBZVlFOS0hGRUZJTFBTV15YX2dwf3pyamFcVE9LSEVCQD5AREhLTFFWXGNlb393bmVcWFBKRkM/PDo5O0BER0hKUFZeZW56cmliWFNLRkI+Ojc2NTc8QUNFSExTW2VvdW9lXVVOSEI/Ozc0NDI0Oj4/QUVJUVpkcHFsZFxTS0ZBPTk1Mi8wNDc7PkBDSFFaZXFwamVdVE1HQz04NDEtLjE1ODs+QklSXGdzcGtnYFdQS0dCPTo2MzI0Njg4O0FKVF5pdHJtamVdV1JNSURBPTo5Ojg0MzlBSlNeanZ2cW5sZF9aVlJNSkdEQz84NTU4QktVX2t3fHd0c25oZGBdWFVST0xDPTk6PkVNV2Nven9/fHt4c29saGRhXltSSkRBQkVKUltncn9/f39/f397eHRxbmtjWlNOS0tOUlpjbXh/"},"Spine":{"min":[-0.1148,0.0125,-0.1184],"dims":[17,10,23],"data":"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"},"Spine2":{"min":[-0.1761,-0.0184,-0.1297],"dims":[25,19,22],"data":"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"},"LeftShoulder":{"min":[-0.1709,0.0105,-0.1308],"dims":[21,14,17],"data":"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"},"RightShoulder":{"min":[-0.1279,0.0106,-0.1308],"dims":[21,14,17],"data":"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"},"Head":{"min":[-0.12,-0.0947,-0.1535],"dims":[18,24,23],"data":"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Ly0tLS4uLjI4P0hTWmJqdF1SSD43My4sKysrLCwsMDQ9RVBYYGhxWk9DOjMvLCsqKSorKywtMjpCS1dgZG1XTEA3Ly0rKikpKSoqKiswNz9HUFphalZKPjUtLCsqKSkpKiopKy0yO0RMVV1lVko/NTArKiopKSoqKikpKjA3QEhQWWFXSz42LSspKioqKioqKScpLjU9RU9WXlpNQjgvKykqKioqKiooJyovNTxET1ReXVFFOzMsKikpKikpKSkpLTI4P0dRVl9hVko/NzIsKignJygoKiwwNz1CS1VYYmZbUUY+NjIvKykpKSotMTc8QkhRWl5mbGJZTUU+ODQwLi4uMDI4PUJITldhY2tzaWBXT0ZBPDk3NTY5Oz9ESU9XW2JpcnxxaGFYUkxHQ0FBQEFESU1QV19iaXB4f3pyaWJbVlJOS0pKTU1TWFxdY2lwd39/f3t0bWZgXVhXVlZYWl5jZ2ZrcXh/f39/f313cGtnY2BfX2FgY2dqbnR5f39/f39/f397dnNwbm1tbW1tb3JydXl/f39/f399d3FsaGVjYmJiY2Vna2xuc3l/f39/e3NtaGFfW1pZWFhZWl5iZWpudXx/f3tya2RfWlZRUFBOUVFTVllhaWxyen99c2piW1ZRTEpISEhIS0xPVFxkanB4f3ZtY1tVTkpGRENDQ0NFR0tRWWJocHd/cWheVE1IQ0I/Pj4/QEFDSU5WX2dvd39rYVhPSERAPjw7Oz09P0FETFRdZm53f2hdUktDQD07Ojo6Ozs8PkJKUVpkbHR8Y1dPRkI9Ojo5ODk5Ojo7QEdOV2BqcHlhVkxDPzw6OTg4ODk5OTs+QktTXGVtdV9USkI+Ozk5ODg4OTk4OTtAR1BYYGlxX1RKQT46OTk4ODk5OTg4OT1ETFRdZW1gVUtCPjo4OTk5OTk5ODY4PEJKUVthamJXTEQ+Ojg5OTk5OTg3ODk9QklRWmBqZVpPRz87ODk4OTg4ODg4Oz9FTFNbYmtpXlNLQz06ODc2NjY3OTo+RElPVl9kbm5jWlBIRD07OTg4ODk7PkJJT1VbZGhydWtiWFBJREI/PTs9PkBDSU5VW2JqbnZ8cmhfV1JMSEVDQkNERktQVVthZ211fH96cWlhW1VRTUtLTE5PU1dcYmludXt/f397c2tlYFxYV1VVV1lcYWZpb3V7f39/f398dm9qZWNhX19iY2dscHF3fH9/f39/f39/enRwbWxqamtsb3J1eX9/f39/"},"LeftArm":{"min":[-0.1143,-0.0929,-0.1023],"dims":[16,29,16],"data":"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RFBcaFhKPjUrKCUmJCowPUhTX2xVSTwyKyQiJSUpLzlCT1toUEM2LCMgHSEhJSo6QktYZU1ANCgeHBoeHSEqMTxJVmJKPS4lGxkXGxkeJy86R1RhSTstIx0XFRkbHSMuOkVTYEg7LCIXFxUYGh4kLzpGU2BIOi0kGhkXGh0hJzQ9SFZiSj4wJiMeHB8iJi43QE1ZZk9COC4rJiQnKi82P0hTXWtVSUA8NjIyMDY7QklSW2VxXlRMRkE8PT1BRUxUXGVueXNqY11XVFJRUlVZX2VsdHxqYVlSTUhGRkdLUFVaYmpzZFpSS0VAPj4/QkdJUFlibF9VS0M/ODY1Nzg9QUlSW2ZaUEc/ODMxMDAvNjxETlhjV01DOzQwLSwpKjE3QElVYFNJQjozLionJiYrND5IU15NQzszLiknJSQiJzM8RlFdSD41MSsnJSMiISUxO0VRXEQ7My4pKiQhIB8kMDpFUV1EOjEtKSokISEfJDE6RlJdRDoxLikuKSIiICUxPEdTX0Y6NDArMyokIiMoMz1IVWFIPzYyLispJyImLTdAS1hkTkM8NjEuLCsqKjE6RE9bZ1NIQDg0MTAvLi81P0hTXmtZTUU+ODQzMzM0OkRNWmRwX1JJQDs2NDU2OD5HUV5oc1xQRT43MjAzNDc9RE1aZXBXS0E3My4sLy8zOT9JVmFsVEg8NTAqKSwrLzY+RlFcalFDOTArJyYpKywxPERPXGhPQjgwKyUoJykqMTpDT1pnT0E3LSomJCcpKzE7RU9baE9BOC8sKCYpLC40PUZSXWlRRjs0MSwtKy4zOkJMVmFtVkpAOzYyMzM2Oz9IUFtmcVxSSUM/Ozw7QENKUFlibHdjWVNOSkdHR0pPVVtja3R/fHRtZ2JfXVxdYGRpbnR8f3RsZF5ZVVNSU1ZaX2Nqc3xuZVxWUUxLSktNUVVbYmx1aWBYUUtIRUVDRUlOU1xmcGVbU0xGQT8+PD1CSVBYYmxjWU9IQj07OjY4PEVMVWBqXFRNRUA8OTY0NDlBSVNdaFVNR0A7OTY0MjE1PkhRXGdSSUM/OTY0MTAvMzxGUFpmT0dAPTg3MzAvLTI7RU9aZk9GPzw3NTMwLy0yO0ZQW2dORkA9ODo2MTAuNDxGUVxnUUhCPjo/NTMxMTY+SFJdalRLREE8OTg2NDQ6QktVYGtXTklEPzw7OTg4PEVOWGNwXFRMR0I/Pj09PUJKU1xncmNZUUtFQ0JBQkFHTldjbXhoXVROSEVEREVGS1FbaXJ9Y1lQSkNBQEJCRUtRWWVveWBVS0VAPDs+P0FFTVRganVcUUdBPjk6Ozw8QUpTW2ZxWk5FPjo2NTg6Oj9HUVlkcFdNQj05NDY2ODo+RE9YZHBXTEI8OTUzNjg7PkdQWmRxWE1EPjo2Nzg6PkJIUlxnclpQRkE+OTo7PkJHTVZganVfVU1HQz5AQEJHTVNbZW95ZFtUT0lHR0hKT1VZYmp1f2xjXFhTUFFSVVleZGpzfH8="},"LeftForeArm":{"min":[-0.0986,-0.0819,-0.094],"dims":[15,28,14],"data":"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QEpVYV5SSkM9ODc2Njk/SVRfX1VLRT05NjY4O0FJU2BiV09HQT06ODo+RExWYmdcVU5GQ0A/QERKUVpmbmRcVU9KR0ZHSlFZYWx1bWVdWFRRT1FUWmBpcn12b2hkYWBgY2Zrcnp/dm5nYl1aWVlbX2RrcnpwaGBaVVJRUVNXXGNrdWtjW1VQTUtMTlJYXmVta19ZUkxKSElKTFBWXmdkXFZQS0dEQkFESVFYYV9XUEtEQj49PkBFTVVfW1JLRkA8Ojk5O0JLVV9ZT0lCPTs3NjU5QUpUX1hOSEA7NzUzMzhBS1VhWFBJQDo2NDMzOUJMVmVbUkpBOzg1NDY6RE5ZZ11VTEQ9Ojg3OD9IUl1oYFhOR0E9PDs8Q0xWYGtmXFJLRkI/P0BIUFpkb2xgVk9KRkNDRkxVX2hzbmRaU05KRkdKUFhibXdyaF5XUk5LS05SW2RteG5lX1lTUE1LTFFXYGl0a2JbVlFOS0hJTVNbZW9pYFhTT0xJR0dKT1hgbGdfV1JMSUdFRUhOVl9qaF9XUEtIRkRFR01VXmlqYFhQS0dFRUZJTlVeaWxjW1ROS0hGSExRWGFrcGhgWFNQTEtNUVZcZG93bmdfW1VUU1RYXWNrdH52bmhjX1xbXF9la3J7"},"LeftHand":{"min":[-0.086,-0.0669,-0.0721],"dims":[13,17,12],"data":"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"},"RightArm":{"min":[-0.1048,-0.0929,-0.1024],"dims":[16,29,16],"data":"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TFZib2RXTUM5MzAzNTo/Rk9aZnReUkg+NjEwMjU5PkRNV2RyWE5DOTIuLjAzNzxCTFdicVNIPTMtLCwuMTU6QEpUYW9PRDkwKikqLS80OkBKVWFuTUI2LCcnKSwvMzo/SVVhbUxBNCwnJicrLjM3QElVYW1PQjctKiUlKSw0OUBKVmJtUkU8My4pKSwwNDpCTVhkcFdMQzw1MjIzNjs/R1FcaHNeVEtFPjs7PD9DSE9XYm14Z15WUEpGRUZKTlJYYGl0f3hwaGJdWlhXWFtfZGtwdn5waGBZVFBOTk9RVltdZGt0a2JaU01KR0ZIS05OUllhamVbU0xGQT8+QEFDQ0hPWGJgVk5HQDw6ODY2ODtARk9bXlRLQz00LisqLDAzN0BKVl1TSkI3LiglJSkrLzQ9R1NdUEU+MykiICEkKCoxOkVRWk1DOC8lHh8gIyYqMDlFUVdMQTcsIh4fISMmKTE6RlFWSz81KiIfICIkKCsyPUlUV0pANCgiJCMlJyswN0FMV1hMQTUrJyYnKSstMjpGUlxbUEQ5MCksLC4wNDg/S1ZjYFNHPDUxMTE0Njc+RlJdaGNYTkQ9ODU4Oj1ARU1YY29pXVVLQj49PkBER01VX2l1bWFXTUdCP0FESE1TW2RvfGZcU0pEQT9AQ0dMUllibHthVkxFPz49PkJFSlBXYGx6XFFIQTs7OzxAQ0lOVV9peVhNRDw5ODk8P0JITlVfanhXS0I6NTY3Oj1BSE1UXmp3VklBODY0Njk8QUdMVV5qdldMQTw4NDY4PUFHTVVfa3daUEdBOzg3Oz5CSE9YYW15X1VMR0E+P0BDRk1TW2VwfGZdVU9JR0dIS05TWGBqdX9uZl9YU1FQUVRXXGFocXt/f3pzbWhlY2NkZmpvcnd9f3tzbGZhXVtZXF5hZGdrcnt0a2RfWFZUU1RWWFlcYmlyb2dfYVpUT01LTE1QU1lhamxjW1hQSkVDQUFER0tQWWNpZ1tQR0A8OTk7PkFFS1RfaGFXS0E6NTM0Njk9QEdRXGZaUUc9NDAvMDM2Oj5FT1piV01EOTIvLS8yNTk9RU5aYVZMQTgxLy4wMjU5P0ZPW2BWSj83MjAvMTM2OT9IUl5gVUlANzMyMjM1OT1BS1VgYVVKQTk0NTU3OTs+RlBaZWRZTkU8Ojo6PD1BQ0tTXmpnW1FIQj8/P0FGSUxSW2RvbGFXT0lGRkdJTVNQWGBrdnFoXldSUFBRUlZbWV9mcXx1a2JaVFFOUFJWW2Bmbnh/cGZdVlJPTk9SVVpfZm53f2phWVJOTEtNUFNYXWRsdn9mXFROSkpJS05SVlxianR/YlhQSkdHSEpNUFVbYmp0f2BXTkhFRUZITFBUW2Jqc39gVk1IRUNFSEtPVFphanR/YVZOSUZFRUhLT1VaYWp0f2RbU05JRkZJTFBWXGRsdn9pYFlTTkpMTVFUWl5mcHp/b2dgWlVTU1RXWl9kbHR+f3dvaWJeXFxcX2JnbHN7f38="},"RightForeArm":{"min":[-0.1004,-0.082,-0.0941],"dims":[15,28,14],"data":"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QkpVYFtPRT03NTMzNTlBSVNgXlJHPzo2NDQ0OkBLVWBgVUxEPTo2NTk9RE5YYmVaUEpEPjw7PUFJUFxna2FZUkpHRUJGSk9YYWxyamJaVVBNTU5TWGBpc3tzbWdiYF5fYWRpb3h/cm1lX1tYVlZZXWJocHloYFpVVFFQUFJVXGNrdF9WTktIS0lKTFBWXWVuV05HQUBBQ0ZITVNaYmxRRj47ODk7PkJJT1hha05DOzY0NTc4PkNJU15qTEA6MzQzMzY7PkdQXGhLQjk2NTQzNTk9RlBbZ05EPDc2NTU3OT5GUFxnUUZAOzk4ODk5QEdSXWlTSkM/PTw7OzxDS1VgbFhOR0NBQD8/QUZPWGRvXFNLR0VERENES1FcZ3JhVlBKSUhHR0lPVmBqdWZdVVBMS0xMTVNbZG54a2JaVE9PT1BSV11mcHpwZl5XUk1OTlFVW2Nsd2piWlRNSkpLTVFWX2lzZ15WT0lHR0dKTVRbZW9mXFRNR0RERUdLUVhibGVcU0pFQ0NDRUhPV19qZlxRSkVDQkJDSE5WX2lnXFRLSERDQ0VITldgampgV1BLSEVGSEpQWWNtbmRcVlBMSklLT1RcZnB0a2NcV1JRT1FWWmJrdXtzbGRfW1lYWl5jaXJ7"},"RightHand":{"min":[-0.0924,-0.067,-0.0723],"dims":[13,17,12],"data":"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"},"Neck":{"min":[-0.0933,-0.0495,-0.0784],"dims":[14,14,14],"data":"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"}}`),radii:{LeftArm:[[.083,.0569],[.25,.0672],[.417,.0578],[.583,.0446],[.75,.0526],[.917,.0555]],RightArm:[[.083,.0569],[.25,.0671],[.417,.0578],[.583,.0447],[.75,.0527],[.917,.0556]],LeftForeArm:[[.083,.0485],[.25,.0572],[.417,.0458],[.583,.0367],[.75,.0388],[.917,.0407]],RightForeArm:[[.083,.0485],[.25,.0572],[.417,.0459],[.583,.0367],[.75,.0388],[.917,.0407]],LeftHand:[[.083,.022],[.25,.022],[.417,.022],[.583,.022],[.75,.022],[.917,.022]],RightHand:[[.083,.022],[.25,.022],[.417,.022],[.583,.022],[.75,.022],[.917,.022]],LeftUpLeg:[[.083,.0884],[.25,.0966],[.417,.103],[.583,.0806],[.75,.0737],[.917,.0757]],RightUpLeg:[[.083,.0884],[.25,.0966],[.417,.103],[.583,.0806],[.75,.0737],[.917,.0757]],LeftLeg:[[.083,.0672],[.25,.0822],[.417,.0775],[.583,.0621],[.75,.063],[.917,.063]],RightLeg:[[.083,.0672],[.25,.0822],[.417,.0775],[.583,.0621],[.75,.063],[.917,.063]]}},"x-bot-tpose":{model:`x-bot-tpose`,step:.015,unit:`mm`,grids:JSON.parse(`{"Hips":{"min":[-0.2099,-0.2232,-0.2037],"dims":[29,28,25],"data":"f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fnt6enp8fn9/f39/f39/f39/f39/f398eHRycG9vcHJzdHV3eXp9f39/f39/f398dW9saWVkZWRlZ2dpam1vc3V6f39/f399dm5oY19cWllaWltbXV9hZWhscXd/f39/eHBpYVtVVVFQUE9QUFJSVVpeZGlvd39/fXRrYltUT01JR0ZFRURISUxSVVthaHF6f3twZVxWUExFQUE8PDo7P0BBSU5UXWRrdX94bmJaUU1GQTs4NTYyMjc3O0JJT1dgaHJ9dWtiWVJLQTs5NTAxLC0xMzY8RUtTXWdxe3RpYFlTSkA6ODAtLigoLi0yN0NIUlxncHt0amFaU0pCPTkwLC4oKC0wMTlCSFJbZ3J8eG5lXlRKQz47Mi4xLCovMTM5QkxTXWh0fnlvZ2BXTkVCPjYyNC0uMTY2O0ZPVV9pdX98cmpjW1FLR0Q9Ojs2Mzg7O0FJU1tjbXl/f3dvaV9XUE1IQj9AOjo9QUNGT1hhaXJ8f39+dW9lXldTT0lFR0NARElLTlReZ293f39/f3t1a2RdWlZQTU5KSUpQU1ddZW53fn9/f39/e3NrZmJeWVZWVFJVWWBkZm12f39/f39/f397c25qZmFeX15dXmJobXF3f39/f39/f39/f3x2c3BraWlpZ2lscnh8f39/f39/f39/f39/f356dXR0dHN0d3x/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fXx7e3x/f39/f39/f39/f39/f39/f396dXNwb3Bxc3Z6fX9/f39/f39/f39/f395cm1pZmVlZWdpbG1vb3Byc3Z6f39/f396cWljYF1aWlpbXV9fYWJkZmhscHV8f397cmthW1dUUE9QT1FSUlRVWFpeYWZuc3t/dWtkXVZOSUdFREVFRkZISk1PVFhdZG11fnFnYFdQSEJAPDs6OTs6Pj1BRkpRVl1ncHhwZlxQSEM8NzQ0MTAvLzQ0Nz5CSU9YYGx2bmNZTkU/OzIuLSgpJSYsKi41O0NMU11ndGtgVk1FPjYuKykiIB4fJSQoMjY+SVJcZ3JqXlRMRUA1LSkhHiAZGSEfJC00PEdSW2Zxa19VTUc+MywsJR4gGRkgIiMtNj1GUl1ncm5jWVFKPzYvLiQgIhsbISAlKzhAR1NfaHRuY1pSTUQ7NTMoJCcfHyUoKTE7QUtVYW13cmdeV1BFPjg4LystJiYqLS40PkhQWWRwe3dtZF1VTERAPTUyMy8sMTU3O0VOVV1odH99c2piW1FLRkQ8OTo2NDU9PUNKVV1lb3l/f3lwaWJYUk5LREFCPz1ARklMUlxmbnZ/f39/eXJpYVpWU0xJSklGSU5VWV5lb3d/f39/f396cWhjX1xWVFRUUlRYX2NpcHh/f39/f39/f3pybGlmYl5fX11fY2lvc3p/f39/f39/f39/fXh0cm1ra2xrbG90eX9/f39/f39/f39/f39/f356d3d4eHl8fn9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fXx8fX9/f39/f39/f39/f39/f39/f395dXJxcXFzdnt7e31/f39/f39/f39/f393cGpoZ2ZmZ2tvcHFzdXh3d3h8f39/f352b2ZhXltaW1xeYmZnamxta2ttcHV7f394b2hgWFRRT1BQUlVaXmFjZGFhY2Zrcnp/cmhgWFBKSUVDRUZJSktOTk9RU1dcYmlxe2thWVFIQkA7Ojs6PD4+QEFDRkhNVFpia3RnXVNMRTs2MzAvMDAyMTQ1OTs/REtUXGRvZVpRSD43LyomJiUlJiUqKSwxNj1ETVhga2VaT0Q5MS0oIR0cGxoaHB8lKTA5P0lSX2lkXEtBNzAsIBocFBIQERkXGyUqMjxGUl1pZl1JPzczKx8ZGg8MCwoXERYfJzA9RlFcaWZaSkA5NSkfHhoPEwoKFxAVJCgxPUhSXWllWU5EPTYpIiAWEg8NDRYSGCQsMz1KVF9rZllPRD85LSYmIBYcGBIcFhwmMDZATFhibmldU0tEPDIrKiIeIBgYHyAiKzY8RFBdZ3FuZFpRSkI4MTArJSYiHyQoKjA7Q0tVZW54dGlfV1BIPzk3MC0tKigsNDM5QkxUXGZzf3pwZl9ZUEdCPzo1NTUyNDxARExVXmZven9/eG9nYFdPSUhBPz8/PT9FS09VX2lweX9/f393cGhfWVRSTUlKS0hLUFdaYWhvd39/f39/f3lyamRgXllWVlhXWFxhZm1yeH5/f39/f39/fHVwbGplY2JjZGVoam50en9/f39/f39/f39/f3t2c3Jvbm5xcXN3fX9/f39/f39/f39/f39/f3x7eXd3ent9f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fn1+f39/f39/f39/f39/f39/f39/f396dXJxcnR2en58fH5/f39/f39/f39/f353cGpnZ2dpa29ycHBzdHZ6eXp9f39/f311bmVgXVxcXF9iaGZmaGpsbm5vcnV6f390bGVcV1FRUVFSV1tcW19hY2JiZGdrcXd/bmRdVU1KRkVFR0pPUlJWV1lWVlhcYWhvd2hfVk5FPz06PDs+QkdISUhISEpOUlhfaXFkWU9GPTc0MC4wMTQ4OTo5Ozw/Q0lPV2FsX1NJPjkyKiYlJiUnKiorKy4yNDlCSFFaZV1QRDw0LCMeGxocGBscHCAkJysxOURMVmFaUEU7LSUcFxMREAoMDRUUGR4kKzQ+SlRfWU9CNy0iHhgMCgcGBQUHChAXHicxPElTXltRQDQqJCMRCxAB//39/wMSExspMDxHVF9dUUI1KicgEgsWAf37++8CBxIcJjQ9SFRhXVBENy8qIhUOFAT//v7uBQoZHig1P0tXY15RRTowLSQaExcLBwQEEwoQHyQqOERNWWViVklAODMpHx0aERQLChYQFyMnMTtIVF5qaFxPRT44LCYgIBgVEhMaGR8mMzhCTFxlcG1gVkxFPzQtKyggHSEdHyosMjxETFZhbXhzaF5VTUY8NjIvKicrKCozNjxFT1dganV/e3BlXVZORT89OjQ1NzM2PURIT1heZnF7f394bmdgWFFMSUZCQURDRUpNVFpfZWx2f39/f3hxa2NdWFVSTk1OTlFSVltiZm10fX9/f39/fXdvaWRiXVxbWVlcXF5kam50e39/f39/f39/e3dybGdmZGJiZWZobnN3fX9/f39/f39/f39/e3VxcG5sbG9vcnd9f39/f39/f39/f39/f39/fHt5d3h6e31/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f399eHVzdHZ4eXh3eHl8fX9/f39/f39/f354cWxoaGlqbXJxcXJzdXd4eXp9f39/f3xzbWdhXVxdX2JmaWdnampscG9wcnZ6f391bGRdVlJRUVNWW15bW15eYmZkZWhrcHh/bWNbVExHR0dHS09TUFFUVFdaWVpcYWdvd2VbUktDPjw7PD5DSkhIS0xNTU1PUlddZm5fVEpDPDQzMDAzNz49PUFBRUFBREhPVV1oXFBGPTQsJiUnJCowNDQ6ODw3Njk+RU9YYVhLPjQtJB4bGRcdIycoKCclJysvNj5IUl9TSDowJiMXERASEBUYGRoZFx4gJi43Qk1cT0U8MCcZEAsQBQMHCQoLCg4SGB8pMz5KW05EOi4jFg0RAPz7+fv8/P8FCxIcJjQ9SVxRRjopHxUVE/738/Hv8PL3/gcXGyYxQEleU0g7LiAaGQX+9/Lv7Ozv9P0HECAoMz9NYlRJPC0iFxsSAez28/Dw8vfvCRMiLDRAT1tYSz4wJiAdDQft/vr39+39EA0XIjE5RVJfXE9DOCwlIhMNFQT//f7vBgwcHik1QktXZGFWSD0yLCYaFBkMCBEIExEYJCszPUlVX2toX09DPDQtIhwfFRIYExUgIyo3PEZRXWdwcGZXS0I9NSwmKB4eJB8jLi82QEROV2NrdHVpXlVLRz84NDMsLDAuMTc5QUZLU11ocXp9cWheWFNKREA/Ojo6OT4+QUlOU1pjbnZ/f3xyamReWVVPSUdGQkRHRkpQVVtia3V9f39/fndwaWNeWFJRT0xMUFBVWl9janN9f39/f39/enNsZ2BdWVlXV1paXmNobnN8f39/f39/f398dXFsZ2ZkYmNlZWhtcnd+f39/f39/f39/f399eHNxb21ucHF1en5/f39/f39/f39/fHl2d3h1c3JxcnR2eXt+f39/f39/f395dHBsamptbWxqa2ttbnFzdXh8f39/f352b2llYF5fYWRlZGNkZWhqa21vcnZ8f391bGRfWFRTVFVYXV9dXV9gY2RkZWhscnl/bGNZVExJR0hKTlJUUlJVVldaWltdYmhud2ZbUktEPjw8PkJISUZGSUpNUE9QUldeZW5eUklCODMyMTM1PT87Oz8/Q0RDRUhNVF1nWEtBNy8qJCYnKjI3MzM3NTk4ODs+Q0xUX1NHOzArIB8aFx8mLSgoLSwwLCwvNDtDTVlPRTkqIBgTEBMSGSMfHyckIR0iJSszP0hVTEA0JhwRCwUEBgwZGBgdFRMQFhwjLThHUkc6MCcXFQT++/kBERIWEQcFBw0ZHyk1QVFGOS0mHRL/+fLw8fUNDfn5+v8HESAoNEBRST0yJxQK/+vw7Q4XCgoW8fL7BhEcKzVBVEg9MyodCvDr8e8MGAcHF/Py+wcTHi04RFdLQDUoGA4D7fXvDBcHBxUN9f8SFSEtO0ZTUEU5KxwRExD68w0TCQnr8/AFDyAmMj5NWVRIPjEjGQ8IAfv49fXz+P8GDxkmMTtGU19YTkM2KiAdFQkDAP78ABAKER8kLTlETVhiYFZKPjIoJBgSFQsKFA4SGx0pLjQ8SVJcZmheUUQ7MjAmHh8ZGBwcICElMDI6RE9YYWpwZFlOREA6MCwsJyclJSopLTc4QEhUXWZxeW1jWlJMRT46NTEyLS0yMjY+QUhSW2Rrdn93bmZeVk9KRj46Ozc3OztBR0lRWGNsdH1/f3pxaGBZU05IRUVCQkVGSVBVWWJrc3x/f39/e3JoYl1YU1FQTE5QUFNaXWNsdHx/f39/f397c2xoZF9bWlhYW1tgZWhudX5/f39/f39/f395c25pZ2ZkZGZnanB0e39/f39/f399eHNwcG1raWdmZmZoaW1vcnZ6f39/f395cmtnZGNiY2FeXV1dYGFkZmlscHV7f395b2dfW1hVVldZV1ZWV1hbXF5hY2dscXl/b2VdVlBMSUhMT1FPUFBSVFZXWFpeY2hveGZbUktGPz4/QURISkdISktOT09RU1hdZm9eUklAOzQxMzU6Pz88PEA/RUZFRklOVF1nWU1CNjIpJicrLjQ0MDA0NTg8Ojs+REtUX1FGOC4pHxocGyQqKiYmKisxMS4wNDpCTlhKPzIoHRYREREZICIcHCIhJSUkJSkyO0VURjkwIRcWBwUGDRcaExMZGBwYFBshKTRATUY5LiISB//7+gEQFQsLFRAOCwwSGScvPElCMiYZDf358u/1CRIEBBEKAf0CChUgMTxIQTIlGBPr9e0WCATv//8ABff0/AcTHzI8SEM2KR8a//UTFAUA7vv78AEQ8fwIEyAtOUpBNCceGe/1ERX+/uv5+e7/EvL+CBshLjxNRDcqIhgE+REU/v7t+Pj6//H1Ag4aKjNAU0k9MCUcCf/17wT/7vr6/AD5ABIWIS88R1tNQDMrHxAG8Pb5/u79/fn/BQ0VHyo2P0tjU0Y8MyYYDhL/+vn5/gAQCBQTGyM0O0RPZlpPRDkrIRgZDAgNCAgICg4YHSArNj9GUl1hVU1BNC4oIhoWFBcQEBcVHyMnLztETldiamBWS0I6NSwpIB0fGBgaHiUnLjhCSlJdaHRrYFZNRjw1MiwmKCIiJyYuMDc+SVJaY25+dGhgWE9FPjs0MDEsLC4xNzxAR1FZYmx1f3txaGFYT0hFPjo8Nzo7O0FESlJbYmlzfX9/eXJqYV1WUEtGRkNDREdNUlhgZGxzfH9/f397dGxmX1tVUlFPT1BTV1thaG51fX9/f39/f393b2pmYV5eW1xdX2Nma3J6f39/f39/eHBraGViX1xbWlpaXF5iZWdqb3V8f399dGtlX1tYWFdVUlFQUVJVV1teYmZrc3p/c2lgWVRQTk1NTEpJSklLTVBSVVhcYmlwempgVE1GREBBQkRDQkJCRUdJSkxPU1hfZ3FgVkxCOzg0Mzc7PT07PD5AQUJDRUlOVV5oV01BODItKScsLjUzMjM0Nz06Ojw/RkxVYE9FOC8mHxweIiYqJycnKCsyMi4yNTpDTFhLQDUmHRUREhQdHxwbGx0gKCgjJyoxOkRQQzYtHxQLBgcKExUSERESFiEdGBsgKDU+Sj8yJRkOBP38ABQMCAcHCQ0YEgwRGCEsOkc/MSUbFf308PQUA//+/gAEFgUABxAcKDVCPDEiEQT57/EH7/z49/f5/RP3+P8TGCUzQTsvHRAD9+YLAu/28vHx8/ftBPP+CxcnMkA+MiQYEeoXB/7s8u3s7O7z6wD3/wsYKTVAPy4gEwb5FwX86vDr6urs8er+9QEOGyk4RUEwIxYS7+8F/Ovv6+np7PDx/v4JFSEtPExGNygbDxD2Bv7t8ezr6/Xy/QAIEh4oNEFUSTsuIRoV/vX/7/Tz7/sABQkDCx0kKjZCV09CNSkdEQcB+/z6//T5CvrsBw8fJi45R1pWST0yKyAVDwsKAPUF+/0BEg0VJCwyPklXXVFGPjUpIxoTFAgEBAMFCRYUHCkxOENQXGZcUkc/Ny0jGxsRFQ0NDxIcHSQwOT9KVWJwZVpPRT41KyUfGxgXFxkcJSYtOD9HUVxoeW1hV01IPjUvLCYnIiYjJy4xN0JIUFllcH90amBYUEZAOzcyLy4uLzI5O0FKUlpibHh/fnRpYFpUS0VAPT06Ojs+Q0ZOV1tjbXZ/f399dGtlXlZRTklJSEhHSk9SWGBmbXZ/f39/f354cGhiXltWVlNTVVhcXmRrcnp/f39/enJraGJbWFVSTk5OTlBQVFhbYWdvdH1/eHBnX1hTUE5LR0dERURISUtNUVZbYmpye21kW1NMR0RDQEA+PDs8PkBDRklOUVhgaHJjWFBGPzs5ODg4NjU0NTc5Oz1ARElOV2BqW1BGOzQwKywtLy8uLS4vNDQ1Nzk/RU1XYlFFPjMpIiAeIyMoKiorLC0tKy8xNDtET1lKPjInHhYUEhccIR8dHh8iJiYiJisyO0dRRTcrIhUMBwkMFRYTEhITFhseGhwgKTE+SkAzJx4MA/z9Aw8LCAYGCAwRFA8RFyArOEQ5Lx8SBfvy8vQFAP38/P7/Bg4EBw4ZJTVAOSwaDv/16gsD/Pf08vL0+P77+f4IFCExQDQmHRfw8BcE/fXv6+np7PD2/u/3BBIfLTs0JhcU/O8T//fu6eTj4+Xq8Pn/9gMRHis8NysfFv0REfvz6uTg3dvh5ez07/cEESAuPDgqHw3/8hPv8Ofh3dLV3uPq8vT+ChooMz87MCQYA/cS+fDn4dzR1tzl7Pz/CRIeMDpHQDInFgn87/ry6+Xf3N/n6gUMDQcTHzlBS0U6LBwRBfv39ff57OcYFRQR9+8UFSEtPUxNQTElGRAHBfoD+/nsFuru9PwSDholMUFQVEc5LiQdFAkB+fTw7+/x9fsDExQfKjZFUltPRDkuIyAQCQH9+fj3+v4DChofJjE9S1hkWk0/NSslGRELBwMCAgQHDRMfIy03QlBdbGFVRz0zLyIcFREODQ0PEhcdKS82QExXZHRoXFBGPTctKSQdGhkZGx0iLDE4P0hSX2t7cGVbUEdBOjIsKSYlJScpLjM8QElSXWdzf3luY1pRTEM+OzUzMjIzODo/R05UXGZxfH9/d21kXldPSkdCQD8/QERIS1JYYGdven9/f396cGhjXWBZVFFQUFJWWmFeY2pzfX9/fnRtZWBZVFBMSEVEQ0NERkpNVFheZm11f3NpYVpTTUdEQD05ODk3PT8/Q0dNU1pjbHZpYFZORkA8OTYyMzAvMDEzNTs9Q0lQWGJrX1RLRDkzMCwrKyknJycqLC8xNjc/RU9YY1ZKQDgtJyIkIyMiISAhIyYnKSsvNTxGT1tPQzYsIhsWFxkaGhsbHB0fHiEjJiszPkdTRzktIhcPCwwOERYXFRUXGxoYFhwiKjM/TD8xJRkNBP//AwsNCggJCw4TEg8SGCEsOUc7LiISBvvz9PsGD/78/f8QCAoGCA8ZJjNANScZE/7y7AsC/Pbz8fH09/0E+/0HEyEuPDEkFgj67gwQ+vLs6Obm6e30+/z0AQ8cKjkxIRIE9u8G+/Lq4+ny8eDk7PT9+P4MHis5LyESBPYMAPXr493q/+3h3eXt9wP8CxkrOTQjFAb4CP3x597X4ufk29jg6fP/AQ0cKjg0JhcJ+/r66OTb09bZ19DV4Oz5AAkVIi8+NyscDv/6+u7k3NXOyc3S3BrwBgMJGio0QD0vIRQG+Pzv8urg2dTUJiEbEPL+ChwsNkJCNCgbDQT+/f4A6x7dJiPd4+v2AQ0fLTdDSTwvJxgPAwgKDA0d4Nzd4enx+wYRITA7R1BEOzAgFQrw9u/o5eLi5erx7v8MFyc0P0pZTUE2JhsRB//48u/t7fDz+f8JEx4sOURQXVNIPS4kGhcJAv36+Pj6/gQKEhwmNEBKVWVaT0Q2LCMaEw0IBQQEBgkOFRwlLztHUlxtYVdMQjYtKR8ZFBEQFhIVGiQnMDhET1lkdGpgVklBOjErJSEfHh0fJSYsMjpDTllibH10aV9VS0Q+NjIuLCsrLC8zOj5GTVdibHV/fXNqYVdQS0Q/Ozk4Ojo8QEdKUlljbHV/f39/dWtjXFdZUUtIRkhJTVJZWV5lbnh/f3pxaGBYUk1HQz88Ojk5PD1CRUtPVV9lb3lvZlxUTEZAOzkzMC8uLi8yNTlARUxTWmZwZ1tRSEA5My8sKCQjIiIkJysuNDtASVNdZ11SRj02LSckIR4dGxobHR8gJCkvNj5IVGFSRjwyKCAbGBYXFRMTFBYYGh0gJSs1P0pYSj4yJx0UDwwODg4MDA0PEBMUFxwiKzZCUEM2KR4TCQMCBAQICQkODA0MCg4SGSMvO0c7LiEZCf/29vn/BQP//wMGDAUECBAbJzRDNSgbDQH16/IF//n29PT2+gD5+v4IFCQyPzMiFAf67Q0D+/Pt6ufo6u/1/fv1AQ4cKjouHxED9RcE+/Hp4+Pt5d/k6vP9+fwKGCc1LyIXAPIV/vPo4N/t+vnj2uLq9QD5CBYkMiwdD//xEfjs4dTf7vn749XV5O/7+QgXJTQxIxcC9O/06NzN2eXt593Q1eD09wANGyg4MSMTBfft8eXZztDY3NnSztrn8AMMFiEqOTgnGQv+8PHr49nSys3LOC8lGg4MExYcKzk6Lx4RBPn19+7k29E3ODQuJiDq9hMXHSs5QDQlGQ0FCgQGFSAoMDQyMNPi7fkVGiAuPEY6LSIaFAXwE+wgJy7N0dfe6PP+FhwkMT9OQDUpHxUC9+3l3trX2Nvg5/D6BBkhLDZEU0Y5LCUbCgD27+nl4+Pm6vH4AgwfJi88SllMPzYrIRIKAfr18e/v8vb7AwwVJC44Q09gVUc8NCodFAwGAP78/P4CBw4WHy01PktWZ1xQRz0yJx8YEg4LCQkLDxMaISk2QEdTXnBkWlBGPjMrJx8bGBYWGBwgJi03QEhSW2d4bmNYUkg/NzEsLSYlJSkuLTI5QEtVW2Vwf3htZVxTSkQ+OTg0MzM0OTpARUxWX2Zwen9/enBnYGleVEtEQkFBQkVLUVljYmlzfX95bmVdVU1GQTw4NTYxNDI1OD1DSE9ZYGp1bmRZUUdAOjUvKyolJCQoKy0wNTxFTFZfbGNZTUY7NC4oIx8bGhgZGh0hKCkwOEJLVmJZTkI5LyghGxcTEQ4NDQ8TFhsgKS45Qk5cUEQ5LiQcFQ8MCQgGBQYJCw4QFRwlLjlFU0c7LyQZEAgDAQIA//8AAgQGCAsSGyUxPUpBMycaDwX8+Pn5+vv7Cf3+/QACCBIeKTdGOC4eEgb67+31BQD8+/v8/wb3+f8KFiMxPjMlFwr+8REH//jz7+3t7/T6//f2AxAdKzkuHxIE9u0H/fTs5uHf4OLn7vb/Cf0KHCY0Kx0O//EK/vPq4dre4+DY2+Ps9v/4BhQiMywaDP3wBPfr4dfb5u3p3tHZ4+36+QQTJTMqGwz9DP7x5NnP2+fx6t/R0dzl7/kHFCMyLh0PAQj67N/UyNbj5eLZzdHe6/38CxooNi8hEgT6+OXc1s3N19jWzzouIRQKBQkYJjczJRcJ+vjs6uLXy8fMOD06LiQc7fsJGCY0OCodDwL6+v4XIi44QUZCOzPW4e/9CxknNz4xIxcKBAcLFSEqNT1Dv8XP2eXyAA0bKTdFNyocDgH0GBskKzTEw8bN1uDr9wQSHy08SzwuIRQI7/Dm3dbRzs7R19/o8v4LFyQyP1FCNSgbDwP58Ojh3Nrb3ePq8vAGEh4rOEZVSDsvIxgNA/vz7uro6Orv9f0FFhsmMj5LXlJDOCwhFw4HAPv39fX4/P8IFxokLztGVGVYTEE2LCYaEw0IBQMEBQkOFB8kLjhDT1psYlVLQDcuJiAaFhMREhMWGyEoMDlDTVljd2pgVUtCPDMtJychICAiJCkuNzxEUFhibn90amFXTklAOjU0Ly4uMDI2O0NKUVlibHd/fnZsY1xlW1FIQj0+PD5BRExUXl1lb3l/dmxiWVFJQz03MzAwLSwtLzI3PkNMVV5ncmtjV01FPTYvKSQiIB4eHyElKjA3QEdRXWlhVkxCODAoIhwYFBIQEBEUGB0kKzM9SVReV0xBOi0mHBUQCwcFAwQFCAsQGB8pMj5KWk5CNywiGBAJA//8+fn6/P4CBwsVHio2Qk9GOi0iGw0D/Pj19PHx8vX3+fwDChUhLjtIPjElGQ0B+PDu8gkGBQUGCvL0+QINGic0QTgtHRAE+O0PBwD7+Pb2+PwCCO/5BhMgLjsxIxUJ++8OA/vz7uro6Orv9f0F8P8NGyg4Lx4QAvQPA/nv5+Dc2dnc4ujx+wb6BxUjMikbDP3vBvrv5NvU0NHMz9Xd5/H99QMSIC4rHQr77f/z5tvQ1dvf3NXK0t3p9v4CESAvKRoL/Pn67N/Sz9rg4d3VysrY5fb9BxUhMCscDv8E9ujayM/Z4ODa0MbM2hf9BQcbKTYuIBED//Pl3NTK09nZ1DVANSgcEQkFGyk3MiQVB//z8One0zYyMTY9Qzgt2+j2BRknNjcrGw4C/P4DHCk2PsJBSEY9ztzq+AYaKTg8LyEXBggLER0qNj+2rrO8xtPg7vsSHSs5QzgqHAr98B0iLjjAubq+xs7a5vMADR8uPUs9MCEQA/fr4NfPycbHytHZ4+76BxMmM0BQQjQnFwsA9eri29bT1Nfd5O33Ag4aKjhHVkk8LiAUCf/27ujk4uLl6vD4AgwXIjI/TF1RQzYrHhQLAvv18vDx8/f9BA0WICs5RlNkV0tAMygfFg8IBAD+/wEFChAZISs1Q05bbGFVSD00KyMcFhIODg4PExceJS04QExYY3ZqXlRIQDcwOS4lHhwcHSElMTE5Qk1WYW1/c2lfVExEPUI4MSwrKy0vMzw/RU5YYWt2f350aWBZYVZMRD07Ojo7PUFIUFpaYm13f3ZrYllPSUA6NTAvLissLC4xNTxBSVNbZHBsYlZOQzozLSciHiAaGRogIyguND5GTltnYFVMQDkuJh8ZFBANCwsMDhIcISoyOUZSXVZLQDkrIhkSDAYB//39/v8FCxIfJDI+SVhOQTYrIBYNBf748/Hv7vD0+P8GEB4pMkFPRTksIRYLAfnx6xUSEBAT6u7z/AUSHi86Rj0wJBgM//bsEgsHBAICBAgM7fL+CRckNEI3KRwPA/fsDAT++fXz8/b6/wYO9gMQIy45MSIVCPruCgD48Orm5OXn7PL6A+/wEhwqNiwdDwH0DO717OPd1s3N197l7vgS7hIYITIpGgv87hLu6+HX09vY08rR2ePu+vL/FyMxKhgJ+uzw6eLX0t3l5d7Txs7Z5evxARAfLigZCvsQ7uPbztfk7u/l2MrH1uX5/QgVIzMqGw3+8evf1sjW4+3t5Nc3OSocCAkRGCUxLR8QAvPo4NvR0dwdGSQuOzsuIxbrERklMzEjFAb47/Pm2jMwKiovOEJANdTg7A8XIzE1KhoMAv0BFCIvPDjIPENMvMnX4vQQGCUzOy4hFw8MDhQkMT5KrKastsLP3OnuExsnNEM0JBsT7+zeLDZCt7OzuMDK1uLp7hMZKjhHOi0fFO/s6N3TysTBwMXM1d/q7BAXIy88TD4xJhsI7vHn39fSz8rT2eHq9PETHSg0QlJFOSwhGQb88+vl4N/f4ebt9f4SGiMwPEhaTT41KhsZCP/58+/t7vD0+gEKGSItNUNQYVVJPjEqIBQNBgH+/Pz+AgcOFiMrNkFMV2leUkc+NCshGhQPDQsLDRAVGyYrN0BKVmBzZ1xSST84LjUpHhsZGhwfIy4vOUFMVF9qfHFnXVJMRDs+NC0qKCgrLTE5PUZNVmBpdH98cmdgWF5TSUE7ODk3OTxARE5YWmJrdX50amBXT0dAOTQvLCooKCgrLjI6P0dRWWRua2JVS0I6MywmIR0bGRkaHB8kKjI8RE5ZZmBVSkA2LSUeGBMPDAoKCw0RFh4lLzlEUVxWS0A5KyEZEQoFAP37+/z+/QkRGSQuO0dXTUE2KyAWDAT99vLv7Ozt8PX8BA8ZJjI/TEU5LCEVCgD37+kUERAQEhXn7/kEER4qOEY9MCQXDAD16xELBgP//wMHDBPw/AkWJDI/NikcDwP26wwE/fj08vL1+f4GDvUCEB4rOTAiFQf67goA9/Dp5ePj5uvx+QIN/AoYJjMrHQ8B8wwA9evi29HMyNLd5O33AvcEEiEvKBoL/PAD9+vg1tfb29bI0Nji7fr6AA4dLCcYCfr3/O/i1tTh6e3i1sjN2OXy/wEQHy4oGQr7BPbo2s3Z6Pj86dvMx9Xk+v4IFiMxKhsN/v/y49XK2ecGChgmNTorHQkKBBMiMS0eDwH+7+HZz9PfFRkdLDk+MSUY8wIRIC8wIhQF/u/05Ck2LSgnKzVBRjrV5PMCESAvNScZDAD8AhcmNDs2ysa/tbrI1+b0AxIhMDstIBEDDBAbKTZEUqGiqrTAytvp+AYUIzJBMiQVB/ns3zDHvLSvr7a/ydXi7/wLGSc1RTYpGw0A8+fc0cnDvbnDy9Te6vYDER4sOko9LyEVCPzx593W0cjD0djg6fP/CxclMkBRQzYpHREG/PLq5ODd3eDl7PX+CRQgLDlGWUs+MiYbEAf/9/Lu7Ozv8/kBChMeKTVBT2BTRzsxJhwTDAUA/fv7/gEHDhYeKDM+SlZoXVFGOzEoIBkTDgsKCgwQFRsiKzM+SFRfcmZbUEc9NS0zJx0aGRkbHiMsLzdASlNeaXtwZVxSSUI6PTMsKSgoKiwxNjxDTFVfaHN/enFnXlZdUkhAOzc3Nzk7P0RNV1hhaXR9dmtiWU9JQDo1MC8uKCwsLjE1PEFJU1tlcGxiV05DOzMtJyIeIBoZGiAjKC40PkZQW2dgVUxAOS4mHxkUEA0MCwwOEhwhKjI7RlJeVktAOSsiGhIMBgH//f3+/wULEh8nMj5JWU5BNisgFg0F/vjz8e/v8PT4/wYQHik1QU9FOSwhFgsB+fHrFRIQEBPq7vP8BhIeLztHPTAkGAz/9uwSCwcEAgIECAzt8v4KFyQ0QjcpHA8D9+wMBP759fPz9vr/Bg72AxAjLjsxIhUI+u4SAPjx6ubk5efs8voD7/ASHCo2LB0PAfQT7vbs493Xzc3Y3uXu+BLtEhgkMikaC/zuEu7r4dfS2NjTytHZ4+7w8v8XIzEqGAn67PDp4tfS3eXl3tPGz9nl6/EBEB8wKBkK+xDu49vO1uTu7uXYysfW5fn9CBUjMyobDf7x69/WyNbj7e3k1zc5KhwICREZJTMtHxAC8+jg29HR2x0dJC47Oy4jFusRGSUzMSMUBvnv8+baMzAqKi84QkA11ODsDxcjMTUqGgwC/QEUIi89Ocg8Q0y8ydfi7RAYJTM7LiEXDwwOFCQxPUqspqy2ws/c5e4TGyc0QzQnGxPv594rNkG3s7O4wMvW4unuEx0qOEc6LR8U7+zo3dPKxMHAxczV3+rsEBcjLzxMPzEmGxHu8eff19LPy9PZ4er08BMeKDVCUkU5LCEZBvzz6+Xg39/i5u31/hIaIzA8SFpNQDUqHxkIAPnz7+3u8PT6AQoZIi03Q1BhVUk+MyocFA0GAf78/P4CBw4WIys2QUxYaV5SRz40KyEaFA8NCwsNEBUbJi03QEpWYHNnXFJJPzguNSkeGxkaHB8jLi85QUxUX2p8cWddVExEOz40LSooKCstMTk9Rk1WYGl0f3xyaWBYXlNJQTs4OTc5PEBETlhaYmt1fnZsYllRSUM9NzMwMC0sLS8yNz9DTFVeaHJsY1dNRT02LyklIiAeHh8iJSowN0BIUV1pYVZMQjgwKCIdGBQSEBARFBgdJCszPUlUX1dMQTctJhwVEAsHBQMEBQgLEBgfKTI+SlpOQjcvIhgQCQP//Pn5+vz+AgcLFR4qNkJPRjouIhsNA/z49fTx8fL19/n9AwoWIS07SD4xJRkNAfjw7vIJBgUFBwry9PkCDRonNEE4LR0QBPjtDwcA+/j29vj8Agjv+QYTIC48MSMVCfzvDgP78+7q6Ojq7/X9BfD/DRsoOC8eEAL0DwP57+fg3NnZ3OLp8fsG+gcVIzIpGwz97wb67+Tb1NXY1s/V3efx/fUDEiAuKx0S+/T/8+bb0NTb393VytLd6fb+AhEgLykaC/z5+uzf0sfZ4ODd1crK2OX2/QcVITArHA7/BPbo2szA2eDg2tHGzNsX/QUHGyk2LiARA/7z5dzUytPZ2Sw1QDQoHBEJBRspNzIkFQf/8/Dp3tM2MjI2PUM4LSXo9wUZJzY3KRsOAvz+AxwpNj4+QUhGPcvc6vgGGik4PC8hFwYICxAdKjU/SVCzvMfT4O77Eh0rOUM4KhwK/fAdIi43wLm6vsbP2ubzAA0fLjxLPTAhEAP36+DXz8nGx8rR2ePu+gcTJjNAUEI0JxcLAPXq4tvW09TX3eTt9wMOGio4RlZIPC4gFAr/9u7o5OLj5erw+AIMFyIyP0xdUUM2Kx4UCwL79fLw8fP3/QQNFiErOUZTZFdLQDMoHxYPCQQA/v8BBAoQGSErNUNOW2xhVUg9NCsjHBYSDg4ODxMXHiUtNkBMWGN2al5USUA3MCkkJR4cHB0hJSsxOUJNVmFtf3NpX1RMRD05MjEsKystLzM4P0VOVmFrdn9+dGlgWWFWTEQ9Ozo6Oz1BSFBaWmJtd395bmVdVU1GQTw4NTYxNDI1OD1DSE9ZYGp1bmRZUUdAOjUvKyolJCQlKy4wNTxFTFZfbGNZTUY7NC4oIx8bGhkZGh0hKCkwOEJLVmJZTkI5LyghGxcUEQ4NDQ8TFhsgJi45Qk5cUEQ5LiQcFQ8MCggGBgYJCw4QFRwlLjlFU0c7MCQZEAgEAQIB////AgUGCAsSGyUxPUo/MycaDwX8+Pn5+vv7Cf3+/QACCRIeKTdGOC4eEgb68O31BQD8+/v9/wb3+QAKFiMxPjMlFwr+8REH//jz7+3t7/T6//f2AxAdKzkuHxIE9u0H/fTs5uLg4OLn7vb/Cf0KHCY0Kx0O//EK/vPq4dre4+DY2+Ps9v/4BhQiMykaDP3vBPfr4dfb5u3p3tHZ4+76+QQTJTMqGwz+DP7x5NnP2+fy6t/R0dzl7/kHFCMyLh0PAQj67ODUyNbj5eLZzdHf6/38DBooNi8hEgT2+OXc1s3N19jWzzouIBQKBQkYJjc0JhgK+vjs6uLXy8fMOD06LiQc7fsJGCY0OSsdDwL6+v4XIi44QUZCOzPW4e/9CxknNz4xIxcKAwcLFSEqNT1Dv8XP2uXyAA0bKTdFOCocDwH0GBskKzPEw8fN1uDr9wQSHy09SzwuIRQI7/Dm3dbRzs7R19/p8v4LFyQyP1FCNSgbDwP58Ojh3dvb3ePq8vAGEh4rOEZVSDsvIxgUA/vz7uro6Orv9f0FFhsmMj5LXlJEOCwiFw4HAPv39fX4/P8IFxokLztGVGVYTEE2LCYaEw0IBQMEBQkOFBwkLjlDT1psYlVLQDkuJiAaFhMSEhMWGyEoMDlDTVljd2pgVUtDPDMtJychICAiJCkuNzxFUFhibn90amFXTklAOjU0Ly4uMDM2PENKUVlibHd/f3ZsY1xmW1FIQj0+PD5BRExUXl1lb3l/enFpYFhSTUhDPzw6OTo8PUNFS1BVXmVveW9mXFRMRkA7OTMwLy4uMzg1OUBFTFNbZnBnW1FIQDkzLywoJSMiIigsKy80O0BJU11nXVJGPTYtJyQhHh0bGhsdICIkKS82PkhUX1JGPDIoIBsYFhcVExMUFhgbHSAlKzU/SlZKPjInHRQPDA4ODgwMDg8QExUXHCIrN0JQQzYsHhMJAwIEBAgJCg4MDQwLDhIZIy87RzsuIRQJ//b3+f8FA///AwYMBQQIEBsnNEM1KBsNAfXr8gX/+fb09Pb7APn7/ggUJDI/MyIUB/ruDQP78+3q6Ojq7/X9+vUBDhwqOi4fEQP1FwX78enj4+3l3+Tr8/35/QoYJzUvIhcA8hX+8+jg3+36+OPa4ur1APkIFiQzLB4P//ER+O3h2N/u+vvj1drk7/v4CBclNDEjFwL07/To3NPZ5e3n3dDV4PT3AA0bKDgxIxMF9+3x5drQ0Njc2dLO2ufwAwwWISo5OCcZC/7w8erj2dLIwMI4LyUZDQwTFhwrOTosHhEE+fX37uTb0Tc4NC4mIOr2ExcdKzpANCUZDQUKBAYVICjQNDIw2OLt+RUbIC48RzotIhoUBfASFCAn0s3R197o8/4WHCQxP05ANSkfFQL37eXf2tjY2+Dn8PoEGSIsNkRTRjksJhsKAPfv6eXj4+br8fkCDB8nLzxKWUw/NiwhEgoB+vXx7+/y9vsDDBUkLjhDT2BVRzw0Kh0UDAYB/vz8/gIHDhYfLTY+TFZnXFBHPTMnHxgSDgsJCQsPExohKTZAR1NecGRbUEY+MysnHxsYFhcZHCAmLTdASFNbZ3huY1pSSD83MSwoJiUlJiktMjlAS1NbZXB/eG1lXFNKRD45NjQzMzQ2OkBFTFZfZnB6f396cGhgV1FUS0RCQUFCRUtRU1piaXN9f350bWVgWVVQTEhFRENDREdKTlRYX2ZtdX9zaWFaU01HREE9Ojg5OT0/P0NITVNaY2x2aWBWT0ZAPDk2MzMwLzAxNDU7PURJUFhia19US0Q5NDAsKyspJycoKiwvMTY4P0VPWWNWS0A4LSciJCMjIiEgISQmKCksLzU8Rk9bT0M2LCIbFhcZGhobGxweHx4hIyYsMz5IU0c5LSUXEAsMDhEWFxUWFxsaGRYdIiozP0w/MSUZDgT/AAMLDQoJCQsOExIPEhghLDlHOy4iEgb78/T7Bw/+/f3/EAgKBggPGSYzQDUnGRP/8uwLAvz28/Hx9Pf+BPv9BxMhLjwyJBYI+u4MEPrz7Ojm5+nt9Pv89QEPHCo5MSETBPbvBvvy6uPp8vDg5Oz0/fj+DB4rOS8hEwT2DP/16+Pd6v/t4N3l7fgD/QsZKzk0IxUG+An98efe1+Ln5NrY4Onz/wENHCo4NCYYCfv6+ujk3NTW2dfQ1eDs+QAJFSIvPjcrHA7/+vru5NzVzsnN0twa8AYDCRorNEA9LyIUB/j87/Hq4NrU1CYgGxDy/gocLDZCQjQoGw0E/v3+AOse3SYj3uPr9gENHy03Q0k8LyYYDwMICgwNHeDc3eHp8fsGEiEwO0dQRDswIBUK8Pbv6eXi4ubq8e7+DBcnND9KWU1CNiYbEQf/+PLv7e3w8/r/ChMeLDlEUF1TSD0uJBoXCQL9+vj4+v4EChIcJjRASlVlWk9ENiwjGhMNCQYEBAYJDhUdJS87R1JcbWFXTEI2LikfGRQREBYSFRskJzA4RE9ZZHRqYFZKQTozKyUhHx4dHyUnLDI6Q05ZYmx+dGlfV0tEPjYyLiwrKy0vMzo+Rk1YYmx1f31zamFXUEtEPzw5ODo6PEBHSlJZY2x1f39/f3VrY1xXWVFMSUZISU1SWVleZW54f39/enNrZF9cWFVSUE9OTlFUWFtcYWdtdH1/eHBnX1hTUE5LR0dERURISk1QUVZbY2pye21kW1NMR0RDQUE+PDs8PkBDRklOUVlgaXJjWVBHPzs5ODg4NjU0NTc6PD5ARElPV2BqW1FHOzQwLCwtLy8uLS4vNDQ1ODk/RU1YYlFFPjMpIiAeIyMpKykqKy4yMC8yNT5ET1lKPjInHhsUEhcdIh8eHh8iJiYjJys1O0dRRTcrIhUMBwkMFRUTEhIUFhseGhwgKTI+SkAzJx4MA/3+Aw8LCAYGCAwRFA8RFyAsOEQ5Kx8SBfvy8vQFAP38/P7/Bw4EBw8ZJjVAOSwaDv/16gsD/Pf08vL1+P77+f4IFCIxQDQmHRfw8BgE/fXv6+nq7PD3/+/3BBIfLTs0JhcU/O8T//fv6eXj4+bq8Pn/9gMRHiw8NysfFv0REvvz6uTg3t7h5ez17/cEESAuPDgqIA0A8hPv8Oji3dvb3uPq8vT+ChooMz87MCQYA/cS+fDn4d3b297l7Pv/CRIeKjpHQDInFgn97/ry6+Xf3N/n6gUMDQcTHy48S0U6LB0RBfv39fb57OgYFQ0R9+8UFiItPUxNQTElGRAHBfoD+/nt6+ru9PwSDholMUFQVEc5LiQdFAkB7/Tw7+/x9fsDExQfKjZFUltPRDkuIyAQCQL9+fj4+v4DCxogJjE7S1hkWk1ANSslGRELBwMCAgQIDRMfIy03QlBdbGFVRz0zLyIcFREODQ0PEhcdKS82QExXZHRoXFBGPTctJiQdGhkZGx4iKDE4P0hSX2t7cGVbUEdBOjIsKSYlJScqLjM8QUlSXWdzf3luY1pRTEM+OzUzMjIzODo/R05UXGZxfH9/eG1kXldPSkdCQD8/QURIS1JYYGdven9/f396cGhjXVdST01MTE5QU1leY2pze39/f394cWtoZWJfXFxaWlpdXmJlZ2pwdXx/f310a2VfW1hYV1VSUVBRU1VXW15iZmtzen9zaWBZVFBOTU5NS0lKSUtNUFJVWFxiaXF6amBUTUZEQEFCRENCQkNFR0lKTE9TWF9ncWBWTEI7OTUzNzs9PTs9PkBCQkRGSU5WXmhXTUE4Mi0pJywvNjQzMzQ3PTo6PD9GTFVhT0U4LyYgHB4iJioqJycoKzMyLjI1OkNMWEtANSYdFRETFB0gHBsbHSAoKCQnKjE6RFBDNi0fFQsGBwoTFRIRERMWIR0YGyAoNT5KPzIlGQ4E/fwAFAwIBwcJDRkSDREYIS06SD8xJRsV/fTw9BQD//7+AAQWBQEIEBwoNUM8MSIRBPnv8Qjv/Pj39/n9E/f4/wwYJTNBOy8dEAT35gsC7/by8fHz9+0E8/4LFycyQD4yJBgR6hcH/+zy7uzs7vPr//f/CxgpNUA/LiATBu8XBfzq8Ovq6uzx6v71AQ4bKTZFQTAjFhLv7wX87PDr6urs8fD+/gkVIS08TEY4KBsPEPYG/u3x7evr9PL8AAgSHig0QlRJOy4hGhX+9f/v9fPv+wAFCQMLHSQqNkJXT0I1KR0RCAH9/Pr/9PkK++wHEB8nLjlHWlZJPTIrIBUPDAoA9QX7/QESDhUkLDM+SlddUkY+NSkjGhMUCAUEBAYJFhQcKTE5Q1BcZlxSRz83LSMbGxEVDQ0PEh0dJDE5P0pVYnBlWk9FPjUrJR8cGBcXGRwlJi04QEdRXGh5bWFXTUg+NS8sJigiJiQnLjE3QkhQWmVwf3RqYFhQRkA8NzIvLi4wMjk7QUpSWmJseH9+dGlhWlRLRUA+PTo6PD5DRk5XXGNtdX9/f310a2ZeV1FOSUpISEdKT1JYYWZtdn9/f39/f3hwaGJeW1ZWU1NVWFxeZGtyen9/f39/fXhzcG5tbGloZmZmaGltcHJ2e39/f39/eXJraGVjYmNhXl1dXmBhZGdpbXF2fH9/eXBnYFxYVVZXWVhWVldYW11eYWRnbHJ5f29lXVZRTEpITE9SVlRUVldaWllbXmJqcnhmW1JLRj8+P0FESEpISEpLUFBPUVRYYGdvX1JJQDs0MTM1Oj8/PDxAP0VHRUZJTlRdZllNQjcyKSYoKy40NDAxNDU4PDo7PkVLVF9RRjguKR8aHBskLSwmJi0uMjIuMDQ6Qk5YSj8yKB0WERERGSAiHBwiISUlJSUpMjxFUUY5MSEXFgcFBg0XGhMTGhgcGBQbJTA0QE1GOS4iEgcA+/oBEBULCxURDgsMEhkoLzxJQjImGQ39+fLv9QkTBAQRCgH9AgoVIDA8SEEyJRgT6/XtFwgE7////wX39PwHEyAsO0hDNikfGv/1ExQFAO77+/ABEPH8CBMgLTpKQTQnHhnv9REV/v7r+fnu/xLy/ggbIS88TUQ3KiIYBPkRFAL+7fn5+v/x9QIOGiozQE1KPTAlHAn/9e8E/+76+vwA+QASFiEvPEdTTUAzKx8QBvD2+f7t/f35/wUNFR8qNj9LV1NGPDMmGA8S//r5+f4AEAgUExskMjtET1laT0Q5KyEYGQwIDQgICAoOGB0gKzY/RlJeYVVNQTQuKCIaFhQXEBAXFR8jJy87RE5XYmpgVktCOjUtKCEdHxkYGh4lJy44QkpSXWh0a2BWTkY8NTIsJigiIicmLjA3PklSWmRuf3RoYFhPRT47NDAxLSwuMTc8QEdRWWJsdX97cWhhWE9JRT47PDc6OztBREpSW2Jpc31/f3lyamFZU1BLRkZDQ0RHTVBVW2RsdHx/f39/e3RsZV9bVVJRT09QU1dcYGVudX1/f39/f39/eG9qZmFeXltcXV9jZmtyen9/f39/f39/fHl2d3h1c3JxcnR2eXt+f39/f39/f395dHBsamttbWxqa2ttbnFzdnh8f39/f352cGllYF5fYWRlZGNkZWhqbG1vcnZ8f391bGRfWVRTVFVYXl9dXV9gY2VkZmhscnl/bGNaVExJR0hKTlJVUlJVVldbWltdYmhud2ZbUktEPjw9PkJISUZGSUpNUE9QUldeZW5eUkpCODMyMjM1PT87Oz8/Q0VERUhNVF5nWExBNy8qJSYoKjI3MzM3NTk4ODs+Q0xUYFNHOzArIB8bFx8mLSgoLS0xLCwvNDtETVlQRTkqIBkTEBMSGSMfICckIR0iJSwzP0hVTEA1JhwRCwUEBgwZGBgdFhMQFhwjLjhHUkc6MCcXFQT++/kBEBIWCAcFCA0ZHyo1QlFGOi0mHRP/+ezw8fUNDfn5+v8HESAoNEFRST0yJxQK/+vw7Q4YCgoW8fL7BhEcKzVBVEg+MyodC+/r8e8MGAgIF/Py+wcTHy04RFdLQDYoGA4D7fXvDBcICBUN9f8SFSEtPEZTUEU5KxwRExD69A0TCQnr8/AFDyAmMj5NWVRIPjEjGQ8IAvv49fTz+P8GDxkmMTtGU2BYTkM2KiAdFgkDAP78ABAKESAkLTlETlliYFZKPjIoJBgTFQsKFA4SGR0pLjQ8SVJcZmheUUQ7MjAmHh8ZGR0cICImMDI6RE9YYWtwZFlORUA6MCwtJyclJSopLTc5QEhUXWdxeW1jWlJMRT46NTEyLS0yMjY+QUhSW2Rrdn93bmZfVk9KRj46Ozc3OztBR0pRWGNsdH1/f3pyaWBZU05IRUVCQkVGSVBVWWJrc3x/f39/e3JpYl1YU1FQTE5QUFNaXWRsdHx/f39/f397c2xoZF9bW1hYW1tgZWhudX5/f39/f39/f395c25qZ2ZkZGZnanB0e39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f314dXN0dnh8f35+f39/f39/f39/f39/fnhybGhoaWptcnRycnR2d3p5e31/f39/fXNtZ2FdXF1fYmZpZ2dqa2xwb3Bzdnt/f3VsZF5WUlJSU1ZbXltbXl5iZWRlaGtweH9tY1xUTEdHR0dLT1RQUVRXWlpaXFxhaG93ZVtSS0M+PDw8PkNKSEhLTE1NTU9SV11mbl9USkQ8NDMwMDM3Pj09QkFBQEFESFBYYmhcUEY9NCwmJSckKjA0NDc2MzM2OT5FT1phWEs/NC0kHhsZFx0jJygoJyUnKzE2PkhSXlNIOjAmIxcSEBIQFRgZGhkXHiEmLjdCTVpPRTwwKBkQCxEFAwcJCgsKDhMYICkzPkpWTkQ7LyMWDhEA/Pv5+/z8AAULEhwmNT1JVVFGOikfFRUT/vjz8fDw8/f+BxcbJzJASVZTSDwuIBoZBf738+/s7O/0/gcRICgzP01YVEk8LSIYGxIB7Pfz8PDy+O8KFCIsNEJPW1hLPjEmIB0NB+3++vf37v0QDRgiMTpGUl9dUEM4LCYjEw0VBP/9/u8GDBwfKTZCS1dkYVVJPTMsJhsUGQwIEQgTERgkKzM9SVVfa2dbT0M8NC0iHB8VExgTFSEjKjc8RlFdZ3BuYldLQj01LCYoHh4kHyUuLzZARU5XYmt0dWleVUtHPzg0MywsMC4xNzlBRktTXWhxen1xaF5YU0pEQT86Ojo6Pj5BSU9UWmNud39/fHJrZF5WUE5JR0ZCREdGSlFWW2JsdX5/f39+d3BpY15ZU1FPTUxQUFVaX2Nqc31/f39/f396c2xoYF1ZWVdXWlpeY2huc3x/f39/f39/f3x1cWxnZmRjY2VlaG5yd35/f39/f39/f39/f3x3c3FvbW5wcXR5fX9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f359fn9/f39/f39/f39/f39/f39/f39/enVycXJ0dnp+fHx+f39/f39/f39/f39+d3FrZ2dnaWtvc3Bwc3R2enl6fX9/f399dW5lYF1cXFxfYmhmZmhqbG9ub3J1en9/dGxlXFdSUlFRU1dcXV1fYWNiYmRoa3F3f25lXVVNSkZFRkdKT1JSVldZV1ZYXGFob3dpX1ZORT89Ojw7PkJHSElISEhKTlJYX2lxZFlPRz03NDAvMDI0ODk6OTs9P0NKUFdhbF9TST45MiomJSYlJyorKysuMjU6QkhRWmVdUUQ8NCwjHhsaHBkbHBwgJCcrMjlETFZhWlBFOy0lHBcTERAKDA0VFBkeJCs0PkpVX1lPQjctIh4YDAoHBgUFBwoRFx4nMT1JVF5bUUA0KiQjEQsQAf/9/gADEhMbKTE8R1VgXVFCNSsnIBILFgH9+/vvAggTHCY0PUhUYl1QRDcwKiIVDhQF//7/7gUKGh4oNT9LV2NeUkU6MC0kGhMXCwcEBBMKEB8kLThETVllYlZJQDkzKR8dGxEUCwsWERcjJzE7SFReamhcUEU+OCwmICAZFRITGhkgJjM4Qk1cZnFtYFZMRT80LSsoIB0hHR8qLDM8RExWYW14dGheVU5HPDYzLyooKygqMzY8RVBXYGp1f3twZV1WTkU/PTo0NTc0Nj5ESE9YXmZxe39/eG9nYFhRTElGQkFEQ0VKTVRbX2Vtdn9/f394cWtjXVhVUk5NT09RUlZbYmdtdX1/f39/f313b2lkYl1cW1lZXFxeZGpudHt/f39/f39/f3t3cmxnZmRiYmVmaG5zeH1/f39/f39/f39/f3t1cnBubGxvb3J3fX9/f39/f39/f39/f39/f3x7eXh4ent9f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fXx8fn9/f39/f39/f39/f39/f39/f395dXJxcXFzdnt7e31/f39/f39/f39/f393cGtoZ2ZmZ2tvcnF0dnh3d3h8f39/f352b2ZhXltaW1xeYmZnaWpqaWttcHV8f394b2hgWFRRUFFQUlVYWVxcXF1fY2Zrcnp/cmlgWFBKSUVERUZJS0tOTk9RVFddZWlxe2xhWVJIQkA7Ojs6PD4+QUFDRkhNVFxia3RnXVNMRjs2NDAvMzIyMTQ1OTs/REtUXGRvZltRSD43LyonJiUkJyYqKSwxNz1ETlhga2VbUEQ5MS0oIR0cGxoaHB8mKTA5P0lSX2pjV0tBNzEsIBodFRIRERkXGyUqMzxGUl1pYlVJPzczKx8ZGhAMCwoXERYjKDA+RlFcaWNXSkA5NSkfHhoPEwoKFxAVJCgxPUlSXWllWU5EPTYpIiAWEw8NDRcSGCQsMz1KVF9rZlpPRD85LSYmIBccGBEcFxwmMDZATFhjbmldU0tEPDIrKiIeIBgZHyEiKzY8RFBcZ3FvZFpRTEI4MjArJSYiHyQpKjA7Q0tVYG14dWlfV1BIPzk3MC0uKygsMjM5Qk1UXGZzf3pwZl9ZUEhCPzo1NTUyNDxARExVXmZwen9/eG9nYFdPSUhBPz8/PT9FS09WX2lweX9/f393cGhfWVRSTUlKS0hLUFdaYWhwd39/f39/f3pyamRgXllWVlhXWFxhZ21yeH5/f39/f39/fHVwbGplY2JkZGZoam50fH9/f39/f39/f39/fHh2cm9vbm5xcnN4fX9/f39/f39/f39/f39/f3x7eXd3ent9f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f399fHt7fH9/f39/f39/f39/f39/f39/f3p1c3BvcHFzdnp9f39/f39/f39/f39/f3lybWlmZWVlZ2lsbW9vcXJzd3p/f39/f3pxaWRgXVpaWltdX2BhYmRmaGxwdXx/f3tya2FcWFRRT1BPUVJSVVVYWl5hZm50e392a2RdVk5JR0VERUVGRkhKTU9UWF1kbXV+cWdgWFBIQ0A8Ozo5Ozs+PkFGSlFWXWdweHBmXFFIQzw4NDQxMC8wNDQ3PkJJT1hgbHZvZFlORT87Mi4tKCklJiwqLjc8RExUXWd0a2BWTUU+Ni4rKSIgHx8lJCgyNj9JUlxncmpfVExFQDUtKSIeIBkZIh8kLjQ8R1JbZnFrX1VNRz4zLC0lHiAZGSAiIy02PUZSXWhybmNZUUo/Ni8uJCEjGxsiICYrOEBHU19pdG5kW1NNRDs2MyglJx8gJSgpMTtBS1VhbXdyZ15XUUU+ODgvKy0mJiotLzQ/SFBZZHB7d21kXVVMREA9NTI0Ly0xNjc7RU5VXmh0f31zamJbUUtGRDw5OjY0NT09REpVXWVveX9/eXFpYlhSTktEQUI/PUBGSUxTXGZudn9/f395cmlhWlZTTEpKSUhJT1VZXmZvd39/f39/f3pxaWNfXFZUVFRSVFhfZGlweX9/f39/f39/enJsaWZiXl9gXWBjaW9zen9/f39/f39/f399eHVybmtrbGtsb3V5f39/f39/f39/f39/f39/fnp3d3l4eXx+f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f357ent6fH5/f39/f39/f39/f39/f39/fXh0c29vb3Byc3R1d3l6fX9/f39/f39/fHVvbGlmZGVlZmdnaWptb3N1en9/f39/fXZuaWNfXF5eXFxbW11fYWVobHF4f39/f3hxaWFbVlVTUlBQUFBSUlVaXmRpb3d/f310a2JbVFNNSUlGRURFSElMUlVbYWlxen97cGVdVlFMRUFBPTw6Oz9AQklOVV1ka3V/eG5iWlFNR0E7ODY2MjM3NztCSU9XYGhyfXVrYlpSS0I8OTYwMSwtMjM2PUVLU15ncXt0aWFZU0pAOjgwLS4oKC4tMzhDSlJcZ3B7dGpiWlRKQj05MCwuKCgtMDE6QkpSW2dyfHhuZV5USkM+OzIvMS0qLzIzOUJMU15odH55b2dgWE5GQz42MjQuLjI2NjxGUFZgaXV/fHJqY1tSS0dEPjs7NjQ4OztBSVNbY215f393b2lfV1BNSEI/QDo6PUJDR09YYWlyfX9/fnZvZl5XU09JRkdDQERJS05UXmdvd39/f39/dWxkXVpWUU1OSklKUFRXXWVud35/f39/f3tza2ZiXllXVlRSVVleYWZudn9/f39/f39/e3NuamZhX19eXV5iaGxxd39/f39/f39/f398dnRwa2lpaWdpbHJ4fH9/f39/f39/f39/f39+enV0dHRzdHh8f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f38="},"Spine1":{"min":[-0.1861,-0.0666,-0.153],"dims":[26,18,24],"data":"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6O0YGxgcIy87R1NhTEQ9Mywq2djX2NrX294lJSEiKDRATFhmf39/f39/f39/f39/f39/f39+fX1+f39/f39/fXt3d3d4e35/f39/e3d0c3N1eH1/f395dHFubGtsb3F1eXt0b2tqaWlrb3R8f3hxbGhkYmFhYmNjZGRjY2FfXmBhZmx0eXFrZF9aV1ZVVlVVVVZWVlZVVVVZX2VsdW1lYFhRTktJSUhJSkpKSkpLTU5SWWFocmlgWVBLRUJAPj08PT0+P0BDREdLUltjb2heVEtDPjk1MzExMDEyNTY6PkFHTlVebmVZUEc/NzItKignJygqLDA0Oj9ETFNcbGFXTUQ7MywmIiAfHyEkJzAxNzxCSVNcZ15USkA2LiYhGxkYHhwgJC0vNTxBSFJbYFhPRTwxKSEbFhQUFRodIyouNDhASVJbWVFJQDYtJB0WEA8PEhYbISYsMjk/SFFcVEtAODAnIRcSDAsMDxQZHyQqMThASVNdUUg9MykhGRMNCgoKDRIXHSMpMDhBSVRfUUc8MiohHBULEggUFA8VISEoLzlCTVdjU0o+NS4oIx8dHBgdHRkeJiYnMDpFTlpoV09EPDYyLiwr19oqKSYpLy0uNDxIU19sf39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fn5/f39/f39/f3x5d3Z2eHp9f399eXZ0dHV2en9/f399d3JvbGtqamlqa2tra2tqamtucnh/f352cGpmYmBfXl5eXl5fX19gYWJma3F4f3hwamNeWldVU1JRUlJTVFVXWVpeZGtzfXRrY1xWUU1KSEZGR0ZISkxOUVVZX2VvenJnXldQSkVBPj08PD0/QUNHS09WWmJqeG5kW1NLRD88NjQzMzQ3Oz1BR0xSWV9odmxiWE9HQTk2MC0tLS8yNjw/REpPVl5ocmheVEpCOjMuKScmKCsvMjg9Q0lPVV5na2JZT0Y9NS4oJCIiIygsMTY8QUdNVF5nZFpSSUE4MCgkHx0eICQpLjQ6QEZOVV1mX1VKQjoyKiceGxofHiInLDI4PkVNVV5nXVJIPzQtJh8cHRkZGyAlKjA3PUVMVl9pXFFHPjYuJyMeHRceIB0jLC81PERNV2JsXlNJQTozLiomJCEkKCUoMDQ3PEVPWWRwYldOR0E7NzQxLywvMS8xODo8QEhRW2hzf39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f396d3V0dHNyc3N0dHV1dnd5fn9/f39/fXZxbmxqaGdmZ2doaWpsbW5yd31/f399dW9pZmFgXVxbW1tdX2NjZGhscXZ/f393cGhjXVlWU1FRUVJTVVpaXmJna3J6f3xza2RfV1NPSkpJSklLTVNaY15iaW92f3lwZ19ZUUtGQ0NAQUJFR01UXVpfZm1zf3dtY1tVTUVCPD06PT1AREhQWVheY2t0fHJpX1ZORkA8NzU1Njk9QUZNVlZcYmlzdGxjWlBJQzo2NDIwMjY6P0RLU1VaYWlzbmRcUktDPDYxLSwsLzQ3PEJHUFNaYmpyamBXTUY9NzIsLSgtLDE1OkBIT1JZYmpzZ11US0I5My4qKCgrKi8zOD5ESlFZYmp0ZlxTS0I8NTAsKiYrLS8wOD9CSVFZYmx2aF5VTkZAOjUyLy0wNDM1O0JFSlJaZG55a2JZU0xGQj47ODY4PDo8QUdJTlRcZnF8"},"Spine2":{"min":[-0.1898,-0.0032,-0.1578],"dims":[27,17,22],"data":"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VUxDOTIsJCMcIh4lJi4wNjxDSlFdVExFOzQsJR8eGRgbISQoLzQ8QUhQVkxFPzUuJiAaFxYcGBshJy0zOUBJUFFHPzo1LCIcGBQUFBYaHyUrMThAR1FPRT03Ni8jHBkXFRQUGB0jKjA4P0lTTkU9ODcwJhsdGxcREhYbIigwOUFLVU5FPzw7Ny4oIh8aGRYbGR8nMjpETVhRSEJAQMA4Mi4pJiMhJCEiKTI+R1JeVk5JRke1RD46NDMwLi0pKS41QU1YY1pTTkxNsFBKRkFAPTw4MzI2PkZSXmphWlZTU1ZbWFNPTq5JQj4+QUdQWmZyaGFcWlpcn2ZgXVykVE9LS05TWmNueG9pZGJiZJeRiYmQZ2BaWFdZXmRtdn94cm5sbG5yiYGEdnJrZ2RkZmpvd39/f3x5d3d4fIGBgX15d3RxcXN2fH9/f39/f39/f39/f39/f39/f39/f39/f393b2ZcVEtDPDY2NDY1ODxARklLU1tibmZeVk5FPjYxLysuLDE0OT5ETVBXX2VfWE9HQDc0LSsnKSksMjY8QkpOVV1gWFJLQTszLCgoJSknKi80OkBJUVpdXFNMSkE5Mi0mJyMkJSktMzk/RUxXXFpRSktCOS4rKCYkIyMmKzE3PkRMVl5aUktPRToyLSooJiAhJikvNT1ETldgWlJNVUk/ODMwLSslIygrLTQ8Rk9ZYlxVUFtQR0E8ODQyLCsvLzA1PkdSXGZhWlZTVFFMRkI9PDc2ODU2OkFKVGBrZmBcWlpdV1FNSUdDQkE+PkFHUFpmcWxmYmBhZGJeWVVUUFBLSEhKUFhha3dzbmlnZ2lta2ViYV5cVlNTVVphanR/enRwbm5wdIaBgYptZ2JgX2FmbHR9f399eXd3eXyBgYF/eXNvbGxucXd+f39/f39/f39/f4F/f39/e3l4en1/f39/f39/f39/f39/f39/f39/f39/f39/f394cGdeVlBKRkJAQUFESExTV1pfZ294cGlgWFFLRD86OTs7PUJHTlJZXWNrcWpjWlNKREA8OTY4ODpARExQVVxiaWtkX1dPRkA6Nzc0NjY4PUJITlRdZWpoYFpWTUZAOjU1MjMzNztARkxTWWJpZl5YV05EPTk3NTQyMjY5PkVLUVlhamZfWVpPRj87ODc0MTA0NzxDSVFZY2tnYFxdU0pEQD47ODMyNTk8QElRWmRtaWNeY1lRS0hEQD05Nzo9P0NKUlxmcG1nY2FhWlVQTEhFQUBDQ0NHTVVfanRzbWloaGVfWlZST0xLTEpKTVJaY215eHNvbW5wamZhXVtYV1ZTU1VaYWpzfn96dnV1d3ZxbGlnZGRgXV1fY2pye39/f317e31/gYGBfHVva2hoam50e39/f39/f39/f4GBgX9/enZ0dHZ5f39/f39/f39/f3+BgX9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/"},"LeftShoulder":{"min":[-0.1355,-0.0272,-0.1175],"dims":[20,16,15],"data":"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Ukc8MyoiINvV1c/HwLarTkE0KiAVEufj4tvUy8CzSj0wIxsLAfv29Obf1MexSTsuIRUJAPn18/Tn2cu8RDorHhII//n18/Tn2tHFQzcnGxIJAv359/fu5iYzPzMmHBINBgL+/f0BEyAtQDQoHxgRDAcEAwQIDh0rRDgtJR0XEQwKCgwQFx4tRjsyKSIbFBIREhUZICkzSj42KyQeGhgZGh4kKzY7TEE3LycjISEjJSkvNj5IUEY+NTArKC0uMjU6QUlSV0xEPDg3Njk6PkJHTFVcX1VNSEVDQ0RITlBUWWBoZ19YU1BPUFJWWl1iZm10WU5EOC4nJikpKjDIwbesVEg9MSUcGhobHCTWzMG0UUU5LiEWFAkFA+ni1sivTkI2KR4VDAcEAgPq28xGTD8zJx0UDQgEAgIWKTI9STwzJx4VDwoHBQUVHik2Rz0xJx4ZFA8MCgsNGSUzST80KSQeGRUSEBEUGSYxTEI4LyokHhoYFxgcISc0T0Y/NS8oIyAeHiAkKjA6U0o/ODErJyUlJyktMjpCVU1DOzUyLCwuLzM3PUVNWlBJQTs4NjY4Oz5CSE9ZYFdQSUNAQD9DRklOU1pjZl5WUk5MS01QVVZaX2Ztb2dhXFlYWFlcYGJmbHJ5YVZKPzYwLy4tLjM7QUtWXFFFOS8oJiIgISguNkFOWU1DNiwhHBcUFx0jLjpVVko+NCohGhUSERIcKTZLVEg9MighGhYTEREcMThCUUg8MiojHRgVExQdKDE8UkY8My4nIR0ZGBgfJC46VEg+NzErJiIfHh4hJS86VkxDPTYwKyglJCUoLTI9W1FJQjs2MS0sLC0wNDtDX1VNRD44NTMzMzU4PURKYldPSEI+Ojo5Oz1BRk1UZF1TTkdEQUFDREdLUFdgamJaVE9MS0tNUFJWW2JpcWliXFlWVVdZXl1hZ21zeHBrZmNhYGJkaGpucnl/aV1SSEE8OTc1NjpBR1BaZVlNQTs2MC0rKzE1PUdSYldLQToyKiUiJCgsNUBcXlNJPzYuKCQhHyEnMT1SXlJHPzUuKCQhICAnMT1LXVFHPzYwKiYjISIpMjxFW1FIQTo0LysoJiYrMjlDXVNLRD44My8tLCwtMTpEYFdQSUM9OTUzMjM1OT9IZFtVTkhDPjs5OTo8QEVNa2NaUUxGREFAQEFDSE5UcWZdVU9LR0dHR0pMUVddcGdiW1ZSUE5OUFJWWmFndW5pYl5aV1ZZWVxgZWpxe3RtaGRgYGBiZGdqbnV7f3t1cW5ramttb3J1en9/cWZcU01JREJAQERJT1dgbmJXT0hCPTo3ODxARk9Za2BWTEY9ODYxMzU4P0lkaF5VSkI9NjIwLzA0PEZcZ1xUSkI9NjIwLi80PEZVZlxTS0Q+OTUyMDE1PUdQZl1UTUhBPDk2NDU4P0ZOaF5YUUtFQT06Ojo7QUdPbGNcVlBKRkNAP0BCRUtTcGhhW1VQS0hHRkZJTFFYdm5mYFpVUU9NTU5QVFlee3FpY1xZV1RUVFZYXGFne3RtZ2JeXVtcXF5hZWtwf3l0bmpmZGNkZWdrbnR6f395dHBsbGtubnF0eH5/f39/fHh2dXV3eXx/f39/"},"RightShoulder":{"min":[-0.1377,-0.0272,-0.1175],"dims":[20,16,15],"data":"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VEk9MSgdGBvb0MW6rqKVUkc6LiEWC+3l2s/DtqicUUQ3KCASB//149fJvK+iT0ExJhoOB/706trPwrSmSzwwJBwQBv7z6d/SxruqSjsvIxoQB/706+Xcz8KzRzsvIxsRCP/39vbj1ce7SDwwJhwTCgMCAgIcKDPASDwxJx4VDQ0NDhgcJTE+Sj4zKSAYFxcZGh4gKDRAS0A3LSQfHyIkJicoMDpFT0Q6MC0pKS0xMzQ1O0NNVEk/OTQyNzw8QEFCR05XWVBIQj48P0RJTU9QVFphYFdQSUhJSk9VXlxfYmZsaGBZVFNTVVpgaGtsb3N3XVFHOC0mIiUrzsW7r6KWW09ENSofHBoe2tDEt6ueV0g9MSseFAru5djMv7KkVUY6LyccEwn/6+DTxbeoUUU4MCUbEwn+9ObXyLqtUEQ4LyUcEwkA9eTazsGzUEQ6MCYdFAoDAO3h1MW3UUU7MSgjFg8MCwseLDpHUkY9MykhHhgXFxckMDpGU0g+NCwlIiIjIyctMzxIVkpBODAtKywuLjM0OkJMWE5EPDk1NTY5Oz0+Q0pTXVNLRUE/PkFFSEhJTlRdY1pSTUlHSk1QVFZWWmBnaWFbVlNRVVhfZmNkZ2xycWljX15eYGNocHFxdHl/ZltNQjcyLy8yN8K4raGWYlZKPzQuJyQmK8zBt6ueXVFGPjUpHxsaIdbLv7KkW09DOzEoHhUUFuDTxbeoWk1FOjAoHhMJAOXWyLmqWU5EOzEoHhUKE+LVyb2wWVBHOzIpHxYPFR0nMj9NW1FGPTYqIxsUFR0mMj9NXVJIQDUuJyUhICArNkJPXVNKQDkxMS0sLCw0PUdRX1VMRD46Nzc4ODo/RUxVY1pRSkVAQEFDREhJTVNcZ11XUU1KSkxOUFJTV1xkbGRdWFRUVVZZXF5fYmdudGxmYV5cX2NpcGprbnJ5e3Rua2hoaW1xeHd4en9/bmJXTEU/Ozk6PkSzqZ+UamBUSkI5MzAvMzu9s6ibZltSSj41KycnKS/Hu6+hZFpQRj00KiMeHyfOwbSlZFpPRT0zKB4VGiPRw7WnY1lQRj0zKh8bHSXPPkpWZVtQRz40LSIfIikyO0dTZ1tSSUA2LicjJSoxO0ZTZ11VS0I7NDAsKjA1PklVaV9VTUVAPDg3NTg9RU9aa2FYUEtHRUJBQUFHTldgbWVeVlFOTExNTU1SWF5mcWpjXVlVVVZYWlteYWZtd29pZWFfX2FjZWdoa3B2fndxbGlpamxucXJ0dnp/f396dXNzdHd5fX9/f39/dmthWVJLR0VER01UpJqPdGpfVk1FPzs7PkJJraOXb2deU0pAOTUzMzhBtamdb2VbUkk/Ny8rLDI7uq6gb2VbUUg9NConKC44vK+ibmVbUkg/NCspKjA6RVJecGZcU0pAODEuMDY9R1BccGdeVU1EOjMxMzc+RlBbcmlgV05HQDs4OTxCSVNec2phWVJMSERBP0RIT1hidmxkXlhUUE1MSk1QVl9oeXBoY15bWFdXVlZbYGdwfXVvaWVjYWFkZmJma3F3f3x2cW1qamttcHBydXp/f399eXV0dHZ4enx9f39/f39/f35+f39/f39/f39/"},"Head":{"min":[-0.128,-0.1076,-0.1397],"dims":[19,25,23],"data":"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Pz49P0JHT1ZZYGdvd3RqYVhRTEZBPTo4NzY6PEJHT1hhY2pybmRaUkpCPTk2MzIxMTM3PUJIUVtdZG5oXlVLRDw3MjAvLi0tLjI3PkRLU1dgamRaUEU9OTQvLSssLCorLjQ5P0RLVV5nYFdMQTk1LissKioqKikrMjY8QUhSXGVeUkc+NTAsKikpKSkoJykvMTdARk9YZF1SRzw1LiooKCgnKCgoKCsvNTxGTVdhW09FOzIuKSgnJycnJycnKjI1PEROVmFbUUY7Ni4qKCgnJycnJycqLzU+RE1XYVxRRj00LyspKCgoJycoKC0wNj5FUFhjX1RKPzcxLSopKSgoKCgqLTI4QEdRW2ZjWE5DOzYwLCsqKiopKy8wNTxDS1ReaWZcUklAOTMwLSwsLCwxMDQ6QElPWWJta2FZT0Y/OzUyMTAwMDM2Oj9GTVVeaHFzaF5VTkhBPDk5NjY3OT9CSExUW2Rud3luZV1WUElGQj8+PkFBRklNVFpkanV9f3duZl5YU1BKSkdHSEtPUVZcYmpyfH9/f3dwaWJdWlZTUlJUVFhdYWdtdHx/f39/f3lzbGhkYF9dXF9gY2dqcXZ9f39/f39/f39/f39/fXl3dXR1dnh8f39/f39/f39/f39/e3Zzb21sa2ttcnZ8f39/f39/f39/enRwbGhlY2JjY2VrcHZ8f39/f39/fHRvamZiX1xaWFpdYGVqcHd+f39/f3pzbGZhXFpXU1JQUlZaYWhrcXh/f397cmtlXVlVUU5MS0pLT1RZYWZsc3t/fXRrY1xXUExKR0dGREZKUFRaYmtudn53bmVcVE9KRkNBQT8/QUVJUFVbZWlweHJoX1dOSUZCPz49PTw9QEVKUVdeZGx0bmRZUUpGPz07PDs6Ojo8QUdMUVhhanNrYldNR0I9Ojk5OTk5Nzo/RElNVV5ncWdfU0pFPjo5ODg4ODc4ODtBRUxUW2RuZ1xRSUM9OTc3NzY3Nzc3Oj1DSVJbYmxmWlBHQTw5NzY2NjY2Njg5PkRJUFljbGZbUElDPDg3NzY2NjY2ODk9Q0tRWWJsaF5SSUQ9OTg3Nzc2Njc3OT5ESlJcZG1oX1RNRj87OTg4ODc3Nzk7QEdMVF1mb21jV09HRD46Ojk5OTo5Oz5DSVBXYWlycGZdU05HQT49PTo6Oz4+QklOU1xkbXd1bGNZUktIQ0A/Pj4/QkNHTVJYYWhxfHxxaV9YVE1KRkRFRURHS05UWF5nbnd/f3hwaGFaVVJOTUtLTU1SVFpfZW50fn9/f3dvaWNdWVZVU1NVVlpdYWdtdHx/f39/f3hybGdkYF9cXF5fYmdqcXZ9f39/f39/f3t2cm1qaWdnaWlscXV6f39/f38="},"LeftUpLeg":{"min":[-0.1641,-0.126,-0.1398],"dims":[21,42,21],"data":"f39/f39/f356ent8fn9/f39/f39/f39/f397d3VycXJzdXl+f39/f39/f39/f3pzcG5raWpsbXB0eX5/f39/f39/enNtaGZkYmBfYmRobXN6f39/f398dW1mYl1YVlRTVlhcY2hweH9/f312bWNdV1NNSklJS01TWF9ncHl/fXRsZlxTTkpFQj8/QUVKUFdgaHJ9dWxiXVZNR0M+PDo5PD9ESVJaY255b2VcVU9HQT02NDIzNTlARE1WXmh0amBXUEk/OjgyLy8vMjU6QUpRW2VxZVtRSUU9NjQzMTAxMzY7QUlRWWNuYldNRUE8NzMtKysrLjE2PUZMVl9rYFVMRT82MjErKSktLDI3O0VMVF9qXVJJQT01MDEvLisuLjI3PERMVF1oXVJHQT03My8qKygoKy4zOkBJUVtmXFFHPz01MDAqLCgsKjE2OUNKUVxnXFFIQDw4MzMvLissLjE3PENMU1xnXVRKREA5MzItKyorLDA3O0FLUVtlYFVKQz84NTQvMC8wMTE6PENNU1xmYVdNRkE/Ojg0MDIvNDc5Q0hQWGFrZFtSS0VBOjc0MzQzNTg9REpRW2NsaV9VTUZEPjo7OTo5PD9DSU1VXmVvbGNZUUxJRD4+Ojo9PUBITFVcY2tzcGlgWFBLRkJBPj5BQkVLUVlfZ3J6dm1lW1VQTUlHRkRGSU1SVl5lbXZ+enJqYlxWUkxJSUdITlBVXmRsdHx/f3hwaGBaV1FPT0xOU1ZbY2lweX9/f311bmZgXllUVVRUWV5jam93f39/f398dW1nY11aWllaXWNobnZ9f39/f39/e3NtaWRgYGBgZGpudHx/f39/f39/f3p0b2lmZGZmam91fH9/f39/f39/f3t1cW1qaGlscHV7f39/f39/f39/f3dxbGpoZmhqbXJ5f39/f39/f39/fXVvamhmZWVna3B3f39/f39/f39/e3NsaWdlZGZoanB3f39/f39/f39/enNsZ2ZlZGRpbHF4f39/f39/f39/e3RuamhmZWZrbnN6f39/f39/f39/fndxbWtqamtucXZ9f39/f39/f39/f3x3c3Fubm9zd3x/f39/f39/f39/f399enZ0dHV5fn9/f39/f39/f39/f39/f358e3x/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f354dXJwbm9wcnZ7f39/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OTU4Njg7QkpRWmVvb2VaUUpDPjo2NDMyMzY5P0hPWGNubWNYUEdBOzc0MjAwMTQ4PkVNV2FtbGJXTkY/OTUxMC8vMDM4PUVOVmBta2FWTUc+OjQzLy4uMDM4PkVOV2Fsa2FWTUY+ODQwLy8vMjU6P0ZQWGJtbGJXTkc/OTUxMDAxNDc8QUhQWWNtbWRYT0lAOzYzMjQzNjk+Q0pTW2VwcGZbUklCPTk2NDQ2ODxARk1WXWdycmlfVExFPzs4NzY4Oz5DSE9YYGl1dmxgV09IQj47OTk7PUFGS1JbYmx4eXBkW1JLRUA9PDs9P0NITVReZW95fXNoXlVNR0I/PT0+QURJT1ZgZ3J9f3ZqYVdPSENAPj4/QUVKUFhgaXR/f3hsYVhPSEM/Pj0+QUVLUVhganR/f3hsYlhOR0I9PDs8P0NJT1ZgaXN+f3hrYFdNRUA7ODg5Oz9FTFRdZnB7f3hqX1ZMRD45NTM0NztASE9YYmx3f3dqXlRLQjw6NTAvMjg8RExVXml0f3hqX1RLQzs1Ly0sLTI5P0hTXGdzf3lrX1VMRDw0LispKy82P0ZQWWVwf3xtY1lPRz44MCsoKC4zP0VQWGRxf39yaF1TSkM8My0pKi43QEZOWWZyf394bmRZUEhCODMvMDQ8RUlRXGdzf39/dGtiWVBIQDs4Njk+RUxWYGt2f39/fXNqYVlSSkVBQEFHSlJbZXF7f39/f310bGNbVE5MSUxQVFpibHd/f396cWtkYFxaWVpbXmNmbXV9f39/f3pwaGJcV1RSUFFRU1pdZGx1fX9/fHNoYFhTTUhGRUdHSlBUW2Rtdn5/dWxhWFJMREA9PD4+QUhMVFxnb3h/cGZbUkpFPTk3NTY3OkFFTVZgaXN+a2JXTURANzIyLjEwNDs/R1FcZW56aF5TSUA7Mi4tKSkrLzc7Q0xYYWt3ZlxRRj04LyorJiYoLDQ4QEtWX2p1ZVtQRDw3LSkpJCQmKzI2P0hUXmh0ZVtQRTw3LikpJCQpKzI5P0hUXml0ZlxSRj44MCsqJiYrLTQ7QUpVYGp1Z19USUE8My8uKiovMDU+RE1YYm13bGNYTkZAOjQzLzA0NTpDSFFcZnB7cGdeU0tGQDo3NjY7PEBITlZga3V/dm1kWlJNSEI/Pj5CQ0hQVllgaXN+fXFpYVlUUEtISEdLTFBYX1VeZm96enBmXVZRWVVTUFFUV1thaVNcZG14eG1kXFVPSkZCQD8/QEJGS1JbYmx2d2xjWlNNSERAPz4+P0FGS1JZY2x3dmtiW1JMSENAPj09P0JGTVJaY2x2dmtiWVJMRkM/Pj4+QENITVNbZW13d2xjWlNNSUNAPz5AQkVKT1VdZm54eW5kXVVOSkVEQEJCREhMUVdfaHB6e29mXlZQSkdEQ0JER0pOU1phanJ8fXNpYFpTTUpHRkVHSU1RVlxja3V+f3VsY11VUExJSEhJTE9UWl9mb3d/f3pwZ2BYU09MSkpLTlFWW2Foc3x/f31zamNbVVFOTExNT1JXXWNsdn9/f392bGRdVlJOTU1OUFRYXmRsdn9/f393bWNdVlFOTUxNUFRYXmVtdn9/f392bWNbVFBMSkpLTVFWXGNsdH9/f391bGJaY1xWUU1MTVFYYGBocXt/f390a2FZXFRNSEVEREpRWltkbXZ/f390amBXV05HQj49QEVLU1xmanN+f390amBXVEpCPzs6PEBFTldiZ3F8f391amFYU0pCPTk4OTxDSlRfZW96f394bWNbVkxDPTk3NztBSlRfZW96f398cWhfWlBGQTw4OT1CS1VgY257f39/d25lX1VNRkE9PkFHT1lkZnF7f39/fnNqZVxTTEZFQ0dNVV9panR/f39/f3xzbWNbVFBOTlBVXWZwb3l/f39/f397c2tkXllWVVZbX2RsdX9/f39/e3ZvamhlZGVlaW1xd31/f39/f396cm1lYV9cWlxcX2RobnV+f39/f3tyamVdWFZSUVNTVltgZm12f39/f3VrY11XUE5LSUtKTlNZXmZwen9/e3BlXVdPSkVDQkNDR01TWGBqdH5/dmthWFJLREE/PD4+QkZOU1tlcHl/c2hdVE5HQDs7ODk8PUNKT1hhbHZ/cWZbUktEPTk4NTU4Oj9ITFVfanR/cGVbUEpEPDc3MzM3OT5GS1RdaXN+cGVaUUpEPDc3MzM4OT1HS1ReaXR+cWdcUktGPjk5NTU6Oz9ITVZeanV/c2leVU5JQDw8ODk9PkNLUFhhbXd/d21jWVFNRUFBPT1CQkdPVVxlcHp/e3FmXlhTS0dGQ0RHSE1UWmFqdX9/f3duZV1ZUk5NTEtOT1NbYWZudX1/f31zbGRhW1ZVU1NWV1xiaWNqcnt/f3tya2ReYl9eXVxfYWRqcWBncHl/f3lwamJcWFRRT05OT1FVWl9mcHd/f3hvaGFbVlJPTk1NTlBUWV9mb3h/f3duaGBaVVFOTUxMTlBVWWBncHh/f3duaGBaVVFOTUxNT1JWW2Bob3l/f3hvaGFbVVJQTk9PUVRYXWJqcXp/f3lwamJcWFNST1BRU1ZaX2ZrdH1/f3tya2ReWlZTUlFTVVlcYWdudX5/f351bmdgXVhVVFRWWFtfZGlweX9/f394cGljX1tYV1ZYWl5iZmxze39/f397dGxmYl1aWVlaXWBkaW91fn9/f39+d29pZGBcW1pcXmFlanF3f39/f39/eXFqZWBdXFtdX2JmbHJ5f39/f39/eXFqZWBcW1tcX2JmbHJ5f39/f39/eHBoYl5bWVlZXF9kaXB3f39/f39/dm5nbWZhXFpYWV1jamx0fH9/f39/dW1lZ19aVVJSUlZdZWhveH9/f39/dWxlYlpUTk1MTlFXX2dwdX9/f39/dWxkX1ZQTEpJSk5SWWJscnx/f39/dm1lX1ZQS0hHSEtQV19pcXp/f39/eW9mYVlRS0dFRktPVl9pcHp/f39/fHNqZVtUTkpHSExQV2BqcHp/f39/f3hwaWBZU09LS05UW2Ntcnt/f39/f352bmZeV1RSUVRZYGhydX5/f39/f398dm1lX1xZWVxgZ294eX9/f39/f39/fHRuaGVhYGFla3B2f39/"},"LeftFoot":{"min":[-0.1029,-0.0759,-0.1274],"dims":[14,19,16],"data":"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f3lsX1NJPjYsKCYpLjY/Sn9/c2dcUEY/OTQzNDg+R1B/f3pvZFhPR0E+PD5CSE9acWpkYFtUTkpISEpOVFtkcGdfWFRRSkU/Pj1AREtTXGhaU01KR0E6NTIwMjhASVRhUUlDPz06MysoJiktNUFMWkpAOzY0My4pIyAgJi86RVNEOjMuLCwrJiAcHSMrNkJNQTgtKScnJyUhHRwiKTM/S0E3LyglJSYnJCIgIyoyPkpEOTIqKCYnKSklJScsNEBLST83Mi0sLC4sKigqLzhBSlBHPzk2NDQ0LiooKi83QUtYUElDQD4+MywnJSgtNT1IY1pTTktDOTApJCMmKjI7R2xlXlpPQzkwKCMkJyszPUl4cWpdUEY8MiwpKCswN0JLf3puYVVKQTkzLi0vMztFTX9/cmZbUEg/ODUzNTpASVJ/f3htY1hPSEI9PT1BR09Zf39/dmtfV1BKSEZHS1BYYXdxbWxkXllUU1JUV11kbHZsZmJjWlVOSkdFSExSWmNtY11XVFJMRkA9PD1ASFBaZVtUTkpJRT86NjQ0OEBIVF9UTEVCQEA8NjAuLTM5RE5bT0Y/Ozo6OTQtKiwwOD9KVk1CPTg2NTYzLiwrLzU/SFNMQzs3NDQ1NjIuLjE3PklTT0U+OTY1Njg3NDM1OUFKVVJKQz06OTo7Ojg2OT1DTVZaUkpEQUBAQTw4Nzk9REtWYVhTTkpJR0A5NDQ2O0FJUmpiXFdVTkU9NjMyNDk/SFBzbWhjWE5EPDY0MjU5QEhSfnhxZltRSEA5Nzc4PUNLVn9/dWpfVEtFQDw7PUBHUFl/f3luY1pSS0VCQUJGTFNdf39/dWtiWVJMSUlJTVJaY39/f3xyamJbVlNTU1VbYmk="},"LeftToeBase":{"min":[-0.098,-0.0385,-0.0402],"dims":[13,13,11],"data":"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"},"LeftLeg":{"min":[-0.1111,-0.1018,-0.1274],"dims":[16,41,17],"data":"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KyonKCkuNjxFUFtXTEI6MismKigrLTI5P0hSXVNJPjkxKSgoJSotLzlBR1BcUkg/ODAoIyIjJyguNj9GUFtSRz04MCgnISInJy02P0dPXFJHPzkwKCchIicoLjdASFJdUkg/OTEuLCIjJykwOEJKVGBTSUA6MysqKSUqLjI7RUxWYlZLQzw1LikqJygwNDtGTlhkV01DPjkxLS4rLDM3PklRW2dbUEZBOzQwMS4vNzpBTFReaV5TSkQ/NzQ0MTM5PUNMVmBrYlZORkI6Nzg0Njw/RU5YYmxlWlFJRT06OTc4PkFHUFlkbWldVUxIQDw8OTo/QkhRWmNubWJYT0lCPj46PEBDS1FbZW9wZVpTTEM/Pjs8P0RLUltlcHFmXFhOR0FAPD9ARkxTXWdxc2ddV05FQT89PUBFS1NcZnJ0Z15ZT0hBQUBBQUhNVF5oc3NoXldORkE/PkBBRUxUXWdzc2leV05GQ0E+QUFITFVfaXNzaWBWTEVCPjw9QEZLVF5pc3JoXlRLREA7PDw/RUlSWmdycmZaUUhDOzg4NjlBSE9YY21wZFlPR0A4NTY1OD9ETFZha25iVk1EPzc0Njc6QENMVmBrbmNXTURAOzg5ODxDSE9ZYm1vZVpPSERAPDs/QkhMU11mcXFnXlRNSEZEREdKTlNaY2x2dWtjW1RPTk1MTlNXXWJrc3x6cWljXFhWV1ZYXmJmbHR7f395cWtmYl9hYmRnbXF3fn9/f393cWpkX11bXF1fZGpxeX9/eHBoYltWU1JTVFZcYWhxen1zaGBaU05LSUtLTlRZYGpzeG1jWlRMR0NCQ0RHTlNbZG50aV5VT0ZBPzw8PkJJTVVfaW1kW1JLQz48ODc6PkRKUlxnaF5VT0dAOzk1NTc7QkdQWWVkWVFKRkA7NjU1ODtBSFBYZGFXT0hCPDk4NjY6PEFJUVllYVdORz05Nzg3OD0/RExTXGdeU0xGPDc3NTM3Oz1ETVVdZ11UTEU7NjUxMjU4O0FLU1tlXFJMRTs2NTIxNTg7QUxUXGZcVExFOzY1MzE1OTxCTFRdZ11UTUY8OzkxMjU6PURNVl9pXlRORz45ODYzOD0/R1BZYWtfV1BKQDw6ODY3PkFIUVljbWJYUUxDPz48OTtCREtUXmZwZFtUT0hCPj88PkRHTlZgaXNoXldSTEVCQkBBRkpRWWFrdWtiWVRPSUVGQ0RKTVNcY213bmZeWFJMSEhGR0tPVV1lbnhzaWFaVk5LS0hJTVBWXmZveHdsZF1XUE1MSUpPUVhfZnB6eW9mX1lSTk1KS09SV15ncHp7cGdjW1RPT0tOUFJaYGhyfH1yaGNaVE9OTExPU1lgaHJ8fXNpZFxUUVBOT1FVW2Bpc35+c2tjWlRRTk1PUFRaYWlzfn5za2NbVFFPTU9QVVthaXR+fnVqYVpUUExLTU9SWmBoc319c2lfWFNMSUpKTVJYXmdxfHtvZl1WUEpHR0VITlVbY214eW5kW1RNRkNFQ0ZMUlhha3Z3bGJZUkxGQ0RGSE1SWGFrdXhtYllTTklGR0dKTlVbZG13em9lXFZSTUpJTU5UWmBocXt8cmdgWVZTUFFUVlpgZWx2f392bWVgXFpYWVteYmhtdH1/f3x0bWhjYmJhY2hrcXZ9f39/f3x2cG1qbGttcnZ7f39/fw=="},"LeftArm":{"min":[-0.0943,-0.0886,-0.0899],"dims":[15,29,14],"data":"bWReWFRRUFFUWF1kbHVmXVVOSkhHR0pPVVxlbl5VTkhDQD9AQ0hOVl9oWE9HQDs4Nzg7QEdPWGNUSkE7NTIxMjY7QktUX1JIPzgzLy4vMzg/SFJbUUc+NzEuLS4yNz5GTlhSSEA5MzAvLy81OkNKVlRMQDkyLissMDI5Q0lUUUg9NTErKSosMThDS1RPRDwzLSkoKSwxOUFLVU5DOzItKCgoLTQ6Qk1WTUM5Mi0sKSwuMztET1dOQzo1Li0rLjA2PkZRXFBFPDcwLS0vMzlBSVJdUkY+NjMwMDM3PURNV2BVS0E6NjQ1NjtAR09ZYlhORT47ODg6PUNLUltkXFJJQj47Ojw/Q0xVXGZgVk1GQT48Oz5DSVJaZmJYTUdBPDo5O0FGTlhjXlRLRD05ODU3PUJKVF5bT0hBOjY0MTI5PEVNWlpQRkE4MzEuLzY5Qk1YWlFJQTgzLi4wMzdATFddVExCPTgyMTM0OUFMWGJaUUlCPDY2ODk+RlBba2NYUEtDPz4+QEVMVmBza2JbVE5ISUhITFRdZ2RbU09KRkdIS09VXGVuW1NKRD88Ozw/REtTXGZUSkE7NjMxMzY7QktUX05EOzQuKikqLjQ7RE5aSj82LiglIyUpLzhASlVHPTMrJSEfISUrNT1HU0Y7MiojHx4fIyozOUNNSD00LCUhICEiJy82QExKQDYtJSEdHR8lLzQ/Skc8MykhHRobISQsNz9KRTovJh8aGRoeJCw3P0pEOC4kHxkZGh4lLThBTEQ4LiQfGhobICcvOkJNRDkuJiAcHCEjKTI6RFBFOzAnIh4eICYsNT5HUkc9MiokIiIkKTA4QUtVSUA1LiolJSgtMztDTVdNRDkxLSkoKy81PEVPWVFIPTYxLSwtMTU9RVBbVUxBOTMvLSwwNzxFUVtUS0Q5My4rKi0yOkNPWFBGPjcwKygnKS42PktUTUM7NCwoIyIkKzA5RlFNQzsyKiUkHyElLTZDT05EOzUsJR8fIyMrNkNPUklBNzArIiIlJC03Q09aUUk+NzErJyosMzxHU2FYUUhCOjQ0MjQ6Q05ZbWRaUk1FQT89P0NMVWBcU0tFQD08PUBFTFNdZlNJQTo0MTAxNDxDS1RfTEI6MSsnJicrMTlBTFdFOjAoIh4cHiIoMTtFUUE1KyIbFxYXGyIrNkFNPjIoHhcSEBIXHicyPko9MSYdFhEPERYdJC47Rj4zKB8YExETEhkhKzdEQjYsIxoUDg4RGB8qNUJBNCgcFQ4MDBAXIyo1Qz4wJRoSDAoMEBgjKjVDPC4jGRELCgwQGSEsN0I5MCIZEQwLDRIbIy04RDkvIhkRDg0QFR0mLztGOjAkGxMQEBMYICkyPUk9MikeFhMTFhwjLDVATEAzLCEaFxcaHyYuN0NOQzcwJR4bGh0iKjA5RVFHPDQpIh4dHiIrMDpGUkxAOS0mIR4eISswPEZSTEA6LyYfHRwfJi46RFBHOzUqIx0ZGBoiKjZATEQ4MSYgGhUUFhwkMjtIQzYvJh4XEhESGSEvOUZEOjAoHhYQEA4WHi45RkpANi0lHRYTFxggLzlGUUc/Ny8pHxwbICk1P0lZUElAOTMtKyYrMjxGUWVdU0xFPjk4NjY9Rk5YVk1FPjk2NDY5PkVNVmFNQzoyLCkoKS0yOkNNWEQ5LycgHBscIScyOkRQPjIoHxcSERMXHygzPko5LSEXDwoICQ8XIS05RjYpHRIKBAIEChMdKTZCNSgcEQgCAAIIEhwoMj02Kh4TCwUDBQYMFiAvOjouIhkRCAAAAwoVHy45Oi8gFAkB/f4DCRQfLzo2KBsQBf77/QMLFSAvOTQmGQ4E/fv9BAwWIi07MyUYDQT+/P8GDxgkLz4yJRgNBf/+AgkRGiYxQDMmGQ8H/v8GDBQdKTRCNSgbEQkFBQkPGCArN0U4Kx8UDQgIDBIaIi46SDwvIxgRDAwOExskMDxKQDQoHRUQDhAUHCUxPUtEOCshGBMPDxMbJTE+TEM2KyIYEg4OERokMDxKPzQnHhYQCwoOFyAsOEQ7LSMZEwwIBgoSHCczQDosIRcRCQQCBA0YJTE+OjAlHRQLBP8CChoiLz9BNy0lGxMLBwcLHCUyQEk/OTEnIBoUEhYjLDhDUkhDOjMsJyIiJSw0P0teVU1GQTo1MTAzOT5IU1FJPjcyLi0uMjdAR1FcSD0zKyUhICElKzQ9SFM/NCkgGRQTFRkgKTRATDgsIBYOCAYIDhYgLDhFMyYZDgX+/P4FDhomM0EwIhUJ/vf09/4JFSIuOy8hFAf89PH0/AcUGyc1MCMWCf/4BwD/AgwXJDI0JxoPBgD9AAb/ChUjMTYoHA4D+AkL9f8KGiIxMSQWCfzx7O/2AAsaIzEuIBMF+e/s7/gBDRskMi8fEQT48O3x+gMPGiY0Lx4RBPnx8PX9BhEhKzcwHxIF+vPz+AAIFB8uOTIkFAj99vf8AwsXIjE8NSQXCwH5+v4FDRklNEE4KBwPBf79AAcPGyc2RD0sIBQJAQABBxAcKDhFQTQkFw0EAAEHEBwpOEQ9MCQXDQT//wUPGyg0QjYrHhMKAv38AgwYJC89NCYYDgX/+vj+CBQgLzwzIxYNBPz28/gEEB0sODUoGhMLAvv29f8OHCw7OTAlHBUOCAMBBhIfLDxEOS8oIhwXERASGic0QUxDOzUvKiUgHyMnLztIWE5IQT04NC8tMTM7RFBORDw0LysqKy80PEVPWUU6LychHRsdIScwOkVROzAlGxMODQ4UGyUwPEg0JxsQBwH+AQcQGyc0Qi8hFAf89fL1/QgUIS89Kx0PAfXr5+v1Ag8dKDcrHA7/8ucXEPYAChUiLyweDwL27QsD/AIDER8vLyIVCP4IAPj+CQEPHSwzJRgMA/0BBAn1AQ8dKy0gEgT47g8RFvYCEB4sKhwN//LkHePs+AMRHy4pGgv98OPe5e76BRMiMCkaC/zv5OHo8fwIFiQyKRsM/fHm5ez0/wsZJzUsHA4A8+no7vb+DhwqOC4gEQT37ezx+AQRHy08MiMVCPzx7/L6BhMiMD82KBkNAPXw8/sHFSMyQTorHRAD+PHy+wgVJDNBOSodEAP48fH6BxQiMD41JRgM//Xu7vgEEB0rOS4hEwb68uvp9AAMGig2Lx0QA/nx6+jv/AkYJjUxIhUMBP759/T7ChgmNTcsHxcRCwgGAwQPHSs5PzMqIx0aFxMSEBgnMD5HPTYvKyglIiAiJDA7R1JJQjw5NzQxLzE0O0VQTEI5MiwoJygsMjlCTVlDNy0lHhkYGh4lLThCTzouIhgQCwkLEBkiLjpHMiUZDQT9+/0EDRklM0AtHxEE+O/s8PkEER8tOykbDP7w493k8P4MGyc0KBkK/O3eHBQM/AsXIzAqGw3/8egQCP//AgsgLi4gEgb6DAT8+wb8Ch8tMiMXCgMA/gAGEPwTIC0sHxAC9g4NDhTv/RMgLSobDP7vHRwd4vD+DSAuKBkK++zd0Nrl8wEPITAoGQr77N3U3Of2BBIkMigaC/zt3tfg6/kHFSM0KhsN/vDh2+Lu/AoYJzctHxAC8+Xd5PH/DhwqOzEjFAb46eDl8wIQHy48NScYCvzt4ub1AxIhMD45KhwN/u/j5vUEEyEwQDYnGQv87+Pl8wIRHi89MSMVBvjr4eTw/gwdKjgtHhAB9Ofe4Oz6CBYnNiscDf7z7Onp6vcGFCM1LR8RBv/6+Pj5+gkXKDYyJBsRCwkHBwcIDhwqODovJR4aFxYWFhUdJzI9RDkxKiYlJSUlJikxPEdPRj03NDM0MzEzNj1HUU1DOjMtKigqLTM6Q05YQzguJh8bGRsfJi45Q1A6LiMZEQwKDBIaIy47RzMmGQ4F/vz+BQ4aJjNBLiASBfrx7vH6BRIgLjkqHA3/8ebh5vH/DRgkMSkaC/3u4R0VDP0DEB4tKhwOAPPoEgkBAP4NGyouIBMH+wsH//wH/QwbKjIlFAcHAf8BBxD9DBopLyAOAPMPDQ8U7v0MGyotHgv97h0cHeHw/w4cKywdCvzu39DW5PIBEB4tLB0K/O7g1dnm9QMSIS8uHwv97+LY3Or4BhUjMi8hDQDy5tzg7vwKGSc1MSMRA/bp4OXyAA4cKzk0JxQH+u3j6PUDEiAuPTgqGAv98OXr9wYUIjE/Oy0bDf/x5ez5BhUjMUE1KhgK/e/j7PgEEiAtOzEiFAb46+Hr9QAOGyk3LR8QAvTm3+jx+wkXJTQrHQ7/8ejn6e76BxYlMysdDwL59vb4+gEMGig2MCYXDAYDBQUJDRUfLTo4LSEZExESFRgcISk1QEI3LiYgHyAjJiosND9JTEM5My8tLzA1ODtASFNPRT01MCwrLDA1PEVPWkY7MSkiHh0eIykxO0ZSPTEnHRYRDxEWHScxPUo2KR0SCQMBBAoSHSk2QzAjFgoA+Pb4AAoWIzA6LR8RBPnw7PD5BBIaJTQsHhAC9u3r8gcDBxIgLi4fEgX58QoE+gUCDh0sMSQXCwEFAfkBCwIOHSsxIxYJ/QYEBgz1AhUcKy0fEQP1ExETGPT/FR0sLB4P//LnHyHo9QIQHi0rHQ//8+jd3er3BBIgLysdDwH16uDf7PoGFCMxLB4QA/ft5OPw/QkXJjQuIRMG+vDp5/QBDRspODEkFgn+9Ozs+AURHy07NSgaDQL47/H8CRUjMT85LB4RBPrx9P8MGCY0QzwuIBIF+vD2AQ4ZJzVENyodDwP47vcCDRgkMj8zJhgK/vPs9gAKFCIsOzAjFQf57uz0/QYRHyk5LyES/PXq6vL6Aw8ZKDcuIBIE9fDx9v0FER0tOjMkFgoC/gAEChAZJTA9OSsfFgwNDRIXHiQtOENANSsiGxscICUrMjhCTUpANzIsKistMzk/RU1XU0pBOjUyMTI1OkFKVF5JPzYuKCQjJCguNj9KVUE2LCMcGBYYHCMrNkFNOi8jGRINCw0SGiQvO0c1KB0SCQMBAwkSHCkzQDIlGA0D/Pr8Aw0WISs6MSQXCwL6+PsCCA4ZJjYzJRkOBP77/gQCCxcjNDYqHhIH+wMF9v8KFiMzNCkdC//yDA70/gkWIzQxIhoI/PHr7PP9CRYjNDAiGgj88erq8vwKFyQ0MCIaCP3x6ury/gsYJjcwIhsK//Tt6/QADRsqODEkHAwB+PHv9wMQHSo6NCYfDwX89fP8BxQhLj03KiATCQD59wALGCUyQTsuIBYMA/z7BRAcKTZFPzIkGQ8F/f8JFCAtO0hBMyUaDwX+AQsWIi89SDwvJRcMAv0CDBciLTpGOCohEQf9+wILFR0oNkI1JxoNAvj5AAgRGiUwQDMlGgr/9vn/Bg8YJDA+NCYTCP33+v8IEBklMUA2JRkNAf3/Bw4WISk1QzsuHxcPDAwWGSEpMj5JQzUsJR0aHSAkLjQ9RlFLQTgvLCksLjU7QklRWllPSEI9Ojk6PUJJUVpkUEU9NjAsKy0wNj1GUFpHPTMrJSEgISUsNT1IU0E1KyIbFxUXGyIrNkFNPDAlHBQPDg8UHCYwOkU5LSIYEAoJChAYISgyPzgsIRYOCQcJDhIcIi46Oi0iGBALCAQIDhYfKzc9LyMXCwT//wQLFB4rODwuHxMIAPv8AQkTHis4OiwdEQb++fn/BxIeKjc5Kx0RBv74+P4HER4rODksHRIH/vj4/QgSHyw6Oi4fFAkB+vn/CRQhLjw7MCEWDAX+/AIMGyQxPjwyJBkVCQMBBRAaJzRBPzUnHRMNBwUKFB8sOEVDOCshFxAKCQ4ZJzA9SUc7LiQaEgwMEh0oNEFNSD0vJBoSDQ4WICs3RFBEOCsgFQ8LDhciKzZBTkAwJRsWCgkNFyArMj1IPCwhFwoGBwwVHSYuOkU5LB8UCAUHCxQbJC05RTgpHRIJBQkNFBwlLTlFOisfFAsHDRAYIyg0PUk9MiYeFhIVGSAnMDtET0Q7MiggIyEkKzI7Q01XT0Y9NS4wMTM5PkVNVl9fV09JREFAQURJT1dhaVdNRT45NjU2OT5FTldhT0U8NS8rKisvND5GT1tJPzUtJyQiJCguNj9JVEQ5LycgHBscICcyOURMQjcsJB0ZFxkdJCs0PkdBNisjHBcWFxsiJi42QkI3LCMeFxQTFRkiLTZAQzcsJBYQDQ4SFyApM0BANCchFA0KCg8VHig1P0AyJh8SDAgIDRIdJzU/PTImGxILBwYMEhwnND9AMyccEwwHBgsSHSc2QUE0KR4VDgkHDBMeKzhCQzYrJBcRDQsPFiErOEVFOC4jHBURDhMaJC89SEk8MiggGhUTFx4pM0FMTUA2LCQdGRYcIy03Q1BQQzkvJh8bGh8mMjxIVE5DOS4lHxwcIio1QEtYSj40LCAcGh0kLDdAS1VFOi8oHRgXHCMrND5HUkE2KyUYFBUaIioyPEVPQDMpIhcTFRkhKDA5Qk4+MiciFxQXGyEpMDlFT0E1LCIaFxoeJSw0PUhRRDgxJx8hIiUsMztDTVdLQjguKioqLTQ5Q0pUXlRLQjg1NjU5P0VMVFxnZ19YUk5LSktOUlhfaXFgV1BKRUJBQkVKUFdhalhPRkA7ODc4O0BHT1hiUkhAOTQwLzA0OUBJU11ORDs0LiopKi40PkVOV0tBODArJyYnKzE5QEhRS0E4MComJSYpLDI6RE1MQTgwKSYhICMoLjdCTEtANy0kHhwcICUsNUBKST01KyEbGRkdIiozPUpHOzMqIBkXFxsgKDI8Skc7MykgGRYVGR8nMjxKSDwzJyAZFhUZHycyPEpJPjUsIhsYFhogKDNATEtANy4lIRoZHCIrNkBOTUM4MikiHx0gJS45Q1FQRjw2LSckICUqMj1HVFRKQDgxKicoKS43QUxYWE5EOzMuKiktMztGUl1YTUQ7MywrKy83P0pXYVJHQTcuKikrMjlBTFZfTkM7MykmKSouOEBJU1tLQDgvJiMnKC02PkZRWkg/Ny0lIigoLzU9RU5ZSDw1LSYiJSktNj9FUFpKQDcsKSkoLDM5QEhRXE1EOzIuLi0wOD1GTlZgU0pAODQ1Nzk+RU1VXWdcUklCPj9AQkdOVV1lbnFqY11aV1ZXWV1janF6aGBZU09MS0xPU1lhaHJiWVJMR0VERUdMUlllbl5UTUdCPzw9QkdLU15oWVBHQTw5ODk8QUdQWGFWTUQ+OTU0Njk+RUpSXFZMRD04NTQ1NjlARk5ZVk1FOzQzLi8xNj1DTFdVTEI3MS4rKzAyO0FKVVJJQDUvLSgoKzA4P0hTUkg/NDUsJiUtNDc9R1FQRz80NSwlJCosNjxHUVFIPzQtKyUkJy01PEdSUkpBNi8tJiUoLTc/SFRVTEM4Mi8pJyowOUBKVVdNRjw2Mi0rLjM8Q01ZWlJKQDo0MjIyN0BHUVtfVE5FPjg2Njc8REtWYGJYUUhAPDg3O0BIUFpkYVhPRkA8OTo/Q0pVXmlcVEtCPDc6Oj5FTVZha1hQRz43Njg4PEVMVV5nVUxEOzUxNTc7Q0tTW2VTS0I6NDQ2NjpCSlFaZFFKQjo0NDc4PENKU1tlVExCOjc3OTpARUxWXWZYT0Y+Ojs9PkJJUFlgaV1US0VCQkNFSlFXX2dwZFpTTEpKTE1RWF9mb3d7c21nZWJhYmVobXN7f3NrZV9bWVhZW19ka3N8bGVeWFRRUVFUWF5lcHhnYFhTT0xMTU9TWWFpcmRcVE5KR0ZHSk5VXGRsY1pRTUhEQ0RHS1JXXmZhWVFLRkRCQUVHTVRaY2JaUEhCQT09QUNIUFdgYFdNRD49OTk/QEdPVWBeVUtDPDs3Nzs+Q0xUXV1USkFBOTU0OkBCS1JcXFRKQUA5NDM4OkJKUlxdVEhBOjg0Mzc6QEpSXF9WTEI+OjU0ODtDTFNdYFhMRj88ODY6PUNNVV9jW1JJQz48PDxBSFBZYmVeVU1IREBAQEVMU1tmaWFYUUtHRERESVBYYGltZVxVT0pHSEhNVFxkbm1kWlJNS0hJTVFXYGlzZ2BXTkpHSEhMU1pibHZkW1JLRURGRktRWWFqc2FZUEdDQkNFSVBYYGdxX1dORkNCREZJUFdfZm9eV05GQ0NFRkpRV19ncGBXT0lFRkhITFRZYWhxZFpSTEhJS0xQV11kbHVnXldST09RUlZcY2pyem1kXllWVlhZXWNqcXl/"},"LeftForeArm":{"min":[-0.0952,-0.0802,-0.094],"dims":[14,28,14],"data":"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"},"LeftHand":{"min":[-0.0854,-0.0698,-0.0733],"dims":[13,16,11],"data":"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"},"RightArm":{"min":[-0.1044,-0.0886,-0.0899],"dims":[15,29,14],"data":"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Nj9HUk9EOjIrKCUmKC41QEhRTEE5MComJCUpLjY/R1JLQDYvKSUkJSkvNz9KU0pANzEqKCUpKzA4QUxVTEA3MisnJystMjtDTlpNQjk0LSkqKzA2PkZRWU9DOzMvLSwvMzpBSlRdU0g+NzIwMTM3PURMVmBWTEI7ODQ1Njo/Rk9YYlpPRj86ODc4O0BJU1ljXlRKQz46ODc7QEZPWGNgVkxEPTk2NTg+Q0xWYVtRR0E7NjIxNDo/R1FcWE5FPTcyMC0vNTlCTFhXTUM8NTAuKiwyNj9KVlhNRj40LyoqLTA0PUlVWlJJPzg1Ly0vMTY+SlZhV09HPzkzMzQ2O0NOWWlgV05JQDw7Oz1CSlRfcWlgWVJLR0ZFRkpSW2V0bGVgXFpZWlxgZWxzfG1lXFhUUE9QUlddY2x1ZV1VT0tIR0hMUVVeZ3BgV1BJRUJBQkVKUFhhal1UTEZBPjw9QEZLU11mWlFJQj47Ojs+QklRWmNaUEhBPDk4OTxBSVBWYFpRSUI+Ozo6PD9ETVVeXVNKQj45ODc5PENKVFxZUEY/OzY2NTc+QktVXVZORD03NTM0Nz5DSlVcVktFPTc0MzM4PENMVV9VTEU8ODY0Nzk+Rk1XYVVMRT45ODY5O0BHT1hjVk5HQTs4ODo+Q0tSW2ZZUEhDPjs7PUJHTVVeaF1SS0ZAP0BBREpQWGFrYFZOSkRDQ0VHTVRbY21kWlNNSUZGR0pOVV5jbmheV1FMSUdISUxUW2NuamBXUUtHRERGS1FXYGplXFVOSERCQEJHTFNbZWNZUkxFQD48PUNHTlZhYllQSkM+PDk8QUVLVF9jWlNKQkA5OTs+Q0lTXmVdVU1HQj08Pj9DS1Nfa2JZUUxFQUBCQ0hOV2JyaWBZU0tIR0hKTlVdZ3pxaWJbVFFRUFFVXGRt"},"RightForeArm":{"min":[-0.0939,-0.0802,-0.094],"dims":[14,28,14],"data":"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"},"RightHand":{"min":[-0.0934,-0.0698,-0.0733],"dims":[13,16,11],"data":"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"},"RightFoot":{"min":[-0.0891,-0.0759,-0.1274],"dims":[14,19,16],"data":"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f3NnWk1COC8oJyktNT5IVH96bWJVSkE5NDQ2OUFJUl1/f3VqXlVNRkJBQkdNVV5menRua2RjXVhVVFVZYGhwdXBqZWFdWlNOS0lMUFdfaG9nZV9bWFJKRUFCRElQWGJpYF1VUU5JRD48PD5DSlNcZVpVTkhEQj07ODg7P0ZOWWNWUUhCPz45NjU3OT5FTVhhVE1FPzs5NzQzNTo/RU9ZYlNLQTw5Nzg0MzQ3PUNLVWJUTEM7ODc3MjAuMTc8RlBfV05GPzo5NC4qKiwxOUFMV1pSSkQ+ODEpJyYnLDI8RlFiWFBKQjcuJyQhISQsNkBNaWBYTkM4LSUfHR0gKTI+S3JqYlFGOS8lIBscICgyPEl7bWFVSD4yKiIeICUpNEBMf3JmWU1DOC8pJygqMTpFUX94bF9UST84MzEyNTtDTFl/f3JmXFFJQT49PUBGTldif396b2RbUk5KSEpNUVlian99eXVvbGdiYF9gZGpxeX56dG9sZ2ReWVdWWFxiaXJ5c29pZWJdVlJQUFFVW2Nsc2xnYVxaVVFNS0tMUVZeZ29mYVpVUlBMSUhHSU1TWmRsY1xVUE1MSERERkhMUlljbGBZUk1KSEZDQURITVNbZG1fV09KSEZFQkJCRUhOV19pYFhQSkdGRUA9PT9DSVBaZmFaU0xIR0A8OTk5PkRMVV9mXVdSTUU9OTU0NTk+RVBaa2NbV0xEOzQyMC8yOUBKVHFpY1hNRDkzLywrLjM9RlN6c2xaTkQ8My4qKi4zPUdTf3VoXVFIPjUwLS4yNz9JVH95bWJXS0M8NjQ0OD1DTFl/fnJmXFJKQz07PUBFS1Rgf395bWRbUUxHRkhITlZdaH9/f3ZrY1xVU1JTVVlfaHA="},"RightToeBase":{"min":[-0.0815,-0.0385,-0.0402],"dims":[13,13,11],"data":"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"},"RightLeg":{"min":[-0.1052,-0.1018,-0.1274],"dims":[16,41,17],"data":"f3xyamReWVZVVVdbXmRrc3t+dGpiXFRPTEtMTU9UW2JrdHduY1pUTEdDQkNER0xTW2RscmhdVE1FQD06PDxARkxUXmhuZFlORz86ODQzNjpBRk5ZY2leVEtCOzYzLy8xNj1DS1ZgY1hPSEA6My4tLC4zO0BJVF5dU0lDPjgzLiwsLjI6QElTXltQRkA6MjEwLS4vNDtBSlRfW1BHPzcxLDAuMTU3PERNVmFYTUU+Ni8uLSowMzU9R01VYFdMRD4zLi0oKS0uMzlFS1VeVkxEPjMuLScoLS8zO0VLVGBWTEQ+My4tKigtMDQ8RkxWYFZMRT80MzEoKS0vNTxHTlhiWE1GQDYxMC4rMDQ3QEpQWmZZT0hCODQvLy0vNjpAS1NdZ1tSSkQ+NjU0MTI5PUROVmBrX1RLRkA6Njc0NT0/RlBYYmxhWE5KRD05Ojc5P0JJUlpkb2ZbUkxHQD0+OzxCRUtVXWZxaV9WUEtDQEA9PkNHTVZeZ3JtYlpSTUZDQj9ARUhOVl9ocnFlXVRPSEREQUJGSVBWX2pzdGlfWFFJRkRCQkVKUFdganR1aWFcU0xHRkNFR0xSWGJsdndrYlxTS0dFQ0NGS1JZYWx2eGxiXVRNR0dGR0dNU1ljbXd4bWRcUkxHRURGR0tRWWJtd3htZFxUTElHREdHTVNaYm14eG5kWVJLSERCQ0ZKUllibXh3bWNZUUlEQUJCRUtOV2BrdnVqX1ZPSUE+Pzw/Rk1UXWdyc2hdVE1FPjs8Oz5ESVFaZW9yZltSSUU+Ojw9QEZKUVllb3JnXFJLRkE+Pz5CSE1UXWdxc2lfVE1KRUJBRUdNUlhha3V1bGJZUk5LSElMT1RYX2ZwenlwZ19ZVVNRUVNXXGJnbnd/fnVuZ2FdWltbXWJla3F3f39/fXVvamZkZWZobHB1e39/f310aWJaVE9MSkpMT1RaY2tzdWxiWFBKRUFAQEFFSlBaYWtuZVpQSEE8NzY2OD1BSFJaZGldVElAOzQvLS8wNTlBS1NeZFlPRDs1LSgmJigsMztGTVlhVUtANy4oIyEhIycuN0FLVVtPRTw0KyUgHh4gJSs0PUlTVko/NjArJCAdHR8kKzQ9SVNTRjwxLSQjIh8fISYsNT5KVFJGOTIrIx4iICMlKjI4QU1WT0M4MSshICAcIiMoMjlASldOQTcwKSAbGRogICYwNj9JVkxBNzApIBoYGSAfJTA2P0tXTUE2MSkgGxkZICAmMTdBS1hNQTcxKiclGRogISgyOUNNW05CODIsIyIhHCIjKjQ8RVFdUEQ6NC4mISIfIyYsNj5IUl9SRz03MiklJiIkKTA3QUtVYVVJQDc0LCgqJSovMjxDTVdjWExDPTgvKywpKi41PEZPWWRcUEc+OjIuMCwtMTdASFFaZmBVS0I8NTExLjA2OUFJUl1nZFhORUA6NDMwMTU6QkpTXWhoXFFIPzw2NTI1NjtDSlVfaWpfU0pFPTczMzM2O0JLVF9qbGBVUkg/ODg0Nzc+Q0xXYGxuYlZRRz05NzQ0ODxETFdhbG9jV1NIQDk5Nzk5QERNWGFtb2JYUUc+OTY1NTk/RU1YYm5vY1hRRz45OTU4OUBFTVhibm5jWU9FPjo1MzQ4PkRNWGJubWFYTkM8OTMyMzY8QktWYW1sYFVKQTwzMDAuMTpBSVNdaGpfU0lAOS8sLiwvNzxFUFplaF1RRj03LywtLzA3PERQWmVoXVJGPTg0LzEwNDtBSVNcZ2leVEpBOjg0Mzg7QUZNV2Fra2BXTUZBPj08QENITVRdZXBvZVxVTUhFRkZITFJXXmZtd3VrY1xWUU9QUFNYXGFnb3Z/fHNrZWBbWlpbX2JobHJ5f392bGJZUktGQ0FBQkZLU1pibW5jWU9IQDs3NTU3O0FHUFljZ1xRSD43MSwrKywxN0BHUVthVUpBNi4oIyEhIygvOEBLVVxQRDswJyAbGRgcICgvOkVQWU1BNysiGhUTEhYaIis1QUxTSD0zKB8XEg8PEhcfKDM/S09DNisiGxYRDg4RFh8oMj5KTD4xJxwWFRMQEBMYICk1P0tLPi8kHhQQFxMVGB0kLTlCTkg6LSMfEw4MDhcVGyYsNUJMRzosIh0SDQoLFBIYISo0QUtGNiwhHhIMCQoUEhghKzZCTUY5LCEfEg0KChUSHSIsNkRORjksIh8TDgsLFBQaJC44RU5GOi0jIRUQFA0WFh0nMTtIUkg7LyUiGBMWEBgZHykzPUpUSj4yKCUbFxkUFRwjLDZAS1dPQTUrJh4aHhcdHyUvOERPWVBEOC8pIR0eGhwhKDE6RE9bVEg7MiopICEdHiQqMzxFUVxXTEE2LSojIB8hJSw0PUhSXVtQRDkxLSYiISInLTU+SFNeXlNHPDMuKCcjJygvNUBIVWFgVko+NTApJSQkKC02P0pVYWNXTEA3MywqJSkpMTdCS1djZVlNQTcyKiYlJSowN0BMWGRmWk5CODMrKykqKjA4Q0xaZmdaTUI6MCsnJicqMDhDTVpmZ1pNQjozKyomKi0wOUNNW2ZmWU1EOjEpJiUmKS84Q01bZ2VYTEI5LyglIyUoLTZBS1llYldMQDUsKCEeHycsND9JVF9gVUo+MyolHR8eISgwO0VQXV9TSDwxKCAdHx8iJzA7RVBdXVNIPTEoJyEgIiYsMz5IU19gVEk/NS0rJiUrLzQ7REtXY2JVTEM5NDAvMTU4PURLU11pZltRSUM9Ojs7P0RITlVcZW9tYllQTEZFRUdKT1RbX2dveHVrYlpWU1BRVFZcYGZqcXl/cWVbUkpDPjo5OTs+REtTXWdpXFJIPzkyLiwsLjM6QElTXmJVSj82LiciICAjJy82P0lXXE9COS0kHRgWFhgeJC43QlBXSD0xJR0UDwwMDxUcJjE8S1JEOCwgFw4IBQUIDxYhLThHSz81KR0TCgQAAAQLEx4qNkRGOzAhGBEKA///AwoTHSk1REM3KxwSCQcFAQIGDBUfKzdFQjcqGg8FAgsGCAsQGSIuOEQ/NCcYDhIA/v8DCBUXIS01Qj80JhcMBP/7/P8EExUfLTRBPjIhFwwD/vr7/gQMFiAuN0I9MyUWDAT/+/v+BRQXITA3Qz0yIRcNBQD8/AAGDxkjMDpGPTMmGA4SAv7/AgkSHCYzPUhANCQaEQoFEAERCxoeKDM/S0E3Kh0TFAgFBQgPFyErNkJORDosIBcYDBIIChEaIy05RFBHPDEjGhgPCwsNFBslLzpGUks/NCceHBIPDhAWHicwPEdUTkM4KiIZFRERGBgfKDE9SFVSRjswJRwXFBMUGSApMj1KVlZKPjInHxkVFBkZICkzPkxYWExBNSkmGhYVFRohKjQ/TFlaTUI3KykgHBYWGyIqNkFPW1xRRTYsJxwXFhcbIys3Qk9cXVFFOS0jIR0dHSAjLjdDUV5gU0U4LSYdFxcYHCMsOENRXl9SRTgtJh0cFx4gJC84RFJeYFJFODAjHBcWFxsjLDhEUl5eUEM3KyIbFhQWGSEqNkNRXVtOQzgqIB0TEBQXICg1QExZWUw/NSceFQ8MDxgbIy88SVVXSj40JRwTDgsRGBsjLTpHVldJPDMoHBkTEhQbISg0P0tYWEo9NCghGhocHyQqMDlDUF1aTkE4MCglJycqMDU6QUtVYl5TSD82NDAwMjY8QUZMVV9qZltRSEE+Ozw/Q0hNUlhfaHFuZFpSTUlHSUtPVVleZGtzfGxhVk1EPTc4NzY4OD1ETldhZFdMQjkxKyckJCcrMjlCTFhcT0U5LyYfGhcYGh8mLzpET11IPTAmHBQOCwsPFBwmMjxJVUM3KR4TCgT/AAQKFB4rNUNMPjMkGA0D/Pj4/AMNGCQxP0Y3KyEVCf/28vL2/wkVIS49QDInHBUH/vXw8PX+CBQgLjw7LiAYB/4A/vP0+AAKFiIvPTkuIhgF+gb/+/v/Bg8bJTA8NigfFgP5DggFBf0EDBohLTo3KiAVAvcPExAP9wAKGiAsOTQpIAwB9/Ds7PD2/wsaIS06MygfFAH38Ovs8fgCDBwiLzsyKB4MAvjy7e7z+QQOGSUxPjMpIBUD7/Tw8PX8BxEcKDRCNyshDwX89/Pz+P8KGR8rN0U3LCMZCP/69vb7AgwWIS05SDovJRULAv36+v4EDhgkLz5KPjMpHg8GAf39AAcQGiUxPktCNSohEgoEAAACCRIbJzI/TEY5LyQWDQcD/gQKExwnNUFNSj0wJxkQCQUEBgsUHSg1QE5OQTQmGxMTBwUGCxQeKThEUFJENy0dFAsIBgcMFR8qNkRSVEc5LCMWFAkHCA0WIS46R1RWSTswIRcNCQcJDhYhLjlHVlhKPDAlGBUTEwoOFyIwPEhXWEw/MSMYDwkICg8XIzA8SVdYSj4xIxgPCQgTDxcjLz1IV1pNPzAkHQ8IBwkOFyMvPUpXWUs9LyIWDgcFCAwVIjA8SVVXRzowJRoMBQEFCxQgLjpHVVRFOCseEgkC/wAGDxsnNERSUkM1KB8QBwD9AggPGSY1Q1BQQzUoGhAJBQcLERYgKjhFUlNFNiodFRAPEhccIScxPklVVUc6LiUdGxseIygtMzxFT1xaTkI2LicmKCsvNTo/Rk1YY2FWS0A5NTM1ODxBRkxUXWJsal9VTUdCQEJESU5TWGBnbXZoXVNIQDgzLiwsLjI5QElTXV9USD40LCUhHh4hJiw1PklUWEs/NCkgGRMQERMZICo0QEtXRDcrHxUNBgMDBg0VICs3RFA+MSQXDAL69/b7AgwXJDE+SjosHhEF+vHr7PH6BREfLDpDNSkbDQD06uTk6vUADRwqODstIBQH/gELEuLp8/8NGyk3OSkbDgEC9v0LFu32Ag4dKzk2KRcK/Af99fz++/oIEh0rOTEjFQf5Dwf//Pz/+gEMGSU2MiETBfcTEgwJCQz1/gsYJDUuIBIE9+weGRYWFfUADBklNi4gEgTt7OLd3ePt9wIOGio4LR8RA/ft5N/f5e/5BBAdLDkuIBIE7u7m4uHo8vwHEyAvPC8hEwb68enl5ev1/woWIjI+MiQWE/3z7Ojo7vcBDRknM0A1JxoMAPfv7Ovw+QMPGik2QTkrHRAD+vLv7vP7BRAcKDZEPS8iFBH+9fLx9f0GERwqOEZBMyYZDAH59fP3/gcSIiw6SEU3Kh0WBPz39fj/CBMfLTtJSzsuIBMG/vj2+P8JEyEvPUtOPjEkFgj/+ff5AAoVIzE/TVFBMyYYCv/6+PoBCxclM0JQVEU1JxkLAvv4+gEMGCY1Q1FURDYoGgwD7+35AQ0ZJzZEUlRGNykeDgP7+fsCDhkoNkVTVEY3KRoOA/v5+gIOGSg2RVNWSDotIBUR+/j6Ag4ZJzZEU1RFNigaDgH69/gADRkmNENSVEU3Kh8M8fb09/8MGSgzQVBRQjQkFwr+9fD0/QYTJDE/TU9AMiEUCPvy8/j9BhEeLTxLTkAvIRQG/fr+BAkPGCUxPkxQQTIiFgkGBwsQFRohLDdDUVJENikcFRIUGB0iJy00P0pXV0o+MiYhHyEkKS40OUBIU19dUUQ6NC4sLjI2O0BHTVVeaGVZT0dBPDs8P0NITVNXXmhyZ1xQRj07MSspKSwzPD1HUVxeUkU7MSkiHRsbHSIpMTxHUlZKPDAmHRUPDAwPFR0mMz5KU0I0JxwRCAH9/QEIERwnNkNMPS8gEwf89O/v9P0HEyAwPUc5KxoN//Pp4uLp8wANGis5RDYoFwn77eLh2uDt+wkXKDY9MCMSCPkQCxgcGev6CBYoNjkrHQkD/O/9CA4N8/wKGCY0NSgdEAkC9/b7AAD/Aw8UIjAxIxACDAsB+vX1+QH5BRceLDIjFgDyFg0HBAQHDfYDFiIuLh8N//HjGhUSEhXr+AQWHi0tHwz+8OLXIyEh4u36BhgkMS0eDP7w4tgvL9vl8PwIGSMxLh8N//Hj2dTU3efz/wkYJjUvHA7/8+Xc19fg6vb+FBspODAfEQP26N/a2uLs+AQQHi07NCUVB/ns4t3d5O76BRMhMD43KR0L/vDm4eDn8PsHFSQyQDwtHQ/+9erk4ujx/AkXJTNEQDMlEwb57ebk6fL8ChknNUZFNigXCvzw6Obq8/4MGig5SEk7LBoNAPLq5+r0AA4gLjxKTD4wIxD+9evo6/UCEB4vPUxPQDIjEgT37Ons9gQSJDNBT1FDNSYUBvjt6e33BRMiM0JRUkM1JhUH+e3k7PgGFSM0Q1JTRTYlFgj47urt+AcVJDVDUlNEMyUWCPnu6u35BxUkMkNSVEY4Kh0U7ejp7fkGFSMyQ1JSQzQlFgj57ejs+AUUIjFAUFFDMyQVB/jr5er3BBMiMD9OTj8wIRID9uni6PX+ER8rOkpNPy4fEAL05uvw9v4NHCs6SEs8LR4PAPLz+P0CCRMfLTxKTj8uIBEC/gAECQ8VGyY0QU5PQTIkGA4LDREWHCEpMTtIVVNGOi0iGxgbHyMoLTM5Q09bW05BNy0qJyksMDU6P0ZPWGNjVkxCPTg3Nzo9Q0hLUlljbWVaT0U8OzIqKCgrMTs8RlBaXVFFOjAnIRsZGRwhKDE6RVFVSDwvJRsTDQoKDhMcJTA8SFFBMycaEAb/+/v/BhAbJzNBSjssHxIG+vLs7fL7BhIfLTtFNicZC/7x5d7e5vH+CxooNkI0JRYH+OofIB0b6vkIFiU0Oy0hFQb39hEWEQ8O+AcWJTQ3JxoMAfr7AwkQBAH6CRcjMTIlFAb5AfX16/r4+P8EER8tLB0PAPIKAPfz8/f/Cv4MGyouIAz97hUMBQICBQzu/QwaKSsdCvvsIBkTERETGfD+DRwrKhwI+uvdKiIgHyHl8gAPHSwrHRL56tzOMS8u3Of1AxIgLyseE+/m3c/Gx9Le6vgHFSM0LiAU/O7g0snK1+Ht/AoYJzUvIhbv8uTVzNHY5PD/DRspOjQmGAT26NnP2N/o8v8PIzA+NykdEvvt39LY4+z2AxEkMkE7LRsN//Hj2uDn8PkGEyY1RD8xJBIE9ufb5Ovz/AkXKDdFQzIkFgj67OHn7vb/DBonOUhHOSkaDP3v4+rx+AIPHS07Skk7LB4P//Ln7PP6BBIfLT5MTT4vIRID9Ojt9P0GFSIyQE9PQDIjFAX26e31/QgWJDJAUVBBMiQVBvfq7PT6CRclM0RTU0Q2KBsR7uvm8vwJFyUzRFJRQjMkFQf46unx+QgWJDRDUlNENicVBvjp5+34BhQiM0JRUkQ1JhUH+Oni6/YEEyEvQE9RQzUjFAb36ODl9AIQHzFATk0+MCESA/Ti3OTy/w8dLz1LTT4uHxAB8+Xl6vD+CxosO0lLPC0eDwDy7fL3/AMMGyw7Sk0+Lh8RAvj7/wQJDhcjMT9NT0AxIxULBggMERYaISw3Q1JSRjktIBkVFhoeIyctNkBMWFpOQTcuJyQkKCwxNjlAS1RgYldMQzo1MzM2OT5CRk1VX2pnXFBGPTsxKykpLDM8PUdRXF5SRTsxKSIdGxsdIikxPEdSVko8MCYcFA8MDA8VHSYzPkpTQTMnHBEIAf39AQgRHCc2QUw9LyATB/z07+/0/QcTIDA9RzkrGg3/8+ji5unzAAwaKzlFNigXCfvtFhURDvD7CRclNj0vJRYI+Q4NCwgGBPoIFiU1NykcDgX8/QIC/Pv5/AoWIzExIhYI+gL39PXr7fcC/xQgLi4fEALzCwH59fX5AQv6Ch4sLiAN//AWDQcEBAcN7PoSHiwpGgv87SIaFRISFRrt/AseLCgZCvvs3ywjISEj5/H+FCIvJxkK++zf1DIs2+Lr9Q8XIzEoGQv87eDW09jf5u/5BhgnNiocDf7w49rX3OPr9P4SHSo4LR4Q//To3tvh6O/4Ag8cLjwxIxUG+Ozi4OXs8/0GEyQxPzUnGQv98efk6fD3/wkWIzNCOiweEAL27Oju9PsEDBonN0U/MCIUBvrv7PH3/wgQHSo3R0M1JxkK/vTv9PsCCxIgLTtKRzkrHQ4C9/L3/QUNFyIwPktLPS4gGAb79fkABw8XJTNATk9AMSMUCP32+AEJER8qNUNRUUIzKRwS/u77AQkSHSk3RVNSQzUmFwv/+PoACRMgKjhGVVNGOCoeFO/47v8HERwqOEZUU0Q1JxgL//j4/QYVGik3RVNTRDgqHQr+9/X7Ag0ZJzVDU1NENicYCvDo6/f/CBclM0FQUkM1JhcG+/Lv8vwIFCMxQU5QQDIkFQf58Ovs+AQTIS89TE8/MSIUBfnu5+fz/w4dLDpJTj4wIRMF9+zt8fb/Dh0sO0lPQTAiFAb49vv/AwgUIDE+TVBCNCUXDAQFCA0RFRsoNERSVUc6LCEXExMXHB8iKDM+SVdbTUI2LSYiIiUqLS81PEdTX2JXS0I4NDExNDg7P0JJUl1oaF1SSEA+NS4sLC43QEBJU11fVEg+NCwlIR4eISUsND5IVFhLPzQpIBkTEBATGSAqND9LV0Q3Kx8VDAYDAwYNFSArN0RQPjEkFwwC+vb2+gIMFyQxPks+Mh4RBPnw6+/x+gQRHyw6STwwGw0A9A0JBQUIAA0bKjhBNiwaDP8IAwD8+fv/DBkmMj0wJRYMBfz59vPx9gIFEiAuNysfDgMH/fTw8PT9CAAOHCozJhwR+xEG//v7/wYQ/w0bKTImGQP26RIMCAgMEfUADRssLSEX7/ToHhkWFhnu+AIPHSstIBYA8+jfKSQc6/L7BRIfMCkfFAD06eHb4efv9u8IFSMwKh8V//Xr4+Hl7PP7Aw0aJjcvIhYE+O7n5erw9/8SER4rOS8hGAf78erp7vT7AwwWIi8/NikcDAD27u3y+AAIERomM0A4KSAQBfvz8fb8BAwVHSo3RD8xJRYK//f2+wEIDxklLTpHQTUqHw4E/Pr9BQsTHCcwPktHOi0hEwgA8AEIDxYfKzZBTks/MyYXDAT/BAsSGSIrOENRT0I2JRoPBxAGDRQbJDA7RlRURjkoHRIJBAcOFh0mMz5IVlZIOy0fGRMTEg4WHSc0P0pYVkk7KyAUDAYHDhYeKDVATVlYSz0wIBsMEhIUFBwnNEBMWVdJOywgFAwHBgoSGiUyPUpYWEo8Lx8TCgUEBw8XIjA8SlZWRzstHREUFe4ECxQjLTdFVFZHOSobDwYA/QAEEBwsOERSU0Q2JxsPBP359wAMFyQzQVBRQzQmGQ0D+/Xy+wcUITE/TVFCNCYYDP/48u32AxEfLT5LUUM2KBgM//n6/P8HFCExQE5TRTcrHBEIBgkLDRIbKDVCUldJPS8kGxYVFxocICgwPUpWXVFDOi4oJCMlKSsuMz1HUV5lWE1FPDYyMjQ3OjxBSVJcZ2thVk1ERD04NjU4OD1ETlZhZFdMQjkxKyYkJCcrMTlCTFhbT0U5LiYfGhcXGh8mLzpET11IPTAlGxQOCwsOExwlMjxJV0I3KR4TCgQAAAQKEx4rNUNSPjMkGAwD+/f3+wMNGCQxP088MCEVCP76//v9AgkVIS48RzswIBQI/fv08PX9AhIfKzZBMyYcEQYA+PPz+AADCBYkMj0vIBQI/gX/+/v/BgQHGCEvNycaDQP4DggFBQgO/QcSIC42JxcK//XsExAQDwgACRMhLzUmFgn99Ozn6Of07gIMFSMxMyIVCP307Onr8Pf/BxAYJjMzJhUI/vXu7O/z8BEKExwpNjQjFgoA9/Hw8/j/Bw8YIC08NikYDAL69PP3/AMLExwkMT43JxsQBf349/sBCA8YISw2QjwwIBQKAvz7/wUMExwlMDpHPzIkGQ4GAP8EChAXICk0PUpFOCkdEwsFBAgOGhwkLThBTkg6LiIYFgoICxIYICgxO0ZRTkExJxwYDhMPFSAjKzRASlRSRTkrIBsSDxIYHiYtN0BMWFZIOi8kHxUYFRohKTA5RVBcWkw9MiYcFxMWHCIqMTtFUl5bTj80KSMZHBwcIisyPUdUYFxPQDUpHxoVFhwiKjU9SFVhXlBDNS0lGhwbHyApMTxHVWFdT0E1KSAZFhQYHicuOkVSXl1QQjQrIhgUEhUaIyw3QlFdW00/MiYhGxkQERcfKDRATlpaSzwwJBoTDwsLFxkkMDxLWFhLPjAkHhEMEQULFB4rOEVUV0o6LiIYEAgBAAQPGyc0Q1FVSDktIRYNBv37/wsXJTNBT1dJOy0gFg0H//4DCxYkMkBQWEo7LyMYEg4MDA8VHiw5RlRcT0I1KyIcGhoaHR8pMkBMWWJVSD4zLCkmKCgqMDU9SVRgaV1RSEA6NzU2ODs+Q0pTXmlxZVtSSk1GQkFAQj5DS1JdZ2lcUkg/ODIuLCwuMjhASFNeYVRJPzUuJiIgICInLTY/SVZlT0I3LCQdGBUVFx0kLTdCUF9IPDElHBQPDAwPFRwmMTxKW0Y4LCAXDggFBggOFiEsOEdTRDUpHRMKBAD6BAQOGyYyQks/NikcEgkD//8DAAgUHjM9RTksIhcM/wUBAgULBxIgLjlANCYcEQb9CgcHCwEHEhwsNzsuIRYMA/oLEBASAhISHCs2OiseFAr/+fX1BwIFCxUeLTg3Kh0YCQD59vf77BEXFyEuNzYpHBIJ//r4+f4ECxIbJDE8OCkdEwoC/Pv9ARMPGx8oMz03Kx4UDAT+/vEGDBMaIzA5QzwvIRwOBwICBQoPFx4nMDtFPDAkHRIKBQUJDhQbIyw4QEpBMysiFg4JCQ0SGCAnMDlETUQ4LSIaEg4OERcdJCs0PklTST0xJx8XExIWGyEoLzhCTFdOQjYrJCAXFhofJSw0PEVQW1NIOzAqIBweHSUpMDdASVReWEpANS8kICEgJywzOkJMV2FcTkM4MScjJSMqLjU9RE5aZWBTRzs0KiYiJSowNz9GUFxnYVRJPTcsJykpLTA3P0hSXmljVko+Ny0oJCUpLzg/R1JfamRWSkE5MCspKCkuNT1GUV5pY1ZKPjYtJyUjJisyPENOW2djV0lANywmIyQnKS83QExaZWBTRzszKScgHh4kLDU8SFdiX1FFOTEnIB0aGiEkLTlET1xfUUU5MSYjGRQTFx8oNT9MWF5PQzcsJBwWDw0RGSMxPElWXE5CNisiGhMMCQ0WHy44RlRcTUE1KiIZEwwKDxUgMDtIVF1QRDctJR4ZFRMWHiQxPktYYVRIPjQsJSIhIiMoLjdEUV1mWU9EPDUxLy4uMDM4QktXZGxiV09HQT47Ozw9QUdMVl9sdmxiWVJLRkJBQUJGS1NaYmxuY1hPR0A7NzU1NztAR1BZY2dcUUg+NjEsKiosMTdAR1FbYVVJQTYuKCMhISMnLjg/SlVcUEQ7MCcgGxkZGyAnMTlFUGJMQDYrIhoUEgwTFh0qNT9LWUo+MigfEwwIBwkQFyQtOUZRRzwwJRkPBgUFBw4UHikzQktBNSofFQwFAwQTDRocJzRCRzwwJRoSCgQPBQcOFR0nMT9CNSshFw8IBAMSFxYdIScyQEE1KR8VDQcEEQcLEhkgKjNCPzQrHhoNCAUGCRUUGyMsNkI+MSceFQ4JERQMFhgfJi88Rj41LB8bDwsJCw8UHCMqMzxIQDMrIRgSDQwWEx0fJzE5Q0xDODAjGhUREBMXHCQrMztGT0Q4MCYeGBQTFxshKC85QEtUSDw1KiIcGBgbHyUsMztET1hMQTguJiAbHB8nKjA4QUlUXVFFPTMrJCAhIyguNDxETVZgVkk/Ny8pJSUoLjI4QElRWmVaUEU9Ni4qLCwvNjxES1RdaF5USUE7Mi4wLzI5QEdPV2BrY1hNRT01MTIyNTxCSlJZY25mXFFJQDg0NDM2PURLVFtlcGleUktCOjU3NTo+RExUXWdxa19TS0I7NjM0OD1DTFVcZ3JrYFZNRDs5NzY3O0JKUltmcWtfU0tBOzczMjU4P0dQWGNua19VTEI5NzEzNTY7Q0xXYWxnXFBHPjcyLi0sNDc/SFJfamZaTkY7NC8rKCopLzhBTVhjZllNRTs3LCkiICQrNDtIUl9kWExDOTMpIx4cIScuOERRXWNXSkA3LiciGxccICw0QU9bY1dMQjYuJyMbHhslKzVAUFxkWExBOTErJSIgIicwOURTX2dcUUg/ODAvKSspMDhASlhkbWJXTkU/OTc2Njc7QklRXWhzaF9XT0lFQ0JDREdNU1tkcH1zaWFaU09LSkpMT1RaYmlzdWtiWFBKRUFAP0FESlBZYWtuZFpQSEA7NzY1OD1BSFFaZGldVElAOjMuLS8vNTlAS1NeZFlPQzs0LSgmJCYtLzdDTVhqVUs/Ni0oIiEbHCQpMj1HUWFTST0yKB4ZGhUWHCQrOEJNWk1DOS0jGhUUFBYbISwzPkhWST4zKB8ZFBgTGx8hLDE8SU9GOS8mHhcTGBMWHCIsMjxGS0A2LCMbFhMSGx4iIy8yPUhKQDQqIhoWGBsVGR8mMDU/Skk/MykhGhYUFRcbJSgyN0FKSD4zKiIbFxodGh8oLDY9RlBKQDYtIx0ZGBodIigvNj5HUklANS0lHxwbHSUpMDU+REtWTEM5MSsiHx4hJCowNz9HUFtORToyKyYjISUsLjc7RUtUXlBIPjUxKSYmKS0yOEBHUFljV01COjIuKiotMzc/REtUXWdZUUY+OTIwLzE2O0FIUFhha19VS0M9NzMzNjo/RUxUXWVvZFpQSEI7Nzo6PUNJUFhfaXJoXVVORkA+Pz1ARk1UW2NsdWxiWlJJQz9BQENKT1ZeZ254cGVdVU1HRENCRUtRWGBocHpzZ19XTUhGRUNIS1FZYWpyfHRqYFdPSUZCQ0ZLUVlgaXJ8dWthWVBJR0VFRklPVl5ncHt0amBXT0hFQkFDRkxUW2RueHRpYFdPSUVCP0JDSFBXYWt0cGZcU0tEQDw7O0BFSlFaaHJvZVtRSUI9OTg3NztDTFVibG5kWk9HQTo0MDEyNj9GUF1obmJYTUU/NzEsLS4zO0JMWmVsYVdMQzs1LCkqKi44QUtZZGxhV01DOzUvKissMTlAS1lkbWJYTkU+ODQvMC80PERMXWdwZVtRSkM9ODY3NjpCSlNibHVqYVhRS0ZCP0BBREpSWmRve3FoX1lUUE1KS0xOVFtjbHZ/fHJqZF5ZVlVUVlpeZGtze350amFbVE9NSkxNT1RaYWt0d21iWlNMR0NCQ0NGTFNbZGxyZ1xUS0Q/PTo5Oj9FSlNcZ21jWE5HPjk2NDEyODxCS1ZhaWBUS0I6MSwtKSoxNTxGUVpoXFJGPDMrJigjJy0wN0JMVmJXTEE3LSkkIiMlKS81QEhTXVJIPjYtJiImJSctLzhASFFZT0Y/Ni4oIiUiJSwwNkBHUVVLQTgwKSQiIScpMDE6QUhSVUk/Ny8rJyYoJCgwMzpES1NUSD84LyglIyQmKjI1PEZMVlNIPzYvKSYlKSwvNjtCSlFZVUtCOjMtKCYoKzA3PENMU1xVSkE5My0qKSsyMztCR1BWYFdMQz41My4vLzU3PURLVFtlWk9GPjkzMTAzODtBSE9YX2hcUkpDPDk1NDc7QEVMVF1kbmFXTkdAOzk5Oz9ESlBYYWhxZVpSTEY/Pz1AQ0hOVl5mbHVqX1dPSERDQkJHTFJaYGhweW5jXFVPSUhJSEtRWWBkbHR9cmlhWlFOS0xMT1VaYWhveH92bmZfWFRSU1RWW11ja3J6f3pxaWFaVVNSUVNZXmVtdH1/fXRsY1tWVFNSVVtfZW12fn9/dWxkXVdVUVJVWl9lbXV+f392bWVdWVZUU1RXXGNqc3x/f3VsYlxfW1hWVllfZmdveH9+dGtjXFhTUU5PUlhdY2t0f3txaGRbVE5KSUlMUFZcZW55enBmYllRS0dERERIT1dganR5b2RfVk1HQD4/P0NLUltlcHdtY1pTSkQ/Ojs8PkZPV2FtdmxhWFBJQzs4OTg9RE1WYGt2bGJYUUlEOzk6Oj5FTVVga3dtYlpRS0dBPj4/QEhQWGFsenBlXVdQSkVDREJHTFVdZnF+dWtjXVZSTEpLTE1UW2Rtd397cmplX1tXVFVWWF1kbHR+f397dW5oZWFfYWFkaW50fH9/fHRrZWBbWFdYWFthZWx1fn91bWVfWFNRTk9PU1leZG12fHBnXlhRTEhIRkZKUFVcZW94bWNaVEtEQkA8PkNITlZfanVqX1VORT45Ojc4PUFIT1pkcGVbUEdBODY2MzU7P0RNV2BrYFdNRD03MzEyNDo9Q0xVXWZdUkpBOjcxNDMzOz5ETVRdYlpPSkE6NTEzMTQ5PURNVVxgVk5EPjgzMTA1NzxARU5VXV9VTUM8NzU0NTU2PUJHUFhgXlRNRD43MzIzNjg+Q0lQWWFdVExEPTg0MzQ7PUNJTlZdY19WTkZAOzY1Nzw+QklQV2BnX1ZNRkA7OTg6P0FFT1NaY2thWFFJQ0E+Pj1DRUpSWGBocGVbUktGQ0A/QURJTlZcY2tzaF5WUEpHQ0VHSk9TW2BocHhsY1tUTUlHR0lNUVddZGtzfG9mXlhST01LT1FXW2JqcXl/dGpkXVZSUVBQVVpfZWx0fX94b2dhW1dWVVdZX2VrcHh/f310bmZfW1paWl1iZ210fH9/f3lya2VgX2BhY2dqcHd/f39/fXVtZ2NhYGBiZ2xzeX9/f39/d3BpZGNiYWNobXN7f39/f395cGpmZGBhY2hscnp/f39/f3lya2dlYmJjZmtwd39/f39/eHBqa2dkYmNma3F0e39/f393cGplYV5cXGBkaW51fn9/fXRwZ2BcWldYWVthaHB5f398cm5mX1lTUVJSVlxja3R9f3pwamJaVU9NTU9SV19lb3l/eG9nX1hSTUpKSkxTW2Nsd392bWRdVlBKR0hHS1FZYmt1f3dsZV1WUEpHSUlMUlpianV/eG5mYFlUTkxMTVBVXWRtdn95cWliXVhTUFFSVFhgaHF6f392b2hiXllXWFhaX2Zudn9/f3x1cGpmYV9gYWNnbXV9fw=="},"RightUpLeg":{"min":[-0.1271,-0.1283,-0.1398],"dims":[21,43,21],"data":"f398dG9oZGFeXV5fYWdrcHd/f39/f3xza2dgW1hTU1RUV11gZ294f39/f3VrY15WUU5KSUtLTlRZXmZweH9/eG5kW1VPSERBQEJCRUxQV15pcnt/c2leVU1IQT06OTs7PkVKUFhjbHZ/bmRYUElDOzY2MjQ0OD9DS1NeaHJ8a2FVTEM+NjIxLi0vMztBRk9aZG55aF5SSUA8My4uKiosMDU9Q0xYYmx2Z11SRz87MSwtKCgtLjM8QktWYWt1Z11QSD86MS0tKCgtLjU9QkpWYWt2aF9TSUA8My4uKiouMDU+Q0xXYmx2amFWS0M+ODExLS0yMzhBRk9ZZW55bmVaT0dCOjY1MTI3NzxFSlNdaHF7cmleVE1IQDw7ODg8PkJKT1hhbHZ/d25lW1NOSUNCP0BERUlRV15mbnd/fnVrYltWUUxJSEhLTVFYYFtkbHR+f3RrZFxXWlVUUVJVV1thaVlhaXJ8fXNqYlpVUExJR0ZFR0hMUVhfaHF7e3FoYVlTTkpHRURERUlMUldfaHB6e3BnYFhSTUlGRENERUhMUldfaHB7e3BnYFhSTElFRERERklNUllgaXJ7fHFoYFhSTklIRURGSEtPVFpia3J9fXJpYlpUUEtJRkdISk1RVlxkbXV+f3RrYltVUU1KSUhKTFBUWV9mb3Z/f3ZtZl9YVE9MS0tNT1JWW2FocXl/f3lwaGBbVVJPTk1PUVVZXmRrdHx/f310bGVeWFVSUFBRU1dbYGdtd39/f393bmhgWldUUlJTVVhdYmlxen9/f396cmliW1hUU1NUVlpeY2tyen9/f397cmliXVhUU1JTVlpeZGpyen9/f396cmhhWlZSUVBRVFdcYmlwen9/f396cWdfaWFcV1RSU1ddZWZtdn9/f395b2ZeYVlTTkxKS1BWX2Fpcnx/f395bmVcXFNNSEVERktRWWFrb3h/f395b2RdWVBIRUJBQkZLU1xmbHZ/f396b2ZdWE5IQz8/P0NJT1ljanN+f398cWhfWlFIQz88PUFHT1hjaXN9f39/dWtjXlRLRkE+P0JHUFlkaXN+f39/eXFoYlhRS0ZCQkZMU1xnanR/f39/f3duaF9XT0pJSEtRWWJsbnd/f39/f351b2ZdV1NRUVNYYGhycnx/f39/f39+dW1nYVxZWFleYmhueH9/f39/f39/f3dwamZjYmRna3B3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aWdnaWpudHZ5fH9/f39/f39/f3t2cnFxcnR4fX9/f39/f39/f39/f39/fHp6fH9/f39/f39/f39/f39/f39+enh1c3V2eHt/f39/f39/f39/f3t1cW9sa2xtb3N5fn9/f39/f39/e3RuamdkYmRlZ2pxdnx/f39/f396dG1mYmBiYF5eYGJmbHF4f39/f311bmhgW1pVVFJSVFZbYWZudn9/f3lwaWFaU1BLR0VFSUpQVl1lbXZ/enFqY1lRSkdAPTw8PUFHTFNdZnB6cmlgWlNKQj46NzU1NTk+RU5WX2t2bWFYUkxEPTgxLi0tMjY7QUpSW2VxaF1TS0Y9NTMtKikqLDA1PEZNV2FuYldNRUE5MSwtKiorLDAyOURMVWBrX1NJQTw4MS4nKCUlKCsxOEFIUVtoW1JIQDoxLCwmIyMkJyowNkBGT1tmWk5EPDcvKiopKScpKi4zOEBHUFplWE5COzczLiokJiIiJSgtND1DTVZiWE1DOjcvKiokJSImJCstND5ETFdiWExCOjYyKywqKSYnKSwzNz5HT1hjWE9FPjk0LC0mJSQkJioxNTxFTFZiWlBGPTkyLi0oJiUpKys0Nj1HTlhjW1JHQDs5MzIuLC0pLjE2PUNLU1xmXlZNRT88NDAuLC4sLjI3PURLVV1oY1tQR0A+NzQ0MDQzNjg8Q0hPWGBqZl5US0RDPjg4MzM3NzxBSE9WXWVua2NbU0pEPzw7ODc7Oz9FS1JaY2x1cWhfV09JRkFBPz5AQ0dMUFlfZ3B5dWtlXVZQTEVDQkBCR0pPWF9mbnZ+e3NrY1pUUUtISEZHTVBVXGRsc31/f3hvaGBaV1JOTk1NUlhdZGpyen9/f352b2hhW1ZUU1JUVlxiaHB5f39/f399dW1nY15aWVpaXmRobnZ+f39/f39/fHRuZ2NfXV9gZGlvdn5/f39/f39/f3dxbGdjYmNmaW91e39/f39/f39/e3NsZmViYWJlaG10fX9/f39/f39/eHBpZGJgX19iZWtyen1/f39/f39/dm5oY2FfXWBiZGtyen1/f39/f39+dW1nYmBeXV5jZmtze3x/f39/f39/dm5oY2FgX2BkaG10fH1/f39/f39/eXFrZ2VkY2RoanB3f39/f39/f39/fnZwbGpoZ2ltcXZ8f39/f39/f39/f313dHBubG9yeH1/f39/f39/f39/f39/fHh1dXZ6f39/f39/f39/f39/f39/fnx8fn9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/fnt4d3h6fH9/f39/f39/f39/f396dnRxb3Fyc3d6f39/f39/f39/f3lzb21qaWdmaGtudHl/f39/f39/e3RtaWNfXlpbXWBkam92f39/f399c2pjX1pVU1FRU1VZYGVud39/f3pzbGNbVlJNS0lJS01SWF5ncHh/e3JrZV1VT0tHRUNDRUdNUVlianR/dmxkXlZOSUU/PTw8QEFITFVeZW95cGdfWFBIQ0E7ODg5Oz5ESVBaYWx3a2FZUk1EPj07OTk5Oz5DSFBYYGp0aF1VTkpEPzs2NjQ0Njo+RUxVXWZxZlxUTUc/Ojk0NDI1NTk/RExUW2RwY1hQSUY9OTk3NzQ2NzpARUxUW2RuY1lPSUVAPDgzMzExMzc9QkhSWGJrYlhOSUU9OTUzNDE0Mzc+QUlSWGFsYldPR0U9OTs3NzQ1Nzo/REtTW2NtY1lRS0dBPTo1MzIzNDg+QklSWmFrZltRSkdBPTw3NzQ1OTpAREpTW2NtZ11UTUlFQUA9Ozs6PEBDSlBXXmZwamFYUk5IQkA8Ozw7PUBFS1BYYWpzb2VcVE9LRUJBPkE+QkVIT1RcZGx1cmhfWFNQS0hHQ0FFRUpQVVthaXF5dm5lXlhTTUpJRkZJSU1TWF5mbnd/fHNrYlxXUk5OTExOUFNZXWNrc3t/f3hwZ2FeWVNSUE5QVVdcZGtyeH9/f353bmdhXVlWVVRVWl1iaW92f39/f397dG1nZF9dXFtdYGRob3V8f39/f39/enRtaWRhYWBhZGpudH1/f39/f39/f3l0b2pnZ2dnanB0e39/f39/f39/f396dXBta21ucXV8f39/f39/f39/f39+enVxcHF0d3p/f39/f39/f39/f395dXNxb3Fzdnt/f39/f39/f39/f313c3Fvbm5wdHh/f39/f39/f39/f3t1cnBubW5xc3h/f39/f39/f39/f3p1cW9tbG1xdHl/f39/f39/f39/f3t2cnBvbm5zdnt/f39/f39/f39/f355dXNycXN2eX5/f39/f39/f39/f399enh2dXd6fn9/f39/f39/f39/f39/f317e3x/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/"},"Spine":{"min":[-0.1487,-0.025,-0.1354],"dims":[21,22,21],"data":"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HyMsMzdAS1dhX1ZKPzYyKyMjIRwdIyQpMzhBS1dhYVhMQTgzLSUhIx4iJiYrNjlCTVljY1pPRDw3MiklJyIjKSovOT1GT1tlZ15USkA5Ni4qLScoLy80PUNKUl9qbGJZTkZAPTQxMi4vNTU6QkhPWGNucGhfVk1GQzs4OTU3OzxBSE9VX2l0d29mXFRNS0VBPj4/Q0ZJUFddZW96fnVuZV5WU05KSkpITE9SWGBmbHZ/f353bmZgXFlUUlNTVFlcYGhtdX9/f39/d29pZmNfXV5dYGNlanJ3fn9/f39/f3t1cG5qaWloam5wdXx/f39/f39/f3p0b21qaGloam5ydXt/f39/f39/eHFqZmRfXl9fYGRoa3F5f39/f351b2lhXFtXVFVVV1lgZGhveH9/f3ZuZ2FZVFJNTExNTlJYW2FocXt/enBnYVtTTktHQ0VGRklQWFpganR9dWpiWVRLRkNAPTw/P0JJUVNbZG94cWddVU9HQD07NjU6OTxDTE1VX2pzbmJZUEtDPDc3MjE2NDc/R0lSWmZwbGFWTkpBODU1Li0yMDQ7RE9bWGNual9US0k+NjEyKyswMTI3QUxYVmFtal9TSko/NTEwKysuMDE2QUtXVmBsa19US0o/NjExLysuMTI3QEtWVmBsbGFXTU1CODQyMS0uNDQ5QklPV2Jub2RYUFBFPTY1NTExNzc8REtRWmNvcmhdVE1IQjw4OjU2PD5ASVBWX2hzd21iWVJNSEE+Pzs8QUFGTFVaY2x3e3JoX1lTTkhFRkRDSEtNVFxhaHF8f3lvZl9aVlFOTk5OUVRVWmJob3d/f392bmdjX1hWVVVUV1tdYmlwdn9/f39/d3BqZ2JfX19eX2Rma3J5f39/f39/f3lzcW1pZ2hoaW5wdHt/f39/f39/f39/e3d0cnNydHh7fn9/f39/"},"Neck":{"min":[-0.0913,-0.0528,-0.0731],"dims":[14,14,14],"data":"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"}}`),radii:{LeftArm:[[.083,.0491],[.25,.062],[.417,.0573],[.583,.0472],[.75,.0424],[.917,.0506]],RightArm:[[.083,.0491],[.25,.062],[.417,.0573],[.583,.0472],[.75,.0424],[.917,.0506]],LeftForeArm:[[.083,.0468],[.25,.0538],[.417,.0477],[.583,.0394],[.75,.0402],[.917,.0405]],RightForeArm:[[.083,.0468],[.25,.0538],[.417,.0477],[.583,.0394],[.75,.0402],[.917,.0405]],LeftHand:[[.083,.022],[.25,.022],[.417,.022],[.583,.022],[.75,.022],[.917,.022]],RightHand:[[.083,.022],[.25,.022],[.417,.022],[.583,.022],[.75,.022],[.917,.022]],LeftUpLeg:[[.083,.0903],[.25,.1055],[.417,.1064],[.583,.0834],[.75,.0626],[.917,.0681]],RightUpLeg:[[.083,.0944],[.25,.0995],[.417,.1064],[.583,.0834],[.75,.0626],[.917,.0681]],LeftLeg:[[.083,.0611],[.25,.0799],[.417,.0635],[.583,.0464],[.75,.0428],[.917,.0475]],RightLeg:[[.083,.0611],[.25,.0799],[.417,.0635],[.583,.0464],[.75,.0428],[.917,.0475]]}}},mc=.1,hc=new Map;function gc(e){let t=typeof Buffer<`u`?Buffer.from(e,`base64`):Uint8Array.from(atob(e),e=>e.charCodeAt(0));return new Int8Array(t.buffer,t.byteOffset,t.byteLength)}function _c(e,t){let n=new Set([t,e.parent[t],...e.children[t]]);return/^(Left|Right)Arm$/.test(e.names[t])&&n.add(e.parent[e.parent[t]]),/^(Left|Right)UpLeg$/.test(e.names[t])&&n.add(e.index.Spine),n}function vc(e){let t=pc[e.model];if(!t)return null;if(hc.has(e.model))return hc.get(e.model);let n=Object.entries(t.grids).map(([n,r])=>{let i=r.dims.map(e=>(e-1)*t.step/2),a=r.min.map((e,t)=>e+i[t]);return{b:e.index[n],min:r.min,dims:r.dims,data:gc(r.data),centre:a,reach:H(i)}}),r=Object.fromEntries(Object.entries(t.radii).map(([t,n])=>[e.index[t],n])),i={step:t.step,grids:n,radii:r,skip:new Map(Object.keys(r).map(t=>[+t,_c(e,+t)]))};return hc.set(e.model,i),i}function yc(e,t,n){let[r,i,a]=t.dims,o=e.step,s=(n[0]-t.min[0])/o,c=(n[1]-t.min[1])/o,l=(n[2]-t.min[2])/o;if(s<0||c<0||l<0||s>r-1||c>i-1||l>a-1)return mc;let u=Math.min(r-2,Math.floor(s)),d=Math.min(i-2,Math.floor(c)),f=Math.min(a-2,Math.floor(l)),p=s-u,m=c-d,h=l-f,g=(e,n,r)=>t.data[((u+e)*i+d+n)*a+f+r],_=g(0,0,0)*(1-p)+g(1,0,0)*p,v=g(0,0,1)*(1-p)+g(1,0,1)*p,y=g(0,1,0)*(1-p)+g(1,1,0)*p,b=g(0,1,1)*(1-p)+g(1,1,1)*p;return((_*(1-m)+y*m)*(1-h)+(v*(1-m)+b*m)*h)/1e3}var bc=new WeakMap;function xc(e,t){let n=bc.get(t);return n||(n=e.grids.map(e=>R(t.P[e.b],G(t.R[e.b],e.centre))),bc.set(t,n)),n}function Sc(e,t,n,r=null){let i=mc,a=-1,o=xc(e,t);return e.grids.forEach((s,c)=>{if(r?.has(s.b)||H(z(n,o[c]))-s.reach>i)return;let l=yc(e,s,G(K(t.R[s.b]),z(n,t.P[s.b])));l<i&&(i=l,a=s.b)}),{d:i,bone:a}}function Cc(e,t,n,r=null,i=.01){let a=[0,1,2].map(a=>{let o=[0,0,0];return o[a]=i,Sc(e,t,R(n,o),r).d-Sc(e,t,z(n,o),r).d}),o=H(a);return o>1e-9?B(a,1/o):null}var wc=e=>/^(Left|Right)Arm$/.test(e)?.5:/^(Left|Right)UpLeg$/.test(e)?.3:0,Tc=(e,t)=>/Hand$/.test(e.names[t])?e.index[e.names[t].replace(/Hand$/,`HandMiddle1`)]:e.children[t][0];function Ec(e,t,n,r){let i=e.radii[r],a=Tc(t,r);if(!i||a===void 0)return[];let o=n.P[r],s=z(n.P[a],o),c=wc(t.names[r]);return i.filter(([e])=>e>=c).map(([e,t])=>({p:R(o,B(s,e)),r:t,t:e}))}var Dc=/^(Spine\d?|Neck|Head)$/,Oc=(e,t)=>e.children[t].find(t=>Dc.test(e.names[t]))??Tc(e,t),kc=.25;function Ac(e,t,n,r,i,a=null){let o=Sc(e,n,r,a);if(o.d>=i||o.bone<0)return r;let s=n.P[o.bone],c=Oc(t,o.bone),l=z(c===void 0?s:n.P[c],s),u=z(r,R(s,B(l,V(l,l)>1e-9?gs(V(z(r,s),l)/V(l,l),0,1):0))),d=H(u)>1e-4?B(u,1/H(u)):Cc(e,n,r,a);if(!d)return r;let f=new Set(e.grids.map(e=>e.b).filter(e=>e!==o.bone)),p=t=>Sc(e,n,R(r,B(d,t)),f).d>=i,m=0,h=.02;for(;!p(h)&&h<kc;)m=h,h=Math.min(kc,h*2);for(let e=0;e<10;e++){let e=(m+h)/2;p(e)?h=e:m=e}return R(r,B(d,h))}var jc=.03;function Mc(e){let t=vc(e);return t&&{body:t,skip:new Set(e.names.map((e,t)=>/(Arm|ForeArm|Hand|Neck|Head.*)$/.test(e)?t:-1).filter(e=>e>=0))}}function Nc(e,t,n,r,i,a){let o=0,s=wc(t.names[r]);for(let[t,c]of e.radii[r]??[]){if(t<s)continue;let{d:l,bone:u}=Sc(e,n,R(i,B(z(a,i),t)),e.skip.get(r));u>=0&&(o=Math.max(o,c-l))}return o}function Pc(e,t,n,r){let i={depth:0,p:null,into:-1};for(let a of Ec(e,t,n,r)){let{d:t,bone:o}=Sc(e,n,a.p,e.skip.get(r)),s=a.r-t;o>=0&&s>i.depth&&(i={depth:s,p:a.p,into:o,r:a.r})}return i}var Fc={twist:[-85,85],flex:[-70,70],dev:[-35,20]},Ic={twist:[-50,50],flex:[-40,40],dev:[-25,15]},Lc=.5,Rc=[0,0,-1],zc=72,Bc=.02,Vc=400,Hc=.5,Uc=100/(180/Math.PI),Wc=180/Math.PI,Gc=70,Kc=30,qc=2;function Jc(e,t=8,n=400){let r=0;for(let i of[`twist`,`flex`,`dev`]){let a=e[i],o=a>=0?Ic[i][1]:-Ic[i][0],s=a>=0?Fc[i][1]:-Fc[i][0],c=Math.abs(a);r+=c<=o?(c/o)**2:1+t*((Math.min(c,s)-o)/Math.max(1e-6,s-o))**2+(c>s?n*((c-s)/s)**2:0)}return r}function Yc(e,t){let n=U(z(t,e)),r=Math.acos(gs(-n[1],-1,1))*Wc;return qc*(Math.max(0,r-Gc)/Kc)**2}function Xc(e,t,n,r){let i=Ds(W(t,K(e)));i[3]<0&&(i=i.map(e=>-e));let a=2*Math.atan2(V([i[0],i[1],i[2]],n),i[3]),o=cc(B(n,a)),s=sc(rc(i,ic(o))),c=G(Os(o),r),l=U(z(c,B(n,V(c,n)))),u=ms(n,l);return{twist:a*Wc,flex:V(s,l)*Wc,dev:V(s,u)*Wc,axF:l,axD:u}}function Zc(e,t=0){let n=0;for(let[r,[i,a]]of Object.entries(Fc)){let o=(e[r]-(i+a)/2)/((a-i)/2),s=Math.max(0,Math.abs(o)-1+t);n+=o*o+Vc*s*s}return n}function Qc(e,t,n,r,i,a,o,s=0,c=!1){let l=e.index,u=l[`${n}Arm`],d=l[`${n}ForeArm`],f=l[`${n}Hand`],p=t.P[u],m=H(z(t.P[d],p)),h=H(z(t.P[f],t.P[d])),g=z(Vs(p,i,m,h,Hs(e,t)),p),_=H(g),v=B(g,1/Math.max(_,1e-9)),y=gs(_,Math.abs(m-h)+1e-4,(m+h)*.9995),b=(m*m-h*h+y*y)/(2*y),x=Math.sqrt(Math.max(m*m-b*b,0)),S=e=>z(e,B(v,V(e,v))),C=U(H(S(a))>1e-6?S(a):ms(v,Math.abs(v[1])<.9?[0,1,0]:[1,0,0])),w=ms(v,C),T=R(p,B(v,y)),E=e.restWorldRot,D=G(K(E[d]),z(e.restWorldPos[f],e.restWorldPos[d])),O=G(K(E[d]),o),k=W(K(E[d]),E[f]),ee=G(K(t.R[f]),Xs(e,t,n).l),A=e=>{let t=R(B(C,Math.cos(e)),B(w,Math.sin(e))),n=z(T,R(p,R(B(v,b),B(t,x)))),i=W(Es(D,O,n,t),k),a=Xc(i,r,U(n),G(i,ee)),o=Math.abs(Math.atan2(Math.sin(e),Math.cos(e)))/Uc,l=R(p,R(B(v,b),B(t,x)));return{pv:t,need:a,elbow:l,cost:(c?Jc(a)+Yc(p,l):Zc(a,s))+Hc*(1-Math.cos(e))+Vc*Math.max(0,o-1)**2}},te=e=>H(S(e))>1e-6?Math.atan2(V(e,w),V(e,C)):0;return{at:A,angleOf:te,softmin:()=>{let e=Array.from({length:zc},(e,t)=>A(2*Math.PI*t/zc)),t=Math.min(...e.map(e=>e.cost)),n=e.reduce((e,n)=>R(e,B(n.pv,Math.exp(-(n.cost-t)/Bc))),[0,0,0]);return H(n)>.001?te(n):2*Math.PI*e.findIndex(e=>e.cost===t)/zc},miss:Math.max(0,_-y)}}function $c(e,t,n,r,i,a,o,{toward:s,w:c=1,margin:l=0,comfort:u=!1}={}){let d=Qc(e,t,n,r,i,a,o,l,u),f=s?d.angleOf(s):d.softmin(),p=d.at(c*Math.atan2(Math.sin(f),Math.cos(f)));return{pole:p.pv,need:p.need,cost:p.cost,miss:d.miss,elbow:p.elbow}}var el=3,tl=1,nl=.005,rl=.15,il=4,al=(e,[t,n])=>Math.min(n,Math.max(t,e));function ol(e,t,n,r,i,a){let o=B(z(t.P[r],t.P[i]),1/H(z(t.P[r],t.P[i]))),s=W(t.R[i],W(K(e.restWorldRot[i]),e.restWorldRot[r])),{axF:c,axD:l,...u}=Xc(s,a,o,G(W(s,K(t.R[r])),Xs(e,t,n).l)),d=Object.fromEntries(Object.entries(u).map(([e,t])=>[e,al(t,Fc[e])])),f=W(W(ws(R(B(c,d.flex),B(l,d.dev)),Math.hypot(d.flex,d.dev)),ws(o,d.twist)),s);return Ns(e,t,i,t.P[i].slice(),ws(o,Lc*d.twist)),Ns(e,t,r,t.P[r].slice(),W(f,K(t.R[r]))),u}function sl(e,t,n){let r=e.index,i=r[`${n}Arm`],a=z(t.P[r[`${n}ForeArm`]],B(R(t.P[i],t.P[r[`${n}Hand`]]),.5));return H(a)>nl?a:Ls(e,t,i,Rc)}function cl(e,t,n,r,i,a,o){let s=e.index[`${n}Hand`],c=W(K(t.R[s]),i.R),l=G(K(t.R[s]),z(i.pos,t.P[s])),u=Os(fc(Ds(t.R[s]),Ds(W(r.R,K(c))),a)),d=t.P[s].slice(),f=e=>z(r.pos,G(e,l));return{goal:u,plane:sl(e,t,n),wristAt:o===`wrist`?()=>d:o===`palm`?f:e=>R(d,B(z(f(e),d),a))}}function ll(e,t,n,r,i,a,o){let s=e.index,c=s[`${n}Arm`],l=s[`${n}ForeArm`],u=s[`${n}Hand`],{w:d}=r,{goal:f,plane:p,wristAt:m}=cl(e,t,n,r.palm,r.measure(t),d,r.pin),h=$c(e,t,n,f,m(f),p,i,{toward:r.pole,w:d,comfort:r.comfort}),g=0,_=0,v={twist:0,flex:0,dev:0};for(let r=0;r<el;r++){let a=m(r?t.R[u]:f);_=Gs(e,t,n,a),g=Js(e,t,c,l,u,a,h.pole,i,`elbow`),v=ol(e,t,n,u,l,f)}a[`hold_${o}`]={w:d,miss:Math.max(0,g),...v,swivel:pl(t,c,l,u,p),..._>145?{fold:_}:{},...r.second?{second:r.second}:{}},a[`arm_miss_${o}`]*=1-d}function ul(e,t,n,r){let{goal:i,plane:a,wristAt:o}=cl(e,t,n,r.palm,r.measure(t),r.w);return Qc(e,t,n,i,o(i),a,Rc,0,r.comfort)}function dl(e,t,n,r,i,{shoulder:a=!1}={}){let{goal:o,plane:s,wristAt:c}=cl(e,t,n,r,i,1),l=c(o),u=$c(e,t,n,o,l,s,Rc,{margin:rl}),d=e.index,f=t.P[d[`${n}Arm`]],p=H(z(t.P[d[`${n}ForeArm`]],f)),m=H(z(t.P[d[`${n}Hand`]],t.P[d[`${n}ForeArm`]])),h=Math.max(0,zs(p,m,145)-H(z(l,f))),g=a?$c(e,t,n,o,l,s,Rc,{comfort:!0}):u;return(a?Jc(g.need)+Yc(f,g.elbow)+fl(e,t,n,f,g.elbow,l):u.cost)+tl*((u.miss*100)**2+(h*100)**2)}function fl(e,t,n,r,i,a){let o=vc(e),s=e.index;return o?il*(Math.max(Nc(o,e,t,s[`${n}Arm`],r,i),Nc(o,e,t,s[`${n}ForeArm`],i,a))*100)**2:0}function pl(e,t,n,r,i){let a=U(z(e.P[r],e.P[t])),o=e=>z(e,B(a,V(e,a)));return ks(o(z(e.P[n],e.P[t])),o(i))}var ml=(e,[t,n])=>Math.min(n,Math.max(t,e));function hl(e,t,n){let r=e.index,i=r[`${n}Hand`],a=r[`${n}ForeArm`],o=e.restWorldRot,s=U(z(t.P[i],t.P[a])),c=W(t.R[a],W(K(o[a]),o[i])),{axF:l,axD:u,...d}=Xc(c,t.R[i],s,G(W(c,K(t.R[i])),Xs(e,t,n).l)),f=Object.fromEntries(Object.entries(d).map(([e,t])=>[e,ml(t,Fc[e])]));if(Object.keys(d).every(e=>Math.abs(d[e]-f[e])<1e-6))return null;let p=W(W(ws(R(B(l,f.flex),B(u,f.dev)),Math.hypot(f.flex,f.dev)),ws(s,f.twist)),c);return Ns(e,t,i,t.P[i].slice(),W(p,K(t.R[i]))),{need:d,got:f}}var gl={l:`Left`,r:`Right`},_l=e=>{let t=Math.min(1,Math.max(0,e));return t*t*(3-2*t)},vl=[0,0,1],yl=[`UpLeg`,`Leg`,`Foot`],bl=(e,t=[0,0,0])=>Array.isArray(e)||ArrayBuffer.isView(e)?[e[0],e[1],e[2]]:t,xl=(e,t=0)=>typeof e==`number`&&Number.isFinite(e)?e:t;function Sl(e,t,n,r,i,a){let o=n.length;for(let s of n){let n=e.index[s];Ns(e,t,n,t.P[n].slice(),W(Ss(r/o),W(xs(i/o),Cs(a/o))))}}var Cl=.99,wl=.9995;function Tl(e,t,n,r,i,a,o,s){let c=H(z(t.P[r],t.P[n]))+H(z(t.P[i],t.P[r])),l=z(a,t.P[n]),u=H(l),d=Cl*c,f=.009500000000000064*c;if(u<=d||u-wl*c>.05)return a;let p=d+f*(1-Math.exp(-(u-d)/f));return o[`reach_over_${s}`]=Math.max(0,u-wl*c),R(t.P[n],B(l,p/u))}var El=.095,Dl=2,Ol=new Map;function kl(e,t){let n=`${e.model}|${t}`;if(Ol.has(n))return Ol.get(n);let r=(90-t)*Math.min(1,Math.max(0,(t-45)/27)),i=Mc(e),a=n=>{let r=Ms(e);return[[`Left`,-1],[`Right`,1]].every(([a,o])=>{let s=e.index[`${a}Arm`],c=e.index[`${a}ForeArm`],l=e.index[`${a}Hand`],u=e.index[`${a}HandMiddle1`];return Ns(e,r,s,r.P[s].slice(),Cs(o*t)),Ns(e,r,c,r.P[c].slice(),Cs(o*n)),[.5,.75,1].map(e=>R(r.P[c],B(z(r.P[l],r.P[c]),e))).concat([r.P[u]]).every(e=>Sc(i.body,r,e,i.skip).d>=El)})},o=r;if(i&&r>0){for(let e=0;e<=r;e+=.5)if(!a(e)){o=Math.max(0,e-Dl);break}}return Ol.set(n,o),o}var Al=60,jl=e=>e-360*Math.round(e/360);function Ml(e,t,n){let r=jl(t),i=jl(n),a=(Math.max(Math.abs(r),Math.abs(i))-Al)/60;if(a<=0)return null;let o=a>=1?1:a*a*(3-2*a);return{yaw:e,R:W(Ss(e),W(xs(r*o),Cs(i*o)))}}function Nl(e,t,n={}){let r=Ms(e),i={},a=xl(t.arm_rest,72),o=xl(t.arm_hang)&&xl(t.arm_hang)*kl(e,a);for(let[n,i,s]of[[`Left`,-1,`l`],[`Right`,1,`r`]]){let c=e.index[`${n}Arm`],l=e.index[`${n}ForeArm`],u=o*(1-Math.min(1,Math.max(0,xl(t[`armw_${s}`])+xl(t[`hangoff_${s}`]))));Ns(e,r,c,r.P[c].slice(),Cs(i*a)),u&&Ns(e,r,l,r.P[l].slice(),Cs(i*u))}for(let[n,i]of Object.entries(gl)){let a=xl(t[`abend_${n}`]),o=xl(t[`aswing_${n}`]),s=e.index[`${i}ForeArm`],c=e.index[`${i}Arm`];a&&(Ns(e,r,s,r.P[s].slice(),xs(-a)),Ks(e,r,i)),o&&Ns(e,r,c,r.P[c].slice(),xs(-o))}Sl(e,r,[`Neck`,`Head`],xl(t.head_yaw),xl(t.head_pitch),xl(t.head_roll)),Sl(e,r,[`Spine`,`Spine1`,`Spine2`],xl(t.spine_yaw),xl(t.spine_pitch),xl(t.spine_roll));let s=e.index.Hips,c=xl(t.yaw);Ns(e,r,s,r.P[s].slice(),W(Ss(c),W(xs(xl(t.pitch)),Cs(xl(t.roll)))));let l=z(bl(t.root,r.P[s]),r.P[s]);for(let e=0;e<r.P.length;e++)r.P[e]=R(r.P[e],l);let u=Ml(c,xl(t.pitch),xl(t.roll)),d=u?.R??Ss(c);for(let[n,a]of Object.entries(gl)){if(!t[`foot_${n}`])continue;let o=bl(t[`foot_${n}`]);i[`leg_miss_${n}`]=Js(e,r,e.index[`${a}UpLeg`],e.index[`${a}Leg`],e.index[`${a}Foot`],o,G(d,bl(t[`knee_${n}`],vl)),vl,`knee`);let s=Gs(e,r,a,o,yl);s>150&&(i[`leg_fold_${n}`]=s),Ys(e,r,a,xl(t[`fyaw_${n}`],c),xl(t[`fpitch_${n}`]),u)}for(let a of n.armOrder??[`r`,`l`]){let o=gl[a],s=xl(t[`armw_${a}`]),c=e.index[`${o}Arm`],l=e.index[`${o}ForeArm`],u=e.index[`${o}Hand`],f=U(G(d,bl(t[`elbow_${a}`],[0,-1,-.3])));if(i[`arm_miss_${a}`]=0,s>1e-4&&n.handTarget){let t=r.P[u].slice(),d=R(t,B(z(n.handTarget(a,r,i)??t,t),s));n.keepOut&&(d=n.keepOut(a,r,d));let p=n.push?.(a);p&&(d=R(d,p));let m=n.skinPush?.(a);m&&(d=R(d,B(m,_l(s)))),n.softReach&&(d=Tl(e,r,c,l,u,d,i,a));let h=R(B(U(z(r.P[l],B(R(r.P[c],t),.5))),1-s),B(f,s));i[`arm_miss_${a}`]=Js(e,r,c,l,u,d,h,Rc,n.foldFree?null:`elbow`);let g=Gs(e,r,o,d);g>145&&!n.foldFree&&(i[`arm_fold_${a}`]=g)}Qs(e,r,o,xl(t[`wtwist_${a}`]),xl(t[`wflex_${a}`])),ec(e,r,o,t[`fingers_${a}`]);let p=n.hold?.(a,r);(!p||p.w<1)&&n.grip?.(a,r,i),p&&ll(e,r,o,p,Rc,i,a);let m=n.swivel?.(a);m&&(Zs(e,r,o,m*_l(s)),p||hl(e,r,o)),n.afterArm?.(a,r,i)}return{s:r,diag:i}}var Pl=e=>typeof e?.prop==`string`,Fl=e=>!Pl(e)&&e?.follow!==void 0,Il=e=>!!e&&typeof e==`object`&&!Array.isArray(e)&&[`prop`,`follow`,`pivot`,`axis`,`channel`,`keys`,`fall`].every(t=>e[t]===void 0),Ll=e=>!!e&&typeof e==`object`&&!Il(e);function Rl(e,t,n,r){let i=t.props[r.prop];return B(i.origin.map(t=>n.P[e.index[t]]).reduce((e,t)=>R(e,t),[0,0,0]),1/i.origin.length)}function zl(e,t,n,r){let i=Xs(e,n,gl[t.props[r.prop].hand]),a=Rl(e,t,n,r),o=e=>R(B(i.d,e[0]),R(B(i.l,e[1]),B(i.n,e[2]))),s=U(o(r.along??[0,0,1])),c=z(i.d,B(s,V(i.d,s)));Math.hypot(...c)<1e-6&&(c=z(i.l,B(s,V(i.l,s)))),c=U(c);let l=ms(c,s);return{pos:R(a,o(r.at??[0,0,0])),R:[[c[0],s[0],l[0]],[c[1],s[1],l[1]],[c[2],s[2],l[2]]]}}var q=(e,t)=>({pos:R(e.pos,G(e.R,t.pos)),R:W(e.R,t.R)}),J=(e,t)=>({pos:G(K(e.R),z(t.pos,e.pos)),R:W(K(e.R),t.R)});function Bl(e,t,n,r){let i=n[e.channel]?.[r]??0,a=ws(e.axis??[0,1,0],i);return{pos:R(e.pivot,G(a,z(t.pos,e.pivot))),R:W(a,t.R??ys()),angle:i}}var Vl=new Set([`empty`,`plane`,`cutout`]);function Hl(e,t){let n=[];for(let r=t.get(e.parent);r&&!n.includes(r)&&!r.attach;r=t.get(r.parent))n.push(r);return n}var Ul=e=>({pos:[e.x??0,e.y??0,e.z??0],R:W(xs(e.rotX??0),W(Ss(e.rot??0),Cs(e.rotZ??0)))}),Wl=new WeakMap;function Gl(e){let t=e?.objects??{};if(Wl.has(t))return Wl.get(t);let n={};for(let[e,r]of Object.entries(t))(r.ancestors??[]).forEach((t,i)=>{let a=r.ancestorPoses?.[i];n[t]??={pos:a?.pos??[0,0,0],R:a?.R??[[1,0,0],[0,1,0],[0,0,1]],ancestors:r.ancestors.slice(i+1),children:[]};let o=i?r.ancestors[i-1]:e;n[t].children.includes(o)||n[t].children.push(o)});return Wl.set(t,n),n}function Kl(e=[]){let t={},n={},r=new Map(e.filter(Boolean).map(e=>[e.id,e]));for(let i of e){if(!i||i.hidden)continue;let e=pa(i),a=Hl(i,r);if(Vl.has(i.renderer)||!(e.width>0&&e.height>0&&e.depth>0)){n[i.id]={renderer:i.renderer,ancestors:a.map(e=>e.id),...i.grasp?{grasp:i.grasp}:{}};continue}t[i.id]={name:i.name,renderer:i.renderer,...Ul(i),half:[e.width/2,e.height/2,e.depth/2],ancestors:a.map(e=>e.id),...a.length?{ancestorPoses:a.map(Ul)}:{},...i.glow?{glow:!0}:{},...i.grasp?{grasp:i.grasp}:{}}}return{objects:t,groups:Gl({objects:t}),others:n}}var ql=24,Jl=360/ql,Yl=.2,Xl=12,Zl=8,Ql=e=>Math.round(e*1e5)/1e5,$l=(e,t)=>2*Math.acos(Math.min(1,Math.abs(ac(e,t)))),eu=(e,t,n)=>e.lean>0&&e.aim&&n>0?R(e.pos,B(z(U(e.aim),lc(t,[0,1,0])),n)):e.pos;function tu(e,t){let n=U(ms(e,Math.abs(e[1])<.9?[0,1,0]:[1,0,0])),r=ms(e,n),i=[e];for(let a of[t/2,t])for(let t=0;t<Zl;t++){let o=2*Math.PI*t/Zl,s=Math.min(a,45)*Math.PI/180,c=R(B(n,Math.cos(o)),B(r,Math.sin(o)));i.push(U(R(B(e,Math.cos(s)),B(c,Math.sin(s)))))}return i}function nu(e){let t=e[0].map(e=>({total:e.cost,from:-1})),n=[t];for(let r=1;r<e.length;r++)t=e[r].map(t=>{let i={total:1/0,from:-1};return e[r-1].forEach((e,a)=>{let o=n[r-1][a].total+Yl*$l(e.q,t.q)**2;o<i.total&&(i={total:o,from:a})}),{total:i.total+t.cost,from:i.from}}),n.push(t);let r=[];for(let i=e.length-1,a=t.reduce((e,n,r)=>n.total<t[e].total?r:e,0);i>=0;a=n[i][a].from,i--)r[i]=a;return r}function ru(e,t,n){let r=(Math.sqrt(5)-1)/2,i=t,a=n,o=a-r*(a-i),s=i+r*(a-i),c=e(o),l=e(s);for(let t=0;t<Xl;t++)c<l?(a=s,s=o,l=c,o=a-r*(a-i),c=e(o)):(i=o,o=s,c=l,s=i+r*(a-i),l=e(s));return(i+a)/2}function iu(e,t,n){let r=e.map((e,r)=>{if(e.aim===void 0)return{fixed:oc(e.rot)};let i=oc(t(r)),a=e=>{let t=rc(uc(U(lc(i,[0,1,0])),e),i);return n=>rc(dc(e,n),t)};if(e.lean>0&&n)return{leans:tu(U(e.aim),e.lean).map(a),roll:e.roll};let o=a(U(e.aim));return e.roll!==void 0||!n?{fixed:e.roll?o(e.roll):o(0)}:{rolled:o}}),i=e=>e.roll===void 0?Array.from({length:ql},(e,t)=>t*Jl-180):[e.roll],a=r.map((e,t)=>e.fixed?[{q:e.fixed,cost:0,r:0}]:e.leans?e.leans.flatMap(r=>i(e).map(i=>{let a=r(i);return{q:a,cost:n(t,a),r:i,rolled:r,fixedRoll:e.roll!==void 0}})):Array.from({length:ql},(r,i)=>{let a=i*Jl-180,o=e.rolled(a);return{q:o,cost:n(t,o),r:a}})),o=nu(a),s=a.map((e,t)=>e[o[t]]);for(let[e,t]of r.entries())t.leans&&(r[e]=s[e].fixedRoll?{fixed:s[e].q}:{rolled:s[e].rolled});let c=[],l=null;for(let[t,i]of r.entries()){if(e[t].aim===void 0){c.push(e[t].rot),l=i.fixed;continue}let r=(i.fixed??i.rolled(ru(e=>{let r=i.rolled(e),a=[s[t-1],s[t+1]].filter(Boolean);return n(t,r)+a.reduce((e,t)=>e+Yl*$l(t.q,r)**2,0)},s[t].r-Jl/2,s[t].r+Jl/2))).map(Ql);l&&ac(r,l)<0&&(r=r.map(e=>-e)),c.push(r),l=oc(r)}return c}var au=1e3,ou=4,su=.03,cu=.6,lu=.05,uu=45,du=2,fu=.05,pu=10,mu=400,hu=16,gu=4,_u=Array.from({length:72},(e,t)=>2*Math.PI*t/72-Math.PI);function vu(e,t){let n=t.length,r=Array.from(t);for(let t=0;t<n;t++)for(let i=t+1;i<=Math.min(t+2,n-1);i++){let a=e[i][t-i+2]/e[t][2];for(let r=t;r<=Math.min(t+2,n-1);r++)e[i][r-i+2]-=a*e[t][r-t+2];r[i]-=a*r[t]}for(let t=n-1;t>=0;t--){for(let i=t+1;i<=Math.min(t+2,n-1);i++)r[t]-=e[t][i-t+2]*r[i];r[t]/=e[t][2]}return r}function yu(e,t,n,r=null){let i=n.length,a=n.slice();for(let e=1;e<i;e++)a[e]=a[e-1]+Math.atan2(Math.sin(a[e]-a[e-1]),Math.cos(a[e]-a[e-1]));for(let n=0;n<ou&&i>2;n++){let n=a.map(()=>new Float64Array(5)),o=new Float64Array(i);a.forEach((t,r)=>{let i=e(r,t),a=e(r,t+su),s=e(r,t-su);n[r][2]=Math.max(lu,(a+s-2*i)/(su*su)),o[r]=-(a-s)/(2*su)});let s=a.map((e,n)=>t(n,e)),c=a.map((e,n)=>B(z(t(n,e+su),t(n,e-su)),1/(2*su)));for(let e=0;e+2<i;e++){let t=[1,-2,1],i=R(z(s[e],B(s[e+1],2)),s[e+2]),a=r?2*au*r[e]:2*au;for(let r=0;r<3;r++){o[e+r]-=a*t[r]*V(i,c[e+r]);for(let i=0;i<3;i++)n[e+r][i-r+2]+=a*t[r]*t[i]*V(c[e+r],c[e+i])}}let l=vu(n,o);a.forEach((e,t)=>{a[t]=e+Math.max(-.6,Math.min(cu,l[t]))})}return a}function bu(e,t,n){let r=e.map((e,t)=>n(t,e)),i=e=>e>=0&&e+1<r.length?H(z(r[e+1],r[e])):0;return e.slice(1).map((e,t)=>t).filter(n=>i(n)>fu&&i(n)>du*Math.max(i(n-1),i(n+1))&&ks(t(n,e[n]),t(n+1,e[n+1]))>uu)}function xu(e,t,n,r){let i=r.length,a=uu*Math.PI/180,o=[],s=[];for(let i=0;i<n;i++)o.push(r.map(t=>e(i,t))),s.push(r.map(e=>t(i,e)));let c=o[0].slice(),l=[];for(let e=1;e<n;e++){let t=Array(i),n=new Int32Array(i);for(let r=0;r<i;r++){let l=1/0;for(let t=0;t<i;t++){let i=Math.acos(Math.max(-1,Math.min(1,V(s[e-1][t],s[e][r])))),o=c[t]+pu*i*i+(i>a?mu*(i-a)**2:0);o<l&&(l=o,n[r]=t)}t[r]=l+o[e][r]}l.push(n),c=t}let u=Array(n);u[n-1]=c.indexOf(Math.min(...c));for(let e=n-1;e>0;e--)u[e-1]=l[e-1][u[e]];return u.map(e=>r[e])}function Su(e,t,n,r,i=_u){let a=yu(e,t,n);if(!bu(a,r,t).length)return a;let o=xu(e,r,a.length,i),s=yu(e,t,o),c=bu(s,r,t);if(!c.length)return s;let l=yu(e,t,o,new Float64Array(Math.max(0,s.length-2)).map((e,t)=>c.some(e=>e>=t-gu&&e<=t+1+gu)?hu:1));return bu(l,r,t).length?a:l}function Cu(e){return e.map((t,n)=>{let r=0,i=0;for(let t=Math.max(0,n-6);t<=Math.min(e.length-1,n+6);t++){let a=Math.exp(-((t-n)**2)/8);r+=a*e[t],i+=a}return r/i})}function wu(e,t,n,r){let i=n.map(n=>{let{s:i,held:a}=r(n);return ul(e,i,t,a)}),a=Su((e,t)=>i[e].at(t).cost,(e,t)=>i[e].at(t).elbow,i.map(e=>e.softmin()),(e,t)=>i[e].at(t).pv);return new Map(n.map((e,t)=>[e,i[t].at(a[t]).pv]))}var Tu=[[`torso_lo`,`Spine`,`Spine2`,.12],[`torso_hi`,`Spine2`,`Neck`,.105],[`hips`,`LeftUpLeg`,`RightUpLeg`,.095],[`neck`,`Neck`,`Head`,.055],...[`Left`,`Right`].flatMap(e=>{let t=e===`Left`?`l`:`r`;return[[`thigh_${t}`,`${e}UpLeg`,`${e}Leg`,.07],[`shin_${t}`,`${e}Leg`,`${e}Foot`,.05],[`uarm_${t}`,`${e}Arm`,`${e}ForeArm`,.042],[`farm_${t}`,`${e}ForeArm`,`${e}Hand`,.033],[`hand_${t}`,`${e}Hand`,`${e}HandMiddle3`,.022]]})],Eu=(e,t,n=9)=>Array.from({length:n},(r,i)=>R(e,B(z(t,e),i/(n-1))));function Du(e,t){let n=G(K(t.R),z(e,t.pos)),r=[0,t.half[1],0],i=[Math.abs(n[0]-r[0])-t.half[0],Math.abs(n[1]-r[1])-t.half[1],Math.abs(n[2]-r[2])-t.half[2]];return H([Math.max(i[0],0),Math.max(i[1],0),Math.max(i[2],0)])+Math.min(Math.max(i[0],i[1],i[2]),0)}function Ou(e,t,n,r){let i=1/0,a=z(r,n),o=V(a,a);for(let r of Eu(e,t)){let e=o<1e-12?0:gs(V(z(r,n),a)/o,0,1);i=Math.min(i,H(z(r,R(n,B(a,e)))))}return i}function ku(e,t,n){let r=Is(t,e.index.Head,e.landmarks.headCentre),i=t.R[e.index.Head],a=G(K(i),z(n,r)),o=e.landmarks.headRadii;return(1-H([a[0]/o[0],a[1]/o[1],a[2]/o[2]]))*Math.min(...o)}var Au=e=>Math.round(e.restWorldPos[e.index.LeftFoot][1]*1e3)/1e3,ju=(e,t,n,r)=>r?Is(t,n,G(K(e.restWorldRot[n]),[0,-r,0])):t.P[n];function Mu(e,t,n){let r=e.index,i=e.restWorldPos,a=e.landmarks.sole??{},o=r[`${n}Foot`],s=r[`${n}ToeBase`],c=r[`${n}Toe_End`]??s,l=[i[o][0],.005,i[o][2]-.045];return{heel:Is(t,o,G(K(e.restWorldRot[o]),z(l,i[o]))),ball:ju(e,t,s,a.ball),tip:ju(e,t,c,a.tip)}}function Nu(e,t){let n=G(K(t.R),z(e,t.pos));n[1]-=t.half[1];let r=n.map((e,n)=>Math.abs(e)-t.half[n]),i;if(Math.max(...r)<0){let e=r.indexOf(Math.max(...r));i=[0,0,0],i[e]=Math.sign(n[e])||1}else i=n.map((e,t)=>r[t]>0?Math.sign(e)*r[t]:0);let a=H(i);return G(t.R,a>1e-12?B(i,1/a):[0,1,0])}var Pu=Tu.filter(e=>e[0].startsWith(`torso`)),Fu=Tu.find(e=>e[0]===`hand_l`)[3],Iu=.004;function Lu(e,t,n){let r=z(n,t);return H(z(e,R(t,B(r,gs(V(z(e,t),r)/Math.max(V(r,r),1e-12),0,1)))))}function Ru(e){let t=[];for(let n of[-1,1])for(let r of[0,2])for(let i of[-1,1])t.push(R(e.pos,G(e.R,[n*e.half[0],r*e.half[1],i*e.half[2]])));return t}function zu(e,t,n,r,i=()=>null){let a=e.index,o=Object.entries(t.ctx.spec.objects??{}).filter(([,e])=>Ll(e)).map(([e])=>e);for(let e=0;e<t.frames.length;e++){let{s,diag:c}=t.frames[e],l=s.P,u=[];for(let[e,t]of Object.entries(c.props??{}))for(let[n,r]of Object.entries(t))Array.isArray(r)&&n!==`origin`&&u.push([`prop_${e}`,r,Iu]);for(let[t,i,o,s]of Pu){let c=new Map;for(let[e,t,n]of u)c.set(e,Math.max(c.get(e)??-1/0,s+n-Lu(t,l[a[i]],l[a[o]])));for(let[i,a]of c)a>n.body&&r(`BODY`,`${i} into ${t}`,e,a,n.body)}let d=2*Fu-Ou(l[a.LeftHand],l[a.LeftHandMiddle3],l[a.RightHand],l[a.RightHandMiddle3]),f=Math.max(i(`hand_l`,`hand_r`)??0,n.hands);if(d>f&&r(`SELF`,`hands overlap`,e,d,f),!o.length)continue;let p=t.objectsAt(e);for(let t of o){if(!p[t]?.half)continue;let i=Ru(p[t]);for(let[a,s]of Object.entries(p)){if(o.includes(a)||!s.half||s.ignore)continue;let c=-Math.min(...i.map(e=>Du(e,s)));c>n.object&&r(`OBJECT`,`${t} into ${a}`,e,c,n.object)}}}}var Bu=[[/^Hips$/,`hips`],[/^(Spine|Spine1)$/,`torso_lo`],[/^Spine2$/,`torso_hi`],[/^Neck$/,`neck`],[/^Head/,`head`],[/Shoulder$/,`shoulder`],[/UpLeg$/,`thigh`],[/Leg$/,`shin`],[/(Foot|Toe)/,`foot`],[/ForeArm$/,`farm`],[/Arm$/,`uarm`],[/Hand$/,`hand`]];function Vu(e,t){let n=e.names[t]??``,r=/^Left/.test(n)?`_l`:/^Right/.test(n)?`_r`:``,i=Bu.find(([e])=>e.test(n));return i?`${i[1]}${r}`:n}var Hu=[`Arm`,`ForeArm`,`Hand`].flatMap(e=>[`Left${e}`,`Right${e}`]);function Uu(e,t,n,r,i){let a=vc(e);if(!a)return;let o=Hu.map(t=>e.index[t]);t.frames.forEach(({s:t},s)=>{for(let c of o){let o=Pc(a,e,t,c);if(o.into<0)continue;let l=Vu(e,c),u=Vu(e,o.into),d=Math.max(i(l,u)??0,n.skin);o.depth>d&&r(`BODY`,`${l} into ${u}`,s,o.depth,d)}})}var Wu=.05,Gu=new WeakMap;function Ku(e){let t=Gu.get(e);return t||(t=Object.values(e).filter(e=>e.half&&!e.ignore).map(e=>({RT:K(e.R),c:[e.pos[0]+e.R[0][1]*e.half[1],e.pos[1]+e.R[1][1]*e.half[1],e.pos[2]+e.R[2][1]*e.half[1]],half:e.half,up:[e.R[1][0],e.R[1][1],e.R[1][2]],r:H(e.half)})),Gu.set(e,t)),t}function qu(e,t){if(Math.hypot(t[0]-e.c[0],t[2]-e.c[2])>e.r)return null;let n=G(e.RT,z(t,e.c)),r=-1/0,i=1/0;for(let t=0;t<3;t++){let a=e.up[t],o=e.half[t];if(Math.abs(a)<1e-9){if(Math.abs(n[t])>o)return null;continue}let s=(-o-n[t])/a,c=(o-n[t])/a;r=Math.max(r,Math.min(s,c)),i=Math.min(i,Math.max(s,c))}return r<=i?t[1]+i:null}function Ju(e,t,n){let r=0;for(let i of Ku(e.objectsAt(t))){let e=qu(i,n);e!==null&&e<=n[1]+Wu&&e>r&&(r=e)}return r}function Yu(e,t,n){let r=Mu(e.ctx.sk,e.frames[t].s,n);for(let n of[`heel`,`ball`,`tip`])r[n]=[r[n][0],r[n][1]-Ju(e,t,r[n]),r[n][2]];return r}var Xu=[`Hips`,`Head`,`LeftHand`,`RightHand`,`LeftFoot`,`RightFoot`,`LeftLeg`,`RightLeg`,`LeftForeArm`,`RightForeArm`],Zu=new Set([`Hips`,`Head`]),Qu=[[`knee_l`,`LeftUpLeg`,`LeftLeg`,`LeftFoot`],[`knee_r`,`RightUpLeg`,`RightLeg`,`RightFoot`],[`elbow_l`,`LeftArm`,`LeftForeArm`,`LeftHand`],[`elbow_r`,`RightArm`,`RightForeArm`,`RightHand`]],$u=2,ed=.75,td=.05,nd=e=>Math.round(e*100)/100;function rd(e,t){let n=t.frames,r=n.length;return Xu.map(t=>{let i=n.map(n=>n.s.P[e.index[t]]),a=new Float64Array(r),o=new Float64Array(r),s=i.map(()=>[0,0,0]);for(let e=1;e<r;e++)a[e]=H(z(i[e],i[e-1]));for(let e=2;e<r;e++)s[e]=z(z(i[e],i[e-1]),z(i[e-1],i[e-2])),o[e]=H(s[e]);return{j:t,core:Zu.has(t),v:a,a:o,A:s}})}function id({a:e,A:t},n){let r=0;for(let t of[n-3,n-2,n+2,n+3])t>=2&&t<e.length&&(r=Math.max(r,e[t]));let i=e[n]>0?[n-1,n+1].filter(t=>t>=2&&t<e.length).map(r=>V(t[r],t[n])/e[n]):[];return i.length?Math.max(r,Math.max(...i)+Math.min(0,...i)):r}var ad=(e,t,n)=>e.a[t]>n&&e.a[t]>$u*id(e,t);function od(e,t,n,r){for(let i of rd(e,t)){let e=i.core?n.accCore:n.accLimb;for(let t=2;t<i.a.length;t++)ad(i,t,e)&&r(`POP`,`${i.j} accel ${(i.a[t]*100).toFixed(2)} cm/f^2 in one frame`,t,i.a[t],e)}}var sd=[`hips`,`torso_lo`,`torso_hi`],cd=.04;function ld(e,t,n){let{P:r}=e.frames[t].s,i=e.ctx.sk.index;return Tu.some(([e,t,n,a])=>sd.includes(e)&&Math.min(r[i[t]][1],r[i[n]][1])-a<cd)?!0:n.some(n=>{let a=e.objectsAt(t)[n.object],o=Tu.find(e=>e[0]===(n.part??`hips`));return a&&o&&Math.min(...Eu(r[i[o[1]]],r[i[o[2]]]).map(e=>Du(e,a)))-o[3]<(n.tol??.04)})}function ud(e,t=[]){let n=e.ctx.sk.index,r=e.frames;return r.map(({s:i},a)=>{if(ld(e,a,t))return null;let{P:o}=i,s=a>0&&a<r.length-1&&Math.hypot(r[a+1].s.P[n.Hips][0]-r[a-1].s.P[n.Hips][0],r[a+1].s.P[n.Hips][2]-r[a-1].s.P[n.Hips][2])/2>.006,c=[];for(let t of[`Left`,`Right`]){let n=Yu(e,a,t);(s||Math.min(n.heel[1],n.ball[1])<.02)&&c.push(n.heel,n.ball,n.tip)}if(!c.length)return`air`;let l=B([`Hips`,`Spine1`,`Spine2`,`Head`].reduce((e,t)=>R(e,o[n[t]]),[0,0,0]),.25),u=c.map(e=>e[0]),d=c.map(e=>e[2]);return Math.min(l[0]-Math.min(...u),Math.max(...u)-l[0],l[2]-Math.min(...d),Math.max(...d)-l[2])})}var dd=.06;function fd(e,t){let{P:n}=e.frames[t].s,r=e.ctx.sk.index;return[`Left`,`Right`].some(i=>[`${i}Hand`,`${i}HandMiddle1`].some(i=>r[i]!==void 0&&n[r[i]][1]-Ju(e,t,n[r[i]])<dd))}function pd(e,t=[]){let n=e.frames.length,r=[],i=e.frames.map((n,r)=>!ld(e,r,t)&&[`Left`,`Right`].every(t=>{let n=Yu(e,r,t);return Math.min(n.heel[1],n.ball[1])>=.02})&&!fd(e,r));for(let e=0;e<n;e++){if(!i[e])continue;let t=e;for(;t+1<n&&i[t+1];)t++;r.push([e,t]),e=t}return r}function md(e,t={}){let n=e.frames,r=n.length,i=e.ctx.sk.index,a=9.81/(e.fps??24)**2,o=e.f0??0,s=[],c=e=>n[Math.max(0,Math.min(r-1,e))].s.P[i.Hips][1];for(let[n,i]of pd(e,t.supports)){let e=i-n+1;if(e<4)continue;let t=1-((n>0?c(n)-c(n-1):c(n+1)-c(n))-(i<r-1?c(i+1)-c(i):c(i)-c(i-1)))/e/a;if(!(t<=ed))for(let e=n;e<=i;e++)s.push({kind:`FLOAT`,msg:`no foot on the ground f${n+o}-f${i+o}, hips fall at ${Math.round(Math.max(0,1-t)*100)}% of g`,frame:e,value:+t.toFixed(4),limit:ed})}return s}var hd=(e,t,[,n,r,i])=>ks(z(t.P[e.index[r]],t.P[e.index[n]]),z(t.P[e.index[i]],t.P[e.index[r]]));function gd(e,t,n,r){let i=n?.limits??{},a=e=>Object.hasOwn(i,e),o=[],s=(e,t,n,r,i)=>o.push({kind:e,msg:t,frame:n,value:+r.toFixed(4),limit:i});for(let n of rd(e,t)){let{j:e,core:t,v:i,a:o}=n,c=t?`speedCore`:`speedLimb`,l=t?`accCore`:`accLimb`;for(let t=1;t<i.length;t++)a(c)&&i[t]>r[c]&&s(`SPEED`,`${e} ${(i[t]*100).toFixed(1)} cm/frame`,t,i[t],r[c]),a(l)&&t>1&&o[t]>r[l]&&!ad(n,t,r[l])&&s(`ACC`,`${e} accel ${(o[t]*100).toFixed(2)} cm/f^2`,t,o[t],r[l])}return a(`knee`)&&t.frames.forEach(({s:t},n)=>{for(let i of Qu.slice(0,2)){let a=hd(e,t,i);a>r.knee&&s(`KNEE`,`${i[0]===`knee_l`?`Left`:`Right`} knee bent ${a.toFixed(0)}deg`,n,a,r.knee)}}),a(`balance`)&&ud(t,n.supports).forEach((n,i)=>{if(n===`air`)s(`BALANCE`,`no foot on the ground`,i,0,0);else if(n!==null&&-n>r.balance){let a=B([`Hips`,`Spine1`,`Spine2`,`Head`].reduce((n,r)=>R(n,t.frames[i].s.P[e.index[r]]),[0,0,0]),.25);s(`BALANCE`,`centre of mass ${a[0].toFixed(2)},${a[2].toFixed(2)} outside the feet`,i,-n,r.balance)}}),o}function _d(e,t,n={}){let r=t.f0??0,i=t.fps??24,a=(e,t)=>{let n=0;for(let t=1;t<e.length;t++)e[t]>e[n]&&(n=t);return[Math.round(e[n]*t*100)/100,n+r]},o=Object.fromEntries(rd(e,t).map(({j:e,v:t,a:n})=>[e,{speed:a(t,i),accel:a(n,i*i)}]).filter(([,e])=>e.speed[0]>=td)),s=ud(t,n.supports),c=e=>{let t=s.map((t,n)=>e(t)?n+r:-1).filter(e=>e>=0);return t.length?[t[0],t[t.length-1]]:null},l=pd(t,n.supports).slice(0,4).map(([e,t])=>[e+r,t+r]),u=null;s.forEach((e,t)=>{typeof e==`number`&&(!u||e<u[0])&&(u=[nd(e),t+r])});let d=c(e=>typeof e==`number`&&e<0),f=Object.fromEntries(Qu.map(n=>{let i=[0,r];return t.frames.forEach(({s:t},a)=>{let o=hd(e,t,n);o>i[0]&&(i=[o,a+r])}),[n[0],[Math.round(i[0]),i[1]]]}));return{units:`[value, frame]; speed m/s, accel m/s^2, balance m inside the feet (< 0 outside), bend deg (0 straight)`,peaks:o,balance:{min:u,...d?{outside:d}:{},...l.length?{air:l}:{}},bend:f}}function vd(e,t,n,r){let i=e=>Object.hasOwn(n??{},e),a=new Float64Array(t.frames.length);for(let n of rd(e,t)){let{core:e,v:t,a:o}=n,s=e?`speedCore`:`speedLimb`,c=e?`accCore`:`accLimb`;for(let e=1;e<t.length;e++)i(s)&&(a[e]=Math.max(a[e],t[e]/r[s])),!(e<2)&&(ad(n,e,r[c])&&(a[e]=Math.max(a[e],Math.sqrt(o[e]/Math.max(r[c],$u*id(n,e))))),i(c)&&(a[e]=Math.max(a[e],Math.sqrt(o[e]/r[c]))))}return a}var yd=[0,1,0],bd=.7,xd=.025,Sd=new Map;function Cd(e,t){let n=`${e.model}:${t}`;if(Sd.has(n))return Sd.get(n);let r=vc(e),i=r?[]:null;for(let n of r?.grids??[]){if(n.b!==e.index[`${t}Foot`]&&n.b!==e.index[`${t}ToeBase`])continue;let[a,o,s]=n.dims,c=new Set;for(let e=0;e<a;e++)for(let t=0;t<o;t++)for(let a=0;a<s;a++){if(Math.abs(n.data[(e*o+t)*s+a]/1e3)>r.step/2)continue;let l=[n.min[0]+e*r.step,n.min[1]+t*r.step,n.min[2]+a*r.step],u=l.map(e=>Math.floor(e/xd)).join();c.has(u)||(c.add(u),i.push([n.b,l]))}}return Sd.set(n,i),i}function wd(e,t,n){let r=Cd(e,n);if(!r?.length){let r=Mu(e,t,n),i=(e,t)=>B(R(e,t),.5);return[r.heel,i(r.heel,r.ball),r.ball,i(r.ball,r.tip),r.tip]}return r.map(([e,n])=>R(t.P[e],G(t.R[e],n)))}function Td(e,t){let n={top:-1/0,side:-1/0,topAt:null,sideAt:null};for(let r of e){let e=-Du(r,t);if(e<=0)continue;let i=V(Nu(r,t),yd)>bd?`top`:`side`;e>n[i]&&(n[i]=e,n[`${i}At`]=r)}return n}function Ed(e,t,n,r,i,a,o){for(let[s,c]of[[`Left`,`l`],[`Right`,`r`]]){let l=wd(e,t,s),u=`foot_${c}`;for(let[e,t,s,c]of r){if(l.every(e=>hs(e,s)>c))continue;let r=Td(l,t),d=a(u,e),f=d??i.allow,p=d??i.groundAllow;r.side>f?o(`COLLIDE`,`${u} x ${e}`,n,r.side,f):r.top>p&&o(`COLLIDE`,`${u} x ${e}`,n,r.top,p)}}}var Dd={allow:.005,groundAllow:.01,reach:.01,slide:.0015,plantH:.012,speedCore:.04,speedLimb:.16,accCore:.015,accLimb:.05,flip:60,knee:150,headAllow:.003,self:0,body:.005,skin:.015,hands:.01,object:.005,grab:.03,balance:.08},Od=20,kd=.01,Ad=(e,t,n)=>{for(let r of e??[])if(t.startsWith(r.part)&&(r.object===n||r.object.endsWith(`*`)&&n.startsWith(r.object.slice(0,-1))))return r.depth;return null};function jd(e,t,n={}){let r={...Dd,...n.limits},i=[],a=e.index,o=t.frames,s=o.length,c=(e,t,n,r,a)=>i.push({kind:e,msg:t,frame:n,value:+r.toFixed(4),limit:a});for(let i=0;i<s;i++){let{s,diag:l}=o[i],u=t.objectsAt(i),d=Object.entries(u).filter(([,e])=>e.half&&!e.ignore).map(([e,t])=>[e,t,R(t.pos,G(t.R,[0,t.half[1],0])),H(t.half)]);for(let[e,t,o,l]of Tu){let u=s.P[a[t]],f=s.P[a[o]],p=B(R(u,f),.5),m=l+hs(u,f)/2,h=null;for(let[t,a,o,s]of d){let d=Ad(n.allow,e,t)??r.allow;if(m-(hs(p,o)-s)<=d)continue;h??=Eu(u,f);let g=l-Math.min(...h.map(e=>Du(e,a)));g>d&&c(`COLLIDE`,`${e} x ${t}`,i,g,d)}}Ed(e,s,i,d,r,(e,t)=>Ad(n.allow,e,t),c);for(let t of[`Left`,`Right`]){let n=Mu(e,s,t),a=Math.min(n.heel[1],n.ball[1],n.tip[1]);a<-r.groundAllow&&c(`GROUND`,`${t} sole below floor`,i,-a,r.groundAllow)}for(let[e,t]of Object.entries(l))/miss_[lr]$/.test(e)&&t>r.reach&&c(`REACH`,e,i,t,r.reach);let f=[];for(let e of[`Left`,`Right`])f.push(...Eu(s.P[a[`${e}Hand`]],s.P[a[`${e}HandMiddle3`]],5).map(t=>[`hand_${e[0].toLowerCase()}`,t,.022]));for(let[e,t]of Object.entries(l.props??{}))for(let[r,i]of Object.entries(t))Array.isArray(i)&&r!==`origin`&&!(n.mouthPoints??[]).includes(`${e}.${r}`)&&f.push([`prop_${e}`,i,.004]);for(let[t,n,a]of f){let o=ku(e,s,n)+a;o>r.headAllow&&c(`FACE`,`${t} into head`,i,o,r.headAllow)}Ou(s.P[a.LeftLeg],s.P[a.LeftFoot],s.P[a.RightLeg],s.P[a.RightFoot])<.1+r.self&&c(`SELF`,`shins touch`,i,.1,.1),Ou(s.P[a.LeftUpLeg],s.P[a.LeftLeg],s.P[a.RightUpLeg],s.P[a.RightLeg])<.135+r.self&&c(`SELF`,`thighs overlap`,i,.135,.135);let p=U(z(s.P[a.Spine],s.P[a.Hips]))[1]<.5;for(let e of[`Left`,`Right`]){let t=s.P[a[`${e}UpLeg`]],n=s.P[a[`${e}Leg`]],r=s.P[a[`${e}Foot`]],o=ks(z(n,t),z(r,n)),l=z(s.P[a[`${e}ToeBase`]],r);if(p){let e=U(z(r,n));l=z(l,B(e,V(l,e)))}else l[1]=0;let u=z(n,[(t[0]+r[0])/2,(t[1]+r[1])/2,(t[2]+r[2])/2]);o>3&&V(u,l)<-.002&&c(`KNEE`,`${e} knee bends backward`,i,o,0),o>160+kd&&c(`KNEE`,`${e} knee folds ${o.toFixed(0)}deg`,i,o,160);let d=ks(z(s.P[a[`${e}ForeArm`]],s.P[a[`${e}Arm`]]),z(s.P[a[`${e}Hand`]],s.P[a[`${e}ForeArm`]]));d>150+kd&&c(`ELBOW`,`${e} elbow folds ${d.toFixed(0)}deg`,i,d,150)}}let l=(e,t)=>Ad(n.allow,e,t);zu(e,t,r,c,l),Uu(e,t,r,c,l);for(let e of[`Left`,`Right`]){let n=o.map((n,r)=>Yu(t,r,e));for(let t=1;t<s;t++){let i=n[t-1],a=n[t];for(let n of[`heel`,`ball`]){let o=a[n][1]<r.plantH&&i[n][1]<r.plantH&&Math.abs(a[n][1]-i[n][1])<5e-4,s=Math.hypot(a[n][0]-i[n][0],a[n][2]-i[n][2]);o&&s>r.slide&&c(`SLIDE`,`${e} ${n} slides`,t,s,r.slide)}}}for(let t=0;t<e.names.length;t++){let n=e.parent[t];if(n<0)continue;let r=hs(e.restWorldPos[t],e.restWorldPos[n]),i=Math.max(...o.map(e=>Math.abs(hs(e.s.P[t],e.s.P[n])-r)));i>.001&&c(`LENGTH`,`${e.names[n]}-${e.names[t]}`,0,i,.001)}return od(e,t,r,c),Md(e,o,r,c),i}function Md(e,t,n,r){let i=e.index,a=Math.sin(Od*Math.PI/180);for(let e of[`Left`,`Right`])for(let[o,s,c]of[[`${e}UpLeg`,`${e}Leg`,`${e}Foot`],[`${e}Arm`,`${e}ForeArm`,`${e}Hand`]]){let e=null,l=0;for(let u=0;u<t.length;u++){let d=t[u].s.P,f=z(d[i[s]],d[i[o]]),p=z(d[i[c]],d[i[s]]),m=ms(f,p);if(H(m)<a*H(f)*H(p))continue;let h=U(m),g=e?ks(h,e):0,_=u-l;g/_>n.flip&&r(`FLIP`,`${s} bend plane jumps ${g.toFixed(0)}deg${_>1?` over ${_} frames`:``}`,u,g/_,n.flip),e=h,l=u}}}var Nd=36,Pd=.05,Fd=.3,Id=3,Ld=10,Rd=36,zd=1,Bd=100,Vd=Tu.filter(e=>e[0].startsWith(`torso`)),Hd=Object.fromEntries(Tu.map(e=>[e[0],e[3]])),Ud=(e,t,n)=>[[e[0],t[0],n[0]],[e[1],t[1],n[1]],[e[2],t[2],n[2]]],Wd=(e,t)=>[e[0][t],e[1][t],e[2][t]];function Gd(e,t,n,r){let i=z(t,e),a=z(r,n),o=z(e,n),s=V(i,i),c=V(a,a),l=V(a,o);if(s<1e-12||c<1e-12)return H(o);let u=V(i,o),d=V(i,a),f=s*c-d*d,p=f>1e-12?gs((d*l-u*c)/f,0,1):0,m=(d*p+l)/c;return m<0?(m=0,p=gs(-u/s,0,1)):m>1&&(m=1,p=gs((d-u)/s,0,1)),H(z(R(e,B(i,p)),R(n,B(a,m))))}function Kd(e,t,n){let r=e.index,i=Xs(e,t,n);return{pos:B(R(t.P[r[`${n}HandIndex2`]],t.P[r[`${n}HandMiddle2`]]),.5),R:Ud(i.d,i.l,i.n)}}function qd(e,t,n,r,i,a){let o=t.objects[n];if(t.props[o.prop].hand!==`r`)return null;let s=Object.entries(t.anchors??{}).reduce((e,[t,n])=>e+(n.kind===`prop`&&n.prop===o.prop?Math.max(0,i[`w_${t}_l`]??0):0),0);if(!(s>1e-4))return null;let c=Kd(e,r,gl.r).R,l=Wd(c,0),u=U(ms(a,z(l,B(a,V(l,a))))),d=e=>z(e,B(u,2*V(e,u))),f=Ud(d(l),d(Wd(c,1)),B(d(Wd(c,2)),-1)),p=Kd(e,r,gl.l),m=e.index,h=m.LeftHand,g=r.P[h],_=W(K(r.R[h]),p.R),v=G(K(r.R[h]),z(p.pos,g)),y=(t.fits??[]).some(e=>e.side===`l`&&t.anchors?.[e.anchor]?.kind===`prop`&&t.anchors[e.anchor].prop===o.prop&&i[`w_${e.anchor}_l`]>1e-4)?`palm`:`wrist`,b=e=>W(ws(a,e*180/Math.PI),f),x=e=>W(b(e),K(_)),S=e=>y===`wrist`?R(g,G(x(e),v)):z(p.pos,G(x(e),v)),C=e=>y===`wrist`?g:S(e),w=G(K(r.R[h]),z(r.P[m.LeftHandMiddle3],g)),T=r.P[m.LeftArm],E=sl(e,r,gl.l),D=t.fix===!1||t.fix?.self===!1?null:vc(e),O={uarm_l:m.LeftArm,farm_l:m.LeftForeArm,hand_l:m.LeftHand},k=(t,n,i)=>D?Nc(D,e,r,O[i],t,n):Math.max(0,...Vd.map(([,e,a,o])=>Hd[i]+o-Gd(t,n,r.P[m[e]],r.P[m[a]]))),ee=new Map,A=t=>{if(ee.has(t))return ee.get(t);let n=C(t),i=Qc(e,r,gl.l,x(t),n,E,Rc),a=e=>{let t=i.at(e);return{pv:t.pv,elbow:t.elbow,cost:t.cost+zd*((100*k(T,t.elbow,`uarm_l`))**2+(100*k(t.elbow,n,`farm_l`))**2)}},o={th:0,cost:1/0};for(let e=0;e<Rd;e++){let t=2*Math.PI*e/Rd-Math.PI,n=a(t).cost;n<o.cost&&(o={th:t,cost:n})}let s=R(n,G(x(t),w)),c=k(n,s,`hand_l`),l=Math.max(0,c-Dd.body),u=2*Hd.hand_l-Gd(n,s,r.P[m.RightHand],r.P[m.RightHandMiddle3]),d=Math.max(0,u-Dd.hands),f=zd*((100*c)**2+(100*i.miss)**2)+(l>0?Bd*(100*l)**2:0)+(d>0?Bd*(100*d)**2:0),p={at:a,best:{th:o.th,pole:a(o.th).pv,cost:o.cost+f}};return ee.set(t,p),p},te=e=>A(e).best.cost+Fd*(1-Math.cos(e));return{id:n,weight:s,pin:y,at:p.pos,rolled:b,arm:A,cost:te,point:S,softmin:()=>{let e=Array.from({length:Nd},(e,t)=>{let n=2*Math.PI*t/Nd-Math.PI;return[n,te(n)]}),t=Math.min(...e.map(e=>e[1])),n=e.reduce((e,[n,r])=>{let i=Math.exp(-(r-t)/Pd);return[e[0]+i*Math.cos(n),e[1]+i*Math.sin(n)]},[0,0]);return Math.atan2(n[1],n[0])},measure:t=>Kd(e,t,gl.l)}}var Jd=(e,t)=>Math.exp(-Math.max(0,e.cost(t)-Id)/Ld),Yd=(e,t,n,r,i)=>({w:t*Math.min(1,e.weight)*r,second:e.id,pin:e.pin,pole:i,palm:{pos:e.at,R:e.rolled(n)},measure:e.measure}),Xd=.045,Zd=4,Qd=8,$d=[30,10],ef=2,tf=4,nf=2,rf=.1,af=1.5,of=20,sf=4,cf=8,lf=400,uf=[`the fingers' line`,`the palm normal`,`the knuckle line`],df=(e,t)=>[e[0][t],e[1][t],e[2][t]],ff=e=>{let t=K(e.R);return{pos:B(G(t,e.pos),-1),R:t}},pf=e=>Math.round(e*100)/100;function mf(e,t,n){let r=Ds(e),i=Ds(t);return ac(r,i)<0&&(i=i.map(e=>-e)),Os(fc(r,i,n))}function hf(e,[t,n],[r,i]){let a=e>=0?n:-t,o=e>=0?i:-r,s=Math.abs(e);if(s<=a)return(s/a)**2;let c=(Math.min(s,o)-a)/Math.max(1e-6,o-a);return 1+cf*c*c+(s>o?lf*((s-o)/o)**2:0)}function gf(e,t,n,r,i){let{goal:a,plane:o,wristAt:s}=cl(e,t,n,r,i,1),c=s(a),l=Qc(e,t,n,a,c,o,Rc),u=l.at(l.softmin()),d=e.index,f=t.P[d[`${n}Arm`]],p=H(z(t.P[d[`${n}ForeArm`]],f)),m=H(z(t.P[d[`${n}Hand`]],t.P[d[`${n}ForeArm`]])),h=Math.max(0,zs(p,m,145)-H(z(c,f))),g=vc(e),_=g?Math.max(Nc(g,e,t,d[`${n}Arm`],f,u.elbow),Nc(g,e,t,d[`${n}ForeArm`],u.elbow,c),Nc(g,e,t,d[`${n}Hand`],c,r.pos)):0;return[`twist`,`flex`,`dev`].reduce((e,t)=>e+hf(u.need[t],Ic[t],Fc[t]),0)+of*((l.miss*100)**2+(h*100)**2)+sf*(_*100)**2}function _f(e,t,n,r,i,a,o){if(r.aim===void 0)return o({pos:r.pos,R:Os(r.rot)});let s=Ds(q(i,a).R),c=U(r.aim),l=rc(uc(U(lc(s,[0,1,0])),c),s),u=e=>({pos:r.pos,R:Os(rc(dc(c,e),l))});if(r.roll!==void 0)return o(u(r.roll));let d=null;for(let r=0;r<Zd;r++){let o=u(360/Zd*r-180),s=dl(e,t,n,q(o,ff(a)),i);(!d||s<d.strain)&&(d={p:o,strain:s})}return o(d.p)}function vf(e,t){let n=Object.entries(e?.objects??{}).filter(([e,n])=>(e===t||n.ancestors?.includes(t))&&n.half);if(!n.length)return!1;let r=n.map(([,e])=>e.half).reduce((e,t)=>t[0]*t[1]*t[2]>e[0]*e[1]*e[2]?t:e),i=[0,1,2].reduce((e,t)=>r[t]>r[e]?t:e,0);return[0,1,2].filter(e=>e!==i).every(e=>r[e]<Xd)}var yf=(e,t)=>e.length<=t?e:Array.from({length:t},(n,r)=>e[Math.round(r*(e.length-1)/(t-1))]);function bf(e,t){let n=sc(Ds(W(K(e),t)));return`today's grip turned ${Math.round(2*H(n)*180/Math.PI)} deg, mostly about ${uf[[0,1,2].reduce((e,t)=>Math.abs(n[t])>Math.abs(n[e])?t:e,0)]}`}function xf({sk:e,o:t,side:n,grab:r,rest:i,plain:a,palmOf:o,map:s=e=>e}){let c=new Map,l=e=>{let t=Math.round(e);if(!c.has(t)){let e=a(t);c.set(t,{s:e,now:o(e)})}return c.get(t)},{s:u,now:d}=l(r),f=[...t.keys].sort((e,t)=>e.f-t.f),p=yf(f,Qd),m=e=>J({pos:d.pos,R:e},i),h=(t,r,i)=>{let{s:a,now:o}=l(r);return gf(e,a,n,q(i,ff(t)),o)},g=t=>gf(e,u,n,q(i,ff(t)),d),_=t=>{let r=m(t);return g(r)+p.reduce((t,i)=>{let{s:a,now:o}=l(s(i.f));return t+_f(e,a,n,i,o,r,e=>h(r,s(i.f),e))},0)},v=r=>{let a=m(r),o=Math.round(s(f[0].f)),c=Math.round(s(f[f.length-1].f)),u=oh(t,s,e=>Ds(q(l(e).now,a).R),(t,r,i,o)=>{let{s,now:c}=l(t);return dl(e,s,n,q({pos:r,R:Os(i)},ff(a)),c,o)},2*(i?.half?.[1]??0)),d=g(a),p=d;for(let e=o;e<=c;e+=tf){let t=h(a,e,lh(u,e));d+=t,p=Math.max(p,t)}return{A:a,cost:d,worst:p}},y={name:`today`,R:d.R,...v(d.R)};if(y.worst<=af)return{offset:y.A,name:`today`,cost:pf(y.cost),today:pf(y.cost)};let b={R:d.R,rough:_(d.R)};for(let e of $d)for(let t=0,n=!0;n&&t<ef;t++){n=!1;for(let t of[0,1,2])for(let r of[1,-1]){let i=W(ws(df(b.R,t),r*e),b.R),a=_(i);a<b.rough-1e-6&&(b={R:i,rough:a},n=!0)}}let x=b.R===d.R?y:{name:bf(d.R,b.R),...v(b.R)},S=x.cost<y.cost-Math.max(nf,rf*y.cost)?x:y;return{offset:S.A,name:S.name,cost:pf(S.cost),today:pf(y.cost)}}var Sf={"x-bot-tpose":{model:`x-bot-tpose`,units:`cm`,mesh:`Beta_Surface`,bones:[{name:`Hips`,parent:-1,localPos:[-7727290721959434e-21,104.27487182617188,1.5543158054351807],localQuat:[.006458545995471647,0,0,.9999791433743129],worldPos:[-7727290721959434e-21,104.27487182617188,1.5543158054351807],worldQuat:[.006458545995471649,0,0,.9999791433743129]},{name:`Spine`,parent:0,localPos:[-42558306661763523e-26,10.182436647133528,-383026943495679e-29],localQuat:[-.0801557216468605,0,-2.4806808368112424e-7,.9967823535191669],worldPos:[-7727716305026052e-21,114.45645899708516,1.6858405330789255],worldQuat:[-.07371628519129939,1.6021591284630476e-9,-2.4806290981795794e-7,.9972792534177845]},{name:`Spine1`,parent:1,localPos:[0,10.00267477114727,3552713678800501e-30],localQuat:[6162975822039155e-48,-49630836753181624e-40,5211237859084076e-38,1],worldPos:[-2780995758607294e-21,124.35042288428505,.21513282040928483],worldQuat:[-.07371628519129939,1.6021591284630476e-9,-2.480629098179579e-7,.9972792534177845]},{name:`Spine2`,parent:2,localPos:[113754220886636e-28,9.322090642186126,2.823681128916178e-7],localQuat:[.01288561985057818,-4771173867766652e-25,-3.7024045453006494e-8,.9999169769541195],worldPos:[18291488873430703e-22,133.57119939581565,-1.1555073459065734],worldQuat:[-.06085960369636199,-4.799512607436978e-9,-2.849511007796114e-7,.9981463362843349]},{name:`Neck`,parent:3,localPos:[41474883340816403e-26,16.865321474300316,55067062021407764e-30],localQuat:[-693889390390723e-32,-8271806125530272e-39,5190558343770245e-38,1],worldPos:[11433183430736414e-21,150.31158623305856,-3.204535645093104],worldQuat:[-.060859603696361994,-4.799512607436981e-9,-2.8495110077961134e-7,.9981463362843349]},{name:`Head`,parent:4,localPos:[-1.0756747747233872e-7,9.341923497302815,2.841040809958507],localQuat:[-693889390390723e-32,-36734198463196485e-56,-10339757656912817e-40,1],worldPos:[1671650538423477e-20,159.92947501239226,-1.5195243864816557],worldQuat:[-.060859603696362,-4.7995126074369775e-9,-2.849511007796113e-7,.9981463362843349]},{name:`HeadTop_End`,parent:5,localPos:[9.856974393531148e-7,20.962781993760927,10.122935199433357],localQuat:[9020562075079394e-32,-4963083675318166e-39,-3143286327701505e-38,1],worldPos:[298931534294587e-19,181.96684091859,5.981578858112073],worldQuat:[-.060859603696361904,-4.799512607437009e-9,-2.8495110077961134e-7,.9981463362843349]},{name:`RightShoulder`,parent:3,localPos:[-4.569970073784302,11.195844421252815,-.8066318609761822],localQuat:[-.48443063216376725,.5709636753028516,-.52616363833282,-.4030871739493107],worldPos:[-4.569961889633833,144.58610943784936,-3.316387285708532],worldQuat:[.45900076979447035,-.5378833301202727,.5599368183567869,.4318223893631366]},{name:`RightArm`,parent:7,localPos:[39968028886505635e-31,10.838175719528936,-2842170943040401e-29],localQuat:[-.024616241704842487,.002562291621043601,-.10349841681885355,.9943216547083585],worldPos:[-15.162807207946486,144.06130443716168,-5.548485110836629],worldQuat:[.4999999123070338,-.5000002750229358,.49999979787788545,.5000000147920203]},{name:`RightForeArm`,parent:8,localPos:[-9.964063352185804e-9,27.841518023440628,0],localQuat:[-17109853453384572e-39,-8816207631167156e-54,2938735877055719e-54,1],worldPos:[-43.004325231382126,144.06132057494256,-5.548489180140211],worldQuat:[.4999999123070338,-.5000002750229358,.49999979787788545,.5000000147920203]},{name:`RightHand`,parent:9,localPos:[2285859917883215e-20,28.328838348366197,4472538876143517e-21],localQuat:[6229948061854065e-38,2350988701644575e-53,-19852334701272682e-39,1],worldPos:[-71.33316357974921,144.0613325226415,-5.548470451934339],worldQuat:[.4999999123070338,-.5000002750229358,.49999979787788545,.5000000147920203]},{name:`RightHandMiddle1`,parent:10,localPos:[-2368732377888705e-20,9.532501220730282,3985569264841615e-20],localQuat:[-9.781740202927786e-7,4908535656919963e-25,-.0005018059094885016,.9999998740949284],worldPos:[-80.86566480049744,144.061298192282,-5.5484955291275435],worldQuat:[.5002502631148101,-.4997497980010115,.4997483431213557,.5002513440251519]},{name:`RightHandMiddle2`,parent:11,localPos:[-8881784197001252e-30,3.700000000000017,0],localQuat:[3986107263256567e-37,1323489458050882e-38,.0008498714387871692,.9999996388592037],worldPos:[-84.56566293763908,144.0613075740096,-5.544782705328028],worldQuat:[-.4998253593741713,.5001747659318385,-.5001733119713432,-.4998264415205831]},{name:`RightHandMiddle3`,parent:12,localPos:[-25224267119483557e-29,2.9500000000000455,-1.5411302456413978e-8],localQuat:[-5680000760156732e-38,-3970467145889554e-38,-.00032184201183913403,.9999999482088584],worldPos:[-87.51566222254714,144.06131507131767,-5.54683672237727],worldQuat:[-.4999863107405839,.5000138752279871,-.5000124209192871,-.49998739241899415]},{name:`RightHandMiddle4`,parent:13,localPos:[1127986593019159e-28,2.9466287337241255,7.20586967872805e-9],localQuat:[1.5498268359238913e-7,.0009288141658670982,.00016639448508219264,.9999995548084492],worldPos:[-90.46229095218658,144.06132253675315,-5.546991694384452],worldQuat:[.49943854746932836,-.4996323747246579,.5005598653243383,.5003683130007397]},{name:`RightHandRing1`,parent:10,localPos:[-1.8651332219504173,9.103592315445724,.043069650068900955],localQuat:[6.963165823826897e-8,10850652509911485e-27,.0001558292973731088,.9999999878586124],worldPos:[-80.43675564821785,144.01826884807926,-7.413605017339948],worldQuat:[-.4999220263552031,.5000781487660197,-.5000777412794597,-.4999220592937387]},{name:`RightHandRing2`,parent:15,localPos:[-4440892098500626e-30,3.379273006312431,-2842170943040401e-29],localQuat:[75254050543037e-37,13234890125559426e-39,-.00022151509096650696,.9999999754655319],worldPos:[-83.81602849026015,144.01827033659325,-7.414658689507339],worldQuat:[.5000327889464959,-.4999673962237241,.4999669887298773,.5000328217947667]},{name:`RightHandRing3`,parent:16,localPos:[26290081223123707e-29,2.889684678650127,8202221124520293e-25],localQuat:[16000775075877487e-39,13234889885055366e-39,-.00011280510431914317,.9999999936375041],worldPos:[-86.70571314402952,144.01827160815185,-7.4142794883596075],worldQuat:[.5000891846393266,-.4999109867917636,.499910579294214,.5000892174416297]},{name:`RightHandRing4`,parent:17,localPos:[4716227408607665e-28,2.638815675202565,5682068149326369e-25],localQuat:[-1.339645129809642e-7,.00014607500499735936,-.0007992862081225936,.9999996699017618],worldPos:[-89.34452865122908,144.01827276927736,-7.41333786395688],worldQuat:[.5004155000832223,-.4994381238192544,.4995836834200939,.5005617154884825]},{name:`RightHandIndex1`,parent:10,localPos:[2.25983507131116,9.1082835183702,.5178621137028756],localQuat:[-6.059340578197898e-7,9953529057906979e-26,-.00016426752705445157,.9999999865079061],worldPos:[-80.4414477277744,143.54347484170384,-3.288636902648485],worldQuat:[.5000817363528871,-.4999184374449017,.49991735444845625,.5000824447930416]},{name:`RightHandIndex2`,parent:19,localPos:[-843769498715119e-29,3.7000000000000313,0],localQuat:[-47359322790488744e-39,-3970467069997446e-38,.00025564424489899254,.9999999673230096],worldPos:[-84.14144752826542,143.54348146979163,-3.2874218624291216],worldQuat:[-.4999539187402696,.5000462641269495,-.5000451813116483,-.49995462745726243]},{name:`RightHandIndex3`,parent:20,localPos:[-3423927807943983e-28,2.8500000000000227,-8893152880773414e-25],localQuat:[-13914829894769055e-38,-39704669556009313e-39,-8792197348428728e-20,.9999999961348633],worldPos:[-86.99144748059157,143.54348657664548,-3.287943125263367],worldQuat:[-.49999788186225497,.5000023052590155,-.5000012223814067,-.4999985904840416]},{name:`RightHandIndex4`,parent:21,localPos:[7900347043232614e-28,2.7721906128530236,5114202394906897e-25],localQuat:[8.659859370723384e-8,.0010026920012318767,8705832638285169e-20,.9999994935146673],worldPos:[-89.76363809337116,143.54349154251554,-3.2879626838817946],worldQuat:[.49945279532966436,-.4995441931072631,.5005458853548749,.5004561129854466]},{name:`RightHandThumb1`,parent:10,localPos:[2.6818519535315546,2.464805039121785,1.5739839631865493],localQuat:[.2532844925861686,.06161827244019283,-.22821025705768283,.9380672859078498],worldPos:[-73.79796992221794,142.48734898334772,-2.866619447484665],worldQuat:[.6789718782579114,-.19747746019729454,.5123797682139857,.48730566831705546]},{name:`RightHandThumb2`,parent:23,localPos:[-1887379141862766e-29,4.188985472990834,-2842170943040401e-29],localQuat:[-.002315749257559554,-.0011704489169351957,.009300110231568928,.9999533865657887],worldPos:[-77.01316043621617,140.61457222434876,-.9423386824772395],worldQuat:[.6765749035040036,-.20553967786615746,.5156358706838127,.4838589563451013]},{name:`RightHandThumb3`,parent:24,localPos:[-14210854715202004e-30,3.416271152352966,0],localQuat:[-.0016647383095556567,-.0008077810781858194,.006919747685379302,.9999743462849742],worldPos:[-79.66799955910238,139.08658379209294,.5702713693484767],worldQuat:[.6747462864925903,-.21146538352949726,.5180821304204447,.4812387625412099]},{name:`RightHandThumb4`,parent:25,localPos:[-13822276656583199e-30,2.5749773944199115,0],localQuat:[.005774853769703311,-.11750920454458612,-.048743708782553366,.9918579982867299],worldPos:[-81.68681626684736,137.9345819337196,1.6783234442112593],worldQuat:[.7432186106607572,-.23041213116196285,.41233882500284114,.47382807005935446]},{name:`RightHandPinky1`,parent:10,localPos:[-3.8062774279108913,8.076676225678526,.4867036950552688],localQuat:[4670719286902752e-21,2.4304698046602542e-9,.0005203629947084559,.9999998646002598],worldPos:[-79.40983953257197,143.5746349351307,-9.354749239786173],worldQuat:[.499741997111188,-.5002580522008165,.500262248259257,.49973743155597233]},{name:`RightHandPinky2`,parent:27,localPos:[-8881784197001252e-30,3.6000000000000654,0],localQuat:[4870027600139235e-37,529395781586262e-37,.0008462316753971022,.9999996419459117],worldPos:[-83.0098375822885,143.57460339401808,-9.358496377738998],worldQuat:[.49931848396687806,-.5006807705888573,.500684962782278,.49931391486245963]},{name:`RightHandPinky3`,parent:28,localPos:[-53290705182007514e-30,2.1000000000000085,-2.116385644512775e-8],localQuat:[1859605644060166e-37,-39704674301868344e-39,-.000496777829639297,.9999998766058863],worldPos:[-85.1098297375345,143.5745850175554,-9.364236374919699],worldQuat:[.49956714946047176,-.5004326584550336,.5004368529177667,.4995625824392057]},{name:`RightHandPinky4`,parent:29,localPos:[12789769243681803e-29,2.1157810760144855,1.4407362414203817e-8],localQuat:[-6.420659236909123e-8,.0015694812069815289,-4128528174330759e-20,.9999987675113715],worldPos:[-87.22560761141007,143.5745664664587,-9.367917366015948],worldQuat:[.4988017359417918,-.4996273949534528,.5011996406746996,.5003680791387806]},{name:`LeftShoulder`,parent:3,localPos:[4.570446071555214,11.195644630655181,-.80662723793772],localQuat:[.48442267749711376,.5709704717068556,-.5261616291252289,.40308972946685606],worldPos:[4.570454255590543,144.58590649477904,-3.316358019038552],worldQuat:[-.4589930047913493,-.5378899562605334,.5599354515710177,-.4318241616452356]},{name:`LeftArm`,parent:31,localPos:[-17763568394002505e-31,10.837705310376135,0],localQuat:[-.02460635908641656,-.002561394687342173,.10350452783474903,.9943212655210948],worldPos:[15.162823921302898,144.06131195632307,-5.548478497344785],worldQuat:[.5000007152647227,.4999994684527458,-.5000001196887698,.4999996965928613]},{name:`LeftForeArm`,parent:32,localPos:[8881784197001252e-30,27.841521654197066,-2842170943040401e-29],localQuat:[9612242362214153e-38,13234889800848425e-39,-2646977960169688e-38,1],worldPos:[43.00434557545168,144.06126546354233,-5.548455563844584],worldQuat:[.5000007152647227,.4999994684527458,-.5000001196887698,.4999996965928612]},{name:`LeftHand`,parent:33,localPos:[5438735050766752e-21,28.328834533709,-5.564248510836478e-7],localQuat:[-626962918533632e-37,-3970466940254537e-38,-26469779601696903e-39,1],worldPos:[71.333180109117,144.06121871342071,-5.548437667671921],worldQuat:[.5000007152647227,.4999994684527458,-.5000001196887698,.4999996965928613]},{name:`LeftHandThumb1`,parent:34,localPos:[-2.681731448380733,2.466144851985561,1.5761928025685847],localQuat:[.25309644676633125,-.06132323271522458,.2273527590163699,.9383455508133752],worldPos:[73.79932012001562,142.48502080725694,-2.866704767040701],worldQuat:[.6787362281261902,.19828588307841977,-.512706326258779,.48696207677299685]},{name:`LeftHandThumb2`,parent:35,localPos:[-6439293542825908e-30,4.18709445950184,2842170943040401e-29],localQuat:[-.002067032129087745,.0010427308040619535,-.008213407893731095,.9999635893478415],worldPos:[77.01712188965233,140.61296547844856,-.9502182343475976],worldQuat:[.6766109604816792,.2054209516609806,-.5155696739884216,.48392949077136155]},{name:`LeftHandThumb3`,parent:36,localPos:[5440092820663267e-30,3.4183883081631072,5684341886080802e-29],localQuat:[-.0015313589649970979,.0007452552330187441,-.006073119605284013,.9999801081784668],worldPos:[79.67313738956891,139.08416322654404,.5642862932655532],worldQuat:[.6749931166817439,.2106761779810745,-.5176795589715161,.48167179145825934]},{name:`LeftHandThumb4`,parent:37,localPos:[1482147737874584e-29,2.580581439610723,0],localQuat:[.005153407131366997,.12268277993699259,.04165153492193895,.9915581311958046],worldPos:[81.69402483309037,137.93008677758235,1.6794194947408763],worldQuat:[.7440625177876421,.2372081988172148,-.41152267473439397,.46984287609461295]},{name:`LeftHandIndex1`,parent:34,localPos:[-2.2598629283141953,9.109308911975873,.5180343214524328],localQuat:[6.665759936749852e-7,-29380348585960335e-27,-44076517660685066e-21,.9999999990284081],worldPos:[80.44248629452144,143.5431683499078,-3.28856742622205],worldQuat:[-.4999790098166289,-.5000211729545403,.5000224907507637,-.4999773245691765]},{name:`LeftHandIndex2`,parent:39,localPos:[-6217248937900877e-30,3.6999999999999886,-5684341886080802e-29],localQuat:[3.407213613716439e-7,3580919473408932e-26,.0001050981787351313,.9999999944771283],worldPos:[84.14248628039589,143.54315723870565,-3.2888905447059225],worldQuat:[.5000317287407754,.49996845295921,-.49997011163297345,.5000297028895362]},{name:`LeftHandIndex3`,parent:40,localPos:[-7172040739078511e-28,2.849999999999966,5684341886080802e-29],localQuat:[3.347505650683504e-7,-22176925334093855e-27,-6624910485486997e-20,.9999999978054721],worldPos:[86.99248625886426,143.54314673774508,-3.2885403736491297],worldQuat:[-.49999877255511554,-.5000014111400769,.5000034044318037,-.499996411845041]},{name:`LeftHandIndex4`,parent:41,localPos:[858424442640171e-27,2.7748656282368103,0],localQuat:[1.0594603907920247e-8,-.0003775632648206345,-13069537623522493e-21,.9999999286375816],worldPos:[89.76735188694607,143.54313465598005,-3.288567098859584],worldQuat:[.4998034244662043,.4998191246365437,-.5001986899385569,.5001786182186978]},{name:`LeftHandMiddle1`,parent:34,localPos:[-3660436011010404e-20,9.53340148931592,-3254047146583616e-20],localQuat:[4.084735851900896e-7,-12926721325528698e-27,-3164640698382836e-20,.9999999994991691],worldPos:[80.86658159844058,144.06123533397496,-5.548393210486787],worldQuat:[-.49998509605784175,-.5000150871851532,.5000161468752833,-.499983668904545]},{name:`LeftHandMiddle2`,parent:43,localPos:[-26645352591003757e-31,3.6999999999999744,-2842170943040401e-29],localQuat:[-1.6358384175735772e-7,-34673461654660564e-28,2119614093572879e-20,.9999999997753484],worldPos:[84.5665815912097,144.0612261326968,-5.548624346151146],worldQuat:[-.49999561254479435,-.500004571111091,.5000054672459868,-.49999434899615885]},{name:`LeftHandMiddle3`,parent:44,localPos:[-28697044740511046e-28,2.9500000006246694,-2842170943040401e-29],localQuat:[-4.275899279477681e-7,-884662274908745e-26,20689502181930057e-21,.9999999997858808],worldPos:[87.51658159123295,144.06121976164127,-5.548683572757025],worldQuat:[.5000057434864292,.4999944401365919,-.4999949087122563,.5000049075508173]},{name:`LeftHandMiddle4`,parent:45,localPos:[-8713030297258229e-27,2.952863459443819,-14210854715202004e-29],localQuat:[-2.6759425390821073e-8,-.0010241407152540845,279847572642705e-19,.9999994751761864],worldPos:[90.46944505000428,144.06121590958617,-5.548620670295296],worldQuat:[.499507394771273,.49946812318416767,-.5004927166472543,.5005307154158994]},{name:`LeftHandRing1`,parent:34,localPos:[1.865081040398466,9.104528720799948,.04302823471783768],localQuat:[6.248995762954407e-7,39451643110942306e-28,6313277301958232e-21,.9999999999798759],worldPos:[80.43771029434576,144.0181759602736,-7.413511224335965],worldQuat:[.5000041843415268,.49999599935162675,-.4999972754894557,.5000025407699983]},{name:`LeftHandRing2`,parent:47,localPos:[-4440892098500626e-30,3.1500000002318416,0],localQuat:[-19345585602378175e-38,0,4235164736267838e-37,1],worldPos:[83.58771029427925,144.01816676318134,-7.413468855985753],worldQuat:[.5000041843415268,.4999959993516267,-.4999972754894557,.5000025407699983]},{name:`LeftHandRing3`,parent:48,localPos:[2643289183090758e-21,2.9500000001810776,5.209859352817148e-7],localQuat:[-8757673760813274e-38,1323488980045867e-38,12839125457873287e-48,1],worldPos:[86.53771029421749,144.01815762904647,-7.413431820978903],worldQuat:[.5000041843415268,.4999959993516267,-.4999972754894557,.5000025407699983]},{name:`LeftHandRing4`,parent:49,localPos:[-23274330810174604e-21,2.644316435477009,-14607575451464072e-22],localQuat:[-2.7316933950438635e-7,.0004934373218353761,16047023509748673e-21,.9999998781310067],worldPos:[89.18202672913526,144.0181513691535,-7.413372979877784],worldQuat:[.5002587275852554,.5002347713372702,-.49974233369355947,.49976392320219065]},{name:`LeftHandPinky1`,parent:34,localPos:[3.806263215177876,8.077778818742132,.4868770149745387],localQuat:[-4975537953269548e-21,1.0178097892277194e-8,.0020448023965822897,.9999979093770162],worldPos:[79.41096125008677,143.57432960785403,-9.354694407950916],worldQuat:[.5010195873847003,.4989785133401168,-.498974180943756,.5010235354085267]},{name:`LeftHandPinky2`,parent:51,localPos:[-3552713678800501e-30,3.6000000000000796,2842170943040401e-29],localQuat:[6.285466836481913e-7,-13240964884135178e-26,-.00021066000242779323,.9999999778109838],worldPos:[83.01093113307373,143.5743594144743,-9.339968896109413],worldQuat:[.5009147763033496,.49908373336086237,-.499080029188825,.5009180955410079]},{name:`LeftHandPinky3`,parent:52,localPos:[23803181647963356e-29,2.1000000536000414,5684341886080802e-29],localQuat:[1.0560541723515637e-7,-70842344057535595e-28,-6708211165014274e-20,.9999999977499896],worldPos:[85.11091705114045,143.57437416212716,-9.332263779357556],worldQuat:[.500881348481691,.4991172819497667,-.4991136834189969,.5008845621759181]},{name:`LeftHandPinky4`,parent:53,localPos:[11048939541069558e-28,2.12553132909224,0],localQuat:[2.2034709579345264e-7,-.0007833987784531817,-.0002953855857226705,.9999996495167691],worldPos:[87.23643510003559,143.57438864025644,-9.324750154134009],worldQuat:[.5003428461990634,.49887255781562256,-.4996539623833923,.5011278531377935]},{name:`RightUpLeg`,parent:0,localPos:[-8.207789844904983,-6.771764137627812,-1.5122187689572422],localQuat:[2.7047671429134563e-9,.010356475588677583,.9999463702685825,2.6115275064568443e-7],worldPos:[-8.207797572195703,97.52320568879888,-.04524648166077205],worldQuat:[4.391377782486676e-9,.0038980599621582274,.9999924025353709,2.611298350175175e-7]},{name:`RightLeg`,parent:55,localPos:[6.19727558159866e-9,44.37146193723237,-16631140908884845e-29],localQuat:[-.03809137752293408,-816315213450579e-24,2.1414893185802513e-8,.9992742601300231],worldPos:[-8.207820750122902,53.15309218889458,.3006761286643062],worldQuat:[-4.658818794361865e-9,-.03419585714041286,.9994151506528081,2.396960478727042e-7]},{name:`RightFoot`,parent:56,localPos:[-5.538291603102152e-9,44.52781411684904,18207657603852567e-30],localQuat:[.45974006194132166,3725814189701004e-38,-1.2432846936543718e-7,.8880535318583977],worldPos:[-8.207842064194724,8.729415862750969,-2.742876350631811],worldQuat:[1.1031211398837241e-7,.4291034315577479,.903255359809859,3.3926052346823936e-7]},{name:`RightToeBase`,parent:57,localPos:[0,13.816866143314009,6217248937900877e-30],localQuat:[.335241516804437,7023902526244116e-39,-1.1130089220595614e-7,.9421322228915896],worldPos:[-8.207849224193675,.0007420744116171107,7.96768124078066],worldQuat:[1.6990321486208088e-7,.7070808667083169,.7071326947149592,3.8318019813577996e-7]},{name:`RightToe_End`,parent:58,localPos:[-17763568394002505e-31,9.278120542404253,4288670113483661e-30],localQuat:[-3388360082792521e-36,.01160806788231821,11912203416067455e-38,.9999326241102645],worldPos:[-8.207852022918948,6202649694084369e-20,17.245801758262132],worldQuat:[-.008208274430290369,.7070332309537893,.7070850529927397,-.0082074595446575]},{name:`LeftUpLeg`,parent:0,localPos:[8.207788043566438,-6.771802818529409,-1.5122137762205135],localQuat:[2.8191483378909245e-9,.01036795967915088,.9999462512615453,2.718950400523856e-7],worldPos:[8.207780316275715,97.52316694663398,-.04524198897490894],worldQuat:[4.575136162088223e-9,.00390954458172457,.9999923577013424,2.7187116164010067e-7]},{name:`LeftLeg`,parent:60,localPos:[6.468269475590205e-9,44.37138978410286,37414515929867775e-30],localQuat:[-.0381124510208252,-8172602612650612e-25,2.142781333519525e-8,.9992734566059407],worldPos:[8.207756184976574,53.15313355499844,.30169921260475335],worldQuat:[-4.888837197809569e-9,-.034205455626157316,.9994148221861352,2.504235506344471e-7]},{name:`LeftFoot`,parent:61,localPos:[-5.547779124981389e-9,44.52784595754781,-2220446049250313e-29],localQuat:[.4597486071334844,-3725832749974238e-39,-1.1668517803347452e-7,.8880491080108168],worldPos:[8.207733916824536,8.729483932050528,-2.742708742345943],worldQuat:[1.147816207643381e-7,.4291034480907216,.9032553519556492,3.412529433141002e-7]},{name:`LeftToeBase`,parent:62,localPos:[17763568394002505e-31,13.81686480841043,-17763568394002505e-31],localQuat:[.33524149798857344,10535853714492708e-39,-1.1452079069214378e-7,.94213222958689],worldPos:[8.207726760093172,.0008113791108694812,7.967848133811215],worldQuat:[1.7340034603185666e-7,.707080865528955,.7071326958942321,3.864673509538802e-7]},{name:`LeftToe_End`,parent:63,localPos:[0,9.278136754869934,-13125351500109517e-31],localQuat:[0,-.011869165745076847,18530151004086692e-38,.9999295589712888],worldPos:[8.207723964114914,.00013129905961646127,17.245984863756057],worldQuat:[.008393248559463194,.7070310534383599,.7070828826815805,.008392846428263363]}],landmarks:{mouth:[0,158.500185546875,11.717991638183594],headEllipsoid:{centre:[-95367431640625e-19,167.56204986572266,-.15480518341064453],radii:[8.804292678833008,13.326271057128906,12.424483299255371]},headJoint:[1671650538423477e-20,159.92947501239226,-1.5195243864816557],headTop:[298931534294587e-19,181.96684091859,5.981578858112073],sole:{ball:0,tip:-.7}}},"y-bot-tpose":{model:`y-bot-tpose`,units:`cm`,mesh:`Alpha_Surface`,bones:[{name:`Hips`,parent:-1,localPos:[-6757011760782916e-21,99.79193878173828,4844740033149719e-20],localQuat:[7615435492247396e-26,-17453292503320135e-22,4363323128594654e-20,.9999999990465473],worldPos:[-6757011760782916e-21,99.79193878173828,4844740033149719e-20],worldQuat:[7615435492247396e-26,-17453292503320135e-22,4363323128594654e-20,.9999999990465473]},{name:`Spine`,parent:0,localPos:[.0008597856133863019,9.923461876522225,-1.2273349078167588],localQuat:[-.06073022898235704,5303745488019905e-37,6119354919596912e-21,.9981542161661715],worldPos:[-8672608244745512e-21,109.71540069587908,-1.227286457407732],worldQuat:[-.060730228859120175,-4391963877518737e-21,4956605444176136e-20,.9981542149520963]},{name:`Spine1`,parent:1,localPos:[0,11.731977989043784,-3552713678800501e-30],localQuat:[.0001960924550491026,4662287733052689e-29,-9316072744031837e-21,.9999999807304797],worldPos:[-.0011632832276606084,121.36083978703566,-2.649627688070991],worldQuat:[-.06053449713743436,-494801144686156e-20,4026803743853935e-20,.9981661049195772]},{name:`Spine2`,parent:2,localPos:[1931491945550423e-26,13.458836780167971,6235012506294879e-28],localQuat:[.057711730916465316,21958232674411106e-22,3285013706200134e-21,.9983332890868721],worldPos:[-.0022371547694859653,134.72103871836885,-4.27608729015328],worldQuat:[-.002827710078055566,-2.2517339024978275e-7,4363254684471116e-20,.9999960010679366]},{name:`Neck`,parent:3,localPos:[2548122992670175e-20,15.027761372130044,.8779068542021755],localQuat:[.0028277058943183713,-8816242878226746e-54,-7234126583784003e-36,.9999960020316957],worldPos:[-.003523660156014883,149.7535246254643,-3.4831824403326026],worldQuat:[-4.186445695616128e-9,-1.017924801167934e-7,4363300912729469e-20,.999999999048075]},{name:`Head`,parent:4,localPos:[2562548663041439e-21,10.32183835340436,3.1424288991299827],localQuat:[12407709188295404e-40,13234889800848435e-39,-33812794736012347e-37,1],worldPos:[-.0044224830930743595,160.07536296607333,-.3407536277174854],worldQuat:[-4.1864456956161264e-9,-1.0179248011679337e-7,43633009127294685e-21,.999999999048075]},{name:`HeadTop_End`,parent:5,localPos:[.00015451594228192873,18.474670356296826,6.63639947863672],localQuat:[693889473108785e-32,-661744490042423e-38,-10158249377722142e-36,1],worldPos:[-.005881529143937624,178.55003332101543,6.295645696100038],worldQuat:[-4.186445688677232e-9,-1.0179248011679308e-7,4363300912729468e-20,.999999999048075]},{name:`LeftShoulder`,parent:3,localPos:[6.105824524896,9.10629188078309,.757062475638635],localQuat:[-.45383506682997793,-.5448493479758866,.5511388470821386,-.4397941465761588],worldPos:[6.10279217248512,143.83199925791556,-3.5705353792059826],worldQuat:[-.4525659925709384,-.5433084112379314,.5526580275773418,-.44109987213863294]},{name:`LeftArm`,parent:7,localPos:[4884981308350689e-30,12.92228632488431,2842170943040401e-29],localQuat:[-.010451820107802023,-.0010627185813176982,.10115046260752789,.9948156683526521],worldPos:[18.75785325853472,143.5671732022338,-6.171454434247386],worldQuat:[.49997802104022876,.5000219779933275,-.4999777974641308,.5000222015503447]},{name:`LeftForeArm`,parent:8,localPos:[3.059411390893274e-9,27.404682159441652,-2842170943040401e-29],localQuat:[-10173904404505293e-36,6815758221109549e-42,13234889800848457e-39,1],worldPos:[46.162535310990236,143.5695947084291,-6.171442183765884],worldQuat:[.49997802104022876,.5000219779933275,-.4999777974641308,.5000222015503447]},{name:`LeftHand`,parent:9,localPos:[-12820418092474029e-21,27.614463806173113,2.3361064904747764e-7],localQuat:[-3397640826470449e-36,-18680226235633534e-43,52939559203393736e-39,1],worldPos:[73.77699900937316,143.57203451753804,-6.171417016006557],worldQuat:[.49997802104022876,.5000219779933275,-.4999777974641308,.5000222015503447]},{name:`LeftHandRing1`,parent:10,localPos:[2.216630558205681,12.147010274148471,-.009996226470974534],localQuat:[5.56794949511021e-7,-3.067028835367668e-9,4777353976607745e-21,.9999999999884335],worldPos:[85.92400934395243,143.5831040665074,-8.388042142881478],worldQuat:[.49998068669282075,.5000193094968617,-.4999756886184537,.500024313263825]},{name:`LeftHandRing2`,parent:11,localPos:[0,3.601188659840844,0],localQuat:[-2306826384812874e-21,1861861504887997e-26,-8071095064110734e-21,.999999999964768],worldPos:[89.52519798990681,143.58341826103262,-8.388006124364832],worldQuat:[.4999754975118546,.5000244982373176,-.49997857087756026,.5000214312542258]},{name:`LeftHandRing3`,parent:12,localPos:[-7140954494389007e-28,3.3073120118204997,22737367544323206e-29],localQuat:[-32584970000852863e-37,-2067951531382572e-40,-6352747104407258e-37,1],worldPos:[92.83250998771065,143.5837220743585,-8.388026432414401],worldQuat:[.49997549751185466,.5000244982373176,-.49997857087756026,.5000214312542258]},{name:`LeftHandRing4`,parent:13,localPos:[-241726316367874e-19,3.660118102908669,16886514032421474e-21],localQuat:[8486035821629225e-21,.007396474405473809,.0007707649842267434,.9999723486255485],worldPos:[96.49262807680708,143.5840414103271,-8.388024734185503],worldQuat:[.5040493957792119,.5033194611486261,-.4958855340273986,.4966903097363882]},{name:`LeftHandMiddle1`,parent:10,localPos:[-18344155402694184e-21,12.77552795411546,-10320898695681535e-22],localQuat:[5.567949752588633e-7,-2.6633364343577455e-9,2.0800236288001427e-7,.9999999999998233],worldPos:[86.55252691351437,143.5731644085546,-6.171392959489538],worldQuat:[.49997840212413347,.5000215942797767,-.49997797319957754,.5000220284932966]},{name:`LeftHandMiddle2`,parent:15,localPos:[-3552713678800501e-30,3.61396789550858,-2842170943040401e-29],localQuat:[23697741078528623e-36,6203854594147698e-40,-26469779601696844e-39,1],worldPos:[90.16649479526663,143.5734797180353,-6.171389840137076],worldQuat:[.49997840212413347,.5000215942797767,-.49997797319957754,.5000220284932966]},{name:`LeftHandMiddle3`,parent:16,localPos:[28508498060020315e-21,3.4597625732240687,-8526512829121202e-29],localQuat:[1692147750009982e-35,20679515313825724e-41,264697796016969e-37,1],worldPos:[93.62625735534596,143.57378157349484,-6.171415362383127],worldQuat:[.49997840212413347,.5000215942797767,-.49997797319957754,.5000220284932966]},{name:`LeftHandMiddle4`,parent:17,localPos:[-30473889779614183e-21,3.680191040059995,-2842170943040401e-29],localQuat:[-133272714831852e-20,.004579424073341433,-.000654144096597114,.9999893004272004],worldPos:[97.30644838137125,143.57410266077613,-6.171381711981186],worldQuat:[.5019349111684311,.5026337814312043,-.4980094305837711,.4974004762403589]},{name:`LeftHandThumb1`,parent:10,localPos:[-3.002975029424964,3.7888090485209744,2.1671489778191813],localQuat:[.25189492500135036,-.05946403657250492,.2219235197808198,.940086659027326],worldPos:[77.56599819190912,141.40522033116738,-3.168440292478436],worldQuat:[.6772116616355364,.20343190021506413,-.5147394802435296,.484812432594653]},{name:`LeftHandThumb2`,parent:19,localPos:[-19984014443252818e-31,4.744970523440218,2842170943040401e-29],localQuat:[69460704858849485e-22,55796786860811154e-28,8.032883032279416e-7,.9999999999755533],worldPos:[81.24162844278966,139.28353174695044,-1.0464306132517085],worldQuat:[.6772151925776482,.20342778079987783,-.5147405038353289,.48480814210593404]},{name:`LeftHandThumb3`,parent:20,localPos:[-5984102102729594e-28,4.3821287009303775,5172751116333529e-27],localQuat:[7030691099565929e-33,7121429504040547e-33,-15407439555097887e-48,1],worldPos:[84.63615479208448,137.32403482337068,.9133179986734019],worldQuat:[.6772151925776482,.20342778079987775,-.5147405038353289,.48480814210593404]},{name:`LeftHandThumb4`,parent:21,localPos:[-51284654249972306e-22,3.459077859769903,4.03463474185628e-7],localQuat:[.009146816027813427,.1256374250101491,.07207247635857116,.9894125182879566],worldPos:[87.31565650284612,135.77728679427992,2.4602700847142343],worldQuat:[.7538118553684166,.20866722684171796,-.3911265183168664,.4850213622280347]},{name:`LeftHandIndex1`,parent:10,localPos:[-2.822044006965872,12.266617250897596,.23182516767607808],localQuat:[5.567949601161418e-7,-3.075281477739248e-9,487076476385117e-20,.9999999999879827],worldPos:[86.04363543486608,143.34129324170544,-3.34936752423002],worldQuat:[.49998073339592125,.5000192627891642,-.4999756419148924,.5000243599710406]},{name:`LeftHandIndex2`,parent:23,localPos:[-13322676295501878e-31,3.891967773631521,0],localQuat:[-30225470980600983e-37,0,-6214320207710297e-21,.999999999980691],worldPos:[89.93560319348254,143.34163280596658,-3.349327870283342],worldQuat:[.49997762610645813,.5000223698198841,-.4999787492167228,.5000212529526508]},{name:`LeftHandIndex3`,parent:24,localPos:[4071321058063404e-26,3.415161132822689,-11368683772161603e-29],localQuat:[46684518186119064e-39,-9183549615799121e-56,21175823681357537e-38,1],worldPos:[93.35076431329836,143.34193077006435,-3.3493355202090695],worldQuat:[.49997762610645813,.5000223698198841,-.4999787492167229,.5000212529526508]},{name:`LeftHandIndex4`,parent:25,localPos:[5.854722480158614e-7,3.0779876709090814,5684341886080802e-29],localQuat:[10393592226093013e-22,.004001602788212073,22779581052790166e-21,.9999919932955144],worldPos:[96.4287519724834,143.34219931663745,-3.3493430003052733],worldQuat:[.5019862492920715,.5020073437901309,-.4979631636001596,.4980272281710877]},{name:`LeftHandPinky1`,parent:10,localPos:[4.72583130478205,10.908194092064392,.22613216873591568],localQuat:[28521120612919424e-22,-3.0577730863769185e-9,.000141051374267014,.9999999900481878],worldPos:[84.68521515320175,143.3468662092345,-10.897243443373178],worldQuat:[.5000499694422342,.49995002290857044,-.49990869131728644,.5000912946652625]},{name:`LeftHandPinky2`,parent:27,localPos:[-5329070518200751e-30,4.136657059551979,2842170943040401e-29],localQuat:[-59544873416476465e-22,2.190560405006969e-9,-.0003678839387923365,.9999999323129735],worldPos:[88.82187203349876,143.3472081321215,-10.896074631422186],worldQuat:[.4998630353195086,.5001369272162459,-.5000896549937187,.49991032888321396]},{name:`LeftHandPinky3`,parent:28,localPos:[43876013933186186e-29,2.594834461051775,0],localQuat:[36591694282576963e-22,8409112616016821e-25,.00022980932036022433,.999999973587143],worldPos:[91.41670621645012,143.34745351466333,-10.897250657097295],worldQuat:[.49997978792115133,.5000202113293842,-.49997658739741363,.5000234114387793]},{name:`LeftHandPinky4`,parent:29,localPos:[-2948752353404416e-28,2.9238662720287607,-2842170943040401e-29],localQuat:[-10497831164166655e-22,.004099894588367042,-.0005750644579927158,.9999914300453439],worldPos:[94.34057247729058,143.3477086145383,-10.89723194250163],worldQuat:[.5017372856540723,.5023540149301887,-.4982094589732469,.49768210220741194]},{name:`RightShoulder`,parent:3,localPos:[-6.1056956701096174,9.10638358733786,.7570756312724551],localQuat:[.4538375688887134,-.5448472538987562,.5511399888422243,.43979272809263187],worldPos:[-6.1087279840345,143.8310253866605,-3.5705252284969617],worldQuat:[.45261579666489365,-.5432669079313696,.5526977464106563,.44105012013225253]},{name:`RightArm`,parent:31,localPos:[39968028886505635e-31,12.922286714484947,0],localQuat:[-.01045541384979725,.0010630628959740092,-.10114940861202837,.9948157373885607],worldPos:[-18.763745414580892,143.56389953844294,-6.171423447408117],worldQuat:[.5000215299672571,-.4999784691060287,.5000215360351153,.4999784630368383]},{name:`RightForeArm`,parent:32,localPos:[8.327427636345419e-9,27.404682159441318,-2842170943040401e-29],localQuat:[-3388329060809388e-36,-15146129380243438e-44,8271806125530284e-40,1],worldPos:[-46.16842747236397,143.56153906740224,-6.171423771692651],worldQuat:[.5000215299672571,-.49997846910602883,.5000215360351153,.4999784630368383]},{name:`RightHand`,parent:33,localPos:[12842842382454478e-21,27.614463806155165,15492399938921153e-21],localQuat:[-19727179218464944e-41,-7573064690121704e-44,0,1],worldPos:[-73.78289117474843,143.55914503465877,-6.17141126400836],worldQuat:[.5000215299672571,-.4999784691060287,.5000215360351153,.4999784630368383]},{name:`RightHandThumb1`,parent:34,localPos:[3.002974470681663,3.7888088905192205,2.1671490371761024],localQuat:[.25189499102226326,.05946427874712486,-.2219234615465524,.9400866397658112],worldPos:[-77.57151342274972,141.3916696607838,-3.168436839313407],worldQuat:[.6772291629398663,-.20337279117491877,.5147821060302558,.4847675236487542]},{name:`RightHandThumb2`,parent:35,localPos:[-68833827526759706e-31,4.744970470128291,2842170943040401e-29],localQuat:[8453832451066965e-21,-33376070678072775e-28,-3.9480215616198235e-7,.9999999999641884],worldPos:[-81.24677425676067,139.26933968812125,-1.0464288158806956],worldQuat:[.6772333413527709,-.20336817191604672,.5147836339017984,.48476200168592604]},{name:`RightHandThumb3`,parent:36,localPos:[-17763568394002505e-29,4.382135391768333,-4092726157978177e-27],localQuat:[-14347996972659013e-33,-5998687332454958e-33,-1387778780781447e-32,1],worldPos:[-84.64095942776746,137.30923516924733,.9133180789494266],worldQuat:[.6772333413527709,-.20336817191604672,.5147836339017984,.48476200168592604]},{name:`RightHandThumb4`,parent:37,localPos:[11177533225659175e-21,3.4590709023307085,-23241859054223823e-21],localQuat:[.00923206336161341,-.1271302153500302,-.0723276818427547,.989202397788438],worldPos:[-87.32019182850055,135.76203483248253,2.460268746809576],worldQuat:[.7545499013151971,-.2090649481886763,.389944180490974,.4846543407061524]},{name:`RightHandIndex1`,parent:34,localPos:[2.822042502024897,12.266617102415225,.23182522345669554],localQuat:[5.567922673046469e-7,-7.224337929733461e-9,-4743924457641052e-21,.9999999999885925],worldPos:[-86.04948829791044,143.32626324098368,-3.3493689108641775],worldQuat:[.5000241838181078,-.4999758222398485,.5000194389411731,.4999805530753941]},{name:`RightHandIndex2`,parent:39,localPos:[0,3.891967773619811,0],localQuat:[1695401251774016e-35,-4135903062840235e-40,602627167052741e-20,.9999999999818419],worldPos:[-89.94145605654246,143.32592367674323,-3.3493320316989923],worldQuat:[.5000211708188947,-.4999788355123435,.5000224519507367,.4999775398133359]},{name:`RightHandIndex3`,parent:40,localPos:[-51669779566054785e-28,3.4151611328221207,11368683772161603e-29],localQuat:[-13593959205239575e-36,0,0,1],worldPos:[-93.35661717635494,143.32562571266394,-3.349340831998884],worldQuat:[.5000211708188947,-.4999788355123435,.5000224519507367,.4999775398133359]},{name:`RightHandIndex4`,parent:41,localPos:[-12771572572845002e-22,3.0779876709101757,-2842170943040401e-29],localQuat:[-7290381402922513e-20,-.006709307422924062,.0013745331778991744,.9999765449936721],worldPos:[-96.4346048355366,143.3253571661075,-3.3493500406116747],worldQuat:[-.5026405594004304,.5040453607575476,-.49730671352060296,-.49596045712511533]},{name:`RightHandMiddle1`,parent:34,localPos:[16632154487439266e-21,12.775527954114011,-10320893863990932e-22],localQuat:[5.567949633221699e-7,-7.289108692409176e-9,-3.662527039828292e-7,.9999999999997777],worldPos:[-86.55841908156046,143.55804566121927,-6.171394786911078],worldQuat:[.5000219951158138,-.4999780112066047,.5000216276573223,.4999783641170999]},{name:`RightHandMiddle2`,parent:43,localPos:[8881784197001252e-31,3.6139678955093757,0],localQuat:[-33759614098155274e-37,-4135903062765133e-40,0,1],worldPos:[-90.17238696331393,143.55773035173834,-6.171392183522983],worldQuat:[.5000219951158138,-.4999780112066047,.5000216276573223,.4999783641170999]},{name:`RightHandMiddle3`,parent:44,localPos:[-29421479796454264e-21,3.4597625732165085,14210854715202004e-29],localQuat:[34003021678244415e-37,-8271806125530284e-40,-7940933880509075e-38,1],worldPos:[-93.63214952338268,143.55742849627876,-6.1714191126993185],worldQuat:[.5000219951158138,-.4999780112066047,.5000216276573223,.4999783641170999]},{name:`RightHandMiddle4`,parent:45,localPos:[28549065814509333e-21,3.680191040067001,-5684341886080802e-29],localQuat:[-5158123071926063e-20,-.006695195594000001,-.0017083442773867367,.9999761263426065],worldPos:[-97.31234054942114,143.557107408997,-6.171387912540353],worldQuat:[.504186145435319,-.5024851098604104,.49578202059538456,.49749897806327625]},{name:`RightHandRing1`,parent:34,localPos:[-2.216632303077052,12.147002761381543,-.009996270293299858],localQuat:[5.567954667309114e-7,-7.224304767843245e-9,-4803651127566965e-21,.9999999999883074],worldPos:[-85.92989472518438,143.5680950366908,-8.38804371451417],worldQuat:[.5000242136815972,-.49997579237346873,.5000194090805982,.49998058293828956]},{name:`RightHandRing2`,parent:47,localPos:[0,3.6011962892353893,-8526512829121202e-29],localQuat:[-5732183384702703e-36,0,8071083662125689e-21,.9999999999674287],worldPos:[-89.53109100054763,143.5677808414962,-8.388009160440863],worldQuat:[.5000201783188615,-.4999798280944457,.5000234444494263,.4999765472235214]},{name:`RightHandRing3`,parent:48,localPos:[-6055600465515454e-27,3.307312011785328,-11368683772161603e-29],localQuat:[32821615918857455e-37,-36734198463196485e-56,21175823681357546e-38,1],worldPos:[-92.83840299967426,143.56749228695628,-8.38803081342569],worldQuat:[.5000201783188615,-.4999798280944457,.5000234444494263,.4999765472235214]},{name:`RightHandRing4`,parent:49,localPos:[2417262415121968e-20,3.6601181029476635,-2842170943040401e-29],localQuat:[-6164489635359998e-20,-.007613221748708619,-.000300224892743606,.9999709720384515],worldPos:[-96.49852108877111,143.56717295098406,-8.388030603602541],worldQuat:[.5039317385023292,-.503652452411389,.49602123868179077,.49633651979941534]},{name:`RightHandPinky1`,parent:34,localPos:[-4.725833119502555,10.90819434071372,.2261320753251539],localQuat:[5.567949828639406e-7,-7.530380981813863e-9,-3132050030138696e-21,.99999999999494],worldPos:[-84.69106594001192,143.3320733953033,-10.897244515904388],worldQuat:[.5000233780731588,-.4999766283665967,.5000202446951756,.49997974695226793]},{name:`RightHandPinky2`,parent:51,localPos:[0,4.13665008553545,-2842170943040401e-29],localQuat:[1470867824118891e-37,8271806125977124e-40,10394374390791114e-21,.9999999999459783],worldPos:[-88.8277160097222,143.33171248313417,-10.897218653721097],worldQuat:[.5000181811018849,-.4999818257697831,.5000254416448413,.49997454952763204]},{name:`RightHandPinky3`,parent:52,localPos:[-3950617610826157e-27,2.5948410036845218,-8526512829121202e-29],localQuat:[6674018442413745e-36,1836709923259698e-55,-10428465638715964e-21,.9999999999456235],worldPos:[-91.42255700325643,143.33148608987582,-10.897256374372848],worldQuat:[.5000233951179858,-.49997661132017523,.5000202276502416,.4999797639985816]},{name:`RightHandPinky4`,parent:53,localPos:[4362732397567015e-27,2.923866272034857,5684341886080802e-29],localQuat:[-8226663950025322e-20,-.00849884034311731,.0022061069470672434,.9999614472754239],worldPos:[-94.34642326410449,143.33123099000105,-10.897237895108226],worldQuat:[-.5031095764062739,.5053508241180749,-.4968132089402998,-.4946493041680384]},{name:`LeftUpLeg`,parent:0,localPos:[9.123873709849553,-6.657188518716367,-.05540310527662988],localQuat:[20251728747483253e-21,-.006350177975401161,.9999754277247583,-.002969642442257367],worldPos:[9.12444806072654,93.13554649657034,-.05532280954860631],worldQuat:[18783520922709306e-21,-.006350171978846871,.999975297231096,-.00301328568169704]},{name:`LeftLeg`,parent:55,localPos:[-4618527782440651e-29,40.59943638074365,1170175067954915e-28],localQuat:[-.018114309191591866,.00018249364298742092,-.005920146666904975,.9998183786878614],worldPos:[9.369107731941927,52.540121711606496,-.5709414745281038],worldQuat:[-715314874584385e-19,-.02446331907456045,.9996964939479204,.00290876113461602]},{name:`LeftFoot`,parent:56,localPos:[-10658141036401503e-30,42.09902591219656,20872192862952943e-30],localQuat:[.5405498192560871,.01436647216366454,.024951033886733327,.8408192096329419],worldPos:[9.12441738143423,10.49219684921195,-2.6300976499043784],worldQuat:[-.01346031169880001,.5198601039256607,.853859207560786,-.022107600933591907]},{name:`LeftToeBase`,parent:57,localPos:[17763568394002505e-31,15.721559146548017,-1509903313490213e-29],localQuat:[.2276920621809942,-.032521469150786096,-.015365592016704316,.9730686396375217],worldPos:[9.497939603229476,3.2836504838127345,11.336461068911172],worldQuat:[.0016492651748272183,.7007886739142866,.7132730439227728,.01157925951782756]},{name:`LeftToe_End`,parent:58,localPos:[17763568394002505e-31,9.999999999999991,4.890746918562172e-9],localQuat:[3842630640765734e-25,-2181956872127079e-33,8673617379884037e-34,1],worldPos:[9.355871856763304,3.108427383452366,21.333916426176543],worldQuat:[.0016492651792767014,.700788674188371,.7132730436534856,.011579259517193808]},{name:`RightUpLeg`,parent:0,localPos:[-9.125032356625555,-6.655601347887028,-.05535274484958799],localQuat:[-17972283601838397e-21,-.006333801286546503,.9999752669985558,.0030574547301418053],worldPos:[-9.12445807483328,93.1355411499169,-.055336149820714026],worldQuat:[-19441205218510228e-21,-.006333807477113975,.9999753994199062,.00301381152055421]},{name:`RightLeg`,parent:60,localPos:[7105427357601002e-30,40.59943859177964,26645352591003757e-30],localQuat:[-.018147073530042527,-.00018249394989624574,.005920149654138874,.9998177845219228],worldPos:[-9.369160167563622,52.54009755727,-.5696263108436963],worldQuat:[7086285029500266e-20,-.024479715368387448,.9996960941175567,-.0029082503401009767]},{name:`RightFoot`,parent:61,localPos:[-24868995751603507e-30,42.09902387472938,-6217248937900877e-29],localQuat:[.5405636018310247,-.014366037304083883,-.024951225824318232,.8408103506008421],worldPos:[-9.12451164224619,10.492242047309674,-2.6301615125796047],worldQuat:[.013459958226241265,.5198600714589466,.8538592128932476,.02210837363015364]},{name:`RightToeBase`,parent:62,localPos:[3552713678800501e-30,15.721558809599616,26645352591003757e-31],localQuat:[.22770869920802236,.03211960072148292,.015257901862228916,.9730797891155923],worldPos:[-9.498060396707743,3.2836958492734345,11.33639620371245],worldQuat:[-.0013617607248561205,.700801240791512,.7132661380535977,-.011277536030161229]},{name:`RightToe_End`,parent:63,localPos:[3.1880595940947387e-9,9.999999999999998,5.687534443410414e-9],localQuat:[-3109963189751316e-25,-16439215440311446e-32,-17347234759768052e-34,1],worldPos:[-9.356269180688868,3.1086870931784847,21.33385924122101],worldQuat:[-.0013617607213487338,.7008012405696887,.7132661382715444,-.011277536030584614]}],landmarks:{mouth:[0,158.399150390625,12.493875312805176],headEllipsoid:{centre:[-16689300537109375e-21,167.32984161376953,.6807799339294434],radii:[8.005595684051514,13.133369445800781,12.374487400054932]},headJoint:[-.0044224830930743595,160.07536296607333,-.3407536277174854],headTop:[-.005881529143937624,178.55003332101543,6.295645696100038],sole:{ball:3.3,tip:2.6}}}},Cf=new Map;function wf(e){return Sf[e]?(Cf.has(e)||Cf.set(e,js(Sf[e])),Cf.get(e)):null}var Tf=e=>e.flatMap(e=>[`${e}_l`,`${e}_r`]),Ef=new Set([`root`,...Tf([`foot`,`knee`,`hand`,`elbow`])]),Df=new Set(Tf([`knee`,`elbow`])),Of=new Set([`yaw`,`pitch`,`roll`,`spine_yaw`,`spine_pitch`,`spine_roll`,`head_yaw`,`head_pitch`,`head_roll`,`arm_rest`,`arm_hang`,...Tf([`fyaw`,`fpitch`,`armw`,`wtwist`,`wflex`,`aswing`,`abend`])]),kf=new Set(Tf([`fingers`])),Af=new Set([`arm_hang`]),jf=[`relaxed`,`fist`,`grip`,`cigarette`,`point`],Mf=[`power`,`pinch`,`hook`,`palm`],Nf={power:`grip`,pinch:`cigarette`,hook:`grip`,palm:`relaxed`},Pf={power:[0,0,.02],hook:[0,0,.02],pinch:[.025,0,.01],palm:[-.045,0,.015]},Ff=[[/^(armw)_[lr]$/,0,1,`0 FK, 1 IK to the hand target`],[/^arm_hang$/,0,1,`1 = a free FK forearm hangs plumb`],[/^w_.+_[lr]$/,0,1,`hand-target weight; a hand's sum <= 1`],[/^wtwist_[lr]$/,-85,85,`twist about the forearm, deg`],[/^wflex_[lr]$/,-70,70,`flex about the knuckle line, deg`],[/^fpitch_[lr]$/,-60,90,`toe-down pitch, deg: + lifts the heel (toes flat), - lifts the toes`],[/^(spine_pitch|head_pitch)$/,-120,120,`degrees, + bends forward`],[/^(spine_roll|head_roll)$/,-90,90,`degrees`]],If=e=>Ff.find(([t])=>t.test(e))??null,Lf={yaw:`yaw 0 faces +Z and + turns toward +X`,fyaw:`foot heading, as yaw`,pole:`body-frame direction (root yaw): +z forward, +x its left, +y up`,foot:`ANKLE target, world m (standing 0.087 X Bot, 0.105 Y Bot)`,hand:`WRIST target, world m`,root:`hips joint, world m (standing 1.03 X Bot, 0.99 Y Bot)`},Rf={root:Lf.root,yaw:`deg; ${Lf.yaw}`,pitch:`degrees`,roll:`degrees`,spine_yaw:`degrees`,spine_pitch:`deg, + bends forward`,spine_roll:`degrees`,head_yaw:`degrees`,head_pitch:`degrees, + looks down`,head_roll:`degrees`,arm_rest:`FK arms down, deg, default 72`,arm_hang:`1 = a free FK forearm hangs plumb (standIdle and walks key it)`,foot:Lf.foot,fyaw:Lf.fyaw,fpitch:`toe-down pitch, degrees, + heel up`,knee:`knee pole, ${Lf.pole}`,armw:`0 = FK arm, 1 = IK to hand_* / the anchors`,hand:Lf.hand,elbow:`elbow pole, ${Lf.pole}`,wtwist:`wrist twist, degrees`,wflex:`wrist flex, degrees`,aswing:`FK arm swing, deg, + forward`,abend:`FK elbow bend, deg`,fingers:`{ preset: weight 0..1 }`},zf=e=>e.replace(/_[lr]$/,``),Bf=[[[`frames`,`when`,`range`,`f`,`from`,`within`,`during`,`at`],[`when`,`frames`,`at`,`f`]],[[`max`,`maxDist`,`distance`,`tolerance`,`limit`],[`tol`,`min`]]];function Vf(e,t){for(let[n,r]of Bf){let i=n.includes(e)&&r.find(n=>t.includes(n)&&n!==e);if(i)return`; did you mean "${i}"?`}return Wf(e,t,Math.max(2,Math.floor(e.length/3)))}var Hf=e=>Array.isArray(e)&&e.length===3&&e.every(Number.isFinite),Y=e=>JSON.stringify(e)?.slice(0,60);function Uf(e,t){let n=Array.from({length:e.length+1},(e,n)=>[n,...Array(t.length).fill(0)]);for(let e=1;e<=t.length;e++)n[0][e]=e;for(let r=1;r<=e.length;r++)for(let i=1;i<=t.length;i++)n[r][i]=Math.min(n[r-1][i]+1,n[r][i-1]+1,n[r-1][i-1]+(e[r-1]===t[i-1]?0:1));return n[e.length][t.length]}function Wf(e,t,n=Math.max(3,Math.floor(e.length/3))){let r=null,i=1/0;for(let n of t){let t=Uf(e,n);t<i&&(r=n,i=t)}return r&&i<=n?`; did you mean "${r}"?`:``}var Gf={pelvis:`Hips`,hip:`Hips`,hips:`Hips`,root:`Hips`,chest:`Spine2`,upperchest:`Spine2`,torso:`Spine1`,belly:`Spine`,abdomen:`Spine`,neck:`Neck`,head:`Head`},Kf={hand:`Hand`,wrist:`Hand`,foot:`Foot`,ankle:`Foot`,toe:`ToeBase`,toes:`ToeBase`,ball:`ToeBase`,arm:`Arm`,upperarm:`Arm`,forearm:`ForeArm`,lowerarm:`ForeArm`,elbow:`ForeArm`,shoulder:`Shoulder`,clavicle:`Shoulder`,thigh:`UpLeg`,upleg:`UpLeg`,upperleg:`UpLeg`,leg:`Leg`,lowerleg:`Leg`,shin:`Leg`,calf:`Leg`,knee:`Leg`},qf={l:`Left`,left:`Left`,r:`Right`,right:`Right`},Jf=e=>e.toLowerCase().replace(/[\s_.-]+/g,``);function Yf(e,t){let n=t.toLowerCase();return e.names.find(e=>e.toLowerCase()===n)??null}function Xf(e,t){let n=Jf(t);if(Gf[n])return Yf(e,Gf[n]);let r=t.toLowerCase().trim(),i=/^(l|r|left|right)[\s_.-]+(.+)$/.exec(r)??/^(left|right)(.+)$/.exec(r),a=/^(.+?)[\s_.-]+(l|r|left|right)$/.exec(r)??/^(.+?)(left|right)$/.exec(r),[o,s]=i?[i[1],i[2]]:a?[a[2],a[1]]:[];return o?Yf(e,`${qf[o]}${Kf[Jf(s)]??Jf(s)}`):null}function Zf(e,t){if(typeof t!=`string`||!t)return{bone:null,hint:``};if(e.index[t]!==void 0)return{bone:t,hint:``};let n=t.replace(/^mixamorig\d*:/i,``),r=Yf(e,t)??Yf(e,n)??Xf(e,n);return r?{bone:r,hint:``}:{bone:null,hint:Wf(n,e.names)}}var Qf=new WeakMap,$f=e=>Math.round(e*1e5)/1e5;function ep(e,t){let n=JSON.stringify(t),r=Qf.get(e);if(r?.key===n)return r.value;let i=wf(e.rig),a=e.bones.length,o=e.frameCount,s=i.names,c=s.length,l=s.map(t=>e.bones.indexOf(t)),u=Ss(t.yaw),d=new Float64Array(o*c*3);for(let n=0;n<o;n++){let r=Fs(i,l.map(t=>t<0?[0,0,0,1]:Array.from(e.rot.subarray((n*a+t)*4,(n*a+t)*4+4))),Array.from(e.hips.subarray(n*3,n*3+3)));for(let e=0;e<c;e++)d.set(R(t.position,G(u,r.P[e])).map($f),(n*c+e)*3)}let f={rig:e.rig,frames:o,names:s,P:d};return Qf.set(e,{key:n,value:f}),f}function tp(e,t,n){let r={};for(let i of e??[]){if(!i||i.id===t||i.hidden)continue;let e=n(i.id);e?.schema!==`cozyclay.take.v3`||!e.frameCount||!wf(e.rig)||(r[i.id]={name:i.subject||i.name||i.id,...ep(e,{position:[i.x??0,i.y??0,i.z??0],yaw:i.rot??0})})}return r}function np(e,t,n,r){let i=e?.people?.[t];if(!i)return null;let a=i.names.indexOf(Zf(wf(i.rig),n).bone??``);if(a<0)return null;let o=(Math.max(0,Math.min(i.frames-1,Math.round(r)))*i.names.length+a)*3;return[i.P[o],i.P[o+1],i.P[o+2]]}var rp=e=>Object.entries(e?.people??{}).map(([e,t])=>`${e} (${t.name})`).join(`, `)||`none: no other character has an installed take`;function ip(e,t){let n=new Map,r=(t,r)=>{let i=e?.people?.[t],a=i&&Zf(wf(i.rig),r).bone;a&&n.set(t,new Set([...n.get(t)??[],a]))},i=(e,t)=>{if(typeof e==`string`){let n=/^person:([^.]+)(?:\.(.+))?$/.exec(e);n&&(n[2]||t===`from`)&&r(n[1],n[2]??`Hips`)}else if(Array.isArray(e))e.forEach(e=>i(e));else if(e&&typeof e==`object`){e.kind===`person`&&r(e.person,e.bone);for(let[t,n]of Object.entries(e))i(n,t)}};return i(t),n.size?Object.fromEntries([...n].map(([t,n])=>{let r=e.people[t],i=[...n],a=r.names.length,o=[];for(let e=0;e<r.frames;e++)for(let t of i){let n=(e*a+r.names.indexOf(t))*3;o.push(r.P[n],r.P[n+1],r.P[n+2])}return[t,{name:r.name,rig:r.rig,frames:r.frames,names:i,P:o}]})):null}var ap=[`schema`,`fps`,`frames`,`label`,`keys`,`anchors`,`props`,`fits`,`objects`,`generators`,`checks`,`fix`,`use`,`channels`,`detourRadius`,`search`,`goals`,`flow`,`idle`],op=[`f`,`set`,`step`,`src`],sp=[`skill`,`args`,`f0`],cp={world:[`p`],body:[`p`],bone:[`bone`,`offset`],segment:[`from`,`to`,`t`,`tMin`,`offset`,`reach`],object:[`object`,`local`,`socket`,`grasp`],landmark:[`name`],prop:[`prop`,`point`,`offset`],person:[`person`,`bone`,`offset`]},lp=[`hand`,`origin`,`points`],up=[`side`,`anchor`,`effector`,`offset`,`orient`],dp={hinge:[`pivot`,`axis`,`channel`],carry:[`prop`,`at`,`along`,`visible`,`level`,`grab`,`release`,`keys`,`fall`],switch:[`visible`,`level`],follow:[`follow`,`offset`,`aim`,`visible`,`level`],free:[`keys`,`fall`,`visible`,`level`]},fp=[`at`,`onto`,`bounce`,`tumble`],pp=[`f`,`pos`,`rot`,`aim`,`roll`,`lean`],mp=[`type`,`f0`,`steps`,`step`,`period`,`swing`,`halfWidth`,`lift`,`heading`,`turnDistance`,`pelvisHigh`,`pelvisLow`,`firstStep`,`armSwing`,`vary`],hp=[`contacts`,`orient`,`below`,`clearance`,`appear`,`supports`,`allow`,`limits`,`mouthPoints`],gp={contacts:[`name`,`point`,`target`,`tol`,`when`],orient:[`name`,`from`,`to`,`along`,`minCos`,`when`],below:[`name`,`joint`,`ref`,`min`,`when`],clearance:[`name`,`part`,`object`,`min`,`frames`],appear:[`name`,`channel`,`joint`,`anchor`,`tol`],supports:[`object`,`part`,`tol`],allow:[`part`,`object`,`depth`]},_p=[`name`,`near`,`above`,`moved`,`still`,`speed`,`tol`,`by`,`at`,`mode`,`after`,`before`],vp=[`name`,`distance`,`position`,`frames`,`every`],yp=[`joint`,`bone`,`prop`,`anchor`,`landmark`,`object`,`person`],bp=[`essentials`,`spec`,`skills`,`anchors`,`props`,`objects`,`checks`,`goals`,`probes`,`channels`,`refs`,`fix`,`examples`];function xp(e,t,n,r){return!t||t.index[r]!==void 0||(e(`${n} names unknown bone "${r}"${Wf(String(r),t.names)}`),!1)}function Sp(e,t,n,r,{groups:i=!1}={}){let a=Object.keys(t?.objects??{});if(!a.length||a.includes(r))return!0;let o=qp(t,r);return o.length&&i?!0:(o.length?e(`${n} names "${r}", a group (Empty) with no body of its own; its parts are ${o.join(`, `)}. Name one part`):e(`${n} names object "${r}", which is not in the scene${Wf(String(r),[...new Set([...a,...a.flatMap(e=>t.objects[e].ancestors??[]),...Object.keys(t.others??{})])])}`),!1)}function Cp(e,t,n,r,i){let[a,o]=String(i).split(/:(.*)/s);if(a===`joint`)return xp(t,n,r,o);if(a===`anchor`)return e.anchors?.[o]?!0:t(`${r} "${i}" names no anchor`);if(a===`prop`){let[n,a]=(o??``).split(`.`);return e.props?.[n]?.points?.[a]||a===`origin`?!0:t(`${r} "${i}" names no prop point`)}t(`${r} "${i}" must be joint:<Bone>, prop:<prop>.<point> or anchor:<name>`)}var wp={joint:`joint:<Bone>`,bone:`bone:<Bone>`,prop:`prop:<prop>.<point>`,anchor:`anchor:<name>`,landmark:`landmark:mouth`,object:`object:<id>[.center|.top|.base]`,person:`person:<id>.<Bone>`};function Tp(e){let t=/^([a-z]+):(.+)$/s.exec(String(e));if(!t)return null;let[,n,r]=t;if(n===`prop`){let[e,t]=r.split(`.`);return{kind:n,name:e,point:t??``}}if(n===`object`){let e=/^(.+)\.(center|top|base)$/s.exec(r);return{kind:n,name:e?e[1]:r,point:e?e[2]:null}}if(n===`person`){let e=r.lastIndexOf(`.`);return{kind:n,name:e>0?r.slice(0,e):r,point:e>0?r.slice(e+1):``}}return{kind:n,name:r,point:null}}function Ep(e,t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let t of e)for(let e of[-1,1])for(let i of[0,2])for(let a of[-1,1]){let o=R(t.pos,G(t.R,[e*t.half[0],i*t.half[1],a*t.half[2]]));for(let e=0;e<3;e++)n[e]=Math.min(n[e],o[e]),r[e]=Math.max(r[e],o[e])}let i=[(n[0]+r[0])/2,(n[1]+r[1])/2,(n[2]+r[2])/2];return t===`top`?[i[0],r[1],i[2]]:t===`base`?[i[0],n[1],i[2]]:i}function Dp(e,t,n){let r=e.frames?.[t-(e.f0??0)],i=Tp(n);if(!r||!i)return null;let{s:a,diag:o,c:s}=r,c=e.ctx.sk;switch(i.kind){case`joint`:case`bone`:{let{bone:e}=Zf(c,i.name);return e?a.P[c.index[e]].slice():null}case`prop`:{let e=o.props?.[i.name]?.[i.point];return Array.isArray(e)?e.slice():null}case`anchor`:return e.ctx.spec.anchors?.[i.name]?Dm(e.ctx,i.name,a,{...o,frame:t},s):null;case`landmark`:return c.landmarks?.[i.name]?Is(a,c.index.Head,c.landmarks[i.name]):null;case`object`:{let n=lm(e,i.name,t);return n?Ep(n,i.point):null}case`person`:return np(e.ctx.scene,i.name,i.point,t);default:return null}}function Op(e,t,n,r){let i=e=>{let t=Tp(e);return t?.kind===`object`&&t.point===null?t:null},a=i(r)?[n,i(r)]:i(n)?[r,i(n)]:null;if(a){let n=Dp(e,t,a[0]),r=lm(e,a[1].name,t);return n&&r?Math.max(0,Math.min(...r.map(e=>Du(n,e)))):null}let o=Dp(e,t,n),s=Dp(e,t,r);return o&&s?H(z(o,s)):null}function kp(e,{sk:t,scene:n},r,i){if(typeof r!=`string`||!r)return``;let a=r.replace(/\.(center|top|base)$/,``),[o,s]=r.split(`.`),c=t&&(i.includes(`joint`)||i.includes(`bone`))?Zf(t,r).bone:null,l=[i.includes(`object`)&&(n?.objects?.[a]||qp(n,a).length)&&`object:${r}`,c&&`${i.includes(`joint`)?`joint`:`bone`}:${c}`,i.includes(`anchor`)&&e.anchors?.[r]&&`anchor:${r}`,i.includes(`prop`)&&e.props?.[o]&&(s===`origin`||e.props[o].points?.[s])&&`prop:${r}`,i.includes(`landmark`)&&r===`mouth`&&`landmark:mouth`].filter(Boolean);return l.length?`; did you mean ${l.map(e=>`"${e}"`).join(` or `)}?`:``}function Ap(e,t,{sk:n,scene:r},i,a,o=yp){let s=Tp(a),c=`${i} "${a}"`;if(!s||!o.includes(s.kind))return t(`${c} must be ${o.map(e=>wp[e]).join(`, `)}${s?``:kp(e,{sk:n,scene:r},a,o)}`),!1;if(s.kind===`joint`||s.kind===`bone`){let{bone:e,hint:r}=n?Zf(n,s.name):{bone:s.name};return e||t(`${c}: unknown bone${r}`),!!e}if(s.kind===`prop`){let n=!!(e.props?.[s.name]&&(s.point===`origin`||e.props[s.name].points?.[s.point]));return n||t(`${c}: spec.props has no point ${s.name}.${s.point}`),n}if(s.kind===`anchor`)return e.anchors?.[s.name]||t(`${c}: no anchor "${s.name}" in spec.anchors${Wf(s.name,Object.keys(e.anchors??{}))}`),!!e.anchors?.[s.name];if(s.kind===`landmark`)return s.name!==`mouth`&&t(`${c}: the only landmark is "mouth"`),s.name===`mouth`;if(s.kind===`person`){let e=!!np(r,s.name,s.point,0);return e||t(`${c}: no person "${s.name}" with joint "${s.point}" (people with an installed take: ${rp(r)})`),e}return Sp(t,r,c,s.name,{groups:!0})}var jp=[0,1,0];function Mp(e,t,n=`up`,r){if(Array.isArray(n))return U(n);if(n===`face`){let{sk:n}=e.ctx;return U(Ls(n,e.frames[t-(e.f0??0)].s,n.index.Head,[0,0,1]))}let i=n===`up`?null:Dp(e,t,n),a=i?z(i,r):jp;return H(a)>1e-9?U(a):jp}function Np(e,t,n){let r=e.f0??0,i=Math.max(r,Math.min(r+e.frames.length-1,n)),a=Dp(e,i,t.follow);if(!a)return null;let o=Os(uc(jp,Mp(e,i,t.aim,a)));return{pos:R(a,G(o,t.offset??[0,0,0])),R:o}}function Pp(e,t){let n=t.length,r=Array(n).fill(0);for(let i=1;i<n-1;i++){let n=e[i]-e[i-1],a=e[i+1]-e[i],o=(t[i]-t[i-1])/n,s=(t[i+1]-t[i])/a;if(o*s>0){let e=2*a+n,t=a+2*n;r[i]=(e+t)/(e/o+t/s)}}return r}function Fp(e,t,n,r){if(e.length===1||r<=e[0])return t[0];if(r>=e[e.length-1])return t[t.length-1];let i=0;for(;r>e[i+1];)i++;let a=e[i+1]-e[i],o=(r-e[i])/a,s=o*o,c=s*o;return(2*c-3*s+1)*t[i]+(c-2*s+o)*a*n[i]+(-2*c+3*s)*t[i+1]+(c-s)*a*n[i+1]}var Ip=/^(spine|head)_(yaw|pitch|roll)$|^(aswing|abend)_[lr]$/,Lp={spine:0,head:2,arms:3},Rp=.15,zp=6,Bp=e=>/^(spine|head)_/.test(e)?[`l`,`r`]:/^(aswing|abend)_([lr])$/.test(e)?[e.slice(-1)]:[],Vp=e=>/^spine_/.test(e)?`spine`:/^head_/.test(e)?`head`:/^(aswing|abend)_[lr]$/.test(e)?`arms`:null;function Hp(e){if(e===!1)return{smooth:!1,lag:{spine:0,head:0,arms:0}};let t=e??{},n=t.lag===!1?0:t.lag,r=typeof n==`number`?{spine:n,head:n,arms:n}:{...Lp,...n??{}};return{smooth:t.smooth!==!1,lag:r}}function Up(e,t){let n=t.length,r=Array(n).fill(0);for(let i=1;i<n-1;i++)t[i]!==t[i-1]&&t[i]!==t[i+1]&&(r[i]=(t[i+1]-t[i-1])/(e[i+1]-e[i-1]));for(let i=0;i<n-1;i++){let n=e[i+1]-e[i],a=Math.min(t[i],t[i+1]),o=Math.max(t[i],t[i+1]),s=Math.min(zp,Rp*(o-a));for(let c=0;c<12;c++){let c=0;for(let s=1;s<16;s++){let l=Fp([e[i],e[i+1]],[t[i],t[i+1]],[r[i],r[i+1]],e[i]+n*s/16);c=Math.max(c,l-o,a-l)}if(c<=s+1e-9)break;r[i]*=.7,r[i+1]*=.7}}return r}var Wp=e=>Array.isArray(e)?`vec`:e&&typeof e==`object`?`map`:`num`;function Gp(e,t,n=Hp()){let r=new Map;for(let t of[...e].sort((e,t)=>e.f-t.f))for(let[e,n]of Object.entries(t.set??{}))r.has(e)||r.set(e,[]),r.get(e).push({f:t.f,value:n,step:t.step?.includes(e)});let i={},a={};for(let[e,o]of r){let r=[...new Map(o.map(e=>[e.f,e])).values()],s=Wp(r[0].value),c=s===`vec`?r[0].value.length:0,l=s===`num`?[r.map(e=>e.value)]:s===`vec`?Array.from({length:c},(e,t)=>r.map(e=>e.value[t])):[...new Set(r.flatMap(e=>Object.keys(e.value)))].map(e=>({name:e,y:r.map(t=>t.value[e]??0)})),u=r.map(e=>e.f),d=n.smooth&&Ip.test(e),f=n.lag[Vp(e)]??0,p=e=>f>0?e-f*Math.min(1,(t-1-e)/(2*f)):e,m=(e,t=!0)=>{let n=d&&t?Up(u,e):Pp(u,e);return i=>{let a=t?p(i):i;for(let t=1;t<r.length;t++)if(r[t].step&&a>=u[t-1]&&a<u[t])return e[t-1];return Fp(u,e,n,a)}},h=Array(t);if(s===`num`){let e=m(l[0]);for(let n=0;n<t;n++)h[n]=e(n)}else if(s===`vec`){let e=l.map(m);for(let n=0;n<t;n++)h[n]=e.map(e=>e(n))}else{let e=l.map(({name:e,y:t})=>[e,m(t)]);for(let n=0;n<t;n++)h[n]=Object.fromEntries(e.map(([e,t])=>[e,t(n)]))}if(i[e]=h,s===`num`&&(d||f>0)&&Bp(e).length){let n=m(l[0],!1);a[e]=Array.from({length:t},(e,t)=>n(t))}}for(let[e,t]of Object.entries(a)){let n=Bp(e).map(e=>i[`armw_${e}`]).filter(Boolean);n.length&&(i[e]=i[e].map((e,r)=>{let i=Math.min(1,4*Math.max(0,...n.map(e=>e[r])));return e+(t[r]-e)*i*(2-i)}))}return i}var Kp=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,n])=>[e,n[t]]));function qp(e,t){let n=e?.objects??{};return Object.keys(n).filter(e=>e===t||n[e].ancestors?.includes(t))}function Jp(e,t){return Pl(e)&&t>=(e.grab??0)&&(e.release===void 0||t<=e.release)}function Yp(e,t){return e?.objects?.[t]??Gl(e)[t]??null}function Xp(e,t,n){return[n,...t?.objects?.[n]?.ancestors??Gl(t)[n]?.ancestors??[]].find(t=>Ll(e.objects?.[t]))??null}function Zp(e,t){let n=t=>e.timeMap?Math.round(e.timeMap(t)):t;return[n(t.grab??0),t.release===void 0?e.frameCount-1:n(t.release)]}var Qp=(e,t,n)=>n.at===void 0&&n.along===void 0&&(!e?.objects?.[t]&&!!Gl(e)[t]||n.grab!==void 0),$p=new WeakMap,em=new WeakMap,tm=new WeakMap,nm=e=>({spec:e.ctx.spec,scene:e.ctx.scene,timeMap:e.timeMap});function rm(e,t,n){let{spec:r,scene:i}=e.ctx,a=Xp(r,i,t),o=r.objects?.[a];if(!Pl(o))return null;let s=og(nm(e),a,o,n,Zp(e,o)[0]);return s&&(a===t?s:q(s,J(Yp(i,a),Yp(i,t))))}function im(e,t){tm.has(e)||tm.set(e,new Map);let n=tm.get(e);if(n.has(t))return n.get(t);let{spec:r,scene:i}=e.ctx,a=r.objects?.[t],o=Yp(i,t),s=qp(i,t),c=null;if(Pl(a)&&a.release!==void 0&&o&&s.length){let n=Zp(e,a)[1];if(n<e.frameCount-1&&!cg(nm(e),a,n)){let l=sm(e,t,a,n),u=s.flatMap(e=>Gh({...q(l,J(o,i.objects[e])),half:i.objects[e].half})),d=Math.min(...u.map(e=>e[1])),f=u.reduce((e,t)=>R(e,t),[0,0,0]).map(e=>e/u.length);for(let[a,o]of Object.entries(i.objects)){let l=s.includes(a)?null:Xp(r,i,a),u=r.objects?.[l];if(!l||l===t||Pl(u)||Fl(u))continue;let p={...dm(e,a,n),half:o.half},m=Kh(p);qh(p,f)&&m<=d+.005&&(!c||m>c.top)&&(c={mover:l,top:m})}}}return n.set(t,c?.mover??null),c?.mover??null}function am(e,t){let n=e.frames[t-(e.f0??0)];if(n)return n;$p.has(e)||$p.set(e,new Map);let r=$p.get(e);return r.has(t)||r.set(t,Iy(e.ctx,Kp(e.baked,t),t)),r.get(t)}function om(e,t,n,r,i){let{sk:a,spec:o,scene:s}=e.ctx;if(!Qp(s,t,n))return zl(a,o,i,n);if(n.keys?.length&&e.ctx.hold)return e.ctx.hold.attaching(t)?Yp(s,t):q(zl(a,o,i,{prop:n.prop}),e.ctx.hold.attach(t));let c=e=>zl(a,o,e,{prop:n.prop}),l=Zp(e,n)[0];return q(c(i),J(c(l===r?i:am(e,l).s),rm(e,t,l)??Yp(s,t)))}function sm(e,t,n,r){let i=am(e,r);em.has(i)||em.set(i,new Map);let a=em.get(i);return a.has(t)||a.set(t,om(e,t,n,r,i.s)),a.get(t)}function cm(e,t,n,r=null){let{spec:i,scene:a}=e.ctx,o=Ll(i.objects?.[t])?i.objects[t]:void 0,s=Yp(a,t);if(Fl(o))return Np(r?{...e,f0:n,frames:[r]}:e,o,n);if(Pl(o)&&(s||!Qp(a,t,o))){let[i,a]=Zp(e,o),c=Math.max(i,Math.min(n,a));if(n<i&&s)return rm(e,t,n);let l=n>a?sg(nm(e),t,o,n,a,sm(e,t,o,a),a>0?sm(e,t,o,a-1):null):null;if(l)return l;let u=n>a?im(e,t):null;if(u){let r=sm(e,t,o,a);return q(cm(e,u,n),J(cm(e,u,a),r))}return r&&c===n?om(e,t,o,n,r.s):sm(e,t,o,c)}if(!s)return null;if(Vh(o))return ag(nm(e),t,n);if(o&&a.objects[t])return e.ctx.objectsAt(n)[t];if(o){let r=qp(a,t)[0],i=e.ctx.objectsAt(n)[r];return q(i,J(a.objects[r],s))}return{pos:s.pos,R:s.R}}function lm(e,t,n){let r=e.frames?.[n-(e.f0??0)],i=e.ctx.scene,a=qp(i,t);return!r||!a.length?null:a.map(t=>{let r=dm(e,t,n);return{id:t,pos:r.pos,R:r.R,half:i.objects[t].half}})}function um(e,t,n){let{spec:r,scene:i,sk:a}=e.ctx,o=r.objects?.[Xp(r,i,t)];if(Pl(o)){let[t,i]=Zp(e,o);return n>=t&&n<=i?r.props?.[o.prop]?.hand??null:null}if(!Fl(o))return null;let[s,c=``]=String(o.follow).split(/:(.*)/s);if(s===`prop`)return r.props?.[c.split(`.`)[0]]?.hand??null;let l=(s===`joint`||s===`bone`)&&/^(Left|Right)(Arm|ForeArm|Hand)/.exec(Zf(a,c).bone??``);return l?l[1]===`Left`?`l`:`r`:null}function dm(e,t,n,r=null){let{spec:i,scene:a}=e.ctx,o=Yp(a,t),s=Xp(i,a,t),c=i.objects?.[s];if(!o)return null;if(Pl(c)||Fl(c)||Vh(c)){let t=cm(e,s,n,r);return t&&q(t,J(Yp(a,s),o))}return s?a.objects[t]?e.ctx.objectsAt(n)[t]??o:s===t?cm(e,t,n):q(cm(e,s,n),J(Yp(a,s),o)):{pos:o.pos,R:o.R}}var fm=.045,pm=[[1,0,0],[0,1,0],[0,0,1]],mm=(e,t)=>z(e,B(t,V(e,t)));function hm(e){if(!e)return-1;let t=[0,1,2].reduce((t,n)=>e[n]>e[t]?n:t,0);return[0,1,2].filter(e=>e!==t).every(t=>e[t]<fm)?t:-1}var gm=(e,t)=>e?.objects?.[t]?.grasp??e?.others?.[t]?.grasp??null;function _m(e,t){let n=[],r=(t,r)=>Object.entries(gm(e,t)??{}).forEach(([e,i])=>n.push({...i,name:r+e,owner:t}));r(t,``);for(let i of qp(e,t)){i!==t&&r(i,`${i}.`);let a=e.objects[i].half,o=hm(a);o>=0&&n.push({name:i,owner:i,at:[0,a[1],0],axis:pm[o]})}return n}var vm=(e,t,n)=>_m(e,t).find(e=>e.name===n);function ym(e,t){let n=e=>e?U(G(t.R,e)):void 0;return{p:R(t.pos,G(t.R,e.at??[0,0,0])),axis:n(e.axis),from:n(e.from),thumb:n(e.thumb)}}function bm(e,t){let n;for(let r of e){let e=G(K(r.R),z(t,R(r.pos,G(r.R,[0,r.half[1],0])))),i=[0,1,2].map(t=>Math.abs(e[t])-r.half[t]),a=[0,1,2].reduce((e,t)=>i[t]>i[e]?t:e,0),o=Math.max(...i);(!n||o<n.gap)&&(n={gap:o,n:B([r.R[0][a],r.R[1][a],r.R[2][a]],e[a]<0?-1:1)})}return n?.n}function xm(e,t){let n=z(t,e.p);return H(e.axis?mm(n,e.axis):n)}function Sm(e,t,n,r,i=0){let a=e===`Right`,o=e=>a?e:B(e,-1);if(t.axis&&n!==`palm`&&!(t.from&&H(mm(t.axis,t.from))<.001)){if(t.from){let e=o(t.from),n=U(mm(t.axis,e)),i=n=>t.thumb?V(n,t.thumb):V(ms(n,e),r),a=i(n)>=i(B(n,-1))?n:B(n,-1);return wm(ms(a,e),a,e)}let e=Cm(r,t.axis),n=G(Ss(i),[a?1:-1,0,0]),s=Math.abs(e[1]),c=t.thumb??mm(R(B([0,1,0],1-s),B(n,s)),e),l=U(mm(t.axis,e)),u=V(l,c)>=0?l:B(l,-1);return wm(e,u,ms(e,u))}let s=o(t.from??B(r,-1)),c=Cm(r,s);return wm(c,ms(s,c),s)}function Cm(e,t){let n=mm(e,t);return U(H(n)>.001?n:mm(Math.abs(t[1])<.9?[0,1,0]:[1,0,0],t))}var wm=(e,t,n)=>[[e[0],t[0],n[0]],[e[1],t[1],n[1]],[e[2],t[2],n[2]]];function Tm(e,t){let n=gl[t],r=e.restWorldPos,i=e.index;return H(z(r[i[`${n}ForeArm`]],r[i[`${n}Arm`]]))+H(z(r[i[`${n}Hand`]],r[i[`${n}ForeArm`]]))}var Em=new Set([`body`]);function Dm(e,t,n,r,i,a){let o=e.spec.anchors?.[t];if(!o)throw Error(`MOTION_SPEC_INVALID: unknown anchor "${t}"`);let s=Nm(e,o,t,n,r,i,a),c=Em.has(o.kind)&&e.keepOut;return c?Ac(c.body,e.sk,n,Ac(c.body,e.sk,n,s,jc,c.skip),jc,c.skip):s}var Om=[`r`,`l`],km={l:`left`,r:`right`};function Am(e,t,n,{s:r,diag:i,c:a},o){let s=i.frame,c=()=>e.restingAt?.(t.object,s)??e.objectsAt(s)[t.object]??Gl(e.scene)[t.object],l=e.objectPose&&s!==void 0?e.objectHand(t.object,s):null;if(o&&l&&Om.indexOf(l)>Om.indexOf(o))throw Error(`MOTION_SPEC_INVALID: anchor "${n}" is on "${t.object}", which the ${km[l]} hand holds at f${s}; the right arm is solved before the left, so the right hand cannot follow it. Carry "${t.object}" in the right hand (a right-hand prop) and put the left hand on it, or give the right hand another anchor`);let u=!e.objectPose||s===void 0||l===o?c():Mm(e,n,t.object,s,()=>e.objectPose(t.object,s,{s:r,diag:i,c:a}));if(!u)throw Error(`MOTION_SPEC_INVALID: anchor "${n}" names unknown object "${t.object}"`);return u}var jm=16;function Mm(e,t,n,r,i){if((e.nest??0)>=jm)throw Error(`MOTION_SPEC_INVALID: anchor "${t}" on "${n}" at f${r} reads a pose that needs this frame solved again (an anchor and carry loop); anchor the hand on a point that does not ride on the hand it moves`);e.nest=(e.nest??0)+1;try{return i()}finally{e.nest--}}function Nm(e,t,n,r,i,a,o){let{sk:s}=e,c=s.index;switch(t.kind){case`world`:return t.p.slice();case`body`:return R(a.root??r.P[c.Hips],G(Ss(a.yaw??0),t.p));case`bone`:return R(r.P[c[t.bone]],t.offset??[0,0,0]);case`segment`:{let e=r.P[c[t.from]],n=r.P[c[t.to]],i=t.offset??[0,0,0],a=t=>R(R(e,B(z(n,e),t)),i);if(!t.reach)return a(t.t??.5);let o=r.P[c[`${gl[t.reach]}Arm`]],l=.95*Tm(s,t.reach);for(let e=t.t??.45;e>=(t.tMin??.15);e-=.01)if(H(z(a(e),o))<=l)return a(e);return a(t.tMin??.15)}case`object`:{if(t.grasp&&t.local===void 0)return Fm(e,n,r,i,a,o).p;let s=Am(e,t,n,{s:r,diag:i,c:a},o);return R(s.pos,G(s.R,t.local??[0,0,0]))}case`landmark`:return Is(r,c.Head,s.landmarks[t.name]??(()=>{throw Error(`MOTION_SPEC_INVALID: unknown landmark "${t.name}"`)})());case`prop`:{let r=Pm(e,t,n,i?.frame)??i.props?.[t.prop]?.[t.point];if(!r)throw Error(`MOTION_SPEC_INVALID: anchor "${n}" needs prop ${t.prop}.${t.point}, which is held by an arm solved later`);return R(r,t.offset??[0,0,0])}case`person`:{let r=np(e.scene,t.person,t.bone,i?.frame??0);if(!r)throw Error(`MOTION_SPEC_INVALID: anchor "${n}" names person "${t.person}" bone "${t.bone}", which the scene does not have (people: ${rp(e.scene)})`);return R(r,t.offset??[0,0,0])}default:throw Error(`MOTION_SPEC_INVALID: anchor "${n}" has unknown kind "${t.kind}"`)}}function Pm(e,t,n,r){let i=e.spec.props?.[t.prop]?.hand;if(!i||r===void 0||!e.solvedAt||!e.carrySpan)return null;let a=null;for(let[t,n]of Object.entries(e.spec.objects??{})){if(!Pl(n)||e.spec.props?.[n.prop]?.hand!==i)continue;let[o,s]=e.carrySpan(n);if(r>=o&&r<=s)return null;let c=r<o?o:s;(!a||Math.abs(r-c)<Math.abs(r-a.at))&&(a={id:t,at:c})}if(!a)return null;let o=Mm(e,n,a.id,a.at,()=>e.solvedAt(a.at).diag.props?.[t.prop]?.[t.point]),s=e.objectPose(a.id,a.at),c=e.objectPose(a.id,r);return o&&s&&c?R(c.pos,G(c.R,G(K(s.R),z(o,s.pos)))):null}function Fm(e,t,n,r,i,a){let o=e.spec.anchors[t],s={s:n,diag:r,c:i},c=n=>Am(e,{...o,object:n},t,s,a),l=o.local&&(e=>R(e.pos,G(e.R,o.local)))(c(o.object));if(e.sockets??=new Map,!e.sockets.has(t)){let r=_m(e.scene,o.object),i=e.sk.index,s=l??n.P[i[a?`${gl[a]}Arm`:`Hips`]],u=o.socket?vm(e.scene,o.object,o.socket):r.map(e=>({k:e,d:xm(ym(e,c(e.owner)),s)})).sort((e,t)=>e.d-t.d)[0]?.k;e.sockets.set(t,u??null)}let u=e.sockets.get(t),d=u?ym(u,c(u.owner)):{p:l??c(o.object).pos};return l&&(d.p=l),!d.axis&&!d.from&&(d.from=bm(qp(e.scene,o.object).map(t=>({...c(t),half:e.scene.objects[t].half})),d.p)),d}function Im(e,t,n,r){let{sk:i}=e;for(let[a,o]of Object.entries(e.spec.props??{})){if(o.hand!==t)continue;let e=Xs(i,n,gl[t]),s=B(o.origin.map(e=>n.P[i.index[e]]).reduce((e,t)=>R(e,t),[0,0,0]),1/o.origin.length),c={};for(let[t,[n,r,i]]of Object.entries(o.points??{}))c[t]=R(s,R(B(e.d,n),R(B(e.l,r),B(e.n,i))));c.origin=s,c.axes=e,(r.props??={})[a]=c}}var Lm=3,Rm=12,zm=.05,Bm=.3,Vm=180/Math.PI,Hm=40,Um=1,Wm=.3,Gm=[-40,-40/2,0,Hm/2,Hm];function Km(e){let t=Math.min(...e.map(e=>e[1])),n=e.map(([e,n])=>[e,Math.exp(-(n-t)/Wm)]);return n.reduce((e,[t,n])=>e+t*n,0)/n.reduce((e,[,t])=>e+t,0)}function qm(e){let t=Array.from({length:Rm},(t,n)=>{let r=2*Math.PI*n/Rm-Math.PI;return[r,e(r)]}),n=Math.min(...t.map(e=>e[1])),r=t.reduce((e,[t,r])=>{let i=Math.exp(-(r-n)/zm);return[e[0]+i*Math.cos(t),e[1]+i*Math.sin(t)]},[0,0]);return Math.atan2(r[1],r[0])}var Jm=({d:e,l:t,n})=>[[e[0],t[0],n[0]],[e[1],t[1],n[1]],[e[2],t[2],n[2]]],Ym=(e,t)=>e.anchors?.[t]?.kind===`object`&&!!e.anchors[t].grasp,Xm=(e,t)=>(e.keys??[]).some(e=>(!e.src||e.src.startsWith(`keys[`))&&(e.set?.[`wtwist_${t}`]!==void 0||e.set?.[`wflex_${t}`]!==void 0));function Zm(e,t,n,r){let i=new Set(qp(t,n));return(e.fits??[]).some(a=>{if(a.side!==r||!Ym(e,a.anchor))return!1;let o=e.anchors[a.anchor].object;return o===n||i.has(o)||qp(t,o).some(e=>i.has(e))})}function Qm(e,t,n){let{spec:r,scene:i}=e;if(!e.objectHand||!(r.fits??[]).some(e=>e.side===t&&Ym(r,e.anchor)))return null;for(let[a,o]of Object.entries(r.objects??{}))if(o?.prop&&e.objectHand(a,n)===t&&Zm(r,i,a,t))return{id:a,grab:e.carrySpan(o)[0],keyed:!!o.keys?.length};return null}function $m(e,t,n,r,i,a,o,s,c){let l=t.index,u=l[`${r}Arm`],d=l[`${r}ForeArm`],f=l[`${r}Hand`],p=n.R[d],m=Fm(e,s.fit.anchor,n,o,a,i),h=c(n),g=U(z(n.P[f],n.P[d])),_=e.spec.anchors[s.fit.anchor].grasp,v=Sm(r,m,_,g,a.yaw),y=(e=>({pos:c(e),R:Jm(Xs(t,e,r))}))(n),b=e=>{let i=cl(t,n,r,{pos:h,R:e},y,1,`palm`);return $c(t,n,r,i.goal,i.wristAt(i.goal),i.plane,Rc).cost},x=(e,t)=>[e[0][t],e[1][t],e[2][t]],S=e=>W(ws(x(v,1),e*Vm),v),C=S(m.axis&&!m.from&&_!==`palm`?qm(e=>b(S(e))+Bm*(1-Math.cos(e))):0),w=e=>W(ws(x(C,2),e),C),{goal:T,plane:E,wristAt:D}=cl(t,n,r,{pos:h,R:w(m.axis&&_!==`palm`?Km(Gm.map(e=>[e,b(w(e))+Um*(e/Hm)**2])):0)},y,s.w,`palm`),O=$c(t,n,r,T,D(T),E,Rc,{w:s.w}),k={twist:0,flex:0,dev:0};for(let e=0;e<Lm;e++)Js(t,n,u,d,f,D(e?n.R[f]:T),O.pole,Rc,`elbow`),k=ol(t,n,r,f,d,T);o[`grip_${i}`]={w:s.w,socket:!0,...k},o[`socket_${i}`]={rel:W(K(p),n.R[f])}}function eh(e,t,n,r,i,a){let o=`${i}:${a.grab}`;e.socketTurns??=new Map,e.socketTurns.has(o)||(e.socketTurns.set(o,null),e.socketTurns.set(o,(e.hold?.plainFrame??e.solvedAt)(a.grab)?.diag?.[`socket_${i}`]?.rel??null));let s=e.socketTurns.get(o);if(!s)return;let c=t.index,l=c[`${r}ForeArm`],u=c[`${r}Hand`];ol(t,n,r,u,l,W(n.R[l],s))}var th=12,nh={m:.01,deg:5},rh=e=>e*e*(3-2*e),ih=(e,t)=>{let n=t=>e.timeMap?Math.round(e.timeMap(t)):t;return[n(t.grab??0),t.release===void 0?e.frameCount-1:n(t.release)]},ah=e=>{let t=K(e.R);return{pos:B(G(t,e.pos),-1),R:t}};function oh(e,t,n,r,i=0){let a=[...e.keys].sort((e,t)=>e.f-t.f),o=a.map(e=>t(e.f)),s=[],c=iu(a,e=>n(o[e]),r&&((e,t)=>r(o[e],eu(a[e],t,i),t,a[e].lean?{shoulder:!0}:void 0))),l=a.map((e,t)=>eu(e,oc(c[t]),i).slice());for(let e of c){let t=oc(e);s.push(s.length&&ac(s[s.length-1],t)<0?t.map(e=>-e):t)}let u=a.length-1,d=e=>B(sc(rc(ic(s[e]),s[e+1])),1/(o[e+1]-o[e])),f=(e,t)=>e===0||e===u?[0,0,0]:B(R(B(t(e),o[e]-o[e-1]),B(t(e-1),o[e+1]-o[e])),1/(o[e+1]-o[e-1]));return{t:o,p:l,q:s,m:l.map((e,t)=>f(t,e=>B(z(l[e+1],l[e]),1/(o[e+1]-o[e])))),w:s.map((e,t)=>f(t,d)),rots:c}}var sh=new WeakMap;function ch(e,t){sh.has(e)||sh.set(e,new Map);let n=sh.get(e),r=e.timeMap,i=e.baked,a=n.get(t);if(!a||a.map!==r||a.baked!==i){let a=e.ctx.hold,o=new Map,s=e=>{let t=Math.round(e);return o.has(t)||o.set(t,a.plainFrame(t).s),o.get(t)};n.set(t,{map:r,baked:i,curve:oh(e.ctx.spec.objects[t],e=>r?r(e):e,e=>Ds(a.carryOn(t,s(e)).R),(e,n,r,i)=>a.strainOn(t,s(e),{pos:n,R:Os(r)},i),2*(e.ctx.scene?.objects?.[t]?.half?.[1]??0))})}return n.get(t).curve}function lh({t:e,p:t,q:n,m:r,w:i},a){let o=e.length;if(o===1||a<=e[0])return{pos:t[0].slice(),R:Os(n[0])};if(a>=e[o-1])return{pos:t[o-1].slice(),R:Os(n[o-1])};let s=0;for(;a>e[s+1];)s++;let c=e[s+1]-e[s],l=(a-e[s])/c,u=l*l,d=u*l,f=2*d-3*u+1,p=d-2*u+l,m=-2*d+3*u,h=d-u,g=R(R(B(t[s],f),B(r[s],c*p)),R(B(t[s+1],m),B(r[s+1],c*h))),_=rc(ic(n[s]),n[s+1]),v=R(R(B(sc(_),m),B(i[s],c*p)),B(lc(_,i[s+1]),c*h));return{pos:g,R:Os(rc(n[s],cc(v)))}}function uh(e,[t,n],r){let i=e.t[0],a=e.t[e.t.length-1];if(r<t||r>n)return 0;if(r>=i&&r<=a)return 1;let o=r<i?Math.min(8,i-t):8,s=r<i?i-r:r-a;return o>0&&s<o?rh(1-s/o):0}var dh=e=>Object.entries(e.objects??{}).filter(([,e])=>Pl(e)&&e.keys?.length);function fh(e,t,n,r){let{sk:i,spec:a,scene:o}=e,s=dh(a);if(!s.length)return null;let c=(e,t)=>zl(i,a,t,{prop:e.prop}),l=new WeakMap,u=new Set,d=(t,n)=>e.restingAt?.(t,n)??o?.objects?.[t]??Gl(o)[t],f=new WeakMap,p=e=>t.timeMap?Math.round(t.timeMap(e)):e,m=e=>{f.has(t)||f.set(t,new Map);let r=f.get(t),s=a.objects[e],l=a.props?.[s.prop]?.hand,m=ih(t,s)[0],h=t.baked??{};if(r.has(e))return r.get(e);if(r.set(e,null),!(l&&s.at===void 0&&s.along===void 0&&(s.grab!==void 0||!o?.objects?.[e])&&vf(o,e)&&!(a.fits??[]).some(e=>e.side===l&&e.orient===!1)&&!Zm(a,o,e,l)&&![`wtwist`,`wflex`].some(e=>Math.abs(h[`${e}_${l}`]?.[m]??0)>.001)&&p(Math.min(...s.keys.map(e=>e.f)))<=m))return null;u.add(e);try{r.set(e,xf({sk:i,o:s,side:gl[l],grab:m,rest:d(e,m),plain:e=>n(e).s,palmOf:e=>c(s,e),map:p}))}finally{u.delete(e)}return r.get(e)},h=r=>{l.has(t.baked)||l.set(t.baked,new Map);let s=l.get(t.baked),d=a.objects[r];if(s.has(r))return s.get(r);let f=m(r);if(f&&f.name!==`today`)return s.set(r,f.offset),f.offset;let p=o?.objects?.[r]??Gl(o)[r],h=!o?.objects?.[r]&&!!p,g=d.at===void 0&&d.along===void 0&&(h||d.grab!==void 0);u.add(r);let _;try{_=g?n(ih(t,d)[0]).s:Ms(i)}finally{u.delete(r)}let v=J(c(d,_),g?e.restingAt?.(r,ih(t,d)[0])??{pos:p.pos,R:p.R}:zl(i,a,_,d));return s.set(r,v),v},g=(e,t)=>q(c(a.objects[e],t),h(e)),_=(e,t,n,r)=>{let o=a.objects[e];return dl(i,t,gl[a.props[o.prop].hand],q(n,ah(h(e))),c(o,t),r)},v=(e,n,r)=>{let i=ch(t,e),a=uh(i,ih(t,n),r);return a>0?{w:a,palm:q(lh(i,r),ah(h(e))),measure:e=>c(n,e),comfort:n.keys.some(e=>e.lean>0)}:null},y=new WeakMap,b=(e,r)=>{y.has(t.baked)||y.set(t.baked,new Map);let o=y.get(t.baked),s=o.get(e);if(s&&s.map===t.timeMap)return s.plan;let[c,l]=ih(t,r),u=[];for(let n=Math.max(0,c);n<=Math.min(t.frameCount-1,l);n++)uh(ch(t,e),[c,l],n)>0&&u.push(n);let d=wu(i,gl[a.props[r.prop].hand],u,t=>({s:n(t).s,held:v(e,r,t)}));return o.set(e,{map:t.timeMap,plan:d}),d},x=!1,S=(e,t,n)=>{let r=g(e,t).R;return qd(i,a,e,t,n,[r[0][1],r[1][1],r[2][1]])},C=new WeakMap,w=(e,n)=>{C.has(t.baked)||C.set(t.baked,new Map);let i=C.get(t.baked),a=i.get(e);if(a&&a.map===t.timeMap)return a.plan;let[o,s]=ih(t,n),c=new Map;x=!0;let l=[],u=()=>{let e=yu((e,t)=>l[e].grip.cost(t),(e,t)=>l[e].grip.point(t),l.map(e=>e.grip.softmin())),t=Cu(l.map((t,n)=>Jd(t.grip,e[n]))),n=t=>l[t].grip.arm(e[t]),r=yu((e,t)=>n(e).at(t).cost,(e,t)=>n(e).at(t).elbow,l.map((e,t)=>n(t).best.th));l.forEach((i,a)=>c.set(i.f,{roll:e[a],gate:t[a],pole:n(a).at(r[a]).pv})),l=[]};for(let n=Math.max(0,o);n<=Math.min(t.frameCount-1,s);n++){let i=uh(ch(t,e),[o,s],n)>0?r(n):null,a=i&&S(e,i.s,i.c);a?l.push({f:n,grip:a}):l.length&&u()}return l.length&&u(),x=!1,i.set(e,{map:t.timeMap,plan:c}),c},T=(e,n,r)=>{let i=m(e);if(!i||i.name===`today`)return null;let a=ch(t,e),o=a.t[0],s=a.t[a.t.length-1],[l,u]=ih(t,n);if(r>=o&&r<=s)return null;let d=q(lh(a,r<o?o:s),ah(i.offset)),f=e=>c(n,e),p=b(e,n).get(Math.round(r<o?o:s));if(r<l||r>u){let e=rh(Math.max(0,1-(r<l?l-r:r-u)/th));return e>.001?{w:e,palm:d,measure:f,pole:p}:null}let h=v(e,n,r);return{w:1,palm:h?{pos:R(B(d.pos,1-h.w),B(h.palm.pos,h.w)),R:mf(d.R,h.palm.R,h.w)}:d,measure:f,pole:p}},E=new WeakMap,D=(e,r,i)=>{E.has(t.baked)||E.set(t.baked,new Map);let a=E.get(t.baked),o=a.get(e);if(o&&o.map===t.timeMap)return o.off;u.add(e);let s;try{s=c(r,n(Math.max(ih(t,r)[0],Math.round(ch(t,e).t[0]))).s)}finally{u.delete(e)}let l=J(s,i).R,d=Math.acos(Math.min(1,Math.max(-1,(l[0][0]+l[1][1]+l[2][2]-1)/2)))*180/Math.PI,f=Math.hypot(...z(i.pos,s.pos))>nh.m||d>nh.deg;return a.set(e,{map:t.timeMap,off:f}),f},O=(e,n,r)=>{let i=ch(t,e),[a,o]=ih(t,n),s=Math.max(a,Math.round(i.t[0]));if(!(r<s&&r>=s-th)||s-a>=8||s>o)return null;let l=q(lh(i,s),ah(h(e)));if(!D(e,n,l))return null;let u=rh(1-(s-r)/th);return u>.001?{w:u,palm:l,measure:e=>c(n,e),pole:b(e,n).get(s)}:null},k=(e,n,r)=>{let i=ch(t,e),a=i.t[i.t.length-1],o=ih(t,n)[1];return r>o&&r-a<8?{curve:i,release:o,w:rh(1-(r-a)/8)}:null},ee=(e,t,n)=>{let r=k(e,t,n);return r&&{w:r.w,palm:q(lh(r.curve,r.release),ah(h(e))),measure:e=>c(t,e),pole:b(e,t).get(r.release)}};return{lead:(e,n,r,i)=>{for(let[o,c]of s){let s=a.props?.[c.prop]?.hand===e?T(o,c,n)??O(o,c,n)??ee(o,c,n):null;if(s)return s;let l=a.props?.[c.prop]?.hand===e?v(o,c,n):null;if(l)return{...l,pole:b(o,c).get(n)};let u=e===`l`&&r&&!x?k(o,c,n):null,d=e===`l`&&r&&!x?uh(ch(t,o),ih(t,c),n)||(u?.w??0):0,f=d>0?S(o,r,i):null,p=f&&w(o,c).get(u?u.release:n),m=p?.roll??f?.softmin();if(f)return Yd(f,d,m,p?.gate??Jd(f,m),p?.pole??f.arm(m).best.pole)}return null},attach:h,attaching:e=>u.has(e),plainFrame:n,carryOn:g,strainOn:_,span:e=>ih(t,a.objects[e]),firstKey:e=>{let n=Math.min(...a.objects[e].keys.map(e=>e.f));return t.timeMap?Math.round(t.timeMap(n)):n},grips:()=>s.map(([e,t])=>{let n=m(e);return n&&{id:e,hand:a.props[t.prop].hand,name:n.name,cost:n.cost,today:n.today}}).filter(Boolean)}}var ph=.3,mh=.5,hh=15,gh=1,_h=6*Math.PI,vh=3,yh=[0,-1,0],bh=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],xh=e=>e*180/Math.PI;function Sh(e){let t=e.filter(e=>e.half[0]*e.half[1]*e.half[2]>1e-12);if(!t.length)return null;let n=0,r=[0,0,0],i=[];for(let e of t){let t=e.half[0]*e.half[1]*e.half[2];n+=t,r=R(r,B(R(e.pos,G(e.R,[0,e.half[1],0])),t));for(let t of[-1,1])for(let n of[0,2])for(let r of[-1,1])i.push(R(e.pos,G(e.R,[t*e.half[0],n*e.half[1],r*e.half[2]])))}return{com:B(r,1/n),lo:[0,1,2].map(e=>Math.min(...i.map(t=>t[e]))),hi:[0,1,2].map(e=>Math.max(...i.map(t=>t[e])))}}var Ch=e=>[0,1,2,3,4,5,6,7].map(t=>[t&1?e.hi[0]:e.lo[0],t&2?e.hi[1]:e.lo[1],t&4?e.hi[2]:e.lo[2]]),wh=(e,t)=>R(e.pos,G(e.R,t)),Th=(e,t)=>Math.min(...Ch(e).map(e=>wh(t,e)[1])),Eh=(e,t,n)=>({pos:[t.pos[0],t.pos[1]+n-Th(e,t),t.pos[2]],R:t.R}),Dh=(e,t,n)=>({pos:R(t,G(n,z(e.pos,t))),R:W(n,e.R)}),Oh=e=>bh.reduce((t,n,r)=>V(G(e,n),yh)>V(G(e,bh[t]),yh)?r:t,0),kh=(e,t)=>{let n=t>>1;return bh[t][n]>0?e.hi[n]:e.lo[n]},Ah=(e,t)=>Math.abs(kh(e,t)-e.com[t>>1]);function jh(e,t,n){let r=W(t,[[e[0][0],e[1][0],e[2][0]],[e[0][1],e[1][1],e[2][1]],[e[0][2],e[1][2],e[2][2]]]),i=Math.acos(gs((r[0][0]+r[1][1]+r[2][2]-1)/2,-1,1));if(i*n<gh)return[0,0,0];let a=U([r[2][1]-r[1][2],r[0][2]-r[2][0],r[1][0]-r[0][1]]),o=Math.min(_h,i*n);return H(a)>0?B(a,o):[0,0,0]}function Mh(e,t,n,r,i){let a=H(n),o=wh(t,e.com),s=r=>{let i=a>0?W(ws(n,xh(a*r)),t.R):t.R;return{pos:z(R(o,[0,-.5*Lh*r*r,0]),G(i,e.com)),R:i}},c=Math.max(0,Th(e,t)-r);if(a===0)return{tl:Math.sqrt(2*c/Lh),at:s};let l=1/(i*8),u=Math.sqrt(2*(c+H(z(e.hi,e.lo)))/Lh)+l,d=0,f=l;for(;f<u&&Th(e,s(f))>r;)d=f,f+=l;for(let t=0;t<24&&f-d>1e-7;t++){let t=(d+f)/2;Th(e,s(t))>r?d=t:f=t}return{tl:f,at:s}}var Nh=(e,t)=>.12+.9*Math.sqrt(Math.max(e,1e-4)/Lh)*Math.sqrt(t/90);function Ph(e,t,n,r,i=[0,0,0]){let a=[],o=Eh(e,t,n),s=0,c=(t,r,i)=>{let c=Nh(wh(o,e.com)[1]-n,i);a.push({from:o,pivot:t,axis:r,angle:i,time:c}),o=Eh(e,Dh(o,t,ws(r,i)),n),s+=c},l=Oh(o.R),u=e=>xh(Math.acos(gs(V(G(o.R,bh[e]),yh),-1,1))),d=u(l);if(d>mh){let t=[0,1,2,3,4,5].filter(e=>e>>1!=l>>1).reduce((e,t)=>u(t)<u(e)?t:e,l===0||l===1?2:0);d>xh(Math.atan2(Ah(e,t),Ah(e,l)))&&(l=t);let r=Ch(e).map(e=>wh(o,e)).filter(e=>e[1]<=n+1e-4),i=G(o.R,bh[l]);c(B(r.reduce(R,[0,0,0]),1/r.length),U(ms(i,yh)),u(l))}let f=d>mh||H(i)>0?r:0;for(let t=0;t<vh;t++){let t=wh(o,e.com),r=t[1]-n,a=null;for(let n=0;n<6;n++){if(n>>1==l>>1)continue;let s=G(o.R,bh[n]),c=wh(o,bh[n].map((t,r)=>t?kh(e,n):r===l>>1?kh(e,l):e.com[r])),u=-V(z(t,c),s),d=Ah(e,n);if(!(u<0||d<r*.8))continue;let f=u<0||xh(Math.atan2(u,r))<hh?0:Math.hypot(r,u)-r,p=V(s,i);(!a||f<a.cost-1e-9||Math.abs(f-a.cost)<=1e-9&&p>a.side)&&(a={j:n,out:s,edge:c,cost:f,side:p})}if(!a||a.cost>f)break;f-=a.cost;let s=Ch(e).map(e=>wh(o,e)).filter(e=>e[1]<=n+1e-4&&V(z(e,a.edge),a.out)>=-1e-4);c(s.length?B(s.reduce(R,[0,0,0]),1/s.length):[a.edge[0],n,a.edge[2]],U(ms(a.out,yh)),90),l=a.j}return{steps:a,rest:o,time:s}}function Fh(e,t){let n=t;for(let t of e.steps){if(n<t.time){let e=n/t.time;return Dh(t.from,t.pivot,ws(t.axis,t.angle*e*e))}n-=t.time}return e.rest}var Ih=(e,t)=>H(t)**2*((e.hi[0]-e.lo[0])**2+(e.hi[1]-e.lo[1])**2+(e.hi[2]-e.lo[2])**2)/(24*Lh),Lh=9.8,Rh=.03,zh=.25,Bh=[`prop`,`follow`,`pivot`,`axis`,`channel`],Vh=e=>!!e&&typeof e==`object`&&!Array.isArray(e)&&Bh.every(t=>e[t]===void 0)&&(e.keys!==void 0||e.fall!==void 0),Hh=e=>e?.fall===void 0?[]:Array.isArray(e.fall)?e.fall:[e.fall],Uh=(e,t)=>e?.objects?.[t]??Gl(e)[t]??null,Wh=(e,t)=>Object.keys(e?.objects??{}).filter(n=>n===t||e.objects[n].ancestors?.includes(t));function Gh(e){let t=[];for(let n of[-1,1])for(let r of[0,2])for(let i of[-1,1])t.push(R(e.pos,G(e.R,[n*e.half[0],r*e.half[1],i*e.half[2]])));return t}var Kh=e=>Math.max(...Gh(e).map(e=>e[1])),qh=(e,t)=>{let n=G(K(e.R),z([t[0],e.pos[1]+e.half[1],t[2]],e.pos));return Math.abs(n[0])<=e.half[0]&&Math.abs(n[2])<=e.half[2]};function Jh(e,t){let n=new Set;for(let[r,i]of Object.entries(t?.objects??{}))[r,...i.ancestors??[]].some(t=>Ll(e.objects?.[t]))&&n.add(r);return n}function Yh(e,t,n){let r=Uh(e,t);return Wh(e,t).map(t=>({id:t,...q(n,J(r,e.objects[t])),half:e.objects[t].half}))}function Xh(e,t,n,r,i=null){let a=Yh(t,n,r),o=new Set(a.map(e=>e.id)),s=Jh(e,t);if(!a.length)return{support:null,top:0,h:0};let c=Math.min(...a.flatMap(e=>Gh(e).map(e=>e[1]))),l=a.flatMap(Gh).reduce((e,t)=>R(e,t),[0,0,0]).map(e=>e/(a.length*8)),u=(i?Wh(t,i):Object.keys(t.objects)).filter(e=>!o.has(e)&&!s.has(e)),d=null;for(let e of u){let n=t.objects[e],r=Kh(n);qh(n,l)&&r<=c+.005&&(!d||r>d.top)&&(d={support:e,top:r})}if(!d&&i)for(let e of u){let n=Kh(t.objects[e]);n<=c+.005&&(!d||n>d.top)&&(d={support:e,top:n})}return d??={support:null,top:0},{...d,h:Math.max(0,c-d.top)}}var Zh=new WeakMap;function Qh(e,t){Zh.has(e)||Zh.set(e,new Map);let n=Zh.get(e);return n.has(t)||n.set(t,Sh(Yh(e,t,{pos:[0,0,0],R:ys()}))),n.get(t)}function $h(e,t,n,r,i,a,o,s=null){let c=Xh(e,t,n,r,a.onto??null),l=a.tumble===!1?null:Qh(t,n);if(l){let e=s?jh(s.R,r.R,o):[0,0,0],t=Mh(l,r,e,c.top,o),n=Ph(l,t.at(t.tl),c.top,ph*c.h+Ih(l,e),[-e[2],0,e[0]]);if(n.steps.length||e.some(e=>e))return{t0:i,land:i+t.tl*o,end:i+(t.tl+n.time)*o,h:c.h,support:c.support,top:c.top,at:e=>{let a=(e-i)/o;return a<=0?r:a<=t.tl?t.at(a):Fh(n,a-t.tl)},rest:n.rest}}let u=c.h,d=Math.sqrt(2*u/Lh),f=Math.min(.6,Math.max(0,a.bounce??zh)),p=Math.min(f*Lh*d,Math.sqrt(2*Lh*Rh)),m=2*p/Lh,h={pos:[r.pos[0],r.pos[1]-u,r.pos[2]],R:r.R};return{t0:i,land:i+d*o,end:i+(d+m)*o,h:u,support:c.support,top:c.top,at:e=>{let t=(e-i)/o;if(t<=0)return r;let n=t<=d?-.5*Lh*t*t:t<=d+m?-u+p*(t-d)-.5*Lh*(t-d)**2:-u;return{pos:[r.pos[0],r.pos[1]+Math.min(0,n),r.pos[2]],R:r.R}},rest:h}}function eg(e,t,n=-1/0,r=1/0){let i=Pl(e)?[]:[...e.keys??[]].sort((e,t)=>e.f-t.f),a=Hh(e).map(e=>({...e,t:t(e.at)})).filter(e=>e.t>=n&&e.t<r).sort((e,t)=>e.t-t.t),o=[],s=[],c=0;for(let e of i){for(;c<a.length&&a[c].t<t(e.f);)s.length&&o.push({run:s}),s=[],o.push({fall:a[c++]});s.push(e)}for(s.length&&o.push({run:s});c<a.length;)o.push({fall:a[c++]});return o}function tg(e,t,n,r,i=!0){let a=n;for(let n of e)if(n.run){let{t:e}=n.curve;if(t<e[0])return a;if(t<=e[e.length-1])return lh(n.curve,t);a=lh(n.curve,e[e.length-1])}else{if(t<n.fall.t)return a;let e=i?n.plan??=r(a,n.fall):r(a,n.fall);if(t<e.end)return e.at(t);a=e.rest}return a}var ng=new WeakMap;function rg(e,t,n,r,i){ng.has(e.scene)||ng.set(e.scene,new Map);let a=ng.get(e.scene),o=`${t}|${i}|${e.grab}|${e.release}`,s=a.get(o);if(s&&s.map===r&&s.o===n&&s.spec===e.spec)return s.events;let c=Uh(e.scene,t),l=r??(e=>e),[u,d]=i===`before`?[-1/0,e.grab]:i===`after`?[e.release,1/0]:[-1/0,1/0],f=eg(n,l,u,d);for(let e of f)e.run&&(e.curve=oh({keys:e.run},l,()=>Ds(c.R),null));return a.set(o,{map:r,o:n,spec:e.spec,events:f}),f}var ig=(e,t)=>(n,r)=>$h(e.spec,e.scene,t,n,r.t,r,e.spec.fps??30);function ag(e,t,n){let r=Uh(e.scene,t),i=e.spec.objects?.[t];return!r||!i?null:tg(rg(e,t,i,e.timeMap,`all`),n,{pos:r.pos,R:r.R},ig(e,t))}function og(e,t,n,r,i){let a=Uh(e.scene,t);return!a||!Hh(n).length?a&&{pos:a.pos,R:a.R}:tg(rg({...e,grab:i},t,n,e.timeMap,`before`),r,{pos:a.pos,R:a.R},ig(e,t))}function sg(e,t,n,r,i,a,o=null){let s=Hh(n).length?rg({...e,release:i},t,n,e.timeMap,`after`):[];return s.length?tg(s,r,a,(n,r)=>$h(e.spec,e.scene,t,n,r.t,r,e.spec.fps??30,r.t<=i+1?o:null),!1):null}function cg(e,t,n){let r=e.timeMap??(e=>e);return Hh(t).some(e=>r(e.at)>=n)}var lg=.06,ug=.045,dg=.3,fg=30,pg=180/Math.PI,mg=2,hg=[0,1,0],gg=(e,t,n)=>[[e[0],t[0],n[0]],[e[1],t[1],n[1]],[e[2],t[2],n[2]]],_g=(e,t)=>z(e,B(t,V(e,t)));function vg(e,t,n){let r=null;for(let i of e.fits??[]){let e=t[`w_${i.anchor}_${i.side}`]??0;i.side===n&&i.orient!==!1&&e>1e-4&&(!r||e>r.w)&&(r={fit:i,w:e})}return r&&{...r,w:r.w*Math.min(1,Math.max(0,t[`armw_${n}`]??0))}}function yg(e,t,n,r,i){if(i.prop){let a=t.props?.[i.prop];if(!a)return null;let o=Xs(e,n,r),s=B(a.origin.map(t=>n.P[e.index[t]]).reduce(R,[0,0,0]),1/a.origin.length),[c,l,u]=i.point===`origin`?[0,0,0]:a.points?.[i.point]??[0,0,0];return R(s,R(B(o.d,c),R(B(o.l,l),B(o.n,u))))}let a=i.joints??[`${r}HandIndex2`,`${r}HandMiddle2`];return B(a.map(t=>n.P[e.index[t]]).reduce(R,[0,0,0]),1/a.length)}function bg(e,t){let{spec:n}=e,r=e.scene?.objects?.[t];for(let e of[t,...r?.ancestors??[]]){let t=n.objects?.[e];if(t?.prop)return{key:e,entry:t,side:n.props?.[t.prop]?.hand??null}}return null}function xg(e,t,n,r){let i=e.spec.objects?.[t],a=e.scene?.objects?.[t]?.half;if(!e.hold?.span||!i?.prop||e.spec.props?.[i.prop]?.hand!==n||!i.keys?.length||i.grab===void 0||i.at!==void 0||i.along!==void 0||a&&wg(a)>=0)return null;let[o]=e.hold.span(t);return o>=1&&r<=Math.max(o,e.hold.firstKey(t)-1)?Math.min(r,o-1):null}function Sg(e,t,n,r,i,a){let o=e.scene?.objects??{},s=i?.kind===`object`?qp(e.scene,i.object):Object.keys(o),c=null;for(let i of s){let s=o[i]?.half;if(!s)continue;let l=xg(e,bg(e,i)?.key,n,t),u=e.objectPose?.(i,l??t,l===null?a:null)??o[i];if(!u?.R)continue;let d={pos:u.pos,R:u.R,half:s},f=Du(r,d);(!c||f<c.d)&&(c={box:d,d:f,id:i})}let l=c&&bg(e,c.id);return!c||l?.side===n&&xg(e,l.key,n,t)===null?null:i?.kind===`object`||c.d<=lg?c.box:null}var Cg=[0,1,2];function wg(e){let t=Cg.reduce((t,n)=>e[n]>e[t]?n:t,0);return Cg.filter(e=>e!==t).every(t=>e[t]<ug)?t:-1}function Tg(e,t,n,r,i){let a=e===`Right`,o=G(Ss(r??0),[a?1:-1,0,0]),s=Math.abs(t[1]),c=_g(R(B(hg,1-s),B(o,s)),t),l=U(H(c)>.001?c:_g(o,t)),u=i?_g(i,t):null;if(!u||H(u)<=dg)return gg(t,l,ms(t,l));let d=e=>Math.acos(Math.max(-1,Math.min(1,V(e,n))))*pg-(V(e,l)>0?fg:0),f=U(u),p=d(f)<=d(B(f,-1))?f:B(f,-1);return gg(t,p,ms(t,p))}function Eg(e,t,n){let r=[e[0][0],e[1][0],e[2][0]],i=[e[0][1],e[1][1],e[2][1]],a=Math.atan2(V(ms(t,i),r),V(t,i))*pg,[o,s]=Ic.twist,c=Math.min(s,Math.max(o,n+a))-n;if(Math.abs(c-a)<1e-6)return e;let l=G(ws(r,c),t);return gg(r,l,ms(r,l))}function Dg(e,t,n,r,i,a,o,s){let c=vg(e.spec,a,i),l=Qm(e,i,o),u=c&&c.w>=.001&&Ym(e.spec,c.fit.anchor);if(l||u?Xm(e.spec,i):Math.abs(a[`wtwist_${i}`]??0)>.001||Math.abs(a[`wflex_${i}`]??0)>.001)return;if(l&&o>l.grab)return l.keyed?void 0:eh(e,t,n,r,i,l);if(!c||c.w<.001)return;if(u)return $m(e,t,n,r,i,a,s,c,n=>yg(t,e.spec,n,r,c.fit.effector??{}));if(Object.keys(e.spec.objects??{}).some(t=>e.spec.objects[t]?.prop&&e.objectHand?.(t,o)===i&&xg(e,t,i,o)===null))return;let d={s:n,diag:s,c:a},f=e.spec.anchors?.[c.fit.anchor];if(f?.kind===`prop`)return;let p=Sg(e,o,i,R(Dm(e,c.fit.anchor,n,s,a,i),c.fit.offset??[0,0,0]),f,d),m=p&&yg(t,e.spec,n,r,c.fit.effector??{});if(!m)return;let h=n=>({pos:yg(t,e.spec,n,r,c.fit.effector??{}),R:(({d:e,l:t,n})=>gg(e,t,n))(Xs(t,n,r))}),g=t.index,_=g[`${r}Arm`],v=g[`${r}ForeArm`],y=g[`${r}Hand`],b=wg(p.half),x=b>=0?G(p.R,Cg.map(e=>+(e===b))):null,S=Xs(t,n,r),C=U(_g(S.l,S.d)),w=U(z(n.P[y],n.P[v])),T=W(n.R[v],W(K(t.restWorldRot[v]),t.restWorldRot[y])),E=Xc(T,n.R[y],w,G(W(T,K(n.R[y])),S.l)).twist,{goal:D,plane:O,wristAt:k}=cl(t,n,r,{pos:m,R:Eg(Tg(r,S.d,C,a.yaw,x),C,E)},h(n),c.w,`palm`),ee={twist:0,flex:0,dev:0};for(let e=0;e<mg;e++)Js(t,n,_,v,y,k(e?n.R[y]:D),O,Rc,`elbow`),ee=ol(t,n,r,y,v,D);s[`grip_${i}`]={w:c.w,...ee}}var Og={period:3.8,deg:.8},kg={yaw:.9,pitch:.6},Ag={period:5.6,m:.012,list:1.4},jg=.5,Mg=1e-4,Ng=2*Math.PI,Pg=e=>e*e*(3-2*e),Fg=(e,t)=>Array.isArray(e)?e.some((e,n)=>Math.abs(e-t[n])>Mg):e&&typeof e==`object`?Object.keys({...e,...t}).some(n=>Math.abs((e[n]??0)-(t?.[n]??0))>.001):Math.abs((e??0)-(t??0))>.01;function Ig(e,t){let n=2166136261;for(let t=0;t<e.length;t++)n=Math.imul(n^e.charCodeAt(t),16777619);let r=n>>>0;return Array.from({length:t},()=>{r=r+1831565813>>>0;let e=Math.imul(r^r>>>15,r|1);return e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296*Ng})}function Lg(e,t,n,r){let i=Array(n).fill(!1),a=Object.keys(e);i[0]=!0;for(let t=1;t<n;t++)a.some(n=>Fg(e[n][t],e[n][t-1]))&&(i[t]=i[t-1]=!0);let o=a.filter(e=>/^(armw_[lr]|w_.+_[lr])$/.test(e));for(let t=0;t<n;t++)o.some(n=>e[n][t]>.001)&&(i[t]=!0);for(let e of Object.values(t.objects??{}))if(Number.isFinite(e?.grab))for(let t=Math.max(0,e.grab);t<Math.min(n,Number.isFinite(e.release)?e.release:n);t++)i[t]=!0;for(let e of t.goals??[]){let t=Array.isArray(e?.at)?e.at:null;if(!(e?.still===void 0||!t?.length))for(let e=Math.max(0,Math.round(t[0]));e<=Math.min(n-1,Math.round(t[t.length-1]));e++)i[e]=!0}let s=Math.max(1,Math.round(jg*r)),c=Array(n).fill(1/0);for(let e=0,t=-1/0;e<n;e++)i[e]&&(t=e),c[e]=e-t;for(let e=n-1,t=1/0;e>=0;e--)i[e]&&(t=e),c[e]=Math.min(c[e],t-e);return c.map(e=>Pg(Math.min(1,e/s)))}function Rg(e,t,n,r){let i={},a=Math.max(1,Math.round(jg*r));for(let r of[`l`,`r`]){let o=Object.keys(e).filter(e=>e===`armw_${r}`||RegExp(`^w_.+_${r}$`).test(e)),s=Array.from({length:n},(t,n)=>o.some(t=>e[t][n]>.001));for(let e of Object.values(t.objects??{}))if(!(!Number.isFinite(e?.grab)||t.props?.[e.prop]?.hand!==r))for(let t=Math.max(0,e.grab);t<Math.min(n,Number.isFinite(e.release)?e.release:n);t++)s[t]=!0;if(!s.some(Boolean)){i[r]=null;continue}let c=Array(n).fill(1/0);for(let e=0,t=-1/0;e<n;e++)s[e]&&(t=e),c[e]=e-t;for(let e=n-1,t=1/0;e>=0;e--)s[e]&&(t=e),c[e]=Math.min(c[e],t-e);i[r]=c.map(e=>1-Pg(Math.min(1,e/a)))}return i}function zg(e,{spec:t,sk:n,frameCount:r}){if(t.idle===!1||!e.root||!e.foot_l||!e.foot_r)return null;let i=t.fps??30,a=Lg(e,t,r,i);if(!a.some(e=>e>0))return null;let o=n.restWorldPos,s=o[n.index.Hips][1],c=o[n.index.LeftFoot][1],[l,u,d,f,p]=Ig(JSON.stringify([e.root[0].map(e=>e.toFixed(3)),(e.yaw?.[0]??0).toFixed(1)]),5),m=Array(r).fill(null);for(let t=0;t<r;t++){if(!(a[t]>0))continue;let n=t/i,r=a[t],o=m[t]={spine_pitch:-r*Og.deg*Math.sin(Ng*n/Og.period+l),head_yaw:r*kg.yaw*(.6*Math.sin(Ng*n/7.3+u)+.4*Math.sin(Ng*n/11.9+p)),head_pitch:r*kg.pitch*Math.sin(Ng*n/9.1+d)};if(![`l`,`r`].every(n=>e[`foot_${n}`][t][1]<c+.03&&Math.abs(e[`fpitch_${n}`]?.[t]??0)<2)||e.root[t][1]<s-.15)continue;let h=r*Math.sin(Ng*n/Ag.period+f),g=(e.yaw?.[t]??0)*Math.PI/180;o.root=[Math.cos(g)*Ag.m*h,0,-Math.sin(g)*Ag.m*h],o.roll=Ag.list*h,o.spine_roll=-Ag.list*h}return m}function Bg(e,t,n){let r=t?.[n];if(!r)return e;let i={...e};for(let[t,n]of Object.entries(r))i[t]=Array.isArray(n)?Array.isArray(e[t])?e[t].map((e,t)=>e+n[t]):e[t]:(Number(e[t])||0)+n;return i}var Vg=(e,t,n)=>Math.min(n,Math.max(t,e));function Hg(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);let n=t>>>0;return()=>{n=n+1831565813>>>0;let e=Math.imul(n^n>>>15,n|1);return e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296*2-1}}var Ug={noise:.02,side:.03,first:.22,second:.08,last:.22,beforeLast:.08,turn:0},Wg={noise:.025,side:.012,stride:.035,second:.05,beforeLast:.06,turn:.06},Gg={noise:.1,first:.1,last:.25},Kg=.1,qg=3,Jg=60;function Yg(e,{s0:t,turn:n,seed:r}){let i=e.steps,a=Vg(e.vary??1,0,2),o=Hg(r),s=Array.from({length:i},()=>({time:o(),length:o(),lift:o(),arm:o()})),c=o()<0?1:-1,l=e=>e%2==0?c:-c,u=Array.from({length:Math.ceil(i/2)},()=>o()),d=e=>u[Math.floor((e-1)/2)],f=Array.from({length:i},(t,n)=>n===i-1?0:n===0?e.firstStep:e.step),p=t,m=f.map(e=>{let t=Math.abs(n(p,p+e));return p+=e,Math.min(1,t/Jg)}),h=i>=4,g=s.map((e,t)=>{if(i<2)return 1;let n=(t===0||t===i-1?.5:1)*(Ug.noise*e.time+Ug.side*l(t))+Ug.turn*m[t];return t===0&&(n+=Ug.first*(1-m[0])),t===1&&h&&(n+=Ug.second),t===i-1&&(n+=Ug.last),t===i-2&&h&&(n+=Ug.beforeLast),1+a*n}),_=g.reduce((e,t)=>e+t,0),v=i*e.period,y=[];for(let e=0,t=0;e<i;e++)y.push(Math.round(t)),t+=v*g[e]/_;let b=e.period-e.swing,x=y.map((t,n)=>{if(a===0)return e.swing;let r=(n<i-1?y[n+1]:v)-t;return Math.min(r-2,Math.max(e.swing,r-b),n===i-1?e.swing+qg:1/0)}),S=f.map((e,t)=>t>0&&t<i-1),C=s.map((e,t)=>{if(!S[t])return 1;let n=Wg.noise*(.7*e.length+.3*e.time)+Wg.side*l(t)+Wg.stride*d(t)-Wg.turn*m[t];return t===1&&h&&(n-=Wg.second),t===i-2&&h&&(n-=Wg.beforeLast),1+a*n}),w=S.filter(Boolean).length,T=C.reduce((e,t,n)=>e+(S[n]?t:0),0);return{lift:y,air:x,inc:f.map((e,t)=>S[t]&&a>0?e*C[t]*w/T:e),height:s.map((t,n)=>e.lift*(1+a*(Gg.noise*t.lift-(n===0?Gg.first:0)-(n===i-1&&i>1?Gg.last:0)))),arm:s.map(e=>1+a*Kg*e.arm)}}var Xg=18,Zg=22,Qg=7,$g=45,e_=1,t_=.4,n_=50,r_=15,i_=13,a_={strike:4,load:4,mid:3,toeOff:5},o_={strike:2,load:14,mid:7,toeOff:48,pow:1.8},s_=[1,2.2],c_=e=>{let t=Math.min(1,Math.max(0,((e??s_[1])-s_[0])/(s_[1]-s_[0])));return t*t*(3-2*t)},l_=.004,u_=8,d_=.008,f_=.35,p_=.001,m_=.25,h_=[.25,.5],g_=.008,__=e=>e*e*e*(e*(6*e-15)+10),v_=new WeakSet,y_=(e,t,n,r)=>R(e,G(Ss(t),G(xs(n),G(Ss(-t),z(r,e)))));function b_(e,t,n){let r=e.index,i=e.restWorldPos,a=H(z(i[r.LeftLeg],i[r.LeftUpLeg])),o=H(z(i[r.LeftFoot],i[r.LeftLeg])),s=Math.min(1,Math.max(0,(i_-t)/4)),c=c_(n),l=(e,t)=>e+(t-e)*c,u=l(o_.strike,Xg)+s*a_.strike,d=l(o_.load,Zg)+s*a_.load,f=l(o_.mid,Qg)+s*a_.mid,p=l(o_.toeOff,$g)+s*a_.toeOff;return{reach:e=>Math.sqrt(a*a+o*o+2*a*o*Math.cos(e*Math.PI/180)),hipOff:{l:z(i[r.LeftUpLeg],i[r.Hips]),r:z(i[r.RightUpLeg],i[r.Hips])},strike:u,load:d,mid:f,trail:e=>f+(p-f)*Math.min(1,Math.max(0,e))**l(o_.pow,e_)}}var x_=(e,t,n)=>R(e.root[t],G(Ss(e.yaw?.[t]??0),G(Cs(e.roll?.[t]??0),n)));function S_(e,t,{f0:n,end:r,period:i,pace:a,ground:o,start:s}){let c=e.index,l=e.restWorldPos,{reach:u,hipOff:d,strike:f,load:p,mid:m,trail:h}=b_(e,i,a),g=Math.max(2,Math.round(f_*i)),_=(e,t)=>{if(t<e.a)return f;if(e.heel!==void 0&&t>=e.heel)return h((t-e.heel)/Math.max(1,e.b-e.heel));let n=(t-e.a)/i/t_;return e.strike&&n<1?(n<.5?f:m)+(p-(n<.5?f:m))*Math.sin(Math.PI*n):m},v=Gp(t,r+1),y=l[c.Hips][1]-d_,b=v.root.map(e=>[e[0],e[2]]);for(let e=0;e<2;e++)b=b.map((e,t)=>{if(t<=n||t>=r)return e;let i=0,a=0,o=0;for(let e=-6;e<=6;e++){let s=Math.min(r,Math.max(n,t+e)),c=Math.exp(-(e*e)/8);i+=c*b[s][0],a+=c*b[s][1],o+=c}let s=Math.min(1,(t-n)/u_,(r-t)/u_),c=s*s*(3-2*s);return[e[0]+(i/o-e[0])*c,e[1]+(a/o-e[1])*c]});let x=e=>{let t=[b[e][0],v.root[e][1],b[e][1]],i=v.yaw?.[e]??0,a=v.roll?.[e]??0,s=[];for(let n of[`l`,`r`]){let r=o[n].find(t=>e>=t.a-(t.strike?g:0)&&e<=t.b);if(!r||r.free!==void 0&&e>=r.free)continue;let c=v[`foot_${n}`][e],l=G(Ss(i),G(Cs(a),d[n])),f=u(_(r,e)),p=Math.hypot(t[0]+l[0]-c[0],t[2]+l[2]-c[2]);p<f&&s.push(c[1]+Math.sqrt(f*f-p*p)-l[1])}if(!s.length)return y;let c=Math.min(...s),l=Math.min(y,c-l_*Math.log(s.reduce((e,t)=>e+Math.exp(-(t-c)/l_),0)))-p_,f=Math.min(1,(e-n)/u_,(r-e)/u_),p=f*f*(3-2*f);return t[1]+(l-t[1])*p};for(let e of[`l`,`r`])for(let t of o[e]){if(t.heel===void 0||!t.flat)continue;let e=G(Ss(t.yw),[0,0,1]),r=Math.max(n+1,t.a);for(;r<t.heel&&(b[r][0]-t.flat[0])*e[0]+(b[r][1]-t.flat[2])*e[2]<0;)r++;t.free=r}let S=[];for(let e=n;e<=r;e++)S[e]=x(e);let C=Math.max(2,Math.round(m_*i)),w=(e,t)=>{let n=e;for(let r=e;r<=t;r++)S[r]<S[n]&&(n=r);return n},T=[...new Set([`l`,`r`].flatMap(e=>o[e].filter(e=>e.strike&&e.a>n+2&&e.a<r-2).map(e=>e.a)))].sort((e,t)=>e-t),E=[{f:n,y:S[n]}];T.forEach((e,t)=>{let n=w(Math.max(E.at(-1).f+2,e-2),Math.min(r-2,e+C));if(t>0){let e=E.at(-1),t={f:n,y:S[n]},r=t.f-e.f,i=null;for(let n=Math.ceil(e.f+h_[0]*r);n<=Math.floor(e.f+h_[1]*r);n++){let r=S[n];for(let t=e.f+1;t<n;t++){let i=__((t-e.f)/(n-e.f));i>1e-6&&(r=Math.min(r,e.y+(S[t]-e.y)/i))}for(let e=n+1;e<t.f;e++){let i=__((e-n)/(t.f-n));i<1-1e-6&&(r=Math.min(r,(S[e]-t.y*i)/(1-i)))}(!i||r>i.y)&&(i={f:n,y:r})}i&&i.y>Math.max(e.y,t.y)&&E.push(i)}n>E.at(-1).f&&E.push({f:n,y:S[n]})}),E.push({f:r,y:S[r]});for(let e=1;e+1<E.length;e++){let t=E[e],n=Math.min(...[E[e-1],E[e+1]].map(e=>e.y+g_*(t.f-e.f)**2/2));t.y>Math.max(E[e-1].y,E[e+1].y)&&(t.y=Math.min(t.y,n))}let D=[];for(let e=0;e<30;e++){let e=0,t=w_(E.map(e=>e.f),E.map(e=>e.y),0,0);for(let i=0;i+1<E.length;i++){let a=E[i],o=E[i+1],s=0;for(let e=a.f;e<=o.f;e++)D[e]=t(e),s=Math.max(s,D[e]-S[e]);if(s>3e-4){let t=a.y>o.y&&i>0||o.f===r?a:o;t.f!==n&&t.f!==r&&(t.y-=s,e=Math.max(e,s))}}if(!e)break}for(let e=n;e<=r;e++)D[e]=Math.min(D[e],S[e]);let O=t.filter(e=>/ step \d+$/.test(e.src??``)).sort((e,t)=>e.f-t.f),k=0,ee=s;for(let e=n+1;e<r;e++){for(;k<O.length&&O[k].f<=e;)ee=O[k++].src;t.push({f:e,set:{root:[b[e][0],D[e],b[e][1]]},src:ee})}}function C_(e,t,{end:n,period:r,pace:i,ground:a}){let{reach:o,hipOff:s,trail:c}=b_(e,r,i),l=Gp(t,n+1),u=new Map(t.map(e=>[e.f,e.src]));for(let e of[`l`,`r`])for(let r of a[e]){if(r.free===void 0||!Number.isFinite(r.b)||r.b>n)continue;let i=[],a=[],d=0;for(let t=r.free;t<=r.b;t++){let n=x_(l,t,s[e]),u=o(c((t-r.heel)/Math.max(1,r.b-r.heel))),f=e=>H(z(n,y_(r.ball,r.yw,e,r.flat)))-u,p=d,m=n_;if(f(p)<=0)m=p;else if(f(m)<=0)for(let e=0;e<24;e++){let e=(p+m)/2;f(e)>0?p=e:m=e}d=m,i.push(m),a.push({f:t,hip:n,want:u})}let f=i.map((e,t)=>Math.max(...i.slice(t).map((e,t)=>e-t*r_)));for(let e=0;e<2;e++)f=f.map((e,t)=>Math.max(i[t],((f[t-1]??0)+e+(f[t+1]??e))/3));a.forEach(({f:n,hip:i,want:a},o)=>{let s=y_(r.ball,r.yw,f[o],r.flat),c=H(z(i,s))-a;c>0&&(s=R(s,B(z(i,s),c/H(z(i,s))))),t.push({f:n,set:{[`foot_${e}`]:s,[`fpitch_${e}`]:f[o],[`fyaw_${e}`]:r.yw},src:u.get(n)})})}}function w_(e,t,n,r){let i=e.length-1,a=e.slice(1).map((t,n)=>t-e[n]),o=[],s=[],c=[],l=[];for(let e=0;e<=i;e++)e===0?(o[e]=0,s[e]=2*a[0],c[e]=a[0],l[e]=6*((t[1]-t[0])/a[0]-n)):e===i?(o[e]=a[i-1],s[e]=2*a[i-1],c[e]=0,l[e]=6*(r-(t[i]-t[i-1])/a[i-1])):(o[e]=a[e-1],s[e]=2*(a[e-1]+a[e]),c[e]=a[e],l[e]=6*((t[e+1]-t[e])/a[e]-(t[e]-t[e-1])/a[e-1]));for(let e=1;e<=i;e++){let t=o[e]/s[e-1];s[e]-=t*c[e-1],l[e]-=t*l[e-1]}let u=[];u[i]=l[i]/s[i];for(let e=i-1;e>=0;e--)u[e]=(l[e]-c[e]*u[e+1])/s[e];return n=>{let r=0;for(;r<i-1&&n>e[r+1];)r++;let o=n-e[r],s=a[r],c=(e[r+1]-n)/s,l=o/s;return c*t[r]+l*t[r+1]+((c**3-c)*u[r]+(l**3-l)*u[r+1])*s*s/6}}var T_=3,E_=.35,D_=.2,O_=.03,k_=.04,A_=.025,j_=e=>e*180/Math.PI,M_=e=>{let t=Math.min(1,Math.max(0,e));return t*t*(3-2*t)};function N_(e,t,n,r,i){let a=z(t,e),o=Math.min(r+i-1e-6,Math.max(Math.abs(r-i)+1e-6,H(a))),s=B(a,1/H(a)),c=z(n,B(s,V(n,s)));c=B(c,1/(H(c)||1));let l=(r*r+o*o-i*i)/(2*r*o),u=z(t,R(e,R(B(s,r*l),B(c,r*Math.sqrt(Math.max(0,1-l*l))))));return j_(Math.atan2(-V(u,n),-u[1]))}function P_(e,{end:t,ground:n,sk:r}){let i=Gp(e,t+2),a=new Map(e.map(e=>[e.f,e.src])),o=r?.index,s=r?.restWorldPos,c=r&&H(z(s[o.LeftLeg],s[o.LeftUpLeg])),l=r&&H(z(s[o.LeftFoot],s[o.LeftLeg]));for(let u of[`l`,`r`]){let d=n[u],f=u===`l`?`Left`:`Right`,p=r&&z(s[o[`${f}UpLeg`]],s[o.Hips]),m=r&&z(s[o[`${f}ToeBase`]],s[o[`${f}Foot`]]),h=r&&s[o[`${f}ToeBase`]][1],g=r&&[0,.005-s[o[`${f}Foot`]][1],-.045];for(let n=0;n+1<d.length;n++){let o=d[n],s=d[n+1];if(!Number.isFinite(o.b)||!s.strike||s.a>t||s.a-o.b<3)continue;let f=[...new Set(e.filter(e=>!v_.has(e)&&e.f>o.b&&e.f<s.a&&e.set[`foot_${u}`]).map(e=>e.f))].sort((e,t)=>e-t),_=[o.b,...f,s.a],v=i[`foot_${u}`],y=e=>v[Math.max(0,Math.min(v.length-1,e))],b=z(y(o.b),y(o.b-1)),x=z(y(s.a+1),y(s.a)),S=[0,1,2].map(e=>w_(_,_.map(t=>y(t)[e]),b[e],x[e])),C=e=>i[`fyaw_${u}`]?.[e]??0,w=e=>i[`fpitch_${u}`]?.[e]??0,T=(e,t)=>N_(x_(i,e,p),t,G(Ss(C(e)),[0,0,1]),c,l)-T_,E=s.a-o.b,D=r&&w(o.b)-T(o.b,y(o.b)),O=r&&w(s.a)-T(s.a,y(s.a));for(let t=o.b+1;t<s.a;t++){let n=S.map(e=>e(t)),i={[`foot_${u}`]:n};if(r){let e=Math.min(n_,T(t,n)+D*(1-M_((t-o.b)/(E_*E)))+O*(1-M_((s.a-t)/(D_*E)))),r=h+O_*M_(Math.min(t-o.b,s.a-t)/3),a=e=>n[1]+G(xs(e),m)[1];if(a(e)<r){let t=-30,n=e;for(let e=0;e<20;e++){let e=(t+n)/2;a(e)<r?n=e:t=e}e=t}let c=w(t),l=e=>n[1]+G(xs(e),g)[1],d=Math.min(k_,Math.max(l(c),A_));if(e<c&&l(e)<d){let t=e,n=c;for(let e=0;e<20;e++){let e=(t+n)/2;l(e)<d?t=e:n=e}e=n}i[`fpitch_${u}`]=e}let c={f:t,set:i,src:a.get(t)};v_.add(c),e.push(c)}}}}var F_=[6,4],I_=50,L_=1.1,R_=[18,3],z_=[6,3],B_=8,V_=4.5,H_=5.5,U_=.015,W_=[.52,.64],G_=.3,K_=4,q_=6.4,J_=.8,Y_=e=>gs(.66-.18*e,.2,.48),X_=e=>gs(.32-.11*e,0,.45),Z_=e=>gs(2.8-.45*e,1.2,3),Q_=.92,$_=e=>gs(4.7-1.1*e,1.8,4),ev=[.2,.6],tv=.9,nv=.18,rv=.35,iv=.18,av=.55,ov=10,sv=.22,cv=.03,lv=50,uv=e=>G(Ss(e),[0,0,1]),dv=e=>G(Ss(e),[1,0,0]),fv=e=>{let t=Math.min(1,Math.max(0,e));return t*t*(3-2*t)};function pv(e,t){let n={};for(let r of[...e].sort((e,t)=>e.f-t.f))r.f<=t&&Object.assign(n,r.set);return n}function mv(e,t,n,r=`walk`){let i=`${r} start`,a=[],o=(e,t)=>{let n={f:e,set:t,src:i};return a.push(n),n},s=pv(t,e.f0);if(!s.foot_l||!s.foot_r||!s.root)throw Error(`MOTION_SPEC_INVALID: walk needs foot_l, foot_r and root keyed before f0`);if(e.vary!==void 0&&!(Number.isFinite(e.vary)&&e.vary>=0&&e.vary<=2))throw Error(`MOTION_SPEC_INVALID: ${r} vary must be a number from 0 (every step the same) to 2, got ${JSON.stringify(e.vary)}`);let c=n.index,l=n.restWorldPos,u=l[c.LeftFoot][1],d=l[c.Hips][1],f={l:z(l[c.LeftToeBase],l[c.LeftFoot]),r:z(l[c.RightToeBase],l[c.RightFoot])},p=[0,.005-u,-.045],m={l:-1/0,r:-1/0},h=H(z(l[c.LeftLeg],l[c.LeftUpLeg]))+H(z(l[c.LeftFoot],l[c.LeftLeg])),g=l[c.Hips][1]-l[c.LeftUpLeg][1],_=e.step??.5,v=e.halfWidth??.08,y=e=>Math.sqrt(Math.max(0,(.98*h)**2-e**2))+u+g-d,b={steps:8,step:_,period:20,swing:14,halfWidth:v,lift:.08,turnDistance:.4,firstStep:.4,pelvisHigh:Math.min(-.005,y(Math.hypot(.03,v-.035))),pelvisLow:y(Math.hypot(_/2,v)),vary:1,...e},x=b.step/b.period/(.5/20);b.armSwing=e.armSwing??gs(q_*x,4,22);let S=Y_(x),C=X_(x),w=Z_(x),T=$_(x),E=gs(tv*x,0,3),D=R_[0]+R_[1]*Math.min(x,2.5),O=z_[0]+z_[1]*Math.min(x,2.5),[k,ee]=b.heading??[s.yaw??0,s.yaw??0],A=e=>k+(ee-k)*fv(e/b.turnDistance),te=B(R(s.foot_l,s.foot_r),.5);te[1]=0;let j=[te];for(let e=0;e<4e3;e++)j.push(R(j[e],B(uv(A(e*.01)),.01)));let M=e=>j[Math.max(0,Math.min(j.length-1,Math.round(e/.01)))],ne=(e,t)=>{let n=R(M(e),B(dv(A(e)),(t===`l`?1:-1)*b.halfWidth));return n[1]=u,n},re={l:-.07,r:.07},ie={foot_l:s.foot_l,foot_r:s.foot_r,fyaw_l:s.fyaw_l??k,fyaw_r:s.fyaw_r??k},ae=[`root`,`yaw`,`roll`,`foot_l`,`foot_r`,`fyaw_l`,`fyaw_r`,`spine_yaw`,`spine_roll`,`spine_pitch`,`aswing_l`,`aswing_r`,`abend_l`,`abend_r`,`wflex_l`,`wflex_r`,`head_yaw`],oe=s.roll??0,se=s.spine_roll??0,ce=s.spine_pitch??0,le={l:[{a:e.f0,b:1/0,strike:!1}],r:[{a:e.f0,b:1/0,strike:!1}]};o(e.f0,Object.fromEntries(ae.map(e=>[e,s[e]??ie[e]??(e===`yaw`?k:0)])));let ue=re.r,de=null,fe=Yg(b,{s0:ue,turn:(e,t)=>A(t)-A(e),seed:[e.f0,b.steps,b.step,b.period,b.swing,b.firstStep,k,ee,te[0].toFixed(3),te[2].toFixed(3)].join(`|`)});for(let t=0;t<b.steps;t++){i=`${r} step ${t+1}`;let n=t%2==0?`l`:`r`,a=n===`l`?`r`:`l`,c=t===b.steps-1,l=c?ue:ue+fe.inc[t],u=e.f0+16+fe.lift[t],h=u+fe.air[t],g=u+Math.floor(fe.air[t]/2);if(t===0){let e=R(M(re[a]),B(dv(k),(a===`l`?1:-1)*b.halfWidth*.75));e[1]=s.root[1],o(u-4,{root:e,yaw:k}),o(u,{arm_hang:1})}let ee=gs(Math.abs(l-re[n])/L_,.3,1.15),te=I_*(.55+.45*ee)*(c?.8:1),j=ie[`foot_${n}`],ae=ie[`fyaw_${n}`],pe=R(j,G(Ss(ae),f[n])),me=Math.max(u-Math.max(K_,Math.round((t===0?.35:G_)*b.period)),m[n]+1,e.f0+1);Object.assign(le[n].at(-1),{b:u,heel:me,ball:pe,yw:ae,flat:j});for(let e=me;e<=u;e++){let t=te*((e-me)/Math.max(1,u-me))**1.8;o(e,{[`foot_${n}`]:y_(pe,ae,t,j),[`fpitch_${n}`]:t,[`fyaw_${n}`]:ae})}let he=Math.max(1,Math.round(sv*fe.air[t])),ge=ne((re[n]+l)/2,n);ge[1]+=fe.height[t];let _e=y_(pe,ae,Math.min(te,lv),j),ve=R(_e,B(z(ge,_e),rv));ve[1]=_e[1]+iv*ee*Math.min(1,(fe.air[t]/ov)**2)*(av+.44999999999999996*c_(x))*(fe.height[t]/b.lift);let ye=B(dv(A(re[a])),n===`l`?1:-1),be=ie[`foot_${a}`],xe=e=>(e[0]-be[0])*ye[0]+(e[2]-be[2])*ye[2],Se=xe(ge)-xe(ve);Se>0&&(ve[0]+=ye[0]*Se,ve[2]+=ye[2]*Se);let Ce=u+Math.max(2,Math.round(nv*fe.air[t]));!c&&Ce<g-1&&o(Ce,{[`foot_${n}`]:ve,[`fpitch_${n}`]:.7*Math.min(te,lv)}),o(g,{[`foot_${n}`]:ge,[`fyaw_${n}`]:A((re[n]+l)/2),[`fpitch_${n}`]:0});let we=re[a]+(W_[0]+(W_[1]-W_[0])*c_(x))*(l-re[a]),Te=de?de.s+(we-de.s)*((g-de.f)/(h-de.f)):null,Ee=Te===null?re[a]+.03:Te-U_*Math.abs(l-re[n])/2,De=t===0?.015:.032,Oe=R(M(Ee),B(dv(A(Ee)),(a===`l`?1:-1)*De));Oe[1]=d+b.pelvisHigh;let ke=e.pelvisLow??(fe.inc[t]>_?Math.min(b.pelvisLow,y(Math.hypot(fe.inc[t]/2,v))):b.pelvisLow),Ae=M(we).slice();Ae[1]=d+(c?b.pelvisHigh:ke),de={f:h,s:we};let je=ne(l,n),Me=A(l),Ne=R(je,G(Ss(Me),p)),Pe=-(F_[0]+(F_[1]-F_[0])*c_(x))*(c?.5:1),Fe=Math.max(2,Math.round(.2*b.period)),Ie=R(y_(Ne,Me,Pe,je),B(uv(Me),-.12*Math.abs(l-re[n])));Ie[1]+=cv,!c&&he>1&&h-he>g+1&&o(h-he,{[`foot_${n}`]:Ie,[`fpitch_${n}`]:.6*Pe});for(let e=0;e<=Fe;e++){let t=Pe*(1-fv(e/Fe));o(h+e,{[`foot_${n}`]:y_(Ne,Me,t,je),[`fpitch_${n}`]:t,[`fyaw_${n}`]:Me})}m[n]=h+Fe,le[n].push({a:h,b:1/0,strike:!0}),ie[`foot_${n}`]=je,ie[`fyaw_${n}`]=Me,re[n]=l;let Le=(c?0:t<3?[0,.3,.7][t]:1)*fe.arm[t],Re=n===`l`?1:-1,ze=gs(ee,.4,1.1),N=c?0:t===0?.5:1,Be=V_*ze*N*(a===`l`?1:-1),Ve=(h-g)/b.period,He=e=>{let t=[Math.cos(Math.PI*(e-Ve)),Math.cos(Math.PI*e)];return t.map(e=>e/Math.max(...t.map(Math.abs)))},Ue=He(-C).map(e=>-4.5*ze*Re*Le*e),We=He(S).map(e=>H_*ze*Re*Le*e),Ge=He(Q_).map(e=>-Math.sign(Be)*w*ze*N*e),Ke=He(Ve).map((e,t)=>t?J_*e:e),qe=e=>({aswing_l:-.85*b.armSwing*Re*Le*e,aswing_r:b.armSwing*Re*Le*e,abend_l:Le*(D-Re*O*e),abend_r:Le*(D+Re*O*e)});o(g,{root:Oe,yaw:A(Ee)+Ue[0],roll:oe+Be,spine_roll:se-Be*1.26+Ge[0],spine_yaw:We[0]-Ue[0],...qe(Ke[0]),wflex_l:B_*Le,wflex_r:B_*Le}),o(h,{root:Ae,yaw:A(we)+Ue[1],roll:oe,spine_roll:se+Ge[1],spine_yaw:We[1]-Ue[1],...qe(Ke[1]),head_yaw:0});let Je=ce+E*N,Ye=T*ze*N;o(Math.max(e.f0+1,h-Math.round(ev[1]*b.period)),{spine_pitch:Je-.6*Ye}),o(Math.max(e.f0+1,h-Math.round(ev[0]*b.period)),{spine_pitch:Je+Ye}),ue=l}let pe=e.f0+16+b.steps*b.period+18,me=Math.max(...a.map(e=>e.f));return e.pelvisHigh===void 0&&e.pelvisLow===void 0&&(P_(a,{end:me,ground:le}),S_(n,a,{f0:e.f0,end:me,period:b.period,pace:x,ground:le,start:`${r} start`}),C_(n,a,{end:me,period:b.period,pace:x,ground:le}),P_(a,{end:me,ground:le,sk:n})),i=`${r} end`,o(pe,pv(a,pe)),a}function hv(e,t){let n=(e.keys??[]).map((e,t)=>e.src?e:{...e,src:`keys[${t}]`});return(e.generators??[]).forEach((e,r)=>{if(e.type!==`walk`)throw Error(`MOTION_SPEC_INVALID: generators[${r}] has unknown type "${e.type}" (only "walk")`);n=n.concat(mv(e,n,t,`generators[${r}] walk`))}),n}var gv={yaw:.5,pitch:.2,roll:.7},_v={yaw:4,pitch:6,roll:10},vv=33,yv=8,bv=[`yaw`,`pitch`,`roll`];function xv(e){let t=new Map;for(let n of e){let e=/ (start|step \d+)$/.exec(n.src??``),r=e&&n.src.slice(0,-e[0].length);if(!e||!/\bwalk(To)?$/.test(r))continue;let i=t.get(r)??[1/0,-1/0];t.set(r,[Math.min(i[0],n.f),Math.max(i[1],n.f)])}return[...t.values()].filter(([e,t])=>t>e)}var Sv=(e,t)=>{let n=Math.floor(t/2),r=t=>e[Math.max(0,Math.min(e.length-1,t))];return e.map((e,t)=>{let i=0;for(let e=t-n;e<=t+n;e++)i+=r(e);return i/(2*n+1)})};function Cv(e,t,n){let r=xv(t);if(!r.length)return;let i=t=>e[t]??Array(n).fill(0);for(let a of bv){let o=i(`spine_${a}`),s=i(a).map((e,t)=>e+o[t]),c=Sv(s,vv),l=null;for(let[e,o]of r)if(!t.some(t=>t.f>=e&&t.f<=o&&t.set?.[`head_${a}`]!==void 0&&!/\bwalk(To)? (start|step \d+|end)$/.test(t.src??``))){l??=i(`head_${a}`).slice();for(let t=Math.max(0,e);t<=Math.min(n-1,o);t++){let n=Math.min(1,(t-e)/yv,(o-t)/yv),r=Math.max(-_v[a],Math.min(_v[a],s[t]-c[t]));l[t]-=gv[a]*r*n*n*(3-2*n)}}l&&(e[`head_${a}`]=l)}}function wv(e,t){let n=e.length,r=new Float64Array(n);for(let i=0;i<n;i++)if(e[i]>0)for(let a=Math.max(0,i-t-1);a<=Math.min(n-1,i+t+1);a++){let n=1-Math.abs(i-a)/(t+1),o=n*n*(3-2*n);r[a]=Math.max(r[a],e[i]*o)}return r}var Tv=e=>Math.round(e*1e4)/1e4,Ev=6;function Dv(e,t){let{sk:n}=e.ctx,r=n.index,i=n.restWorldPos,a=e.baked.root;if(!a)return null;let o=e.frames.length,s=new Float64Array(o);for(let t=0;t<o;t++){let{s:n,diag:a,c:o}=e.frames[t];for(let[e,c]of Object.entries(gl)){if(!(a[`leg_miss_${e}`]>5e-4)||!Array.isArray(o[`foot_${e}`]))continue;let l=.999*(H(z(i[r[`${c}Leg`]],i[r[`${c}UpLeg`]]))+H(z(i[r[`${c}Foot`]],i[r[`${c}Leg`]]))),u=z(o[`foot_${e}`],n.P[r[`${c}UpLeg`]]),d=u[1]*u[1]-V(u,u)+l*l,f=d>=0?-u[1]-Math.sqrt(d):-u[1];f>0&&f<=.05&&(s[t]=Math.max(s[t],f+5e-4))}}let c=s.filter(e=>e>0).length;if(!c)return null;let l=wv(s,Ev),u=[];for(let t=0;t<o;t++){if(!(l[t]>0))continue;let n=e.f0+t,r=a[n];a[n]=[r[0],r[1]-l[t],r[2]],u.push(n)}return t.solve(u),{frames:c,eased:u.length,max:Tv(Math.max(...s)),how:`hips lowered`}}function Ov(e){let t=0,n=0;for(let r of e.frames)for(let e of[`l`,`r`]){let i=r.diag[`reach_over_${e}`]??0;i>.001&&(t++,n=Math.max(n,i))}return t?{frames:t,max:Tv(n),how:`wrist target clamped to reach`}:null}var kv=.01,Av=4,jv=.03,Mv=.02;function Nv(e,t){let n=e.frames.length,r=Dd.plantH,i=0,a=0,o=0,s=new Set;for(let[t,c]of[[`l`,`Left`],[`r`,`Right`]]){let l=e.baked[`foot_${t}`];if(!l)continue;let u=e.frames.map((t,n)=>Yu(e,n,c)),d=(e,t)=>u[e][t][1]<r&&u[e-1][t][1]<r&&Math.abs(u[e][t][1]-u[e-1][t][1])<5e-4,f=Array.from({length:n},()=>null);for(let e=1;e<n;){if(!d(e,`ball`)&&!d(e,`heel`)){e++;continue}let t=null,s=null,c=e,l=0,p=[0,0,0],m=!1,h=[],g=e=>{let n=z(s,u[e][t]);n[1]=0,p=n,h.push([e,n]),l=Math.max(l,Math.hypot(n[0],n[2]))};for(;c<n&&(d(c,`ball`)||d(c,`heel`));c++){let e=d(c,`ball`)?`ball`:`heel`;m||=u[c][e===`ball`?`heel`:`ball`][1]>=r,e!==t&&(t=e,s=R(u[c-1][t],p)),g(c)}if(m&&l>=kv)for(;c<n&&u[c][t][1]<jv;c++)g(c);if(l>2e-4&&(l<kv||m)){i++,o=Math.max(o,l),l>=kv&&a++;for(let[e,t]of h)f[e]=t;let e=Math.max(Av,Math.ceil(Math.hypot(p[0],p[2])/Mv));for(let t=1;t<=e&&c-1+t<n&&!f[c-1+t];t++){let n=t/(e+1),r=1-n*n*(3-2*n);f[c-1+t]=[p[0]*r,0,p[2]*r]}}e=c}for(let t=0;t<n;t++){if(!f[t])continue;let n=e.f0+t;l[n]=R(l[n],f[t]),s.add(n)}}return i?(t.solve([...s]),{plants:i,...a?{pivots:a}:{},frames:s.size,max:Tv(o),how:a?`planted heel/ball held in place; turning feet pivot on it`:`planted heel/ball held in place`}):null}var Pv=6,Fv=4,Iv=1,Lv=e=>e*e*(3-2*e);function Rv(e,t){let n=e.frames.length,r=Dd.plantH,i=new Set,a=0;for(let[t,o]of[[`l`,`Left`],[`r`,`Right`]]){let s=e.baked[`fyaw_${t}`]??e.baked.yaw;if(!e.baked[`foot_${t}`]||!s)continue;let c=e.frames.map((t,n)=>Yu(e,n,o)),l=(e,t)=>c[e][t][1]<r&&c[e-1][t][1]<r&&Math.abs(c[e][t][1]-c[e-1][t][1])<5e-4,u=e=>e>0&&e<n&&l(e,`heel`)&&l(e,`ball`),d=Array.from({length:n},(t,n)=>s[e.f0+n]),f=d.slice();for(let e=1;e<n;e++){if(!u(e))continue;let t=f[e-1],r=e,i=0;for(;u(r);r++)i=Math.max(i,Math.abs(f[r]-t));if(i<=Iv){e=r;continue}a=Math.max(a,i);for(let n=e;n<r;n++)f[n]=t;let o=r<n?d[r]-t:0,s=Math.max(Fv,Math.ceil(Math.abs(o)/Pv));for(let e=0;o&&e<s&&r+e<n&&!u(r+e);e++)f[r+e]=d[r+e]-o*(1-Lv((e+1)/(s+1)));e=r}let p=f.map((e,t)=>e!==d[t]);if(!p.some(Boolean))continue;let m=e.baked[`fyaw_${t}`]=s.slice();p.forEach((t,n)=>{t&&(m[e.f0+n]=f[n],i.add(e.f0+n))})}return i.size?(t.solve([...i]),{frames:i.size,max:Tv(a)}):null}var zv=.001,Bv=.15,Vv=2;function Hv(e,t){let{sk:n}=e.ctx,r=e.frames.length,i=new Set,a=0;for(let[t,o]of Object.entries(gl)){let s=e.baked[`foot_${t}`],c=n.index[`${o}Foot`];if(!s)continue;let l=e.frames.map(({s:t},r)=>{let i=Mu(n,t,o),a=Math.min(i.heel[1],i.ball[1],i.tip[1])-t.P[c][1]+s[e.f0+r][1];return Math.min(Bv,-a-zv)});if(!l.some(e=>e>0))continue;let u=wv(l,Vv);for(let t=0;t<r;t++){if(!(u[t]>0))continue;let n=e.f0+t;s[n]=[s[n][0],s[n][1]+u[t],s[n][2]],a=Math.max(a,l[t]),i.add(n)}}return i.size?(t.solve([...i]),{frames:i.size,max:Tv(a),how:`soles lifted onto the floor`}):null}var Uv=4,Wv=.002,Gv=3,Kv={l:Tu.filter(e=>e[0]===`hand_l`||e[0]===`farm_l`),r:Tu.filter(e=>e[0]===`hand_r`||e[0]===`farm_r`)};function qv(e,t,n,r,i){let{sk:a}=e.ctx,o=a.index,s=e.frames.length,c=Array.from({length:s},()=>null);for(let a=0;a<s;a++){let{s,c:l}=e.frames[a],u=e.objectsAt(a),d=null;for(let[e,a]of Object.entries(u)){if(!a.half||a.ignore)continue;let c=null;for(let[l,u,d,f]of Kv[t]){let t=Ad(r,l,e)??Dd.allow,p=Eu(s.P[o[u]],s.P[o[d]]),m=p.map(e=>Du(e,a)),h=Math.min(...m),g=f-h-t;if(!(g<=0)){if(g>n){i.deep++;continue}(!c||g>c[0])&&(c=[g,p[m.indexOf(h)]])}}c&&(d=R(d??[0,0,0],B(Nu(c[1],a),c[0]+Wv)))}if(d){if(!(l[`armw_${t}`]>1e-4)){i.skipped++;continue}c[a]=d}}return c}function Jv(e,t,n){let r=e.ctx.spec.checks?.allow,i=e.frames.length,a={deep:0,skipped:0},o=new Set,s=0;for(let c=0;c<Gv;c++){a.deep=0,a.skipped=0;let c=new Set;for(let t of[`l`,`r`]){let l=qv(e,t,n,r,a),u=e.ctx.push[t],d=Array.from({length:i},()=>null);for(let e=0;e<i;e++)if(l[e]){o.add(`${t}${e}`);for(let t=Math.max(0,e-Uv-1);t<=Math.min(i-1,e+Uv+1);t++){let n=1-Math.abs(e-t)/5,r=B(l[e],n*n*(3-2*n));(!d[t]||H(r)>H(d[t]))&&(d[t]=r)}}for(let t=0;t<i;t++){if(!d[t])continue;let n=e.f0+t,r=R(u.get(n)??[0,0,0],d[t]);u.set(n,r),s=Math.max(s,H(r)),c.add(n)}}if(!c.size)break;t.solve([...c])}return!o.size&&!a.skipped?null:{frames:o.size,max:Tv(s),skipped:a.skipped,tooDeep:a.deep,how:`hand pushed out along the box normal`}}var Yv=1.1,Xv=.35,Zv=3,Qv=e=>{let t=e.ctx.spec?.checks?.limits;return vd(e.ctx.sk,e,t,{...Dd,...t})};function $v(e,t,n){let r=[];for(let i=1;i<n;i++){if(e[i]<=1)continue;let a=i;for(;a+1<n&&e[a+1]>1;)a++;let o=Math.max(6,2*(a-i+1)),s=Math.max(0,...t.filter(e=>e<=i-1-o)),c=Math.min(n-1,...t.filter(e=>e>=a+o));r.length&&s<=r[r.length-1][1]?r[r.length-1][1]=Math.max(r[r.length-1][1],c):r.push([s,c]),i=a}return r}function ey(e,t){let n=t[t.length-1]-t[0],r=t.slice(1).map((n,r)=>{let i=0;for(let a=Math.floor(t[r])+1;a<=Math.ceil(n);a++)i=Math.max(i,e[a]??0);return{len:n-t[r],need:Yv*i}}),i=e=>r.reduce((t,n)=>t+n.len*Math.max(n.need,e),0),a=Xv,o=1;for(let e=0;e<40;e++){let e=(a+o)/2;i(e)>n?o=e:a=e}let s=r.map(e=>e.len*Math.max(e.need,a)),c=n/s.reduce((e,t)=>e+t,0),l=[t[0]];return s.forEach((e,t)=>l.push(l[t]+e*c)),l[l.length-1]=t[t.length-1],{T:l,stretch:Math.max(...s.map((e,t)=>e*c/r[t].len))}}function ty(e,t){let n=e.frames.length,r=[],i=0,a=1;for(let o=0;o<Zv;o++){let o=Qv(e),s=[...new Set(e.keys.map(e=>e.f))].sort((e,t)=>e-t),c=$v(o,s,n);if(!c.length)break;let l=c.map(([e,t])=>{let n=[...new Set([e,...s.filter(n=>n>e&&n<t),t])].sort((e,t)=>e-t),r=ey(o,n);return a=Math.max(a,r.stretch),{cuts:n,T:r.T}});i+=c.length;let u=e=>{for(let{cuts:t,T:n}of l){if(e<t[0]||e>t[t.length-1])continue;let r=0;for(;r<t.length-2&&e>t[r+1];)r++;return n[r]+(n[r+1]-n[r])*(e-t[r])/(t[r+1]-t[r])}return e};r.push(u),t.rebake(e.keys.map(e=>({...e,f:u(e.f)}))),t.solve(t.all())}if(!r.length)return null;e.timeMap=e=>r.reduce((e,t)=>t(e),e);let o=Qv(e).filter(e=>e>1).length;return{windows:i,maxStretch:Math.round(a*100)/100,stillFast:o,how:`key intervals around speed spikes stretched`}}var ny=Array.from({length:19},(e,t)=>-90+t*10),ry=3,iy=5,ay=.003,oy=.003,sy=.03,cy=.08,ly=.03,uy=40,dy=.05,fy=4,py=2,my=.09,hy=400;function gy(e,t,n){let r=null;for(let i of e.ctx.spec.checks?.below??[]){let a=String(i.joint).replace(/^joint:/,``),o=String(i.ref).replace(/^joint:/,``),s=e.f0+t;(Array.isArray(i.when)?s>=i.when[0]&&s<=i.when[1]:!i.when||(e.frames[t].c[i.when]??0)>.5)&&a===`${n}ForeArm`&&o===`${n}Arm`&&Number.isFinite(i.min)&&(r=Math.max(r??0,i.min))}return r}var _y=10,vy={l:`Left`,r:`Right`};function yy(e,t,n){let r=0;for(let i of e.fits??[]){let a=e.anchors?.[i.anchor],o=t[`w_${i.anchor}_${i.side}`]??0;(i.side===n||a?.kind===`prop`&&e.props?.[a.prop]?.hand===n)&&(r=Math.max(r,o))}return Math.min(1,r)}var by=Object.fromEntries(Tu.map(e=>[e[0],e[3]]));function xy(e,t,n,r){let i=0;for(let a of e)i=Math.max(i,r-Math.min(...Eu(t,n,5).map(e=>Du(e,a))));return i}function Sy(e,t,n,r,i,a=[]){let o=t.index,s=o[`${r}Arm`],c=o[`${r}ForeArm`],l=n.P[s],u=n.P[o[`${r}Hand`]],d=i?R(l,G(ws(z(u,l),i),z(n.P[c],l))):n.P[c],f=Math.max(Nc(e,t,n,s,l,d),Nc(e,t,n,c,d,u)),p=r===`Left`?`l`:`r`;return{depth:f,scene:a.length?Math.max(xy(a,l,d,by[`uarm_${p}`]),xy(a,d,u,by[`farm_${p}`])):0,rise:Math.max(0,d[1]-(l[1]-my)),under:l[1]-d[1]}}var Cy=(e,t)=>{let n=e.index,r=e.restWorldPos;return H(z(r[n[`${t}ForeArm`]],r[n[`${t}Arm`]]))+H(z(r[n[`${t}Hand`]],r[n[`${t}ForeArm`]]))};function wy(e,t,n){let{sk:r}=e.ctx,i=vy[n],a=e.frames.length,o=e.ctx.swivel[n],s=e.frames.map(({s:a,c:s},c)=>{let l=_l(s[`armw_${n}`]??0),u=(o.get(e.f0+c)??0)*l;if(!u&&Sy(t,r,a,i,0).depth<=oy)return null;let d=a.P[r.index[`${i}Arm`]],f=Cy(r,i)+.15,p=Object.values(e.objectsAt(c)).filter(e=>e.half&&!e.ignore&&H(z(R(e.pos,G(e.R,[0,e.half[1],0])),d))-H(e.half)<f),m=Sy(t,r,a,i,-u,p).scene,h=gy(e,c,i);return ny.map(e=>{let{depth:n,scene:o,rise:s,under:c}=Sy(t,r,a,i,e*l-u,p),d=Math.max(0,n-oy)*100,f=h===null?0:Math.max(0,h-c),g=Math.max(0,o-Math.max(m,oy))*100;return uy*(d*d+g*g)+dy*(e/10)**2+fy*(s*100)**2+hy*(f*100)**2})});if(s.every(e=>!e))return null;let c=ny.indexOf(0),l=ny.map((e,t)=>t===c?0:1/0),u=ny.map(()=>0),d=[];for(let e=0;e<a;e++){let t=s[e]??l,n=u,r=[];u=t.map((e,t)=>{let i=1/0,a=c;for(let e=0;e<ny.length;e++){if(Math.abs(ny[t]-ny[e])>_y)continue;let r=n[e]+py*((ny[t]-ny[e])/10)**2;r<i&&(i=r,a=e)}return r.push(a),i+e}),d.push(r)}let f=Array(a),p=u.indexOf(Math.min(...u));for(let e=a-1;e>=0;e--)f[e]=ny[p],p=d[e][p];return f.map((e,t)=>(f[Math.max(0,t-1)]+2*f[t]+f[Math.min(a-1,t+1)])/4)}function Ty(e,t,n,r){let{sk:i}=e.ctx,a=vy[n],o=i.index,s=e.frames.length,c=Array(s).fill(null),l=[o.Head,o.Neck,o.HeadTop_End].filter(e=>e!==void 0);for(let u=0;u<s;u++){let{s,c:d}=e.frames[u],f=e.f0+u,p=1-yy(e.ctx.spec,d,n);if(p<.05)continue;let m=null;for(let n of[o[`${a}Hand`],o[`${a}ForeArm`]]){let r=Pc(t,i,s,n);if(r.into<0||l.includes(r.into))continue;let a=Math.min(ly,Ad(e.ctx.spec.checks?.allow,Vu(i,n),Vu(i,r.into))??0),o=r.depth-Math.max(a,oy);o>0&&(!m||o>m.past)&&(m={...r,b:n,past:o})}if(!m)continue;if(!(d[`armw_${n}`]>1e-4)){r.skipped++;continue}let h=H(e.ctx.skinPush[n].get(f)??[0,0,0]);if(h>=cy){r.deep++;continue}let g=Cc(t,s,m.p,new Set([...t.skip.get(m.b),...l]));g&&(c[u]=B(g,p*Math.min(sy,cy-h,m.past+ay)))}let u=Array(s).fill(null);return c.forEach((e,t)=>{if(e)for(let n=Math.max(0,t-iy-1);n<=Math.min(s-1,t+iy+1);n++){let r=1-Math.abs(t-n)/6,i=B(e,r*r*(3-2*r));(!u[n]||H(i)>H(u[n]))&&(u[n]=i)}}),u}function Ey(e,t){let n=vc(e.ctx.sk);if(!n)return null;let r=e.frames.length,i={skipped:0,deep:0},a=new Set,o=new Set,s=0,c=0;for(let r=0;r<ry;r++){let r=new Set;for(let t of[`r`,`l`]){let i=wy(e,n,t);i&&i.forEach((n,i)=>{let o=e.f0+i,c=e.ctx.swivel[t].get(o)??0,l=Math.abs(n)<.5?0:n;Math.abs(l-c)<.5||(l?e.ctx.swivel[t].set(o,l):e.ctx.swivel[t].delete(o),s=Math.max(s,Math.abs(l)),l&&a.add(`${t}${i}`),r.add(o))})}r.size&&t.solve([...r]),r=new Set,i.skipped=0,i.deep=0;for(let t of[`r`,`l`])Ty(e,n,t,i).forEach((n,i)=>{if(!n)return;let a=e.f0+i,s=R(e.ctx.skinPush[t].get(a)??[0,0,0],n);e.ctx.skinPush[t].set(a,s),c=Math.max(c,H(s)),o.add(`${t}${i}`),r.add(a)});if(!r.size)break;t.solve([...r])}if(o.size){let n=new Set;for(let t of[`r`,`l`]){let i=n=>e.ctx.skinPush[t].get(e.f0+n)??[0,0,0];for(let a=0;a<2;a++){let a=Array.from({length:r},(e,t)=>i(t));a.forEach((i,o)=>{let s=[-2,-1,0,1,2].reduce((e,t,n)=>R(e,B(a[Math.min(r-1,Math.max(0,o+t))],[1,4,6,4,1][n]/16)),[0,0,0]);H(s)<1e-5&&!e.ctx.skinPush[t].has(e.f0+o)||(e.ctx.skinPush[t].set(e.f0+o,s),n.add(e.f0+o))})}}n.size&&t.solve([...n])}return!a.size&&!o.size&&!i.skipped?null:{elbowFrames:a.size,maxTurn:Math.round(s),handFrames:o.size,maxPush:Tv(c),skipped:i.skipped,tooDeep:i.deep,how:`elbow turned about the shoulder-wrist line; a hand a little inside pushed out along the skin`}}var Dy=[`reach`,`slide`,`penetration`,`self`,`retime`];function Oy(e){if(e===!1)return{reach:!1,slide:!1,penetration:0,self:!1,retime:!1};let t=e??{},n=t.penetration===!0?.02:Math.min(.05,Math.max(0,Number(t.penetration)||0));return{reach:t.reach!==!1,slide:t.slide!==!1,penetration:n,self:t.self!==!1,retime:t.retime===!0}}var ky=(e,t)=>e?{...t??{frames:0,how:`planted heel/ball held in place`},turns:e,how:`${t?.how??`planted heel/ball held in place`}; a flat planted foot keeps its heading until it lifts`}:t,Ay=(e,t)=>e&&t?{frames:Math.max(e.frames,t.frames),eased:Math.max(e.eased,t.eased),max:Math.max(e.max,t.max),how:e.how}:e??t;function jy(e,t,n,{whole:r=!0}={}){let i={},a=(e,t)=>{t&&(i[e]=t)};return t.retime&&r&&a(`retime`,ty(e,n)),t.slide&&a(`ground`,Hv(e,n)),t.reach&&a(`reachLegs`,Dv(e,n)),t.slide&&a(`slide`,ky(Rv(e,n),Nv(e,n))),t.reach&&i.slide?.pivots&&a(`reachLegs`,Ay(i.reachLegs,Dv(e,n))),t.penetration>0&&a(`penetration`,Jv(e,n,t.penetration)),t.self&&a(`self`,Ey(e,n)),t.reach&&a(`reachArms`,Ov(e)),i}var My=e=>e*e*(3-2*e);function Ny(e,t,n,r=()=>void 0){let i=new Map,a=new Map,o=r(),s=s=>{if(r()!==o&&(o=r(),i.clear(),a.clear()),i.has(s))return i.get(s);let c={};for(let[r,i]of Object.entries(t?.objects??{})){let a=[r,...i.ancestors??[]].find(t=>Ll(e.objects?.[t])),l=e.objects?.[a];c[r]=l?Pl(l)||Fl(l)?{...i,carried:a}:Vh(l)?{...i,...q(ag({spec:e,scene:t,timeMap:o},a,s),J(t.objects[a]??Gl(t)[a],i))}:{...i,...Bl(l,i,n,s)}:i}return i.set(s,c),c};return{all:s,obstacles:e=>(r()!==o&&s(e),a.has(e)||a.set(e,Object.fromEntries(Object.entries(s(e)).filter(([,e])=>!e.carried))),a.get(e))}}function Py(e,t,n,r){if(r.prop)return n.props?.[r.prop]?.[r.point];let i=r.joints??[`RightHandIndex2`,`RightHandMiddle2`];return B(i.map(n=>t.P[e.index[n]]).reduce((e,t)=>R(e,t),[0,0,0]),1/i.length)}function Fy(e,t,n,r=!1,i=!0,a=null){let{sk:o}=e;return{softReach:e.softReach,foldFree:r,hold:i&&e.hold?(r,i)=>r===a?null:e.hold.lead(r,n,i,t):void 0,push:r?void 0:t=>e.push?.[t]?.get(n),swivel:t=>e.swivel?.[t]?.get(n),skinPush:r?void 0:t=>e.skinPush?.[t]?.get(n),handTarget(r,i,a){a.frame=n;let s=i.P[o.index[r===`l`?`LeftHand`:`RightHand`]],c=[];for(let[n,o]of Object.entries(t)){let s=/^w_(.+)_([lr])$/.exec(n);!s||s[2]!==r||!(o>1e-6)||c.push([o,R(Dm(e,s[1],i,a,t,r),t[`fit_${s[1]}_${r}`]??[0,0,0])])}let l=c.reduce((e,[t])=>e+t,0);if(l>1){for(let e of c)e[0]/=l;l=1}let u=B(t[`hand_${r}`]??s,1-l);for(let[e,t]of c)u=R(u,B(t,e));let d=Math.max(0,...c.map(([e])=>My(Math.min(1,Math.min(e,1-e)*3))));if(d>0){let n=i.P[o.index.Spine],r=i.P[o.index.Neck],a=z(r,n),s=R(n,B(a,Math.min(1,Math.max(0,V(z(u,n),a)/V(a,a))))),c=e.spec.detourRadius??.25,l=z(u,s),f=H(l);if(f<c){let e=G(ws([0,1,0],t.yaw??0),[0,0,1]),n=U(R(f>1e-6?B(l,1/f):e,B(e,.6)));u=R(u,B(z(R(s,B(n,c)),u),d))}}return u},keepOut:e.keepOut&&!r?(n,r,i)=>{let a=(1-yy(e.spec,t,n))*Math.min(1,Math.max(0,t[`armw_${n}`]??0));for(let t=0;t<2&&a>.001;t++){let t=Ac(e.keepOut.body,o,r,i,jc,e.keepOut.skip);if(t===i)break;i=R(i,B(z(t,i),a))}return i}:void 0,afterArm:(t,n,r)=>Im(e,t,n,r),grip:r?void 0:(r,i,a)=>Dg(e,o,i,gl[r],r,t,n,a)}}function Iy(e,t,n,r=!0){let i={...Bg(t,e.idle,n)};for(let t of[`l`,`r`])e.busy?.[t]&&(i[`hangoff_${t}`]=e.busy[t][n]);for(let t of e.spec.fits??[]){let a=`w_${t.anchor}_${t.side}`;if(!(i[a]>1e-4))continue;let o={...i,[a]:1,[`armw_${t.side}`]:1};for(let e of Object.keys(o))e!==a&&RegExp(`^w_.+_${t.side}$`).test(e)&&(o[e]=0);let s=[0,0,0];for(let i=0;i<6;i++){o[`fit_${t.anchor}_${t.side}`]=s;let{s:i,diag:a}=Nl(e.sk,o,Fy(e,o,n,!0,r,t.side)),c=Py(e.sk,i,a,t.effector),l=R(Dm(e,t.anchor,i,a,o,t.side),t.offset??[0,0,0]);if(!c)break;s=R(s,z(l,c))}i[`fit_${t.anchor}_${t.side}`]=s}let{s:a,diag:o}=Nl(e.sk,i,Fy(e,i,n,!1,r));return o.frame=n,{s:a,diag:o,c:i}}function Ly(e,{sk:t,scene:n},r={}){if(e?.schema!==`cozyclay.motion-spec.v1`)throw Error(`MOTION_SPEC_INVALID: schema must be cozyclay.motion-spec.v1`);let i=Math.round(e.frames);if(!(i>=1&&i<=2e4))throw Error(`MOTION_SPEC_INVALID: frames must be 1..20000`);let a=Oy(e.fix),[o,s]=r.window?[Math.max(0,r.window[0]),Math.min(i-1,r.window[1])]:[0,i-1],c={sk:t,spec:e,scene:n,softReach:a.reach,push:{l:new Map,r:new Map},swivel:{l:new Map,r:new Map},skinPush:{l:new Map,r:new Map},keepOut:a.self?Mc(t):null},l={ctx:c,fps:e.fps??30,frameCount:i,f0:o,frames:[]};c.objectPose=(e,t,n)=>dm(l,e,t,n),c.objectHand=(e,t)=>um(l,e,t),c.restingAt=(e,t)=>rm(l,e,t),c.carrySpan=e=>Zp(l,e),c.solvedAt=e=>am(l,e);let u={rebake(r){l.keys=r,l.baked=Gp(r,i,Hp(e.flow)),c.socketTurns=new Map,Cv(l.baked,r,i),c.idle=zg(l.baked,{spec:e,sk:t,frameCount:i}),c.busy=Rg(l.baked,e,i,l.fps);let a=Ny(e,n,l.baked,()=>l.timeMap);c.objectsAt=a.all,l.objectsAt=o?e=>a.obstacles(e+o):a.obstacles},solve(e){for(let t of e)t>=o&&t<=s&&(l.frames[t-o]=Iy(c,Kp(l.baked,t),t))},all:()=>Array.from({length:s-o+1},(e,t)=>o+t)};return c.hold=fh(c,l,e=>Iy(c,Kp(l.baked,e),e,!1),e=>Iy(c,Kp(l.baked,e),e)),u.rebake(r.keys??hv(e,t)),u.solve(u.all()),l.fixed=r.fixes===!1?{}:jy(l,a,u,{whole:!r.window}),c.hold&&l.timeMap&&u.solve(u.all()),l}var Ry=`{ f, pos: [x, y, z], rot: [x, y, z, w] } or { f, pos, aim: [x, y, z], roll? }`,zy=`{ at, onto?, bounce?, tumble? }`,By=e=>Array.isArray(e)&&e.length===4&&e.every(Number.isFinite)&&Math.abs(Math.hypot(...e)-1)<=.01,Vy=e=>Hf(e)&&Math.hypot(...e)>1e-9;function Hy(e,t,n){if(n.rot!==void 0&&n.aim!==void 0)return e(`${t} gives both rot and aim; give one: rot [x, y, z, w], or aim [x, y, z] (the world direction its +Y points) with roll`);if(n.aim===void 0){n.roll!==void 0&&e(`${t}.roll turns the object about aim; give aim [x, y, z] with it, or leave roll out (rot fixes the roll)`),n.lean!==void 0&&e(`${t}.lean lets the compiler lean aim; give aim [x, y, z] with it (rot is used exactly)`),By(n.rot)||e(`${t}.rot must be a unit quaternion [x, y, z, w], got ${Y(n.rot)}${n.rot===void 0?`; or give aim [x, y, z], the world direction its +Y points`:``}`);return}Vy(n.aim)||e(`${t}.aim must be a non-zero world direction [x, y, z] for the object's +Y (a bat: knob to barrel), got ${Y(n.aim)}`),n.roll!==void 0&&!Number.isFinite(n.roll)&&e(`${t}.roll must be degrees about aim (a number), got ${Y(n.roll)}`),n.lean!==void 0&&!(Number.isFinite(n.lean)&&n.lean>=0&&n.lean<=45)&&e(`${t}.lean must be the most degrees the compiler may lean aim (0..45), got ${Y(n.lean)}`)}function Uy(e,t,n,r,i,a=!1){if(!Array.isArray(r.keys))return e(`${n}.keys must be an array of ${Ry}`);let o=Number.isInteger(i)?i-1:1/0,s=a?0:r.grab??0,c=a?o:r.release??o,l=new Map;r.keys.forEach((r,i)=>{let o=`${n}.keys[${i}]`;if(!r||typeof r!=`object`||Array.isArray(r))return e(`${o} must be ${Ry}, got ${Y(r)}`);for(let e of Object.keys(r))pp.includes(e)||t(`${o} has unknown field "${e}"${Wf(e,pp)}; a key is ${Ry}`);Number.isInteger(r.f)?r.f<s||r.f>c?e(a?`${o}.f = ${r.f} is outside the take (0..${c})`:`${o}.f = ${r.f} is outside grab..release (${s}..${c}); keys pose a carried object only while it is in hand (drop its prop to move it on its own, C17)`):l.has(r.f)?e(`${o}.f = ${r.f}: keys[${l.get(r.f)}] is at that frame already; one key per frame`):l.set(r.f,i):e(`${o}.f must be a whole frame, got ${Y(r.f)}`),Hf(r.pos)||e(`${o}.pos must be [x, y, z], the world position of the object's base (a group: its root), got ${Y(r.pos)}`),Hy(e,o,r)})}function Wy(e,t,n,r,i){let a=/^object:(.+?)(?:\.(?:center|top|base))?$/s.exec(i)?.[1];if(a===void 0)return;let o=qp(n,a).flatMap(t=>[t,...n.objects[t].ancestors??[]].find(t=>Ll(e.objects?.[t]))??[]).find(t=>Fl(e.objects[t]));o&&t(`${r} "${i}": "${a}" moves with the follow entry objects.${o}; a follow entry rides a joint, landmark, prop or anchor point, or an object no follow entry moves`)}function Gy(e,t,n,r,i){Ap(e,t,n,`${r}.follow`,i.follow)&&Wy(e,t,n.scene,`${r}.follow`,i.follow),i.offset!==void 0&&!Hf(i.offset)&&t(`${r}.offset must be [x, y, z], metres along the record's own axes after aim (+Y along aim), got ${Y(i.offset)}`);let a=i.aim;if(a!==void 0&&a!==`face`&&a!==`up`){if(Array.isArray(a)){Vy(a)||t(`${r}.aim must be a non-zero world direction [x, y, z], got ${Y(a)}`);return}if(typeof a!=`string`||!/^[a-z]+:/.test(a))return t(`${r}.aim must be "face", "up", a world direction [x, y, z] or a point ref (toward it), where the record's +Y points; got ${Y(a)}`);Ap(e,t,n,`${r}.aim`,a)&&Wy(e,t,n.scene,`${r}.aim`,a)}}function Ky(e,t,n,r){return n===void 0||Number.isInteger(n)&&n>=0&&(!Number.isInteger(r)||n<r)?!0:(e(`${t} must be a whole frame 0..${Number.isInteger(r)?r-1:`frames-1`}, got ${Y(n)}`),!1)}function qy(e,t,n,r,{frames:i,scene:a,carry:o}){let s=Array.isArray(r.fall)?r.fall:[r.fall],c=new Set;s.length||e(`${n}.fall is an empty list; give ${zy} or a list of them`),s.forEach((s,l)=>{let u=Array.isArray(r.fall)?`${n}.fall[${l}]`:`${n}.fall`;if(!s||typeof s!=`object`||Array.isArray(s))return e(`${u} must be ${zy} (at: the frame it starts to fall), got ${Y(s)}`);for(let e of Object.keys(s))fp.includes(e)||t(`${u} has unknown field "${e}"${Wf(e,fp)}; a fall is ${zy}`);if(s.at===void 0)e(`${u}.at must be the whole frame it starts to fall`);else if(Ky(e,`${u}.at`,s.at,i)){c.has(s.at)&&e(`${u}.at = ${s.at}: another fall starts on that frame`),c.add(s.at);let t=r.grab??0,n=r.release;o&&s.at>=t&&(n===void 0||s.at<n)&&e(`${u}.at = ${s.at} is while it is in hand (grab ${t}..release ${n??`end`}); a carried object falls before its grab or from its release on`)}s.onto!==void 0&&Sp(e,a,`${u}.onto`,s.onto,{groups:!0}),s.bounce!==void 0&&!(Number.isFinite(s.bounce)&&s.bounce>=0&&s.bounce<=.6)&&e(`${u}.bounce must be 0..0.6 (the share of its landing speed it bounces back with; 0 lands dead), got ${Y(s.bounce)}`),s.tumble!==void 0&&typeof s.tumble!=`boolean`&&e(`${u}.tumble must be true (it rolls to rest on a stable face, the default) or false (it drops straight down as it was), got ${Y(s.tumble)}`)})}function Jy(e,t,n){n.visible!==void 0&&(typeof n.visible!=`string`||!n.visible)&&e(`${t}.visible must name a channel (shown above 0.5)`),n.level!==void 0&&(typeof n.level!=`string`||!n.level)&&e(`${t}.level must name a channel (the record's level 0..4: 0 dark, 1 as authored; it scales its light, glow and effect rate)`)}function Yy(e,t,{sk:n,scene:r,frames:i=e.frames,unknown:a=t}){for(let[o,s]of Object.entries(e.objects??{})){let c=`objects.${o}`,l=s?.prop===void 0?Fl(s)?`follow`:Vh(s)?`free`:Il(s)?`switch`:`hinge`:`carry`,u=dp[l];(l!==`switch`&&l!==`follow`||!r?.others?.[o])&&Sp(t,r,c,o,{groups:!0});for(let e of Object.keys(s??{}))!u.includes(e)&&(l!==`hinge`||e!==`keys`&&e!==`fall`)&&a(`${c} (${l}) has unknown field "${e}"${Wf(e,u)}; fields: ${u.join(`, `)}`);if(l===`follow`){Gy(e,t,{sk:n,scene:r},c,s),Jy(t,c,s);continue}if(l===`switch`){s.visible===void 0&&s.level===void 0&&t(`${c} needs visible or level (a channel): a switch shows, hides or dims "${o}" without moving it; a carry needs prop, a hinge pivot and channel`),Jy(t,c,s);continue}if(l===`free`){s.keys!==void 0&&Uy(t,a,c,s,i,!0),s.fall!==void 0&&qy(t,a,c,s,{frames:i,scene:r,carry:!1}),Jy(t,c,s);continue}if(l===`carry`){e.props?.[s.prop]||t(`${c}.prop "${s.prop}" is not in spec.props`);for(let e of[`at`,`along`])s[e]!==void 0&&!Hf(s[e])&&t(`${c}.${e} must be [d, l, n] along the palm axes, got ${Y(s[e])}`);Jy(t,c,s),Ky(t,`${c}.grab`,s.grab,i)&&Ky(t,`${c}.release`,s.release,i)&&s.grab!==void 0&&s.release!==void 0&&!(s.grab<s.release)&&t(`${c}: grab (${s.grab}) must come before release (${s.release})`),s.keys!==void 0&&Uy(t,a,c,s,i),s.fall!==void 0&&qy(t,a,c,s,{frames:i,scene:r,carry:!0});continue}(s?.keys!==void 0||s?.fall!==void 0)&&t(`${c}: a hinge turns by its channel "${s.channel}", keyed in spec.keys; keys and fall move an object with no pivot, axis or channel (C17), or a carried one (prop)`),Hf(s?.pivot)||t(`${c}.pivot must be [x, y, z] (world hinge point), got ${Y(s?.pivot)}`),s?.axis!==void 0&&(!Hf(s.axis)||Math.hypot(...s.axis)<1e-9)&&t(`${c}.axis must be a non-zero [x, y, z], got ${Y(s.axis)}`),(typeof s?.channel!=`string`||!s.channel)&&t(`${c}.channel must name the angle channel (degrees)`)}}var X=e=>{let t=Math.round(e*1e3)/1e3;return Object.is(t,-0)?0:t},Xy=e=>`[${e.map(e=>{let t=X(e);return t>0?`+${t}`:`${t}`}).join(`, `)}]`,Zy=[`near`,`above`,`moved`,`still`,`speed`],Qy={near:.05,above:0,moved:.05,still:.01},$y=new Set([`near`,`still`]),eb=new Set([`moved`,`still`,`speed`]),tb=e=>Zy.filter(t=>e?.[t]!==void 0),nb=(e,t)=>e.name??`goals[${t}]`,rb=(e,t)=>($y.has(t)?e.tol:e.by)??Qy[t],ib=(e,t)=>e.mode??(t===`speed`?`any`:`all`),ab=e=>!e.startsWith(`object:`)||/\.(center|top|base)$/.test(e)?e:`${e}.base`;function ob(e,t){let[,n,r]=/^object:(.+)\.(center|top|base)$/s.exec(ab(t))??[],i=qp(e,n).map(t=>e.objects[t]);if(!i.length)return null;let a=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0];for(let e of i)for(let t of[-1,1])for(let n of[0,2])for(let r of[-1,1]){let i=R(e.pos,G(e.R,[t*e.half[0],n*e.half[1],r*e.half[2]]));for(let e=0;e<3;e++)a[e]=Math.min(a[e],i[e]),o[e]=Math.max(o[e],i[e])}let s=[(a[0]+o[0])/2,(a[1]+o[1])/2,(a[2]+o[2])/2];return r===`top`?[s[0],o[1],s[2]]:r===`base`?[s[0],a[1],s[2]]:s}var sb=e=>e.moved??e.still,cb=(e,t,n=Array.isArray(t.at)?t.at[0]:t.at)=>sb(t).startsWith(`object:`)?ob(e.ctx.scene,sb(t)):Dp(e,n,sb(t));function lb(e,t,n){let r=Dp(e,n,t),i=e.fps??24;if(!r)return null;let a=Dp(e,n-1,t),o=Dp(e,n+1,t);if(a&&o)return H(z(o,a))*i/2;let s=a??o;return s?H(z(r,s))*i:null}function ub(e,t,n,r,i){if(n===`near`)return Op(e,r,t.near[0],t.near[1]);if(n===`above`){let n=Dp(e,r,t.above[0]),i=Dp(e,r,t.above[1]);return n&&i?n[1]-i[1]:null}if(n===`speed`)return lb(e,t.speed,r);let a=i&&Dp(e,r,ab(sb(t)));return a?H(z(a,i)):null}var db=(e,t,n)=>$y.has(e)?t-n:n-t,fb=e=>Math.max(1e-4,Math.round(e*1e4)/1e4);function pb(e,t,n,r,i){let a=rb(t,n),o=(n===`moved`||n===`still`)&&!sb(t).startsWith(`object:`),s=n===`moved`||n===`still`?cb(e.out,t,r):null,c=[];for(let o=Math.max(r,e.f0);o<=Math.min(i,e.last);o++){let r=ub(e.out,t,n,o,s);r!==null&&c.push({f:o,v:r,short:db(n,r,a)})}return{rows:c,from:o?r:void 0}}function mb(e,t){if(e.events.has(t))return e.events.get(t);if(e.visiting.has(t))return null;e.visiting.add(t);let n=e.goals[t],r=tb(n)[0],i=r&&hb(e,t),a;if(i&&!i.wait){let{rows:t}=pb(e,n,r,i.a,i.b);a=t.length?t.find(e=>e.short<=0)?.f??null:void 0}else a=i?.wait?null:void 0;return e.visiting.delete(t),e.events.set(t,a),a}function hb(e,t){let n=e.goals[t],[r,i]=Array.isArray(n.at)?n.at:[n.at,n.at];for(let a of[`after`,`before`]){if(n[a]===void 0)continue;let o=e.names.get(n[a]);if(o===void 0||o===t)return{wait:`${a} "${n[a]}" names no other goal`};let s=mb(e,o);if(s===void 0)return{skip:!0};if(s===null)return{wait:`waits for "${n[a]}" (${a}), which never holds`};if(a===`after`?r=Math.max(r,s+1):i=Math.min(i,s-1),r>i)return{wait:`no frames left ${a} "${n[a]}" (it holds first at f${s}; at is f${Array.isArray(n.at)?`${n.at[0]}-f${n.at[1]}`:n.at})`}}return{a:r,b:i}}function gb(e,t,n,r,i,a){let o=i?`f${n.f}, the best of f${i[0]}-f${i[1]}`:`f${n.f}`;return t===`near`?`${e}: ${X(n.v)} m at ${o} (needs <= ${r})`:t===`above`?`${e}: ${X(n.v)} m above at ${o} (needs >= ${r})`:t===`speed`?`${e}: ${X(n.v)} m/s at ${o} (needs >= ${r})`:t===`still`?`${e}: ${X(n.v)} m from ${a===void 0?`its scene pose`:`f${a}`} at ${o} (needs <= ${r})`:`${e}: moved ${X(n.v)} m${a===void 0?``:` from f${a}`} at ${o} (needs >= ${r})`}function _b(e,t,n){let r=e.f0??0;return hb({out:e,goals:t,names:new Map(t.map((e,t)=>[nb(e,t),t])),f0:r,last:r+(e.frames?.length??0)-1,events:new Map,visiting:new Set},n)}function vb(e,t){let n=[],r=[],i=e.f0??0,a={out:e,goals:t,names:new Map(t.map((e,t)=>[nb(e,t),t])),f0:i,last:i+(e.frames?.length??0)-1,events:new Map,visiting:new Set};return t.forEach((e,t)=>{let o=tb(e)[0];if(!o)return;let s=nb(e,t),c=rb(e,o),l=hb(a,t),u=Array.isArray(e.at)?e.at[0]:e.at;if(l.skip)return;if(l.wait){r.push({name:s,kind:o,ok:!1,value:null,at:null,need:c}),u>=i&&u<=a.last&&n.push({kind:`GOAL`,msg:`${s}: ${l.wait}`,frame:u-i,value:.01,limit:0});return}let{rows:d,from:f}=pb(a,e,o,l.a,l.b);if(!d.length)return;o===`moved`&&f!==void 0&&(d=[d.reduce((e,t)=>t.v>e.v?t:e)]);let p=ib(e,o)===`any`,m=Array.isArray(e.at)?l.a!==l.b:!1,h=d.reduce((e,t)=>(p?t.short<e.short:t.short>e.short)?t:e),g=h.short<=0;if(r.push({name:s,kind:o,ok:g,value:X(h.v),at:h.f,need:c}),!g)for(let e of p?[h]:d.filter(e=>e.short>0))n.push({kind:`GOAL`,msg:gb(s,o,e,c,p&&m?[l.a,l.b]:null,f),frame:e.f-i,value:fb(e.short),limit:0})}),{issues:n,results:r}}var yb=`{ name?, near | above | moved | still | speed, tol?, by?, at, mode?, after?, before? }`,bb=new Set([`near`,`still`]),xb=new Set([`above`,`moved`,`speed`]);function Sb(e,t){let n=Number.isFinite(t)&&t!==0?Math.abs(t):.05;return e===`speed`?`speed takes by (the point reaches by m/s): use by: ${n} (m/s), not tol`:e===`above`?`above takes by (a.y - b.y >= by, default 0): use by: ${n} for a at least ${n} m above b, or by: -${n} to let a sit up to ${n} m below b, not tol`:`moved takes by (the object moves >= by, default 0.05): use by: ${n} (metres), not tol`}var Cb=e=>typeof e==`string`&&e!==``&&!/^[a-z]+:/.test(e),wb=e=>[`moved`,`still`,`speed`].find(t=>Cb(e?.[t]));function Tb(e){return Array.isArray(e)&&e.some(wb)?e.map(e=>{let t=wb(e);return t?{...e,[t]:`object:${e[t]}`}:e}):e}function Eb(e,t,n,r,i=``){let a=e=>Number.isInteger(e);if(n===void 0)return e(`${t} needs at: a frame or [f0, f1] (absolute frames within 0..${r-1})`);let o=Array.isArray(n)?n:[n,n];if(!(o.length===2&&o.every(a)&&o[0]<=o[1]))return e(`${t}.at must be an integer frame or [f0, f1] with f0 <= f1, got ${Y(n)}`);(o[0]<0||o[1]>r-1)&&e(`${t}.at = ${Y(n)} is outside 0..${r-1} (spec.frames ${r})${o[1]>r-1?i:``}`)}function Db(e,t,n,r,i,a){let o=i[a];if(typeof o!=`string`)return t(`${r}.${a} must be an object id or a point ref (object:<id>[.center|.top|.base], prop:<prop>.<point>, joint:<Bone>, landmark:mouth, anchor:<name>), got ${Y(o)}`);Ap(e,t,n,`${r}.${a}`,o)&&a!==`speed`&&!o.startsWith(`object:`)&&(Number.isInteger(i.at)||Array.isArray(i.at)&&i.at[0]===i.at[1])&&t(`${r}.${a} "${o}" measures ${a===`moved`?`how far the point gets`:`how far the point strays`} from where it is at at[0], so at must be [f0, f1] with f0 < f1, got ${Y(i.at)}`)}function Ob(e,t,n,r,i,a){let o=`goals[${i}]`,s={sk:n.sk,scene:n.scene},c=n.unknown??t;if(!r||typeof r!=`object`||Array.isArray(r))return t(`${o} must be ${yb}, got ${Y(r)}`);for(let e of Object.keys(r))_p.includes(e)||c(`${o} has unknown field "${e}"${Wf(e,_p)} (fields: ${_p.join(`, `)})`);r.name!==void 0&&(typeof r.name!=`string`||!r.name.trim()?t(`${o}.name must be a non-empty string, got ${Y(r.name)}`):a.has(r.name)?t(`${o}.name "${r.name}" is already used by goals[${a.get(r.name)}]; goal names must differ`):a.set(r.name,i));let l=tb(r),u=l[0];if(l.length||t(`${o} needs one predicate: ${Zy.join(`, `)}`),l.length>1&&t(`${o} names ${l.join(` and `)}; a goal takes exactly one of ${Zy.join(`, `)} (split it into ${l.length} goals)`),l.length===1&&eb.has(u))Db(e,t,s,o,r,u);else if(l.length===1){let n=r[u];Array.isArray(n)&&n.length===2&&n.every(e=>typeof e==`string`)?n.forEach((n,r)=>Ap(e,t,s,`${o}.${u}[${r}]`,n)):t(`${o}.${u} must be [ref, ref] (two point refs), got ${Y(n)}`)}r.tol!==void 0&&(l.length===1&&!bb.has(u)?t(`${o}.tol applies to near and still; ${Sb(u,r.tol)}`):Number.isFinite(r.tol)&&r.tol>=0||t(`${o}.tol must be a number >= 0 (metres), got ${Y(r.tol)}`)),r.by===void 0?u===`speed`&&l.length===1&&t(`${o}.speed needs by: the speed the point must reach, in m/s (e.g. by: 2)`):l.length===1&&!xb.has(u)?t(`${o}.by applies to above, moved and speed; ${u} takes tol`):(!Number.isFinite(r.by)||u===`moved`&&r.by<0||u===`speed`&&r.by<=0)&&t(`${o}.by must be a ${u===`moved`?`number >= 0 (metres)`:u===`speed`?`number > 0 (m/s)`:`finite number (metres)`}, got ${Y(r.by)}`),r.mode!==void 0&&r.mode!==`all`&&r.mode!==`any`&&t(`${o}.mode must be "all" or "any", got ${Y(r.mode)}`),Eb(t,o,r.at,n.frames,n.past)}function kb(e,t){let n=new Map(e.map((e,t)=>[e&&typeof e==`object`?nb(e,t):`goals[${t}]`,t])),r=e.map((e,r)=>[`after`,`before`].flatMap(i=>{if(!e||typeof e!=`object`||e[i]===void 0)return[];let a=n.get(e[i]);return typeof e[i]!=`string`||a===void 0?(t(`goals[${r}].${i} must name another goal (its name, or goals[<i>] when it has none), got ${Y(e[i])}${typeof e[i]==`string`?Wf(e[i],[...n.keys()]):``}`),[]):a===r?(t(`goals[${r}].${i} names the goal itself; name the goal whose first met frame this one waits for`),[]):[a]})),i=e.map(()=>0),a=[],o=n=>{if(i[n]!==2){if(i[n]===1){let r=a.slice(a.indexOf(n)).map(t=>`"${nb(e[t],t)}"`);return t(`goals wait on each other through after/before: ${[...r,r[0]].join(` -> `)}; one of them must not wait`)}i[n]=1,a.push(n);for(let e of r[n])o(e);a.pop(),i[n]=2}};e.forEach((e,t)=>o(t))}function Ab(e,t,n){if(e.goals===void 0)return;if(!Array.isArray(e.goals))return t(`spec.goals must be an array of goals ${yb}, got ${Y(e.goals)}`);let r=new Map;e.goals.forEach((i,a)=>Ob(e,t,n,i,a,r)),kb(e.goals,t)}var jb=new Set([`l`,`r`]),Mb=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Nb(e,t,n,r){if(Mb(n))for(let i of Object.keys(n))r.includes(i)||e(`${t} has unknown field "${i}"${Vf(i,r)} (fields: ${r.join(`, `)})`)}function Pb(e,t,{sk:n,scene:r,unknown:i=t}){for(let[a,o]of Object.entries(e.anchors??{})){let s=`anchors.${a}`;if(/_[lr]$/.test(a)&&t(`${s}: an anchor name may not end in _l or _r (the weight channel w_${a}_l would read as anchor "${a.slice(0,-2)}"); the side goes on the weight channel, so name it "${a.slice(0,-2)}"`),!o||!cp[o.kind]){t(`${s}.kind must be one of ${Object.keys(cp).join(`, `)}, got ${Y(o?.kind)}`);continue}Nb(i,`${s} (${o.kind})`,o,[`kind`,...cp[o.kind]]);for(let e of[`p`,`offset`,`local`])o[e]!==void 0&&!Hf(o[e])&&t(`${s}.${e} must be [x, y, z], got ${Y(o[e])}`);(o.kind===`world`||o.kind===`body`)&&o.p===void 0&&t(`${s} (${o.kind}) needs p: [x, y, z]${o.kind===`body`?`, ${Lf.pole}`:``}`),o.kind===`bone`&&xp(t,n,s,o.bone),o.kind===`segment`&&(xp(t,n,`${s}.from`,o.from),xp(t,n,`${s}.to`,o.to),o.reach!==void 0&&!jb.has(o.reach)&&t(`${s}.reach must be "l" or "r"`)),o.kind===`object`&&Sp(t,r,s,o.object,{groups:!0})&&(o.grasp!==void 0&&!Mf.includes(o.grasp)&&t(`${s}.grasp must be one of ${Mf.join(`, `)}, got ${Y(o.grasp)}`),o.socket!==void 0&&r?.objects&&!vm(r,o.object,o.socket)&&t(`${s}.socket: "${o.object}" has no socket ${Y(o.socket)} (sockets: ${_m(r,o.object).map(e=>e.name).join(`, `)||`none`})`),o.socket!==void 0&&o.grasp===void 0&&t(`${s}.socket needs grasp (${Mf.join(`, `)}): the socket says how the hand takes it`)),o.kind===`person`&&!np(r,o.person,o.bone??``,0)&&t(`${s} (person) needs person: the id of another character with an installed take (people: ${rp(r)}) and bone: one of its joints, got ${Y(o.person)} ${Y(o.bone)}`),o.kind===`landmark`&&o.name!==`mouth`&&t(`${s}: the only landmark is "mouth", got ${Y(o.name)}`),o.kind===`prop`&&!e.props?.[o.prop]?.points?.[o.point]&&o.point!==`origin`&&t(`${s} needs prop point ${o.prop}.${o.point}, which spec.props does not define`)}}function Fb(e,t,{sk:n,unknown:r=t}){for(let[i,a]of Object.entries(e.props??{})){let e=`props.${i}`;Nb(r,e,a,lp),jb.has(a?.hand)||t(`${e}.hand must be "l" or "r", got ${Y(a?.hand)}`),!Array.isArray(a?.origin)||!a.origin.length?t(`${e}.origin must list one or more bones`):a.origin.forEach(r=>xp(t,n,`${e}.origin`,r));for(let[n,r]of Object.entries(a?.points??{}))Hf(r)||t(`${e}.points.${n} must be [d, l, n] along the palm axes, got ${Y(r)}`)}(e.fits??[]).forEach((i,a)=>{let o=`fits[${a}]`;Nb(r,o,i,up),jb.has(i?.side)||t(`${o}.side must be "l" or "r", got ${Y(i?.side)}`),e.anchors?.[i?.anchor]||t(`${o}.anchor "${i?.anchor}" is not in spec.anchors${Wf(String(i?.anchor),Object.keys(e.anchors??{}))}`);let s=i?.effector;s?.prop===void 0?Array.isArray(s?.joints)?s.joints.forEach(e=>xp(t,n,`${o}.effector`,e)):t(`${o}.effector must be { prop, point } or { joints: [bone, ...] }`):e.props?.[s.prop]?.points?.[s.point]||t(`${o}.effector ${s.prop}.${s.point} is not a point of spec.props`),i?.offset!==void 0&&!Hf(i.offset)&&t(`${o}.offset must be [x, y, z]`),i?.orient!==void 0&&typeof i.orient!=`boolean`&&t(`${o}.orient must be true or false (false: the hand takes no grip turn), got ${Y(i.orient)}`)})}function Ib(e,t,{frames:n,unknown:r=t,past:i=``}){(e.generators??[]).forEach((e,a)=>{let o=`generators[${a}]`;if(e?.type!==`walk`)return t(`${o}.type must be "walk", got ${Y(e?.type)}`);Nb(r,o,e,mp),(!Number.isInteger(e.f0)||e.f0<0||e.f0>n-1)&&t(`${o}.f0 must be an integer frame within 0..${n-1}, got ${Y(e.f0)}${e.f0>n-1?i:``}`),e.heading!==void 0&&!(Array.isArray(e.heading)&&e.heading.length===2&&e.heading.every(Number.isFinite))&&t(`${o}.heading must be [h0, h1] in degrees (${Lf.yaw}), got ${Y(e.heading)}`);for(let n of mp.slice(2))n!==`heading`&&e[n]!==void 0&&!Number.isFinite(e[n])&&t(`${o}.${n} must be a finite number, got ${Y(e[n])}`);e.steps!==void 0&&!(Number.isInteger(e.steps)&&e.steps>=1)&&t(`${o}.steps must be an integer >= 1, got ${Y(e.steps)}`),e.turnDistance!==void 0&&!(e.turnDistance>0)&&t(`${o}.turnDistance must be > 0 m, got ${Y(e.turnDistance)}`)})}function Lb(e,t,{sk:n,scene:r,frames:i,unknown:a=t,past:o=``}){let s=e.checks??{};for(let e of Object.keys(s))hp.includes(e)||a(`checks.${e} is not a check${Wf(e,hp)} (checks: ${hp.join(`, `)})`);let c=(e,n=()=>{})=>{let r=s[e],i=`{ ${gp[e].join(`, `)} }`;if(r!==void 0){if(!Array.isArray(r))return t(`checks.${e} must be an array of ${i}, got ${Y(r)}`);r.forEach((r,o)=>{if(!Mb(r))return t(`checks.${e}[${o}] must be ${i}, got ${Y(r)}`);Nb(a,`checks.${e}[${o}]`,r,gp[e]),n(r,o)})}},l=(e,n)=>{n!==void 0&&typeof n!=`string`&&(Array.isArray(n)&&n.length===2&&n.every(Number.isInteger)&&n[0]<=n[1]&&n[0]>=0&&n[1]<=i-1||t(`${e}.when must be a weight channel or [f0, f1] within 0..${i-1}, got ${Y(n)}${Array.isArray(n)&&n[1]>i-1?o:``}`))};c(`contacts`,(r,i)=>{Cp(e,t,n,`checks.contacts[${i}].point`,r.point),Cp(e,t,n,`checks.contacts[${i}].target`,r.target),l(`checks.contacts[${i}]`,r.when)}),c(`orient`,(r,i)=>{Cp(e,t,n,`checks.orient[${i}].from`,r.from),Cp(e,t,n,`checks.orient[${i}].to`,r.to),l(`checks.orient[${i}]`,r.when),r.along===`face`||r.along===`up`||Hf(r.along)||t(`checks.orient[${i}].along must be "face", "up" or [x, y, z]`)}),c(`below`,(e,r)=>{xp(t,n,`checks.below[${r}].joint`,e.joint),xp(t,n,`checks.below[${r}].ref`,e.ref),l(`checks.below[${r}]`,e.when)}),c(`clearance`,(e,n)=>{Sp(t,r,`checks.clearance[${n}]`,e.object),l(`checks.clearance[${n}]`,e.frames)}),c(`appear`,(r,i)=>{xp(t,n,`checks.appear[${i}].joint`,r.joint),e.anchors?.[r.anchor]||t(`checks.appear[${i}].anchor "${r.anchor}" is not in spec.anchors`)}),c(`supports`,(e,n)=>Sp(t,r,`checks.supports[${n}]`,e.object)),c(`allow`);for(let e of Object.keys(s.limits??{}))e in Dd||a(`checks.limits.${e} is not a QA limit${Wf(e,Object.keys(Dd))}`);let u=e.fix;if(u!==void 0&&u!==!1&&(typeof u!=`object`||!u))t(`spec.fix must be false or { reach, slide, penetration, self, retime }`);else for(let e of Object.keys(u||{}))Dy.includes(e)||a(`spec.fix.${e} is not a fix${Wf(e,Dy)} (fixes: ${Dy.join(`, `)})`)}function Rb(e,t,n){Pb(e,t,n),Fb(e,t,n),Yy(e,t,n),Ib(e,t,n),Lb(e,t,n),Ab(e,t,n)}var zb=12;function Bb(e){let t=new Set(e.channels??[]);for(let n of Object.values(e.objects??{}))for(let e of[n?.channel,n?.visible,n?.level])typeof e==`string`&&e&&t.add(e);let n=e.checks??{},r=e=>Array.isArray(e)?e.filter(e=>e&&typeof e==`object`):[];for(let e of[n.contacts,n.orient,n.below,n.clearance].flatMap(r))typeof e.when==`string`&&t.add(e.when);for(let e of r(n.appear))typeof e.channel==`string`&&t.add(e.channel);return t}function Vb(e,t,n,r){if(Ef.has(n)){if(!Hf(r))return e(`${t} ${n} must be [x, y, z] (3 finite numbers), got ${Y(r)}`);if(Df.has(n)){let i=Math.hypot(...r);if(i<1e-6)return e(`${t} ${n} = ${Y(r)} has no direction; a pole is a ${Lf.pole}`);n.startsWith(`knee`)&&r[2]<-.7*i&&e(`${t} ${n} = ${Y(r)} points backward; knees bend toward +z. A pole is a ${Lf.pole}`)}n.startsWith(`foot`)&&r[1]<.04&&e(`${t} ${n} y = ${r[1]} puts the ankle into the floor; foot_* is the ${Lf.foot}`);return}if(kf.has(n)){if(!r||typeof r!=`object`||Array.isArray(r))return e(`${t} ${n} must be { preset: weight }, presets ${jf.join(`, `)}; got ${Y(r)}`);for(let[i,a]of Object.entries(r))jf.includes(i)?Number.isFinite(a)&&a>=0&&a<=1||e(`${t} ${n}.${i} must be a weight within 0..1, got ${Y(a)}`):e(`${t} ${n} preset "${i}" is unknown${Wf(i,jf)} (presets: ${jf.join(`, `)})`);return}if(!Number.isFinite(r))return e(`${t} ${n} must be a finite number${n===`yaw`?` (degrees; ${Lf.yaw})`:n.startsWith(`fyaw`)?` (${Lf.fyaw})`:``}, got ${Y(r)}`);let i=If(n);i&&(r<i[1]||r>i[2])&&e(`${t} ${n} = ${r} is outside ${i[1]}..${i[2]} (${i[3]})`)}var Hb=e=>Array.isArray(e)?e:[],Ub=e=>Array.isArray(e)?e[1]:e;function Wb(e,t){let n=[...Hb(e.keys).map(e=>e?.f),...Hb(e.generators).map(e=>e?.f0)].filter(Number.isInteger),r=e.checks??{},i=[...[`contacts`,`orient`,`below`].flatMap(e=>Hb(r[e]).map(e=>Ub(e?.when))),...Hb(r.clearance).map(e=>Ub(e?.frames)),...Hb(e.goals).map(e=>Ub(e?.at))].filter(Number.isInteger),a=Math.max(t-1,...n,...i)+1;return`; set frames >= ${a}${Math.max(0,...n)+1>=a?` or frames: "auto"`:``}`}function Gb(e,t,n,r,i=``){if(e.keys!==void 0&&!Array.isArray(e.keys))return t(`spec.keys must be an array of { f, set, step? }`);let a=Object.keys(e.anchors??{}),o=Bb(e),s=[...Ef,...Of,...kf,...o,...a.flatMap(e=>[`w_${e}_l`,`w_${e}_r`])];(e.keys??[]).forEach((e,c)=>{let l=e?.src?e.src.startsWith(`keys[`)?e.src:`${e.src} key`:`keys[${c}]`;if(!e||typeof e!=`object`)return t(`${l} must be { f, set, step? }`);for(let t of Object.keys(e))op.includes(t)||r(`${l} has unknown field "${t}"${Vf(t,op)}; a key is { f, set, step? }`);if(!Number.isInteger(e.f))return t(`${l}.f must be an integer frame, got ${Y(e.f)}`);(e.f<0||e.f>n-1)&&t(`${l}.f = ${e.f} is outside 0..${n-1} (spec.frames ${n})${e.f>0?i:``}`);let u=`${l} (f${e.f})`;if(!e.set||typeof e.set!=`object`||Array.isArray(e.set))return t(`${u} needs set: { channel: value }`);for(let[n,r]of Object.entries(e.set)){let e=/^w_(.+)_([lr])$/.exec(n);e&&!a.includes(e[1])?t(`${u} sets ${n}, but there is no anchor "${e[1]}"${Wf(n,s)}`):e||Ef.has(n)||Of.has(n)||kf.has(n)?Vb(t,u,n,r):o.has(n)||n.endsWith(`_vis`)?Number.isFinite(r)||t(`${u} ${n} must be a finite number, got ${Y(r)}`):t(`${u} sets unknown channel "${n}"${Wf(n,s)}`)}for(let n of e.step??[])n in e.set||t(`${u} step names "${n}", which this key does not set`);e.step!==void 0&&!Array.isArray(e.step)&&t(`${u} step must be an array of channel names`)})}function Kb(e,t,n){if(e===void 0||e===!1)return;if(!e||typeof e!=`object`||Array.isArray(e))return t(`spec.flow must be false or { smooth?, lag? }, got ${Y(e)}`);for(let t of Object.keys(e))t!==`smooth`&&t!==`lag`&&n(`spec.flow has unknown field "${t}" (fields: smooth, lag)`);e.smooth!==void 0&&typeof e.smooth!=`boolean`&&t(`spec.flow.smooth must be true or false, got ${Y(e.smooth)}`);let r=e=>Number.isFinite(e)&&e>=0&&e<=6,i=e.lag;if(!(i===void 0||i===!1||r(i))){if(!i||typeof i!=`object`||Array.isArray(i))return t(`spec.flow.lag must be false, 0..6 frames or { spine?, head?, arms? }, got ${Y(i)}`);for(let[e,a]of Object.entries(i))[`spine`,`head`,`arms`].includes(e)?r(a)||t(`spec.flow.lag.${e} must be 0..6 frames, got ${Y(a)}`):n(`spec.flow.lag has unknown field "${e}" (fields: spine, head, arms)`)}}function qb(e,{sk:t,scene:n,lenient:r=!1}={}){let i=[],a=e=>{i.length<zb&&i.push(e)},o=r?()=>{}:a;if(!e||typeof e!=`object`)throw Error(`MOTION_SPEC_INVALID: spec must be an object`);e.schema!==`cozyclay.motion-spec.v1`&&a(`spec.schema must be "cozyclay.motion-spec.v1", got ${Y(e.schema)}`);for(let t of Object.keys(e))ap.includes(t)||o(`spec.${t} is not a spec field${Wf(t,ap)} (fields: ${ap.join(`, `)})`);e.fps!==void 0&&e.fps!==24&&a(`spec.fps must be 24, the timeline rate, got ${Y(e.fps)}`),Kb(e.flow,a,o);let s=e.frames;(!Number.isInteger(s)||s<1||s>2e4)&&a(`spec.frames must be an integer 1..20000 or "auto", got ${Y(s)}`);let c=Number.isInteger(s)?Wb(e,s):``;if(Gb(e,a,Number.isInteger(s)?s:2e4,o,c),Rb(e,a,{sk:t,scene:n,frames:Number.isInteger(s)?s:2e4,lenient:r,unknown:o,past:c}),i.length)throw Error(`MOTION_SPEC_INVALID: ${i.join(`
10
+ `)}${i.length>=zb?`
11
+ (more problems not listed)`:``}`)}function Jb(e,t,n){let{s:r,diag:i,c:a}=e.frames[t],[o,s]=n.split(/:(.*)/s);if(o===`joint`)return r.P[e.ctx.sk.index[s]];if(o===`prop`){let[e,t]=s.split(`.`);return i.props?.[e]?.[t]??null}if(o===`anchor`)return Dm(e.ctx,s,r,i,a);throw Error(`MOTION_SPEC_INVALID: check point "${n}"`)}var Yb=(e,t,n)=>Array.isArray(n)?t+(e.f0??0)>=n[0]&&t+(e.f0??0)<=n[1]:!n||(e.frames[t].c[n]??0)>.99;function Xb(e,t,n){return n===`up`?[0,1,0]:n===`face`?Ls(e.ctx.sk,e.frames[t].s,e.ctx.sk.index.Head,[0,0,1]):U(n)}function Zb(e,t={}){let n=[],r=e.frames.length,i=e.ctx.sk.index,a=(e,t,r,i,a)=>n.push({kind:e,msg:t,frame:r,value:+i.toFixed(4),limit:a});for(let n=0;n<r;n++){for(let r of t.contacts??[])if(Yb(e,n,r.when)){let t=Jb(e,n,r.point),i=Jb(e,n,r.target);if(!t||!i)continue;let o=H(z(t,i));o>(r.tol??.01)&&a(`CONTACT`,`${r.name}: ${(o*100).toFixed(1)} cm apart`,n,o,r.tol??.01)}for(let r of t.orient??[])if(Yb(e,n,r.when)){let t=Jb(e,n,r.from),i=Jb(e,n,r.to);if(!t||!i)continue;let o=V(U(z(i,t)),Xb(e,n,r.along));o<(r.minCos??.64)&&a(`ORIENT`,`${r.name}: cos ${o.toFixed(2)}`,n,o,r.minCos??.64)}for(let r of t.below??[])if(Yb(e,n,r.when)){let{P:t}=e.frames[n].s,o=t[i[r.ref]][1]-t[i[r.joint]][1];o<(r.min??.08)&&a(`BELOW`,`${r.name}: ${r.joint} only ${(o*100).toFixed(1)} cm below ${r.ref}`,n,o,r.min??.08)}for(let r of t.clearance??[])if(Yb(e,n,r.frames)){let t=e.objectsAt(n)[r.object],o=Tu.find(e=>e[0]===r.part);if(!t||!o)continue;let{P:s}=e.frames[n].s,c=Math.min(...Eu(s[i[o[1]]],s[i[o[2]]]).map(e=>Du(e,t)))-o[3];c<r.min&&a(`CLEARANCE`,`${r.name}: ${(c*100).toFixed(1)} cm`,n,c,r.min)}}for(let n of t.appear??[])for(let t=1;t<r;t++){if((e.frames[t-1].c[n.channel]??0)>.5==(e.frames[t].c[n.channel]??0)>.5)continue;let r=H(z(Jb(e,t,`joint:${n.joint}`),Jb(e,t,`anchor:${n.anchor}`)));r>(n.tol??.035)&&a(`APPEAR`,`${n.name}: switches with the hand ${(r*100).toFixed(1)} cm from ${n.anchor}`,t,r,n.tol??.035)}return n}var Qb=/^(.+): [\d.]+ cm off its keys$/,$b={twist:`twist about the forearm`,flex:`flex`,dev:`deviation (+ toward the thumb)`};function ex(e,t){let n=e.objects[t]??Gl(e)[t];return qp(e,t).flatMap(t=>{let r=e.objects[t],i=J(n,r),[a,o,s]=r.half;return[-a,a].flatMap(e=>[0,2*o].flatMap(t=>[-s,s].map(n=>R(i.pos,G(i.R,[e,t,n])))))})}function tx(e,t,n){let{scene:r}=e.ctx,i=e.f0??0;for(let[a]of dh(e.ctx.spec)){let o=ch(e,a),s=ex(r,a);if(s.length)for(let r=Math.max(i,Math.ceil(o.t[0]));r<=Math.min(i+e.frames.length-1,Math.floor(o.t[o.t.length-1]));r++){let c=lh(o,r),l=cm(e,a,r),u=Math.max(...s.map(e=>hs(R(c.pos,G(c.R,e)),R(l.pos,G(l.R,e)))));u>t.reach&&n(`REACH`,`${a}: ${(u*100).toFixed(1)} cm off its keys`,r-i,u,t.reach)}}}function nx(e,t){let n=Qb.exec(t.subject)?.[1],r=e.spec?.objects?.[n];if(!r?.keys?.length)return null;let i=t.worstFrame,a=e.spec.props?.[r.prop]?.hand,o=e.fr(i).diag[`hold_${a}`]??{},s=r.keys.reduce((e,t,n)=>Math.abs(t.f-i)<Math.abs(r.keys[e].f-i)?n:e,0),c=Object.entries(Fc).filter(([e,[t,n]])=>o[e]<t||o[e]>n).map(([e,[t,n]])=>`the wrist ${$b[e]} needs ${Math.round(o[e])}deg (limit ${t}..${n})`);c.length&&(c[c.length-1]+=` after the elbow swung ${Math.round(o.swivel??0)}deg and the forearm turned`);let l=o.miss>.005&&o.fold,u=l?`the grip is ${(o.miss*100).toFixed(1)} cm inside the forearm's reach (the elbow would fold ${Math.round(o.fold)}deg; it bends to 145deg and stops at 150deg)`:`the arm is ${(o.miss*100).toFixed(1)} cm short`,d=[...o.miss>.005?[u]:[],...c],f=r.keys[s].aim&&r.keys[s].roll===void 0?``:`; an aim key without roll takes the roll the arm holds most easily`;return{cause:`objects.${n}.keys[${s}] f${r.keys[s].f}`,hint:`${n} at f${i}: ${d.length?d.join(`, `):`the hand cannot hold it there`}; ${l?`key a pose farther from the shoulder, or turn or move the body away from it`:`key a pose nearer the hand, or bring the body to it`} (root, yaw, spine_yaw)${f}`}}var rx=e=>Math.round(e*10)/10,ix=e=>Math.round(e*100)/100,ax=`held: per key, deg = the drawn +Y off the asked one (aim, or rot's +Y), cm = the drawn base off pos, got = the drawn +Y (when 1 deg off or more), rot = what an aim key used`;function ox(e){let t=dh(e.ctx.spec);return t.length?Object.fromEntries(t.map(([t,n])=>{let r=ch(e,t);return[t,[...n.keys].sort((e,t)=>e.f-t.f).map((n,i)=>{let a=cm(e,t,Math.round(r.t[i])),o=[a.R[0][1],a.R[1][1],a.R[2][1]],s=rx(ks(n.aim?U(n.aim):G(Os(r.q[i]),[0,1,0]),o));return{f:n.f,deg:s,cm:rx(hs(n.pos,a.pos)*100),...s>=1?{got:o.map(ix)}:{},...n.aim?{rot:r.rots[i]}:{}}})]})):null}var sx=3,cx=e=>R(e.pos,G(e.R,[0,e.half[1],0])),lx=(e,t)=>[e[0][t],e[1][t],e[2][t]];function ux(e,t,n=null){let r=z(cx(e),cx(t)),i=[0,1,2].map(t=>lx(e.R,t)),a=[0,1,2].map(e=>lx(t.R,e)),o=[...i,...a,...i.flatMap(e=>a.map(t=>ms(e,t)))],s={depth:1/0,axis:[0,1,0]};for(let c of o){if(H(c)<1e-6)continue;let o=U(c),l=(e,t)=>t.reduce((t,n,r)=>t+Math.abs(V(n,o))*e.half[r],0),u=l(e,i)+l(t,a);if(u-Math.abs(V(r,o))<=0)return{depth:u-Math.abs(V(r,o)),axis:o};let d=V(n??r,o)<0?B(o,-1):o,f=u-V(r,d);f<s.depth&&(s={depth:f,axis:d})}return s}var dx=(e,t,n,r)=>{let i=n===`l`?`Left`:`Right`,a=B(R(t.P[e.index[`${i}HandIndex2`]],t.P[e.index[`${i}HandMiddle2`]]),.5);return r.some(e=>Du(a,e)<=0)},fx=(e,t,n)=>!t.visible||(e.baked?.[t.visible]?.[n]??0)>.5,px=(e,t,n)=>qp(e.ctx.scene,t).map(t=>({...e.ctx.scene.objects[t],...rm(e,t,n)}));function mx(e,t,n){let{sk:r,spec:i}=e.ctx,a=e.frames[n-(e.f0??0)];if(!a)return null;let o=Rl(r,i,a.s,i.objects[t]);return Math.max(0,Math.min(...px(e,t,n).map(e=>Du(o,e))))}function hx(e,t,n){let r=px(e,t,n);if(!r.length)return null;let i=Math.min(...r.map(e=>e.pos[1]-Math.abs(e.R[1][0])*e.half[0]-Math.abs(e.R[1][2])*e.half[2])),a=B(r.map(cx).reduce((e,t)=>R(e,t),[0,0,0]),1/r.length),o=[a[0],i-.01,a[2]],s=null;for(let[t,r]of Object.entries(e.ctx.objectsAt(n))){if(r.carried||!r.half)continue;let e=Du(o,r);e<=.02&&(!s||e<s[1])&&(s=[t,e])}return s?.[0]??null}function gx(e,t,n){let r=Object.entries(t.ctx.spec.objects??{}).filter(([,e])=>Pl(e));if(!r.length)return[];let i=n.checks??{},a={...Dd,...i.limits},o=i.allow,s=[],c=t.f0??0,l=e.index,u=(e,t,n,r,i)=>s.push({kind:e,msg:t,frame:n,value:+r.toFixed(4),limit:i}),d=(e,t)=>e.reduce((e,n)=>t.reduce((e,t)=>e??Ad(o,n,t),e),null)??a.allow;for(let[i,o]of r){let[r,s]=Zp(t,o),f=n.props?.[o.prop]?.hand,p=new Set([`hand_${f}`,`farm_${f}`]);if(o.grab!==void 0&&r>0&&t.frames[r-c]&&fx(t,o,r-1)){let e=mx(t,i,r);e>a.grab&&u(`GRAB`,`${i}: hand ${(e*100).toFixed(1)} cm from it at grab`,r-c,e,a.grab)}let m=o.grab===void 0?null:hx(t,i,r),h=e=>Math.abs(e-r)<=sx||o.release!==void 0&&Math.abs(e-s)<=sx;for(let n=0;n<t.frames.length;n++){let a=n+c,s=lm(t,i,a);if(!s||!fx(t,o,a))continue;let f=s.map(e=>e.id),g=s.map(e=>[e,cx(e),H(e.half)]),{s:_}=t.frames[n],v=Object.entries(t.frames[n].diag).filter(([t,n])=>/^hold_[lr]$/.test(t)&&n?.second===i&&(n.w>=.5||dx(e,_,t.slice(-1),s))).map(([e])=>`hand_${e.slice(-1)}`);for(let[e,t,r,a]of Tu){if(p.has(e)||v.includes(e))continue;let o=_.P[l[t]],s=_.P[l[r]],c=B(R(o,s),.5),m=a+hs(o,s)/2,h=d([e],[i,...f]),y=null,b=-1/0;for(let[e,t,n]of g)m-(hs(c,t)-n)<=h||(y??=Eu(o,s),b=Math.max(b,a-Math.min(...y.map(t=>Du(t,e)))));b>h&&u(`COLLIDE`,`${e} x ${i}`,n,b,h)}if(!(a<r))for(let[e,r]of Object.entries(t.objectsAt(n))){if(!r.half||r.ignore||e===m&&h(a))continue;let t=d([i,...f],[e]),o=cx(r),s=H(r.half),c=-1/0;for(let[e,n,i]of g)hs(n,o)<i+s+t&&(c=Math.max(c,ux(e,r).depth));c>t&&u(`COLLIDE`,`${i} x ${e}`,n,c,t)}}}return tx(t,a,u),s}var _x=.5,vx=1,yx=90,bx={twist:1-Lc,flex:1,dev:1},xx=(e,t)=>t[e].map(t=>t*bx[e]),Sx=`wrist: deg on the frames a hand holds (a fit, a carry or a grip on); flex + toward the palm, dev + radial / - ulnar, twist at the wrist joint; [min, f, max, f], frames past the comfortable range and at the limit; grip: the grip a keyed carry of a thin body keeps (grip-choice.js), cost [it, today's] (comfort-priced wrist, reach and body over the keys); elevation [max deg, f] of the upper arm (90 level), raised: frames the elbow is over the shoulder`;function Cx(e,t,n,r){let{diag:i}=e.frames[n],a=e.baked??{};if((i[`hold_${t}`]?.w??0)>_x||(i[`grip_${t}`]?.w??0)>_x)return!0;for(let n of e.ctx.spec.fits??[])if(n.side===t&&(a[`w_${n.anchor}_${t}`]?.[r]??0)>_x)return!0;return Object.keys(e.ctx.spec.objects??{}).some(n=>e.ctx.spec.objects[n]?.prop&&um(e,n,r)===t)}function wx(e,t){let n=e.index,r=e.restWorldRot,i=t.f0??0,a={};for(let[o,s]of[[`Left`,`l`],[`Right`,`r`]]){let c=n[`${o}Hand`],l=n[`${o}ForeArm`],u=n[`${o}Arm`],d={frames:0,past:0,limit:0,raised:0};t.frames.forEach(({s:n},a)=>{let f=a+i;if(!Cx(t,s,a,f))return;let p=B(z(n.P[c],n.P[l]),1/Math.max(1e-9,H(z(n.P[c],n.P[l])))),m=W(n.R[l],W(K(r[l]),r[c])),h=Xc(m,n.R[c],p,G(W(m,K(n.R[c])),Xs(e,n,o).l));d.frames++;for(let e of[`flex`,`dev`,`twist`]){let t=Math.round(h[e]),n=d[e];d[e]=n?[Math.min(n[0],t),t<n[0]?f:n[1],Math.max(n[2],t),t>n[2]?f:n[3]]:[t,f,t,f]}let g=(e,t)=>[`flex`,`dev`,`twist`].some(n=>{let[r,i]=xx(n,e);return h[n]<r+t||h[n]>i-t});g(Ic,-1)&&d.past++,g(Fc,vx)&&d.limit++;let _=z(n.P[l],n.P[u]),v=Math.round(Math.acos(Math.max(-1,Math.min(1,-_[1]/Math.max(1e-9,H(_)))))*180/Math.PI);(!d.elevation||v>d.elevation[0])&&(d.elevation=[v,f]),v>yx&&d.raised++}),d.frames&&(a[`hand_${s}`]=d)}for(let e of t.ctx.hold?.grips?.()??[])a[`hand_${e.hand}`]&&(a[`hand_${e.hand}`].grip={object:e.id,chose:e.name,cost:[e.cost,e.today]});return Object.keys(a).length?a:null}var Tx=.5,Ex=.5,Dx=[`flex`,`dev`,`twist`],Ox={l:`Left`,r:`Right`},kx={flex:e=>e>=0?`flex`:`extension`,dev:e=>e>=0?`radial deviation`:`ulnar deviation`,twist:()=>`twist`};function Ax(e){let t=null;for(let n of Dx){let[r,i]=Fc[n],a=e[n],o=a>=0?i:r,s=a>=0?a-i:r-a;(!t||s>t.past)&&(t={axis:n,value:a,edge:o,past:s})}return t}function jx(e,t,n,r){let{s:i,diag:a}=t.frames[r],o=a[`hold_${n}`];if((o?.w??0)>Ex)return o;let s=Ox[n],c=e.index,l=c[`${s}Hand`],u=c[`${s}ForeArm`],d=e.restWorldRot,f=B(z(i.P[l],i.P[u]),1/Math.max(1e-9,H(z(i.P[l],i.P[u])))),p=W(i.R[u],W(K(d[u]),d[l]));return Xc(p,i.R[l],f,G(W(p,K(i.R[l])),Xs(e,i,s).l))}function Mx(e,t){let n=[],r=t.f0??0;for(let i of[`l`,`r`])t.frames.forEach((a,o)=>{if(!Cx(t,i,o,o+r))return;let s=Ax(jx(e,t,i,o));if(s.past<=Tx)return;let c=Math.abs(s.edge);n.push({kind:`WRIST`,msg:`hand_${i} ${kx[s.axis](s.value)} ${Math.round(Math.abs(s.value))}deg (limit ${Math.round(c)})`,frame:o,value:+Math.abs(s.value).toFixed(2),limit:c})});return n}function Nx(e,t){let n=/^hand_([lr]) /.exec(t.subject)?.[1];if(!n)return null;let r=t.worstFrame,i=`at f${r}${t.count>1?` (f${t.first}-f${t.last}, ${t.count} frames)`:``}`,a=Math.round(e.out.ctx?.swivel?.[n]?.get(r)??0);if(Math.abs(a)>=1)return{cause:`fix.self elbow turn ${a}deg at f${r}`,hint:`${t.subject} ${i}: fix.self turned the elbow ${a} deg to keep the arm out of the body and the hand kept its turn, so the wrist took it; key elbow_${n} (the elbow pole) or the hand's target so the arm clears the body without the turn`};let o=(e.out.frames[e.rel(r)]?.diag[`hold_${n}`]?.w??0)>Ex&&Object.keys(e.spec.objects??{}).find(t=>e.spec.props?.[e.spec.objects[t]?.prop]?.hand===n),s=e.fr(r).c.spine_pitch??0;return{cause:o?`objects.${o}.keys near f${r}`:e.cause(`armw_${n}`,r),hint:`${t.subject} ${i}: the arm cannot turn the hand that far from where the body stands; lean the upper body over the hand (spine_pitch ${Math.round(s)} at f${r}: try ${Math.round(s+20)}) or bring the body to it (root), ${o?`or key ${o} so the hand need not bend that far (its aim or pos)`:`or move what the hand reaches`}; repair: { rounds } tries leans of 10-30 deg here and keeps one that helps`}}var Px={WRIST:Nx},Fx=2.2;function Ix(e,t){let n=Math.max(0,Math.min(e.frames-1,t))*e.names.length,r=t=>{let r=e.names.indexOf(t),i=(n+r)*3;return[e.P[i],e.P[i+1],e.P[i+2]]};return Tu.map(([e,t,n,i])=>[e,r(t),r(n),i])}function Lx(e,t,n={}){let r=Object.entries(t.ctx?.scene?.people??{}),i=[];if(!r.length)return i;let a=e.index,o=t.f0??0,s={...Dd,...n.limits}.allow;return t.frames.forEach(({s:e},t)=>{let c=t+o,l=Tu.map(([t,n,r,i])=>[t,e.P[a[n]],e.P[a[r]],i]);for(let[o,u]of r){if(!Tu.every(([,e,t])=>u.names.includes(e)&&u.names.includes(t)))continue;let r=Ix(u,c),d=r.find(e=>e[0]===`hips`)[1];if(!(hs(e.P[a.Hips],d)>Fx))for(let[e,a,c,u]of l){let l=Math.max(...r.map(([,e,t,n])=>u+n-Ou(a,c,e,t))),d=Ad(n.allow,e,`person:${o}`)??s;l>d&&i.push({kind:`PERSON`,msg:`${e} x person:${o}`,frame:t,value:+l.toFixed(4),limit:d})}}}),i}var Rx=(e,t)=>` (${e}the knee would fold ${Math.round(t)}deg; it bends to 150deg and stops at 160deg)`;function zx(e,t,n,r,i){let a=t===`l`?`Left`:`Right`,o=e.fr(n).s.P,s=o[e.I[`${a}UpLeg`]],c=o[e.I[`${a}Leg`]],l=o[e.I[`${a}Foot`]],u=z(i,s),d=zs(hs(s,c),hs(c,l),150)+.002,f=B(U(u),Math.max(0,d-H(u))),p=u[1]+Math.sqrt(Math.max(0,u[1]*u[1]-V(u,u)+d*d));return u[1]<0?{cause:e.cause(`root`,n),hint:`root: raise ${X(p)} m at f${n}${r}, or key foot_${t} farther from the hip (wider or more forward)`,fix:{channel:`root`,f:n,delta:[0,p,0]}}:{cause:e.cause(`foot_${t}`,n),hint:`foot_${t}: move ${Xy(f)} m out from the hip at f${n}${r}, or raise root ${X(p)} m`,fix:{channel:`foot_${t}`,f:n,delta:f}}}var Bx=.003,Vx=.25,Hx=e=>/(^|_)l$|^Left/.test(e)?`l`:/(^|_)r$|^Right/.test(e)?`r`:null;function Ux(e,t,n,r,i){let a=e.spec.anchors?.[t],o=e=>`/anchors/${t}/${e}`;if(a?.kind===`world`)return{path:o(`p`),delta:r};if(a?.kind===`body`)return{path:o(`p`),delta:G(Ss(-(e.fr(n).c.yaw??0)),r)};if([`bone`,`segment`,`prop`,`person`].includes(a?.kind))return{path:o(`offset`),delta:r};if(a?.kind!==`object`)return;let s=e.fr(n),c=Am(e.out.ctx,a,t,{...s,diag:{...s.diag,frame:n}},i);return{path:o(`local`),delta:G(K(c.R),r)}}function Wx(e,t,n,r,i=``){let a=/^prop_(.+)$/.exec(t),o=a?e.spec.props?.[a[1]]?.hand:Hx(t),s,c,l,u=r;if(/^(hand|farm|uarm)_/.test(t)||a){let t=e.hand(o,n);s=t.label,l=t.anchor?Ux(e,t.anchor,n,r,o):t.ch===`hand_${o}`?{channel:t.ch,f:n,delta:r}:void 0;let i=t.anchor&&e.spec.anchors[t.anchor]?.kind===`object`?e.spec.anchors[t.anchor].object:null;i&&l&&(s=`anchors.${t.anchor}.local (a point on ${i}, in ${i}'s axes; ${i} stays)`,u=l.delta),c=t.anchor?`anchor ${t.anchor}${t.fit===null?``:` (fits[${t.fit}])`} via ${e.cause(t.ch,n)}`:e.cause(t.ch,n)}else/^(shin|foot|sole)_/.test(t)?(s=`foot_${o}`,c=e.cause(s,n),l={channel:s,f:n,delta:r}):(s=`root`,c=e.cause(`root`,n),l={channel:`root`,f:n,delta:r,.../^root held since /.test(c)?{hold:!0}:{}});return/ (walk|walkTo) /.test(` ${c}`)&&/step|start|end/.test(c)&&!/^anchor/.test(s)?{cause:c,hint:`walk path: ${s} needs ${Xy(r)} m at f${n}${i}; change that walk's heading/turnDistance/step (or give one a { range: [lo, hi] })`}:{cause:c,hint:`${s}: move ${Xy(u)} m at f${n}${i}`,fix:l}}var Gx=e=>Tu.find(t=>t[0]===e);function Kx(e,t,n,r){let[,i,a]=Gx(n),{s:o}=e.fr(t),s=Eu(o.P[e.I[i]],o.P[e.I[a]]),c=s.map(e=>Du(e,r)),l=Math.min(...c);return{p:s[c.indexOf(l)],n:Nu(s[c.indexOf(l)],r),d:l}}function qx(e,t,n,r,i){let a=t.worstFrame,o=e.out.objectsAt(e.rel(a))[r];if(!o||!Gx(n))return null;let{n:s}=Kx(e,a,n,o);return Wx(e,n,a,B(s,i),` (out of ${r})`)}function Jx(e,t,n,r){let i=t.worstFrame,a=e.out.objectsAt(e.rel(i))[r];if(!a)return null;let o=wd(e.sk,e.fr(i).s,n.endsWith(`_l`)?`Left`:`Right`),s=Td(o,a),c=t.worst-t.limit+Bx;if(!(s.side>0))return s.topAt?Wx(e,n,i,B(Nu(s.topAt,a),c),` (out of ${r}'s top)`):null;let l=Math.max(...o.filter(e=>Du(e,a)<0).map(e=>2*a.half[1]-G(K(a.R),z(e,a.pos))[1]))+Bx,u=B(Nu(s.sideAt,a),c);if(l>Vx)return Wx(e,n,i,u,` (out of ${r}'s side)`);let d=Wx(e,n,i,G(a.R,[0,l,0]),` (over ${r}'s top; its ${t.worst.toFixed(3)} m is through a side)`);return d.hint+=/^walk path/.test(d.hint)?`; a higher lift raises the swing`:`; or move ${Xy(u)} m out of that side`,d}function Yx(e,t,n,r,i,a){return Wx(e,n,t.worstFrame,B(U(r),i),` (away from the ${a})`)}function Xx(e,t,n){let{s:r,diag:i}=e.fr(t),a=e.I;if(n.startsWith(`hand_`)){let e=n.endsWith(`l`)?`Left`:`Right`;return Eu(r.P[a[`${e}Hand`]],r.P[a[`${e}HandMiddle3`]],5)}return Object.entries(i.props?.[n.slice(5)]??{}).filter(([e,t])=>Array.isArray(t)&&e!==`origin`).map(([,e])=>e)}var Zx={COLLIDE(e,t){let[,n,r]=/^(\S+) x (.+)$/.exec(t.subject)??[];if(/^foot_[lr]$/.test(n??``))return Jx(e,t,n,r);let i=qx(e,t,n,r,t.worst-t.limit+Bx);return i&&/^(hand|farm)_/.test(n)&&!e.spec.fix?.penetration&&t.worst-t.limit<=.05&&(i.hint+=`; or fix.penetration: 0.02 pushes shallow hand hits out`,e.spec.fix!==!1&&(i.fix={path:`/fix/penetration`,value:.02})),i},PERSON(e,t){let[,n,r]=/^(\S+) x person:(.+)$/.exec(t.subject)??[],i=Gx(n),a=e.out?.ctx?.scene?.people?.[r];if(!i||!a)return null;let o=t.worstFrame,{s}=e.fr(o),c=Eu(s.P[e.I[i[1]]],s.P[e.I[i[2]]]),l=Ix(a,o).map(([e,t,n,r])=>{let a=z(n,t),o=Math.max(V(a,a),1e-12);return c.map(n=>{let s=R(t,B(a,gs(V(z(n,t),a)/o,0,1)));return{other:e,p:n,q:s,depth:i[3]+r-H(z(n,s))}}).reduce((e,t)=>t.depth>e.depth?t:e)}).reduce((e,t)=>t.depth>e.depth?t:e),u=Wx(e,n,o,B(H(z(l.p,l.q))>1e-6?U(z(l.p,l.q)):U([l.p[0]-l.q[0]||1,0,l.p[2]-l.q[2]]),t.worst-t.limit+Bx),` (out of ${a.name}'s ${l.other})`);return{...u,hint:`${u.hint}; or, for a touch you mean, checks.allow [{ part: "${n}", object: "person:${r}", depth: ${X(t.worst+Bx)} }]`}},CLEARANCE(e,t){let n=(e.spec.checks?.clearance??[]).find(e=>t.subject.startsWith(`${e.name}:`));return n&&qx(e,t,n.part,n.object,n.min-t.worst+Bx)},GROUND(e,t){let n=t.subject.startsWith(`Left`)?`l`:`r`,r=t.worstFrame,i=e.fr(r).c,a=e.fr(r).diag[`leg_fold_${n}`];if(a)return zx(e,n,r,Rx(`the sole is in the floor because the knee is on its stop: `,a),i[`foot_${n}`]);let o=i[`fpitch_${n}`]?`, or less fpitch_${n} (now ${X(i[`fpitch_${n}`])} deg; + lifts the heel)`:``;return{cause:e.cause(`foot_${n}`,r),hint:`foot_${n}: raise ${X(t.worst+.001)} m at f${r} (foot_* is the ankle; it stands ${Au(e.sk)} m above the floor)${o}`,fix:{channel:`foot_${n}`,f:r,delta:[0,t.worst+.001,0]}}},FACE(e,t){let n=t.subject.replace(/ into head$/,``),r=t.worstFrame,{s:i}=e.fr(r),a=Is(i,e.I.Head,e.sk.landmarks.headCentre);return Yx(e,t,n,z(Xx(e,r,n).reduce((t,n)=>ku(e.sk,i,n)>ku(e.sk,i,t)?n:t),a),t.worst-t.limit+Bx,`head`)},BODY(e,t){let[,n,r]=/^(\S+) into (\S+)$/.exec(t.subject)??[],i=Gx(r),a=t.worstFrame,{s:o}=e.fr(a),s=/^(hand|farm|uarm)_([lr])$/.exec(n??``),c=s&&vc(e.sk);if(c){let i=e.I[`${s[2]===`l`?`Left`:`Right`}${{hand:`Hand`,farm:`ForeArm`,uarm:`Arm`}[s[1]]}`],l=Pc(c,e.sk,o,i),u=l.p&&Cc(c,o,l.p,c.skip.get(i));if(u){let i=Wx(e,n,a,B(u,t.worst-t.limit+Bx),` (out of the ${r})`);return s[1]!==`hand`&&(i.hint+=`; or turn elbow_${s[2]} away from the ${r}`),i}}if(!i)return null;let l=o.P[e.I[i[1]]],u=o.P[e.I[i[2]]],d=z(u,l),f=e=>R(l,B(d,gs(V(z(e,l),d)/V(d,d),0,1))),p=Xx(e,a,n).reduce((e,t)=>H(z(t,f(t)))<H(z(e,f(e)))?t:e);return Yx(e,t,n,z(p,f(p)),t.worst-t.limit+Bx,`torso`)},SELF(e,t){let n=t.worstFrame,{s:r}=e.fr(n),i=r.P,a=e.I;if(t.subject===`hands overlap`){let r=U(z(i[a.LeftHand],i[a.RightHand])),o=(t.worst-t.limit+Bx)/2,s=Wx(e,`hand_l`,n,B(r,o));return{cause:s.cause,hint:`${s.hint}; and ${Wx(e,`hand_r`,n,B(r,-o)).hint}`,fix:Wx(e,`hand_l`,n,B(r,2*o)).fix}}let o=t.subject===`shins touch`,s=o?.1:.135,[c,l]=o?[`Leg`,`Foot`]:[`UpLeg`,`Leg`],u=Ou(i[a[`Left${c}`]],i[a[`Left${l}`]],i[a[`Right${c}`]],i[a[`Right${l}`]]),d=z(i[a[`Left${l}`]],i[a[`Right${l}`]]);d[1]=0;let f=(s-u+Bx)/2,p=U(d);return{cause:e.cause(`foot_l`,n),hint:`foot_l: move ${Xy(B(p,f))} m and foot_r ${Xy(B(p,-f))} m at f${n} (${o?`shins`:`thighs`} ${X(u)} m apart, need ${s}); or spread knee_l/knee_r`,fix:{channel:`foot_l`,f:n,delta:B(p,2*f)}}},OBJECT(e,t){let[,n,r]=/^(\S+) into (.+)$/.exec(t.subject)??[],i=e.spec.objects?.[n]?.channel;if(!i)return null;let a=t=>e.out.baked[i]?.[t]??0,o=t.first>0?a(t.first-1):a(0);return{cause:e.cause(i,t.worstFrame),hint:`${i}: keep it within ${X(o)} deg (it reaches ${X(a(t.worstFrame))} at f${t.worstFrame}, ${X(t.worst)} m into ${r}), or move ${r}`,fix:{channel:i,f:t.worstFrame,value:o}}},BALANCE(e,t){let n=t.worstFrame,{s:r}=e.fr(n),i=r.P,a=e.I;if(t.subject===`no foot on the ground`)return{cause:e.cause(`root`,n),hint:`at f${n} lower foot_l or foot_r onto the ground, the floor or the top of an object under it (the ankle stands ${Au(e.sk)} m above it), or declare checks.supports for the seat the hips rest on`};let o=B([`Hips`,`Spine1`,`Spine2`,`Head`].reduce((e,t)=>R(e,i[a[t]]),[0,0,0]),.25),s=[`Left`,`Right`].flatMap(t=>Object.values(Mu(e.sk,r,t))),c=s.map(e=>e[0]),l=s.map(e=>e[2]),u=.07,d=[gs(o[0],Math.min(...c)-u,Math.max(...c)+u),o[1],gs(o[2],Math.min(...l)-u,Math.max(...l)+u)];return{cause:e.cause(`root`,n),hint:`root: move ${Xy(z(d,o))} m at f${n} (centre of mass over the feet), or step a foot under it`,fix:{channel:`root`,f:n,delta:z(d,o)}}}},Qx=.003,$x=.02,eS=.2;function tS(e,t,n,r,i=``){let a=t===`l`?`Left`:`Right`,{s:o}=e.fr(n),s=z(o.P[e.I[`${a}Hand`]],o.P[e.I[`${a}Arm`]]),c=Math.hypot(s[0],s[2])/Math.max(H(s),1e-9);if(c<.5)return null;let l=B(U([s[0],0,s[2]]),Math.min(eS,r/c));return{delta:l,hint:`body: move ${Xy(l)} m toward the target at f${n}, ${e.cause(`root`,n)} (arm ${t} is at full reach)${i}`,fix:{channel:`root`,f:n,delta:l,hold:!0}}}var nS=(e,t,n)=>(e.fr(n).diag[`reach_over_${t}`]??0)>.001||(e.fr(n).diag[`arm_miss_${t}`]??0)>.002&&!e.fr(n).diag[`arm_fold_${t}`];function rS(e,t,n,r){let i=null;for(let[a,o]of Object.entries(e.fr(n).c))a===r||!RegExp(`^w_.+_${t}$`).test(a)||!(o>$x)||i&&o<=i.w||(i={ch:a,w:o});return i}function iS(e,t,n,r,i){let a=n.slice(-1),o=e.hand(a,r),s=o.anchor?rS(e,a,r,o.ch):null;if(!s)return null;let c=Array.isArray(t.at)?t.at[1]:t.at,l=e.bracket(s.ch,r).prev,u=l&&Math.abs(e.out.baked[s.ch]?.[Math.round(l.f)]??1)<=$x&&c>=r&&!(e.bracket(s.ch,r).next?.f<=c)?c:r,d=s.w/Math.max(1,(e.fr(r).c[o.ch]??1)+s.w),f=s.ch.replace(/^w_/,``).replace(/_[lr]$/,``);return{cause:e.cause(s.ch,r),hint:`${s.ch} is ${X(s.w)} at f${r}, so anchor ${f} takes ${Math.round(d*100)}% of the hand target from ${o.label}: key ${s.ch} 0 at f${u}${i}`,fix:{channel:s.ch,f:u,value:0}}}function aS(e,t){let n=null;return(e.spec?.goals??[]).forEach((e,r)=>{let i=nb(e,r);t.subject.startsWith(`${i}:`)&&(!n||i.length>n.name.length)&&(n={goal:e,name:i,i:r})}),n}function oS(e,t,n){let r=[t,...e.out.ctx.scene?.objects?.[t]?.ancestors??[]].find(t=>Jp(e.spec.objects?.[t],n));return r?e.spec.objects[r]:null}function sS(e,t,n){let[,r,i]=/^([a-z]+):(.+)$/s.exec(t)??[];if(r===`prop`)return e.spec.props?.[i.split(`.`)[0]]?.hand?`hand_${e.spec.props[i.split(`.`)[0]].hand}`:null;if(r===`object`){let t=oS(e,i.replace(/\.(center|top|base)$/,``),n),r=t&&e.spec.props?.[t.prop]?.hand;return r?`hand_${r}`:null}if(r===`landmark`)return`root`;if(r!==`joint`&&r!==`bone`)return null;let a=Zf(e.sk,i).bone??``,o=/^Left/.test(a)?`l`:/^Right/.test(a)?`r`:null;return o&&/^(Left|Right)(Hand|ForeArm)/.test(a)?`hand_${o}`:o&&/^(Left|Right)(Foot|Toe|Leg)/.test(a)?`foot_${o}`:`root`}function cS(e,t,n,r){let i=t.slice(-1);if(!t.startsWith(`hand_`))return{channel:t,f:n,delta:r};let a=e.hand(i,n);return a.ch===`hand_${i}`?{channel:a.ch,f:n,delta:r}:a.anchor&&e.spec.anchors?.[a.anchor]?.kind===`world`?{path:`/anchors/${a.anchor}/p`,delta:r}:null}function lS(e,t,n,r,i,a){if(n===`moved`||n===`still`){let o=t[n],s=sS(e,o,r),c=cb(e.out,t,a),l=Dp(e.out,r,ab(o)),u=l&&c&&H(z(l,c))>.001?U(z(l,c)):[0,1,0];return s?[s,B(u,n===`still`?-i:i)]:null}let[o,s]=t[n],c=sS(e,o,r),l=sS(e,s,r),u=e=>e?.startsWith(`hand_`)?2:+!!e,d=u(c)>=u(l),f=d?c:l,p=d?1:-1;if(!f)return null;if(n===`above`)return[f,[0,p*i,0]];let m=Dp(e.out,r,o),h=Dp(e.out,r,s);return m&&h?[f,B(U(z(h,m)),p*i)]:null}var uS={GOAL(e,t){let n=e.spec&&aS(e,t),r=t.worstFrame;if(!n)return{cause:`goal ${t.subject.split(`:`)[0]}`,hint:`change the keys around f${r} until the goal holds`};let{goal:i,name:a,i:o}=n,s=tb(i)[0],c=t.worst+Qx,l=_b(e.out,e.spec.goals,o);if(l.wait){let e=i.after??i.before;return{cause:`goal ${a}`,hint:`${a} ${l.wait}: make goal "${e}" hold${i.after!==void 0&&i.before!==void 0?` and "${i.before}"`:``} where this one needs it, or move at`}}let u=s===`speed`?`m/s`:`m`,d=s===`near`||s===`still`?`<=`:`>=`,f=` (goal "${a}" is ${X(t.worst)} ${u} ${s===`still`?`off`:`short`}; needs ${d} ${rb(i,s)})`;if(s===`speed`){let t=sS(e,i.speed,r);return{cause:t?e.cause(t,r):`goal ${a}`,hint:`${i.speed} is too slow at f${r}: put its keys around f${r} closer in time, or farther apart in space${f}`}}let p=lS(e,i,s,r,c,l.a);if(!p){if(s===`still`&&i.still.startsWith(`object:`)){let e=i.still.slice(7).replace(/\.(center|top|base)$/,``);return{cause:`objects.${e}`,hint:`${e} moves at f${r}, where it should stay: hold its hinge channel or keys until then, or start them later${f}`}}if(s===`still`)return{cause:`goal ${a}`,hint:`${i.still} moves at f${r} and nothing that follows the body moves it; name a joint, prop point or held object${f}`};if(s===`moved`&&!i.moved.startsWith(`object:`))return{cause:`goal ${a}`,hint:`${i.moved} does not move with the body at f${r}; name a joint, prop point or held object`};if(s===`moved`){let e=i.moved.slice(7).replace(/\.(center|top|base)$/,``);return{cause:`objects.${e}`,hint:`${e} is not in a hand at f${r}, so nothing moves it: carry it (objects.${e} = { prop, grab }) or hinge it`}}return{cause:`goal ${a}`,hint:`neither ${i[s][0]} nor ${i[s][1]} moves with the body at f${r}; name a joint, prop point or held object`}}let[m,h]=p;if(m.startsWith(`hand_`)){let t=iS(e,i,m,r,f);if(t)return t;let n=nS(e,m.slice(-1),r)&&tS(e,m.slice(-1),r,c,f);if(n)return{cause:e.cause(`root`,r),hint:n.hint,fix:n.fix}}let g=Wx(e,m,r,h,f),_=cS(e,m,r,h);return{cause:g.cause,hint:g.hint,..._?{fix:_}:{}}}},dS={Leg:[`UpLeg`,`Leg`,`Foot`,`knee`],ForeArm:[`Arm`,`ForeArm`,`Hand`,`elbow`]},fS=e=>e.startsWith(`Left`)?`l`:`r`,pS=e=>/^(w_|armw)/.test(e)?.5:/^(root|foot|hand)/.test(e)?1:/^(knee|elbow)/.test(e)?.2:.01;function mS(e,t,n){let r=fS(t),i=e.out.baked,a=[`root`,`yaw`,`pitch`];t===`Head`?a=[`head_yaw`,`head_pitch`,`spine_pitch`,`spine_yaw`,`root`,`yaw`]:/Hand|ForeArm/.test(t)?a=[`hand_${r}`,`armw_${r}`,`elbow_${r}`,`aswing_${r}`,`abend_${r}`,...Object.keys(i).filter(e=>RegExp(`^w_.+_${r}$`).test(e)),`spine_yaw`,`spine_pitch`,`root`,`yaw`]:/Foot|Leg/.test(t)&&(a=[`foot_${r}`,`knee_${r}`,`fpitch_${r}`,`root`]);let o=e=>{let t=i[e]?.[n-1],r=i[e]?.[n];return t===void 0||r===void 0||typeof t==`object`&&!Array.isArray(t)?0:(Array.isArray(t)?hs(t,r):Math.abs(r-t))*pS(e)};return a.filter(e=>i[e]).sort((e,t)=>o(t)-o(e))}function hS(e,t,n){let r=t.subject.split(` `)[0],i=t.worstFrame,a=mS(e,r,i)[0]??`root`,{prev:o,next:s}=e.bracket(a,i),c=e.keys(a).find(e=>e.step&&Math.abs(e.f-i)<=1);if(c)return{cause:e.cause(a,i),hint:`${a}: a step key jumps at f${Math.round(c.f)}; ease it over 4+ frames (key the old value 4 frames earlier, drop the step)`};let l=Math.ceil((t.worst/t.limit)**+n*1.1*10)/10,u=Math.round(o?.f??i-4),d=Math.round(s?.f??i+4),f=Math.ceil((d-u)*(l-1)),p=/^w_(.+)_[lr]$/.exec(a);return{cause:e.cause(a,i),hint:`retime: stretch f${u}-f${d} by ${l}x (+${f} frames, move the keys from f${d} on later)${p?` - the hand switches to anchor ${p[1]} too fast`:``}; or fix.retime: true`,fix:e.spec.fix===!1?void 0:{path:`/fix/retime`,value:!0}}}function gS(e,t,n){let[r,i]=n.split(/:(.*)/s);if(r===`joint`)return t.s.P[e.I[i]];if(r===`prop`){let[e,n]=i.split(`.`);return t.diag.props?.[e]?.[n]}return Dm(e.out.ctx,i,t.s,t.diag,t.c)}function _S(e,t,n,r){let i=Kp(e.out.baked,t),a=r(e.fr(t)),o=null;for(let[s,c,l]of n){let n=r(Iy(e.out.ctx,{...i,[s]:c},t))-a;n>1e-6&&(!o||n/l>o.gain/o.unit)&&(o={ch:s,value:c,gain:n,unit:l})}return{best:o,base:a,c0:i}}var vS=(e,t,n,r)=>e.fr(n).s.P[e.I[`${t===`l`?`Left`:`Right`}${dS[r][0]}`]],yS={REACH(e,t){let[,n,r]=/^(leg|arm)_miss_([lr])$/.exec(t.subject)??[],i=t.worstFrame,a=t.worst+.002;if(n===`leg`){let n=e.fr(i).diag[`leg_fold_${r}`];if(n)return zx(e,r,i,Rx(`the ankle target is ${X(t.worst)} m inside the shin's reach: `,n),e.fr(i).c[`foot_${r}`]);let o=e.fr(i).c[`foot_${r}`]??[0,0,0],s=vS(e,r,i,`Leg`),c=z(o,s),l=hs(s,o)-t.worst,u=c[1]*c[1]-V(c,c)+l*l,d=[c[0],0,c[2]],f=u>=0?`or root down ${X(-c[1]-Math.sqrt(u)+.002)} m${t.worst<=.05?` (fix.reach does this when on)`:``}`:`or root ${Xy(B(U(d),H(d)-l*.95))} m toward the foot (the foot is ${X(H(d))} m sideways of the hip: the root and foot keys disagree)`;return{cause:e.cause(`foot_${r}`,i),hint:`foot_${r}: move ${Xy(B(U(z(s,o)),a))} m toward the hip at f${i}, ${f}`,fix:{channel:`foot_${r}`,f:i,delta:B(U(z(s,o)),a)}}}let o=r===`l`?`Left`:`Right`,{s,diag:c}=e.fr(i),l=U(z(s.P[e.I[`${o}Hand`]],s.P[e.I[`${o}Arm`]])),u=c[`arm_fold_${r}`];if(u){let n=Wx(e,`hand_${r}`,i,B(l,a),` (the hand target is ${X(t.worst)} m inside the forearm's reach: the elbow would fold ${Math.round(u)}deg; it bends to 145deg and stops at 150deg)`);return{cause:n.cause,hint:`${n.hint}, or bring root ${Xy(B([-l[0],0,-l[2]],a))} m back from it`,fix:n.fix}}let d=Wx(e,`hand_${r}`,i,B(l,-a),``),f=e.hand(r,i).anchor,p=JSON.stringify([e.spec.goals??[],e.spec.checks?.contacts??[]]),m=f&&(e.spec.anchors?.[f]?.kind===`object`||p.includes(`"anchor:${f}"`)),h=e.spec.fits?.[e.hand(r,i).fit??-1],g=h?.effector?.prop&&e.fr(i).diag.props?.[h.effector.prop]?.[h.effector.point],_=g?hs(g,R(gS(e,e.fr(i),`anchor:${f}`),h.offset??[0,0,0]))+.01:a,v=m&&tS(e,r,i,Math.min(a,_));return v?{cause:d.cause,hint:`${v.hint} (out of reach by ${X(t.worst)} m), or ${d.hint}`,fix:v.fix}:{cause:d.cause,hint:`${d.hint} (out of reach by ${X(t.worst)} m), or bring root ${Xy(B([l[0],0,l[2]],a))} m closer`,fix:d.fix}},KNEE(e,t){let n=fS(t.subject),r=n===`l`?`Left`:`Right`,i=t.worstFrame,{s:a,c:o}=e.fr(i),s=a.P,c=e.I;if(/backward/.test(t.subject)){let t=z(s[c[`${r}ToeBase`]],s[c[`${r}Foot`]]);t[1]=0;let a=R(U(G(Ss(-(o.yaw??0)),t)),[0,.3,0]);return{cause:e.cause(`knee_${n}`,i),hint:`knee_${n}: key ${Xy(U(a))} (body frame, along the foot) at f${i}; a knee pole is +z forward, +x the character's left`,fix:{channel:`knee_${n}`,f:i,value:U(a)}}}if(/ folds /.test(t.subject))return zx(e,n,i,` (the knee folds ${X(t.worst)}deg, past its ${t.limit}deg stop; it bends freely to 150deg)`,s[c[`${r}Foot`]]);let l=s[c[`${r}UpLeg`]],u=s[c[`${r}Leg`]],d=s[c[`${r}Foot`]],f=hs(l,u),p=hs(u,d),m=(180-(t.limit-5))*Math.PI/180,h=Math.sqrt(f*f+p*p-2*f*p*Math.cos(m));return{cause:e.cause(`foot_${n}`,i),hint:`foot_${n}: move ${Xy(B(U(z(d,l)),h-hs(l,d)))} m away from the hip at f${i} (the knee folds ${X(t.worst)} deg, limit ${t.limit})`,fix:{channel:`foot_${n}`,f:i,delta:B(U(z(d,l)),h-hs(l,d))}}},ELBOW(e,t){let n=fS(t.subject),r=n===`l`?`Left`:`Right`,i=t.worstFrame,a=e.fr(i).s.P,o=e.I,s=a[o[`${r}Arm`]],c=a[o[`${r}ForeArm`]],l=a[o[`${r}Hand`]],u=B(U(z(l,s)),zs(hs(s,c),hs(c,l),145)-hs(s,l));return Wx(e,`hand_${n}`,i,u,` (the elbow folds ${X(t.worst)}deg, past its ${t.limit}deg stop; it bends freely to 145deg)`)},FLIP(e,t){let[,n,r]=/^(Left|Right)(Leg|ForeArm) /.exec(t.subject)??[],i=t.worstFrame;if(!r)return null;let a=fS(n),[o,s,c,l]=dS[r],u=e.I,d=+(/ over (\d+) frames$/.exec(t.subject)?.[1]??1),f=e.fr(i).diag,p=r===`ForeArm`&&(f[`arm_fold_${a}`]??f[`hold_${a}`]?.fold);if(p){let t=f[`hold_${a}`]?.fold&&Object.entries(e.spec.objects??{}).find(([,t])=>t.keys?.length&&e.spec.props?.[t.prop]?.hand===a)?.[0];return{cause:t?`objects.${t}.keys`:e.cause(e.hand(a,i).ch,i),hint:`the ${t?`keys of ${t} ask`:`hand target asks`} the elbow to fold ${Math.round(p)}deg at f${i}, past its 150deg stop, so the hand swings round the shoulder on the stop: move ${t?`the keyed pose`:`the target`} out from the shoulder (REACH says how far)`}}let m=t=>{let r=e.fr(t).s.P;return ks(z(r[u[`${n}${s}`]],r[u[`${n}${o}`]]),z(r[u[`${n}${c}`]],r[u[`${n}${s}`]]))},h=Array.from({length:Math.max(1,d-1)},(e,t)=>d>1?i-1-t:i).reduce((e,t)=>m(t)<m(e)?t:e),g=m(h),_=`${l}_${a}`,v=e.out.baked[_]?.[Math.max(0,i-1)];if(v&&H(v)<.5)return{cause:e.cause(_,i),hint:`${_}: the pole passes near zero (length ${X(H(v))}) at f${i} while it turns between opposite keys; add an in-between pole key (e.g. the average direction, normalised) so it turns, not shrinks`};let y=g<12?`the limb is almost straight at f${h} (bend ${X(g)} deg), so the pole cannot hold it: bring the ${r===`Leg`?`foot`:`hand`} target ~0.02 m toward the ${r===`Leg`?`hip`:`shoulder`}, or `:``;return{cause:e.cause(_,i),hint:`${_}: ${y}keep the pole on one side through f${i}${v?` (key ${Xy(v)} there)`:``}`,fix:v&&{channel:_,f:i,value:v}}},SLIDE(e,t){let n=fS(t.subject),r=n===`l`?`Left`:`Right`,i=t.subject.includes(`heel`)?`heel`:`ball`,a=Math.max(0,t.first-1),o=t=>Mu(e.sk,e.fr(t).s,r)[i],s=Math.hypot(o(t.last)[0]-o(a)[0],o(t.last)[2]-o(a)[2]),c=e.out.baked[`foot_${n}`]?.[a],l=e.out.baked[`fyaw_${n}`],u=e.out.baked[`foot_${n}`]?.[t.last];return l&&c&&u&&Math.hypot(u[0]-c[0],u[2]-c[2])<s/2&&Math.abs(l[t.last]-l[a])>1?{cause:e.cause(`fyaw_${n}`,t.worstFrame),hint:`fyaw_${n}: the flat foot turns ${X(l[a])} -> ${X(l[t.last])} deg over f${a}-f${t.last} and the ${i} slides ${X(s)} m; key fyaw_${n} ${X(l[a])} at f${t.last} so it turns once the foot is up, or lift the heel first (fpitch_${n} +) so it pivots on the ball`,fix:{channel:`fyaw_${n}`,f:t.last,value:l[a]}}:{cause:e.cause(`foot_${n}`,t.worstFrame),hint:`foot_${n}: hold it still over f${a}-f${t.last}${c?` (key ${Xy(c)} at both ends)`:``}; the ${i} slides ${X(s)} m${s<.01?`; fix.slide locks this when on`:``}`,fix:c&&{channel:`foot_${n}`,f:t.last,value:c}}},SPEED:(e,t)=>hS(e,t,1),POP:(e,t)=>hS(e,t,.5),ACC:(e,t)=>hS(e,t,.5),FLOAT:(e,t)=>({cause:e.cause(`root`,t.worstFrame),hint:`over f${t.first}-f${t.last} lower the root or key foot_l/foot_r back onto the ground, the floor or the top of an object under the foot (the ankle stands ${Au(e.sk)} m above it); a jump needs the hips to rise and fall; a seat or ledge the hips rest on goes in checks.supports (a foot on an object's top needs none)`}),LENGTH:()=>({cause:`compiler`,hint:`a bone changed length: report the spec, this is a compiler fault`}),CONTACT(e,t){let n=(e.spec.checks?.contacts??[]).find(e=>t.subject.startsWith(`${e.name}:`)),r=t.worstFrame,i=e.rel(r);if(!n)return null;let a=Jb(e.out,i,n.point),o=Jb(e.out,i,n.target),s=z(o,a),c=/^prop:([^.]+)/.exec(n.point),l=c?e.spec.props?.[c[1]]?.hand:fS(n.point.slice(6)),{diag:u}=e.fr(r),d=Math.max(u[`reach_over_${l}`]??0,u[`arm_miss_${l}`]??0),f=/^anchor:(.+)$/.exec(n.target)?.[1],p=(e.spec.fits??[]).findIndex(e=>e.side===l&&e.anchor===f),m=p>=0?`fits[${p}] (${l} -> anchor ${f})`:Wx(e,`hand_${l}`,r,s).cause,h=B(U([s[0],0,s[2]]),d+.01),g=u[`arm_fold_${l}`];if(d>.002&&g){let t=e.fr(r).s.P[e.I[`${l===`l`?`Left`:`Right`}Arm`]],n=B(U([t[0]-o[0],0,t[2]-o[2]]),d+.01);return{cause:m,hint:`inside the forearm's reach by ${X(d)} m at f${r} (the elbow would fold ${Math.round(g)}deg; it stops at 150deg): bring root ${Xy(n)} m back from ${f??`the target`}, or move the target out from the shoulder`,fix:{channel:`root`,f:r,delta:n}}}if(d>.002)return{cause:m,hint:`out of reach by ${X(d)} m at f${r}: bring root ${Xy(h)} m toward ${f??`the target`}, or move the target`,fix:{channel:`root`,f:r,delta:h}};let _=Wx(e,`hand_${l}`,r,s);return{cause:m,hint:`${_.hint}${p<0&&f?`; or add fits: [{ side: "${l}", anchor: "${f}", effector: ${c?`{ prop: "${c[1]}", point: "${n.point.split(`.`)[1]}" }`:`{ joints: [...] }`} }]`:``}`,fix:_.fix}},ORIENT(e,t){let n=(e.spec.checks?.orient??[]).find(e=>t.subject.startsWith(`${e.name}:`)),r=t.worstFrame;if(!n)return null;let i=/^prop:([^.]+)/.exec(n.from),a=i?e.spec.props?.[i[1]]?.hand:fS(n.from.slice(6)),o=n.minCos??.64,s=t=>n.along===`up`?[0,1,0]:n.along===`face`?Ls(e.sk,t.s,e.I.Head,[0,0,1]):U(n.along),c=t=>V(U(z(gS(e,t,n.to),gS(e,t,n.from))),s(t)),l=Kp(e.out.baked,r),u=l[`wtwist_${a}`]??0,d=l[`wflex_${a}`]??0,{best:f,base:p}=_S(e,r,[[`wtwist_${a}`,gs(u+15,-85,85),15],[`wtwist_${a}`,gs(u-15,-85,85),15],[`wflex_${a}`,gs(d+15,-70,70),15],[`wflex_${a}`,gs(d-15,-70,70),15]],c);if(!f)return{cause:e.cause(`wtwist_${a}`,r),hint:`turn the prop another way: wrist twist/flex do not help at f${r} (cos ${X(p)}, needs ${o}); change elbow_${a} or the prop points`};let m=f.ch.startsWith(`wtwist`)?u:d,h=f.ch.startsWith(`wtwist`)?85:70,g=gs(m+(f.value-m)*Math.min(4,(o-p+.03)/f.gain),-h,h);return{cause:e.cause(f.ch,r),hint:`${f.ch}: key ${X(g)} deg at f${r} (now ${X(m)}; cos ${X(p)}, needs ${o})`,fix:{channel:f.ch,f:r,value:g}}},BELOW(e,t){let n=(e.spec.checks?.below??[]).find(e=>t.subject.startsWith(`${e.name}:`)),r=t.worstFrame;if(!n)return null;let i=fS(n.joint),a=`${/Leg/.test(n.joint)?`knee`:`elbow`}_${i}`,o=Kp(e.out.baked,r)[a]??[0,-1,-.3],s=t=>t.s.P[e.I[n.ref]][1]-t.s.P[e.I[n.joint]][1],c=(n.min??.08)+.01,l=Kp(e.out.baked,r),u=s(e.fr(r)),d=[[0,-1,0],[.5,-1,0],[-.5,-1,0],[0,-1,-.4],[0,-1,.4],[.5,-1,.5],[-.5,-1,.5],[.5,-1,-.4],[-.5,-1,-.4]].map(t=>({p:t,d:s(Iy(e.out.ctx,{...l,[a]:t},r)),turn:ks(t,o)})),f=d.filter(e=>e.d>=c).sort((e,t)=>e.turn-t.turn)[0]??d.sort((e,t)=>t.d-e.d)[0];return f.d>u?{cause:e.cause(a,r),hint:`${a}: key ${Xy(f.p)} (body frame: +y up, +z forward) at f${r} (${n.joint} ${X(u)} m below ${n.ref} -> ${X(f.d)}, needs ${n.min??.08})`,fix:{channel:a,f:r,value:f.p}}:{cause:e.cause(a,r),hint:`${a}: no pole change lowers ${n.joint} at f${r}; lower the hand target instead`}},APPEAR(e,t){let n=(e.spec.checks?.appear??[]).find(e=>t.subject.startsWith(`${e.name}:`)),r=t.worstFrame;if(!n)return null;let i=null;for(let t=Math.max(e.out.f0??0,r-24);t<=Math.min((e.out.f0??0)+e.out.frames.length-1,r+24);t++){let r=H(z(Jb(e.out,e.rel(t),`joint:${n.joint}`),Jb(e.out,e.rel(t),`anchor:${n.anchor}`)));(!i||r<i.d)&&(i={q:t,d:r})}let a=n.tol??.035;return{cause:e.cause(n.channel,r),hint:i.d<=a?`${n.channel}: move the step from f${r} to f${i.q} (${n.joint} ${X(i.d)} m from ${n.anchor} there)`:`${n.joint} never gets within ${a} m of ${n.anchor} near f${r} (closest ${X(i.d)} m at f${i.q}): hold its weight w_${n.anchor}_${fS(n.joint)} at 1 around the switch`}}},bS=.003,xS=24;function SS(e,t,n,r){let i=e.hand(t,n);if(i.ch===`hand_${t}`)return{channel:i.ch,f:n,delta:r};if(i.fit!==null&&i.fit!==void 0)return e.spec.fits[i.fit].offset?{path:`/fits/${i.fit}/offset`,delta:r}:{path:`/fits/${i.fit}/offset`,value:r};if(i.anchor&&e.spec.anchors?.[i.anchor]?.kind===`world`)return{path:`/anchors/${i.anchor}/p`,delta:r}}function CS(e,t,n,r,i){let a=Wx(e,`hand_${t}`,n,r,i),o=SS(e,t,n,r);return o?{...a,fix:o}:a}function wS(e,t,n,r){let i=e.spec.anchors?.[e.hand(t,n).anchor],a=e.out.ctx.scene;return i?.kind===`object`&&[a.objects?.[i.object]?.ancestors,Gl(a)[i.object]?.ancestors,[i.object]].some(e=>e?.includes(r))}function TS(e,t){let n=G(K(e.R),z(t,e.pos)),r=[0,e.half[1],0];return R(e.pos,G(e.R,n.map((t,n)=>gs(t,r[n]-e.half[n],r[n]+e.half[n]))))}var ES={REACH:(e,t)=>nx(e,t)??yS.REACH(e,t),GRAB(e,t){let n=t.subject.split(`:`)[0],r=t.worstFrame,i=e.spec?.objects?.[n],a={cause:`objects.${n}.grab`,hint:`${n}: move the hand to it by f${r}, or set objects.${n}.grab to the frame the hand arrives`};if(!e.out||!Pl(i))return a;let o=null;for(let i=r-xS;i<=r+xS;i++){let a=mx(e.out,n,i);a!==null&&a<=t.limit&&(!o||Math.abs(i-r)<Math.abs(o[0]-r))&&(o=[i,a])}if(o)return{cause:a.cause,hint:`${n}: set objects.${n}.grab to ${o[0]} (the hand is ${(o[1]*100).toFixed(1)} cm from it there, ${(t.worst*100).toFixed(1)} cm at f${r})`,fix:{path:`/objects/${n}/grab`,value:o[0]}};let{sk:s,spec:c,scene:l}=e.out.ctx,u=Rl(s,c,e.fr(r).s,i),d=qp(l,n).map(e=>TS(l.objects[e],u)).reduce((e,t)=>H(z(t,u))<H(z(e,u))?t:e),f=H(z(d,u)),p=B(z(d,u),f>1e-9?(f-t.limit/2)/f:0),m=CS(e,c.props[i.prop].hand,r,p,` (to ${n} at grab)`);return{...m,hint:`${m.hint}; or set objects.${n}.grab to the frame the hand arrives`}},COLLIDE(e,t){let[,n,r]=/^(\S+) x (.+)$/.exec(t.subject)??[],i=e.spec?.objects??{},a=Pl(i[r])?r:Pl(i[n])?n:null;if(!a||!e.out)return Zx.COLLIDE(e,t);let o=i[a],s=e.spec.props[o.prop].hand,[c,l]=Zp(e.out,o),u=t.worst-t.limit+bS,d=t.worstFrame,f=d>=c&&d<=l,p=Math.min(d,l),m=lm(e.out,a,d)??[];if(a===r){let t=Tu.find(e=>e[0]===n),{s:r}=e.fr(d);if(!t||!m.length)return null;let i=Eu(r.P[e.I[t[1]]],r.P[e.I[t[2]]]),[o,c]=m.flatMap(e=>i.map(t=>[e,t])).reduce((e,t)=>Du(t[1],t[0])<Du(e[1],e[0])?t:e),l=Nu(c,o),p=/^(hand|farm|uarm)_([lr])$/.exec(n)?.[2];return f&&p&&p!==s&&wS(e,p,d,a)?Wx(e,`hand_${p}`,d,B(l,u),` (out of ${a})`):f?CS(e,s,d,B(l,-u),` (${a} off ${n})`):Wx(e,n,d,B(l,u),` (out of ${a})`)}let h=e.out.objectsAt(e.rel(d))[r];if(!h||!m.length)return null;let g=lm(e.out,a,Math.max(c,t.first-1))??m,_=m.map((e,t)=>ux(e,h,z(g[t].pos,h.pos))).reduce((e,t)=>t.depth>e.depth?t:e);return CS(e,s,p,B(_.axis,_.depth-t.limit+bS),f?` (${a} out of ${r})`:` (${a} is put down in ${r}; it stays where the hand lets go at f${l})`)}},DS=[`add`,`remove`,`replace`,`test`],OS=e=>{throw Error(`MOTION_SPEC_INVALID: ${e}`)},kS=(e,t)=>JSON.stringify(e)===JSON.stringify(t),AS=e=>e.split(`/`).slice(1).map(e=>e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`)),jS=e=>e.map(e=>`/${String(e).replaceAll(`~`,`~0`).replaceAll(`/`,`~1`)}`).join(``);function MS(e,t){if(Array.isArray(e))return`${t} has ${e.length} entries`;let n=Object.keys(e);return n.length?`${t} has ${n.slice(0,8).join(`, `)}${n.length>8?`, ...`:``}`:`${t} is empty`}function NS(e,t,n){let r=e;for(let e=0;e<t.length-1;e++){let i=t[e],a=e?t[e-1]:`the spec`;(typeof r!=`object`||!r||!Object.hasOwn(r,Array.isArray(r)?Number(i):i)||Array.isArray(r)&&!/^\d+$/.test(i))&&OS(`${n}: ${jS(t.slice(0,e+1))} does not exist${r&&typeof r==`object`?` (${MS(r,a)})`:``}`),r=r[Array.isArray(r)?Number(i):i]}return(typeof r!=`object`||!r)&&OS(`${n}: ${jS(t.slice(0,-1))} is not an object or array`),r}function PS(e,t,n,r){(!t||typeof t!=`object`||!DS.includes(t.op))&&OS(`patch[${n}]: op must be ${DS.join(`, `)}, got ${JSON.stringify(t?.op)}`);let i=`patch[${n}] (${t.op} ${t.path})`;if((typeof t.path!=`string`||t.path!==``&&!t.path.startsWith(`/`))&&OS(`${i}: path must be a JSON Pointer such as "/keys/0/f"`),t.op!==`remove`&&!Object.hasOwn(t,`value`)&&OS(`${i}: needs a value`),t.path===``){if(t.op===`replace`)return structuredClone(t.value);if(t.op===`test`)return kS(e,t.value)||OS(`${i}: the spec differs from the test value`),e;OS(`${i}: ${t.op} needs a path below the spec`)}let a=AS(t.path),o=a[a.length-1],s=NS(e,a,i),c=a.length>1?a[a.length-2]:`the spec`;if(Array.isArray(s)){if(o===`-`)return t.op!==`add`&&OS(`${i}: "-" (append) works with add only`),s.push(structuredClone(t.value)),e;let n=/^\d+$/.test(o)?Number(o):NaN,r=t.op===`add`?s.length:s.length-1;return n>=0&&n<=r||OS(`${i}: ${t.path} does not exist (${MS(s,c)})`),t.op===`add`?s.splice(n,0,structuredClone(t.value)):t.op===`remove`?s.splice(n,1):t.op===`replace`?s[n]=structuredClone(t.value):kS(s[n],t.value)||OS(`${i}: value is ${JSON.stringify(s[n])?.slice(0,60)}, not ${JSON.stringify(t.value)?.slice(0,60)}`),e}return t.op===`replace`&&r&&!Object.hasOwn(s,o)?r.push(`${i}: ${t.path} did not exist (${MS(s,c)}); added`):t.op!==`add`&&!Object.hasOwn(s,o)&&OS(`${i}: ${t.path} does not exist (${MS(s,c)})`),t.op===`remove`?delete s[o]:t.op===`test`?kS(s[o],t.value)||OS(`${i}: value is ${JSON.stringify(s[o])?.slice(0,60)}, not ${JSON.stringify(t.value)?.slice(0,60)}`):s[o]=structuredClone(t.value),e}function FS(e,t,n){return Array.isArray(t)||OS(`patch must be an array of { op, path, value }`),t.reduce((e,t,r)=>PS(e,t,r,n),structuredClone(e))}var IS=2,LS=e=>Array.isArray(e)?e.map(LS):typeof e==`number`?Math.round(e*1e4)/1e4:e,RS=e=>e.split(`/`).slice(1).map(e=>e.replaceAll(`~1`,`/`).replaceAll(`~0`,`~`)),zS=e=>e.map(e=>`/${String(e).replaceAll(`~`,`~0`).replaceAll(`/`,`~1`)}`).join(``),BS=e=>typeof e==`number`&&Number.isFinite(e);function VS(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n||!Object.hasOwn(n,e))return;n=n[e]}return n}function HS(e,t){if(BS(e)&&BS(t))return e+t;if(Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every(BS)&&t.every(BS))return e.map((e,n)=>e+t[n])}function US(e,t,n){let r=-1;return(e.keys??[]).forEach((i,a)=>{!i?.set||!Object.hasOwn(i.set,t)||!BS(i.f)||Math.abs(i.f-n)>IS||(r<0||Math.abs(i.f-n)<Math.abs(e.keys[r].f-n))&&(r=a)}),r}function WS(e,t,n,r){let i=/^use\[(\d+)\] standIdle$/.exec(r?.src??``),a=n.delta;if(!i||n.channel!==`root`||!Array.isArray(a)||Math.hypot(a[0],a[2])<Math.abs(a[1]))return null;let o=Number(i[1]),s=t.use?.[o],c=e.fr(r.f).c.root;if(s?.skill!==`standIdle`)return null;let l=Array.isArray(s.args?.at)?s.args.at:c&&[c[0],c[2]];if(!l)return null;let u=LS(l.map((e,t)=>e+(t===0?a[0]:t===l.length-1?a[2]:0)));return s.args?[{op:Object.hasOwn(s.args,`at`)?`replace`:`add`,path:`/use/${o}/args/at`,value:u}]:[{op:`add`,path:`/use/${o}/args`,value:{at:u}}]}function GS(e,t,n,r){let i=t.use?.[n],a=i?.args??{},o=r.delta,s=(e.fr(r.f).c.yaw??0)*Math.PI/180,c=o[0]*Math.sin(s)+o[2]*Math.cos(s);if(i?.skill!==`walkTo`||Math.abs(o[0]*Math.cos(s)-o[2]*Math.sin(s))>Math.abs(c))return null;let l=(e,t)=>[i.args?{op:Object.hasOwn(a,e)?`replace`:`add`,path:`/use/${n}/args/${e}`,value:LS(t)}:{op:`add`,path:`/use/${n}/args`,value:{[e]:LS(t)}}];if(a.steps===void 0&&Array.isArray(a.to))return l(`to`,a.to.map((e,t)=>e+(t===0?o[0]:t===a.to.length-1?o[2]:0)));let u=a.steps??8,d=u<=2?`firstStep`:`step`,f=(a[d]??(d===`step`?.5:.4))+c/Math.max(1,u-2);return u>=2&&f>.05?l(d,f):null}function KS(e,t,n){let r=e.keys(`root`),i=e=>/^keys\[\d+\]$/.test(e.src),a=r.findLastIndex(e=>e.f<=n.f);if(a<0||!i(r[a]))return null;let o=a,s=a;for(;o>0&&i(r[o-1]);)--o;for(;s<r.length-1&&i(r[s+1]);)s+=1;return r.slice(o,s+1).map(e=>{let r=Number(/\d+/.exec(e.src)[0]),i=t.keys?.[r]?.set?.root;return Array.isArray(i)&&i.length===3?{op:`replace`,path:`/keys/${r}/set/root`,value:LS([i[0]+n.delta[0],i[1],i[2]+n.delta[2]])}:null}).filter(Boolean)}function qS(e,t,n){if(!Array.isArray(n.delta)||!e?.fr)return null;let r=e.bracket(`root`,n.f).prev,i=/^use\[(\d+)\] (standIdle|walkTo)\b/.exec(r?.src??``);if(i?.[2]===`standIdle`)return WS(e,t,n,r);if(i?.[2]===`walkTo`)return GS(e,t,Number(i[1]),n);let a=r&&KS(e,t,n);return a?.length?a:null}function JS(e,t,n){let{channel:r,f:i}=n;if(typeof r!=`string`||!BS(i))return null;if(n.hold)return qS(e,t,n);let a=e=>n.value===void 0?HS(e,n.delta):n.value,o=US(t,r,i);if(o>=0){let e=a(t.keys[o].set[r]);return e===void 0?null:[{op:`replace`,path:zS([`keys`,o,`set`,r]),value:LS(e)}]}if(!e?.fr)return null;let{prev:s,next:c}=e.bracket(r,i),l=s&&i-s.f<=IS?s:c&&c.f-i<=IS?c:null,u=n.delta!==void 0&&WS(e,t,n,l);if(u)return u;let d=a(e.fr(i).c[r]);return d===void 0?null:[{op:`add`,path:`/keys/-`,value:{f:Math.round(i),set:{[r]:LS(d)}}}]}function YS(e,t){if(typeof t.path!=`string`||!t.path.startsWith(`/`))return null;let n=RS(t.path),r=VS(e,n),i=t.delta===void 0?t.value:r===void 0&&t.path.endsWith(`/offset`)?t.delta:HS(r,t.delta);return i===void 0?null:r===void 0?VS(e,n.slice(0,-1))===void 0?n.length===2&&n[0]===`fix`?[{op:`add`,path:zS([n[0]]),value:{[n[1]]:LS(i)}}]:null:[{op:`add`,path:t.path,value:LS(i)}]:[{op:`replace`,path:t.path,value:LS(i)}]}function XS(e,t,n){let r=e.channel===void 0?e.path===void 0?null:YS(n,e):JS(t,n,e);if(!r)return null;try{return JSON.stringify(FS(n,r))===JSON.stringify(n)?null:r}catch{return null}}function ZS(e,{X:t,userSpec:n}={}){if(!n||typeof n!=`object`)return e;for(let r of e)if(r.fix)try{let e=XS(r.fix,t,n);e&&(r.patch=e)}catch{}return e}var QS={...Zx,...yS,...ES,...uS,...Px};function $S(e){let t=new Map;for(let n of e.keys??[])for(let e of Object.keys(n.set??{}))t.has(e)||t.set(e,[]),t.get(e).push({f:n.f,src:n.src??`keys`,step:n.step?.includes(e)});for(let e of t.values())e.sort((e,t)=>e.f-t.f);return t}function eC(e,t,n){let r=$S(t),i={sk:e,out:t,spec:n,I:e.index,fr:e=>t.frames[Math.max(0,Math.min(t.frames.length-1,e-(t.f0??0)))],rel:e=>Math.max(0,Math.min(t.frames.length-1,e-(t.f0??0))),keys:e=>r.get(e)??[],bracket(e,t){let n=i.keys(e),r=null,a=null;for(let e of n)if(e.f<=t)r=e;else{a=e;break}return{prev:r,next:a}},cause(e,t){let{prev:n,next:r}=i.bracket(e,t);if(!n&&!r)return`${e} (not keyed)`;let a=n&&t-n.f<=2?n:r&&r.f-t<=2?r:null;return a?`${a.src} f${Math.round(a.f)} ${e}`:r?n?`${e} between ${n.src} f${Math.round(n.f)} and ${r.src===n.src?``:`${r.src} `}f${Math.round(r.f)}`:`${e} before ${r.src} f${Math.round(r.f)}`:`${e} held since ${n.src} f${Math.round(n.f)}`},hand(e,t){let r=i.fr(t).c;if(!(r[`armw_${e}`]>.5))return{label:`arm ${e} (FK: aswing_${e}/abend_${e}, or armw_${e} 1 and hand_${e})`,ch:`aswing_${e}`};let a=null;for(let[t,n]of Object.entries(r)){let r=/^w_(.+)_([lr])$/.exec(t);r&&r[2]===e&&n>.5&&(!a||n>a.w)&&(a={w:n,anchor:r[1],ch:t})}if(!a)return{label:`hand_${e}`,ch:`hand_${e}`};let o=(n.fits??[]).findIndex(t=>t.anchor===a.anchor&&t.side===e);return{label:`anchor ${a.anchor}`,ch:a.ch,anchor:a.anchor,fit:o>=0?o:null}}};return i}function tC(e,t,n,r,{limit:i=16,userSpec:a}={}){if(!r.length)return r;let o=eC(e,t,n);for(let e of r.slice(0,i))try{let t=QS[e.kind]?.(o,e);t&&(e.cause=t.cause,e.hint=t.hint),t?.fix&&Object.defineProperty(e,"fix",{value:t.fix,enumerable:!1,configurable:!0})}catch(t){e.cause=`unknown`,e.hint=`no hint (${t.message})`}return ZS(r,{X:o,userSpec:a})}var nC=new Set([`ORIENT`,`BELOW`,`CLEARANCE`]),rC=e=>Math.max(0,nC.has(e.kind)?e.limit-e.worst:e.worst-e.limit),iC=e=>e.count*(1+Math.min(3,rC(e)/Math.max(Math.abs(e.limit),.01))),aC=e=>Math.round(iC(e)*100)/100,oC=/(?<![\w\-.[])[-+]?\d+(\.\d+)?|\bf\d+\b/g,sC=e=>{let t=e.subject.indexOf(`: `),n=t>=0?e.subject.slice(0,t+2):``;return`${e.kind} ${n}${e.subject.slice(n.length).replace(oC,e=>e[0]===`f`?`f#`:`#`)}`};function cC(e){for(let t of e)t.excess=Math.round(rC(t)*1e4)/1e4,t.severity=aC(t);return e.sort((e,t)=>(t.kind===`GOAL`)-(e.kind===`GOAL`)||t.severity-e.severity||t.count-e.count)}function lC(e){let t=new Map;for(let n of e){let e=sC({kind:n.kind,subject:n.msg}),r=t.get(e)??{kind:n.kind,subject:n.msg,count:0,worst:n.value,worstFrame:n.frame,first:n.frame,last:n.frame,limit:n.limit};r.count++,r.first=Math.min(r.first,n.frame),r.last=Math.max(r.last,n.frame),(nC.has(n.kind)?n.value<r.worst:n.value>r.worst)&&(r.worst=n.value,r.worstFrame=n.frame,r.subject=n.msg),t.set(e,r)}return cC([...t.values()])}function uC(e,t,n,r={}){let i=n.checks??{},a=vb(t,n.goals??[]),o=[...jd(e,t,{allow:i.allow,limits:i.limits,mouthPoints:i.mouthPoints}),...Zb(t,i),...gx(e,t,n),...md(t,i),...gd(e,t,i,{...Dd,...i.limits}),...Mx(e,t),...Lx(e,t,i),...a.issues];if(t.f0)for(let e of o)e.frame+=t.f0;let s=lC(o);return r.explain!==!1&&tC(e,t,n,s,{userSpec:r.userSpec}),{ok:o.length===0,total:o.length,problems:s.length,...n.goals?{goals:a.results}:{},groups:s}}var dC=[`contacts`,`orient`,`below`,`clearance`,`appear`];function fC(e){let t=e?.checks;if(!t||typeof t!=`object`||!dC.some(e=>Array.isArray(t[e])&&t[e].some(e=>e&&typeof e==`object`&&e.name===void 0)))return e;let n={...t};for(let e of dC)Array.isArray(t[e])&&(n[e]=t[e].map((t,n)=>t&&typeof t==`object`&&t.name===void 0?{...t,name:`${e}[${n}]`}:t));return{...e,checks:n}}var pC=(e,t)=>({...t,...e?{description:e}:{}}),mC=(e,t)=>pC(e,{type:`number`,...t}),hC=(e,t)=>pC(e,{type:`integer`,...t}),Z=(e,t)=>pC(e,{type:`string`,...t}),gC=(e,t)=>pC(e,{type:`boolean`,...t}),_C=(e,t)=>pC(t,{$ref:`#/$defs/${e}`}),vC=e=>pC(e,{enum:[`l`,`r`]}),yC=(e,t)=>pC(t,{type:`array`,prefixItems:[e,e],minItems:2,maxItems:2}),bC={vec3:{type:`array`,items:{type:`number`},minItems:3,maxItems:3},frameSpan:{type:`array`,items:{type:`integer`,minimum:0},minItems:2,maxItems:2,description:`[f0, f1] inclusive`},ref:{type:`string`,pattern:`^(${yp.join(`|`)}):.+$`,description:`a point ref (topic refs)`},checkRef:{type:`string`,pattern:`^(joint|prop|anchor):.+$`,description:`joint:<Bone> | prop:<prop>.<point> | anchor:<name>`},part:{type:`string`,description:`a body capsule: ${Tu.map(e=>e[0]).join(`, `)}; allow matches a prefix (hand = hand_l and hand_r)`},when:{oneOf:[{type:`string`,description:`a weight channel: active where it is > 0.99`},{$ref:`#/$defs/frameSpan`}]}},xC={f:hC(`frame`,{minimum:0}),set:{type:`object`,description:`{ channel: value } (topic channels)`},step:{type:`array`,items:{type:`string`},description:`channels that jump at f instead of easing in`},src:Z(`written by the skills expander; leave it out`)},SC={skill:Z(`a skill name (topic skills)`),args:{type:`object`,description:`the skill's args (topic skills with name)`},f0:hC(`first frame`,{minimum:0})},CC={type:{const:`walk`},f0:hC(`first frame; needs a standing pose keyed before it`,{minimum:0}),steps:hC(`footsteps`,{minimum:1,default:8}),step:mC(`stride, m`,{default:.5}),period:hC(`frames per step`,{default:20}),swing:hC(`frames a foot is in the air`,{default:14}),halfWidth:mC(`feet half-width, m`,{default:.08}),lift:mC(`foot lift, m`,{default:.08}),heading:yC({type:`number`},`[h0, h1] degrees; ${Lf.yaw}`),turnDistance:mC(`m walked while the heading turns h0 -> h1`,{default:.4}),pelvisHigh:mC(`hips offset over the stance foot, m`),pelvisLow:mC(`hips offset at double support, m`),firstStep:mC(`first stride, m`,{default:.4}),armSwing:mC(`degrees`,{default:14}),vary:mC(`0..2, uneven steps as people walk (build-up, slow stop, left/right, turns) around the averages above; 0 = every step period frames, step m`,{default:1,minimum:0,maximum:2})},wC={schema:{const:`cozyclay.motion-spec.v1`},fps:{const:24},frames:{oneOf:[hC(null,{minimum:1,maximum:2e4}),{const:`auto`,description:`the last skill end, generator end or key f, plus 1 (open values at their upper bound); the stored spec keeps the number`}]},label:Z(`a short name for the take`),keys:{type:`array`,items:{$ref:`#/$defs/key`}},anchors:{type:`object`,description:`name -> anchor (topic anchors)`},props:{type:`object`,description:`name -> held prop (topic props)`},fits:{type:`array`,description:`topic props`},objects:{type:`object`,description:`scene object id -> hinge, carry, switch, follow or free (topic objects)`},generators:{type:`array`,items:{$ref:`#/$defs/walk`}},checks:{type:`object`,description:`topic checks`},fix:{oneOf:[{const:!1},{type:`object`}],description:`topic fix`},use:{type:`array`,items:{$ref:`#/$defs/use`}},channels:{type:`array`,items:{type:`string`},description:`extra numeric channels your keys set`},detourRadius:mC(`m; a hand moving between targets arcs around the torso this far out`,{default:.25}),search:{type:`object`,properties:{budget:hC(`compiles at most`,{minimum:1,maximum:64,default:32})},additionalProperties:!1},goals:{type:`array`,description:`topic goals`},flow:{oneOf:[{const:!1},{type:`object`}]},idle:{const:!1,description:`held poses do not breathe`}},TC={p:_C(`vec3`,`world: a world point (m); body: root-relative, ${Lf.pole}`),bone:Z(`bone name`),offset:_C(`vec3`,`world offset, m`),from:Z(`bone`),to:Z(`bone`),t:mC(`0 = from .. 1 = to`,{default:.5}),tMin:mC(`with reach: the lowest t to slide back to`,{default:.15}),reach:vC("slide toward `from` until this arm reaches"),object:Z(`scene object id`),local:_C(`vec3`,`point in the object's frame, m`),name:{const:`mouth`},prop:Z(`a prop held by the other hand`),point:Z(`a point of that prop, or origin`),person:Z(`a character id`),socket:Z(`a socket of the object`),grasp:{enum:Mf,description:`the hand takes it by a socket`}},EC=e=>_C(`vec3`,`${e} [d, l, n] on the palm axes (d to the middle finger, l to the thumb side, n = d x l), m`),DC={world:[`p`],body:[`p`],bone:[`bone`],segment:[`from`,`to`],object:[`object`],landmark:[`name`],prop:[`prop`,`point`],person:[`person`,`bone`]},OC={hand:vC(),origin:{type:`array`,items:{type:`string`},minItems:1,description:`bones whose mean is the prop origin`},points:{type:`object`,additionalProperties:EC(`point:`),description:`name -> point`}},kC={side:vC(),anchor:Z(`an anchor name`),effector:{oneOf:[{type:`object`,properties:{prop:Z(),point:Z()},required:[`prop`,`point`]},{type:`object`,properties:{joints:{type:`array`,items:{type:`string`}}},required:[`joints`]}],description:`the hand point fitted onto the anchor`},offset:_C(`vec3`,`world offset, m`),orient:{type:`boolean`,description:`false: no grip turn`}},AC={f:hC(),pos:_C(`vec3`),rot:{type:`array`,items:{type:`number`},minItems:4,maxItems:4,description:`quat x, y, z, w`},aim:_C(`vec3`,`or rot: +Y dir`),roll:mC(`deg about aim`),lean:mC(`aim tilt`,{minimum:0,maximum:45})},jC={type:`object`,properties:{at:hC(),onto:Z(),bounce:mC(null,{default:.25,minimum:0,maximum:.6}),tumble:{type:`boolean`}},required:[`at`],additionalProperties:!1},MC={description:`as carry; keys at any frame`},NC={keys:MC,fall:MC},PC={pivot:_C(`vec3`,`world hinge point`),axis:_C(`vec3`,`default +Y`),channel:Z(`angle channel, deg`),prop:Z(`spec.props name: it rides that hand`),at:_C(`vec3`,`palm offset [d, l, n]`),along:_C(`vec3`,`+Y on the palm, fixed`),visible:Z(`channel: shown > 0.5`),level:Z(`channel: strength 0..4`),grab:hC(`hand takes it`,{default:0}),release:hC(`let go (else end)`),keys:{type:`array`,items:{type:`object`,properties:Object.fromEntries(pp.map(e=>[e,AC[e]])),required:[`f`,`pos`],additionalProperties:!1},description:`world pose at f; hand follows`},fall:{...jC,description:`or a list; topic objects`},follow:_C(`ref`),offset:_C(`vec3`),aim:{oneOf:[{enum:[`face`,`up`]},{$ref:`#/$defs/vec3`},{$ref:`#/$defs/ref`}],default:`up`}},FC={name:Z(`the QA group's name`),point:_C(`checkRef`),target:_C(`checkRef`),tol:mC(`m; default contacts 0.01, appear 0.035, supports 0.04`),when:_C(`when`),from:_C(`checkRef`),to:_C(`checkRef`),along:{oneOf:[{enum:[`face`,`up`]},{$ref:`#/$defs/vec3`}]},minCos:mC(`default 0.64`),joint:Z(`bone`),ref:Z(`bone`),min:mC(`m; below default 0.08`),part:_C(`part`),object:Z(`scene object id`),frames:_C(`frameSpan`),channel:Z(`a visibility channel`),anchor:Z(`an anchor name`),depth:mC(`allowed depth, m`)},IC={contacts:[`point`,`target`],orient:[`from`,`to`,`along`],below:[`joint`,`ref`],clearance:[`part`,`object`,`min`],appear:[`channel`,`joint`,`anchor`],supports:[`object`],allow:[`part`,`object`,`depth`]},LC={limits:{type:`object`,properties:Object.fromEntries(Object.entries(Dd).map(([e,t])=>[e,mC(null,{default:t})])),additionalProperties:!1},mouthPoints:{type:`array`,items:Z(`prop.point`),description:`prop points allowed at the mouth`}},RC={name:Z(),near:yC({$ref:`#/$defs/ref`},`distance <= tol`),above:yC({$ref:`#/$defs/ref`},`a.y - b.y >= by`),moved:Z("a ref or an object id: an object's base moves at least `by` from the scene pose; any other point (prop:, joint:, landmark:, anchor:) at least `by` from where it is at at[0] (at: [f0, f1])"),still:Z("a ref or an object id: stays within `tol` of where moved measures from (an object: its scene pose; a point: where it is at at[0], at: [f0, f1])"),speed:Z("a point ref: its speed reaches `by` m/s (mode any by default)"),tol:mC(`m; near default 0.05, still 0.01`),by:mC(`above m, default 0; moved m, default 0.05; speed m/s, needed`),at:{oneOf:[hC(null,{minimum:0}),{$ref:`#/$defs/frameSpan`}],description:`absolute frame or span`},mode:{enum:[`all`,`any`],description:"every frame of `at`, or one; default all, speed any"},after:Z(`a goal's name: at starts after the first frame that goal holds`),before:Z(`a goal's name: at ends before the first frame that goal holds`)},zC={name:Z(`the key of the answer`),distance:yC({$ref:`#/$defs/ref`},`min/max/mean/first/last m`),position:_C(`ref`,`world points`),frames:_C(`frameSpan`,`absolute, default the whole take`),every:hC(`position: every n frames (<= 16 rows)`,{minimum:1})},BC={reach:gC(`wrist targets past reach go onto it softly; hips lower for near-miss ankles`,{default:!0}),slide:gC(`lifts sunk soles; a planted heel or ball drifting under 1 cm stays put; a heel-up foot pivots on its ball`,{default:!0}),penetration:{oneOf:[{type:`boolean`},{type:`number`,minimum:0,maximum:.05}],default:0,description:`push hands out of boxes up to this depth, m (true = 0.02)`},self:gC(`arms kept out of the body's skin (wrists, elbows)`,{default:!0}),retime:gC(`speed spikes borrow frames from the neighbouring keys`,{default:!1})},VC={joint:`joint:<Bone>`,bone:`bone:<Bone> (= joint:)`,prop:`prop:<prop>.<point> (origin exists)`,anchor:`anchor:<name>`,landmark:`landmark:mouth`,object:`object:<id>[.center|.top|.base], a body or group; bare = its surface (distance)`,person:`person:<id>.<Bone>`},HC=e=>e.f0+16+(e.steps??8)*(e.period??20)+18,UC=e=>({type:`array`,items:{type:`number`},minItems:2,maxItems:2,description:e}),WC=e=>Object.fromEntries(e.map(e=>[e,Z(e===`car`?`car prefix: fills <car>_Seat_Driver, _Seat_Driver_Back, _Door_L/R, _Door_Handle, _Steering_Wheel`:`scene object id (overrides the car default)`)])),GC=Object.fromEntries(mp.filter(e=>e!==`type`&&e!==`f0`).map(e=>[e,CC[e]])),KC={standIdle:{args:{at:UC(`[x, z] world m; default the root keyed before f0`),heading:mC(`degrees (yaw); default the keyed yaw`),until:hC(`hold the pose to this frame`)},needs:`args.at, or a root keyed before f0`,frames:`1 (to args.until when given)`,adds:[`keys: a standing pose, FK arms down`],example:{f0:0,args:{at:[0,0],heading:0}},place:{at:.03}},walkTo:{args:{to:UC(`[x, z] world m: the heading turns toward it and the steps cover the distance`),...GC,heading:{oneOf:[mC(),CC.heading],description:`degrees: h1, or [h0, h1]`},arrive:hC(`with to and no steps/period/step/swing: the frame to end by (feet together); the engine picks the cadence (observations.planned)`)},needs:`a standing pose keyed before f0`,frames:`16 + steps * period + 18`,adds:[`keys: a walk ending feet together`],example:{f0:10,args:{to:[.5,1.5]}},tune:{lift:.01,halfWidth:.01,firstStep:.01,step:.01},place:{firstStep:.03,step:.03}},reachGrip:{args:{anchor:Z(`not ending in _l/_r`),side:vC(`the hand`),reach:hC(`frames to reach`,{default:20}),hold:hC(`frames held`,{default:22}),release:hC(`frames to let go`,{default:12}),elbow:_C(`vec3`,`pole`),fingers:{enum:jf,default:`grip`},define:{type:`object`,description:`defines anchor args.anchor`},orient:{type:`boolean`,description:`false: no grip turn`}},required:[`anchor`,`side`],needs:`args.anchor in anchors or define`,frames:`reach + hold + release (54)`,adds:[`props.<anchor>Grip (fingers point)`,`fits: fingers on the anchor`,`checks.contacts "fingers on <anchor>"`,`checks.allow hand on its object`,`keys: w_<anchor>_<side>, fingers_<side>, armw_<side>`],example:{f0:10,args:{anchor:`bar`,side:`r`,define:{kind:`world`,p:[-.2,1.2,.33]}}},tune:{reach:2,release:2}},sitInSeat:{args:{...WC([`car`,`seat`,`seatBack`,`wheel`]),offset:{..._C(`vec3`,`hips from the seat top, seat frame`),default:[0,.17,.02]},floor:mC(`floor y under the feet, m`)},needs:`args.car or args.seat (a scene box)`,frames:`1`,adds:[`keys: seated, hands at the wheel`,`checks.supports seat`,`checks.allow seat, back, wheel`],example:{f0:0,args:{car:`Car`}}},exitCar:{args:{...WC([`car`,`seat`,`door`,`handle`]),side:vC(`driver door side, default l`),channel:Z(`the door hinge channel`,{default:`door`})},needs:`seated in the car before f0 (sitInSeat); a car on the ground (seat base y 0.4)`,frames:`246`,adds:[`objects: door and handle hinges`,`anchors handle, lthigh, rthigh`,`props.grip`,`fits, checks.contacts, checks.allow`],example:{f0:0,args:{car:`Car`}}},flip:{args:{kind:{enum:[`back`,`front`,`cartwheel`],default:`back`,description:`a standing back or front tuck, or a cartwheel`},travel:mC(`back/front: m along the heading at landing (default back -0.25, front 0.4)`),side:vC(`cartwheel: toward the character's l (default) or r`),heading:mC(`degrees (yaw); default the keyed yaw`)},needs:`a standing pose keyed before f0`,frames:`back/front 58 (one turn, the hips 0.5 m up); cartwheel 68`,adds:[`keys every frame: back/front crouch, push-off, a ballistic tucked flight turning the whole body (pitch to -360 back, +360 front) and a landing that stands up`,`cartwheel: a side step, then the whole body rolls 360 like a wheel on the straddled legs and the arms overhead, the hands planted in turn`,`whole-body pitch and roll take full turns in any key (no range); past 60 deg the knee and elbow poles and the feet turn with the body`],example:{f0:10,args:{kind:`back`}}},smokeCigarette:{args:{until:hC(`hold to this frame; default the last frame; under f0+264 the beats are paced to fit`),kit:{type:`object`,properties:{cig:Z(`the cigarette kit's rootId (object.createKit)`),lighter:Z(`the lighter kit's rootId`),exhale:Z(`the exhale kit's rootId (or an effect): it follows the mouth`)},required:[`cig`,`lighter`],additionalProperties:!1,description:`kits the skill carries and lights: it adds their spec.objects entries itself`}},needs:`a stand or squat keyed before f0`,frames:`265 nominal; fits 199..264 by pacing`,adds:[`anchors lpocket, rpocket, hold, mouth, flame`,`props cig, lighter`,`channels cig_vis, lit_vis, flame_vis, ember_vis, exhale, ember`,`checks contacts, orient, below, appear, mouthPoints`],example:{f0:0,args:{}}},hitReaction:{args:{dir:UC(`[x, z] the way the body is thrown`),from:Z(`or what hits it: object:<id> | person:<id> (thrown away from it)`),speed:mC(`launch speed, m/s (a shove 2, a car at 30 km/h about 8)`,{default:4,exclusiveMinimum:0}),land:{enum:[`back`,`front`],description:`default: back when hit from the front`}},needs:`a pose; dir or from`,frames:`~40`,adds:[`keys: thrown to rest`],example:{f0:10,args:{dir:[0,-1],speed:3}}}},qC={_l:`_r`,_r:`_l`},JC=/^(yaw|roll|spine_yaw|spine_roll|head_yaw|head_roll|fyaw_[lr]|wtwist_[lr]|wflex_[lr])$/,YC=/^(root|foot_[lr]|hand_[lr])$/,XC=/^(knee|elbow)_[lr]$/,ZC=/^(yaw|fyaw_[lr])$/,QC=e=>e&&typeof e==`object`?structuredClone(e):e,$C=e=>e.replace(/_(l|r)$/,e=>qC[e]).replace(/^(Left|Right)/,e=>e===`Left`?`Right`:`Left`),ew=()=>({origin:[0,0,0],yaw:0,mirror:!1,negate:new Set,names:{}}),tw=(e,t)=>R(e.origin,G(Ss(e.yaw),e.mirror?[-t[0],t[1],t[2]]:t)),nw=(e,t)=>e.mirror?[-t[0],t[1],t[2]]:t.slice();function rw(e,t){if(!e.mirror)return t;let n=/^w_(.+)_([lr])$/.exec(t);return n?`w_${e.names[n[1]]??n[1]}_${n[2]===`l`?`r`:`l`}`:/_[lr]$/.test(t)?$C(t):t}function iw(e,t){let n={};for(let[r,i]of Object.entries(t)){let t=QC(i);YC.test(r)?t=tw(e,t):XC.test(r)?t=nw(e,t):typeof t==`number`&&(e.mirror&&(JC.test(r)||e.negate.has(r))&&(t=-t),ZC.test(r)&&(t+=e.yaw)),n[rw(e,r)]=t}return n}function aw(e,t=0,n=ew()){let r=[],i=e=>rw(n,e);return{state:e,keys:r,frame:n,at(i,a){let o=iw(n,a);Object.assign(e,QC(o)),r.push({f:t+i,set:o})},hold(n,...a){r.push({f:t+n,set:Object.fromEntries(a.filter(t=>e[i(t)]!==void 0).map(t=>[i(t),QC(e[i(t)])]))})},step(n,a,o){let s=i(a);r.push({f:t+n-1,set:{[s]:e[s]}}),e[s]=o,r.push({f:t+n,set:{[s]:o},step:[s]})}}}var ow=(e,t)=>{throw Error(`MOTION_SPEC_INVALID: ${e}: ${t}`)};function sw(e,t,n){let r=e.scene?.objects?.[n];return r||ow(e.tag,`args.${t} "${n}" is not a scene object`),r}var cw=e=>Math.atan2(e[0][2],e[2][2])*180/Math.PI,lw=(e,t)=>Pf[e]?Pf[e].map((e,n)=>n===2&&t===`r`?-e:e):[0,0,0];function uw(e){let{sk:t,args:n,state:r}=e,i=t.index,a=t.restWorldPos,o=a[i.LeftFoot][1],s=n.heading??r.yaw??0,c=n.at??(r.root?[r.root[0],r.root[2]]:null);c||ow(e.tag,`needs args.at: [x, z] (no root is keyed before f0)`);let l=[c[0],0,c[c.length-1]],u=Ss(s),d=e=>{let t=R(l,G(u,e));return t[1]=o,t},f={root:[l[0],a[i.Hips][1]-.01,l[2]],yaw:s,pitch:0,roll:0,spine_yaw:0,spine_pitch:0,spine_roll:0,head_yaw:0,head_pitch:0,foot_l:d([.09,0,-.03]),foot_r:d([-.09,0,.03]),fyaw_l:s,fyaw_r:s,fpitch_l:0,fpitch_r:0,knee_l:[.05,0,1],knee_r:[-.05,0,1],armw_l:0,armw_r:0,aswing_l:0,aswing_r:0,abend_l:0,abend_r:0,arm_hang:1},p=[{f:e.f0,set:f}];return n.until!==void 0&&p.push({f:n.until,set:structuredClone(f)}),{keys:p,end:n.until??e.f0}}function dw(e){let{args:t,state:n}=e;(!n.foot_l||!n.foot_r||!n.root)&&ow(e.tag,`needs a standing pose keyed before f0 (use standIdle or another skill first)`);let r={type:`walk`,f0:e.f0,...t};delete r.to,delete r.arrive;let i=n.yaw??0,a=t.step??.5,o=t.firstStep??.4;if(t.to){let e=[(n.foot_l[0]+n.foot_r[0])/2,(n.foot_l[2]+n.foot_r[2])/2],s=t.to[0]-e[0],c=t.to[t.to.length-1]-e[1],l=Math.hypot(s,c),u=Math.atan2(s,c)*180/Math.PI;for(;u-i>180;)u-=360;for(;u-i<-180;)u+=360;r.heading=t.heading??[i,u],r.steps=t.steps??Math.max(2,2+Math.round((l-o)/a))}typeof r.heading==`number`&&(r.heading=[i,r.heading]);let s=mv(r,e.keys,e.sk,e.tag),c=HC(r),l=e.frames-1;return c>l&&Math.max(...s.filter(e=>e.f<c).map(e=>e.f))<=l?{keys:s.filter(e=>e.f<=l),end:l,cut:`settle cut at f${l} (hold to the end)`}:{keys:s,end:c}}function fw(e){let{args:t,state:n}=e,r=t.side,i=t.anchor;r!==`l`&&r!==`r`&&ow(e.tag,`args.side must be "l" or "r", got ${JSON.stringify(r)}`),(typeof i!=`string`||/_[lr]$/.test(i))&&ow(e.tag,`args.anchor must name an anchor (not ending in _l/_r)`);let a=t.reach??20,o=t.hold??22,s=t.release??12,c=(t.define??e.anchors?.[i])?.grasp,l=t.fingers??Nf[c]??`grip`,u=`w_${i}_${r}`,d=`fingers_${r}`,f=`armw_${r}`,p=`elbow_${r}`,m=!(n[f]>.5),h=e.frames-1,g=e.f0+a+o<=h&&e.f0+a+o+s>h;for(let[e,t]of[[u,0],[d,{[l]:0}],[f,0]])n[e]===void 0&&(n[e]=t);let _=aw(n,e.f0);_.hold(0,u,d,f,p),_.at(a,{[u]:1,[d]:{...n[d],[l]:1},[f]:1,...t.elbow?{[p]:t.elbow}:{}}),_.hold(a+o,u,d,f,p),g||_.at(a+o+s,{[u]:0,[d]:{...n[d],[l]:0},...m?{[f]:0}:{}});let v=r===`l`?`Left`:`Right`,y=`${i}Grip`,b=t.define?{[i]:t.define}:{},x=t.define??e.anchors?.[i],S=x?.kind===`object`?x.object:x?.kind===`person`?`person:${x.person}`:null;return{keys:_.keys,end:g?h:e.f0+a+o+s,...g?{cut:`release cut at f${h} (hold to the end)`}:{},anchors:b,props:{[y]:{hand:r,origin:[`${v}HandIndex2`,`${v}HandMiddle2`],points:{fingers:lw(c,r)}}},fits:[{side:r,anchor:i,effector:{prop:y,point:`fingers`},...t.orient===!1?{orient:!1}:{}}],checks:{contacts:[{name:`fingers on ${i}`,point:`prop:${y}.fingers`,target:`anchor:${i}`,tol:.04,when:u}],allow:S?[{part:`hand`,object:S,depth:.04}]:[]}}}var pw=[.54,.4,-.075],mw=.4,hw=1.0427487182617188,gw=new Set([`l`,`r`]);function _w(e,t=`l`){let n=e.car;return{seat:e.seat??(n&&`${n}_Seat_Driver`),seatBack:e.seatBack??(n&&`${n}_Seat_Driver_Back`),door:e.door??(n&&`${n}_Door_${t.toUpperCase()}`),handle:e.handle??(n&&`${n}_Door_Handle`),wheel:e.wheel??(n&&`${n}_Steering_Wheel`)}}function vw(e,t,n){let r=sw(e,`seat`,t);Math.abs(r.pos[1]-mw)>.05&&ow(e.tag,`seat "${t}" stands at y ${r.pos[1]}; the car skills are tuned for a seat base at y ${mw} (a car on the ground)`);let i=ew();i.yaw=cw(r.R),i.mirror=n===`r`;let a=z(r.pos,G(Ss(i.yaw),i.mirror?[-pw[0],pw[1],pw[2]]:pw));return i.origin=[a[0],0,a[2]],i.names={lthigh:`rthigh`,rthigh:`lthigh`},i}var yw=[[`hand`,`thigh*`,.07],[`farm`,`thigh*`,.07],[`hand`,`hips`,.07],[`farm`,`hips`,.07],[`hand_l`,`hand_r`,.035]].map(([e,t,n])=>({part:e,object:t,depth:n})),bw=e=>({A:e.restWorldPos[e.index.LeftFoot][1],H:t=>t+(e.restWorldPos[e.index.Hips][1]-hw)});function xw(e){let{args:t,sk:n}=e,r=_w(t),i=sw(e,`seat`,r.seat),{A:a}=bw(n),o=cw(i.R),s=e=>G(Ss(o),e),c=t.offset??[0,.17,.02],l=t.floor??i.pos[1],u=R(R(i.pos,G(i.R,[0,2*i.half[1],0])),s(c)),d=e=>{let t=R(u,s([e,0,.452]));return t[1]=l+a,t},f=e=>R(u,s([e,.348,.324])),p={root:u,yaw:o,pitch:0,spine_pitch:-12,spine_yaw:0,spine_roll:0,head_yaw:0,head_pitch:10,foot_l:d(.17),foot_r:d(-.17),fyaw_l:o,fyaw_r:o,fpitch_l:0,fpitch_r:0,knee_l:[.15,.2,1],knee_r:[-.15,.2,1],armw_l:1,armw_r:1,hand_l:f(.22),hand_r:f(-.22),elbow_l:[.6,-1,-.3],elbow_r:[-.6,-1,-.3],aswing_l:0,aswing_r:0,abend_l:0,abend_r:0,wtwist_l:0,wtwist_r:0,wflex_l:0,wflex_r:0},m=[{part:`torso_lo`,object:r.seat,depth:.04},{part:`hips`,object:r.seat,depth:.04},{part:`thigh`,object:r.seat,depth:.045}];return r.seatBack&&e.scene.objects[r.seatBack]&&m.push({part:`torso`,object:r.seatBack,depth:.03}),r.wheel&&e.scene.objects[r.wheel]&&m.push({part:`hand`,object:r.wheel,depth:.05}),{keys:[{f:e.f0,set:p}],checks:{supports:[{object:r.seat,part:`hips`,tol:.04}],allow:m},end:e.f0}}function Sw(e){let t=e.args.side??`l`;gw.has(t)||ow(e.tag,`args.side must be "l" or "r", got ${JSON.stringify(t)}`);let n=_w(e.args,t),r=vw(e,n.seat,t),i=e.args.channel??`door`;for(let[t,r]of[[`door`,n.door],[`handle`,n.handle]])sw(e,t,r);r.negate.add(i);let a={[i]:0,w_handle_l:0,w_lthigh_l:0,w_rthigh_r:0,fingers_l:{grip:0,fist:0}},o=aw(e.state,e.f0,r),s={};for(let[t,n]of Object.entries(a))e.state[rw(r,t)]===void 0&&(s[t]=n);Object.keys(s).length&&o.at(0,s),Cw(o,i,bw(e.sk));let c=e.scene.objects[n.door],l=(r.mirror?-1:1)*c.half[0],u={pivot:R(c.pos,G(c.R,[l,0,c.half[2]])),axis:[0,1,0],channel:i},d=e=>r.mirror?$C(e):e,f=e=>r.mirror?{lthigh:`rthigh`,rthigh:`lthigh`}[e]??e:e,p=(e,t)=>({kind:`segment`,from:d(`${e}UpLeg`),to:d(`${e}Leg`),t:.45,tMin:.15,offset:[0,.07,0],reach:r.mirror?t===`l`?`r`:`l`:t}),m=r.mirror?`r`:`l`;return{keys:o.keys,objects:{[n.door]:u,[n.handle]:u},anchors:{handle:{kind:`object`,object:n.handle,local:nw(r,[-.005,.015,0])},[f(`lthigh`)]:p(`Left`,`l`),[f(`rthigh`)]:p(`Right`,`r`)},props:{grip:{hand:m,origin:[d(`LeftHandIndex2`),d(`LeftHandMiddle2`)],points:{fingers:[0,0,0]}}},fits:[{side:m,anchor:`handle`,effector:{prop:`grip`,point:`fingers`}}],checks:{contacts:[{name:`fingers on the door handle`,point:`prop:grip.fingers`,target:`anchor:handle`,tol:.04,when:`w_handle_${m}`}],allow:[{part:`hand`,object:n.door,depth:.03},{part:`hand`,object:n.handle,depth:.04},...yw]},end:e.f0+246}}function Cw(e,t,{A:n,H:r}){e.hold(12,`w_handle_l`,`fingers_l`,`head_yaw`,`spine_yaw`,`spine_roll`,`elbow_l`,`hand_l`),e.at(32,{w_handle_l:1,fingers_l:{grip:1,fist:0},head_yaw:35,spine_yaw:10,spine_roll:-8,elbow_l:[.3,-1,-.6],hand_l:[1,.96,.06]}),e.hold(32,t),e.at(38,{[t]:-3}),e.at(50,{[t]:-10,spine_roll:-16,spine_yaw:14}),e.hold(54,`w_handle_l`,`fingers_l`,`w_lthigh_l`,`elbow_l`,t),e.at(66,{w_handle_l:0,fingers_l:{grip:0,fist:0},[t]:-10}),e.at(70,{w_lthigh_l:1,elbow_l:[.5,-.3,-1],spine_roll:-3,spine_yaw:6}),e.at(84,{[t]:-68,head_yaw:40}),e.hold(64,`w_rthigh_r`,`elbow_r`,`spine_pitch`),e.at(80,{w_rthigh_r:1,elbow_r:[-.5,-.3,-1],spine_roll:0,spine_yaw:0,spine_pitch:0}),e.hold(84,`yaw`,`root`,`foot_l`,`foot_r`,`fyaw_l`,`fyaw_r`,`knee_l`,`knee_r`),e.at(92,{foot_r:[.4,mw+n+.03,.36],fyaw_r:15}),e.at(97,{foot_l:[.96,.62,.32],fyaw_l:40,knee_l:[.5,.4,1],yaw:30,root:[.64,.915,-.06]}),e.at(101,{foot_r:[.56,mw+n,.34],fyaw_r:35}),e.at(105,{foot_l:[1.18,.5,.1],fyaw_l:60}),e.at(116,{foot_l:[1.28,n,-.12],fyaw_l:75,knee_l:[.4,.5,1],yaw:62,root:[.82,.9,-.06],head_yaw:20,knee_r:[.1,.6,1],spine_pitch:10}),e.hold(120,`foot_r`,`fyaw_r`),e.at(129,{foot_r:[.94,.64,.36],fyaw_r:65,knee_r:[0,.5,1],yaw:80,root:[.86,.9,-.03]}),e.at(135,{foot_r:[1.18,.5,.26],fyaw_r:85}),e.hold(142,`foot_l`,`fyaw_l`),e.at(144,{foot_r:[1.29,n,.22],fyaw_r:90,knee_r:[-.1,.4,1],yaw:90,root:[.88,.9,.02],head_yaw:0,knee_l:[.1,.4,1],spine_pitch:16}),e.hold(144,`head_pitch`,`pitch`,`elbow_l`,`elbow_r`),e.at(152,{spine_pitch:28,head_pitch:-8,root:[.91,.9,.02],elbow_l:[.6,-.2,-1],elbow_r:[-.6,-.2,-1]}),e.at(162,{spine_pitch:50,pitch:22,head_pitch:-36,root:[.99,.91,.02]}),e.at(174,{root:[1.09,.96,.02],spine_pitch:36,pitch:12,head_pitch:-24}),e.hold(166,`armw_l`,`armw_r`),e.at(186,{root:[1.19,r(1),.02],spine_pitch:12,pitch:3,head_pitch:-8,armw_l:0,armw_r:0}),e.hold(187,`w_lthigh_l`,`w_rthigh_r`),e.at(190,{w_lthigh_l:0,w_rthigh_r:0}),e.at(196,{root:[1.21,r(1.005),.02],spine_pitch:0,pitch:0,head_pitch:0}),e.at(205,{root:[1.26,r(.985),.165]}),e.hold(208,`foot_l`,`fyaw_l`),e.at(212,{root:[1.3,r(.985),.16]}),e.at(214,{foot_l:[1.4,n+.06,-.12]}),e.at(220,{foot_l:[1.535,n,-.132],fyaw_l:110,root:[1.38,r(.98),.05]}),e.at(230,{root:[1.5,r(.975),-.08]}),e.hold(232,`foot_r`,`fyaw_r`),e.at(236,{root:[1.52,r(.975),-.085]}),e.at(239,{foot_r:[1.53,n+.07,.09]}),e.at(246,{foot_r:[1.765,n,-.048],fyaw_r:125,yaw:110,root:[1.62,r(.98),-.08]})}var ww=[`cig`,`lighter`,`exhale`],Tw={follow:`landmark:mouth`,aim:`face`,visible:`exhale`},Ew={cig:`cigarette`,lighter:`lighter`},Dw=.7,Ow=[-.05,.07,.1],kw=.88,Aw=.2,jw=[.245,.08,.02],Mw={l:[.13,-.035,.08],r:[-.13,-.035,.08]};function Nw(e,t){return Object.entries(e?.objects??{}).map(([e,t])=>[e,t,!0]).concat(Object.entries(e?.others??{}).map(([e,t])=>[e,t,!1])).filter(([,e])=>e.ancestors?.includes(t))}function Pw(e,t,n){let r=t[n];return(typeof r!=`string`||!Gl(e.scene)[r])&&ow(e.tag,`args.kit.${n} ${JSON.stringify(r)} is not a group in the scene; object.createKit { kit: "${Ew[n]}" } answers its rootId`),r}var Fw={cig:.03,lighter:.045},Iw=.07,Lw=.04;function Rw(e,t){let n=e.args.kit;if(n===void 0)return null;(!n||typeof n!=`object`||Array.isArray(n))&&ow(e.tag,`args.kit must be { cig, lighter, exhale? } (kit root ids), got ${JSON.stringify(n)}`);for(let t of Object.keys(n))ww.includes(t)||ow(e.tag,`args.kit has unknown field "${t}"; fields: ${ww.join(`, `)}`);let r=Pw(e,n,`cig`),i=Pw(e,n,`lighter`),a={[r]:{prop:`cig`,grab:t.cig,at:[0,0,0],along:[0,0,1],visible:`cig_vis`},[i]:{prop:`lighter`,grab:t.lit,release:t.unlit,at:[0,0,0],along:[0,1,0],visible:`lit_vis`}};for(let[t,n,i]of Nw(e.scene,r))i&&n.glow||!i&&n.renderer===`light`?a[t]={visible:`ember_vis`,level:`ember`}:!i&&n.renderer===`effect`&&(a[t]={visible:`ember_vis`});for(let[t,n,r]of Nw(e.scene,i))(r&&n.glow||!r&&n.renderer===`light`)&&(a[t]={visible:`flame_vis`});n.exhale!==void 0&&((typeof n.exhale!=`string`||!(e.scene?.others?.[n.exhale]||e.scene?.objects?.[n.exhale]||Gl(e.scene)[n.exhale]))&&ow(e.tag,`args.kit.exhale ${JSON.stringify(n.exhale)} is not a scene object; object.createKit { kit: "exhale" } answers its rootId (it follows the mouth)`),a[n.exhale]={...Tw});let o=e=>t.squat?Iw:e;return{objects:a,allow:[[`thigh_r`,r,o(Fw.cig)],[`thigh_l`,i,o(Fw.lighter)],[`hips`,r,o(Fw.cig)],[`hips`,i,o(Fw.lighter)],...t.squat?[[`shin`,r,Iw],[`shin`,i,Iw],[`hand_l`,`thigh_l`,Lw],[`hand_r`,`thigh_r`,Lw],[`hand`,`hips`,Lw]]:[]].map(([e,t,n])=>({part:e,object:t,depth:n}))}}function zw(e){let{sk:t,state:n}=e,r=t.index,i=t.restWorldPos;if(!(n.root[1]<Dw*i[r.Hips][1]))return null;let{s:a}=Nl(t,n),o=n.yaw??0,s=a.P[r.RightArm],c=e=>G(Ss(-o),z(e,n.root)),l=H(z(i[r.RightForeArm],i[r.RightArm]))+H(z(i[r.RightHand],i[r.RightForeArm])),u=R(a.P[r.RightLeg],G(Ss(o),Ow)),d=H(z(u,s)),f=c(d>kw*l?R(s,B(z(u,s),kw*l/d)):u),p=R(c(Is(a,r.Head,t.landmarks.mouth)),[0,0,Aw]),m=Mc(t),h=(e,r)=>{let i=R(n.root,G(Ss(o),[r*jw[0],jw[1],jw[2]]));return c(m?Ac(m.body,t,a,i,jc,m.skip):i)},g=e=>e.map(e=>Math.round(e*1e3)/1e3);return{hold:g(f),mouthOut:g(p),lpocket:g(h(`Left`,1)),rpocket:g(h(`Right`,-1))}}var Bw={TW_M:40,FX_M:0,TW_H:0,FX_H:10,TW_L:-80,FX_L:-50},Vw=15,Hw=20,Uw=[[`hand_l`,`hand_r`,.045],[`hand_r`,`hand_l`,.045],[`farm_r`,`hand_l`,.02],[`hand_l`,`farm_r`,.02]].map(([e,t,n])=>({part:e,object:t,depth:n})),Ww=[.4,-1,.6],Gw=[-.4,-1,-.3],Kw=[.9,-.6,.3],qw=[`armw_r`,`armw_l`,`w_rpocket_r`,`w_lpocket_l`,`w_hold_r`,`w_mouth_r`,`w_flame_l`,`elbow_r`,`elbow_l`,`wtwist_r`,`wflex_r`,`wtwist_l`,`wflex_l`,`head_pitch`,`head_yaw`,`spine_pitch`,`root`,`fingers_l`,`fingers_r`,`cig_vis`,`lit_vis`,`flame_vis`,`ember_vis`,`exhale`,`ember`],Jw=264,Yw=.75,Xw=Math.ceil(Jw*Yw),Zw=e=>(e/24).toFixed(1),Qw={armw_r:0,armw_l:0,w_rpocket_r:0,w_lpocket_l:0,w_hold_r:0,w_mouth_r:0,w_flame_l:0,elbow_r:[-.5,-.4,-1],elbow_l:[.5,-.4,-1],wtwist_r:0,wflex_r:0,wtwist_l:0,wflex_l:0,head_pitch:0,head_yaw:0,spine_pitch:0,fingers_l:{grip:0,fist:0},fingers_r:{cigarette:0},cig_vis:0,lit_vis:0,flame_vis:0,ember_vis:0,exhale:0,ember:0};function $w(e){let t=e.args.until??(e.auto?e.f0+Jw:e.frames-1),n=t-e.f0;n<Xw&&ow(e.tag,`needs frames f${e.f0}..f${e.f0+Xw} at least: 199 frames, ${Zw(199)} s at 24 fps, paced ${Yw} (265 frames, ${Zw(265)} s, at its own pace); it has f${e.f0}..f${t}, `+(e.args.until===void 0?`so set frames >= ${e.f0+Xw+1} or frames: "auto"`:`so set args.until >= ${e.f0+Xw}`)),Array.isArray(e.state.root)||ow(e.tag,`needs a pose keyed before f0 (root): standing or squatting`);let r=Object.fromEntries(Object.entries(Qw).filter(([t])=>e.state[t]===void 0));Object.keys(r).length&&Object.assign(e.state,structuredClone(r)),e.state.head_yaw=0;let i=e.state.head_pitch,a=(e.state.pitch??0)+e.state.spine_pitch,o=e=>e+i,s=a?G(xs(a),Ww):Ww,c=a?G(xs(a),Gw):Gw,l=zw(e),u=e.self?l?Hw:Vw:Bw.FX_M;l&&(e.state.w_mouthOut_r=0);let d=n<Jw?n/Jw:1,f=e=>Math.round(e*d),p=aw(e.state,e.f0),m=d===1?p:{...p,at:(e,t)=>p.at(f(e),t),hold:(e,...t)=>p.hold(f(e),...t),step:(e,t,n)=>p.step(f(e),t,n)},h=e.state.root.slice(),g=e.state.yaw??0,_=(e,t)=>{m.hold(e,`w_mouth_r`,`w_hold_r`,`wtwist_r`,`wflex_r`,`elbow_r`,`head_pitch`,`root`,...l?[`w_mouthOut_r`]:[]),l&&m.at(Math.round((e+t)/2),{w_hold_r:0,w_mouthOut_r:1,w_mouth_r:0}),m.at(t,{w_mouth_r:1,w_hold_r:0,...l?{w_mouthOut_r:0}:{},wtwist_r:Bw.TW_M,wflex_r:u,elbow_r:s,head_pitch:o(6),root:h})},v=(e,t)=>{m.hold(e,`w_mouth_r`,`w_hold_r`,`wtwist_r`,`wflex_r`,`elbow_r`,`head_pitch`,...l?[`w_mouthOut_r`]:[]),l&&m.at(Math.round((e+t)/2),{w_mouth_r:0,w_mouthOut_r:1,w_hold_r:0}),m.at(t,{w_mouth_r:0,w_hold_r:1,...l?{w_mouthOut_r:0}:{},wtwist_r:Bw.TW_H,wflex_r:Bw.FX_H,elbow_r:c,head_pitch:o(0)})};m.hold(0,...qw),m.at(2,{w_rpocket_r:1,elbow_r:[-.5,-.4,-1]}),m.hold(6,`armw_r`,`w_rpocket_r`,`elbow_r`,`fingers_r`),m.at(20,{armw_r:1}),m.at(28,{fingers_r:{cigarette:1}}),m.step(28,`cig_vis`,1),m.hold(36,`w_rpocket_r`,`w_mouth_r`,`wtwist_r`,`wflex_r`,`elbow_r`,`head_pitch`),m.at(58,{w_rpocket_r:0,w_mouth_r:1,wtwist_r:Bw.TW_M,wflex_r:u,elbow_r:s,head_pitch:o(6)}),m.at(2,{w_lpocket_l:1,elbow_l:[.5,-.4,-1]}),m.hold(12,`armw_l`,`w_lpocket_l`,`elbow_l`,`fingers_l`),m.at(26,{armw_l:1}),m.at(34,{fingers_l:{grip:0,fist:1}}),m.step(35,`lit_vis`,1),m.hold(44,`w_lpocket_l`,`w_flame_l`,`wtwist_l`,`wflex_l`,`elbow_l`),m.at(60,{w_lpocket_l:0,w_flame_l:1,wtwist_l:Bw.TW_L,wflex_l:Bw.FX_L,elbow_l:Kw}),m.step(63,`flame_vis`,1),m.step(73,`ember_vis`,1),m.step(79,`flame_vis`,0),m.step(73,`ember`,1),m.at(80,{ember:2}),m.hold(90,`ember`),m.at(104,{ember:.6}),m.hold(194,`ember`),m.at(200,{ember:2}),m.hold(212,`ember`),m.at(224,{ember:.6}),m.step(116,`exhale`,1),m.step(138,`exhale`,0),m.step(238,`exhale`,1),m.step(260,`exhale`,0),m.hold(80,`w_flame_l`,`w_lpocket_l`,`wtwist_l`,`wflex_l`,`elbow_l`);let y=l&&e.self?8:0;m.at(y?96+y:l?100:96,{w_flame_l:0,w_lpocket_l:1,wtwist_l:0,wflex_l:0,elbow_l:[.5,-.4,-1]}),m.hold(101+y,`fingers_l`),m.step(102+y,`lit_vis`,0),m.hold(104+y,`armw_l`,`w_lpocket_l`),m.at(112,{fingers_l:{grip:0,fist:0}}),m.at(120,{armw_l:0,w_lpocket_l:1}),m.at(123,{w_lpocket_l:0}),v(92,114),m.at(124,{head_pitch:o(-14)}),m.at(140,{head_pitch:o(0)});let b=[Math.cos(g*Math.PI/180),0,-Math.sin(g*Math.PI/180)];m.hold(120,`root`,`head_yaw`),m.at(146,{root:h.map((e,t)=>e+.03*b[t]-(t===1?.005:0)),head_yaw:-22}),m.at(168,{head_yaw:0}),_(170,194),v(212,236),m.at(246,{head_pitch:o(-14)}),m.at(264,{head_pitch:o(0)}),p.hold(n,...qw,...l?[`w_mouthOut_r`]:[]);let x=!!l&&e.self,S=Rw(e,{cig:e.f0+f(28),lit:e.f0+f(35),unlit:e.f0+f(x?110:102),squat:x});return{keys:p.keys,end:t,...d<1?{paced:Math.floor(d*100)/100}:{},channels:[`exhale`,`ember`],...S?{objects:S.objects}:{},anchors:{lpocket:{kind:`body`,p:e.self&&l?.lpocket||Mw.l},rpocket:{kind:`body`,p:e.self&&l?.rpocket||Mw.r},hold:{kind:`body`,p:l?.hold??[-.24,.03,.06]},...l?{mouthOut:{kind:`body`,p:l.mouthOut}}:{},mouth:{kind:`landmark`,name:`mouth`},flame:{kind:`prop`,prop:`cig`,point:`tip`,offset:[0,-.02,0]}},props:{cig:{hand:`r`,origin:[`RightHandIndex2`,`RightHandMiddle2`],points:{filter:[0,0,-.026],tip:[0,0,.058]}},lighter:{hand:`l`,origin:[`LeftHand`,`LeftHandMiddle1`],points:{body:[.01,0,0],flame:[.01,.036,0]}}},fits:[{side:`r`,anchor:`mouth`,effector:{prop:`cig`,point:`filter`}},{side:`l`,anchor:`flame`,effector:{prop:`lighter`,point:`flame`}}],checks:{contacts:[{name:`filter on the lips`,point:`prop:cig.filter`,target:`anchor:mouth`,tol:.01,when:`w_mouth_r`},{name:`flame under the cigarette tip`,point:`prop:lighter.flame`,target:`anchor:flame`,tol:.01,when:`flame_vis`}],orient:[{name:`lit end points away from the face`,from:`prop:cig.filter`,to:`prop:cig.tip`,along:`face`,minCos:.64,when:`w_mouth_r`},{name:`lighter upright`,from:`prop:lighter.body`,to:`prop:lighter.flame`,along:`up`,minCos:.85,when:`flame_vis`}],below:[{name:`no chicken-wing elbow`,joint:`RightForeArm`,ref:`RightArm`,min:.08,when:`w_mouth_r`}],appear:[{name:`cigarette from the right pocket`,channel:`cig_vis`,joint:`RightHand`,anchor:`rpocket`,tol:.035},{name:`lighter from the left pocket`,channel:`lit_vis`,joint:`LeftHand`,anchor:`lpocket`,tol:.035}],mouthPoints:[`cig.filter`],allow:[...S?.allow??[],...Uw]}}}var eT=9.81/576,tT=10,nT=5,rT=6,iT=14,aT=50,oT=e=>Math.min(1,Math.max(0,e)),sT=e=>{let t=oT(e);return t*t*(3-2*t)},cT=(e,t,n)=>e+(t-e)*n,lT=(e,t,n)=>e.map((e,r)=>e+(t[r]-e)*n),uT=(e,t,n,r,i)=>sT((e-t)/(n-t))-sT((e-r)/(i-r)),dT={l:1,r:-1},fT=(e,t,n)=>W(Ss(e),W(xs(t),Cs(n))),pT=(e,t,n,r,i)=>G(K(Ml(e,t,n)?.R??Ss(e)),G(r,i));function mT(e,t,n,r,i,a){let o=Ml(e.h,n,r);if(!o)return{fyaw:e.h,fpitch:a};let s=e.toe[t],c=G(i,G(xs(a),s)),l=G(K(o.R),c),u=Math.atan2(-s[1],s[2]),d=180/Math.PI,f=Math.asin(Math.max(-1,Math.min(1,-l[1]/Math.hypot(...l))))-u;return{fyaw:e.h+Math.atan2(l[0],l[2])*d,fpitch:Math.max(-60,Math.min(90,f*d))}}function hT(e){let{sk:t,args:n,state:r}=e,i=t.index,a=t.restWorldPos;(!r.foot_l||!r.foot_r||!r.root)&&ow(e.tag,`needs a standing pose keyed before f0 (use standIdle or another skill first)`);let o=n.heading??r.yaw??0,s=Ss(o),c=a[i.Hips],l=hs(a[i.LeftUpLeg],a[i.LeftLeg])+hs(a[i.LeftLeg],a[i.LeftFoot]),u=hs(a[i.LeftArm],a[i.LeftForeArm])+hs(a[i.LeftForeArm],a[i.LeftHand]);return{h:o,R:s,F:G(s,[0,0,1]),L:G(s,[1,0,0]),ank:a[i.LeftFoot][1],y0:c[1]-.01,leg:l,arm:u,feet:{l:r.foot_l.slice(),r:r.foot_r.slice()},root:r.root.slice(),hipOff:{l:z(a[i.LeftUpLeg],c),r:z(a[i.RightUpLeg],c)},shoulder:{l:z(a[i.LeftArm],c),r:z(a[i.RightArm],c)},toe:{l:z(a[i.LeftToeBase],a[i.LeftFoot]),r:z(a[i.RightToeBase],a[i.RightFoot])}}}function gT(e,t,n){let{args:r}=e,i=(n===`back`?-1:1)*360,a=r.travel??(n===`back`?-.25:.4),o=t.y0+.05,s=t.y0-.02,c=Math.max(10,Math.round(Math.sqrt(.9/eT)+Math.sqrt(2*(o+.5-.05-s)/eT))),l=(s-o+eT*c*c/2)/c,u=l-eT*c,d=o-l*nT/2,f=s+u*rT/2,p=a/(nT/2+c+rT/2),m=e.f0,h=m+tT,g=h+nT,_=g+c,v=_+rT,y=v+iT,b=e=>R(t.feet[e],B(t.F,a)),x=e=>R(t.feet[e],G(t.R,t.toe[e])),S=e=>{let n,r;if(e<=h)n=cT(t.root[1],d,sT((e-m)/tT)),r=0;else if(e<=g){let t=e-h;n=d+l/nT*t*t/2,r=p/nT*t*t/2}else if(e<=_){let t=e-g;n=o+l*t-eT*t*t/2,r=p*nT/2+p*t}else if(e<=v){let t=e-_;n=s+u*t-u/rT*t*t/2,r=p*nT/2+p*c+p*t-p/rT*t*t/2}else n=cT(f,t.y0,sT((e-v)/iT)),r=a;return R([t.root[0],n,t.root[2]],B(t.F,r))},C=e=>i*sT((e-g+2)/(c+5)),w=e=>fT(t.h,C(e),0),T=(e,t)=>G(K(w(e)),z(t,S(e))),E={l:T(g,y_(x(`l`),t.h,aT,t.feet.l)),r:T(g,y_(x(`r`),t.h,aT,t.feet.r))},D={l:T(_,b(`l`)),r:T(_,b(`r`))},O=[];for(let e=m;e<=y+1;e++){let n=e>y?0:C(e),r=fT(t.h,n,0),i=S(e),a=(e-g)/c,o=e>g&&e<_?uT(a,.12,.34,.6,.82):0,s={root:i,yaw:t.h,pitch:n,roll:0,armw_l:0,armw_r:0,fyaw_l:t.h,fyaw_r:t.h};for(let c of[`l`,`r`]){let l,u;if(e<=h)l=t.feet[c],u=0;else if(e<=g)u=aT*sT((e-h)/nT),l=y_(x(c),t.h,u,t.feet[c]);else if(e<_){let e=1-sT(a/.2),n=sT((a-.72)/.28),s=R(t.hipOff[c],lT([0,-t.leg*.97,0],[dT[c]*.02,-.24,.16],o));l=R(i,G(r,R(R(B(E[c],e),B(D[c],n)),B(s,1-e-n)))),u=cT(cT(aT,30,sT(a/.2)),0,sT((a-.7)/.3))}else l=b(c),u=0;let d=e>g&&e<_?mT(t,c,n,0,r,u):{fyaw:t.h,fpitch:u};Object.assign(s,{[`foot_${c}`]:l,[`fpitch_${c}`]:d.fpitch,[`fyaw_${c}`]:d.fyaw,[`knee_${c}`]:pT(t.h,n,0,r,[dT[c]*.05,.5*o,1])})}O.push({f:e,set:s})}let k=n===`back`?[-12,18]:[10,25];for(let[e,t,n,r,i]of[[m,0,0,0,0],[h,-45,15,20,0],[g,160,5,-8,k[0]],[Math.round(g+.3*c),55,85,32,k[1]],[Math.round(g+.62*c),55,85,32,k[1]],[_,75,25,22,0],[v,70,25,28,0],[y,0,0,0,0]])O.push({f:e,set:{aswing_l:t,aswing_r:t,abend_l:n,abend_r:n,spine_pitch:r,head_pitch:i}});return{keys:O,end:y+1}}function _T(e,t){let{args:n}=e,r=n.side===`r`?-1:1,i=-r,a=e.f0,o=a+12,s=o+34,c=s+14,l=r>0?`l`:`r`,u=l===`l`?`r`:`l`,d={foot:e=>R(t.hipOff[e],[dT[e]*.3,-t.leg*.93,0]),hand:e=>R(t.shoulder[e],[dT[e]*.32,t.arm*.88,0])},f={foot:t.ank,hand:.1},p=[[`foot`,l],[`hand`,l],[`hand`,u],[`foot`,u],[`foot`,l]],m=e=>e<=o?0:e<=s?i*360*sT((e-o)/34):i*360,h=(e,n,r,i)=>R(n,G(fT(t.h,0,m(e)),d[r](i))),g=fT(t.h,0,0),_=z(t.feet[u],G(g,d.foot(u))),v=h(o,_,`foot`,l);v[1]=t.ank;let y=[],b={foot:{l:[],r:[]},hand:{l:[],r:[]}},x=0,S=t.feet[l].slice(),C=o;b.foot[u].push({a,b:o,p:t.feet[u]});for(let e=a;e<=c+1;e++){if(e<=o){y.push(lT(t.root,_,sT((e-a)/12)));continue}e===o+1&&(S=v.slice());let n=z(S,G(fT(t.h,0,m(e)),d[p[x][0]](p[x][1]))),r=p[x+1];if(r&&e<=s){let i=h(e,n,...r);if(i[1]<=f[r[0]]){let a=h(e-1,y.at(-1),...r),o=a[1]-f[r[0]],s=i[1]-f[r[0]],c=lT(a,i,o>0?o/(o-s):1);b[p[x][0]][p[x][1]].push({a:C,b:e,p:S}),x++,C=e,S=[c[0],f[r[0]],c[2]],n=z(S,G(fT(t.h,0,m(e)),d[r[0]](r[1])))}}y.push(n)}b[p[x][0]][p[x][1]].push({a:C,b:c+1,p:S});let w=p[p.length-2];x>=p.length-1&&(b[w[0]][w[1]].at(-1).b=c+1);let T=y.map((e,t)=>{let n=[0,0,0],r=0;for(let e=-3;e<=3;e++){let i=Math.min(y.length-1,Math.max(0,t+e)),a=Math.exp(-(e*e)/4);n=R(n,B(y[i],a)),r+=a}return B(n,1/r)}),E=e=>e<=s?T[e-a]:R(T[s-a],[0,(t.y0-T[s-a][1])*sT((e-s)/14),0]),D=(e,t,n)=>{let r=z(e,t),i=Math.hypot(...r);return i>n?R(t,B(r,n/i)):e},O=(e,n,r,i)=>{for(let a of b[e][n]){if(r>=a.a-6&&r<=a.b)return lT(i,a.p,sT((r-a.a+6)/6));if(r>a.b&&r<=a.b+10){let i=G(K(fT(t.h,0,m(a.b))),z(a.p,E(a.b))),o=R(E(r),G(fT(t.h,0,m(r)),lT(i,d[e](n),sT((r-a.b-1)/9))));return lT(a.p,o,sT((r-a.b)/8))}}return i},k=(e,t,n)=>b[e][t].some(e=>n>=e.a&&n<=e.b),ee=Object.fromEntries([`l`,`r`].map(e=>{let n=k(`foot`,e,s)?b.foot[e].at(-1).p.slice():h(s,E(s),`foot`,e);return n[1]=t.ank,[e,n]})),A=[];for(let e=a;e<=c+1;e++){let n=e===c+1?0:m(e),r=fT(t.h,0,m(e)),i=E(e),u={root:i,yaw:t.h,pitch:0,roll:n};for(let c of[`l`,`r`]){let d;if(e<=o&&c===l){let n=sT((e-a-1)/8);d=R(lT(t.feet[c],v,n),[0,.07*Math.sin(Math.PI*n),0])}else if(e>s)d=ee[c];else{let n=sT((e-s+4)/4);d=D(lT(O(`foot`,c,e,h(e,i,`foot`,c)),ee[c],n),R(i,G(r,t.hipOff[c])),t.leg*.995)}let f=e>o&&e<=s?mT(t,c,0,m(e),r,0):{fyaw:t.h,fpitch:0};Object.assign(u,{[`foot_${c}`]:d,[`fyaw_${c}`]:f.fyaw,[`fpitch_${c}`]:f.fpitch,[`knee_${c}`]:pT(t.h,0,n,r,[dT[c]*.05,0,1]),[`hand_${c}`]:D(e>o&&e<=s?O(`hand`,c,e,h(e,i,`hand`,c)):h(e,i,`hand`,c),R(i,G(r,t.shoulder[c])),t.arm*.995),[`elbow_${c}`]:pT(t.h,0,n,r,[dT[c]*.4,0,-1]),[`armw_${c}`]:e<=o?0:e<=s?sT((e-o)/6):1-sT((e-s)/8)})}u.arm_rest=e<=o?cT(72,-56,sT((e-a)/12)):e<=s?-56:cT(-56,72,sT((e-s)/14)),A.push({f:e,set:u})}return{keys:A,end:c+1}}function vT(e){let t=e.args.kind??`back`;[`back`,`front`,`cartwheel`].includes(t)||ow(e.tag,`kind must be "back", "front" or "cartwheel", got ${JSON.stringify(t)}`);let n=hT(e);return t===`cartwheel`?_T(e,n):gT(e,n,t)}var yT=9.81,bT=24,xT=.75,ST={back:.16,front:.11},CT=.25,wT=.12,TT=.25,ET=e=>e-wT*(1-Math.exp(-e/wT)),DT=(e,t,n)=>t+n*Math.log1p(Math.exp((e-t)/n)),OT=3/bT,kT=.03,AT=.25,jT=e=>{let t=Math.min(1,Math.max(0,e));return t*t*t*(t*(6*t-15)+10)},MT=e=>(e+540)%360-180,NT=e=>e.map(e=>Math.round(e*1e3)/1e3),PT=e=>Math.round(e*10)/10;function FT(e,t,n){let r=null,i=null;for(let a of e){let e=a.set?.[t];Array.isArray(e)&&(a.f<=n&&(!r||a.f>=r.f)&&(r={f:a.f,v:e}),a.f>n&&(!i||a.f<i.f)&&(i={f:a.f,v:e}))}if(!r||!i)return r?.v;let a=(n-r.f)/(i.f-r.f);return r.v.map((e,t)=>e+(i.v[t]-e)*a)}function IT(e,t){let{args:n,scene:r}=e,i=n.dir;if(!i&&typeof n.from==`string`){let[a,o]=n.from.split(/:(.*)/s),s=a===`object`?r?.objects?.[o]?.pos:a===`person`?np(r,o,`Hips`,e.f0):null;s||ow(e.tag,`args.from "${n.from}" must be object:<id> of a scene body or person:<id> of a character with an installed take`),i=[t[0]-s[0],t[2]-s[2]]}(!Array.isArray(i)||i.length!==2||!(Math.hypot(i[0],i[1])>1e-6))&&ow(e.tag,`needs args.dir: [x, z] (the way the body is thrown) or args.from: object:<id> | person:<id> (what hits it)`);let a=Math.hypot(i[0],i[1]);return[i[0]/a,i[1]/a]}function LT(e){let{sk:t,args:n,state:r}=e,i=t.index,a=t.restWorldPos;r.root||ow(e.tag,`needs a pose keyed before f0 (standIdle, a walk, ...)`);let o=FT(e.keys,`root`,e.f0)??r.root.slice(),s={};for(let t of[`l`,`r`]){let n=FT(e.keys,`foot_${t}`,e.f0),r=FT(e.keys,`foot_${t}`,e.f0-1);n&&(s[t]={at:n,v:r?n.map((e,t)=>e-r[t]):[0,0,0]})}let c=r.yaw??0,[l,u]=IT(e,o),d=n.speed??4;Number.isFinite(d)&&d>0||ow(e.tag,`args.speed must be a launch speed above 0 m/s, got ${JSON.stringify(n.speed)}`);let f=Math.min(2.5,Math.max(.8,.3*d)),p=G(Ss(c),[0,0,1]),m=(n.land??(l*p[0]+u*p[2]<=0?`back`:`front`))===`back`,h=Math.atan2(l,u)*180/Math.PI,g=MT((m?h+180:h)-c),_=m?-90:90,v=m?ST.back:ST.front,y=o[1],b=e=>y+f*ET(e)-.5*yT*e*e,x=e=>f*(1-Math.exp(-e/wT))-yT*e,S=0,C=(f+Math.sqrt(f*f+2*yT*Math.max(0,y-v)))/yT+1;for(let e=0;e<60;e++){let e=(S+C)/2;b(e)+x(e)*OT/2>v-kT||x(e)>0?S=e:C=e}let w=S,T=Math.min(0,x(w)),E=b(w),D=w+OT,O=d/(xT*yT),k=D+O,ee=e=>e<w?b(e):e<D?E+T*(e-w)-T/(2*OT)*(e-w)**2:v-kT*(1-jT((e-D)/AT)),A=a[i.LeftFoot][1],te=a[i.Hips][1],j=m?1:-1,M=.9*Math.hypot(...[0,1,2].map(e=>a[i.LeftFoot][e]-a[i.Hips][e])),ne=e.f0+Math.ceil((k+.6)*bT),re=[];for(let t=e.f0;t<=ne;t++){let n=(t-e.f0)/bT,r=n<D,i=Math.min(Math.max(0,n-D),O),a=r?d*ET(n):d*ET(D)+d*i-.5*xT*yT*i*i,f=ee(n),p=[o[0]+l*a,f,o[2]+u*a],h=Math.max(.35,.9*D),v=c+g*jT(n/Math.max(CT,h)),y=_*jT(n/h),b=(e=>G(Ss(v),G(xs(y),e))),x=jT(n/wT)*Math.exp(-n/.18)*Math.sin(2*Math.PI*n/.55),S=jT(n/.3)*Math.exp(-n/.45)*Math.sin(2*Math.PI*n/.6),C=jT((n-D)/.3),w=-(te-A)+.06*(1-C)+(m?.03:.01)*C,T=jT(n/TT),E=A+.01+(!m&&!r&&i<O?.04:0),k=(n,r,i)=>{let a=R(p,b([r,w,i])),o=p[1]-.05;m&&(a[1]=o-.05*Math.log1p(Math.exp((o-a[1])/.05))),a[1]=DT(a[1],E,.03);let c=s[n];if(!c)return a;let l=c.at.map((n,r)=>n+c.v[r]*(t-e.f0)*(1-T));return l[1]=Math.max(c.at[1],l[1]),ne(a.map((e,t)=>l[t]+(e-l[t])*T))},ne=e=>{let t=e.map((e,t)=>e-p[t]),n=Math.hypot(...t),r=M-.02*Math.log1p(Math.exp((M-n)/.02));return n>1e-9?p.map((e,i)=>e+t[i]*(1+(r/n-1)*T)):e},ie=Ml(0,y,0),ae=ie?G(ie.R,[0,1,0]):[0,1,0],oe=Math.atan2(ae[2],ae[1])*180/Math.PI,se=G(xs(-oe),[0,-Math.sin(y*Math.PI/180),Math.max(.05,Math.cos(y*Math.PI/180))]),ce={root:NT(p),yaw:PT(v),pitch:PT(y),roll:0,foot_l:NT(k(`l`,.11,.04+.1*S*T-(m?.1:0)*C)),foot_r:NT(k(`r`,-.11,.04-.1*S*T-(m?.1:0)*C)),fyaw_l:PT(v),fyaw_r:PT(v),fpitch_l:PT(m?-50*C:-.5*oe),fpitch_r:PT(m?-50*C:-.5*oe),knee_l:NT([.05,se[1],se[2]]),knee_r:NT([-.05,se[1],se[2]]),spine_pitch:PT(j*22*x*Math.min(1,d/4)),spine_yaw:0,spine_roll:PT(10*S*(1-C)),head_pitch:PT(j*30*x*Math.min(1,d/4)+(m?-8:8)*C),head_roll:PT(12*C),arm_rest:PT(72-22*C),aswing_l:PT(j*45*S+8*C),aswing_r:PT(-j*35*S-8*C),abend_l:PT(25+30*S*S),abend_r:PT(30+25*S*S)};t===e.f0&&Object.assign(ce,{armw_l:0,armw_r:0,fingers_l:{relaxed:1},fingers_r:{relaxed:1}}),re.push({f:t,set:ce})}return{keys:re,end:ne}}var RT={standIdle:uw,sitInSeat:xw,exitCar:Sw,walkTo:dw,reachGrip:fw,smokeCigarette:$w,flip:vT,hitReaction:LT},zT=Object.keys(RT),BT=e=>{throw Error(`MOTION_SPEC_INVALID: ${e}`)},VT=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function HT(e,t,n,r){for(let[i,a]of Object.entries(t??{}))e[i]&&!VT(e[i],a)&&BT(`${r} defines ${n}.${i} differently from an earlier skill; rename one or define it yourself in spec.${n}`),e[i]=a}function UT(e,t){for(let[n,r]of Object.entries(t??{})){if(n===`limits`&&r&&typeof r==`object`&&!Array.isArray(r)){e.limits={...e.limits,...r};continue}if(!Array.isArray(r)||e[n]!==void 0&&!Array.isArray(e[n])){e[n]=r;continue}let t=e[n]??(e[n]=[]);for(let e of r)t.some(t=>VT(t,e))||t.push(e)}}function WT(e,t,n){e.args!==void 0&&(!e.args||typeof e.args!=`object`||Array.isArray(e.args))&&BT(`use[${t}].args must be an object, got ${JSON.stringify(e.args)}`);let r=Object.keys(KC[e.skill].args);if(!n)for(let n of Object.keys(e.args??{}))r.includes(n)||BT(`use[${t}].args.${n} is not an arg of ${e.skill}${Vf(n,r)} (args: ${r.join(`, `)})`)}function GT(e,{sk:t,scene:n,lenient:r=!1,auto:i=!1}){if(!e.use?.length)return{spec:e,used:[]};Array.isArray(e.use)||BT(`spec.use must be an array of { skill, args, f0 }`);let a=(e.keys??[]).map((e,t)=>({...e,src:`keys[${t}]`})),o={anchors:{},props:{},objects:{},fits:[],checks:{},channels:[]},s=[],c=[];e.use.forEach((l,u)=>{let d=`use[${u}] ${l?.skill}`;RT[l?.skill]||BT(`use[${u}].skill "${l?.skill}" is not a skill${Wf(String(l?.skill),zT)} (skills: ${zT.join(`, `)})`);for(let e of Object.keys(l))!sp.includes(e)&&!r&&BT(`use[${u}] has unknown field "${e}"${Vf(e,sp)}; an entry is { skill, args, f0 }`);WT(l,u,r),(!Number.isInteger(l.f0)||l.f0<0||l.f0>e.frames-1)&&BT(`use[${u}].f0 must be an integer frame within 0..${e.frames-1}, got ${JSON.stringify(l.f0)}`);let f=[...s,...a],p={sk:t,scene:n,frames:e.frames,auto:i,self:e.fix!==!1&&e.fix?.self!==!1,f0:l.f0,args:structuredClone(l.args??{}),tag:d,keys:f,state:structuredClone(pv(f,l.f0)),anchors:{...o.anchors,...e.anchors}},m=RT[l.skill](p),h=Math.max(m.end??l.f0,...m.keys.map(e=>e.f));h>e.frames-1&&BT(`${d} needs ${h-l.f0} frames from f${l.f0} (to f${h}), past the last frame f${e.frames-1}; set frames >= ${h+1} or frames: "auto"`),s.push(...m.keys.map(e=>({...e,src:e.src??d}))),HT(o.anchors,m.anchors,`anchors`,d),HT(o.props,m.props,`props`,d),HT(o.objects,m.objects,`objects`,d);for(let e of m.fits??[])o.fits.some(t=>VT(t,e))||o.fits.push(e);for(let e of m.channels??[])o.channels.includes(e)||o.channels.push(e);UT(o.checks,m.checks),c.push({skill:l.skill,f0:l.f0,end:m.end,...m.paced?{paced:m.paced}:{},...m.cut?{cut:m.cut}:{}})});let l={...e,keys:[...s,...a],anchors:{...o.anchors,...e.anchors},props:{...o.props,...e.props},objects:{...o.objects,...e.objects}},u=[...new Set([...o.channels,...Array.isArray(e.channels)?e.channels:[]])];u.length&&(l.channels=u);let d=e.fits??[];return l.fits=[...o.fits.filter(e=>!d.some(t=>t.side===e.side&&t.anchor===e.anchor)),...d],UT(o.checks,e.checks),l.checks=o.checks,delete l.use,{spec:l,used:c}}var KT=new Set([`f`,`f0`,`steps`,`period`,`swing`,`until`,`reach`,`hold`,`release`]),qT=e=>e&&typeof e==`object`&&!Array.isArray(e)&&(e.range??e.search)!==void 0&&Object.keys(e).every(e=>[`range`,`search`,`int`].includes(e)),JT=e=>e.reduce((e,t)=>typeof t==`number`?`${e}[${t}]`:e?`${e}.${t}`:t,``);function YT(e){let t=[],n=(e,r)=>{if(qT(e)){let n=e.range??e.search;if(!(Array.isArray(n)&&n.length===2&&n.every(Number.isFinite)&&n[0]<n[1]))throw Error(`MOTION_SPEC_INVALID: ${JT(r)} range must be [lo, hi] with lo < hi, got ${JSON.stringify(n)}`);t.push({path:r,lo:n[0],hi:n[1],int:e.int??KT.has(r[r.length-1])});return}if(Array.isArray(e))e.forEach((e,t)=>n(e,[...r,t]));else if(e&&typeof e==`object`)for(let[t,i]of Object.entries(e))n(i,[...r,t])};for(let[t,r]of Object.entries(e??{}))[`schema`,`fps`,`frames`,`search`].includes(t)||n(r,[t]);return t}var XT=(e,t)=>{let n=Math.min(e.hi,Math.max(e.lo,t));return e.int?Math.round(n):Math.round(n*1e4)/1e4};function ZT(e,t,n){let r=structuredClone(e);return t.forEach((e,t)=>{let i=r;for(let t of e.path.slice(0,-1))i=i[t];i[e.path[e.path.length-1]]=n[t]}),r}var QT=e=>e.groups.reduce((e,t)=>e+iC(t),0);function $T(e,t,n,r,i){let a=n=>r(ZT(e,t,n)),o=a(n),s=e=>JSON.stringify({...e,keys:void 0,generators:void 0}),c=e=>Gp(hv(e,i),e.frames,Hp(e.flow)),l=c(o),u=1/0,d=-1/0;for(let r=0;r<t.length;r++)for(let i of[t[r].lo,t[r].hi]){let f=a(n.map((e,n)=>n===r?XT(t[r],i):e));if(s(f)!==s(o))return null;let p=c(f);for(let t of new Set([...Object.keys(l),...Object.keys(p)])){let n=l[t],r=p[t];for(let t=0;t<e.frames;t++)JSON.stringify(n?.[t])!==JSON.stringify(r?.[t])&&(u=Math.min(u,t),d=Math.max(d,t))}}return u>d?null:[Math.max(0,u-8),Math.min(e.frames-1,d+8)]}var eE=[2,3,5,7,11,13,17,19,23,29],tE=(e,t)=>Array.from({length:t},(t,n)=>{let r=1,i=0,a=e,o=eE[n%eE.length];for(;a>0;)r/=o,i+=a%o*r,a=Math.floor(a/o);return i});function nE(e,t,{sk:n,scene:r},i){let a=performance.now(),o=Math.max(1,Math.min(64,Math.round(e.search?.budget??32))),s=t.map(e=>XT(e,(e.lo+e.hi)/2)),c=$T(e,t,s,i,n),l=new Map,u=0,d=null,f=a=>{let s=a.join(`,`);if(l.has(s))return l.get(s);if(u>=o)return 1/0;u++;let f;try{let o=i(ZT(e,t,a));f=QT(uC(n,Ly({fps:24,...o},{sk:n,scene:r},{window:c}),o,{explain:!1}))}catch(e){if(!/MOTION_SPEC_INVALID/.test(e.message))throw e;f=1e9}return l.set(s,f),(!d||f<d.cost)&&(d={values:a,cost:f}),f},p=()=>d?.cost===0||u>=o,m=e=>t.map((t,n)=>XT(t,t.lo+(t.hi-t.lo)*e[n]));f(s);let h=t.length===1?[4,3,5,2,6,1,7,0,8].map(e=>[e/8]):Array.from({length:Math.min(o>>1,8*t.length)},(e,n)=>tE(n+1,t.length));for(let e of h){if(p())break;f(m(e))}let g=t.map(e=>(e.hi-e.lo)/8);for(;!p()&&g.some((e,n)=>e>(t[n].int?.5:(t[n].hi-t[n].lo)*.001));){let e=!1;for(let n=0;n<t.length&&!p();n++)for(let r of[-1,1]){let i=d.values.slice();i[n]=XT(t[n],i[n]+r*g[n]);let a=d.cost;f(i),d.cost<a&&(e=!0)}e||(g=g.map(e=>e/2))}return{spec:ZT(e,t,d.values),search:{values:Object.fromEntries(t.map((e,t)=>[JT(e.path),d.values[t]])),evals:u,cost:Math.round(d.cost*100)/100,window:c,ms:Math.round(performance.now()-a)}}}var rE=2e4;function iE(e){let t=structuredClone(e);for(let n of YT(e)){let e=t;for(let t of n.path.slice(0,-1))e=e[t];e[n.path[n.path.length-1]]=n.hi}return t}function aE(e,{sk:t,scene:n,lenient:r=!1}={}){if(e?.frames!==`auto`)return e;let{spec:i,used:a}=GT({...iE(e),frames:rE},{sk:t,scene:n,lenient:r,auto:!0}),o=[...Array.isArray(i.keys)?i.keys.map(e=>e?.f):[],...a.map(e=>e.end),...Array.isArray(i.generators)?i.generators.map(e=>e&&Number.isFinite(e.f0)?HC(e):null):[]];return{...e,frames:Math.max(0,...o.filter(Number.isFinite))+1}}var oE=new WeakSet;function sE(e){return oE.add(e),e}var cE=e=>Array.isArray(e)?`[${e.map(cE).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${JSON.stringify(t)}:${cE(e[t])}`).join(`,`)}}`:JSON.stringify(e)??`null`;function lE(e){let t=14695981039346656037n;for(let n of new TextEncoder().encode(cE(e)))t=BigInt.asUintN(64,(t^BigInt(n))*1099511628211n);return`spec-${t.toString(16).padStart(16,`0`).slice(0,12)}`}function uE(e=64){let t=new Map,n=Math.max(1,e),r=(e,r)=>{for(t.delete(e),t.set(e,r);t.size>n;)t.delete(t.keys().next().value);return r},i=e=>t.has(e)?r(e,t.get(e)):null;return{put(e){let n=lE(e),i=t.get(n);return r(n,{...i,spec:structuredClone(e),framesAuto:oE.has(e)||i?.framesAuto===!0}),n},get(e){let t=i(e);return t?.spec?{...structuredClone(t.spec),...t.framesAuto?{frames:`auto`}:{}}:null},keepParts(e,n){r(e,{...t.get(e),parts:n})},parts(e){return i(e)?.parts??null}}}var dE=12,fE=4,pE=3,mE=5e-4,hE=e=>Math.round(e*1e3)/1e3,gE=e=>Math.round(e*10)/10,_E=e=>e.map(hE);function vE(e,t,n){let r=e.frameCount-1,i=e.timeMap??(e=>e),a=t.map((e,t)=>({beat:e.skill,src:`use[${t}]`,f:[e.f0,e.end??e.f0]}));(n.generators??[]).forEach((e,t)=>a.push({beat:e.type,src:`generators[${t}]`,f:[e.f0,e.f0+16+(e.steps??8)*(e.period??20)+18]}));let o=e=>a.some(t=>e>=t.f[0]&&e<=t.f[1]),s=[...new Set((n.keys??[]).map(e=>e.f))].filter(e=>Number.isFinite(e)&&!o(e)).sort((e,t)=>e-t),c=null;for(let e of s)c&&!a.some(t=>t.src!==`keys`&&t.f[1]>c.f[1]&&t.f[0]<e)?c.f[1]=e:a.push(c={beat:`keys`,src:`keys`,f:[e,e]});let l=e=>Math.max(0,Math.min(r,Math.round(i(e))));for(let e of a)e.f=[l(e.f[0]),l(e.f[1])];return a.sort((e,t)=>e.f[0]-t.f[0]).slice(0,dE)}function yE(e){let t=e.frameCount,n=e.f0??0,r={l:new Uint8Array(t),r:new Uint8Array(t)};for(let[t,i]of[[`l`,`Left`],[`r`,`Right`]]){let a=e.frames.map((t,n)=>t?Yu(e,n,i):null);a.forEach((e,i)=>{let o=a[i>0?i-1:i+1];if(!e||!o)return;let s=[`heel`,`ball`].some(t=>e[t][1]<Dd.plantH&&Math.abs(e[t][1]-o[t][1])<mE&&Math.hypot(e[t][0]-o[t][0],e[t][2]-o[t][2])<=Dd.slide);r[t][n+i]=+!!s})}return r}function bE(e,[t,n]){let r=[],i=null;for(let a=t;a<=n+1;a++){let t=a<=n&&e[a]===1;t&&i===null&&(i=a),!t&&i!==null&&(a-i>=pE&&r.push([i,a-1]),i=null)}if(r.length<=fE)return r;let a=r.slice(1,-1).sort((e,t)=>t[1]-t[0]-(e[1]-e[0])||e[0]-t[0]).slice(0,2);return[r[0],...a,r[r.length-1]].sort((e,t)=>e[0]-t[0])}function xE(e,t){let n=e.frameCount,r=[],i=Object.entries(t.objects??{});for(let[e,t]of i)for(let i=1;i<n;i++){let n=Jp(t,i-1),a=Jp(t,i);a&&!n&&r.push({f:i,object:e,event:`grab`}),n&&!a&&r.push({f:i-1,object:e,event:`release`})}let a={};for(let[e,t]of i)typeof t?.visible==`string`&&(a[t.visible]??=[]).push(e);for(let t of new Set([...Object.keys(a),...Object.keys(e.baked??{}).filter(e=>e.endsWith(`_vis`))])){let i=e.baked?.[t];if(i)for(let e=1;e<n;e++){let n=i[e-1]>.5,o=i[e]>.5;if(n!==o)for(let n of a[t]??[t])r.push({f:e,object:n,event:o?`show`:`hide`})}}return r.sort((e,t)=>e.f-t.f)}function SE(e,t,n,r){for(let[t,i]of Object.entries(e.objects??{}))if(e.props?.[i?.prop]?.hand===n&&Jp(i,r))return`object:${t}`;let i=null,a=.5;for(let[e,r]of Object.entries(t)){let t=/^w_(.+)_([lr])$/.exec(e);t&&t[2]===n&&r>a&&(i=t[1],a=r)}return i&&`anchor:${i}`}function CE(e,t,n){let r=e.frames[n-(e.f0??0)];if(!r)return null;let{s:i,c:a}=r,o=e.ctx.sk.index;return{root:_E(i.P[o.Hips]),yaw:gE(a.yaw??0),hand_l:_E(i.P[o.LeftHand]),hand_r:_E(i.P[o.RightHand]),on_l:SE(t,a,`l`,n),on_r:SE(t,a,`r`,n)}}function wE(e,{used:t,spec:n}){let r=vE(e,t??[],n);if(!r.length)return[];let i=yE(e),a=xE(e,n);return r.map(t=>({...t,end:CE(e,n,t.f[1]),planted:{l:bE(i.l,t.f),r:bE(i.r,t.f)},events:a.filter(e=>e.f>=t.f[0]&&e.f<=t.f[1])}))}var TE=e=>`[${e[0]},${e[1]}]`,EE=(e,t)=>{e&&!e.includes(t)&&e.push(t)};function DE(e,t){if(!(Array.isArray(e)&&e.length===2&&e.every(Number.isInteger)&&e[0]<=e[1]))return null;let n=Math.max(0,e[0]),r=Math.min(t,e[1]);return n<=r?[n,r]:null}function OE(e,t){if(!Array.isArray(e.goals)||!Number.isInteger(e.frames))return;let n=e.frames-1;e.goals.forEach((e,r)=>{if(!e||typeof e!=`object`||!Array.isArray(e.at))return;let i=DE(e.at,n);!i||i[0]===e.at[0]&&i[1]===e.at[1]||(EE(t,`goals[${r}]${e.name?` "${e.name}"`:``} at ${TE(e.at)} -> ${TE(i)}: the clip is 0..${n}`),e.at=i)})}var kE=e=>e.rot===void 0?{aim:e.aim,...e.roll===void 0?{}:{roll:e.roll},...e.lean===void 0?{}:{lean:e.lean}}:{rot:e.rot},AE=e=>e&&(e.rot!==void 0||e.aim!==void 0),jE=e=>e&&typeof e==`object`&&!Array.isArray(e)&&!AE(e)&&e.roll===void 0&&e.lean===void 0;function ME(e,t,n,r){let i=t.keys.map((e,t)=>({k:e,i:t})).filter(({k:e})=>e&&Number.isInteger(e.f)).sort((e,t)=>e.k.f-t.k.f),a=i.filter(({k:e})=>jE(e));if(!a.length)return;let o=n?.objects?.[e]??Gl(n??{})[e],s=o?Pl(t)?{aim:[o.R[0][1],o.R[1][1],o.R[2][1]].map(e=>Math.round(e*1e4)/1e4)}:{rot:Ds(o.R)}:null,c=i.filter(e=>AE(e.k)),l=[],u=[];for(let{k:e,i:t}of a){let n=c.filter(t=>t.k.f<e.f).at(-1)??c.find(t=>t.k.f>e.f);n?(Object.assign(e,kE(n.k)),l.push(t)):s&&(Object.assign(e,s),u.push(t))}l.length&&EE(r,`objects.${e}.keys[${l.join(`,`)}] had no rot or aim: each holds the turn of the nearest key before it (else after)`),u.length&&EE(r,`objects.${e}.keys[${u.join(`,`)}] had no rot or aim: ${s.aim?`+Y as in the scene, aim [${s.aim}]`:`turned as in the scene`}`)}function NE(e,t,n){t.keys.forEach((t,r)=>{if(!Array.isArray(t?.rot)||t.rot.length!==4||!t.rot.every(Number.isFinite))return;let i=Math.hypot(...t.rot);Math.abs(i-1)<=.01||i<=.5||i>=2||(t.rot=t.rot.map(e=>e/i),EE(n,`objects.${e}.keys[${r}].rot had length ${i.toFixed(3)}: normalized`))})}function PE(e,t,n){if(!e||typeof e!=`object`)return e;OE(e,n);for(let[r,i]of Object.entries(e.objects??{}))!i||typeof i!=`object`||!Array.isArray(i.keys)||!(Pl(i)||Vh(i))||(ME(r,i,t,n),NE(r,i,n));return e}function FE(e,t,n,r){let i=Number.isInteger(e)?[e,e]:e,a=DE(i,t);return a&&(a[0]!==i[0]||a[1]!==i[1])&&EE(r,`${n}.frames ${TE(i)} -> ${TE(a)}: the take is 0..${t}`),a}function IE(e,t,n,r,i){if(Math.ceil(t/e)<=n)return e;let a=Math.ceil(t/n);return EE(i,`${r}.every ${e} -> ${a}: a position probe answers at most ${n} rows`),a}function LE(e,[t,n]){let r=e.filter(e=>e<t||e>n),i=[...new Set(e.map(e=>Math.min(n,Math.max(t,e))))].sort((e,t)=>e-t);return r.length?{frames:i,adjusted:`frames ${r.join(`, `)} lie outside ${t}..${n}: drawn at ${i.filter(e=>e===t||e===n).join(`, `)}`}:{frames:i}}var RE={always:!0,yes:!0,true:!0,on:!0,never:`never`,no:`never`,false:`never`,off:`never`,none:`never`,ifclean:`ifClean`,whenclean:`ifClean`,onlyifclean:`ifClean`,clean:`ifClean`};function zE(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(typeof e.install==`string`&&e.install!==`ifClean`&&e.install!==`never`){let n=RE[e.install.toLowerCase().replace(/[^a-z]/g,``)];n!==void 0&&(t={...t,install:n})}return e.repair===!0?t={...t,repair:{}}:(e.repair===!1||e.repair&&typeof e.repair==`object`&&e.repair.rounds===0&&Object.keys(e.repair).length===1)&&(t=Object.fromEntries(Object.entries(t).filter(([e])=>e!==`repair`))),t}var BE=16,VE=16,HE=12,UE=`{ name, distance: [refA, refB] | position: ref, frames: [f0, f1], every }`,WE=e=>Math.round(e*1e6)/1e6,GE=e=>Math.round(e*1e4)/1e4;function KE(e,t){let n=/^(joint|bone):(.+)$/s.exec(t);return n?`${n[1]}:${Zf(e,n[2]).bone??n[2]}`:t}function qE(e,t,n,r,i){let a=e.frames===void 0?[0,n]:FE(e.frames,n,t,i);return a||r(`${t}.frames must be [f0, f1], integer frames within 0..${n} with f0 <= f1, got ${Y(e.frames)}`),a}function JE(e,t,{spec:n,sk:r,scene:i,notes:a}){let o=[],s=e=>{o.length<HE&&o.push(e)},c=e.frameCount-1,l=[],u=new Map;if(Array.isArray(t)?t.length>BE?s(`probes has ${t.length} entries; at most ${BE} per compile`):t.forEach((e,t)=>{let o=`probes[${t}]`;if(!e||typeof e!=`object`||Array.isArray(e))return s(`${o} must be ${UE}`);for(let t of Object.keys(e))vp.includes(t)||s(`${o} has unknown field "${t}"${Wf(t,vp)}; a probe is ${UE}`);let d=e.name??o;if(typeof d!=`string`||!d?s(`${o}.name must be a non-empty string, got ${Y(e.name)}`):u.has(d)?s(`${o}.name "${d}" is already used by ${u.get(d)}; probe names must differ`):u.set(d,o),e.distance===void 0==(e.position===void 0))return s(`${o} needs exactly one of distance: [refA, refB] or position: ref`);let f=e.distance===void 0?`position`:`distance`,p=f===`distance`?e.distance:[e.position];if(f===`distance`&&!(Array.isArray(p)&&p.length===2&&p.every(e=>typeof e==`string`)))return s(`${o}.distance must be [refA, refB], two point refs, got ${Y(e.distance)}`);if(f===`position`&&typeof e.position!=`string`)return s(`${o}.position must be a point ref, got ${Y(e.position)}`);let m=p.map((e,t)=>Ap(n,s,{sk:r,scene:i},f===`distance`?`${o}.distance[${t}]`:`${o}.position`,e)).every(Boolean),h=qE(e,o,c,s,a);if(e.every!==void 0&&!(Number.isInteger(e.every)&&e.every>=1))return s(`${o}.every must be a positive integer, got ${Y(e.every)}`);if(!m||!h)return;let g=h[1]-h[0]+1,_=e.every??(f===`position`?Math.ceil(g/VE):1),v=f===`position`?IE(_,g,VE,o,a):_;l.push({name:d,kind:f,refs:p.map(e=>KE(r,e)),range:h,every:v})}):s(`probes must be an array of ${UE}`),o.length)throw Error(`MOTION_SPEC_INVALID: ${o.join(`
12
+ `)}${o.length>=HE?`
13
+ (more problems not listed)`:``}`);return l}function YE([e,t],n){let r=[];for(let i=e;i<=t;i+=n)r.push(i);return r}function XE(e,t){let n=YE(t.range,t.every).map(n=>[n,Op(e,n,t.refs[0],t.refs[1])]).filter(([,e])=>Number.isFinite(e));if(!n.length)return{min:null,minAt:null,max:null,maxAt:null,mean:null,first:null,last:null};let r=n[0],i=n[0],a=0;for(let e of n)e[1]<r[1]&&(r=e),e[1]>i[1]&&(i=e),a+=e[1];return{min:WE(r[1]),minAt:r[0],max:WE(i[1]),maxAt:i[0],mean:WE(a/n.length),first:WE(n[0][1]),last:WE(n[n.length-1][1])}}function ZE(e,t){return{at:YE(t.range,t.every).map(n=>{let r=Dp(e,n,t.refs[0]);return{f:n,p:r?r.map(GE):null}})}}function QE(e,t,n){return Object.fromEntries(JE(e,t,n).map(t=>[t.name,t.kind===`distance`?XE(e,t):ZE(e,t)]))}var $E=.3,eD=2,tD=[`Thumb4`,`Index4`,`Middle4`,`Ring4`,`Pinky4`],nD=e=>Math.round(e*1e3)/1e3,rD=`near: hand (palm, fingertips), foot (sole) to the nearest object within 0.3 m (top group; part: the body at the closest frame), 2 closest runs; gap [min, f, max, f] m, < 0 inside`;function iD(e,t){let n=e.index,r={};for(let[i,a]of[[`Left`,`l`],[`Right`,`r`]]){let o=B(R(t.P[n[`${i}Hand`]],t.P[n[`${i}HandMiddle1`]]),.5);r[`hand_${a}`]=[o,...tD.map(e=>t.P[n[`${i}Hand${e}`]]).filter(Boolean)],r[`foot_${a}`]=Object.values(Mu(e,t,i))}return r}var aD=(e,t,n)=>[t,...e.ctx.scene.objects[t].ancestors??[]].some(t=>{let r=e.ctx.spec.objects?.[t];return r?.visible&&!((e.baked?.[r.visible]?.[n]??0)>.5)});function oD(e,t){let{scene:n,spec:r}=e.ctx,i=[];for(let[a,o]of Object.entries(n?.objects??{})){let n=o.ancestors??[];if([a,...n].some(e=>Fl(r.objects?.[e]))||aD(e,a,t))continue;let s=dm(e,a,t);if(!s)continue;let c={pos:s.pos,R:s.R,half:o.half};i.push({id:a,root:n[n.length-1]??a,hand:um(e,a,t),box:c,c:R(c.pos,G(c.R,[0,o.half[1],0])),r:H(o.half)})}return i}function sD(e,t,n){let r=B(e.reduce((e,t)=>R(e,t),[0,0,0]),1/e.length),i=Math.max(...e.map(e=>hs(e,r))),a=null;for(let o of t){if(n&&o.hand===n||hs(r,o.c)-o.r-i>(a?a[2]:$E))continue;let t=Math.min(...e.map(e=>Du(e,o.box)));t<=$E&&(!a||t<a[2])&&(a=[o.root,o.id,t])}return a}function cD(e,t){let n=[];return e.forEach((e,r)=>{let i=n[n.length-1];if(!e)return;let[a,o,s]=e,c=r+t;i&&i.object===a&&i.frames[1]===c-1?(i.frames[1]=c,s<i.gap[0]&&(i.gap[0]=s,i.gap[1]=c,i.part=o),s>i.gap[2]&&(i.gap[2]=s,i.gap[3]=c)):n.push({object:a,part:o,frames:[c,c],gap:[s,c,s,c]})}),n.sort((e,t)=>e.gap[0]-t.gap[0]).slice(0,eD).sort((e,t)=>e.frames[0]-t.frames[0]).map(({object:e,part:t,frames:n,gap:r})=>({object:e,...t===e?{}:{part:t},frames:n,gap:[nD(r[0]),r[1],nD(r[2]),r[3]]}))}function lD(e,t){if(!Object.keys(t.ctx.scene?.objects??{}).length)return null;let n=t.f0??0,r={hand_l:[],hand_r:[],foot_l:[],foot_r:[]};t.frames.forEach(({s:i},a)=>{let o=oD(t,a+n),s=iD(e,i);for(let e of Object.keys(r))r[e].push(sD(s[e],o,e.startsWith(`hand_`)?e.slice(-1):null))});let i=Object.fromEntries(Object.entries(r).map(([e,t])=>[e,cD(t,n)]).filter(([,e])=>e.length));return Object.keys(i).length?i:null}var uD=9.7,dD=.25,fD=.75,pD=.88,mD=.5,hD=22,gD=24,_D=Array.from({length:16},(e,t)=>9+t),vD=[`steps`,`period`,`step`,`swing`],yD=new Set([`POP`,`REACH`,`SLIDE`,`FLOAT`,`FLIP`,`KNEE`]),bD=new Map,xD=e=>Math.round(e*100)/100,SD=e=>(Array.isArray(e?.use)?e.use:[]).map((e,t)=>({i:t,u:e})).filter(({u:e})=>e?.skill===`walkTo`&&Number.isInteger(e.args?.arrive)&&Array.isArray(e.args?.to)&&!vD.some(t=>e.args[t]!==void 0)&&Object.values(e.args).every(e=>!(e&&typeof e==`object`&&!Array.isArray(e))));function CD(e,t){if(t===2)return e>=dD&&e<=fD?{first:e,step:e}:null;let n=Math.min(.62,Math.max(.3,.8*e/(t-2+.8))),r=(e-n)/(t-2);return r>=dD&&r<=fD?{first:n,step:r}:null}function wD(e,t,n){let r=[];for(let i of _D)for(let a=2;a<=40;a++){let o=CD(e,a);if(!o)continue;let s=t+16+a*i+18,c=o.step*gD/i,l=Math.abs(Math.log(o.step*i/uD)),u=Math.max(0,n-s)/Math.max(1,n-t);r.push({args:{steps:a,period:i,swing:Math.round(pD*i),step:xD(o.step),firstStep:xD(o.first)},end:s,v:c,late:s>n,score:l+1.5*u+Math.max(0,mD-c)*4})}return{onTime:r.filter(e=>!e.late).sort((e,t)=>e.score-t.score),late:r.filter(e=>e.late).sort((e,t)=>e.end-t.end||e.score-t.score)}}function TD(e,t){let{steps:n,period:r}=e.args,i=Math.round(.8*r),a=n>2&&e.args.firstStep<.62?{firstStep:.62,step:xD((t-.62)/(n-2))}:null;return[{},a,{lift:.06},a&&{...a,lift:.06}].filter(Boolean).map(t=>({...e,args:{...e.args,swing:i,...t}})).filter(e=>e.args.step>=dD&&e.args.step<=fD)}var ED=(e,t,n)=>e.groups.filter(e=>yD.has(e.kind)&&e.last>=t&&e.first<=n).reduce((e,t)=>e+t.count,0);function DD(e,{sk:t,scene:n,trial:r}){let i=[];for(let{i:a,u:o}of SD(e)){let s=JSON.stringify([e.keys,e.use.slice(0,a+1),e.anchors,e.props,e.fits,e.fix,n?.objects??null]);if(bD.has(s)){i.push(bD.get(s));continue}let c=e.use.slice(0,a).filter(e=>e.f0<o.f0),l,u=[];try{let{spec:r,used:i}=GT({...e,frames:2e4,use:c},{sk:t,scene:n,lenient:!0});l=pv(r.keys??[],o.f0),u=i.map(e=>e.end??0)}catch{l=null}if(!l?.foot_l||!l?.foot_r)continue;let d=[(l.foot_l[0]+l.foot_r[0])/2,(l.foot_l[2]+l.foot_r[2])/2],f=o.args.to,p=Math.hypot(f[0]-d[0],f[f.length-1]-d[1]),{onTime:m,late:h}=wD(p,o.f0,o.args.arrive),g=t=>{let n=Math.max(t.end,...u)+1;return{schema:e.schema,fps:e.fps??gD,frames:n,keys:(e.keys??[]).filter(e=>e.f<n),use:[...c,{...o,args:{...o.args,...t.args}}],...e.anchors?{anchors:e.anchors}:{},...e.props?{props:e.props}:{},...e.fits?{fits:e.fits}:{},...e.fix===void 0?{}:{fix:e.fix}}},_=null,v=0,y=null,b=0,x=[...m.slice(0,6),...m.slice(0,3).flatMap(e=>TD(e,p))].slice(0,18);for(let e of[...x,...h.slice(0,hD-x.length)]){let t;try{t=ED(r(g(e)),o.f0,e.end)}catch{t=1/0}if(v++,b+=+!e.late,(!y||t<y.issues)&&(y={c:e,issues:t}),t===0){_=e;break}}if(_??=y?.issues<1/0?y.c:m[0]??h[0],!_)continue;let S=_.args,C=o.args.arrive,w=`use[${a}] walkTo arrive f${C}: steps ${S.steps}, period ${S.period}, swing ${S.swing}, step ${S.step} m, firstStep ${S.firstStep} m${S.lift?`, lift ${S.lift} m`:``} (${xD(_.v)} m/s), ends f${_.end}`,T=m.length?`the ${b} walks tried that end by f${C} pop or miss a foot`:`even the quickest walk over ${xD(p)} m (a step every ${_D[0]} frames, strides up to ${fD} m, 34 frames to start and stop) ends f${h[0]?.end}`,E=_.late?`; f${C} is too soon: ${T}; give arrive >= f${_.end} or a shorter distance`:``,D=y&&y.c===_&&y.issues>0?`; no candidate walked clean (${y.issues} issues in its frames)`:``,O={i:a,args:S,end:_.end,note:`${w}${E}${D} (${v} checked)`};bD.size>=64&&bD.delete(bD.keys().next().value),bD.set(s,O),i.push(O)}return i}function OD(e,t){if(!t.length)return e;let n=e.use.map((e,n)=>{let r=t.find(e=>e.i===n);return r&&e?.skill===`walkTo`?{...e,args:{...e.args,...r.args}}:e});return{...e,use:n}}var kD=e=>Math.round(performance.now()-e);function AD(e,t){let n=structuredClone(e.checks??{}),r=e=>Array.isArray(e)?[Math.round(t(e[0])),Math.round(t(e[1]))]:e;for(let e of[`contacts`,`orient`,`below`])for(let t of n[e]??[])t.when=r(t.when);for(let e of n.clearance??[])e.frames=r(e.frames);return{...e,checks:n}}function jD(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return{spec:e,probes:t};let n=Tb(e.goals);if(e.probes===void 0&&n===e.goals)return{spec:e,probes:t};let{probes:r,...i}=e,a=r===void 0?t:t?[...t,...Array.isArray(r)?r:[r]]:r;return{spec:n===e.goals?i:{...i,goals:n},probes:a}}function MD(e,{sk:t,scene:n},r={}){let{spec:i,probes:a}=jD(e,r.probes),o=performance.now(),s={sk:t,scene:n,lenient:r.lenient===!0},c=[],l=r.checks&&fC({checks:r.checks}).checks,u=[],d=e=>{let{spec:t,used:r}=GT(fC(OD(e,u)),s),i=PE(JSON.parse(JSON.stringify(l?{...t,checks:l}:t)),n,c);return qb(i,s),{full:i,used:r}};u=DD(i,{sk:t,scene:n,trial:e=>{let n=d(e).full;return uC(t,Ly({fps:24,...n},s),n,{explain:!1})}});let f=i?.frames===`auto`&&u.length?{...i,frames:aE(OD(i,u),s).frames}:aE(i,s),p=YT(f),m=f,h=null;p.length&&({spec:m,search:h}=nE(f,p,s,e=>d(e).full)),i?.frames===`auto`&&sE(m);let g=performance.now(),{full:_,used:v}=d(m),y=Ly({fps:24,..._},s),b=kD(g),x=performance.now(),S=y.timeMap?AD(_,y.timeMap):_,C=uC(t,y,S,{userSpec:m}),w=_d(t,y,S.checks),T=ox(y);T&&Object.assign(w,{units:`${w.units}; ${ax}`,held:T});let E=lD(t,y),D=wx(t,y);E&&Object.assign(w,{units:`${w.units}; ${rD}`,near:E}),D&&Object.assign(w,{units:`${w.units}; ${Sx}`,wrist:D});let O=v.filter(e=>e.paced).map(e=>`${e.skill} paced ${e.paced.toFixed(2)} to fit f${e.f0}..f${e.end}`);O.length&&(w.paced=O);let k=v.filter(e=>e.cut).map(e=>`${e.skill}: ${e.cut}`);k.length&&(w.cut=k),u.length&&(w.planned=u.map(e=>e.note));let ee=wE(y,{used:v,spec:_}),A=a&&QE(y,a,{spec:_,sk:t,scene:n,notes:c});return{out:y,qa:C,observations:w,spec:m,expanded:_,used:v,fixed:y.fixed,search:h,timeline:ee,...A?{probes:A}:{},...c.length?{notes:c}:{},ms:{compile:b,qa:kD(x),total:kD(o)}}}var ND=`cozyclay.take.v3`;function PD(e,t,n={position:[0,0,0],yaw:0},r={}){let i=t.frames.length,a=e.names.length,o=new Float32Array(i*a*4),s=new Float32Array(i*3),c=Ss(-(n.yaw??0));for(let r=0;r<i;r++){let i=t.frames[r].s,{quats:l,hips:u}=Ps(e,{P:i.P.map(e=>G(c,z(e,n.position))),R:i.R.map(e=>W(c,e))});l.forEach((e,t)=>o.set(e,(r*a+t)*4)),s.set(u,r*3)}let l={},u=t.f0??0;for(let[e,n]of Object.entries(t.ctx.spec.objects??{})){let r=Pl(n),a=Fl(n),o=r||a,s=!Il(n),c=s?new Float32Array(i*3):null,d=s?new Float32Array(i*4):null,f=o||!s||Vh(n),p=f&&n.visible?new Uint8Array(i):null,m=o?new Uint8Array(i):null,h=f&&n.level?new Float32Array(i):null,[g,_]=r?Zp(t,n):[0,0],v=r&&im(t,e)?new Uint8Array(i):null;for(let r=0;r<i;r++){if(p&&(p[r]=+((t.baked?.[n.visible]?.[r+u]??0)>.5)),h&&(h[r]=Math.max(0,Math.min(4,t.baked?.[n.level]?.[r+u]??1))),!s)continue;let i=cm(t,e,r+u);i&&(c.set(i.pos,r*3),d.set(Ds(i.R),r*4),m&&(m[r]=a||r+u>=g&&r+u<=_?1:0),v&&(v[r]=+(r+u>_)))}l[e]={...s?{pos:c,quat:d}:{},...p?{vis:p}:{},...m?{hold:m}:{},...v?{world:v}:{},...h?{lvl:h}:{}}}return{schema:ND,fps:t.fps,frameCount:i,rig:e.model,bones:e.names.slice(),rot:o,hips:s,objects:l,placement:n,...r}}function FD(e,t){let n=Math.max(0,Math.min(e.frameCount-1,Math.round(t)))*3;return[e.hips[n],e.hips[n+1],e.hips[n+2]]}var ID=[{id:`hips`,bone:`mixamorigHips`,label:`Hips`},{id:`spine`,bone:`mixamorigSpine`,label:`Spine`},{id:`chest`,bone:`mixamorigSpine1`,label:`Chest`},{id:`upperChest`,bone:`mixamorigSpine2`,label:`Upper Chest`},{id:`neck`,bone:`mixamorigNeck`,label:`Neck`},{id:`head`,bone:`mixamorigHead`,label:`Head`},{id:`lShoulder`,bone:`mixamorigLeftShoulder`,label:`L Shoulder`},{id:`rShoulder`,bone:`mixamorigRightShoulder`,label:`R Shoulder`},{id:`lArm`,bone:`mixamorigLeftArm`,label:`L Upper Arm`},{id:`rArm`,bone:`mixamorigRightArm`,label:`R Upper Arm`},{id:`lForeArm`,bone:`mixamorigLeftForeArm`,label:`L Forearm`},{id:`rForeArm`,bone:`mixamorigRightForeArm`,label:`R Forearm`},{id:`lHand`,bone:`mixamorigLeftHand`,label:`L Hand`},{id:`rHand`,bone:`mixamorigRightHand`,label:`R Hand`},{id:`lUpLeg`,bone:`mixamorigLeftUpLeg`,label:`L Thigh`},{id:`rUpLeg`,bone:`mixamorigRightUpLeg`,label:`R Thigh`},{id:`lLeg`,bone:`mixamorigLeftLeg`,label:`L Shin`},{id:`rLeg`,bone:`mixamorigRightLeg`,label:`R Shin`},{id:`lFoot`,bone:`mixamorigLeftFoot`,label:`L Foot`},{id:`rFoot`,bone:`mixamorigRightFoot`,label:`R Foot`}];function LD(e){return String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase()}function RD(e,t){let n=LD(e),r=LD(t.bone);return n===r||n.endsWith(r)||r.endsWith(n)}var zD={id:`default`,label:`Default`,prompt:`standing relaxed with arms hanging naturally at their sides`,bones:{lArm:[1.5632,.1164,-.2889],rArm:[1.5632,-.1164,.2889],lForeArm:[-.0076,3e-4,-.0874],rForeArm:[-.0076,-3e-4,.0874]}},BD=`cozyclay_poses`,VD=new WeakMap;function HD(e,t,n){let r=Math.cos(e/2),i=Math.cos(t/2),a=Math.cos(n/2),o=Math.sin(e/2),s=Math.sin(t/2),c=Math.sin(n/2);return{x:o*i*a+r*s*c,y:r*s*a-o*i*c,z:r*i*c+o*s*a,w:r*i*a-o*s*c}}function UD(e,t){return{x:e.w*t.x+e.x*t.w+e.y*t.z-e.z*t.y,y:e.w*t.y-e.x*t.z+e.y*t.w+e.z*t.x,z:e.w*t.z+e.x*t.y-e.y*t.x+e.z*t.w,w:e.w*t.w-e.x*t.x-e.y*t.y-e.z*t.z}}function WD(e){return{x:-e.x,y:-e.y,z:-e.z,w:e.w}}function GD(e){let t=1-2*(e.y*e.y+e.z*e.z),n=2*(e.x*e.y-e.w*e.z),r=2*(e.x*e.z+e.w*e.y),i=1-2*(e.x*e.x+e.z*e.z),a=2*(e.y*e.z-e.w*e.x),o=2*(e.y*e.z+e.w*e.x),s=1-2*(e.x*e.x+e.y*e.y),c=Math.asin(Math.max(-1,Math.min(1,r)));return Math.abs(r)<.9999999?[Math.atan2(-a,s),c,Math.atan2(-n,t)]:[Math.atan2(o,i),c,0]}function KD(e){if(!e||e.userData?.poseBind)return;let t=new Map;e.traverse(e=>{if(e.isBone){let n=e.quaternion,r=e.position;t.set(e,{x:n.x,y:n.y,z:n.z,w:n.w,position:{x:r.x,y:r.y,z:r.z}})}}),e.userData.poseBind=t}function qD(e){let t=e.userData&&e.userData.poseBind;if(t)return t;let n=VD.get(e);return n||(n=new Map,e.traverse(e=>{if(e.isBone){let t=e.quaternion,r=e.position;n.set(e,{x:t.x,y:t.y,z:t.z,w:t.w,position:{x:r.x,y:r.y,z:r.z}})}}),VD.set(e,n)),n}function JD(e,t){for(let n=e.parent;n;n=n.parent)if(t.includes(n))return!0;return!1}function YD(e,t){let n=ID.length,r=0;if(e&&t){let n=qD(e),i=new Map;e.traverse(e=>{if(e.isBone){for(let t of ID)if(RD(e.name,t)){let n=i.get(t.id);n||i.set(t.id,n=[]),n.push(e)}}});for(let e of ID){let a=t[e.id],o=i.get(e.id);if(!o||!Array.isArray(a)||a.length<3)continue;let s=HD(a[0],a[1],a[2]),c=[];for(let e of o){if(c.length&&JD(e,c))continue;c.push(e);let t=UD(s,n.get(e)??n.get(o[0])??{x:0,y:0,z:0,w:1});e.quaternion.set(t.x,t.y,t.z,t.w)}r++}e.updateMatrixWorld(!0)}return{applied:r,total:n}}function XD(e){let t={};if(e){let n=qD(e),r=new Map;e.traverse(e=>{if(e.isBone){for(let t of ID)if(!r.has(t.id)&&RD(e.name,t)){r.set(t.id,e);break}}});for(let e of ID){let i=r.get(e.id);if(i){let r=i.quaternion,a=n.get(i),o=a?UD({x:r.x,y:r.y,z:r.z,w:r.w},WD(a)):{x:r.x,y:r.y,z:r.z,w:r.w};t[e.id]=GD(o)}}}return t}function ZD(e){let t=ID.find(e=>e.id===`hips`),n=null;return e.traverse(e=>{!n&&e.isBone&&RD(e.name,t)&&(n=e)}),n}function QD(e){if(!e)return 0;let t=ZD(e);if(!t)return 0;let n=qD(e).get(t);return n?.position?t.position.y-n.position.y:0}function $D(e){if(!e)return;let t=qD(e);e.traverse(e=>{if(!e.isBone)return;let n=t.get(e)?.position;n&&e.position.set(n.x,n.y,n.z)}),e.updateMatrixWorld(!0)}function eO(e,t=0){if(!e)return;let n=ZD(e);if(!n)return;let r=qD(e).get(n);r?.position&&(n.position.y=r.position.y+(Number.isFinite(t)?t:0),n.updateMatrixWorld(!0))}function tO(){try{let e=localStorage.getItem(BD);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>e&&typeof e==`object`&&typeof e.id==`string`&&e.bones&&typeof e.bones==`object`):[]}catch{return[]}}function nO(e){try{return localStorage.setItem(BD,JSON.stringify(e)),!0}catch{return!1}}var rO=100,iO=new WeakMap;function aO(e,t){let n=iO.get(e);if(n&&n.key===t.join())return n;let r=new Map;e.traverse(e=>{if(!e.isBone)return;let t=LD(e.name);r.has(t)||r.set(t,e)});let i=t.map(e=>{let t=LD(e);for(let[e,n]of r)if(e===t||e.endsWith(t))return n;return null}),a=e.userData?.poseBind,o=i.map(e=>{let t=e&&a?.get(e)?.position;return e?t?[t.x,t.y,t.z]:e.position.toArray():null});return n={key:t.join(),bones:i,bindPos:o,hips:t.indexOf(`Hips`)},iO.set(e,n),n}var oO=e=>e?.schema===`cozyclay.take.v3`;function sO(e,t,n){if(!e||!t)return;let{bones:r,bindPos:i,hips:a}=aO(e,t.bones),o=Math.max(0,Math.min(t.frameCount-1,Math.round(n)||0)),s=t.bones.length;for(let e=0;e<s;e++){let n=r[e];if(!n)continue;let c=(o*s+e)*4;n.quaternion.set(t.rot[c],t.rot[c+1],t.rot[c+2],t.rot[c+3]),e===a?n.position.set(t.hips[o*3]*rO,t.hips[o*3+1]*rO,t.hips[o*3+2]*rO):n.position.set(i[e][0],i[e][1],i[e][2])}e.updateMatrixWorld(!0)}var cO=.1,lO=4,uO=.1,dO=e=>Number((Math.round(Number(e)/uO)*uO).toFixed(1)),fO=e=>e.sourceEnd-e.sourceStart+1,pO=e=>Math.max(1,Math.round(fO(e)/e.speed));function mO(e){if(!Number.isInteger(e)||e<1)throw Error(`createTakeEdit: frames must be a positive integer`);return[{id:`motion-0`,sourceStart:0,sourceEnd:e-1,speed:1}]}var hO=e=>Array.isArray(e)?e.reduce((e,t)=>e+pO(t),0):0;function gO(e){let t=0;return e.map(e=>{let n=pO(e),r={...e,timelineStart:t,timelineEnd:t+n-1,timelineFrames:n};return t+=n,r})}function _O(e,t){let n=gO(e),r=Math.max(0,Math.min(Number.isFinite(t)?t:0,n.at(-1).timelineEnd)),i=n.find(e=>r<=e.timelineEnd)??n.at(-1);return i.timelineFrames<=1?i.sourceStart:i.sourceStart+(r-i.timelineStart)/(i.timelineFrames-1)*(i.sourceEnd-i.sourceStart)}function vO(e,t){let n=gO(e).find(e=>t>=e.sourceStart&&t<=e.sourceEnd);return n?n.sourceEnd===n.sourceStart?n.timelineStart:Math.round(n.timelineStart+(t-n.sourceStart)/(n.sourceEnd-n.sourceStart)*(n.timelineFrames-1)):null}var yO=(e,t,n)=>vO(t,_O(e,n));function bO(e,t,n){let r=new Map;for(let i of[...e].sort((e,t)=>e.frame-t.frame)){let e=yO(t,n,i.frame);e!==null&&!r.has(e)&&r.set(e,{...i,frame:e})}return[...r.values()]}function xO(e,t){let n=gO(e),r=Math.round(t);if(r<=0||r>=hO(e))return e;let i=n.findIndex(e=>r>e.timelineStart&&r<=e.timelineEnd);if(i<0)return e;let a=n[i],o=Math.max(a.sourceStart+1,Math.min(a.sourceEnd,Math.round(_O(e,r))));if(o>a.sourceEnd)return e;let s=[...e];return s.splice(i,1,{id:`${a.id}-a`,sourceStart:a.sourceStart,sourceEnd:o-1,speed:a.speed},{id:`${a.id}-b`,sourceStart:o,sourceEnd:a.sourceEnd,speed:a.speed}),s}function SO(e,t,n){let r=dO(n);if(!Number.isFinite(r)||r<cO||r>lO)throw Error(`speed must be between ${cO} and ${lO} in ${uO} steps`);return e.map(e=>e.id===t?{...e,speed:r}:e)}function CO(e,t){if(e.length<2)return e;let n=e.filter(e=>e.id!==t);return n.length===e.length?e:n}function wO(e,t){let n=fO(e)/Math.max(1,Math.round(Number(t)||1));return dO(Math.min(lO,Math.max(cO,n)))}function TO(e,t,n){let r=hO(e);if(!Number.isInteger(t)||!Number.isInteger(n)||t<0||n>=r||t>n)throw Error(`trim range ${t}..${n} is outside 0..${r-1}`);return gO(e).flatMap(r=>{let i=Math.max(t,r.timelineStart),a=Math.min(n,r.timelineEnd);if(i>a)return[];let o=Math.max(r.sourceStart,Math.ceil(_O(e,i)-1e-9)),s=Math.min(r.sourceEnd,Math.floor(_O(e,a)+1e-9));return o<=s?[{id:`${r.id}-t${o}`,sourceStart:o,sourceEnd:s,speed:r.speed}]:[]})}var EO=(e,t)=>!e||e.length===1&&e[0].sourceStart===0&&e[0].sourceEnd===t-1&&e[0].speed===1;function DO(e,t){return!Array.isArray(e)||!e.length?null:e.every(e=>e&&typeof e.id==`string`&&Number.isInteger(e.sourceStart)&&Number.isInteger(e.sourceEnd)&&e.sourceStart>=0&&e.sourceStart<=e.sourceEnd&&(!Number.isFinite(t)||e.sourceEnd<t)&&Number.isFinite(e.speed)&&e.speed>=cO&&e.speed<=lO)?e.map(({id:e,sourceStart:t,sourceEnd:n,speed:r})=>({id:e,sourceStart:t,sourceEnd:n,speed:r})):null}function OO(e,t,n,r,i,a,o){let s=n[r]*i[a]+n[r+1]*i[a+1]+n[r+2]*i[a+2]+n[r+3]*i[a+3]<0?-1:1,c=0;for(let l=0;l<4;l++)e[t+l]=n[r+l]*(1-o)+i[a+l]*s*o,c+=e[t+l]**2;c=Math.sqrt(c)||1;for(let n=0;n<4;n++)e[t+n]/=c}function kO(e,t,n,r,i,a,o,s){for(let c=0;c<s;c++)e[t+c]=n[r+c]+(i[a+c]-n[r+c])*o}function AO(e){let t=e&&!e.editRendered?DO(e.edit,e.frameCount):null;if(!t||EO(t,e.frameCount))return e;let n=hO(t),r=e.bones.length,i=e.frameCount,a=Array.from({length:n},(e,n)=>{let r=_O(t,n),a=Math.min(i-1,Math.floor(r));return{i0:a,i1:Math.min(i-1,a+1),t:r-a,near:Math.min(i-1,Math.round(r))}}),o=new Float32Array(n*r*4),s=new Float32Array(n*3);a.forEach(({i0:t,i1:n,t:i},a)=>{for(let s=0;s<r;s++)OO(o,(a*r+s)*4,e.rot,(t*r+s)*4,e.rot,(n*r+s)*4,i);kO(s,a*3,e.hips,t*3,e.hips,n*3,i,3)});let c=Object.fromEntries(Object.entries(e.objects??{}).map(([e,t])=>{let r={};t.pos&&(r.pos=new Float32Array(n*3),a.forEach(({i0:e,i1:n,t:i},a)=>kO(r.pos,a*3,t.pos,e*3,t.pos,n*3,i,3))),t.quat&&(r.quat=new Float32Array(n*4),a.forEach(({i0:e,i1:n,t:i},a)=>OO(r.quat,a*4,t.quat,e*4,t.quat,n*4,i))),t.lvl&&(r.lvl=new Float32Array(n),a.forEach(({i0:e,i1:n,t:i},a)=>kO(r.lvl,a,t.lvl,e,t.lvl,n,i,1)));for(let e of[`vis`,`hold`,`world`])t[e]&&(r[e]=new Uint8Array(n),a.forEach(({near:n},i)=>{r[e][i]=t[e][n]}));return[e,r]}));return{...e,frameCount:n,frames:n,rot:o,hips:s,objects:c,edit:t,editRendered:!0}}var jO=`cozyclay.take.v3`,MO=`cozyclay.motion-spec.v1`,NO=24,PO=e=>!!e&&typeof e==`object`&&!Array.isArray(e),FO=e=>Array.isArray(e)&&e.length===3&&e.every(Number.isFinite);function IO(e,t=[]){return!oO(e)||!PO(e.spec)?null:structuredClone({schema:jO,rig:e.rig,spec:e.spec,placement:{position:e.placement?.position??[0,0,0],yaw:e.placement?.yaw??0},scene:{...Kl(t),...PO(e.people)?{people:e.people}:{}}})}function LO(e){if(!PO(e)||e.schema!==jO||typeof e.rig!=`string`||!PO(e.spec)||e.spec.schema!==MO||!Number.isFinite(e.spec.frames)||!PO(e.placement)||!FO(e.placement.position)||!Number.isFinite(e.placement.yaw))return null;let t=PO(e.scene?.objects)?e.scene.objects:{},n=PO(e.scene?.others)?{others:e.scene.others}:{},r=PO(e.scene?.people)&&Object.values(e.scene.people).every(e=>PO(e)&&Array.isArray(e.names)&&Array.isArray(e.P)&&e.P.length===e.frames*e.names.length*3)?{people:e.scene.people}:{};return structuredClone({schema:jO,rig:e.rig,spec:e.spec,placement:{position:e.placement.position,yaw:e.placement.yaw},scene:{objects:t,...n,...r},...typeof e.takeId==`string`&&e.takeId?{takeId:e.takeId}:{},...DO(e.edit,e.spec.frames)?{edit:DO(e.edit,e.spec.frames)}:{}})}var RO=e=>e?.source?{...e.source,takeId:e.studioTakeId,...e.edit?{edit:e.edit}:{}}:null;function zO(e){let t=wf(e?.rig);if(!t||!PO(e.spec))return null;let{out:n}=MD({fps:NO,...e.spec},{sk:t,scene:e.scene??{objects:{}}},{lenient:!0}),r=PD(t,n,e.placement,{spec:e.spec,prompt:e.spec.label??``});return{...r,frames:r.frameCount}}var BO=`cozyclay.grid-view.v1`,VO=`#232428`,HO=`#e7e8eb`,UO=e=>e===`light`?HO:VO,WO=VO,GO=Object.freeze({color:WO,near:30,far:54}),KO=Object.freeze({minor:`#3d4046`,major:`#4c5058`,axisX:`#b3454f`,axisZ:`#3f6bb0`});function qO(e){try{return e?.getItem(BO)===`1`}catch{return!1}}function JO(e,t){try{e?.setItem(BO,t?`1`:`0`)}catch{}}var YO=.8,XO=.085,ZO=8,QO=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4,$O=e=>[1,3,5].map(t=>QO(parseInt(e.slice(t,t+2),16)/255)),ek=([e,t,n])=>.2126*e+.7152*t+.0722*n,tk=(e,t,n)=>e.map((e,r)=>e+(t[r]-e)*n),nk=(e,t)=>e.map(e=>e*t),rk=e=>e.map(e=>Number(e.toFixed(5))),ik=e=>e<=0?0:1-(1-Math.min(1,e/60))**2;function ak(e,t,n){if(!(e.envLight>0))return null;let r=$O(n),i=$O(e.skyTop??n),a=$O(e.hemiSky),o=0,s=0;for(let e=0;e<90;e++){let t=e+.5,n=Math.cos(t*Math.PI/180);o+=ek(tk(r,i,ik(t)))*n,s+=n}let c=o/s,l=ek(a),[u,d]=c>1e-6?[nk(r,l/c),nk(i,l/c)]:[a,a],f=Math.hypot(t.x,t.y,t.z)||1,p=$O(t.color??`#ffffff`),m=ek(p)||1,h=YO*(1-.6*e.shadowSoftness);return{horizon:rk(u),zenith:rk(d),ground:rk($O(e.hemiGround)),sun:{direction:rk([t.x/f,t.y/f,t.z/f]),color:rk(nk(p,h*l/(2*XO)/m))}}}function ok(e,[t,n,r]){let i=Math.asin(Math.max(-1,Math.min(1,n)))*180/Math.PI,a=tk(e.horizon,e.zenith,ik(i)),o=i>=0?a:tk(e.horizon,e.ground,Math.min(1,-i/ZO)),[s,c,l]=e.sun.direction,u=t*s+n*c+r*l,d=Math.exp((u-1)/XO);return o.map((t,n)=>t+e.sun.color[n]*d)}function sk(e,t=128,n=64){let r=new Float32Array(t*n*4);for(let i=0;i<n;i++){let a=((i+.5)/n-.5)*Math.PI,o=Math.cos(a),s=Math.sin(a);for(let n=0;n<t;n++){let a=((n+.5)/t-.5)*2*Math.PI,c=ok(e,[Math.cos(a)*o,s,Math.sin(a)*o]);r.set([...c,1],(i*t+n)*4)}}return r}var ck=Object.freeze([`studio`,`day`,`overcast`,`golden`,`dusk`,`night`,`interior`,`stage`]),lk=/^#[0-9a-fA-F]{6}$/,uk=e=>!!e&&typeof e==`object`&&!Array.isArray(e),dk=(e,t)=>typeof e==`string`&&lk.test(e)?e:t,fk=e=>y(e),pk=(e,t,{min:n,max:r})=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,Math.min(r,e)):t,mk=Object.freeze({x:6,y:9,z:4,intensity:1.12,warmth:.5,color:null}),hk=Object.freeze({preset:`studio`,sky:null,skyTop:null,ambient:1,hemiSky:`#ffffff`,hemiGround:`#5a5d64`,fill:1,fog:0,exposure:1,shadowSoftness:0,envLight:0,ao:0,...nt()}),gk=[`fill`,`fog`,`exposure`,`shadowSoftness`,`envLight`,`ao`];function _k(e){let t=uk(e)?e:{};return{...Object.fromEntries([`x`,`y`,`z`,`intensity`,`warmth`].map(e=>[e,pk(t[e],mk[e],fk(`stage.keyLight.${e}`))])),color:dk(t.color,null)}}function vk(e){let t=uk(e)?e:{},n=e=>pk(t[e],hk[e],fk(`stage.lighting.${e}`));return{preset:ck.includes(t.preset)?t.preset:hk.preset,sky:dk(t.sky,null),skyTop:dk(t.skyTop,null),ambient:n(`ambient`),hemiSky:dk(t.hemiSky,hk.hemiSky),hemiGround:dk(t.hemiGround,hk.hemiGround),...Object.fromEntries(gk.map(e=>[e,n(e)])),...nt(t)}}var yk=(e,t)=>Object.freeze({lighting:Object.freeze({...hk,...e}),keyLight:Object.freeze(t)}),bk=Object.freeze({studio:yk({},{...mk}),day:yk({sky:`#bcd2e8`,skyTop:`#4f86c6`,ambient:1.15,hemiSky:`#c4dcff`,hemiGround:`#6b6253`,fill:.7,fog:.12,shadowSoftness:.15,envLight:1,ao:.8},{x:5,y:14,z:7,intensity:2.1,color:`#fff3df`}),overcast:yk({sky:`#c2c7ce`,skyTop:`#8f97a3`,ambient:1.9,hemiSky:`#e3e8ef`,hemiGround:`#5c5f64`,fill:1.2,fog:.3,exposure:1.05,shadowSoftness:1,envLight:1,ao:1},{x:2,y:14,z:3,intensity:.55,color:`#e8ecf2`}),golden:yk({sky:`#f0a868`,skyTop:`#6a8cc0`,ambient:.75,hemiSky:`#9fb3d6`,hemiGround:`#6e5136`,fill:.45,fog:.3,shadowSoftness:.35,envLight:1,ao:.8},{x:9,y:3.2,z:4,intensity:1.9,color:`#ffad5c`}),dusk:yk({sky:`#8a6f8c`,skyTop:`#18223f`,ambient:.8,hemiSky:`#5b6c9c`,hemiGround:`#29242e`,fill:.35,fog:.4,shadowSoftness:.6,envLight:1,ao:.8},{x:-9,y:1.8,z:-4,intensity:.7,color:`#ff9466`}),night:yk({sky:`#0b1426`,skyTop:`#020408`,ambient:.6,hemiSky:`#34507f`,hemiGround:`#0a0c12`,fill:.25,fog:.45,shadowSoftness:.75,envLight:1,ao:.8},{x:-6,y:6.5,z:.5,intensity:.6,color:`#9db6e6`}),interior:yk({sky:`#2b2621`,ambient:.7,hemiSky:`#ffe2bf`,hemiGround:`#3d3128`,fill:.55,fog:.35,shadowSoftness:.55,envLight:1,ao:.9},{x:2,y:4.5,z:2.5,intensity:1.35,color:`#ffd29c`}),stage:yk({sky:`#000000`,ambient:0,hemiSky:`#000000`,hemiGround:`#000000`,fill:0,fog:.7,shadowSoftness:.2,ao:.6},{x:1.5,y:9,z:3,intensity:2.6,color:`#fff0d8`})}),xk=Object.freeze([`keyLight.position`,`keyLight.intensity`,`keyLight.color`,...[`sky`,`skyTop`,`ambient`,`hemiSky`,`hemiGround`,`fill`,`fog`,`exposure`,`shadowSoftness`,`envLight`,`ao`,`hdr`].map(e=>`lighting.${e}`)]);function Sk(e,t,n=[]){let r=bk[t];if(!r)throw Error(`Unknown lighting preset: ${t}`);let i={lighting:vk(e?.lighting),keyLight:_k(e?.keyLight)},a={...r.lighting,preset:t};for(let e of n)e.startsWith(`lighting.`)&&(a[e.slice(9)]=i.lighting[e.slice(9)]);if(n.includes(`lighting.hdr`))for(let e of rt)a[e]=i.lighting[e];let o={...i.keyLight,...r.keyLight};return n.includes(`keyLight.position`)&&Object.assign(o,{x:i.keyLight.x,y:i.keyLight.y,z:i.keyLight.z}),n.includes(`keyLight.intensity`)&&(o.intensity=i.keyLight.intensity),n.includes(`keyLight.color`)&&Object.assign(o,{color:i.keyLight.color,warmth:i.keyLight.warmth}),{lighting:vk(a),keyLight:_k(o)}}function Ck(e){let t=(1-e)**2;return{near:2+53*t,far:14+81*t}}function wk({lighting:e,keyLight:t,theme:n=`dark`,grid:r=!1}){let i=vk(e),a=_k(t),o=i.sky===null&&i.hdr&&i.hdrBackground?{...i,sky:UO(`dark`)}:i,s=o.sky===null,c=r&&s,l=s&&n===`light`,u=s?r?WO:UO(n):o.sky,d=Ck(o.fog),f=c?GO:{near:18,far:54},p=a.intensity/1.12,m=Math.min(1,.35+.65*p),h=.9*m*o.ambient,g=Math.max(0,1-o.envLight);return{sky:u,skyTop:o.skyTop,fog:{color:u,near:Math.min(f.near,d.near),far:Math.min(f.far,d.far)},captureFog:o.fog>0?d:null,hemi:{sky:c?`#ffffff`:o.hemiSky,ground:c?`#3a3d42`:l?`#d6d8de`:o.hemiGround,intensity:h*g},env:ak(o,a,u),envIntensity:h*o.envLight/Math.PI,hdr:o.hdr?{id:o.hdr,rotation:o.hdrRotation,intensity:o.hdrIntensity,background:o.hdrBackground,envIntensity:o.envLight*o.hdrIntensity}:null,ao:o.ao,ambient:(c?.34:l?.32:.18)*m*o.ambient,fill:.36*p*o.fill,rim:.22*p*o.fill,exposure:o.exposure,shadowRadius:1+o.shadowSoftness*7,shadowNormalBias:.02+o.shadowSoftness*.08,lightDeck:l}}var Tk=e=>Math.round(e*24/20),Ek=y(`character.position`),Dk=y(`character.scale`),Ok=`cozyclay.scenes.v5`,kk=`cozyclay.scenes.v5.quarantine`,Ak=`cozyclay.scenes.v4`,jk=`cozyclay.scenes.v3`,Mk=`cozyclay.scenes.v2`,Nk=`cozyclay.scenes.v1`,Pk=`cozyclay.scene.v1`,Fk=Object.freeze([Ak,jk,Mk,Nk]),Ik=Object.freeze([`y-bot-tpose`,`x-bot-tpose`]),Lk=`y-bot-tpose`,Rk=`proxy-figure`,zk=Object.freeze([...Ik,Rk]),Bk=Object.freeze([`stand`,`sit`,`lie`]);function Vk(e){return e?.model===Rk}var Hk=`a young woman in a tan coat`,Uk=`a man in a dark coat`,Wk=Object.freeze({characters:Object.freeze([Object.freeze({id:`char-a`,model:Lk,x:0,z:0,rot:0,hidden:!1,pose:null,subject:Hk})]),hasCharSheet:!1,environmentImage:null,environment:`a sunlit modern living room`,style:`moody cinematic lighting, 35mm film look`,hasEnvSheet:!1,shotAspect:`16:9`,cameraPresetId:null,sensorId:wr}),Gk=1,Kk=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function qk(e,t=new WeakMap){if(e===null||typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e!=`object`)return null;if(t.has(e))return t.get(e);if(Array.isArray(e)){let n=[];t.set(e,n);for(let r of e)n.push(qk(r,t));return n}let n={};t.set(e,n);for(let[r,i]of Object.entries(e))Object.defineProperty(n,r,{value:qk(i,t),enumerable:!0,writable:!0,configurable:!0});return n}var Jk=(e,t)=>Number.isFinite(e)?e:t;function Yk(e){return typeof e==`string`&&e.startsWith(`data:image/`)?e:null}Dk.min,Dk.max;var Xk=e=>Number.isFinite(e)&&e>0?Math.max(Dk.min,Math.min(Dk.max,e)):1;function Zk(e=null,t=0){let n=Kk(e)?e:{};return{id:typeof n.id==`string`&&n.id?n.id:`char-${t+1}`,model:zk.includes(n.model)?n.model:Lk,posture:Bk.includes(n.posture)?n.posture:`stand`,x:Math.max(Ek.min.x,Math.min(Ek.max.x,Jk(n.x,0))),y:Math.max(Ek.min.y,Math.min(Ek.max.y,Jk(n.y,0))),z:Math.max(Ek.min.z,Math.min(Ek.max.z,Jk(n.z,0))),rot:$a(Jk(n.rot,0)),hidden:n.hidden===!0,parent:typeof n.parent==`string`&&n.parent?n.parent:null,tint:typeof n.tint==`string`&&/^#[0-9a-fA-F]{6}$/.test(n.tint)?n.tint:null,pose:Kk(n.pose)?qk(n.pose):null,identityImage:Yk(n.identityImage),scale:Xk(n.scale),subject:typeof n.subject==`string`?n.subject:t===0?Hk:Uk,layer:$k(n.layer),ikEdits:Qk(n.ikEdits),motionTake:LO(n.motionTake)}}function Qk(e){if(!Kk(e))return null;let t=(e,t)=>Array.isArray(e)?e.filter(t).map(e=>qk(e)):[],n=t(e.keys,e=>Kk(e)&&Number.isFinite(e.frame)&&Kk(e.tracks)),r=t(e.pins,e=>Kk(e)&&typeof e.id==`string`),i=t(e.pinResiduals,e=>Array.isArray(e)&&typeof e[0]==`string`);return n.length||r.length?{keys:n,pins:r,pinResiduals:i}:null}function $k(e){return{waypoints:qr(qk((Kk(e)?e:{}).waypoints),`waypoint`)}}function eA(e){let t=Kk(e)?e:{},n=new Set;return{...t,characters:Array.isArray(t.characters)?t.characters.map(e=>({...e,layer:{waypoints:qr(qk(e.layer?.waypoints),`waypoint`,n)}})):t.characters}}function tA(){return{waypoints:[]}}function nA(e){if(!Kk(e))return e;let t={...qk(e)};if(Array.isArray(e.waypoints)){let n=new Map;for(let t of e.waypoints){if(!Kk(t)||!Number.isFinite(t.frame))continue;let e=Math.max(0,Tk(Math.round(t.frame)));n.set(e,{...qk(t),frame:e})}t.waypoints=[...n.values()].sort((e,t)=>e.frame-t.frame)}return t}function rA(e){return!Kk(e)||!Array.isArray(e.characters)?e:{...e,characters:e.characters.map(e=>Kk(e)&&Kk(e.layer)?{...e,layer:nA(e.layer)}:e)}}function iA(e){let t=[Zk({...Kk(e.charA)?e.charA:{},id:`char-a`,pose:e.poseA??null,subject:e.subject??`a young woman in a tan coat`},0)];return e.showB===!0&&t.push(Zk({...Kk(e.charB)?e.charB:{},id:`char-b`,pose:e.poseB??null,subject:e.subject2??`a man in a dark coat`},1)),t}var aA=new Set([`characters`,`hasCharSheet`,`environmentImage`,`environment`,`style`,`hasEnvSheet`,`shotAspect`,`cameraPresetId`,`sensorId`,`keyLight`,`lighting`,`charA`,`charB`,`showB`,`poseA`,`poseB`,`subject`,`subject2`]);function oA(e=null){let t=Kk(e)?e:{},n=Array.isArray(t.characters)&&t.characters.length?t.characters.map((e,t)=>Zk(e,t)):iA(t),r={};for(let[e,n]of Object.entries(t))aA.has(e)||(r[e]=qk(n));return{...r,characters:n,hasCharSheet:t.hasCharSheet===!0,environmentImage:Yk(t.environmentImage),environment:typeof t.environment==`string`?t.environment:Wk.environment,style:typeof t.style==`string`?t.style:Wk.style,hasEnvSheet:t.hasEnvSheet===!0,shotAspect:[`16:9`,`2.39:1`,`9:16`,`1:1`,`4:3`,`12:7`,`fal 480P`].includes(t.shotAspect)?t.shotAspect:Wk.shotAspect,cameraPresetId:typeof t.cameraPresetId==`string`&&t.cameraPresetId?t.cameraPresetId:Wk.cameraPresetId,sensorId:Object.hasOwn(Cr,t.sensorId??t.sensorFormat)?t.sensorId??t.sensorFormat:Wk.sensorId,keyLight:_k(t.keyLight),lighting:vk(t.lighting)}}function sA(e){let t=new Set(e.map(e=>e?.id)),n;do n=`scene-${Date.now().toString(36)}-${Gk++}`;while(t.has(n));return n}function cA(e,t){let n=e=>typeof e==`string`?e.normalize(`NFKC`).toLowerCase():``,r=new Set(t.map(e=>n(e?.name))),i=e=>r.has(n(e)),a=typeof e==`string`&&e.trim()?e.trim():`SCENE 01`;if(!i(a))return a;let o=a.match(/^(.*?)(\d+)$/);if(o){let[,e,t]=o;for(let n=Number(t)+1;;n+=1){let r=`${e}${String(n).padStart(t.length,`0`)}`;if(!i(r))return r}}for(let e=2;;e+=1){let t=`${a} ${e}`;if(!i(t))return t}}function lA(e=`SCENE 01`,t=[]){return{id:sA(t),name:cA(e,t),objects:[],shotDocument:null,stage:oA()}}function uA(e,t=`SCENE 01`){let n=Array.isArray(e)?e:[];return[...n,lA(t,n)]}function dA(e,t){if(!Array.isArray(e)||t<0||t>=e.length)return e;let n=e[t],r=lA(n.name,e);return r.objects=qk(n.objects),r.shotDocument=qk(n.shotDocument),r.stage=oA(n.stage),[...e.slice(0,t+1),r,...e.slice(t+1)]}function fA(e,t,n){if(!Array.isArray(e)||t<0||t>=e.length||typeof n!=`string`||!n.trim())return e;let r=cA(n,e.filter((e,n)=>n!==t));return r===e[t].name?e:e.map((e,n)=>n===t?{...e,name:r}:e)}function pA(e,t){return!Array.isArray(e)||e.length<=1||t<0||t>=e.length?e:e.filter((e,n)=>n!==t)}function mA(e,t){if(!Array.isArray(e)||!e.length)return-1;let n=e.findIndex(e=>e.id===t);return n<0?0:n}function hA(){let e=lA();return{version:5,activeSceneId:e.id,scenes:[e]}}function gA(e,t,n,r,i=!1){if(!Kk(e)||typeof e.id!=`string`||!e.id||!Array.isArray(e.objects)||t.some(t=>t.id===e.id))return null;let a=eA(oA(qk(Kk(e.stage)?e.stage:r)));return{id:e.id,name:cA(typeof e.name==`string`?e.name:`SCENE ${String(n).padStart(2,`0`)}`,t),objects:e.objects.filter(Kk).map(e=>qk(e)),shotDocument:qk(e.shotDocument??null),stage:i?rA(a):a}}function _A(e,t=Wk,n=!1){let r=[],i=0;for(let a of e.scenes){let e=gA(a,r,r.length+1,t,n);e?r.push(e):i+=1}return r.length||r.push(lA()),{document:{version:5,activeSceneId:r[mA(r,e.activeSceneId)].id,scenes:r},dropped:i}}function vA(e){try{return JSON.parse(e)}catch{return null}}function yA(e,t=null){if(e==null||e===``){if(t!=null&&t!==``){let e=vA(t);if(!Kk(e)||e.version!==1||!Array.isArray(e.objects))return{status:`corrupt`,document:hA(),dropped:0,quarantineRaw:t};let n=hA();return n.scenes[0].objects=e.objects.filter(Kk).map(e=>qk(e)),{status:`migrated`,document:n,dropped:e.objects.length-n.scenes[0].objects.length}}return{status:`absent`,document:hA(),dropped:0}}let n=vA(e);if(!Kk(n)||!Number.isInteger(n.version)||n.version<1)return{status:`corrupt`,document:hA(),dropped:0,quarantineRaw:e};if(n.version>5)return{status:`future`,document:null,dropped:0};if(!Array.isArray(n.scenes))return{status:`corrupt`,document:hA(),dropped:0,quarantineRaw:e};let r=n.version<5,i=n.version<4,a=_A(n,oA(n.stage),i);return{status:r?`migrated`:`valid`,...a}}function bA(e){if(!Number.isInteger(e.version)||e.version>=5)return e;let t=e.version<4;return{...e,version:5,scenes:e.scenes.map(e=>{let n=t?rA(e.stage):e.stage;return{...e,stage:Kk(n)&&Array.isArray(n.characters)?{...n,characters:n.characters.map(e=>Kk(e)&&!Bk.includes(e.posture)?{...e,posture:`stand`}:e)}:n}})}}function xA(e){return JSON.stringify({version:5,activeSceneId:e.activeSceneId,scenes:e.scenes})}function SA(e){let t=e.getItem(Ok);for(let n of Fk){if(t)break;t=e.getItem(n)}let n=t?null:e.getItem(Pk),r=yA(t,n);return r.status===`corrupt`&&r.quarantineRaw!==void 0&&e.setItem(kk,r.quarantineRaw),r.status===`migrated`&&e.setItem(Ok,xA(r.document)),r}var CA=Object.freeze([`storyboard`,`animation`]),wA=`animation`;function TA(e){return CA.includes(e)?e:wA}var EA=`.cclayproject`,DA=`cozyclay.workflow.v1`,OA=`cozyclay.project-handle.v1`,kA=`kv`,AA=`lastProjectHandle`,jA=268435456;function MA(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function NA(e,t=0){if(e===null||typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:null;if(t>32)return null;if(Array.isArray(e))return e.map(e=>NA(e,t+1));if(!MA(e))return null;let n={};for(let[r,i]of Object.entries(e))r!==`__proto__`&&r!==`constructor`&&r!==`prototype`&&i!==void 0&&typeof i!=`function`&&typeof i!=`symbol`&&(n[r]=NA(i,t+1));return n}function PA(e){return{x:Number.isFinite(e?.x)?e.x:0,y:Number.isFinite(e?.y)?e.y:0}}function FA(){return{version:1,nodes:[],edges:[]}}function IA(e){if(!MA(e)||e.version!==void 0&&e.version!==1)return FA();let t=[],n=new Set;for(let r of Array.isArray(e.nodes)?e.nodes:[]){if(!MA(r)||typeof r.id!=`string`||!r.id.trim()||n.has(r.id))continue;let e=NA(r.data);t.push({id:r.id,type:typeof r.type==`string`&&r.type.trim()?r.type:`default`,position:PA(r.position),data:MA(e)?e:{}}),n.add(r.id)}let r=[],i=new Set;for(let t=0;t<(Array.isArray(e.edges)?e.edges.length:0);t+=1){let a=e.edges[t];if(!MA(a)||typeof a.source!=`string`||typeof a.target!=`string`||!n.has(a.source)||!n.has(a.target))continue;let o=typeof a.id==`string`&&a.id.trim()?a.id:`${a.source}->${a.target}:${t}`;if(i.has(o))continue;let s={id:o,source:a.source,target:a.target};typeof a.sourceHandle==`string`&&a.sourceHandle&&(s.sourceHandle=a.sourceHandle),typeof a.targetHandle==`string`&&a.targetHandle&&(s.targetHandle=a.targetHandle);let c=NA(a.data);MA(c)&&(s.data=c),r.push(s),i.add(o)}return{version:1,nodes:t,edges:r}}function LA(e=globalThis.localStorage,{strict:t=!1}={}){try{return IA(JSON.parse(e?.getItem(`cozyclay.workflow.v1`)||`null`))}catch(e){if(t)throw e;return FA()}}function RA(e,t=globalThis.localStorage){let n=IA(e);try{t?.setItem(DA,JSON.stringify(n))}catch{}try{globalThis.dispatchEvent?.(new CustomEvent(`cozyclay:workflow-change`))}catch{}return n}function zA(e){return e instanceof ArrayBuffer?e:ArrayBuffer.isView(e)?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):null}function BA(e){let t=new Uint8Array(e),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(n)}function VA(e,t){if(typeof e!=`string`||e.length<4||e.length%4)return{code:`bad-base64`};if(e.length>Math.ceil(t/3)*4)return{code:`too-large`};let n=e.endsWith(`==`)?2:+!!e.endsWith(`=`);for(let t=0;t<e.length-n;t+=1){let n=e.charCodeAt(t);if(!(n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===43||n===47))return{code:`bad-base64`}}let r=e.length/4*3-n;return r>t?{code:`too-large`}:{bytes:r}}function HA(e,t){let n=VA(e,t);if(n.code)return n;try{let t=atob(e),n=Uint8Array.from(t,e=>e.charCodeAt(0));return BA(n)===e?{buffer:n.buffer}:{code:`bad-base64`}}catch{return{code:`bad-base64`}}}function UA(e,t,n){let r=Error(`${n} (${e} bytes) exceeds the ${t}-byte limit.`);return r.code=`resources-too-large`,r.bytes=e,r.limit=t,r}function WA(e){let t=zA(e?.bytes),n=Rt({...e,bytes:t});return!n||n.bytes.byteLength>33554432?null:{record:{...n,bytes:BA(n.bytes)},bytes:n.bytes.byteLength}}function GA(e){let t=new Set,n=e=>{if(Array.isArray(e)){for(let t of e)n(t);return}if(MA(e)){At(e.assetRef)&&t.add(e.assetRef);for(let t of Object.values(e))n(t)}};return n(e),t}async function KA(e,t){let n=zA(e?.bytes);if(!n)return!1;try{return(Ze(e.id)?await dt(n,t):jt(e.id)?await Ft(n,t):await Pt(n,t))===e.id}catch{return!1}}var qA={"bad-id":`its id is not a content address`,duplicate:`the same id appears earlier in the file`,"bad-encoding":`its encoding is not base64`,"bad-base64":`its payload is not valid base64`,"length-mismatch":`its payload does not match the recorded byte length`,"too-large":`its payload exceeds the size limit`,"bad-record":`its metadata is incomplete`};function JA(e,t){let n=[];if(!Array.isArray(e))return n;let r=new Set;for(let i of e){let e=typeof i?.id==`string`?i.id:null;if(!Mt(e)){t(`image`,e,`bad-id`);continue}if(r.has(e)){t(`image`,e,`duplicate`);continue}let a=HA(i.bytes,St);if(a.code){t(`image`,e,a.code);continue}let o=Rt({...i,bytes:a.buffer});if(!o){t(`image`,e,`bad-record`);continue}r.add(e),n.push(o)}return n}function YA({scenesDocument:e,workspaceLayout:t,customPoses:n,name:r,previsMode:i,assets:a,savedAt:o,workflow:s}){let c=new Map;for(let e of Array.isArray(a)?a:[]){let t=WA(e);t&&c.set(t.record.id,t)}let l=[],u=0,d=Wt(e?.scenes);for(let e of GA(s))d.add(e);for(let e of d){let t=c.get(e);t&&(l.push(t.record),u+=t.bytes)}if(u>268435456)throw UA(u,jA,`Embedded resources`);return{app:`cozyclay`,kind:`project`,version:5,name:typeof r==`string`&&r.trim()?r.trim():`Untitled`,previsMode:TA(i),...Number.isFinite(o)&&o>0?{savedAt:o}:{},scenes:e,workspace:t??null,poseLibrary:Array.isArray(n)?n:[],workflow:IA(s),resources:{assets:l}}}function XA(e){let t=structuredClone(e?.scenesDocument??{version:5,activeSceneId:null,scenes:[]});return t.scenes=(t.scenes??[]).map(e=>({...e,shotDocument:e.shotDocument&&typeof e.shotDocument==`object`?{...e.shotDocument,shots:Array.isArray(e.shotDocument.shots)?e.shotDocument.shots.map(e=>({...e,...e.kind===`still`?{kind:`clip`}:{}})):e.shotDocument.shots}:e.shotDocument})),YA({scenesDocument:t,workspaceLayout:structuredClone(e?.workspaceLayout??null),customPoses:structuredClone(e?.customPoses??[]),name:`${e?.name||`Untitled`} - ${F(`Animation`,`애니메이션`)}`,previsMode:`animation`,assets:e?.assets??[],workflow:structuredClone(e?.workflow??FA()),savedAt:Date.now()})}function ZA(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1,reason:`corrupt`}}if(!t||typeof t!=`object`)return{ok:!1,reason:`corrupt`};if(t.app!==`cozyclay`||t.kind!==`project`)return{ok:!1,reason:`not-a-project`};if(typeof t.version!=`number`)return{ok:!1,reason:`corrupt`};if(t.version>5)return{ok:!1,reason:`future`};let n=t.scenes;if(!n||typeof n!=`object`||n.version>5||!Array.isArray(n.scenes))return{ok:!1,reason:`scenes-invalid`};let r=[],i=[],a=JA(t.version>=4?t.resources?.assets:t.version>=2?t.assets:void 0,(e,t,n)=>{let a=`Skipped embedded ${e} ${t??`(no id)`}: ${qA[n]}.`;i.push({kind:e,id:t,code:n,message:a}),r.push(a)}),o=IA(t.workflow);return{ok:!0,warnings:r,problems:i,project:{name:typeof t.name==`string`&&t.name.trim()?t.name.trim():`Untitled`,previsMode:TA(t.previsMode),savedAt:Number.isFinite(t.savedAt)&&t.savedAt>0?t.savedAt:null,scenesDocument:{version:n.version,activeSceneId:n.activeSceneId??null,scenes:n.scenes},workspaceLayout:t.workspace&&typeof t.workspace==`object`?t.workspace:null,customPoses:Array.isArray(t.poseLibrary)?t.poseLibrary.filter(e=>e&&typeof e==`object`&&typeof e.id==`string`&&e.bones&&typeof e.bones==`object`):[],assets:a,workflow:o}}}function QA(){return typeof window<`u`&&typeof window.showSaveFilePicker==`function`&&typeof window.showOpenFilePicker==`function`}var $A=[{description:`CozyClay Project`,accept:{"application/json":[EA,`.json`]}}];async function ej(e){return await window.showSaveFilePicker({suggestedName:`${e||`Untitled`}${EA}`,types:$A})}async function tj(){let[e]=await window.showOpenFilePicker({types:$A,multiple:!1});return e}async function nj(e,t){let n=await e.createWritable();await n.write(t),await n.close()}async function rj(e){let t=await e.getFile();return{name:t.name.replace(/\.cclayproject$|\.json$/i,``),text:await t.text(),savedAt:t.lastModified}}function ij(e,t){let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`${t||`Untitled`}${EA}`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}function aj(){return new Promise(e=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`${EA},.json,application/json`,t.onchange=async()=>{let n=t.files?.[0];if(!n)return e(null);e({name:n.name.replace(/\.cclayproject$|\.json$/i,``),text:await n.text(),savedAt:n.lastModified})},t.oncancel=()=>e(null),t.click()})}function oj(){return new Promise((e,t)=>{let n=indexedDB.open(OA,1);n.onupgradeneeded=()=>n.result.createObjectStore(kA),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function sj(e,t){try{let n=await oj();await new Promise((r,i)=>{let a=n.transaction(kA,`readwrite`);a.objectStore(kA).put({handle:e,name:t},AA),a.oncomplete=r,a.onerror=()=>i(a.error)}),n.close()}catch{}}async function cj(){try{let e=await oj(),t=await new Promise((t,n)=>{let r=e.transaction(kA,`readonly`).objectStore(kA).get(AA);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)});return e.close(),t}catch{return null}}async function lj(){try{let e=await oj();await new Promise((t,n)=>{let r=e.transaction(kA,`readwrite`);r.objectStore(kA).delete(AA),r.oncomplete=t,r.onerror=()=>n(r.error)}),e.close()}catch{}}var uj=`recentProjects`,dj=`projectsDirectory`,fj=8,pj=`cozyclay.project-session.v1`;function mj(e=globalThis.localStorage){try{let t=JSON.parse(e?.getItem(`cozyclay.project-session.v1`)||`null`);if(!t||typeof t!=`object`)return null;let n=typeof t.name==`string`?t.name.trim():``;return n?{name:n,previsMode:TA(t.previsMode),updatedAt:Number.isFinite(t.updatedAt)?t.updatedAt:0}:null}catch{return null}}function hj(e,t=wA,n=globalThis.localStorage){let r=typeof e==`string`?e.trim():``;if(!r)return!1;try{return n?.setItem(pj,JSON.stringify({name:r,previsMode:TA(t),updatedAt:Date.now()})),!0}catch{return!1}}async function gj(e,t){try{let n=await oj();await new Promise((r,i)=>{let a=n.transaction(kA,`readwrite`);a.objectStore(kA).put(t,e),a.oncomplete=r,a.onerror=()=>i(a.error)}),n.close()}catch{}}async function _j(e){try{let t=await oj(),n=await new Promise((n,r)=>{let i=t.transaction(kA,`readonly`).objectStore(kA).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)});return t.close(),n}catch{return null}}async function vj(e,t){let n=await _j(uj)??[];await gj(uj,[{handle:e,name:t,openedAt:Date.now()},...n.filter(e=>e.name!==t)].slice(0,fj)),await sj(e,t)}async function yj(){return await _j(uj)??[]}async function bj(e){await gj(uj,(await _j(uj)??[]).filter(t=>t.name!==e))}function xj(){return typeof window<`u`&&typeof window.showDirectoryPicker==`function`}async function Sj(){return window.showDirectoryPicker({mode:`readwrite`})}async function Cj(e){await gj(dj,{handle:e})}async function wj(){return(await _j(dj))?.handle??null}async function Tj(e){let t=[];try{for await(let[n,r]of e.entries()){if(r.kind!==`file`||!n.endsWith(`.cclayproject`))continue;let e=await r.getFile();t.push({name:n.slice(0,-13),handle:r,lastModified:e.lastModified})}}catch{return[]}return t.sort((e,t)=>t.lastModified-e.lastModified)}async function Ej(e){try{return await e.queryPermission({mode:`readwrite`})}catch{return`denied`}}async function Dj(e){try{return await e.queryPermission({mode:`readwrite`})===`granted`?`granted`:await e.requestPermission({mode:`readwrite`})}catch{return`denied`}}var Oj=t((e=>{var t=Re();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),kj=t(((e,t)=>{t.exports=Oj()})),Aj=t((e=>{var t=Re(),n=kj();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),jj=t(((e,t)=>{t.exports=Aj()})),Mj=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Nj=t(((e,t)=>{t.exports=Mj()})),Q=e(Re(),1),Pj=Ve(),$=Nj();function Fj(e){return e?typeof e.id==`string`&&jt(e.id)?!0:Tt(e.type):!1}function Ij({getRecord:e=async e=>Qt(await Rj(),e),putRecord:t=async e=>Zt(await Rj(),e),createBitmap:n=(...e)=>createImageBitmap(...e),makeTexture:r=e=>new C(e)}={}){let i=new Map;function a(e){let t=i.get(e);return t||(t={texture:null,record:null,promise:null,listeners:new Set,generation:0,evicted:!1},i.set(e,t)),t}function o(e){for(let t of e.listeners)t(e.texture)}function s(e){e?.image?.close?.(),e?.dispose?.()}async function c(e){if(Fj(e))return null;let t=r(await n(new Blob([e.bytes],{type:e.type}),{imageOrientation:`flipY`}));return t.flipY=!1,t.colorSpace=fe,t.generateMipmaps=!0,t.minFilter=A,t.magFilter=se,t.anisotropy=4,t.needsUpdate=!0,t.userData.assetId=e.id,t}function l(t){if(typeof t!=`string`||!t||jt(t))return Promise.resolve(null);let n=a(t);if(n.evicted)return Promise.resolve(null);if(n.texture)return Promise.resolve(n.texture);if(!n.promise){let r=n.generation;n.promise=(async()=>{let i=n.record??await e(t);if(!i||n.evicted||n.generation!==r||Fj(i))return null;n.record=i;let a=await c(i);return n.evicted||n.generation!==r?(s(a),null):(n.texture=a,o(n),a)})().catch(e=>(console.warn(`[cozyclay] could not load image asset ${t}`,e),n.failed=!0,null)).finally(()=>{n.generation===r&&(n.promise=null)})}return n.promise}async function u(t){if(typeof t!=`string`||!t)return null;let n=a(t);return n.evicted?null:(n.record||=await e(t),n.record)}async function d(e){let n=await t(e),r=a(n.id),i=++r.generation;if(r.evicted=!1,s(r.texture),r.texture=null,r.record=n,r.promise=null,Fj(n))return n;let l=await c(n);return!l||r.generation!==i?(s(l),n):(r.texture=l,o(r),n)}function f(e){let t=i.get(e);t&&(t.generation+=1,t.evicted=!0,s(t.texture),t.texture=null,t.record=null,t.promise=null,o(t))}function p(e,t){if(typeof e!=`string`||!e)return()=>{};let n=a(e);return n.listeners.add(t),n.texture?t(n.texture):l(e),()=>n.listeners.delete(t)}function m(){for(let e of i.values())s(e.texture);i.clear()}return{loadAssetTexture:l,assetRecord:u,rememberAsset:d,evictAssetTexture:f,subscribeToAssetTexture:p,clearAssetTextures:m}}var Lj=null;function Rj(){return Lj||=Xt(),Lj}var zj=Ij();zj.loadAssetTexture;var Bj=zj.assetRecord,Vj=zj.rememberAsset,Hj=zj.evictAssetTexture,Uj=zj.subscribeToAssetTexture;function Wj(e){let t=Array.from(e?.files??[]).find(e=>e.type.startsWith(`image/`));if(t)return t;for(let t of Array.from(e?.items??[]))if(t.kind===`file`&&t.type.startsWith(`image/`)){let e=t.getAsFile?.();if(e)return e}return null}async function Gj(e){let t=new Uint8Array(await e.arrayBuffer()),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode.apply(null,t.subarray(e,e+32768));return`data:${e.type||`image/png`};base64,${btoa(n)}`}function Kj(e,t){return{fileName:e.name&&e.name!==`image.png`?e.name:`pasted-${new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`)}.png`,mimeType:e.type||`image/png`,fileUrl:t,image_url:t,localPreview:!0,outputs:[{value:t}]}}function qj(e,t){return Wj(t)?!e||typeof e.matches!=`function`||!(e.isContentEditable||e.matches(`[contenteditable=true]`)):!1}var Jj=1600,Yj=4194304,Xj=.85,Zj=Object.freeze([`image/png`,`image/jpeg`,`image/webp`]),Qj=`Up to 4 images per message`,$j=`Attach a PNG, JPEG or WebP image`,eM=`That image could not be attached`,tM={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,webp:`image/webp`};function nM(e){let t=String(e?.type??``).toLowerCase();return Zj.includes(t)?t:t?null:tM[String(e?.name??``).toLowerCase().match(/\.([a-z0-9]+)$/)?.[1]]??null}function rM(e){return Array.from(e?.types??[]).includes(`Files`)}function iM(e){let t=Array.from(e?.files??[]);if(!t.length){let n=Wj(e);n&&t.push(n)}let n=[],r=0;for(let e of t)nM(e)?n.push(e):String(e?.type??``).startsWith(`image/`)&&(r+=1);return{images:n,unsupported:r}}function aM(e){let t=String(e??``).slice(String(e??``).indexOf(`,`)+1);if(!t)return 0;let n=t.endsWith(`==`)?2:+!!t.endsWith(`=`);return Math.max(0,Math.floor(t.length*3/4)-n)}function oM(e,t,n=Jj){let r=Math.max(e,t);if(!Number.isFinite(r)||r<=0)return null;if(r<=n)return{width:Math.round(e),height:Math.round(t),scaled:!1};let i=n/r;return{width:Math.max(1,Math.round(e*i)),height:Math.max(1,Math.round(t*i)),scaled:!0}}function sM(e=[],t=[],n=4){let r=Math.max(0,n-e.length);return{attachments:[...e,...t.slice(0,r)],rejected:Math.max(0,t.length-r)}}var cM=32768,lM=e=>{let t=``;for(let n=0;n<e.length;n+=cM)t+=String.fromCharCode.apply(null,e.subarray(n,n+cM));return btoa(t)};async function uM(e,t){let n=new Uint8Array(await e.arrayBuffer());return`data:${t||e.type||`image/jpeg`};base64,${lM(n)}`}function dM(e,t){if(typeof OffscreenCanvas==`function`)return new OffscreenCanvas(e,t);throw Error(`this browser cannot resize images — OffscreenCanvas is unavailable`)}function fM(e){let t=e.indexOf(`,`),n=e.slice(5,e.indexOf(`;`)),r=atob(e.slice(t+1)),i=new Uint8Array(r.length);for(let e=0;e<r.length;e+=1)i[e]=r.charCodeAt(e);return new Blob([i],{type:n})}async function pM(e,{decode:t=globalThis.createImageBitmap,makeCanvas:n=dM,toBlob:r=fM,maxBytes:i=Yj,maxDimension:a=Jj,quality:o=Xj}={}){if(aM(e)<=i)return e;if(typeof t!=`function`)throw Error(`this browser cannot decode images — createImageBitmap is unavailable`);let s=await t(r(e));try{let e=oM(s.width,s.height,a);if(!e)throw Error(`that image has no usable size`);let t=n(e.width,e.height),r=t.getContext(`2d`);if(!r)throw Error(`this browser cannot resize images — no 2D context`);return r.drawImage(s,0,0,e.width,e.height),await uM(await t.convertToBlob({type:`image/jpeg`,quality:o}),`image/jpeg`)}finally{s?.close?.()}}function mM(e){let t=String(e?.name??``).trim();return!t||t===`image.png`?`pasted-image.png`:t.slice(0,120)}async function hM(e,t={}){let{readDataUrl:n=Gj,...r}=t,i=nM(e)??`image/png`,a=await n(e);return{dataUrl:await pM(a.startsWith(`data:${i};`)?a:`data:${i};${a.slice(a.indexOf(`;`)+1)}`,r),name:mM(e)}}var gM=new Set([`aborted`,`capture_failed`,`generation_failed`,`unknown`]),_M=new Set([`aborted`,`auth`,`rate_limited`,`tool_failed`,`upstream`,`unknown`]);function vM(){try{if(!globalThis.crypto?.getRandomValues)return null;let e=new Uint8Array(16);return globalThis.crypto.getRandomValues(e),[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``)}catch{return null}}function yM(e,t,n){try{Promise.resolve(e(t,n)).catch(()=>{})}catch{}}function bM(e){try{return e()}catch{return NaN}}function xM(e,t,n=`unknown`){let r=t===`agent`?_M:gM;try{if(e?.name===`AbortError`)return`aborted`}catch{}return r.has(n)?n:`unknown`}function SM(e,{capture:t=S,now:n=()=>performance.now(),durationBucket:r=_}={}){let i=vM(),a=!1,o=!1,s=bM(n),c=(e,n)=>{i&&yM(t,e,n)};c(`workflow:run_requested`,{surface:`workflow`,...l.node_count_bucket.has(e.node_count_bucket)?{node_count_bucket:e.node_count_bucket}:{},run_id:i});let u=(e,t,o)=>{if(a||!i)return;a=!0;let u=xM(t,`workflow`,o),d=e===`failed`&&u===`aborted`?`cancelled`:e,f=`lt1s`;try{let e=r(bM(n)-s);l.duration_bucket.has(e)&&(f=e)}catch{}c(`workflow:run_${d}`,{run_id:i,duration_bucket:f,...d===`succeeded`?{}:{failure_code:u}})};return{runId:i,succeed(){u(`succeeded`)},fail(e,t=`unknown`){u(`failed`,e,t)},apply(){o||!i||(o=!0,c(`workflow:result_applied`,{run_id:i}))}}}var CM=`follow the reference clip's framing and camera motion exactly`,wM=`clay previs, neutral look`,TM=`motion and blocking come from the reference; keep timing`;function EM(e){if(!Number.isFinite(e)||e<=0)return`normal`;let t=18/Math.tan(e*Math.PI/360);return t<=20?`wide`:t<=40?`normal`:`long`}function DM(e){return`${Number(e.toFixed(2))}s`}function OM(e){let t=[];return e?.dolly&&t.push(`smooth dolly move`),e?.crane&&t.push(`gentle crane move`),e?.rail&&t.push(`sliding rail move`),t.length>0?t.join(`; `):`locked-off camera, no move`}var kM=[`front`,`front right`,`right`,`back right`,`back`,`back left`,`left`,`front left`];function AM(e){if(!Number.isFinite(e))return``;let t=(e%360+360)%360;return kM[Math.round(t/45)%8]}function jM(e){return Number.isFinite(e)?e>=50?`high`:e<=10?`low`:`level`:``}function MM(e){return Number.isFinite(e)?e>=.8?`strong`:e>=.35?`moderate`:`dim`:`moderate`}function NM(e){return e?`${[jM(e.elevationDeg),AM(e.azimuthDeg)].filter(Boolean).join(` `)||`even`} key light, ${MM(e.intensity)}`:`no key light, ambient fill`}function PM(e,t={}){let n=t.target===`video`?`video`:`image`,r=t.referenceOwnsCamera!==!1,i=Math.max(0,(e.frameRange?.end??0)-(e.frameRange?.start??0)+1)/(e.fps||24),a=typeof e.intent==`string`?e.intent.trim():``,o=[`SHOT: ${e.shotTitle||`untitled shot`}, ${DM(i)}, ${e.aspect||``}`.trimEnd(),`LENS: ${e.focalMm}mm, ${EM(e.fovDeg)} shot`,r?`CAMERA: ${CM}`:`CAMERA: ${OM(e.cameraMove)}`,`LIGHT: ${NM(e.keyLight)}`,`CAST: ${(e.cast||[]).map(e=>e.name).join(`, `)||`none`}`,`LOOK: ${a||wM}`];return n===`video`&&o.push(`MOTION: ${TM}`),o.join(`
14
+ `)}var FM=``;function IM(e){return`${FM}${e}`}async function LM(e,t,n){let r=await e(IM(t),{headers:{"content-type":`application/json`},...n});if(!r.ok){let e=null;try{e=await r.clone().json()}catch{}let n=typeof e?.error==`string`?e.error:e?.error?.message,i=Error(n||`${t} responded ${r.status}`);throw i.status=r.status,e?.error&&typeof e.error==`object`&&Object.assign(i,e.error),e?.preservation&&typeof e.preservation==`object`&&(i.preservation=e.preservation),i}return r.json()}function RM({prompt:e,imageDataUrl:t,referenceDataUrl:n,references:r,composition:i,quality:a=`auto`,size:o}){return{prompt:e,imageDataUrl:t,...n?{referenceDataUrl:n}:{},...Array.isArray(r)&&r.length?{references:r}:{},...i?{composition:i}:{},quality:a,...o?{size:o}:{}}}function zM(e,{fetchImpl:t=globalThis.fetch?.bind(globalThis),signal:n}={}){return LM(t,`/agent/image`,{method:`POST`,body:JSON.stringify(RM(e)),signal:n})}var BM=`Use the first image (a clay blocking frame) as the layout: keep its composition and camera angle, and keep the pose but make it look natural. Render it as:`;function VM({meta:e,caption:t,imageDataUrl:n}){let r=typeof t==`string`?t.trim():``;return{prompt:`${BM}\n${PM(e,{target:`image`})}${r?`\n${r}`:``}`,imageDataUrl:n,quality:`auto`}}function HM(e){if(e?.code===`entitlement`)return F(`This account cannot generate images.`,`이 계정은 이미지를 생성할 수 없어요.`);if(e?.status===401||e?.code===`auth`)return F(`Sign in with ChatGPT in the Agent panel first.`,`먼저 Agent 패널에서 ChatGPT로 로그인하세요.`);let t=e?.message||F(`unknown error`,`알 수 없는 오류`);return F(`Stylize failed — ${t}`,`스타일화 실패 — ${t}`)}function UM(e,t){let n=typeof e==`string`?/^data:image\/png;base64,(.*)$/s.exec(e):null;if(!n)throw Error(F(`The image route did not return a PNG.`,`이미지 경로가 PNG를 돌려주지 않았어요.`));let r=atob(n[1]);if(r.length>t){let e=Math.round(t/1048576);throw Error(F(`The stylized image is larger than ${e} MB, so it was not added.`,`스타일화된 이미지가 ${e} MB보다 커서 추가하지 않았어요.`))}let i=new Uint8Array(r.length);for(let e=0;e<r.length;e+=1)i[e]=r.charCodeAt(e);return i}var WM=140,GM=(e,t=WM)=>{let n=String(e??``).replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n},KM=e=>{let t=String(e).replace(/([a-z])([A-Z])/g,`$1 $2`).split(/[._\s-]+/).filter(Boolean).join(` `).toLowerCase();return t?t[0].toUpperCase()+t.slice(1):`Editor action`},qM=e=>new Map((e?.actionIndex??[]).filter(e=>e?.id&&e.label).map(e=>[e.id,e.label]));function JM(e,t){let n=[...String(e??``).matchAll(/tools\.(\w+)\(\s*\{?\s*(?:action\s*:\s*["'`]([\w.]+)["'`])?/g)].map(([,e,n])=>n?t?.get(n)??KM(n):d[e]??KM(e)),r=[...new Set(n)];return r.length>3?`${r.slice(0,3).join(`, `)}…`:r.join(`, `)}function YM(e,t,n){let r=e===`run_action`&&typeof t?.action==`string`?t.action:null,i=r?t.args:t,a=e===`script`?/^\s*\/\/\s*(.+)/.exec(String(t?.code??``))?.[1]??JM(t?.code,n):i?.spec?.label??i?.caption??i?.label??(r?null:i?.visual&&i.visual!==`none`?i.visual.replace(`_`,` `):null);return{...r?{action:r,actionLabel:n?.get(r)??KM(r)}:{},...a?{subject:GM(a,80)}:{}}}function XM(e,t={}){return e.kind===`compose`||e.kind===`tool`?e.actionLabel?e.actionLabel:e.action?KM(e.action):e.name===`script`?F(`Script`,`스크립트`):Object.hasOwn(t,e.name)?t[e.name]:e.label||KM(e.name||`tool`):``}function ZM(e,t){let n=[],r=e?.checks?.framing?.derivedSize;return r&&n.push(r),e?.geometry?.axisConsistent===!1&&n.push(F(`cameras cross the line`,`카메라가 축을 넘음`)),e?.verification?.status&&n.push(e.verification.status===`verified`?F(`motion checked`,`모션 확인`):F(`motion unverified`,`모션 미확인`)),e?.visualStatus===`attached`&&n.push(t?.visual===`contact_sheet`?F(`looked at a contact sheet`,`컨택트 시트 확인`):F(`looked at the frame`,`화면 확인`)),e?.stale&&n.push(F(`stale evidence`,`이전 상태 기준`)),n.join(` · `)}function QM(e){if(e.kind!==`tool`)return``;if(e.status===`failed`)return GM(String(e.error??e.failure?.message??F(`Failed`,`실패`)).replace(/^Error:\s*/,``));if(e.status===`cancelled`)return e.result?.status===`not_applied`?F(`not applied`,`적용 안 됨`):F(`result unknown`,`결과 불명`);let t=e.result;if(!t||typeof t!=`object`)return``;if(e.name===`script`){let e=Array.isArray(t.calls)?t.calls:[],n=e.filter(e=>e?.ok===!1),r=F(`${e.length} call${e.length===1?``:`s`}`,`호출 ${e.length}회`);return t.ok===!1?GM(`${r} · ${t.error?.message??F(`failed`,`실패`)}${t.rollback?F(` · its edits were rolled back`,` · 편집 되돌림`):``}`):GM(n.length?`${r} · ${F(`${n.length} refused`,`${n.length}회 거부`)}: ${n[0].code??n[0].message??``}`:r)}return e.name===`verify_result`?GM(ZM(t,e.args)):typeof t.summary==`string`&&t.summary?GM(t.summary.replace(/\.$/,``)):t.status===`started`?F(`started`,`시작됨`):``}function $M(e){let t=e.progress;if(!t)return``;let n=t.label??(t.action?KM(t.action):KM(t.name??`call`));return F(`${n} (call ${t.index})`,`${n} (${t.index}번째 호출)`)}function eN(e){let t=String(e??``).split(/\n+/).map(e=>e.replace(/^[#*\s-]+|\*+$/g,``).trim()).filter(Boolean),n=t.at(-1)??``;return GM(n.length<24&&t.length>1?t.at(-2):n)}function tN(e,t,n,r){let i=e.at(-1);return i?.kind===`thinking`?[...e.slice(0,-1),{...i,text:i.text+t,updatedAt:n}]:[...e,{kind:`thinking`,id:r(),text:t,startedAt:n,updatedAt:n}]}var nN=(e,t)=>e.at(-1)?.kind===`thinking`&&!e.at(-1).endedAt?[...e.slice(0,-1),{...e.at(-1),endedAt:t}]:e;function rN(e,t,n,r,i){let a=nN(e,n),o=Number.isInteger(t.index)?t.index:0,s=a.findLastIndex(e=>e.kind===`compose`&&e.index===o),c={name:t.name,...t.action?{action:t.action,actionLabel:i?.get(t.action)??KM(t.action)}:{},...t.subject?{subject:GM(t.subject,80)}:{}};return s!==-1&&a[s].name===t.name?a.map((e,t)=>t===s?{...e,...c}:e):[...a,{kind:`compose`,id:r(),index:o,startedAt:n,...c}]}function iN(e,t){let n=nN(e,t.startedAt),r=n.findIndex(e=>e.kind===`compose`&&e.name===t.name);return r===-1?[...n,t]:n.map((e,n)=>n===r?{...t,subject:t.subject??e.subject}:e)}var aN=(e,t,n)=>[...e.filter(e=>e.kind!==`compose`).map(e=>e.kind===`tool`&&e.status===`running`?{...e,status:`cancelled`}:e),{kind:`turn-end`,id:n(),...t}],oN=new Set([`tool`,`thinking`,`compose`]);function sN(e,{streaming:t=!1}={}){let n=[];for(let t of e)(t.kind===`user`&&!t.steered||!n.length)&&n.push([]),n.at(-1).push(t);let r=[];return n.forEach((e,i)=>{let a=e.findLastIndex(e=>oN.has(e.kind)),o=e.find(e=>e.kind===`turn-end`)??null,s=i===n.length-1,c=null;e.forEach((e,n)=>{if(e.kind!==`turn-end`){if(!(oN.has(e.kind)||e.kind===`assistant`&&n<a&&c)){r.push({type:`item`,item:e});return}c||(c={type:`steps`,id:`steps:${e.id}`,steps:[],end:o,live:s&&t,last:s},r.push(c)),c.steps.push(e.kind===`assistant`?{...e,kind:`narration`}:e)}})}),r}function cN(e,t,n){let r=e.steps.filter(e=>e.kind===`tool`).length,i=r?` · ${F(`${r} step${r===1?``:`s`}`,`${r}단계`)}`:``;if(e.live){let r=e.steps[0]?.startedAt;return{tone:`busy`,text:`${F(`Working`,`작업 중`)}${i}${Number.isFinite(r)?` · ${n(t-r)}`:``}`}}let a=e.end,o=a&&Number.isFinite(a.durationMs)?` · ${n(a.durationMs)}`:``;return a?.status===`stopped`?{tone:`warn`,text:`${F(`Stopped`,`중지됨`)}${i}${o}`}:a?.status===`failed`?{tone:`alert`,text:`${F(`Failed`,`실패`)}${i}${o}`}:{tone:`ok`,text:`${F(`Done`,`완료`)}${i}${o}`}}function lN(e,t){let n=new Map([...t?.entityIndex??[],...t?.shots??[]].filter(e=>e?.id&&e.name).map(e=>[e.id,e.name])),r=[...new Set(e.map(e=>n.get(e)).filter(Boolean))],i=e.filter(e=>!n.has(e)).length;if(!r.length&&!i)return F(`Changed the scene`,`장면을 바꿈`);let a=r.slice(0,4).join(`, `),o=Math.max(0,r.length-4)+i;return F(`Changed ${a||`the scene`}${o>0?` and ${o} more`:``}`,`${a||`장면`}${o>0?` 외 ${o}개`:``} 변경`)}function uN(e){return e.steps.some(e=>e.result?.authored===!0||(e.result?.calls??[]).some(e=>e?.revision&&e.revision.after!==e.revision.before))?F(`Stopped by you. What already ran stays in the scene; Cmd+Z undoes this turn.`,`직접 중지했어요. 이미 실행된 편집은 장면에 남아 있고, Cmd+Z로 이번 턴을 되돌릴 수 있어요.`):e.steps.some(e=>e.kind===`tool`&&e.status===`cancelled`)?F(`Stopped by you while a step was running; its result is unknown.`,`단계 실행 중에 직접 중지했어요. 그 단계의 결과는 알 수 없어요.`):F(`Stopped by you before anything changed in the scene.`,`장면이 바뀌기 전에 직접 중지했어요.`)}var dN=`cozyclay.workflow.agentPanel.width`,fN=1100,pN=`cozyclay.agent.session.studio`,mN=[`signed-out`,`signing-in`,`no-entitlement`,`ready`,`streaming`,`rate-limited`,`error`];function hN(e=globalThis.crypto){let t=e?.randomUUID?.();if(typeof t==`string`)return t;let n=new Uint8Array(16);e.getRandomValues(n),n[6]=n[6]&15|64,n[8]=n[8]&63|128;let r=[...n].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}var gN={queued:`Queued`,generating:`Generating`,preparing:`Preparing`,verifying:`Verifying`,repairing:`Repairing`,committing:`Installing`,reconciling:`Reconciling`,installed:`Installed`,review_required:`Needs review`,failed:`Failed`,cancelled:`Stopped`,stale_target:`Target changed`,stale_environment:`Scene changed`},_N=new Set([`installed`,`failed`,`cancelled`,`stale_target`,`stale_environment`]),vN=e=>_N.has(e),yN=e=>e===`installed`?`ok`:e===`review_required`?`warn`:vN(e)?`alert`:`busy`,bN=e=>Number.isFinite(e)?`${Math.round(e*100)}%`:``;function xN(e,t=null){if(e?.status===`installed`){let{installed:t,verification:n}=e,r=n.status===`verified`?`verified over ${n.evaluatedFrames} frames`:`installed unverified`;return`Installed ${t.durationSeconds}s of motion on ${t.characterId} — ${r}`}return e?.status===`undone`?`Undid ${e.undoneReceiptId}`:e?.status===`noop`?`Nothing to change`:e?.status===`transient`?`Changed the view only`:t?lN(e?.affectedIds??[],t):`Applied to ${e?.affectedIds?.join(`, `)||`the scene`}`}function SN(e){let t=Array.isArray(e?.efforts)?e.efforts:[];if(!t.length)return[];let n=e.defaultEffort&&t.includes(e.defaultEffort)?e.defaultEffort:t[0];return[n,...t.filter(e=>e!==n)]}var CN=[`Block a two-shot conversation in this scene`,`Render this frame as a storyboard panel`,`Suggest a camera move for the current shot`],wN=[F(`Block a two-shot`,`투샷 블로킹`),F(`Frame the selected character`,`선택한 캐릭터 구도 잡기`),F(`Light the set warmer`,`세트 조명 더 따뜻하게`)],TN=`Image generation uses about 3-5x a normal turn`,EN={describe_workflow:`Read canvas`,add_workflow_node:`Add node`,update_workflow_node:`Edit node`,remove_workflow_node:`Remove node`,connect_workflow_nodes:`Connect nodes`,disconnect_workflow_nodes:`Disconnect nodes`,run_workflow:`Run workflow`,set_workflow_node_output:`Set node output`,focus_workflow_node:`Focus node`,add_reference_node:`Add reference image`},DN={inspect_studio:F(`Read the scene`,`장면 읽기`),operate_studio:F(`Selection and view`,`선택과 뷰`),arrange_objects:F(`Arrange objects`,`오브젝트 배치`),arrange_characters:F(`Arrange characters`,`캐릭터 배치`),patch_elements:F(`Edit properties`,`속성 편집`),frame_shot:F(`Frame the shot`,`샷 구도 잡기`),generate_motion:F(`Generate motion`,`모션 생성`),verify_result:F(`Verify the result`,`결과 검증`),undo_edit:F(`Undo an edit`,`편집 되돌리기`),run_action:F(`Run an editor action`,`편집기 동작 실행`)},ON=Object.freeze({workflow:Object.freeze({toolLabels:EN,toolBadge:`Canvas`,suggestions:CN,imageHint:TN,imageEntitlement:!0,steer:!0,history:!0,persistWidth:!0,emptyTitle:`Direct the scene`,emptyHint:e=>`Ask for blocking, a camera move, or a rendered frame from \u201C${e}\u201D.`,composerPlaceholder:`Ask the agent to block, frame or render…`}),studio:Object.freeze({toolLabels:DN,toolBadge:F(`Scene`,`장면`),suggestions:wN,imageHint:null,imageEntitlement:!1,steer:!1,history:!0,persistWidth:!1,emptyTitle:F(`Direct the scene`,`장면을 연출하세요`),emptyHint:e=>F(`Ask for blocking, a camera move, or a motion take in \u201C${e}\u201D.`,`\u201C${e}\u201D\uC5D0\uC11C \uBE14\uB85C\uD0B9, \uCE74\uBA54\uB77C \uC6C0\uC9C1\uC784, \uBAA8\uC158 \uD14C\uC774\uD06C\uB97C \uC694\uCCAD\uD558\uC138\uC694.`),composerPlaceholder:F(`Ask the agent to block, frame or animate…`,`블로킹·구도·모션을 요청하세요…`)})});function kN(e){return Object.hasOwn(ON,e)?ON[e]:ON.workflow}function AN(e){let t=Number(e);return Number.isFinite(t)?Math.min(560,Math.max(300,Math.round(t))):360}function jN(e=globalThis.localStorage){try{let t=e?.getItem(dN);return t==null||t===``?360:AN(t)}catch{return 360}}function MN(e,t=globalThis.localStorage){try{t?.setItem(dN,String(AN(e)))}catch{}}var NN=`cozyclay.agent.model`;function PN(e=globalThis.localStorage){try{let t=e?.getItem(NN);return typeof t==`string`&&t?t:null}catch{return null}}function FN(e,t=globalThis.localStorage){try{typeof e==`string`&&e&&t?.setItem(NN,e)}catch{}}var IN=`cozyclay.agent.supervisor`;function LN(e=globalThis.localStorage){try{return e?.getItem(IN)===`on`}catch{return!1}}function RN(e,t=globalThis.localStorage){try{t?.setItem(IN,e?`on`:`off`)}catch{}}function zN(e,t=PN()){let n=Array.isArray(e)?e:[];return n.some(e=>e?.id===t)?t:n[0]?.id??``}function BN(e,t){if(!e.length)return!0;let n=e.find(e=>e.models?.some(e=>e.key===t));return!n||n.signedIn}function VN(e,t,n){return n&&t.some(e=>e.id===n)&&BN(e,n)?n:zN(t.filter(t=>BN(e,t.id)))}function HN(e,t){let n=e&&typeof e==`object`&&typeof t==`string`?e[t]:null;return n&&[`helper`,`vision`,`advisor`].every(e=>typeof n[e]==`string`&&n[e])?n:null}function UN(e){let t=String(e??``);return t.slice(t.indexOf(`/`)+1)}function WN(e,t=Date.now()){if(!e)return null;let n=typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(n))return null;let r=Math.max(0,n-t),i=Math.round(r/1e3),a=Math.floor(i/3600),o=Math.floor(i%3600/60),s=i%60;return a>0?`${a}h ${String(o).padStart(2,`0`)}m`:o>0?`${o}m ${String(s).padStart(2,`0`)}s`:`${s}s`}var GN={capture_blocking_frame:{verb:`Capture`,target:`blocking frame`},render_from_frame:{verb:`Render`,target:`from frame`},place_image_in_scene:{verb:`Place`,target:`image in scene`}};function KN(e){if(e?.label)return e.label;let t=GN[e?.name];if(t)return`${t.verb} ${t.target}`;let n=String(e?.name||`tool`).split(/[_\-\s]+/).filter(Boolean);if(!n.length)return`Run tool`;let r=n[0][0].toUpperCase()+n[0].slice(1);return n.length>1?`${r} ${n.slice(1).join(` `)}`:r}var qN={STEER_UNSUPPORTED:`This surface cannot steer a running turn.`,NO_ACTIVE_TURN:`That turn already ended — send it as a new message.`},JN=/^(TARGET_NOT_READY|CAPABILITY_MISSING|CONFIRMATION_REQUIRED):/;function YN(e){let t=Array.isArray(e?.issues)?e.issues:[],n=(Array.isArray(e?.fixes)?e.fixes:[]).filter(e=>typeof e?.action==`string`&&e.args&&typeof e.args==`object`),r=new Set(n.map(e=>e.issueIndex)),i=t.filter((e,t)=>(e?.severity===`blocker`||e?.severity===`concern`)&&!r.has(t)),a=e=>`- [${e.severity}] ${e.text}${e.evidence?` (${e.evidence})`:``}`;return n.length?[F(`Supervisor review — apply these fixes exactly, in order, in ONE script call, then verify_result; do not re-derive them:`,`감독 검토 — 아래 수정을 유추 없이 순서대로 script 1회로 실행하고 verify_result로 확인해 주세요:`),...n.map(e=>`- [${e.severity}] ${t[e.issueIndex]?.text??``} -> run_action ${JSON.stringify({action:e.action,args:e.args})}`),...i.length?[F(`Also check:`,`추가 확인:`),...i.map(a)]:[]].join(`
15
+ `):i.length?[F(`Supervisor review — please address:`,`감독 검토 — 다음을 고쳐 주세요:`),...i.map(a)].join(`
16
+ `):null}var XN={auth:`Your session expired. Sign in again to continue.`,entitlement:`This account cannot generate images.`,rate_limit:`You have hit the usage limit for this window.`,upstream:`The model service failed to answer.`,overloaded:`The model service is overloaded right now. Try again in a moment.`},ZN=`Ready`,QN={auth:`session expired`,entitlement:`not on this plan`,rate_limit:`usage limit reached`,rate_limited:`usage limit reached`,overloaded:`service overloaded`,no_output:`no response`};function $N(e){if(!e)return`unknown error`;let t=QN[e.code];if(t)return t;let n=String(e.message??``).trim();return n?n.length>64?`${n.slice(0,63)}…`:n:String(e.code||`unknown error`)}function eP(e){let t=Number.isFinite(e)&&e>0?Math.floor(e/1e3):0;return t<60?`${t} s`:`${Math.floor(t/60)} m ${String(t%60).padStart(2,`0`)} s`}var tP=(e,t,n,r=``)=>({phase:e,kind:`live`,tone:`busy`,text:`${t} · ${eP(n)}`,ticking:!0,...r?{detail:r}:{}});function nP(e,{now:t=Date.now(),toolLabel:n=KN}={}){let r=e?.items??[],i=r.find(e=>e.kind===`image`&&e.apply?.status===`applying`);if(i)return tP(`editor`,`Waiting for the editor…`,t-(i.apply.startedAt??t));if(e?.streaming){let i=t-(e.turnStartedAt??t),a=r.findLast(e=>e.kind===`job`&&!vN(e.state));if(a){let e=bN(a.progress);return tP(`job`,`${gN[a.state]||a.state} motion${e?` ${e}`:``}`,i)}let o=r.findLast(e=>e.kind===`tool`&&e.status===`running`);if(o)return tP(`tool`,`Running ${n(o)}…`,i,o.progress?$M(o):o.subject);let s=r.at(-1);return s?.kind===`compose`?tP(`compose`,`Preparing ${n(s)}…`,i,s.subject):s?.kind===`thinking`?tP(`thinking`,`Thinking…`,i,eN(s.text)):s?.kind===`assistant`?tP(`reply`,`Writing the reply…`,i):s?.kind===`user`?tP(`sending`,i<2e3?`Sending…`:`Waiting for the model…`,i):tP(`thinking`,`Thinking…`,i)}let a=e?.lastTurn;return a&&t-a.endedAt<6e3?a.status===`stopped`?{phase:`stopped`,kind:`terminal`,tone:`warn`,text:`Stopped`,ticking:!0}:a.status===`failed`?{phase:`failed`,kind:`terminal`,tone:`alert`,text:`Failed: ${$N(a.failure)}`,ticking:!0}:{phase:`done`,kind:`terminal`,tone:`ok`,text:`Done · ${eP(a.durationMs)}`,ticking:!0}:{phase:`idle`,kind:`idle`,tone:``,text:ZN,ticking:!1}}function rP(e){let t=[],n=e.split(`
17
+ `),r=n.pop()??``;for(let e of n){let n=e.trim();if(!n.startsWith(`data:`))continue;let r=n.slice(5).trim();if(r)try{t.push(JSON.parse(r))}catch{}}return{events:t,tail:r}}var iP=e=>typeof e==`string`&&/^[a-f0-9]{32}$/.test(e),aP=new Set([`aborted`,`auth`,`rate_limited`,`tool_failed`,`upstream`,`unknown`]),oP=(e,t)=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t)),sP=(e,t)=>{try{return e()}catch{return t}},cP=e=>sP(()=>e?.status===401||e?.code===`auth`?`auth`:e?.status===429||e?.code===`rate_limit`?`rate_limited`:`upstream`,`upstream`),lP=new Set([`auth`,`entitlement`,`rate_limit`,`overloaded`,`upstream`]);async function uP(e){let t=Number.isFinite(e?.status)?e.status:null,n=null;try{let t=await e.clone().json();n=typeof t?.error==`string`?{message:t.error}:t?.error&&typeof t.error==`object`?t.error:null}catch{}let r=typeof n?.message==`string`?n.message.trim():``,i=r?t!==null&&r.startsWith(`${t} `)?r:`${t??`Upstream`} — ${r}`:`The turn was refused with HTTP ${t??`error`}.`;return{code:lP.has(n?.code)?n.code:t===429?`rate_limit`:t===401?`auth`:`upstream`,message:i,...t===null?{}:{status:t},...n?.resetAt?{resetAt:n.resetAt}:{}}}function dP({surface:e,capture:t,now:n,correlationId:r=null}){let i=sP(()=>{let e=new Uint8Array(16);return globalThis.crypto.getRandomValues(e),[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``)},null),a=()=>sP(()=>{let e=n();return Number.isFinite(e)?e:NaN},NaN),o=r??i,s=a(),c=sP(()=>[`studio`,`workflow`].includes(e)?e:/^\/workflow(?:\/|$)/.test(globalThis.location?.pathname||``)?`workflow`:`studio`,`studio`),u=!1,d=!1,f=new Map,p=new Set,m=(e,n)=>{if(i)try{Promise.resolve(t(e,n)).catch(()=>{})}catch{}},h=(e,t)=>{if(!u){if(u=!0,e===`cancelled`)for(let[e,t]of f)p.has(e)||m(`agent:tool_executed`,{turn_id:i,tool_category:t.category,outcome:`cancelled`,duration_bucket:_(a()-t.startedAt)});f.clear(),m(`agent:turn_${e}`,{turn_id:i,duration_bucket:_(a()-s),...e===`succeeded`?{}:{failure_code:t}})}};return m(`agent:turn_requested`,{surface:c,turn_id:i}),{turnId:i,cancel:()=>h(`cancelled`,`aborted`),fail:e=>h(`failed`,aP.has(e)?e:`upstream`),frame(e){try{if(!i||u)return;if(e.type===`execution_tool_started`){if(!oP(e,[`type`,`turn_id`,`telemetry_id`,`tool_category`])||e.turn_id!==o||!iP(e.telemetry_id)||!v.includes(e.tool_category))return;!f.has(e.telemetry_id)&&!p.has(e.telemetry_id)&&f.set(e.telemetry_id,{category:e.tool_category,startedAt:a()});return}let{event:t,props:n}=e;if(n?.turn_id!==o)return;if(t===`agent:tool_executed`){if(!oP(e,[`type`,`event`,`props`,`telemetry_id`])||!iP(e.telemetry_id)||!oP(n,[`turn_id`,`tool_category`,`outcome`,`duration_bucket`])||!v.includes(n.tool_category)||![`succeeded`,`failed`,`cancelled`].includes(n.outcome)||!l.duration_bucket.has(n.duration_bucket)||p.has(e.telemetry_id))return;p.add(e.telemetry_id),f.delete(e.telemetry_id),m(t,{turn_id:i,tool_category:n.tool_category,outcome:n.outcome,duration_bucket:n.duration_bucket});return}if(!oP(e,[`type`,`event`,`props`]))return;if(t===`agent:result_applied`){!d&&oP(n,[`turn_id`])&&(d=!0,m(t,{turn_id:i}));return}if(![`agent:turn_succeeded`,`agent:turn_failed`,`agent:turn_cancelled`].includes(t))return;let r=t.slice(11),s=Object.hasOwn(n,`failure_code`);if(!oP(n,[`turn_id`,`duration_bucket`,...s?[`failure_code`]:[]])||!l.duration_bucket.has(n.duration_bucket)||s&&(r===`succeeded`||!aP.has(n.failure_code)))return;h(r,r===`cancelled`?`aborted`:n.failure_code||`unknown`)}catch{}}}}var fP=3;function pP(e){let t=/"message"\s*:\s*"([^"]{1,160})"/.exec(String(e||``))?.[1],n=/\b(401|403)\b/.exec(String(e||``))?.[1];return`The model provider refused the credentials${n||t?` (${[n,t].filter(Boolean).join(`: `)})`:``}.`}function mP({fetchImpl:e=globalThis.fetch?.bind(globalThis),surface:t,capture:n=S,now:r=()=>performance.now()}={}){let i=new Map,a=(t,n)=>LM(e,t,n);return{mock:!1,async status(){return a(`/oauth/status`)},async signIn(){return a(`/oauth/start`,{method:`POST`,body:`{}`})},async signOut(){return a(`/oauth/logout`,{method:`POST`,body:`{}`})},async models(){let e=await a(`/agent/models`),t=Array.isArray(e?.models)?e.models:[],n=Array.isArray(e?.providers)?e.providers.filter(e=>e?.id&&Array.isArray(e.models)):[],r=e?.roles?.byMain;return r&&typeof r==`object`&&!Array.isArray(r)?{providers:n,models:t,roles:{byMain:r}}:{providers:n,models:t}},async steer(e,t){return a(`/agent/turn/${encodeURIComponent(e)}/steer`,{method:`POST`,body:JSON.stringify(t)})},async providers(){let e=await a(`/agent/providers`);return Array.isArray(e?.providers)?e.providers:[]},async setProviderKey(e,t){return a(`/agent/providers/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({key:t})})},async removeProviderKey(e){return a(`/agent/providers/${encodeURIComponent(e)}`,{method:`DELETE`})},async listSessions(){let e=await a(`/agent/sessions?surface=${encodeURIComponent(t||`studio`)}`);return Array.isArray(e?.sessions)?e.sessions:[]},async loadSession(e){return a(`/agent/sessions/${encodeURIComponent(e)}`)},async stop(e){let t=typeof e==`string`||!e?{sessionId:e}:{surface:`studio`,sessionId:e.sessionId,turnId:e.turnId,...e.jobId?{jobId:e.jobId}:{}};return i.get(t.sessionId)?.cancel(),a(`/agent/stop`,{method:`POST`,body:JSON.stringify(t)})},async acceptJob({jobId:e,sessionId:t,turnId:n}){return a(`/agent/jobs/${encodeURIComponent(e)}/accept`,{method:`POST`,body:JSON.stringify({surface:`studio`,sessionId:t,turnId:n,explicitUnverifiedAcceptance:!0})})},async image(t,n){return zM(t,{fetchImpl:e,signal:n})},async video(e,t){return a(`/agent/video`,{method:`POST`,body:JSON.stringify(e),signal:t})},async videoProviders(){return a(`/agent/video/providers`)},async supervisor(t,n){let r=await e(IM(`/agent/turn/${encodeURIComponent(t)}/supervisor`),{headers:{accept:`application/json`},credentials:`same-origin`,signal:n});if(r?.status!==200)return null;let i=await r.json();return i?.type===`supervisor`&&[`reviewed`,`unavailable`].includes(i.verdict)?i:null},async turn(a,o,s){let{sessionId:c,text:l,attachFrame:u,model:d,effort:f,attachments:p,supervisor:m}=a,h=Array.isArray(p)&&p.length?{attachments:p}:{},g=a.surface===`studio`,_=g?a.turnId:null,v=dP({surface:t,capture:n,now:r,correlationId:_});a.onTurnId?.(g?_:v.turnId),i.set(c,v);let y=()=>{s.reason===`agent-stop`&&v.cancel()};s?.addEventListener(`abort`,y,{once:!0}),s?.aborted&&y();let b=!1,x,S=0,C=!1,w=e=>{if(e?.type===`execution_telemetry`||e?.type===`execution_tool_started`){v.frame(e);return}if(g&&Number.isFinite(e?.eventSeq)){if(e.eventSeq<=S)return;S=e.eventSeq}e?.type===`error`&&(x=cP(e)),e?.type===`done`&&(C=!0),o(e)},T=async e=>{let t=e.body.getReader();b=!0;try{let e=new TextDecoder,n=``;for(;;){let{value:r,done:i}=await t.read();if(i)break;n+=e.decode(r,{stream:!0});let a=rP(n);n=a.tail;for(let e of a.events)w(e)}for(let e of rP(`${n}\n`).events)e?.type!==`execution_telemetry`&&e?.type!==`execution_tool_started`&&w(e)}finally{t.releaseLock()}},E=JSON.stringify(g?{surface:`studio`,sessionId:c,turnId:_,text:l,context:a.context,...d?{model:d}:{},...f?{effort:f}:{},...u===void 0?{}:{attachFrame:!!u},...typeof m==`boolean`?{supervisor:m}:{},...h}:{sessionId:c,text:l,attachFrame:u,model:d,...f?{effort:f}:{},...h,...v.turnId?{turn_id:v.turnId}:{}});try{let t=await e(IM(`/agent/turn`),{method:`POST`,headers:{"content-type":`application/json`,accept:`text/event-stream`},body:E,signal:s});if(!t.ok||!t.body){v.fail(cP(t)),o({type:`error`,...await uP(t)}),o({type:`done`});return}let n=null;try{await T(t)}catch(e){n=e}for(let t=0;g&&_&&!C&&!s?.aborted&&t<fP;t+=1){let t;try{t=await e(IM(`/agent/turn/${encodeURIComponent(_)}/events?after=${S}`),{headers:{accept:`text/event-stream`},signal:s})}catch{break}if(!t?.ok||!t.body)break;n=null;try{await T(t)}catch(e){n=e}}if(n)throw n;x&&v.fail(x)}catch(e){throw!s?.aborted&&(!b||x)&&v.fail(x||cP(e)),e}finally{s?.removeEventListener(`abort`,y),i.get(c)===v&&i.delete(c)}}}}function hP(e=globalThis.location?.search||``){let t=new URLSearchParams(e);if(t.get(`agent`)!==`mock`)return null;let n=t.get(`state`);return{state:mN.includes(n)?n:`ready`,speed:Number(t.get(`speed`))||1}}var gP={signedIn:!0,email:`director@cozyclay.org`,plan:`Plus`,accountId:`acct_mock_126`,expiresAt:null},_P=[{delay:40,event:{type:`text.delta`,text:`Framing a wide two-shot from the current blocking. `}},{delay:120,event:{type:`text.delta`,text:`Capturing the viewport first.`}},{delay:120,event:{type:`tool.start`,callId:`call-1`,name:`capture_blocking_frame`,label:`Capture blocking frame`,args:{shot:`current`}}},{delay:260,event:{type:`tool.done`,callId:`call-1`,ok:!0,elapsedMs:268,result:{width:1280,height:720}}},{delay:90,event:{type:`tool.start`,callId:`call-2`,name:`render_from_frame`,label:`Render from frame`,args:{style:`storyboard`,strength:.6}}},{delay:420,event:{type:`tool.done`,callId:`call-2`,ok:!0,elapsedMs:1412,result:{imageId:`img-1`}}},{delay:80,event:{type:`image`,imageId:`img-1`,dataUrl:`data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22288%22%20viewBox%3D%220%200%20512%20288%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%232a2f52%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%235b3550%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22512%22%20height%3D%22288%22%20fill%3D%22url(%23g)%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%2252%22%20fill%3D%22%23ef759d%22%20opacity%3D%220.85%22%2F%3E%3Crect%20x%3D%22250%22%20y%3D%22112%22%20width%3D%22180%22%20height%3D%22112%22%20rx%3D%2210%22%20fill%3D%22%238994ff%22%20opacity%3D%220.8%22%2F%3E%3Crect%20y%3D%22240%22%20width%3D%22512%22%20height%3D%2248%22%20fill%3D%22%23101116%22%20opacity%3D%220.55%22%2F%3E%3Ctext%20x%3D%2224%22%20y%3D%22272%22%20font-family%3D%22Inter%2Csans-serif%22%20font-size%3D%2218%22%20fill%3D%22%23edf0fb%22%3Emock%20render%20%C2%B7%20wide%20two-shot%3C%2Ftext%3E%3C%2Fsvg%3E`,width:512,height:288,prompt:`wide two-shot, storyboard ink`}},{delay:60,event:{type:`quota`,plan:`Plus`,primary:{usedPercent:46,windowMinutes:300,resetAt:null},credits:{has:!0}}},{delay:40,event:{type:`done`}}],vP={ok:!0,commandId:`cmd-mock-1`,receiptId:`receipt-mock-1`,host:{workspaceId:`tab-mock`,documentEpoch:`doc-mock`,sceneId:`scene-mock`,sceneEpoch:`scene-open-mock`},status:`applied`,authored:!0,revision:{before:41,after:42},affectedIds:[`char-a`],delta:[{id:`char-a`,after:{position:{x:-.8,y:0,z:.4}}}],checks:{coverage:`affected-targets`},undo:{historyEntryId:`history-mock-1`,entries:1,canUndoDirect:!0},warnings:[]},yP=[{delay:40,event:{type:`text.delta`,text:`Reading the scene before I move anyone. `}},{delay:120,event:{type:`tool.start`,callId:`studio-1`,name:`inspect_studio`,label:`inspect studio`,args:{scope:`selection`}}},{delay:220,event:{type:`tool.done`,callId:`studio-1`,ok:!0,elapsedMs:214,result:{entities:2}}},{delay:90,event:{type:`text.delta`,text:`Blocking the two-shot now.`}},{delay:120,event:{type:`tool.start`,callId:`studio-2`,name:`arrange_characters`,label:`arrange characters`,args:{ops:[{op:`update`,characterId:`char-a`,position:{world:{x:-.8,y:0,z:.4}}}]}}},{delay:320,event:{type:`tool.done`,callId:`studio-2`,ok:!0,elapsedMs:332,result:{ok:!0,receiptId:vP.receiptId}}},{delay:60,event:{type:`receipt`,receipt:vP}},{delay:40,event:{type:`done`}}],bP=[[`openai-codex`,`ChatGPT (OpenAI Codex)`],[`anthropic`,`Anthropic`],[`openai`,`OpenAI`],[`google`,`Google Gemini`],[`openrouter`,`OpenRouter`],[`cliproxy`,`CLIProxyAPI`]],xP=`google`,SP={"openai-codex":[{id:`gpt-6-astra`,label:`gpt-6-astra`,efforts:[`none`,`low`,`medium`,`high`,`xhigh`],defaultEffort:`medium`},{id:`gpt-5.1-codex`,label:`gpt-5.1-codex`,efforts:[`low`,`medium`,`high`],defaultEffort:`medium`}],anthropic:[{id:`claude-sonnet-4-5`,label:`Claude Sonnet 4.5`,efforts:[`none`,`low`,`medium`,`high`],defaultEffort:`medium`}],openai:[{id:`gpt-5.1`,label:`GPT-5.1`,efforts:[`none`,`low`,`medium`,`high`,`xhigh`],defaultEffort:`medium`}],google:[{id:`gemini-3-pro`,label:`Gemini 3 Pro`,efforts:[`none`,`low`,`medium`,`high`],defaultEffort:`medium`}],openrouter:[{id:`deepseek-v3`,label:`DeepSeek V3`,efforts:[`none`],defaultEffort:`none`}],cliproxy:[{id:`claude-sonnet-5`,label:`Claude Sonnet 5`,efforts:[`none`,`low`,`medium`,`high`],defaultEffort:`medium`}]},CP={id:`gpt-6-live-preview`,label:`gpt-6 live preview`,efforts:[`none`,`low`,`medium`,`high`],defaultEffort:`high`},wP=8,TP=`cozyclay.mock.agent.status-calls`,EP=`cozyclay.mock.agent.model-calls`,DP=e=>{try{globalThis.localStorage?.setItem(e,String(Number(globalThis.localStorage.getItem(e)||0)+1))}catch{}};function OP(e={state:`ready`}){let t=e?.state||`ready`,n=e?.surface===`studio`,r=e?.speed>0?e.speed:1,i=e=>new Promise(t=>setTimeout(t,Math.max(0,e/r))),a=new Set,o=t===`signed-out`?`out`:t===`signing-in`?`pending`:`in`,s=()=>bP.map(([e,t])=>{let n=e===`openai-codex`?o===`in`?`chatgpt`:null:e===xP?`env`:a.has(e)?`file`:null;return{id:e,label:t,authSource:n,signedIn:!!n}}),c=null,l=0;return{mock:!0,state:t,async status(){DP(TP);let e=s().filter(e=>e.id!==`openai-codex`&&e.signedIn).length;return o===`pending`?{signedIn:!1,pending:!0,email:null,plan:null,accountId:null,expiresAt:null,providersConfigured:a.size}:o===`out`?{signedIn:!1,email:null,plan:null,accountId:null,expiresAt:null,providersConfigured:a.size}:t===`no-entitlement`?{...gP,plan:`Free`,entitlements:{image:!1},providersConfigured:e}:{...gP,entitlements:{image:!0},providersConfigured:e}},async signIn(){return o=`in`,{ok:!0,authorizeUrl:`https://auth.example.invalid/mock`}},async signOut(){return o=`out`,{ok:!0}},async models(){DP(EP);let e=s().map(e=>{let t=SP[e.id]??[],n=e.id===`openai-codex`&&o===`in`?[...t,CP]:t;return{...e,models:n.map(t=>({...t,key:`${e.id}/${t.id}`,input:[`text`,`image`]}))}});return{providers:e,models:e.flatMap(e=>e.models.map(e=>({...e,id:e.key})))}},async providers(){return s()},async setProviderKey(e,t){if(e===`openai-codex`)throw Object.assign(Error(`Use ChatGPT sign-in for OpenAI Codex.`),{status:400});if(typeof t!=`string`||t.trim().length<wP)throw Object.assign(Error(`That key was refused: it is too short.`),{status:400});return a.add(e),{ok:!0}},async removeProviderKey(e){return a.delete(e),{ok:!0}},async stop(){return c=null,{ok:!0}},async steer(e,t){if(n)throw Object.assign(Error(`409 — Steering a Studio turn is not supported.`),{status:409,code:`STEER_UNSUPPORTED`});if(!c||e!==c)throw Object.assign(Error(`409 — This turn already ended.`),{status:409,code:`NO_ACTIVE_TURN`});try{globalThis.localStorage?.setItem(`cozyclay.mock.agent.last-steer`,JSON.stringify({turnId:e,text:t?.text??null,attachments:t?.attachments?.length??0}))}catch{}return{ok:!0,queued:!0}},async acceptJob(){return{ok:!0}},async listSessions(){if(!n)return[];let e=[];try{for(let t=0;t<globalThis.localStorage.length;t+=1){let n=globalThis.localStorage.key(t);if(!n?.startsWith(`cozyclay.mock.agent.session.`))continue;let r=JSON.parse(globalThis.localStorage.getItem(n));r?.meta&&e.push(r.meta)}}catch{}return e.sort((e,t)=>Date.parse(t.updatedAt||0)-Date.parse(e.updatedAt||0)).slice(0,50)},async loadSession(e){try{let t=JSON.parse(globalThis.localStorage.getItem(`cozyclay.mock.agent.session.${e}`));if(t?.transcript)return t}catch{}throw Error(`Mock session not found.`)},async applyImage({requestId:e}){return{ok:!0,receiptId:`mock-${e}`}},async turn(e,r,a){let o=`mock-turn-${++l}`;c=o,e?.onTurnId?.(o);try{globalThis.localStorage?.setItem(`cozyclay.mock.agent.last-turn`,JSON.stringify({turnId:o,model:e?.model??null,effort:e?.effort??null,text:e?.text??null}))}catch{}try{n&&e?.sessionId&&globalThis.localStorage?.setItem(`cozyclay.mock.agent.last-turn-session`,e.sessionId)}catch{}let s=[],u=n&&e?.sessionId?`cozyclay.mock.agent.session.${e.sessionId}`:null;if(u){try{s=JSON.parse(globalThis.localStorage.getItem(u))?.transcript||[]}catch{s=[]}s.push({kind:`user`,text:e.text})}let d=t=>{if(u){if(t.type===`text.delta`){let e=s.at(-1);e?.kind===`assistant`?e.text+=t.text:s.push({kind:`assistant`,text:t.text})}else if(t.type===`tool.start`)s.push({kind:`tool`,name:t.name,label:t.label,ok:!0,elapsedMs:null,callId:t.callId});else if(t.type===`tool.done`){let e=[...s].reverse().find(e=>e.kind===`tool`&&e.callId===t.callId);e&&Object.assign(e,{ok:t.ok,elapsedMs:t.elapsedMs})}else t.type===`receipt`&&s.push({kind:`receipt`,receiptId:t.receipt?.receiptId,summary:t.receipt?.status===`applied`?`Applied to the scene`:`Receipt`});try{globalThis.localStorage.setItem(u,JSON.stringify({sessionId:e.sessionId,transcript:s,meta:{sessionId:e.sessionId,surface:`studio`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),sceneName:`Mock scene`,firstText:s.find(e=>e.kind===`user`)?.text||``}}))}catch{}}r(t)};if(t===`rate-limited`){d({type:`text.delta`,text:`Framing a wide two-shot from the current blocking.`}),d({type:`quota`,plan:`Plus`,primary:{usedPercent:100,windowMinutes:300,resetAt:new Date(Date.now()+252e4).toISOString()},credits:{has:!1}}),d({type:`error`,code:`rate_limit`,message:XN.rate_limit,resetAt:new Date(Date.now()+252e4).toISOString()}),d({type:`done`}),c=null;return}if(t===`error`){d({type:`text.delta`,text:n?`Reading the scene first.`:`Capturing the viewport first.`}),d(n?{type:`tool.start`,callId:`call-1`,name:`inspect_studio`,label:`inspect studio`,args:{scope:`selection`}}:{type:`tool.start`,callId:`call-1`,name:`capture_blocking_frame`,label:`Capture blocking frame`,args:{shot:`current`}}),d({type:`tool.done`,callId:`call-1`,ok:!1,elapsedMs:812,error:n?`The scene is not ready`:`Viewport is not ready`}),d({type:`error`,code:`upstream`,message:XN.upstream}),d({type:`done`}),c=null;return}for(let e of n?yP:_P){if(a?.aborted||(await i(e.delay),a?.aborted))break;d(e.event)}c=null,await i(240),a?.aborted&&d({type:`done`})}}}function kP(e={}){let t=e.mockConfig===void 0?hP():e.mockConfig;return t?OP({surface:e.surface,...t}):mP(e)}function AP(e){let t=e?.outcome;return t?.status===`already_applied`?null:t&&t.mutated===!1?{status:`not_applied`,code:t.code??`CANCELLED`,mutated:!1}:{status:`unknown`,code:t?.code??null,mutated:`unknown`}}function jP(e){return new Promise(t=>{let n=r=>{r.detail?.requestId===e.requestId&&(globalThis.removeEventListener(`cozyclay:agent-image-result`,n),t({ok:!!r.detail.ok,error:r.detail.error,receiptId:r.detail.receiptId}))};globalThis.addEventListener?.(`cozyclay:agent-image-result`,n),!(globalThis.dispatchEvent&&!globalThis.dispatchEvent(new CustomEvent(`cozyclay:agent-image`,{cancelable:!0,detail:e})))&&(globalThis.removeEventListener?.(`cozyclay:agent-image-result`,n),t({ok:!1,error:`No editor accepted the image. Open the scene that should receive it.`}))})}function MP({transport:e,surface:t=`workflow`,buildContext:n=null,requestImageAction:i=null,onAuthLost:a=null,onReceipt:s=null,newId:c=hN,clock:l=()=>Date.now()}={}){let u=t===`studio`,d=new Set,f=new Set,p=new Set,m=null,h=null,g=null,_=new Set,v=new Map,y={sessionId:c(),turnId:null,draft:``,pendingAttachments:[],items:[],streaming:!1,quota:null,rateLimit:null,lastPrompt:``,turnStartedAt:null,lastTurn:null},b=e=>{y={...y,...e};for(let e of[...d])e(y)},x=e=>b({items:e(y.items)}),S=(e,t)=>x(n=>n.map(n=>e(n)?{...n,...t}:n)),C=e=>y.items.find(t=>t.kind===`job`&&t.jobId===e);function w(e){if(!e?.jobId||!o.jobStates.includes(e.state))return;let t=typeof e.progress==`number`&&Number.isFinite(e.progress)?Math.min(1,Math.max(0,e.progress)):null;x(n=>{let r=n.find(t=>t.kind===`job`&&t.jobId===e.jobId),i={kind:`job`,id:r?.id??`job:${e.jobId}`,jobId:e.jobId,commandId:e.commandId??r?.commandId??null,state:e.state,phase:typeof e.phase==`string`?e.phase:r?.phase??null,progress:t??r?.progress??null,verification:r?.verification??null,receiptId:r?.receiptId??null,outcome:r?.outcome??null,acceptance:e.state===`review_required`?r?.acceptance??{status:`required`}:r?.acceptance??null};return r?n.map(e=>e===r?i:e):[...n,i]})}function T(e){let t;try{t=r(e)}catch(e){x(t=>[...t,{kind:`failure`,id:c(),failure:{code:e?.code||`INVALID_RECEIPT`,message:e?.message||`The host returned an unreadable receipt.`,preserved:{authoredState:`unknown`},recovery:{action:`inspect`}}}]);return}if(t.ok===!1){let e=`failure:${t.commandId}:${t.code}`;if(f.has(e))return;f.add(e),x(n=>[...n.map(e=>e.kind===`job`&&e.commandId===t.commandId&&!vN(e.state)?{...e,state:`failed`,phase:t.phase,acceptance:null}:e),{kind:`failure`,id:e,failure:t}]);return}if(!f.has(t.receiptId)){f.add(t.receiptId),x(e=>[...e.map(e=>e.kind===`job`&&e.jobId===t.jobId?{...e,state:t.status===`installed`?`installed`:e.state,verification:t.verification??null,receiptId:t.receiptId,acceptance:t.explicitUnverifiedAcceptance?{status:`accepted`}:null}:e),{kind:`receipt`,id:`receipt:${t.receiptId}`,receiptId:t.receiptId,receipt:t,summary:xN(t,u?sP(()=>n?.()??null,null):null)}]);try{s?.(t)}catch{}}}function E(t){if(typeof e.supervisor!=`function`)return;let n=new AbortController;_.add(n),Promise.resolve().then(()=>e.supervisor(t,n.signal)).then(e=>{!e||n.signal.aborted||x(n=>[...n,{...e,kind:`supervisor`,id:`supervisor:${t}`}])}).catch(()=>{}).finally(()=>_.delete(n))}let D=()=>{for(let e of _)e.abort();_.clear()};function O(e){if(h&&[`text.delta`,`tool.start`,`tool.done`,`image`,`job.state`,`job.progress`,`receipt`,`error`].includes(e?.type)&&(h.produced=!0),h&&(e?.type===`tool.done`&&(e.ok?e.result?.authored===!0:JN.test(String(e.error??``)))||e?.type===`receipt`&&e.receipt?.authored===!0)&&(h.reviewable=!0),e?.type===`text.delta`){x(t=>{let n=t[t.length-1];return n?.kind===`assistant`?[...t.slice(0,-1),{...n,text:n.text+e.text}]:[...t,{kind:`assistant`,id:c(),text:e.text}]});return}if(e?.type===`tool.start`){x(t=>iN(t,{kind:`tool`,id:e.callId||c(),callId:e.callId,name:e.name,label:e.label,args:e.args,status:`running`,startedAt:l(),...YM(e.name,e.args,v)}));return}if(e?.type===`thinking.delta`){x(t=>tN(t,String(e.text??``),l(),c));return}if(e?.type===`tool.compose`){x(t=>rN(t,e,l(),c,v));return}if(e?.type===`tool.progress`){S(t=>t.kind===`tool`&&t.callId===e.callId&&t.status===`running`,{progress:{index:e.index,name:e.name,label:v.get(e.action),action:e.action,status:e.status,summary:e.summary}});return}if(e?.type===`tool.done`){S(t=>t.kind===`tool`&&t.callId===e.callId,{status:e.ok?`done`:`failed`,elapsedMs:e.elapsedMs,result:e.result,error:e.error});let t=e.result;if(e.ok&&t&&typeof t==`object`&&t.ok===!0&&typeof t.receiptId==`string`&&Array.isArray(t.affectedIds))try{s?.(t)}catch{}return}if(e?.type===`image`){x(t=>[...t,{kind:`image`,id:e.imageId||c(),imageId:e.imageId,dataUrl:e.dataUrl,width:e.width,height:e.height,prompt:e.prompt,placed:!1,apply:null}]);return}if(e?.type===`job.state`||e?.type===`job.progress`){w(e);return}if(e?.type===`receipt`){T(e.receipt);return}if(e?.type===`quota`){b({quota:{plan:e.plan,usedPercent:e.primary?.usedPercent,windowMinutes:e.primary?.windowMinutes,resetAt:e.primary?.resetAt,credits:e.credits}});return}if(e?.type!==`error`)return;let t={code:e.code||`upstream`,message:e.code===`unauthorized`?pP(e.message):e.message||XN[e.code]||`The turn failed.`,...Number.isFinite(e.status)?{status:e.status}:{}};if(h&&(h.failure=t),e.code===`rate_limit`){b({rateLimit:{resetAt:e.resetAt||null,message:e.message||XN.rate_limit}});return}if(e.code===`auth`){a?.();return}x(e=>{let n=e.findLastIndex(e=>e.kind===`user`),r=e.findLastIndex((e,t)=>t>n&&e.kind===`tool`&&e.status===`failed`);return r===-1?[...e,{kind:`failure`,id:c(),failure:{...t,recovery:{action:t.code===`unauthorized`?`fix_key`:`retry`,retryAllowed:!0}}}]:e.map((e,n)=>n===r?{...e,failure:t}:e)})}function k(e,t,n){if(!e||p.has(e))return;p.add(e);let r=!!t?.ok,i={apply:{requestId:e,status:r?`settled`:`failed`,error:r?null:t?.error||`The editor did not apply the image.`,receiptId:t?.receiptId??null}};r&&(i.placed=n===`place`),S(t=>t.kind===`image`&&t.apply?.requestId===e,i)}async function ee(e,t){let n=y.items.find(t=>t.kind===`image`&&t.id===e);if(!n||n.apply?.status===`applying`||(t===`place`?n.placed:!n.placed))return;let r=c();S(t=>t.kind===`image`&&t.id===e,{apply:{requestId:r,status:`applying`,error:null,receiptId:null,startedAt:l()}});let a={action:t,requestId:r,imageId:n.imageId,dataUrl:n.dataUrl,width:n.width,height:n.height,prompt:n.prompt};try{k(r,await(i??jP)(a),t)}catch(e){k(r,{ok:!1,error:String(e?.message||e)},t)}}let A=()=>{D(),f.clear(),p.clear(),b({sessionId:c(),turnId:null,items:[],pendingAttachments:[],rateLimit:null,lastPrompt:``,turnStartedAt:null,lastTurn:null})};return{getState:()=>y,subscribe(e){return d.add(e),()=>d.delete(e)},setDraft:e=>b({draft:String(e??``)}),addAttachments(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e?.dataUrl==`string`&&e.dataUrl.startsWith(`data:image/`)).map(e=>({id:c(),dataUrl:e.dataUrl,...e.name?{name:String(e.name).slice(0,120)}:{}})),{attachments:n,rejected:r}=sM(y.pendingAttachments,t,4),i=n.length-y.pendingAttachments.length;return b({pendingAttachments:n}),{added:i,rejected:r}},removeAttachment:e=>b({pendingAttachments:y.pendingAttachments.filter(t=>t.id!==e)}),clearAttachments:()=>b({pendingAttachments:[]}),async send(t,r={}){let i=String(t??``).trim();if(!i||y.streaming)return;let a=c(),o=u?n?.()??null:null;if(v=qM(o),u&&!o){O({type:`error`,code:`upstream`,message:`The editor is not ready to describe the scene yet.`});return}let s=l(),d={produced:!1,failure:null,reviewable:!1};h=d;let f=(Array.isArray(r.attachments)?r.attachments:y.pendingAttachments).slice(0,4).map(({dataUrl:e,name:t})=>({dataUrl:e,...t?{name:t}:{}}));b({lastPrompt:i,rateLimit:null,turnId:a,streaming:!0,draft:``,pendingAttachments:[],turnStartedAt:s,lastTurn:null,items:[...y.items,{kind:`user`,id:c(),text:i,attachFrame:!!r.attachFrame,attachments:f}]}),m=new AbortController;let p=m.signal;try{await e.turn({onTurnId:e=>{g=e},...u?{surface:`studio`,turnId:a,context:o}:{},sessionId:y.sessionId,text:i,...f.length?{attachments:f}:{},attachFrame:!!r.attachFrame,model:r.model,effort:r.effort??void 0,...typeof r.supervisor==`boolean`?{supervisor:r.supervisor}:{}},O,p)}catch(e){p.aborted||O({type:`error`,code:`upstream`,message:String(e?.message||e)})}finally{if(m?.signal===p&&(m=null),h===d){g=null,!d.produced&&!d.failure&&!p.aborted&&(d.failure={code:`no_output`,message:`The turn ended without a response.`,recovery:{action:`retry`,retryAllowed:!0}},x(e=>[...e,{kind:`failure`,id:c(),failure:d.failure}]));let e=l();h=null;let t={status:p.aborted?`stopped`:d.failure?`failed`:`done`,endedAt:e,durationMs:e-s,failure:d.failure};b({streaming:!1,turnStartedAt:null,lastTurn:t,items:aN(y.items,t,c)}),u&&d.reviewable&&r.supervisor===!0&&!p.aborted&&E(a)}}},async steer(t,n={}){let r=String(t??``).trim();if(!r)return{ok:!1,code:`EMPTY`,message:``};if(!y.streaming||!g||typeof e.steer!=`function`)return{ok:!1,code:`NO_ACTIVE_TURN`,message:qN.NO_ACTIVE_TURN};let i=(Array.isArray(n.attachments)?n.attachments:y.pendingAttachments).slice(0,4).map(({dataUrl:e,name:t})=>({dataUrl:e,...t?{name:t}:{}}));try{await e.steer(g,{text:r,...i.length?{attachments:i}:{}})}catch(e){let t=typeof e?.code==`string`?e.code:`upstream`;return{ok:!1,code:t,message:qN[t]||String(e?.message||e)}}return b({draft:``,pendingAttachments:[],items:[...y.items,{kind:`user`,id:c(),text:r,steered:!0,attachments:i}]}),{ok:!0,code:null,message:``}},stop(){let t=[...y.items].reverse().find(e=>e.kind===`job`&&!vN(e.state));m?.abort(`agent-stop`),m=null;let n=u?{sessionId:y.sessionId,turnId:y.turnId,...t?{jobId:t.jobId}:{}}:y.sessionId;if(Promise.resolve(e.stop?.(n)).then(e=>{if(!t)return;let n=AP(e);n&&(S(e=>e.kind===`job`&&e.jobId===t.jobId&&!vN(e.state),{state:n.status===`not_applied`?`cancelled`:`reconciling`,phase:null,outcome:n,acceptance:null}),S(e=>e.kind===`tool`&&e.status===`running`,{status:`cancelled`,result:n,elapsedMs:null}))}).catch(()=>{}),!y.streaming){b({streaming:!1});return}let r=l();b({streaming:!1,turnStartedAt:null,lastTurn:{status:`stopped`,endedAt:r,durationMs:r-(y.turnStartedAt??r),failure:null}})},async acceptJob(t){let n=C(t);if(!(!n||n.acceptance?.status!==`required`)){S(e=>e.kind===`job`&&e.jobId===t,{acceptance:{status:`accepting`}});try{let n=await e.acceptJob?.({jobId:t,sessionId:y.sessionId,turnId:y.turnId});n?.receipt?T(n.receipt):S(e=>e.kind===`job`&&e.jobId===t,{acceptance:{status:`required`,error:`The host did not acknowledge the acceptance.`}})}catch(e){S(e=>e.kind===`job`&&e.jobId===t,{acceptance:{status:`required`,error:String(e?.message||e)}})}}},applyImage:e=>ee(e,`place`),undoImage:e=>ee(e,`remove`),acknowledgeImageAction:({requestId:e,ok:t,error:n,receiptId:r})=>{let i=y.items.find(t=>t.kind===`image`&&t.apply?.requestId===e);k(e,{ok:t,error:n,receiptId:r},i?.placed?`remove`:`place`)},clearRateLimit:()=>b({rateLimit:null}),clearContext:A,newSession:A,restore:(e,t=y.sessionId)=>{D(),f.clear(),p.clear();let n=new Set,r=(Array.isArray(e)?e:[]).flatMap(e=>{if(e?.kind===`user`||e?.kind===`assistant`){let t=Array.isArray(e.attachments)?e.attachments.filter(e=>typeof e?.dataUrl==`string`):[];return[{kind:e.kind,id:c(),text:String(e.text??``),...t.length?{attachments:t}:{}}]}return e?.kind===`tool`?[{kind:`tool`,id:c(),callId:c(),name:e.name||`tool`,label:e.label,ok:e.ok,elapsedMs:e.elapsedMs,status:e.ok===!1?`failed`:`done`}]:e?.kind===`receipt`?e.receiptId&&n.has(e.receiptId)?[]:(e.receiptId&&(n.add(e.receiptId),f.add(e.receiptId)),[{kind:`receipt`,id:`receipt:${e.receiptId||c()}`,receiptId:e.receiptId,summary:e.summary||`Receipt`,receipt:{status:`applied`,warnings:[],verification:{status:`verified`}}}]):e?.kind===`failure`?[{kind:`failure`,id:c(),failure:{code:e.code||`upstream`,message:String(e.message||`The turn failed.`),recovery:{action:`retry`,retryAllowed:!0}}}]:[]}),i=[...r].reverse().find(e=>e.kind===`user`)?.text||``;return b({sessionId:t,turnId:null,items:r,rateLimit:null,lastPrompt:i,turnStartedAt:null,lastTurn:null,streaming:!1}),r}}}var NP=(0,Q.createContext)(null);function PP(){return(0,Q.useContext)(NP)}function FP(e){return!!(e?.isComposing||e?.nativeEvent?.isComposing||e?.keyCode===229||e?.which===229)}var IP=(e,t,n={})=>({type:e,title:t,...n}),LP={version:1,categories:{text:{models:{"text-passthrough":{name:`Input Text`,input_schema:{schemas:{input_data:{properties:{prompt:IP(`string`,`Prompt`)}}}}},"text-generation":{name:`Text Generation`,input_schema:{schemas:{input_data:{properties:{prompt:IP(`string`,`Prompt`),temperature:IP(`number`,`Temperature`,{default:.7,minimum:0,maximum:2,step:.1})}}}}}}},image:{models:{"image-passthrough":{name:`Input Image`,input_schema:{schemas:{input_data:{properties:{image_url:IP(`string`,`Image URL`,{format:`uri`})}}}}},"image-generation":{name:`Image Generation`,input_schema:{schemas:{input_data:{properties:{prompt:IP(`string`,`Prompt`),image_url:IP(`string`,`Reference image`,{format:`uri`}),aspect_ratio:IP(`string`,`Aspect ratio`,{enum:[`auto`,`1:1`,`16:9`,`9:16`]})}}}}}}},video:{models:{"video-passthrough":{name:`Input Video`,input_schema:{schemas:{input_data:{properties:{video_url:IP(`string`,`Video URL`,{format:`uri`})}}}}},"video-generation":{name:`Video Generation`,input_schema:{schemas:{input_data:{properties:{provider:IP(`string`,`Provider`,{enum:[`comfy`,`fal`],default:`comfy`}),prompt:IP(`string`,`Motion prompt`),duration_seconds:IP(`number`,`Duration`,{default:5,minimum:1,maximum:15,step:1}),aspect:IP(`string`,`Aspect ratio`,{enum:[`16:9`,`9:16`,`1:1`,`21:9`,`12:7`],default:`16:9`})}}}}}}},audio:{models:{"audio-passthrough":{name:`Input Audio`,input_schema:{schemas:{input_data:{properties:{audio_url:IP(`string`,`Audio URL`,{format:`uri`})}}}}},"audio-generation":{name:`Audio Generation`,input_schema:{schemas:{input_data:{properties:{prompt:IP(`string`,`Prompt`),duration:IP(`integer`,`Duration`,{default:10,minimum:1,maximum:60})}}}}}}},api:{models:{"api-model":{name:`API Model`,input_schema:{properties:{input:IP(`string`,`Input`),params:IP(`object`,`Parameters`,{default:{}})}}}}},utility:{models:{"prompt-concatenator":{name:`Prompt Concat`,input_schema:{schemas:{input_data:{properties:{template:IP(`string`,`Template`,{default:`{prompt} {style}`})}}}}},"video-combiner":{name:`Video Combiner`,input_schema:{schemas:{input_data:{properties:{videos_list:IP(`array`,`Video URLs`,{items:{type:`string`}}),aspect_ratio:IP(`string`,`Aspect ratio`,{enum:[`auto`,`16:9`,`9:16`,`1:1`]})}}}}}}}}};function RP(e,t){let n=e?.categories?.[t]?.models||{};return Object.entries(n).map(([e,t])=>({...t,id:e,name:t.name||e.replace(/-/g,` `)}))}function zP(e,t,n){let r=e?.categories?.[t]?.models?.[n]?.input_schema||{};return r?.schemas?.input_data||r}function BP(e,t,n){return zP(e,t,n)?.properties||{}}function VP(e={}){return Object.fromEntries(Object.entries(e).map(([e,t])=>t.default===void 0?t.enum?.length?[e,t.enum[0]]:t.type===`array`?[e,[]]:t.type===`object`?[e,{}]:t.type===`boolean`?[e,!1]:[e,``]:[e,t.default]))}function HP(e){return[`concat`,`video-combiner`,`shot-prompt`].includes(e)?`utility`:e}function UP(e){return(e?.problems??(Array.isArray(e?.groups)?e.groups.length:0))||(e?.ok?0:e?.total??0)}function WP(e){let t=UP(e);return e?.ok||!t?F(`QA clean`,`QA 통과`):F(`${t} problem${t===1?``:`s`}`,`문제 ${t}개`)}function GP(e){if(e?.ok)return`clean`;let t=UP(e),n=e?.total??0;return`${t} problem${t===1?``:`s`} (${n} frame issue${n===1?``:`s`})`}var KP=12,qP=new Map,JP=[],YP=new Set,XP=0,ZP=0;function QP(){XP++;for(let e of[...YP])try{e()}catch{}}var $P=(e,t)=>Object.fromEntries(t.filter(t=>e?.[t]!==void 0).map(t=>[t,e[t]]));function eF(e,{take:t,installed:n=!1,specId:r=null,label:i=null,qa:a=null,timeline:o=[]}){let s=qP.get(e)??[],c=Object.freeze({n:(s.at(-1)?.n??0)+1,at:Date.now(),seq:++ZP,characterId:e,take:t,frames:t?.frameCount??0,installed:!!n,specId:r,label:i,qa:{ok:!!a?.ok,total:a?.total??0,problems:UP(a),groups:(a?.groups??[]).map(e=>$P(e,[`kind`,`subject`,`count`,`first`,`last`,`worst`])),goals:(a?.goals??[]).map(e=>$P(e,[`name`,`kind`,`ok`,`value`,`need`,`at`]))},timeline:o??[]});return qP.set(e,[...s,c].slice(-12)),QP(),c}var tF=e=>qP.get(e)??[];function nF(e){if(e!==void 0)return tF(e).at(-1)??null;let t=null;for(let e of qP.values())e.length&&(!t||e.at(-1).seq>t.seq)&&(t=e.at(-1));return t}function rF({characterId:e=null,dataUrl:t,width:n=0,height:r=0,caption:i=``,frames:a=[]}){let o=Object.freeze({at:Date.now(),seq:++ZP,characterId:e,dataUrl:t,width:n,height:r,caption:i,frames:a});return JP.push(o),JP.splice(0,Math.max(0,JP.length-KP)),QP(),o}var iF=()=>[...JP];function aF(){qP.clear(),JP.length=0,QP()}function oF(e){return YP.add(e),()=>{YP.delete(e)}}var sF=()=>XP,cF=`#2fc79a`,lF=.42,uF=1200,dF=Object.freeze({shown:!1,opacity:0,frame:0});function fF(e,t){let n=e?.take;if(n?.schema!==`cozyclay.take.v3`||!(n.frameCount>0))return dF;let r=Math.max(0,t-(e.at??t)),i=n.fps>0?n.fps:24,a=e.installed?lF*(1-r/uF):lF;return a>.01?{shown:!0,opacity:+a.toFixed(3),frame:Math.floor(r/1e3*i)%n.frameCount}:dF}var pF=e=>`${F(`Draft`,`초안`)} ${e?.n??0} · ${WP(e?.qa)}`,mF=!0,hF=new Set,gF=()=>mF;function _F(e){let t=!!e;if(t===mF)return mF;mF=t;for(let e of[...hF])e();return mF}var vF=e=>(hF.add(e),()=>hF.delete(e)),yF=()=>(0,Q.useSyncExternalStore)(vF,gF,gF),bF=new Set([...new Set([`motion:generate_requested`,`motion:preflight_blocked`,`motion:preflight_passed`,`motion:job_started`,`motion:job_succeeded`,`motion:job_failed`,`motion:result_applied`]),...p.filter(e=>e.startsWith(`mcp:`))]),xF=`5184`,SF=((e=xF)=>`ws://127.0.0.1:${e}/live`)(),CF=1e3,wF=15e3,TF=.25,EF=2e4,DF=1e4,OF=2e3,kF=`cozyclay:live-workspace-id`,AF=1008,jF=``;function MF(e){try{return e??globalThis.sessionStorage??null}catch{return null}}function NF(){return globalThis.crypto?.randomUUID?.()??`live-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function PF(e,t){jF=e;try{MF(t)?.setItem(kF,e)}catch{}return e}function FF(e){try{let t=MF(e)?.getItem(kF);if(typeof t==`string`&&t)return jF=t,t}catch{}return jF||PF(NF(),e)}function IF(e){return PF(NF(),e)}function LF(e,{target:t=globalThis,doc:n=globalThis.document}={}){if(typeof t?.addEventListener!=`function`)return()=>{};let r=()=>{n?.visibilityState===`visible`&&e()},i=[`online`,`focus`,`pageshow`];for(let n of i)t.addEventListener(n,e);return n?.addEventListener?.(`visibilitychange`,r),()=>{for(let n of i)t.removeEventListener(n,e);n?.removeEventListener?.(`visibilitychange`,r)}}var RF={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),now:()=>globalThis.performance?.now?.()??Date.now()};function zF(e){return e?.code===AF&&typeof e.reason==`string`&&e.reason.includes(`Workspace id is already connected`)}function BF(e){return e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:`Command failed`}function VF(e,t,n){return t?{type:`result`,id:e,ok:!0,value:n??{}}:{type:`result`,id:e,ok:!1,error:n}}async function HF(e,t={}){if(typeof e!=`string`)return null;let n;try{n=JSON.parse(e)}catch{return null}if(!n||typeof n!=`object`||Array.isArray(n)||n.type!==`cmd`||typeof n.id!=`string`)return null;if(typeof n.name!=`string`||!n.name)return VF(n.id,!1,`Invalid command name`);if(!n.args||typeof n.args!=`object`||Array.isArray(n.args))return VF(n.id,!1,`Invalid command arguments`);let r=t[n.name];if(typeof r!=`function`)return VF(n.id,!1,`Unknown command: ${n.name}`);try{return VF(n.id,!0,await r(n.args))}catch(e){return VF(n.id,!1,BF(e))}}function UF({handlers:e={},onWorkspace:t=()=>{},onEvent:n=()=>{},onDuplicate:r=()=>IF(),captureMotionTelemetry:i=S,captureTelemetry:a=S,workspaceId:o=``,meta:s=null,WebSocketImpl:c=globalThis.WebSocket,url:l=SF,timers:u=RF,random:d=Math.random,listen:m=LF}={}){let h=e,_=o,v=null,y=null,b=0,x=!1,C=null,w=0,T=0,E=!1,D=null,O=new Set,k=e=>{if(!bF.has(e.event))return;let t=f(e.event,e.props),n=t.request_id;if(!n||p.includes(e.event)&&g[e.event]?.some(e=>!Object.hasOwn(t,e))||(e.event===`motion:generate_requested`||e.event.startsWith(`motion:preflight_`))&&t.surface!==`mcp`)return;let r=`${n}:${e.event}`;if(O.has(r))return;O.add(r);let o=e.event.startsWith(`motion:`)?i:a;try{Promise.resolve(o(e.event,t)).catch(()=>{})}catch{}},ee=()=>{y!==null&&u.clearTimeout(y),y=null},A=()=>{let e=Math.min(CF*2**b,wF);return b+=1,Math.round(e*(1+(d()*2-1)*TF))},te=()=>{x||y!==null||v||(y=u.setTimeout(()=>{y=null,se()},A()))},j=()=>{x||v||(ee(),se())},M=()=>{C!==null&&u.clearTimeout(C),C=null,E=!1,D=null},ne=e=>{C!==null&&u.clearTimeout(C),w=u.now(),T=e,C=u.setTimeout(ie,e)},re=e=>{M(),!(typeof e!=`number`||!(e>0))&&(E=!0,ne(EF))};function ie(){if(C=null,x||!E||!v)return;let e=u.now();if(e-w>T+OF){D=null,ne(EF);return}if(D===null){oe({type:`ping`}),D=e,ne(DF);return}let t=e-D;if(t>=1e4){ae();return}ne(DF-t)}let ae=()=>{let e=v;v=null,M();try{e?.close()}catch{}te()},oe=e=>{if(!(!v||v.readyState!==(v.OPEN??1)))try{v.send(JSON.stringify(e))}catch{}},se=()=>{if(x||!c)return;ee(),M();try{v=new c(l)}catch{v=null,te();return}let e=v;e.onopen=()=>{v!==e||x||oe({type:`hello`,role:`editor`,version:1,..._?{workspaceId:_}:{},...s?{meta:s}:{}})},e.onmessage=async r=>{if(v!==e||x)return;if(typeof r?.data==`string`)try{let e=JSON.parse(r.data);if(e?.type===`workspace`&&typeof e.handle==`string`){b=0,re(e.heartbeatMs),t(e.handle);return}if(e?.type===`pong`){E&&(D=null,ne(EF));return}if(e?.type===`event`&&typeof e.name==`string`&&e.payload&&typeof e.payload==`object`){if(e.name===`motion_telemetry`||e.name===`telemetry`){k(e.payload);return}n(e.name,e.payload);return}}catch{}let i=await HF(r?.data,h);i&&oe(i)},e.onerror=()=>{},e.onclose=t=>{if(v===e&&(v=null,M()),zF(t)){b=0;try{let e=r();typeof e==`string`&&e&&(_=e)}catch{}}te()}},ce=m(j)??(()=>{});return se(),{setHandlers(e){h=e&&typeof e==`object`?e:{}},close(){x=!0,ee(),M();try{ce()}catch{}let e=v;v=null;try{e?.close()}catch{}}}}var WF={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},GF=Q.createContext&&Q.createContext(WF),KF=[`attr`,`size`,`title`];function qF(e,t){if(e==null)return{};var n,r,i=JF(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function JF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function YF(){return YF=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},YF.apply(null,arguments)}function XF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ZF(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?XF(Object(n),!0).forEach(function(t){QF(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):XF(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function QF(e,t,n){return(t=$F(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $F(e){var t=eI(e,`string`);return typeof t==`symbol`?t:t+``}function eI(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function tI(e){return e&&e.map((e,t)=>Q.createElement(e.tag,ZF({key:t},e.attr),tI(e.child)))}function nI(e){return t=>Q.createElement(rI,YF({attr:ZF({},e.attr)},t),tI(e.child))}function rI(e){var t=t=>{var n=e.attr,r=e.size,i=e.title,a=qF(e,KF),o=r||t.size||`1em`,s;return t.className&&(s=t.className),e.className&&(s=(s?s+` `:``)+e.className),Q.createElement(`svg`,YF({stroke:`currentColor`,fill:`currentColor`,strokeWidth:`0`},t.attr,n,a,{className:s,style:ZF(ZF({color:e.color||t.color},t.style),e.style),height:o,width:o,xmlns:`http://www.w3.org/2000/svg`}),i&&Q.createElement(`title`,null,i),e.children)};return GF===void 0?t(WF):Q.createElement(GF.Consumer,null,e=>t(e))}function iI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`line`,attr:{x1:`18`,y1:`6`,x2:`6`,y2:`18`},child:[]},{tag:`line`,attr:{x1:`6`,y1:`6`,x2:`18`,y2:`18`},child:[]}]})(e)}function aI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polygon`,attr:{points:`23 7 16 12 23 17 23 7`},child:[]},{tag:`rect`,attr:{x:`1`,y:`5`,width:`15`,height:`14`,rx:`2`,ry:`2`},child:[]}]})(e)}function oI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`},child:[]},{tag:`polyline`,attr:{points:`17 8 12 3 7 8`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`3`,x2:`12`,y2:`15`},child:[]}]})(e)}function sI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`4 7 4 4 20 4 20 7`},child:[]},{tag:`line`,attr:{x1:`9`,y1:`20`,x2:`15`,y2:`20`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`4`,x2:`12`,y2:`20`},child:[]}]})(e)}function cI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`rect`,attr:{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`},child:[]}]})(e)}function lI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`23 4 23 10 17 10`},child:[]},{tag:`path`,attr:{d:`M20.49 15a9 9 0 1 1-2.12-9.36L23 10`},child:[]}]})(e)}function uI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`line`,attr:{x1:`12`,y1:`5`,x2:`12`,y2:`19`},child:[]},{tag:`line`,attr:{x1:`5`,y1:`12`,x2:`19`,y2:`12`},child:[]}]})(e)}function dI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polygon`,attr:{points:`5 3 19 12 5 21 5 3`},child:[]}]})(e)}function fI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48`},child:[]}]})(e)}function pI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M9 18V5l12-2v13`},child:[]},{tag:`circle`,attr:{cx:`6`,cy:`18`,r:`3`},child:[]},{tag:`circle`,attr:{cx:`18`,cy:`16`,r:`3`},child:[]}]})(e)}function mI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`circle`,attr:{cx:`12`,cy:`12`,r:`1`},child:[]},{tag:`circle`,attr:{cx:`19`,cy:`12`,r:`1`},child:[]},{tag:`circle`,attr:{cx:`5`,cy:`12`,r:`1`},child:[]}]})(e)}function hI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`},child:[]},{tag:`path`,attr:{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`},child:[]}]})(e)}function gI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`rect`,attr:{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`},child:[]},{tag:`circle`,attr:{cx:`8.5`,cy:`8.5`,r:`1.5`},child:[]},{tag:`polyline`,attr:{points:`21 15 16 10 5 21`},child:[]}]})(e)}function _I(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`rect`,attr:{x:`2`,y:`2`,width:`20`,height:`20`,rx:`2.18`,ry:`2.18`},child:[]},{tag:`line`,attr:{x1:`7`,y1:`2`,x2:`7`,y2:`22`},child:[]},{tag:`line`,attr:{x1:`17`,y1:`2`,x2:`17`,y2:`22`},child:[]},{tag:`line`,attr:{x1:`2`,y1:`12`,x2:`22`,y2:`12`},child:[]},{tag:`line`,attr:{x1:`2`,y1:`7`,x2:`7`,y2:`7`},child:[]},{tag:`line`,attr:{x1:`2`,y1:`17`,x2:`7`,y2:`17`},child:[]},{tag:`line`,attr:{x1:`17`,y1:`17`,x2:`22`,y2:`17`},child:[]},{tag:`line`,attr:{x1:`17`,y1:`7`,x2:`22`,y2:`7`},child:[]}]})(e)}function vI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`},child:[]},{tag:`polyline`,attr:{points:`14 2 14 8 20 8`},child:[]},{tag:`line`,attr:{x1:`16`,y1:`13`,x2:`8`,y2:`13`},child:[]},{tag:`line`,attr:{x1:`16`,y1:`17`,x2:`8`,y2:`17`},child:[]},{tag:`polyline`,attr:{points:`10 9 9 9 8 9`},child:[]}]})(e)}function yI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`},child:[]},{tag:`polyline`,attr:{points:`7 10 12 15 17 10`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`15`,x2:`12`,y2:`3`},child:[]}]})(e)}function bI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`rect`,attr:{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`},child:[]},{tag:`path`,attr:{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`},child:[]}]})(e)}function xI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`16 18 22 12 16 6`},child:[]},{tag:`polyline`,attr:{points:`8 6 2 12 8 18`},child:[]}]})(e)}function SI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`circle`,attr:{cx:`12`,cy:`12`,r:`10`},child:[]},{tag:`polyline`,attr:{points:`12 6 12 12 16 14`},child:[]}]})(e)}function CI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`9 18 15 12 9 6`},child:[]}]})(e)}function wI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`20 6 9 17 4 12`},child:[]}]})(e)}function TI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z`},child:[]},{tag:`polyline`,attr:{points:`3.27 6.96 12 12.01 20.73 6.96`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`22.08`,x2:`12`,y2:`12`},child:[]}]})(e)}function EI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`line`,attr:{x1:`12`,y1:`19`,x2:`12`,y2:`5`},child:[]},{tag:`polyline`,attr:{points:`5 12 12 5 19 12`},child:[]}]})(e)}function DI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`path`,attr:{d:`M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`9`,x2:`12`,y2:`13`},child:[]},{tag:`line`,attr:{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`},child:[]}]})(e)}function OI(e){return nI({tag:`svg`,attr:{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},child:[{tag:`polyline`,attr:{points:`22 12 18 12 15 21 9 3 6 12 2 12`},child:[]}]})(e)}var kI=e=>Math.round(e*10)/10,AI=e=>`${(e*100).toFixed(1)} cm`,jI=e=>`${e<0?`−`:`+`}${(Math.abs(e)*100).toFixed(1)} cm`;function MI(e,{width:t=220,height:n=40,pad:r=4}={}){if(!e.length)return{points:[],max:0,first:null,last:null};let i=Math.max(1,...e),a=e.length,o=e=>a===1?t/2:r+e*(t-2*r)/(a-1),s=e=>r+(1-e/i)*(n-2*r);return{points:e.map((e,t)=>[kI(o(t)),kI(s(e))]),max:i,first:e[0],last:e[a-1]}}function NI(e=[]){return e.map(e=>{let t=e.kind===`above`?jI:e.kind===`speed`?e=>`${Math.round(e*100)/100} m/s`:AI,n=Number.isFinite(e.value)?t(e.value):`—`,r=Number.isFinite(e.need)?`${e.kind===`near`||e.kind===`still`?`≤`:`≥`} ${t(e.need)}`:``;return{name:e.name??e.kind??`goal`,ok:!!e.ok,value:n,need:r,at:Number.isFinite(e.at)?`f${e.at}`:``}})}function PI(e=[],t=3){return e.filter(e=>e.kind!==`GOAL`).slice(0,t).map(e=>({kind:e.kind??``,subject:e.subject??``,count:e.count??0,frames:Number.isFinite(e.first)?Number.isFinite(e.last)&&e.last!==e.first?`f${e.first}–${e.last}`:`f${e.first}`:``}))}var FI=e=>e.filter(e=>e.kind===`user`&&!e.steered).length;function II({kind:e,views:t=[],frames:n=[]}={}){let r=n.length?n.length>1?`f${n[0]}–${n[n.length-1]}`:`f${n[0]}`:``;return[e,t.join(`, `),r].filter(Boolean).join(` · `)}var LI=220,RI=40;function zI({totals:e}){let{points:t,first:n,last:r}=MI(e,{width:LI,height:RI});if(!t.length)return null;let[i,a]=t[t.length-1],o=F(`Problems by draft: ${e.join(`, `)}`,`초안별 문제 수: ${e.join(`, `)}`);return(0,$.jsxs)(`div`,{className:`agent-progress-trend`,children:[(0,$.jsxs)(`svg`,{viewBox:`0 0 ${LI} ${RI}`,role:`img`,"aria-label":o,preserveAspectRatio:`none`,children:[(0,$.jsx)(`line`,{className:`base`,x1:4,y1:36,x2:216,y2:36}),t.length>1&&(0,$.jsx)(`polyline`,{className:`line`,points:t.map(e=>e.join(`,`)).join(` `)}),t.slice(0,-1).map(([e,t],n)=>(0,$.jsx)(`circle`,{className:`dot`,cx:e,cy:t,r:1.8},n)),(0,$.jsx)(`circle`,{className:`end ${r===0?`ok`:`issue`}`,cx:i,cy:a,r:3.4})]}),(0,$.jsx)(`span`,{className:`agent-progress-trend-text`,children:e.length>1?`${n} → ${r}`:`${r}`})]})}function BI({sheet:e,onClose:t}){return(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,Pj.createPortal)((0,$.jsxs)(`button`,{type:`button`,className:`agent-progress-viewer`,"aria-label":F(`Close image`,`이미지 닫기`),onClick:t,children:[(0,$.jsx)(`img`,{src:e.dataUrl,alt:e.caption||F(`Image the agent checked`,`에이전트가 확인한 이미지`)}),e.caption&&(0,$.jsx)(`span`,{className:`agent-progress-viewer-caption`,children:e.caption})]}),document.body)}function VI({items:e,since:t=null,live:n=!1}){(0,Q.useSyncExternalStore)(oF,sF);let[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)({}),s=e=>o(t=>({...t,[e]:!t[e]})),c=FI(e),l=(0,Q.useRef)(c);(0,Q.useEffect)(()=>{c>l.current&&aF(),l.current=c},[c]);let u=e=>t!==null&&e.at>=t,d=nF(),f=d&&u(d)?d:null,p=iF().filter(u),m=r&&p.find(e=>e.seq===r);if(!f&&!p.length)return null;let h=f?tF(f.characterId).filter(u):[],g=NI(f?.qa.goals),_=f&&!f.qa.ok?PI(f.qa.groups):[];return(0,$.jsxs)(`div`,{className:`agent-row`,children:[(0,$.jsxs)(`div`,{className:`agent-card agent-progress-card`,"data-agent-card":`progress`,"data-drafts":h.length,"data-installed":f?.installed?`true`:`false`,role:`status`,"aria-live":`polite`,children:[f&&(0,$.jsxs)(`div`,{className:`agent-progress-head`,children:[(0,$.jsx)(`span`,{className:`agent-progress-title`,title:F(`${f.qa.total} frame-level issues`,`프레임 단위 문제 ${f.qa.total}건`),children:pF(f)}),(0,$.jsx)(`span`,{className:`agent-progress-chip ${f.installed?`installed`:`draft`}`,children:f.installed?F(`Installed`,`설치됨`):n?F(`Not installed yet`,`아직 설치 전`):F(`Not installed`,`설치 안 됨`)})]}),f?.label&&(0,$.jsx)(`p`,{className:`agent-progress-label`,children:f.label}),h.length>0&&(0,$.jsxs)(`section`,{className:`agent-progress-section`,children:[(0,$.jsx)(`h4`,{children:F(`Problems across ${h.length} draft${h.length===1?``:`s`}`,`초안 ${h.length}개의 문제 수`)}),(0,$.jsx)(zI,{totals:h.map(e=>UP(e.qa))})]}),g.length>0&&(0,$.jsxs)(`section`,{className:`agent-progress-section`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`agent-progress-fold`,"aria-expanded":!!a.goals,onClick:()=>s(`goals`),children:[(0,$.jsx)(`h4`,{children:F(`Goals`,`목표`)}),(0,$.jsx)(`span`,{children:F(`${g.filter(e=>e.ok).length} of ${g.length} met`,`${g.length}개 중 ${g.filter(e=>e.ok).length}개 충족`)})]}),a.goals&&(0,$.jsx)(`ul`,{className:`agent-progress-goals`,children:g.map((e,t)=>(0,$.jsxs)(`li`,{"data-goal-ok":e.ok?`true`:`false`,children:[(0,$.jsx)(`span`,{className:`agent-progress-mark ${e.ok?`ok`:`miss`}`,"aria-label":e.ok?F(`met`,`충족`):F(`missed`,`미충족`),children:e.ok?(0,$.jsx)(wI,{size:11}):(0,$.jsx)(iI,{size:11})}),(0,$.jsx)(`span`,{className:`agent-progress-goal-name`,children:e.name}),(0,$.jsxs)(`span`,{className:`agent-progress-goal-value`,children:[e.value,e.need&&(0,$.jsxs)(`span`,{className:`need`,children:[` / `,e.need]})]})]},t))})]}),_.length>0&&(0,$.jsxs)(`section`,{className:`agent-progress-section`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`agent-progress-fold`,"aria-expanded":!!a.issues,onClick:()=>s(`issues`),children:[(0,$.jsx)(`h4`,{children:F(`Largest issues`,`가장 큰 문제`)}),(0,$.jsxs)(`span`,{children:[_[0].kind,` `,_[0].subject]})]}),a.issues&&(0,$.jsx)(`ul`,{className:`agent-progress-issues`,children:_.map((e,t)=>(0,$.jsxs)(`li`,{children:[(0,$.jsx)(`span`,{className:`kind`,children:e.kind}),` `,e.subject,` `,(0,$.jsxs)(`span`,{className:`meta`,children:[`×`,e.count,e.frames&&` · ${e.frames}`]})]},t))})]}),p.length>0&&(0,$.jsxs)(`section`,{className:`agent-progress-section`,children:[(0,$.jsx)(`h4`,{children:F(`What the agent looked at`,`에이전트가 본 화면`)}),(0,$.jsx)(`div`,{className:`agent-progress-sheets`,children:p.map(e=>(0,$.jsx)(`button`,{type:`button`,className:`agent-progress-sheet`,title:e.caption,onClick:()=>i(e.seq),children:(0,$.jsx)(`img`,{src:e.dataUrl,alt:e.caption||F(`Image the agent checked`,`에이전트가 확인한 이미지`)})},e.seq))})]})]}),m&&(0,$.jsx)(BI,{sheet:m,onClose:()=>i(null)})]})}var HI=(e,t)=>LM(globalThis.fetch.bind(globalThis),e,t),UI=e=>`/agent/logins/${encodeURIComponent(e)}`;async function WI(){let e=await HI(`/agent/logins`);return Array.isArray(e?.providers)?e.providers:[]}async function GI(e,t){return(await HI(`/agent/logins`,{method:`POST`,body:JSON.stringify({providerId:e,type:t})})).flowId}async function KI(e,t){return HI(`${UI(e)}?after=${t}`)}async function qI(e,t,n){return HI(`${UI(e)}/answer`,{method:`POST`,body:JSON.stringify({promptId:t,value:n})})}async function JI(e){return HI(UI(e),{method:`DELETE`})}async function YI(e){return HI(`/agent/logout/${encodeURIComponent(e)}`,{method:`POST`})}var XI=[[`Connected`,e=>e.connected],[`Subscriptions`,e=>!e.connected&&e.methods.some(e=>e.subscription)],[`API keys`,e=>!e.connected&&!e.methods.some(e=>e.subscription)]];function ZI({prompt:e,onSubmit:t}){let[n,r]=(0,Q.useState)(``),i=e.prompt;if(i.type===`select`)return(0,$.jsxs)(`div`,{className:`agent-login-choices`,role:`group`,"aria-label":i.message,children:[(0,$.jsx)(`p`,{className:`agent-login-ask`,children:i.message}),(i.options??[]).map(e=>(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button`,onClick:()=>t(e.id),children:e.label},e.id))]});let a=`agent-login-${e.promptId}`;return(0,$.jsxs)(`form`,{className:`agent-login-form`,onSubmit:e=>{e.preventDefault(),t(n),r(``)},children:[(0,$.jsx)(`label`,{className:`agent-login-ask`,htmlFor:a,children:i.message}),(0,$.jsxs)(`div`,{className:`agent-key-controls`,children:[(0,$.jsx)(`input`,{id:a,className:`agent-key-input`,type:i.type===`secret`?`password`:`text`,autoComplete:`off`,spellCheck:`false`,placeholder:i.placeholder??``,value:n,autoFocus:!0,onChange:e=>r(e.target.value)}),(0,$.jsx)(`button`,{type:`submit`,className:`agent-key-save`,disabled:i.type===`secret`&&!n.trim(),children:`Continue`})]})]})}function QI({entries:e}){return(0,$.jsx)(`ul`,{className:`agent-login-log`,children:e.map((e,t)=>{let n=e.event;return n.type===`auth_url`?(0,$.jsxs)(`li`,{children:[(0,$.jsx)(`a`,{className:`agent-primary-button agent-login-open`,href:n.url,target:`_blank`,rel:`noopener noreferrer`,children:`Open the sign-in page`}),n.instructions&&(0,$.jsx)(`span`,{className:`agent-key-note`,children:n.instructions})]},t):n.type===`device_code`?(0,$.jsxs)(`li`,{children:[(0,$.jsx)(`span`,{className:`agent-key-note`,children:`Enter this code at `}),(0,$.jsx)(`a`,{href:n.verificationUri,target:`_blank`,rel:`noopener noreferrer`,children:n.verificationUri}),(0,$.jsx)(`code`,{className:`agent-login-code`,children:n.userCode})]},t):(0,$.jsxs)(`li`,{className:`agent-key-note`,children:[n.message,(n.links??[]).map(e=>(0,$.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:[` `,e.label||e.url]},e.url))]},t)})})}function $I({onClose:e,onChatGPT:t,onChanged:n}){let[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(``),[l,u]=(0,Q.useState)(null),d=(0,Q.useRef)(!0),f=(0,Q.useCallback)(async()=>{try{i(await WI()),o(``)}catch(e){o(e?.message||`The login list is unavailable.`)}},[]);(0,Q.useEffect)(()=>(d.current=!0,f(),()=>{d.current=!1}),[f]),(0,Q.useEffect)(()=>{if(!l?.flowId||l.done)return;let e=!1;return(async()=>{let t=0;for(;!e&&d.current;){let r;try{r=await KI(l.flowId,t)}catch(t){e||u(e=>e&&{...e,done:!0,ok:!1,message:t?.message||`The login stopped.`});return}if(e)return;t=r.next;for(let e of r.events)u(t=>!t||t.flowId!==l.flowId?t:e.type===`prompt`?{...t,prompt:e}:e.type===`prompt_closed`?t.prompt?.promptId===e.promptId?{...t,prompt:null}:t:e.type===`event`?{...t,log:[...t.log,e]}:{...t,prompt:null,done:!0,ok:e.ok,message:e.message??``}),e.type===`done`&&e.ok&&(await n?.(),f());if(r.done)return}})(),()=>{e=!0}},[l?.flowId,l?.done,f,n]);let p=async(n,r)=>{if(o(``),r.type===`chatgpt`){t?.(),e?.();return}try{let e=await GI(n.id,r.type);u({flowId:e,name:n.name,label:r.label,log:[],prompt:null,done:!1})}catch(e){o(e?.message||`That login could not start.`)}},m=async e=>{let t=l?.prompt;if(t){u(e=>e&&{...e,prompt:null});try{await qI(l.flowId,t.promptId,e)}catch(e){o(e?.message||`That answer was not taken.`)}}},h=async()=>{l&&!l.done&&await JI(l.flowId).catch(()=>{}),u(null)},g=async e=>{try{await YI(e.id),await n?.(),f()}catch(e){o(e?.message||`Logout failed.`)}},_=(r??[]).filter(e=>!s.trim()||e.name.toLowerCase().includes(s.trim().toLowerCase()));return(0,$.jsxs)(`section`,{className:`agent-keys agent-login`,"aria-label":`Connect a model`,"data-agent-keys":`true`,children:[(0,$.jsxs)(`div`,{className:`agent-keys-head`,children:[(0,$.jsx)(`h3`,{className:`agent-keys-title`,children:`Connect a model`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-icon-button agent-keys-close`,"aria-label":`Close`,onClick:async()=>{await h(),e?.()},children:(0,$.jsx)(iI,{size:11,"aria-hidden":`true`})})]}),a&&(0,$.jsx)(`p`,{className:`agent-key-error`,role:`alert`,children:a}),l?(0,$.jsxs)(`div`,{className:`agent-login-flow`,"data-login-flow":l.done?l.ok?`connected`:`failed`:`running`,children:[(0,$.jsxs)(`p`,{className:`agent-key-label`,children:[l.name,` · `,l.label]}),(0,$.jsx)(QI,{entries:l.log}),l.prompt&&(0,$.jsx)(ZI,{prompt:l.prompt,onSubmit:m},l.prompt.promptId),!l.done&&!l.prompt&&(0,$.jsxs)(`p`,{className:`agent-key-note`,children:[`Waiting for `,l.name,`…`]}),l.done&&(0,$.jsx)(`p`,{className:l.ok?`agent-key-note`:`agent-key-error`,role:l.ok?`status`:`alert`,children:l.ok?`Connected to ${l.name}.`:l.message}),(0,$.jsx)(`div`,{className:`agent-key-controls`,children:(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button`,onClick:h,children:l.done?`Back to the list`:`Cancel`})})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`p`,{className:`agent-keys-hint`,children:`A subscription signs in on its own page. A key or server address you type stays with the local CozyClay service and is never shown again.`}),(0,$.jsx)(`input`,{className:`agent-key-input`,type:`search`,"aria-label":`Search providers`,placeholder:`Search providers`,value:s,onChange:e=>c(e.target.value)}),r===null&&!a&&(0,$.jsx)(`p`,{className:`agent-keys-note`,children:`Loading providers…`}),XI.map(([e,t])=>{let n=_.filter(t);return n.length?(0,$.jsxs)(`div`,{className:`agent-login-group`,children:[(0,$.jsx)(`p`,{className:`agent-key-endpoint-label`,children:e}),n.map(e=>(0,$.jsxs)(`div`,{className:`agent-key-row`,"data-provider":e.id,"data-provider-signed-in":e.connected?`true`:`false`,children:[(0,$.jsxs)(`div`,{className:`agent-key-head`,children:[(0,$.jsx)(`span`,{className:`agent-key-label`,children:e.name}),(0,$.jsx)(`span`,{className:`agent-key-source`,children:e.connected?e.via===`oauth`?`signed in`:e.source||`key`:``})]}),(0,$.jsx)(`div`,{className:`agent-key-controls`,children:e.connected&&e.id!==`openai-codex`?(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-key-remove`,onClick:()=>g(e),children:`Log out`}):e.methods.map(t=>(0,$.jsx)(`button`,{type:`button`,className:t.subscription?`agent-key-save`:`agent-ghost-button`,onClick:()=>p(e,t),children:t.label},t.type))})]},e.id))]},e):null})]})]})}function eL(e){if(!Number.isFinite(e)||e<0)return``;let t=e/1e3;return t<10?`${t.toFixed(1)} s`:t<60?`${Math.round(t)} s`:`${Math.floor(t/60)} m ${String(Math.round(t%60)).padStart(2,`0`)} s`}function tL({state:e}){return e===`running`?(0,$.jsx)(`span`,{className:`agent-step-spin`,"aria-label":F(`running`,`진행 중`)}):e===`failed`?(0,$.jsx)(iI,{className:`agent-step-icon alert`,size:11,"aria-label":F(`failed`,`실패`)}):e===`cancelled`?(0,$.jsx)(cI,{className:`agent-step-icon warn`,size:9,"aria-label":F(`stopped`,`중지됨`)}):e===`note`?(0,$.jsx)(`span`,{className:`agent-step-dot`,"aria-hidden":`true`}):(0,$.jsx)(wI,{className:`agent-step-icon ok`,size:11,"aria-label":F(`done`,`완료`)})}function nL({step:e,live:t,isLast:n,now:r,toolLabels:i}){let[a,o]=(0,Q.useState)(!1);if(e.kind===`narration`)return(0,$.jsxs)(`li`,{className:`agent-step narration`,"data-step-kind":`narration`,children:[(0,$.jsx)(tL,{state:`note`}),(0,$.jsx)(`span`,{className:`agent-step-text`,children:e.text})]});if(e.kind===`thinking`){let i=t&&n,s=eN(e.text),c=(i?r:e.endedAt??e.updatedAt)-e.startedAt;return(0,$.jsxs)(`li`,{className:`agent-step thinking`,"data-step-kind":`thinking`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`agent-step-row`,"aria-expanded":a,onClick:()=>o(e=>!e),children:[(0,$.jsx)(tL,{state:i?`running`:`note`}),(0,$.jsx)(`span`,{className:`agent-step-label`,children:F(`Thinking`,`생각`)}),(0,$.jsx)(`span`,{className:`agent-step-subject`,children:a?``:s}),(0,$.jsx)(`span`,{className:`agent-step-time`,children:c>=1e3?eL(c):``})]}),a&&(0,$.jsx)(`p`,{className:`agent-step-thought`,children:e.text})]})}let s=e.kind===`compose`||e.status===`running`,c=e.kind===`compose`?F(`Preparing ${XM(e,i)}`,`${XM(e,i)} 준비 중`):XM(e,i),l=s?e.progress?`${$M(e)}${e.progress.summary?` — ${e.progress.summary}`:``}`:``:QM(e),u=s?r-(e.startedAt??r):e.elapsedMs;return(0,$.jsxs)(`li`,{className:`agent-step ${e.kind}${e.status===`failed`?` failed`:``}`,"data-step-kind":e.kind,"data-tool-name":e.name,"data-tool-status":e.kind===`compose`?`composing`:e.status,"data-action":e.action,children:[(0,$.jsxs)(`div`,{className:`agent-step-row`,children:[(0,$.jsx)(tL,{state:s?`running`:e.status}),(0,$.jsx)(`span`,{className:`agent-step-label`,children:c}),e.subject&&(0,$.jsx)(`span`,{className:`agent-step-subject`,children:e.subject}),(0,$.jsx)(`span`,{className:`agent-step-time`,children:eL(u)})]}),l&&(0,$.jsx)(`p`,{className:`agent-step-result`,children:l})]})}function rL({block:e,now:t,toolLabels:n,formatClock:r,onRetry:i}){let[a,o]=(0,Q.useState)(null),s=e.end?.status===`failed`||e.steps.some(e=>e.failure),c=e.end?.status===`stopped`,l=a??(e.live||s||c),u=cN(e,t,r),d=e.steps.find(e=>e.failure)?.failure;return(0,$.jsxs)(`div`,{className:`agent-card agent-steps`,"data-agent-card":`steps`,"data-steps-state":e.live?`live`:e.end?.status??`done`,"data-open":l?`true`:`false`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`agent-steps-head`,"aria-expanded":l,onClick:()=>o(!l),children:[(0,$.jsx)(`span`,{className:`agent-status-dot ${u.tone}`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`agent-steps-title`,children:u.text}),(0,$.jsx)(CI,{className:`agent-steps-chevron`,size:12,"aria-hidden":`true`})]}),l&&(0,$.jsx)(`ol`,{className:`agent-steps-list`,children:e.steps.map((r,i)=>(0,$.jsx)(nL,{step:r,live:e.live,isLast:i===e.steps.length-1,now:t,toolLabels:n},r.id))}),c&&(0,$.jsx)(`p`,{className:`agent-steps-note`,children:uN(e)}),d&&(0,$.jsxs)(`div`,{className:`agent-error`,role:`alert`,children:[(0,$.jsx)(`span`,{children:d.message||F(`The turn failed.`,`턴이 실패했어요.`)}),(0,$.jsx)(`div`,{className:`agent-error-actions`,children:(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-error-retry`,onClick:i,children:F(`Retry`,`다시 시도`)})})]})]})}var iL=/^\s{0,3}#{1,6}\s+(.*?)\s*#*\s*$/,aL=/^\s*(?:[-*•]|(\d+)[.)])\s+(.*)$/,oL=/^\s*```/,sL=/^\s*\|.*\|\s*$/,cL=/^\s*\|?\s*:?-{2,}:?\s*(?:\|\s*:?-{2,}:?\s*)*\|?\s*$/,lL=/\*\*(.+?)\*\*|`([^`]+)`/g;function uL(e){let t=[],n=0;for(let r of e.matchAll(lL))r.index>n&&t.push({text:e.slice(n,r.index)}),t.push(r[2]===void 0?{text:r[1],bold:!0}:{text:r[2],code:!0}),n=r.index+r[0].length;return n<e.length&&t.push({text:e.slice(n)}),t}var dL=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>uL(e.trim()));function fL(e){let t=String(e??``).replace(/\r\n?/g,`
18
+ `).split(`
19
+ `),n=[],r=null;for(let e=0;e<t.length;e+=1){let i=t[e];if(oL.test(i)&&t.slice(e+1).some(e=>oL.test(e))){let i=[];for(e+=1;!oL.test(t[e]);e+=1)i.push(t[e]);n.push({type:`code`,text:i.join(`
20
+ `)}),r=null;continue}if(!i.trim()){r=null;continue}let a=iL.exec(i);if(a){n.push({type:`h`,raw:a[1]}),r=null;continue}if(sL.test(i)&&cL.test(t[e+1]??``)){let a={type:`table`,head:dL(i),rows:[]};for(e+=2;e<t.length&&sL.test(t[e]);e+=1)a.rows.push(dL(t[e]));--e,n.push(a),r=null;continue}let o=aL.exec(i);if(o){let e=o[1]===void 0?`ul`:`ol`;r?.type!==e&&(r={type:e,items:[],...e===`ol`&&o[1]!==`1`?{start:Number(o[1])}:{}},n.push(r)),r.items.push(o[2]);continue}r?.type===`p`?r.raw+=`\n${i}`:r?r.items[r.items.length-1]+=` ${i.trim()}`:n.push(r={type:`p`,raw:i})}return n.map(({raw:e,items:t,...n})=>e===void 0?t?{...n,items:t.map(uL)}:n:{...n,spans:uL(e)})}function pL({spans:e}){return e.map((e,t)=>e.code?(0,$.jsx)(`code`,{children:e.text},t):e.bold?(0,$.jsx)(`strong`,{children:e.text},t):(0,$.jsx)(Q.Fragment,{children:e.text},t))}function mL({block:e,tail:t}){if(e.type===`h`)return(0,$.jsxs)(`p`,{className:`agent-reply-heading`,children:[(0,$.jsx)(pL,{spans:e.spans}),t]});if(e.type===`code`)return(0,$.jsxs)(`pre`,{children:[(0,$.jsx)(`code`,{children:e.text}),t]});if(e.type===`ul`||e.type===`ol`){let n=e.type;return(0,$.jsx)(n,{start:e.start,children:e.items.map((n,r)=>(0,$.jsxs)(`li`,{children:[(0,$.jsx)(pL,{spans:n}),r===e.items.length-1&&t]},r))})}return e.type===`table`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`agent-reply-table`,children:(0,$.jsxs)(`table`,{children:[(0,$.jsx)(`thead`,{children:(0,$.jsx)(`tr`,{children:e.head.map((e,t)=>(0,$.jsx)(`th`,{children:(0,$.jsx)(pL,{spans:e})},t))})}),(0,$.jsx)(`tbody`,{children:e.rows.map((e,t)=>(0,$.jsx)(`tr`,{children:e.map((e,t)=>(0,$.jsx)(`td`,{children:(0,$.jsx)(pL,{spans:e})},t))},t))})]})}),t]}):(0,$.jsxs)(`p`,{children:[(0,$.jsx)(pL,{spans:e.spans}),t]})}function hL({text:e,tail:t=null}){let n=(0,Q.useMemo)(()=>fL(e),[e]);return n.length?n.map((e,r)=>(0,$.jsx)(mL,{block:e,tail:r===n.length-1?t:null},r)):t||null}function gL(e,t=Date.now()){let n=Date.parse(e||``);if(!Number.isFinite(n))return`just now`;let r=Math.max(0,Math.floor((t-n)/1e3));if(r<60)return`just now`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);return a<24?`${a}h ago`:`${Math.floor(a/24)}d ago`}function _L({tone:e,title:t}){return(0,$.jsx)(`span`,{className:`agent-status-dot ${e}`,title:t,"aria-hidden":`true`})}function vL({image:e,onUse:t,onUndo:n,onRegenerate:r,onOpen:i}){let a=e.apply?.status===`applying`,o=e.apply?.status===`failed`;return(0,$.jsxs)(`div`,{className:`agent-card agent-image-card`,"data-image-id":e.imageId,"data-placed":e.placed?`true`:`false`,"data-apply-status":e.apply?.status||`idle`,children:[(0,$.jsx)(`figure`,{children:(0,$.jsx)(`img`,{src:e.dataUrl,width:e.width,height:e.height,alt:e.prompt||`Generated image`,onClick:()=>i(e)})}),e.placed?(0,$.jsxs)(`div`,{className:`agent-placed`,children:[(0,$.jsx)(_L,{tone:`ok`}),`Placed`,(0,$.jsx)(`button`,{type:`button`,className:`agent-image-undo`,disabled:a,onClick:()=>n(e),children:a?`Removing…`:`Undo`})]}):(0,$.jsxs)(`div`,{className:`agent-image-actions`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`primary agent-image-use`,disabled:a,onClick:()=>t(e),children:[(0,$.jsx)(gI,{size:11}),` `,a?`Applying…`:`Use in scene`]}),(0,$.jsxs)(`a`,{className:`agent-image-download`,role:`button`,href:e.dataUrl,download:`${e.imageId||`agent-image`}.png`,children:[(0,$.jsx)(yI,{size:11}),` Download`]}),(0,$.jsxs)(`button`,{type:`button`,className:`agent-image-regenerate`,onClick:()=>r(e),children:[(0,$.jsx)(lI,{size:11}),` Regenerate`]})]}),o&&(0,$.jsx)(`p`,{className:`agent-image-error`,role:`alert`,children:e.apply.error})]})}function yL({resetAt:e,onRetry:t,onSwitchModel:n}){let[r,i]=(0,Q.useState)(()=>Date.now());(0,Q.useEffect)(()=>{let e=setInterval(()=>i(Date.now()),1e3);return()=>clearInterval(e)},[]);let a=WN(e,r);return(0,$.jsxs)(`div`,{className:`agent-paused`,"data-agent-card":`rate-limited`,role:`status`,children:[(0,$.jsxs)(`div`,{className:`agent-paused-head`,children:[(0,$.jsx)(SI,{size:12,"aria-hidden":`true`}),` Paused — usage limit reached`,(0,$.jsx)(`span`,{className:`agent-paused-countdown`,children:a?`resets in ${a}`:`resets soon`})]}),(0,$.jsx)(`p`,{style:{margin:0},children:XN.rate_limit}),(0,$.jsxs)(`div`,{className:`agent-paused-actions`,children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-paused-wait`,onClick:t,children:`Wait & retry`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-paused-switch`,onClick:n,children:`Switch model`})]})]})}function bL({model:e,roles:t}){if(!t)return null;let n=[[F(`helper`,`보조`),t.helper],[F(`advisor`,`자문`),t.advisor]];return t.vision!==e&&n.push([F(`vision`,`비전`),t.vision]),(0,$.jsx)(`p`,{className:`agent-model-roles`,"data-agent-model-roles":`true`,children:n.map(([e,t])=>`${e} · ${UN(t)}`).join(` · `)})}function xL({job:e,onStop:t,onAccept:n}){let r=!vN(e.state),i=r&&Number.isFinite(e.progress)?Math.round(e.progress*100):null,a=e.state===`installed`?null:e.phase,o=e.state===`review_required`||e.verification?.status===`unverified`,s=e.verification?.limitations??[],c=e.state===`installed`&&o?`Installed with warnings`:gN[e.state]||e.state;return(0,$.jsxs)(`div`,{className:`agent-card agent-job-card`,"data-job-id":e.jobId,"data-job-state":e.state,children:[(0,$.jsxs)(`div`,{className:`agent-job-head`,children:[(0,$.jsx)(_L,{tone:yN(e.state),title:e.state}),(0,$.jsx)(`span`,{className:`agent-job-label`,children:c}),o&&(0,$.jsx)(`span`,{className:`agent-job-badge`,children:`Unverified`}),i!==null&&(0,$.jsx)(`span`,{className:`agent-job-progress`,children:bN(e.progress)})]}),a&&(0,$.jsx)(`p`,{className:`agent-job-phase`,children:a}),e.outcome?.status===`not_applied`&&(0,$.jsx)(`p`,{className:`agent-job-outcome`,children:`Not applied — scene unchanged.`}),e.outcome?.status===`unknown`&&(0,$.jsx)(`p`,{className:`agent-job-outcome`,children:`Stopped, but the result is unknown — reconcile before editing this target.`}),i!==null&&(0,$.jsx)(`div`,{className:`agent-job-bar`,role:`progressbar`,"aria-label":`Generation progress`,"aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":100,children:(0,$.jsx)(`span`,{className:`agent-job-bar-fill`,style:{transform:`scaleX(${e.progress})`}})}),s.length>0&&(0,$.jsx)(`ul`,{className:`agent-job-limits`,children:s.map(e=>(0,$.jsx)(`li`,{children:e},e))}),(0,$.jsxs)(`div`,{className:`agent-job-actions`,children:[r&&e.state!==`review_required`&&(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-job-stop`,onClick:()=>t(e),children:`Stop`}),e.acceptance?.status===`required`&&(0,$.jsxs)(`button`,{type:`button`,className:`agent-ghost-button agent-job-accept`,onClick:()=>n(e),children:[(0,$.jsx)(DI,{size:11}),` Apply with warnings`]}),e.acceptance?.status===`accepting`&&(0,$.jsx)(`span`,{className:`agent-job-note`,children:`Applying…`}),e.acceptance?.status===`accepted`&&(0,$.jsxs)(`span`,{className:`agent-job-note`,children:[(0,$.jsx)(wI,{size:11}),` Applied at your request`]}),e.acceptance?.error&&(0,$.jsx)(`span`,{className:`agent-job-note alert`,role:`alert`,children:e.acceptance.error})]})]})}function SL({item:e}){let{receipt:t={},summary:n}=e,r=t.verification?.status===`unverified`,i=t.verification?.limitations??[],a=t.warnings??[],o=t.status===`installed`&&r;return(0,$.jsxs)(`div`,{className:`agent-card agent-receipt-card`,"data-receipt-id":e.receiptId,"data-receipt-status":t.status,children:[(0,$.jsxs)(`div`,{className:`agent-receipt-head`,children:[(0,$.jsx)(_L,{tone:r?`warn`:`ok`,title:t.status}),o&&(0,$.jsx)(`span`,{className:`agent-job-label`,children:`Installed with warnings`}),(0,$.jsx)(`span`,{className:`agent-receipt-summary`,children:n})]}),(a.length>0||i.length>0)&&(0,$.jsxs)(`ul`,{className:`agent-receipt-notes`,children:[a.map(e=>(0,$.jsx)(`li`,{children:e.message||e.code},e.code)),i.map(e=>(0,$.jsx)(`li`,{children:e},e))]}),o&&(0,$.jsx)(`p`,{className:`agent-job-note`,children:`Undo with Cmd+Z or ask the agent.`})]})}var CL={blocker:F(`blocker`,`차단`),concern:F(`concern`,`우려`),note:F(`note`,`참고`)},wL={done:F(`done`,`완료`),partial:F(`partial`,`일부`),refused:F(`refused`,`거부됨`),missing:F(`missing`,`누락`)};function TL({note:e,onSend:t,defaultOpen:n=!1}){let[r,i]=(0,Q.useState)(n);if(e.verdict!==`reviewed`)return(0,$.jsx)(`div`,{className:`agent-card agent-supervisor-card`,"data-supervisor-verdict":`unavailable`,children:(0,$.jsxs)(`p`,{className:`agent-supervisor-summary`,children:[F(`Supervisor review unavailable`,`감독 검토를 할 수 없었어요`),e.reason?` — ${e.reason}`:``]})});let a=YN(e),o=Array.isArray(e.fixes)?e.fixes:[];return(0,$.jsxs)(`div`,{className:`agent-card agent-supervisor-card`,"data-supervisor-verdict":`reviewed`,"data-open":r?`true`:`false`,children:[(0,$.jsxs)(`div`,{className:`agent-supervisor-head`,children:[(0,$.jsx)(`span`,{className:`agent-job-label`,children:F(`Supervisor`,`감독`)}),[`blocker`,`concern`,`note`].filter(t=>e.counts?.[t]>0).map(t=>(0,$.jsxs)(`span`,{className:`agent-job-badge agent-supervisor-badge ${t}`,"data-severity":t,children:[e.counts[t],` `,CL[t]]},t)),(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-supervisor-toggle`,"aria-expanded":r,onClick:()=>i(e=>!e),children:r?F(`Less`,`접기`):F(`Details`,`자세히`)})]}),(0,$.jsx)(`p`,{className:`agent-supervisor-summary`,children:e.summary}),r&&e.items?.length>0&&(0,$.jsx)(`ul`,{className:`agent-receipt-notes agent-supervisor-items`,children:e.items.map((e,t)=>(0,$.jsxs)(`li`,{"data-status":e.status,children:[wL[e.status]??e.status,` · `,e.text,e.evidence?` — ${e.evidence}`:``]},t))}),r&&e.issues?.length>0&&(0,$.jsx)(`ul`,{className:`agent-receipt-notes agent-supervisor-issues`,children:e.issues.map((e,t)=>{let n=o.find(e=>e.issueIndex===t);return(0,$.jsxs)(`li`,{"data-severity":e.severity,children:[CL[e.severity]??e.severity,` · `,e.text,e.evidence?` — ${e.evidence}`:``,n&&(0,$.jsx)(`code`,{className:`agent-supervisor-fix`,"data-fix-action":n.action,children:`run_action ${JSON.stringify({action:n.action,args:n.args})}`})]},t)})}),a&&(0,$.jsx)(`div`,{className:`agent-job-actions`,children:(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-supervisor-send`,onClick:()=>t(a),title:e.autofix?.eligible?F(`Autofix is on: the blocker fixes would be applied as written`,`자동 수정 켜짐: 차단 수정안을 적힌 그대로 적용합니다`):void 0,children:o.length?F(`Apply fixes as next prompt`,`수정안 다음 턴으로 보내기`):F(`Send as next prompt`,`다음 턴으로 보내기`)})})]})}var EL={none:`No recovery is available for this command.`,inspect:`Ask the agent to inspect the target before trying again.`,retry:`The same command can be retried.`,new_intent:`Tell the agent what to do with the changed target.`,reconcile:`The result is unknown; reconcile before changing this target.`,sign_in:`Sign in again to continue.`,fix_key:`Log in again under Connect a model, then retry.`};function DL({failure:e,onRetry:t,onFixKey:n}){return(0,$.jsxs)(`div`,{className:`agent-card agent-failure-card`,"data-failure-code":e.code,role:`alert`,children:[(0,$.jsxs)(`div`,{className:`agent-failure-head`,children:[(0,$.jsx)(DI,{size:12,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`agent-failure-code`,children:e.code})]}),(0,$.jsx)(`p`,{className:`agent-failure-message`,children:e.message||`The command did not complete.`}),(0,$.jsxs)(`p`,{className:`agent-failure-recovery`,children:[EL[e.recovery?.action]||EL.none,e.preserved?.authoredState===`unchanged`?` Nothing in the scene changed.`:e.preserved?.authoredState===`unknown`?` Whether the scene changed is unknown.`:``]}),e.recovery?.retryAllowed&&(0,$.jsxs)(`div`,{className:`agent-error-actions`,children:[e.recovery.action===`fix_key`&&n&&(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-error-keys`,onClick:n,children:`Log in again`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-error-retry`,onClick:t,children:`Retry`})]})]})}function OL({transport:e=null,sceneName:t=`CozyClay Scene`,defaultCollapsed:n=!1,onCollapsedChange:r=null,embedded:i=!1,hidden:a=!1,surface:o=`workflow`,buildContext:s=null,onImageAction:c=null,onReceipt:l=null}){let u=(0,Q.useMemo)(()=>kN(o),[o]),d=(0,Q.useMemo)(()=>e||kP({surface:o}),[e,o]),f=d.mock?d.state:null,p=PP()?.previsMode,m=o===`studio`&&p?p===`storyboard`?F(`Storyboard`,`스토리보드`):F(`Animation`,`애니메이션`):null,[h,g]=(0,Q.useState)(n),[_,v]=(0,Q.useState)(()=>u.persistWidth?jN():360),[y,b]=(0,Q.useState)(!1),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(`loading`),[D,O]=(0,Q.useState)([]),[k,ee]=(0,Q.useState)([]),[A,te]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(`loading`),[ne,re]=(0,Q.useState)(null),[ie,ae]=(0,Q.useState)(null),oe=(0,Q.useMemo)(()=>SN(D.find(e=>e.id===A)),[D,A]),se=(0,Q.useCallback)(e=>{te(e),ae(null),FN(e)},[]),[ce,le]=(0,Q.useState)(()=>LN()),ue=(0,Q.useCallback)(()=>le(e=>(RN(!e),!e)),[]),de=(0,Q.useCallback)(e=>{let t=Array.isArray(e?.models)?e.models:[];if(!t.length)return!1;let n=Array.isArray(e?.providers)?e.providers:[];return ee(n),O(t),re(e?.roles?.byMain??null),te(e=>VN(n,t,e)),M(`ready`),!0},[]),[fe,pe]=(0,Q.useState)(!1),[me,he]=(0,Q.useState)(null),[ge,_e]=(0,Q.useState)(!1),[ve,ye]=(0,Q.useState)(null),[be,xe]=(0,Q.useState)(()=>!i&&(globalThis.innerWidth||1440)<1100),[Se,Ce]=(0,Q.useState)(!1),[we,Te]=(0,Q.useState)(!1),[Ee,De]=(0,Q.useState)([]),[Oe,ke]=(0,Q.useState)(``),[Ae,je]=(0,Q.useState)(``),[Me,Ne]=(0,Q.useState)(o!==`studio`),Pe=(0,Q.useRef)(null),Fe=(0,Q.useRef)(!1),Ie=(0,Q.useRef)(null),Le=(0,Q.useRef)(s);Le.current=s;let Re=(0,Q.useRef)(c);Re.current=c;let ze=(0,Q.useRef)(l);ze.current=l;let N=(0,Q.useMemo)(()=>MP({transport:d,surface:o,buildContext:()=>Le.current?.()??null,requestImageAction:e=>(Re.current??d.applyImage?.bind(d)??jP)(e),onReceipt:e=>ze.current?.(e),onAuthLost:()=>E(`signed-out`)}),[o,d]),Be=(0,Q.useSyncExternalStore)(N.subscribe,N.getState,N.getState),{draft:Ve,items:He,pendingAttachments:Ue,quota:We,rateLimit:Ge,streaming:Ke}=Be;(0,Q.useEffect)(()=>{if(o!==`studio`){Ne(!0);return}let e=!1,t=null;try{t=globalThis.localStorage?.getItem(pN)}catch{}if(!t){Ne(!0);return}return(async()=>{try{let n=await d.loadSession(t);if(!Array.isArray(n?.transcript))throw Error(`missing transcript`);e||N.restore(n.transcript,n.sessionId||t)}catch(t){e||(N.newSession(),t?.status!==404&&ke(`Previous conversation could not be restored`))}finally{e||Ne(!0)}})(),()=>{e=!0}},[o,N,d]),(0,Q.useEffect)(()=>{if(!(o!==`studio`||!Me))try{globalThis.localStorage?.setItem(pN,Be.sessionId)}catch{}},[Be.sessionId,Me,o]);let[qe,Je]=(0,Q.useState)(()=>Date.now()),Ye=A?nP(Be,{now:qe,toolLabel:e=>XM(e,u.toolLabels)}):j===`failed`?{phase:`no-model`,kind:`terminal`,tone:`alert`,text:`No model available — the agent service did not answer with one`,ticking:!1}:{phase:`models`,kind:`live`,tone:`busy`,text:`Loading models…`,ticking:!1},Xe=(0,Q.useMemo)(()=>sN(He,{streaming:Ke}),[He,Ke]),Ze=Ke?Be.turnStartedAt:Be.lastTurn?Be.lastTurn.endedAt-Be.lastTurn.durationMs:null,Qe=(0,$.jsx)(VI,{items:He,since:Ze,live:Ke});(0,Q.useEffect)(()=>{if(!Ye.ticking)return;let e=setInterval(()=>Je(Date.now()),500);return()=>clearInterval(e)},[Ye.ticking]);let $e=(0,Q.useCallback)(e=>e?.signedIn||e?.providersConfigured>0?u.imageEntitlement&&e?.entitlements?.image===!1?`no-entitlement`:`ready`:e?.pending?`signing-in`:`signed-out`,[u]),et=(0,Q.useCallback)(async()=>{try{let e=await d.status();return w(e),E($e(e)),e}catch{return E(`signed-out`),null}},[$e,d]),tt=(0,Q.useCallback)(async()=>{await et();try{de(await d.models())}catch{}},[de,et,d]);(0,Q.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await d.status();if(e)return;w(t),E($e(t))}catch{e||E(`signed-out`)}try{let t=await d.models();if(e)return;if(!de(t)){M(`failed`);return}}catch{e||M(`failed`)}})(),()=>{e=!0}},[de,$e,d]),(0,Q.useEffect)(()=>{if(T!==`signing-in`)return;let e=()=>{document.visibilityState!==`hidden`&&tt()};return window.addEventListener(`focus`,e),window.addEventListener(`cozyclay:agent-auth-return`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),window.removeEventListener(`cozyclay:agent-auth-return`,e),document.removeEventListener(`visibilitychange`,e)}},[T,tt]),(0,Q.useEffect)(()=>{!f||T!==`ready`||!A||[`streaming`,`rate-limited`,`error`].includes(f)&&(He.length||N.send(`Give me a wide two-shot of this scene`,{attachFrame:!1,model:A}))},[T,He.length,f,A,N]),(0,Q.useEffect)(()=>{if(i)return;let e=()=>xe((globalThis.innerWidth||1440)<fN);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[i]),(0,Q.useEffect)(()=>{if(i)return;let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`b`&&(e.preventDefault(),g(e=>!e))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]),(0,Q.useEffect)(()=>{if(i)return;let e=()=>g(e=>!e);return window.addEventListener(`cozyclay:agent-panel-toggle`,e),()=>window.removeEventListener(`cozyclay:agent-panel-toggle`,e)},[i]),(0,Q.useEffect)(()=>{i||r?.(h)},[h,i,r]),(0,Q.useEffect)(()=>{if(a){Pe.current&&Pe.current===document.activeElement&&Pe.current.blur();return}(i||!h)&&(Pe.current?.focus(),Fe.current=document.activeElement!==Pe.current)},[T,h,i,a]),(0,Q.useEffect)(()=>{let e=Ie.current;e&&(e.scrollTop=e.scrollHeight)},[He,Ke]);let nt=(0,Q.useCallback)(e=>{e.preventDefault(),b(!0);let t=e.clientX,n=_,r=e=>v(AN(n+(t-e.clientX))),i=e=>{b(!1),window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),MN(AN(n+(t-e.clientX)))};window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i)},[_]),rt=(0,Q.useCallback)(e=>{v(t=>{let n=AN(t+e);return MN(n),n})},[]),it=(0,Q.useCallback)(async e=>{let t=[],n=0;for(let r of e)try{t.push(await hM(r))}catch{n+=1}let r=t.length?N.addAttachments(t).rejected:0;he(r?Qj:n?eM:null)},[N]),at=(0,Q.useCallback)(e=>{let{images:t,unsupported:n}=iM(e);return t.length?(it(t),!0):(n&&he($j),n>0)},[it]),ot=(0,Q.useCallback)(e=>{at(e.clipboardData)&&e.preventDefault()},[at]),st=(0,Q.useCallback)(e=>{rM(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,_e(!0))},[]),ct=(0,Q.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||_e(!1)},[]),lt=(0,Q.useCallback)(e=>{_e(!1),at(e.dataTransfer)&&e.preventDefault()},[at]),ut=(0,Q.useCallback)(e=>(he(null),je(``),N.send(e,{attachFrame:fe,model:A,effort:ie??void 0,supervisor:ce})),[fe,ie,A,N,ce]),dt=(0,Q.useCallback)(()=>N.stop(),[N]),ft=(0,Q.useCallback)(async e=>{if(!String(e??``).trim())return;he(null),je(``);let t=await N.steer(e);t.ok||je(t.message||`The running turn did not take that message.`)},[N]),pt=(0,Q.useCallback)(async()=>{E(`signing-in`);try{await d.signIn(),await tt()}catch{E(`signed-out`)}},[tt,d]),mt=(0,Q.useCallback)(async()=>{S(!1),await d.signOut().catch(()=>{}),w(null),N.newSession(),await tt()},[tt,N,d]),ht=(0,Q.useCallback)(()=>{if(o===`studio`)try{globalThis.localStorage?.removeItem(pN)}catch{}N.newSession(),Ce(!1),S(!1),Pe.current?.focus()},[N,o]),gt=(0,Q.useCallback)(async()=>{if(o!==`studio`)return;let e=!Se;if(Ce(e),e)try{De(await d.listSessions())}catch{De([])}},[Se,o,d]),_t=(0,Q.useCallback)(async e=>{try{let t=await d.loadSession(e);if(!Array.isArray(t?.transcript))throw Error(`missing transcript`);N.restore(t.transcript,t.sessionId||e),Ce(!1),ke(``)}catch{ke(`Previous conversation could not be restored`)}},[N,d]),vt=(0,Q.useCallback)(()=>{S(!1),Te(!we)},[we]),yt=(0,Q.useCallback)(()=>{S(!1),Te(!0)},[]),bt=(0,Q.useCallback)(()=>{N.clearContext(),S(!1)},[N]),xt=(0,Q.useCallback)(()=>{let e=D.filter(e=>BN(k,e.id)),t=e.length?e:D,n=t[(t.findIndex(e=>e.id===A)+1)%t.length];n&&se(n.id),N.clearRateLimit()},[se,A,k,D,N]),St=(0,Q.useCallback)(e=>{if(e.key===`Escape`&&Ke){e.preventDefault(),dt();return}if(e.key===`Enter`&&!FP(e)&&!e.shiftKey){if(e.preventDefault(),Ke){u.steer&&ft(Ve);return}ut(Ve)}},[Ve,u,ut,ft,dt,Ke]),Ct=Ge?`rate-limited`:T===`ready`?Ke?`streaming`:He.some(e=>e.kind===`tool`&&e.status===`failed`||e.kind===`failure`)?`error`:`ready`:T,wt={"signed-out":``,"signing-in":`busy`,"no-entitlement":`warn`,ready:`ok`,streaming:`busy`,"rate-limited":`warn`,error:`alert`}[Ct]||``,Tt=WN(Ge?.resetAt||We?.resetAt),Et=T===`ready`||T===`no-entitlement`,Dt=Ct===`rate-limited`||!A||!BN(k,A);return(0,Q.useEffect)(()=>{a&&(Fe.current=!1),!(a||Dt||!Fe.current)&&(Fe.current=!1,(!document.activeElement||document.activeElement===document.body)&&Pe.current?.focus())},[Dt,a]),h&&!i?(0,$.jsxs)(`aside`,{className:`agent-panel collapsed`,"data-agent-state":Ct,"data-agent-collapsed":`true`,"aria-label":`Agent panel, collapsed`,children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-rail-toggle`,onClick:()=>g(!1),"aria-label":`Expand agent panel`,title:`Expand agent panel (Cmd/Ctrl+B)`,children:(0,$.jsx)(CI,{size:13,style:{transform:`rotate(180deg)`}})}),(0,$.jsx)(_L,{tone:wt,title:Ct}),(0,$.jsx)(`span`,{className:`agent-rail-label`,children:`Agent`})]}):(0,$.jsxs)(`aside`,{className:`agent-panel${y?` resizing`:``}${be&&!i?` overlay`:``}${i?` embedded`:``}`,style:i?void 0:{width:`${_}px`},hidden:i&&a,"data-agent-state":Ct,"data-agent-width":i?void 0:_,"data-agent-overlay":be&&!i?`true`:`false`,"data-agent-embedded":i?`true`:`false`,"aria-label":`Agent`,children:[!i&&(0,$.jsx)(`div`,{role:`separator`,"aria-label":`Resize agent panel`,"aria-orientation":`vertical`,"aria-valuenow":_,"aria-valuemin":300,"aria-valuemax":560,tabIndex:0,className:`agent-resize`,onPointerDown:nt,onKeyDown:e=>{e.key===`ArrowLeft`&&(e.preventDefault(),rt(16)),e.key===`ArrowRight`&&(e.preventDefault(),rt(-16))}}),(0,$.jsxs)(`header`,{className:`agent-header`,children:[(0,$.jsx)(_L,{tone:wt,title:Ct}),(0,$.jsx)(`h2`,{className:`agent-title`,"data-previs-mode":m?p:void 0,children:m?`Agent · ${m}`:`Agent`}),(0,$.jsx)(`span`,{className:`agent-header-spacer`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-icon-button agent-new`,"aria-label":`New conversation`,title:`New conversation`,onClick:ht,children:(0,$.jsx)(uI,{size:14,"aria-hidden":`true`})}),u.history&&(0,$.jsxs)(`span`,{className:`agent-history-wrap`,children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-icon-button agent-history`,"aria-label":`History`,title:`History`,"aria-haspopup":`listbox`,"aria-expanded":o===`studio`?Se:void 0,onClick:o===`studio`?gt:void 0,disabled:o!==`studio`,children:(0,$.jsx)(SI,{size:13,"aria-hidden":`true`})}),o===`studio`&&Se&&(0,$.jsx)(`div`,{className:`agent-history-popover`,role:`listbox`,"aria-label":`Agent history`,children:Ee.length?Ee.map(e=>(0,$.jsxs)(`button`,{type:`button`,role:`option`,className:`agent-history-item`,onClick:()=>_t(e.sessionId),children:[(0,$.jsx)(`span`,{className:`agent-history-time`,children:gL(e.updatedAt)}),(0,$.jsx)(`span`,{className:`agent-history-text`,children:e.firstText||`Untitled conversation`})]},e.sessionId)):(0,$.jsx)(`span`,{className:`agent-history-empty`,children:`No previous conversations`})})]}),(0,$.jsxs)(`span`,{className:`agent-overflow`,children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-icon-button agent-overflow-toggle`,"aria-haspopup":`menu`,"aria-expanded":x,"aria-label":`More agent actions`,onClick:()=>S(e=>!e),children:(0,$.jsx)(mI,{size:13})}),x&&(0,$.jsxs)(`div`,{className:`agent-menu`,role:`menu`,children:[C?.signedIn&&(0,$.jsxs)(`div`,{className:`agent-account`,role:`presentation`,children:[(0,$.jsx)(`span`,{className:`agent-account-email`,children:C.email}),(0,$.jsx)(`span`,{className:`agent-plan-badge`,children:We?.plan||C.plan||`Free`}),Tt&&(0,$.jsxs)(`span`,{className:`agent-account-reset`,children:[`resets in `,Tt]})]}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:bt,children:`Clear context`}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,className:`agent-menu-keys`,"aria-expanded":we,onClick:vt,children:`Connect a model…`}),C?.signedIn&&(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:mt,children:`Sign out`})]})]}),!i&&(0,$.jsx)(`button`,{type:`button`,className:`agent-icon-button agent-collapse`,onClick:()=>g(!0),"aria-label":`Collapse agent panel`,title:`Collapse agent panel (Cmd/Ctrl+B)`,children:(0,$.jsx)(CI,{size:13})})]}),Oe&&(0,$.jsx)(`div`,{className:`agent-toast`,role:`status`,children:Oe}),Ae&&(0,$.jsx)(`div`,{className:`agent-toast alert agent-steer-notice`,role:`alert`,children:Ae}),we&&(0,$.jsx)($I,{onClose:()=>Te(!1),onChatGPT:pt,onChanged:tt}),(0,$.jsxs)(`div`,{className:`agent-transcript`,ref:Ie,"aria-live":`polite`,"aria-label":`Conversation`,"data-agent-transcript":`true`,children:[T===`signed-out`&&(0,$.jsxs)(`div`,{className:`agent-state-card`,"data-agent-card":`signed-out`,children:[(0,$.jsx)(`h3`,{children:`Connect a model`}),(0,$.jsx)(`p`,{children:`Sign in with ChatGPT, or log in to another provider with a subscription, an API key, or your own proxy server. Sign-in happens in your browser — no token is ever stored in this page.`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-primary-button agent-signin`,onClick:pt,children:`Sign in with ChatGPT`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-ghost-button agent-use-key`,onClick:yt,children:`Log in with another provider`})]}),T===`signing-in`&&(0,$.jsxs)(`div`,{className:`agent-state-card`,"data-agent-card":`signing-in`,children:[(0,$.jsx)(`span`,{className:`agent-spinner`,"aria-hidden":`true`}),(0,$.jsx)(`h3`,{children:`Waiting for your browser…`}),(0,$.jsx)(`p`,{children:`Finish the ChatGPT sign-in in the browser page that just opened. This panel picks up the session when you come back.`}),C?.authorizeUrl&&(0,$.jsx)(`a`,{className:`agent-ghost-button agent-signin-link`,href:C.authorizeUrl,target:`_blank`,rel:`noopener noreferrer`,children:`Open the sign-in page again`})]}),T===`no-entitlement`&&(0,$.jsxs)(`div`,{className:`agent-state-card`,"data-agent-card":`no-entitlement`,children:[(0,$.jsx)(`h3`,{children:`Image generation is not on this plan`}),(0,$.jsxs)(`p`,{children:[`Signed in as `,C?.email||`your account`,`. Chat and tool calls work; image results need a plan with image generation.`]}),(0,$.jsx)(`button`,{type:`button`,className:`agent-primary-button`,onClick:()=>window.open(`https://chatgpt.com/#pricing`,`_blank`,`noopener,noreferrer`),children:`See plans`})]}),T===`ready`&&!He.length&&!Ge&&(0,$.jsxs)(`div`,{className:`agent-state-card`,"data-agent-card":`ready`,children:[(0,$.jsx)(`h3`,{children:u.emptyTitle}),(0,$.jsx)(`p`,{children:u.emptyHint(t)}),(0,$.jsx)(`div`,{className:`agent-suggestions`,children:u.suggestions.map(e=>(0,$.jsx)(`button`,{type:`button`,className:`agent-chip`,onClick:()=>{N.setDraft(e),Pe.current?.focus()},children:e},e))})]}),Xe.map(e=>{if(e.type===`steps`)return(0,$.jsxs)(Q.Fragment,{children:[e.last&&Qe,(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(rL,{block:e,now:qe,toolLabels:u.toolLabels,formatClock:eP,onRetry:()=>ut(Be.lastPrompt)})})]},e.id);let{item:t}=e;return t.kind===`user`?(0,$.jsxs)(`div`,{className:`agent-row user`,children:[t.attachments?.length>0&&(0,$.jsx)(`div`,{className:`agent-bubble-attachments`,children:t.attachments.map((e,n)=>(0,$.jsx)(`img`,{src:e.dataUrl,alt:e.name||`Attached image`,onClick:()=>ye({dataUrl:e.dataUrl,prompt:e.name})},`${t.id}-${n}`))}),(0,$.jsx)(`div`,{className:`agent-bubble`,children:t.text})]},t.id):t.kind===`assistant`?(0,$.jsx)(`div`,{className:`agent-row assistant`,children:(0,$.jsx)(`div`,{className:`agent-assistant-text`,children:(0,$.jsx)(hL,{text:t.text,tail:Ke&&(0,$.jsx)(`span`,{className:`agent-caret`,children:`▌`})})})},t.id):t.kind===`job`?(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(xL,{job:t,onStop:dt,onAccept:e=>N.acceptJob(e.jobId)})},t.id):t.kind===`receipt`?(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(SL,{item:t})},t.id):t.kind===`failure`?(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(DL,{failure:t.failure,onRetry:()=>ut(Be.lastPrompt),onFixKey:yt})},t.id):t.kind===`supervisor`?(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(TL,{note:t,onSend:e=>{N.setDraft(e),ut(e)}})},t.id):(0,$.jsx)(`div`,{className:`agent-row`,children:(0,$.jsx)(vL,{image:t,onUse:e=>N.applyImage(e.id),onUndo:e=>N.undoImage(e.id),onRegenerate:()=>ut(Be.lastPrompt),onOpen:ye})},t.id)}),!Xe.some(e=>e.type===`steps`&&e.last)&&Qe,Ge&&(0,$.jsx)(yL,{resetAt:Ge.resetAt,onRetry:()=>{N.clearRateLimit(),ut(Be.lastPrompt)},onSwitchModel:xt})]}),Et&&(0,$.jsxs)(`div`,{className:`agent-activity`,"data-agent-activity":Ye.phase,"data-agent-activity-kind":Ye.kind,role:`status`,"aria-live":`polite`,children:[(0,$.jsx)(`span`,{className:`agent-activity-indicator ${Ye.tone}`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`agent-activity-text`,children:Ye.text}),Ye.detail&&(0,$.jsx)(`span`,{className:`agent-activity-detail`,children:Ye.detail})]}),Et&&(0,$.jsxs)(`div`,{className:`agent-composer`,"data-agent-dropping":ge?`true`:`false`,onDragOver:Dt?void 0:st,onDragLeave:Dt?void 0:ct,onDrop:Dt?void 0:lt,onPaste:Dt?void 0:ot,children:[Ue.length>0&&(0,$.jsx)(`ul`,{className:`agent-attachments`,"aria-label":`Attached images`,children:Ue.map(e=>(0,$.jsxs)(`li`,{className:`agent-attachment`,children:[(0,$.jsx)(`img`,{src:e.dataUrl,alt:e.name||`Attached image`}),(0,$.jsx)(`button`,{type:`button`,className:`agent-attachment-remove`,"aria-label":`Remove ${e.name||`attached image`}`,onClick:()=>N.removeAttachment(e.id),children:(0,$.jsx)(iI,{size:10,"aria-hidden":`true`})})]},e.id))}),me&&(0,$.jsx)(`p`,{className:`agent-attachment-notice`,role:`status`,children:me}),(0,$.jsxs)(`div`,{className:`agent-field`,children:[(0,$.jsx)(`textarea`,{ref:Pe,className:`agent-input`,"aria-label":`Message the agent`,placeholder:Ct===`rate-limited`?`Composer is paused`:A?u.composerPlaceholder:`Waiting for the model list…`,value:Ve,disabled:Dt,onChange:e=>N.setDraft(e.target.value),onKeyDown:St,onDragOver:st,onDrop:lt}),(0,$.jsxs)(`div`,{className:`agent-composer-controls`,children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-attach-chip`,"aria-pressed":fe,"aria-label":`Attach current frame`,title:`Attach current frame`,onClick:()=>pe(e=>!e),children:fe?(0,$.jsx)(`span`,{className:`agent-attach-thumb`,"aria-hidden":`true`}):(0,$.jsx)(fI,{size:13,"aria-hidden":`true`})}),(0,$.jsx)(`select`,{className:`agent-model-select`,"aria-label":`Model`,title:`Model`,value:A,disabled:!D.length,onChange:e=>se(e.target.value),children:k.length?k.map(e=>(0,$.jsx)(`optgroup`,{label:e.label,children:e.models.length?e.models.map(t=>(0,$.jsx)(`option`,{value:t.key,disabled:!e.signedIn,children:e.signedIn?t.label:`${t.label} — add key`},t.key)):(0,$.jsx)(`option`,{value:`${e.id}/`,disabled:!0,children:e.signedIn?`No models`:`No models — add key`})},e.id)):D.length?D.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.label},e.id)):(0,$.jsx)(`option`,{value:``,children:j===`failed`?`No model available`:`Loading models…`})}),oe.length>0&&(0,$.jsx)(`select`,{className:`agent-model-select agent-effort-select`,"aria-label":`Reasoning effort`,title:`Reasoning effort`,value:ie??oe[0],onChange:e=>ae(e.target.value),children:oe.map((e,t)=>(0,$.jsx)(`option`,{value:e,title:t===0?`Default for this model`:void 0,children:e},e))}),o===`studio`&&(0,$.jsxs)(`button`,{type:`button`,className:`agent-supervisor-toggle${ce?` is-on`:``}`,role:`switch`,"aria-checked":ce,"aria-label":F(`Supervisor review`,`감독 검토`),title:F(ce?`Supervisor review is on: a note arrives after each editing turn`:`Supervisor review is off`,ce?`감독 검토 켜짐: 편집 턴이 끝나면 메모가 옵니다`:`감독 검토 꺼짐`),onClick:ue,children:[F(`Supervisor`,`감독`),` `,ce?`ON`:`OFF`]}),(0,$.jsx)(`span`,{className:`agent-composer-spacer`,"aria-hidden":`true`}),Ke?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`agent-send stop agent-stop`,onClick:dt,children:`Stop`}),u.steer&&(0,$.jsx)(`button`,{type:`button`,className:`agent-send agent-steer`,disabled:!Ve.trim(),onClick:()=>ft(Ve),children:`Steer`})]}):(0,$.jsx)(`button`,{type:`button`,className:`agent-send`,"aria-label":`Send`,title:`Send (Enter)`,disabled:Dt||!Ve.trim(),onClick:()=>ut(Ve),children:(0,$.jsx)(EI,{size:14,"aria-hidden":`true`})})]}),(0,$.jsx)(bL,{model:A,roles:HN(ne,A)})]})]}),Et&&u.imageHint&&(0,$.jsx)(`p`,{className:`agent-footer-hint`,children:u.imageHint}),ve&&(0,$.jsx)(`button`,{type:`button`,className:`agent-lightbox`,"aria-label":`Close image preview`,onClick:()=>ye(null),children:(0,$.jsx)(`img`,{src:ve.dataUrl,alt:ve.prompt||`Generated image`})})]})}var kL=`cozyclay:scene-change`,AL=`cozyclay.scene-playback.v1`,jL=`cozyclay:scene-playback`;function ML(e,t){return!e||typeof e!=`object`?!1:[e.assetId,e.sourceAssetId,e.matteAssetId].includes(t)}function NL(e,t,{height:n=io,placement:r={},name:i=t?.name}={}){if(!t||!At(t.id))return{document:e,object:null,changed:!1,reason:`invalid-asset`};let a=e&&typeof e==`object`?e:hA(),o=Array.isArray(a.scenes)?a.scenes:[],s=mA(o,a.activeSceneId);if(s<0||!o[s])return{document:a,object:null,changed:!1,reason:`no-active-scene`};let c=o[s],l=Array.isArray(c.objects)?c.objects:[];if(l.some(e=>ML(e,t.id)))return{document:a,object:null,changed:!1,reason:`already-in-scene`};let u=jo({assetId:t.id,aspect:Lt(t)??1,height:n,name:i},l,r);if(!u)return{document:a,object:null,changed:!1,reason:`cutout-failed`};let d=o.map((e,t)=>t===s?{...e,objects:[...l,u]}:e);return{document:{...a,version:Number.isInteger(a.version)?a.version:5,scenes:d},object:u,changed:!0,reason:`added`}}function PL(e,t,n={}){if(typeof t!=`string`||!t.trim()||!n||typeof n!=`object`)return{document:e,changed:!1,reason:`invalid-motion`};let r=e&&typeof e==`object`?e:hA(),i=Array.isArray(r.scenes)?r.scenes:[],a=mA(i,r.activeSceneId);if(a<0||!i[a])return{document:r,changed:!1,reason:`no-active-scene`};let o=i[a],s=o.stage&&typeof o.stage==`object`?o.stage:{},c=Array.isArray(s.characters)?s.characters:[],l=c.find(e=>e?.id===t);if(!l)return{document:r,changed:!1,reason:`character-not-found`};if(n.spec?.schema!==`cozyclay.motion-spec.v1`)return{document:r,changed:!1,reason:`motion-spec-missing`};let u={schema:`cozyclay.take.v3`,rig:l.model||`x-bot-tpose`,spec:n.spec,placement:{position:[l.x??0,l.y??0,l.z??0],yaw:l.rot??0},scene:Kl(Array.isArray(o.objects)?o.objects:[])},d=c.map(e=>e?.id===t?{...e,motionTake:u}:e),f={...o,stage:{...s,characters:d}};return{document:{...r,scenes:i.map((e,t)=>t===a?f:e)},changed:!0,reason:`updated`,characterId:t,motionTake:u}}function FL(e,t,n={}){let r=PL(n.document??IL(n.storage),e,t);return r.changed&&LL(r.document,n),r}function IL(e=globalThis.localStorage){return yA(e?.getItem?.(`cozyclay.scenes.v5`)??null).document}function LL(e,{storage:t=globalThis.localStorage,target:n=globalThis}={}){let r=e&&typeof e==`object`?e:hA(),i=xA(r);try{t?.setItem?.(Ok,i)}catch{}try{n?.dispatchEvent?.(new CustomEvent(kL,{detail:r}))}catch{}return r}function RL(e,{storage:t=globalThis.localStorage,target:n=globalThis}={}){if(typeof e!=`function`)return()=>{};let r=t=>{let n=t?.detail;n&&typeof n==`object`&&e(n,{source:`same-tab`})},i=t=>{if(t?.key!==`cozyclay.scenes.v5`||!t.newValue)return;let n=yA(t.newValue);n.status===`corrupt`||n.status===`future`||!n.document||e(n.document,{source:`storage`})};return n?.addEventListener?.(kL,r),n?.addEventListener?.(`storage`,i),()=>{n?.removeEventListener?.(kL,r),n?.removeEventListener?.(`storage`,i)}}function zL(e,{storage:t=globalThis.localStorage,target:n=globalThis}={}){let r={activeSceneId:typeof e?.activeSceneId==`string`?e.activeSceneId:null,frame:Number.isFinite(Number(e?.frame))?Math.max(0,Math.round(Number(e.frame))):null,playing:typeof e?.playing==`boolean`&&e.playing,issuedAt:Date.now()};try{t?.setItem?.(AL,JSON.stringify(r))}catch{}try{n?.dispatchEvent?.(new CustomEvent(jL,{detail:r}))}catch{}return r}function BL(e,{storage:t=globalThis.localStorage,target:n=globalThis}={}){if(typeof e!=`function`)return()=>{};let r=t=>{try{let n=typeof t==`string`?JSON.parse(t):t;n&&typeof n==`object`&&e(n)}catch{}},i=e=>r(e?.detail),a=e=>{e?.key===`cozyclay.scene-playback.v1`&&e.newValue&&r(e.newValue)};return n?.addEventListener?.(jL,i),n?.addEventListener?.(`storage`,a),()=>{n?.removeEventListener?.(jL,i),n?.removeEventListener?.(`storage`,a)}}async function VL(e,{importer:t=Ut,remember:n=Vj,importOptions:r}={}){return n(await t(e,{maxDimension:Ct,...r||{}}))}async function HL(e,t={}){let n=await VL(e,t),r=NL(t.document??IL(t.storage),n,t);return r.changed&&LL(r.document,t),{...r,asset:n}}export{HM as $,Cr as $a,Xo as $i,KD as $n,Ve as $o,mp as $r,kk as $t,_F as A,oi as Aa,Ss as Ai,IO as An,It as Ao,CC as Ar,TA as At,HP as B,Ni as Ba,vo as Bi,hO as Bn,Xt as Bo,cp as Br,bj as Bt,UF as C,Ga as Ca,G as Ci,KO as Cn,St as Co,xC as Cr,QA as Ct,lF as D,ta as Da,W as Di,zO as Dn,Gt as Do,VC as Dr,yj as Dt,cF as E,ca as Ea,Os as Ei,JO as En,Pt as Eo,OC as Er,wj as Et,rF as F,yi as Fa,Ka as Fi,CO as Fn,At as Fo,Dy as Fr,Sj as Ft,PP as G,Jr as Ga,No as Gi,zD as Gn,Ke as Go,_p as Gr,KA as Gt,BP as H,Gr as Ha,po as Hi,TO as Hn,Wt as Ho,hp as Hr,hj as Ht,oF as I,vi as Ia,ho as Ii,AO as In,jt as Io,lm as Ir,Ej as It,SN as J,Rr as Ja,Ro as Ji,YD as Jn,dt as Jo,vp as Jr,Ik as Jt,kP as K,Yr as Ka,Ao as Ki,ID as Kn,ct as Ko,op as Kr,nj as Kt,GP as L,Ti as La,go as Li,wO as Ln,Tt as Lo,Ap as Lr,ZA as Lt,nF as M,Ci as Ma,z as Mi,EO as Mn,Bt as Mo,sC as Mr,aj as Mt,sF as N,ji as Na,io as Ni,DO as Nn,Ut as No,aC as Nr,tj as Nt,fF as O,na as Oa,U as Oi,LO as On,en as Oo,wC as Or,cj as Ot,eF as P,wi as Pa,no as Pi,bO as Pn,Mt as Po,FS as Pr,ej as Pt,zM as Q,jr as Qa,Io as Qi,LD as Qn,Ue as Qo,sp as Qr,Rk as Qt,LP as R,Si as Ra,uo as Ri,SO as Rn,$t as Ro,Op as Rr,rj as Rt,aI as S,Ha as Sa,R as Si,sk as Sn,bt as So,RC as Sr,xj as St,IF as T,fa as Ta,V as Ti,qO as Tn,Kt as To,zC as Tr,mj as Tt,FP as U,qr as Ua,Wo as Ui,sO as Un,Jt as Uo,bp as Ur,Cj as Ut,RP as V,Zr as Va,Do as Vi,gO as Vn,Zt as Vo,gp as Vr,Dj as Vt,NP as W,Xr as Wa,jo as Wi,oO as Wn,Ye as Wo,up as Wr,RA as Wt,PN as X,Sr as Xa,Mo as Xi,XD as Xn,Ze as Xo,yp as Xr,Uk as Xt,BN as Y,wr as Ya,fs as Yi,QD as Yn,Qe as Yo,lp as Yr,Hk as Yt,VM as Z,Lr as Za,Po as Zi,tO as Zn,at as Zo,ap as Zr,Bk as Zt,pI as _,$a as _a,Fl as _i,ck as _n,pr as _o,IC as _r,XA as _t,RL as a,Yo as aa,jf as ai,hA as an,kr as ao,jD as ar,Wj as at,sI as b,Ua as ba,Fs as bi,vk as bn,Rn as bo,BC as br,FA as bt,II as c,cs as ca,Af as ci,Vk as cn,_r as co,uE as cr,Hj as ct,xI as d,Jo as da,Wf as di,Yk as dn,yr as do,GT as dr,Nj as dt,I as ea,ip as ei,Ok as en,Er as eo,$D as er,N as es,UM as et,bI as f,qo as fa,If as fi,yA as fn,br as fo,KC as fr,jj as ft,hI as g,Ko as ga,Pl as gi,xk as gn,or as go,FC as gr,DA as gt,gI as h,os as ha,Kl as hi,xA as hn,rr as ho,LC as hr,EA as ht,IL as i,ps as ia,Lf as ii,tA as in,Ar as io,MD as ir,Gj as it,yF as j,bi as ja,B as ji,mO as jn,Qt as jo,rC as jr,IA as jt,pF as k,Qr as ka,Ds as ki,RO as kn,qt as ko,SC as kr,LA as kt,OI as l,ko as la,Ef as li,SA as ln,vr as lo,lE as lr,Vj as lt,_I as m,Bo as ma,Gl as mi,fA as mn,tr as mo,TC as mr,CA as mt,HL as n,ds as na,Zf as ni,uA as nn,Br as no,PD as nr,SM as nt,BL as o,Uo as oa,kf as oi,oA as on,Dr as oo,LE as or,Kj as ot,vI as p,bo as pa,wf as pi,pA as pn,Un as po,DC as pr,wA as pt,mP as q,zr as qa,Fo as qi,eO as qn,lt as qo,dp as qr,zk as qt,zL as r,Lo as ra,Rf as ri,Zk as rn,Ir as ro,FD as rr,qj as rt,OL as s,ss as sa,Of as si,dA as sn,Or as so,zE as sr,Bj as st,FL as t,$o as ta,tp as ti,mA as tn,xr as to,nO as tr,Re as ts,PM as tt,TI as u,ls as ua,zf as ui,bA as un,F as uo,zT as ur,Uj as ut,dI as v,Ca as va,Ll as vi,Sk as vn,ar as vo,bC as vr,lj as vt,FF as w,pa as wa,ms as wi,VO as wn,Lt as wo,PC as wr,Tj as wt,oI as x,Va as xa,K as xi,wk as xn,pn as xo,NC as xr,ij as xt,uI as y,Sa as ya,Fc as yi,_k as yn,fr as yo,kC as yr,YA as yt,VP as z,Ai as za,to as zi,xO as zn,Rt as zo,Dp as zr,vj as zt};