@luminocity/lemonate-engine 26.3.3 → 26.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lemonate.es.js +2 -2
- package/dist/lemonate.js +3 -3
- package/dist/lemonate.min.js +3 -3
- package/dist/lemonate.umd.js +2 -2
- package/dist/player.zip +0 -0
- package/package.json +2 -2
package/dist/lemonate.js
CHANGED
|
@@ -6580,7 +6580,7 @@ var Lemonate = (function (exports) {
|
|
|
6580
6580
|
var jszip_minExports = requireJszip_min();
|
|
6581
6581
|
var s$2 = /*@__PURE__*/getDefaultExportFromCjs$1(jszip_minExports);
|
|
6582
6582
|
|
|
6583
|
-
let o$2 = class o{func;owner;constructor(e,t){this.func=e,this.owner=t;}};let l$2 = class l{_debugMode=false;_listeners=new Map;_onceListeners=new Map;_catchAllListeners=[];_capturedEvents=new Map;_capturedAccumulatedDuration=0;constructor(){}setDebugMode(e){this._debugMode&&!e&&(console.log("Captured events: ",this._capturedEvents),console.log(`Total duration: ${this._capturedAccumulatedDuration}ms`)),this._debugMode=e,this._capturedEvents=new Map,this._capturedAccumulatedDuration=0;}$clear(){this._listeners.clear(),this._onceListeners.clear();}clearCatchAllListeners(){this._catchAllListeners=[];}listenerCount(e){let t=0;return t+=this._listeners.get(e)?.length||0,t+=this._onceListeners.get(e)?.length||0,t}$hasListener(e){return this.listenerCount(e)>0}$catchAll(e,t){this._catchAllListeners.push(new o$2(e,t));}$on(e,t,a){let i;this._listeners.has(e)?i=this._listeners.get(e):(i=[],this._listeners.set(e,i)),i.push(new o$2(t,a));}$once(e,t,a){let i;this._onceListeners.has(e)?i=this._onceListeners.get(e):(i=[],this._onceListeners.set(e,i)),i.push(new o$2(t,a));}$off(e,t,a){let i=0;if(this._listeners.has(e)){i+=this._listeners.get(e).removeByFilterFunc((e=>e.func===t&&e.owner===a));}if(this._onceListeners.has(e)){i+=this._onceListeners.get(e).removeByFilterFunc((e=>e.func===t&&e.owner===a));}return i}$offByOwner(e,t){let a=0;if(this._listeners.has(e)){a+=this._listeners.get(e).removeByFilterFunc((e=>e.owner===t));}if(this._onceListeners.has(e)){a+=this._onceListeners.get(e).removeByFilterFunc((e=>e.owner===t));}return a}$emitSync(e,...t){const a=[],i=performance.now();let n=0;try{for(const i of this._catchAllListeners.values())try{const r=i.func.call(i.owner,e,...t);r&&r.then&&a.push(r),n++;}catch(e){console.error(e);}if(this._listeners.has(e)){const i=this._listeners.get(e);for(const e of i)try{const i=e.func.call(e.owner,...t);i&&i.then&&a.push(i),n++;}catch(e){console.error(e);}}if(this._onceListeners.has(e)){const i=this._onceListeners.get(e);for(const e of i)try{const i=e.func.call(e.owner,...t);i&&i.then&&a.push(i),n++;}catch(e){console.error(e);}this._onceListeners.set(e,[]);}}catch(e){console.error(e);}if(this._debugMode&&"log"!==e){const t=performance.now(),r=Math.floor(t-i);let s=this._capturedEvents.get(e);s?(s.count++,s.duration+=r,s.promises+=a.length,s.sentTo+=n):(s={eventType:e,count:1,duration:r,promises:a.length,sentTo:n},this._capturedEvents.set(e,s)),r>3&&console.log(`Expensive event ${e}: ${r}ms`);}return a.length>0?Promise.all(a):null}$emit(e,...t){return new Promise((a=>{a(this.$emitSync(e,...t));}))}};const u$3=new l$2;let c$3 = class c{type;itemId;elementId;target;prop;value;oldValue;createdAt=Date.now();moveTargetArray;moveTargetArrayIndex;moveTargetElementId;start;length;position;elementsToDelete;field;fieldId;isLink;bundleIndex=0;_undoFunction;_redoFunction;constructor(e,t,a,i,n,r,s){this.type=e,this.itemId=t,this.elementId=a,this.target=i,this.prop=n,this.value=r,this.oldValue=s;}async undo(){this._undoFunction&&await this._undoFunction();}async redo(){this._redoFunction&&await this._redoFunction();}setUndoFunction(e){this._undoFunction=e;}setRedoFunction(e){this._redoFunction=e;}setMoveTarget(e,t,a){this.moveTargetArray=e,this.moveTargetArrayIndex=t,this.moveTargetElementId=a;}setRange(e,t){this.start=e,this.length=t;}setPosition(e){this.position=e;}setElementsToDelete(e){this.elementsToDelete=e;}setField(e){this.field=e;}setFieldId(e){this.fieldId=e;}setIsLink(e){this.isLink=e;}clone(){return Object.assign(new c,this)}isWithinMergeDeltaOf(e,t){return Math.abs(e.createdAt-this.createdAt)<=t}isMergeableWith(e,t){if(!this.isWithinMergeDeltaOf(e,t))return false;const a=e.type===this.type&&e.itemId===this.itemId&&e.elementId===this.elementId&&e.target===this.target&&e.prop===this.prop,i=void 0!==e.value&&void 0!==e.oldValue&&void 0===e.start&&void 0===e.length&&void 0===e.position&&void 0===e.elementsToDelete;return a&&i}merge(e,t){if(!this.isMergeableWith(e,t))return null;let a=this.clone();return a.value=e.value,a.createdAt=e.createdAt,a._redoFunction=e._redoFunction,a}};const d$1=new e$2({dictionary:"hex",length:12});let p$1=(new Date).valueOf();var h$2={createItemOrBlockID:function(){return d$1.rnd()},createFieldID:function(){return (p$1++).toString()},createGUID:function(){return d$1.rnd()},createGeneratedItemId:function(){return "gen_"+this.createGUID()},toUserFriendlyName:function(e){return e.replace(/_./g,(e=>e.charAt(1).toUpperCase())).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^(.)/,(e=>e.toUpperCase()))},assert:function(e,t){e||console.error(`ASSERTION FAILED: '${e}' is untrue: ${t}`);},matchItemIdAndObject:(e,t)=>!(!e||!t)&&(e._id===t||e===t._id),areValuesEqual(e,t,a=5){if(e===t)return true;if("number"==typeof e&&"number"==typeof t)return isNaN(e)&&isNaN(t);if(null==e||null==t||typeof e!=typeof t)return false;if("object"!=typeof e)return false;if(Array.isArray(e)!==Array.isArray(t))return false;const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return false;for(let n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return false;if(a>0&&!this.areValuesEqual(e[n],t[n],a-1))return false}return true},startTimer(e){const t=Date.now();return e&&console.log(`[TIMER] - ${e}`),function(e){const a=Date.now()-t;e?console.log(`[TIMER] - ${e}: ${a}ms`):console.log(`[TIMER] - ${a}ms`);}},dataURItoBlob(e){const t=e.split(",")[0].split(":")[1].split(";")[0],a=atob(e.split(",")[1]),i=[];for(let e=0;e<a.length;e++)i.push(a.charCodeAt(e));return new Blob([new Uint8Array(i)],{type:t})},xmur3(e){let t=1779033703^e.length;for(let a=0;a<e.length;a++)t=Math.imul(t^e.charCodeAt(a),3432918353),t=t<<13|t>>>19;return ()=>(t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),t^=t>>>16,t>>>0)},mulberry32:e=>()=>{let t=e+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296},hslToRgb(e,t,a){const i=(1-Math.abs(2*a-1))*t,n=e/60,r=i*(1-Math.abs(n%2-1));let[s,o,l]=[0,0,0];[s,o,l]=n>=0&&n<1?[i,r,0]:n<2?[r,i,0]:n<3?[0,i,r]:n<4?[0,r,i]:n<5?[r,0,i]:[i,0,r];const u=a-i/2;return [Math.round(255*(s+u)),Math.round(255*(o+u)),Math.round(255*(l+u))]},rgbToHex:(e,t,a)=>"#"+[e,t,a].map((e=>e.toString(16).padStart(2,"0"))).join(""),colorFromString(e,t={}){const{minS:a=.72,maxS:i=.97,minL:n=.48,maxL:r=.62,return:s="hex"}=t,o=this.xmur3(e)(),l=this.mulberry32(o),u=Math.floor(360*l()),c=a+l()*(i-a),d=n+l()*(r-n);if("hsl"===s)return `hsl(${u} ${Math.round(100*c)}% ${Math.round(100*d)}%)`;const[p,h,f]=this.hslToRgb(u,c,d);return "rgb"===s?`rgb(${p}, ${h}, ${f})`:this.rgbToHex(p,h,f)},async downloadFile(e,a){if(e.startsWith("blob:")){const t=await fetch(e),a=await t.blob();return {data:a,mimeType:a.type}}return axios.get(e,{responseType:"blob",onDownloadProgress:e=>{if(a&&e.total){const t=Math.round(100*e.loaded/e.total);a(t,e.total,e.loaded);}}})}};const f$1=new Set(["dependantFields","conditionFields","dependenciesInitialized","_hidden","_updateConditions"]),m=new Set(["__proto__","__ob__","isSelected","isDirty","options","_hidden","_updateConditions","dependantFields","conditionFields","separatorFields","dependenciesInitialized","order","inject","type","datatype","minValue","maxValue","id","linkableTypes"]),y$4=new Set(["isSelected","isDirty","_hidden","_updateConditions","options","dependantFields","conditionFields","separatorFields","dependenciesInitialized","id","linkableTypes"]);let g$1 = class g{suppressDirty=false;undoManager;_promises=[];_capturePromises=false;_profiledEvents=[];_profiling=false;_profilerStartTime=0;_profiledCount=0;static _instance;static get instance(){return this._instance||(this._instance=new this)}constructor(){}suppressDirtyFlag(e){this.suppressDirty=e;}setUndoManager(e){this.undoManager=e;}isUndoManagerActive(){return this.undoManager?.getEnabled()}_postUndoManagerEvent(e){this.undoManager&&(y$4.has(e.prop)||this.undoManager.event(e));}setItemDirty(e,t,a,i){this.suppressDirty||e.isDirty||a===i||m.has(t)||e.markDirty();}capturePromise(e){try{return this._capturePromises=!0,e(),Promise.all(this._promises)}finally{this._capturePromises=false,this._promises=[];}}startProfiling(){this._profiling=true,this._profiledEvents=[],this._profiledCount=0,this._profilerStartTime=performance.now(),u$3.setDebugMode(true);}endProfiling(){const e=performance.now()-this._profilerStartTime;u$3.setDebugMode(false),console.log("Profiled events: ",this._profiledEvents),console.log(`Profiling took ${e}ms`);}_addPromise(e){this._capturePromises&&this._promises.push(e);}_proxyObject(e,t,a,i){const n=this;if(!e)throw "_proxyObject(): Object is not defined. Cannot create proxy!";if(!a)throw "_proxyObject(): Item is not defined. Cannot create proxy!";if(!i)throw "_proxyObject(): Options is not defined. Cannot create proxy!";return new Proxy(e,{set:function(r,s,o){if(f$1.has(s))return Reflect.set(r,s,o);const l=performance.now();let d=n.isUndoManagerActive();const p=Reflect.get(r,s);if(h$2.areValuesEqual(p,o))return true;let m=Reflect.set(r,s,o);function y(n,o){const l=new c$3(i.proxyEventTypeName,a._id,t?t.id:null,r,s,n,o);return i.isField&&(l.setField(e.name),l.setFieldId(e.id)),void 0!==i.isLink&&l.setIsLink(i.isLink),l}i.changeDoesNotMakeItemDirty||(h$2.matchItemIdAndObject(p,o)?d=false:n.setItemDirty(a,s,p,o));const g=y(o,p);d&&(g.setUndoFunction((()=>{Reflect.set(r,s,g.oldValue);const e=y(g.oldValue,g.value);u$3.$emitSync("proxy:valueChange",e),i.changeEventFunc(e);})),g.setRedoFunction((()=>{Reflect.set(r,s,g.value);const e=y(g.value,g.oldValue);u$3.$emitSync("proxy:valueChange",e),i.changeEventFunc(e);}))),i.changeEventFunc(g),d&&n._postUndoManagerEvent(g),u$3.$emitSync("proxy:valueChange",g);const b=performance.now();return n._profiledCount++,n._profiledEvents.push({event:g,type:"object",duration:b-l}),m}})}_proxyArray(e,t,a,i){const n=this;if(!e)throw "_proxyArray(): Array is not defined. Cannot create proxy!";if(!a)throw "_proxyArray(): Item is not defined. Cannot create proxy!";if(!i)throw "_proxyArray(): Options is not defined. Cannot create proxy!";return new Proxy(e,{set(e,r,s){const o=performance.now(),l=Reflect.get(e,r);let d=Reflect.set(e,r,s);if("length"!==r&&"__proto__"!==r){const p=n.isUndoManagerActive();function h(n,s){const o=new c$3("arraySetValue",a._id,t?t.id:null,e,r,n,s);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o}i.changeDoesNotMakeItemDirty||n.setItemDirty(a,r,l,s);const f=h(s,l);p&&(f.setUndoFunction((()=>{const t=h(f.oldValue,f.value),a=parseInt(r);if(void 0===f.oldValue&&e.length-1===a){const i=e.pop();t.setElementsToDelete([i]),t.setRange(a,1);}else Reflect.set(e,r,f.oldValue);u$3.$emitSync("proxy:valueChange",t),i.deleteEventFunc(t);})),f.setRedoFunction((()=>{Reflect.set(e,r,f.value);const t=h(f.value,f.oldValue);u$3.$emitSync("proxy:valueChange",t),i.addEventFunc(t);}))),i.addEventFunc(f),p&&n._postUndoManagerEvent(f),u$3.$emitSync("proxy:valueChange",f);const m=performance.now();n._profiledCount++,n._profiledEvents.push({event:f,type:"set_array",duration:m-o});}return d},get(r,s){if("splice"===s){const e=Reflect.get(r,s);return function(...o){const l=o[0],d=o[1],p=[];for(let e=l;e<l+d;e++){const t=r[e];p.push(t);}function h(e,n,s){const o=new c$3("arraySpliceRemove",a._id,t?t.id:null,r);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o.setRange(e,n),o.setElementsToDelete(s),o}function f(e,n){const o=new c$3("arraySpliceAdd",a._id,t?t.id:null,r,s,n);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o.setPosition(e),o}if(e.apply(r,o),n.setItemDirty(a,s,true,false),d>0&&o.length<3){const e=n.isUndoManagerActive(),t=h(l,d,p);e&&(t.setUndoFunction((()=>{r.splice(l,0,...p);const e=f(l,p);u$3.$emitSync("proxy:valueChange",e),i.addEventFunc(e);})),t.setRedoFunction((()=>{r.splice(l,d);const e=h(l,d,p);u$3.$emitSync("proxy:valueChange",e),i.deleteEventFunc(e);}))),i.deleteEventFunc(t),e&&n._postUndoManagerEvent(t),u$3.$emitSync("proxy:valueChange",t);}else if(o.length>2){const e=o.slice(2),t=f(l,e);t.setPosition(l),t.setUndoFunction((()=>{r.splice(l,e.length);const t=h(l,e.length,e);u$3.$emitSync("proxy:valueChange",t),i.deleteEventFunc(t);})),t.setRedoFunction((()=>{r.splice(l,0,...e);const t=f(l,e);u$3.$emitSync("proxy:valueChange",t),i.addEventFunc(t);})),i.addEventFunc(t),n._postUndoManagerEvent(t),u$3.$emitSync("proxy:valueChange",t);}}}return "moveToArray"===s?function(e,o,l){const d=r,p=t,{array:h,element:f}=o.getTargetArrayAndElement();function m(e,t,a,i){i=void 0===i?a.length:i;const n=Reflect.get(e,"splice").apply(e,[t,1]);if(n.length>0){const e=n[0];return Reflect.get(a,"splice").apply(a,[i,0,e]),e}return null}const y=m(d,e,h,l);if(y){function g(e,i,n,r,s,o){const l=new c$3("arrayMoveToArray",a._id,t?t.id:null,e,void 0,o);return l.setRange(i,1),l.setMoveTarget(n,r,s?s.id:null),l}n.setItemDirty(a,s,true,false);const b=n.isUndoManagerActive(),v=g(d,e,o,l,f,y);b&&(v.setUndoFunction((()=>{const t=m(h,l,d,e),a=g(o,l,d,e,p,t);u$3.$emitSync("proxy:valueChange",a),i.moveEventFunc(a);})),v.setRedoFunction((()=>{const t=m(d,e,h,l),a=g(d,e,o,l,f,t);u$3.$emitSync("proxy:valueChange",a),i.moveEventFunc(a);}))),i.moveEventFunc(v),b&&n._postUndoManagerEvent(v),u$3.$emitSync("proxy:valueChange",v);}}:"getTargetArrayAndElement"===s?function(){return {array:e,element:t}}:("move"===s&&console.warn("'move' prop is not implemented in Proxifier"),Reflect.get(r,s))}})}proxyBlockArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockAdded",e));},deleteEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockDeleted",e));},moveEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockMoved",e));}})}proxyListArray(e,t,a){return this._proxyArray(e,null,a,{field:t,addEventFunc:function(e){u$3.$emit("itemRepo:listEntryAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:listEntryDeleted",e);}})}proxyScriptArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:function(e){u$3.$emit("itemRepo:scriptAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:scriptDeleted",e);}})}proxyBlock(e,t){return this._proxyObject(e,e,t,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"blockSetValue"})}proxyGraphBlock(e,t){return this._proxyObject(e,e,t,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:graphNodeChanged",e);},proxyEventTypeName:"blockSetValue"})}proxyGraphBlockArray(e,t){return this._proxyArray(e,t,t,{addEventFunc:function(e){u$3.$emit("itemRepo:graphNodeAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:graphNodeDeleted",e);}})}proxyConnection(e,t){return this._proxyObject(e,t,t,{changeEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionChanged",e);},proxyEventTypeName:"connectionSetValue"})}proxyConnectionArray(e,t){return this._proxyArray(e,e,t,{addEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionDeleted",e);}})}proxyItemField(e,t){const a="Link"===e.type;return this._proxyObject(e,null,t,{isLink:a,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),a&&u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"itemFieldSetValue"})}proxyGraphBlockField(e,t,a){return this._proxyObject(e,t,a,{isLink:"Link"===e.type,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:graphNodeFieldChanged",e);},proxyEventTypeName:"blockFieldSetValue"})}proxyBlockField(e,t,a){const i="Link"===e.type;return this._proxyObject(e,t,a,{isLink:i,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),i&&u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"blockFieldSetValue"})}proxyScriptItem(e,t,a){return this._proxyObject(e,t,a,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:scriptItemChanged",e);},proxyEventTypeName:"scriptItemSetValue"})}proxyScriptFieldsArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldDeleted",e);},changeDoesNotMakeItemDirty:true})}proxyScriptField(e,t,a){return this._proxyObject(e,t,a,{isLink:false,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldChanged",e);},proxyEventTypeName:"itemScriptFieldSetValue",changeDoesNotMakeItemDirty:false})}proxyCustomFieldsArray(e,t){return this._proxyArray(e,null,t,{addEventFunc:function(e){u$3.$emit("itemRepo:customFieldAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:customFieldDeleted",e);},changeDoesNotMakeItemDirty:true})}proxyCustomField(e,t){return this._proxyObject(e,null,t,{isLink:false,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:customFieldChanged",e);},proxyEventTypeName:"itemCustomFieldSetValue",changeDoesNotMakeItemDirty:false})}};let b$1 = class b{level;name;times;durations=[];childrenMap=new Map;children=[];parent;constructor(e,t,a,i){this.name=e,this.level=t,this.times=[a],this.parent=i;}};function v$1(e,t){return w.instance.block(e,t)}async function _$1(e,t){return w.instance.asyncBlock(e,t)}class w{startTime=0;endTime=0;startIteration=0;currentLevel=0;root=new b$1("root",0,0,void 0);currentEntry;active=false;static _instance;static get instance(){return this._instance||(this._instance=new this)}constructor(){this.currentEntry=this.root;}start(){this.startTime=performance.now(),this.startIteration=this.startTime,this.root=new b$1("root",0,0,void 0),this.currentEntry=this.root,this.currentLevel=0,this.active=true;}end(e=false){this.active=false,this.endTime=performance.now()-this.startTime,this.root.durations.push(this.endTime-this.root.times[0]),e&&this.printResults();}_iterate(e,t){e(t=t||this.root);for(const a of t.children)this._iterate(e,a);}getResults(){const e=[];function t(e){return Math.round(1e3*e)/1e3}function a(e){return e.reduce(((e,t)=>e+t),0)}return this._iterate((function(i){const n=t(a(i.times)/i.times.length),r=t(a(i.durations)/i.durations.length),s=t(a(i.durations)),o=t(s-i.children.reduce(((e,t)=>e+a(t.durations)),0));e.push({name:"".padStart(2*i.level," .")+i.name,executions:i.times.length,avgTimeStartMs:n,avgTimeEndMs:t(n+r),avgDurationMs:r,totalDurationMs:s,selfDurationMs:o});})),e}printResults(){console.table(this.getResults(),["name","executions","avgTimeStartMs","avgTimeEndMs","avgDurationMs","totalDurationMs","selfDurationMs"]);}newIteration(){this.startIteration=performance.now(),this.currentLevel=0;}async asyncBlock(e,t){if(!this.active)return t();let a;try{return a=this.beginBlock(e),await t()}finally{this.endBlock(a);}}block(e,t){if(!this.active)return t();let a;try{return a=this.beginBlock(e),t()}finally{this.endBlock(a);}}beginBlock(e){if(!this.active)return;this.currentLevel++;const t=performance.now()-this.startIteration;let a=this.currentEntry.childrenMap.get(e);return a?a.times.push(t):(a=new b$1(e,this.currentLevel,t,this.currentEntry),this.currentEntry.children.push(a),this.currentEntry.childrenMap.set(e,a)),this.currentEntry=a,a}endBlock(e){if(!e)return;const t=performance.now()-this.startIteration-e.times[e.times.length-1];e.durations.push(t),this.currentEntry=e.parent,this.currentLevel--;}}let A$7 = class A extends Error{constructor(e,t){super(e),t&&(this.name=t);}toString(){return this.name?`${this.name}: ${this.message}`:this.message}};let k$1 = class k extends A$7{constructor(e){super(e,"InvalidArgumentException");}};let S$2 = class S extends A$7{constructor(e){super(e,"InvalidStateException");}};let N$1 = class N extends A$7{constructor(e){super(e,"RuntimeException");}};let T$1 = class T extends A$7{constructor(e){super(e,"LoaderException");}};let M$1 = class M extends A$7{constructor(e){super(e,"QuotaExceededException");}};let x$4 = class x extends A$7{constructor(e){super(e,"AccessDeniedException");}};let V=class{_id;name;folder;folderPath;links;attributes;userAttributes;filename;createdAt;updatedAt;version;filesize;hash;mimeType;type;packageType;createdBy;updatedBy;acl;visibility;properties;allowConversation;conversation;tags;contributors;description;shortDescription;userAttributeTemplate;categories;attachments;license;quotaUser;quotaGroup;itemSize;totalSize;flags;perceptiveHash;unpackagedSize;location;itemFlag;constructor(e){if(this._id=e._id,this.name=e.name,this.folder=e.folder,this.folderPath=e.folderPath,this.links=[],Array.isArray(e.links))for(const t of e.links)this.links.push({to:t.to,usage:t.usage});this.attributes=JSON.parse(JSON.stringify(e.attributes||{})),this.userAttributes=JSON.parse(JSON.stringify(e.userAttributes||{})),this.filename=e.filename,this.createdAt=e.createdAt,this.updatedAt=e.updatedAt,this.version={major:e.version?.major||0,minor:e.version?.minor||0,revision:e.version?.revision||1},this.filesize=e.filesize,this.hash=e.hash,this.mimeType=e.mimeType,this.type=e.type,this.packageType=e.packageType,this.createdBy=e.createdBy,this.updatedBy=e.updatedBy,this.acl=JSON.parse(JSON.stringify(e.acl||[])),this.visibility=e.visibility,this.properties=JSON.parse(JSON.stringify(e.properties||{})),this.allowConversation=e.allowConversation,this.conversation=e.conversation,this.tags=JSON.parse(JSON.stringify(e.tags||[])),this.contributors=JSON.parse(JSON.stringify(e.contributors||[])),this.description=e.description,this.shortDescription=e.shortDescription,this.userAttributeTemplate=e.userAttributeTemplate,this.categories=e.categories,this.attachments=JSON.parse(JSON.stringify(e.attachments||[])),this.license=e.license,this.quotaUser=e.quotaUser,this.quotaGroup=e.quotaGroup,this.itemSize=e.itemSize,this.totalSize=e.totalSize,this.flags=JSON.parse(JSON.stringify(e.flags||[])),this.perceptiveHash=e.perceptiveHash,this.unpackagedSize=e.unpackagedSize,this.location=e.location,this.itemFlag=JSON.parse(JSON.stringify(e.itemFlag||{}));}};let C$2 = class C extends V{links;thumbnails;fieldSets;fields;userFields;isAggregatedItem=true;constructor(e){if(super(e),this.links=[],Array.isArray(e.links))for(const t of e.links)this.links.push({to:t.to,usage:t.usage,stopRecursion:t.stopRecursion});this.thumbnails=JSON.parse(JSON.stringify(e.thumbnails||[])),this.fieldSets=JSON.parse(JSON.stringify(e.fieldSets||[])),this.fields=JSON.parse(JSON.stringify(e.fields||[])),this.userFields=JSON.parse(JSON.stringify(e.userFields||[]));}};var I$1=[{_id:{$oid:"5e6a1ace89707feef5738292"},contentTypes:["model/splat"],fieldSets:[],fields:[],name:"Gaussian Splats",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ace89707feef3748569"},contentTypes:[],fieldSets:[],fields:[{label:"Scenes",type:"Separator"},{elementName:"Scene",fields:[{linkableTypes:["Scene"],type:"Link",usageAs:"Scene",mandatory:true},{datatype:"Boolean",defaultValue:true,displayName:"Load",name:"Load",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Active",if:{Load:true},name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Primary",name:"Primary",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Exclude in packages",name:"ExcludeInPackages",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"}],name:"Scenes",type:"List"},{label:"Variable Sets",type:"Separator",collapsed:true},{displayName:"Variable sets",elementName:"Variable set",fields:[{displayName:"Variable set",linkableTypes:["Variable Set"],type:"Link",usageAs:"VariableSet",mandatory:true},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"}],name:"VariableSets",type:"List"},{label:"Graphics",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Not defined",displayName:"Aspect ratio",info:"This determines the project's aspect ratio. If not defined, the game will run in the default aspect depending on platform and browser size",name:"AspectRatio",options:["Not defined","Standard (4:3)","Widescreen (16:9)","Ultrawide (21:9)","Custom"],type:"Attribute"},{datatype:"Float",defaultValue:1.3,minValue:.1,maxValue:10,displayName:"Custom Aspect",if:{AspectRatio:"Custom"},name:"CustomAspect",type:"Attribute"},{label:"Physics",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enabled",name:"PhysicsEnabled",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:-9.81,z:0},displayName:"Gravity",if:{PhysicsEnabled:true},name:"Gravity",type:"Attribute"},{datatype:"LayerMatrix",defaultValue:[[0]],displayName:"Collision matrix",if:{PhysicsEnabled:true},info:"This controls which physics object interact with which others depending on their layers",name:"CollisionMatrix",type:"Attribute"},{datatype:"StringList",defaultValue:["Default","Terrain","TransparentFX","Water"],displayName:"Layer names",fixedLength:true,info:"Names of the layers to use with all scenegraph nodes",name:"LayerNames",type:"Attribute"},{label:"Resources",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"After loading everything",displayName:"Start execution",info:"This controls when the engine will start execution of the project in the player",name:"StartExecution",options:["Right away","After loading minimum LOD","After loading everything"],type:"Attribute"},{label:"Controls",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Automatic pointer lock",name:"AutomaticPointerLock",type:"Attribute",info:"Enabling this will cause the mouse pointer to be locked until Escape is pressed"},{label:"Canvas Fonts",type:"Separator",collapsed:true},{displayName:"Canvas fonts",elementName:"Font",fields:[{displayName:"Font",linkableTypes:["Font"],type:"Link",usageAs:"Font",mandatory:true}],name:"CanvasFonts",type:"List"}],name:"Project",recursiveLoadStopsHere:true,updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1ace24a07f56f3742569"},contentTypes:[],fieldSets:[],fields:[{elementName:"Variable",fields:[{datatype:"String",defaultValue:"Name",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Enum",defaultValue:"Integer",displayName:"Type",name:"Type",options:["Integer","Float","String","Boolean"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Value",if:{Type:"Boolean"},name:"BooleanValue",type:"Attribute"},{datatype:"Integer",defaultValue:0,displayName:"Value",if:{Type:"Integer"},name:"IntegerValue",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Value",if:{Type:"Float"},name:"FloatValue",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Value",if:{Type:"String"},name:"StringValue",type:"Attribute"}],name:"Variables",type:"List"}],name:"Variable Set",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ace89707feef9173386"},contentTypes:["audio/mpeg"],fieldSets:[],fields:[{datatype:"Float",defaultValue:1,displayName:"Volume",maxValue:1,minValue:0,name:"Volume",type:"Attribute",widget:"Slider"}],name:"Audio",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1acf89707feef917338f"},contentTypes:["*"],fieldSets:[],fields:[],name:"Binary",creatableEmpty:false},{_id:{$oid:"5e6a1acf89707feef917337f"},contentTypes:["application/vnd.lumino.package"],fieldSets:[],fields:[],name:"Package",creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173391"},contentTypes:["image/vnd.radiance"],fieldSets:[],fields:[],name:"HDR Image",creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173392"},contentTypes:["image/png","image/jpeg","image/avif","image/heif"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:"Linear",displayName:"Encoding",name:"Encoding",options:["Linear","sRGB"],type:"Attribute"}],name:"Image",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173393"},contentTypes:[""],fieldSets:[],fields:[{label:"Type",type:"Separator"},{datatype:"Enum",defaultValue:"Physical",displayName:"Material type",name:"MaterialType",options:["Physical","Shader","Point","Basic","Normal","Toon","Matcap","Lambert","Phong"],type:"Attribute"},{label:"Matcap material options",type:"Separator",if:{MaterialType:"Matcap"}},{displayName:"Matcap map",linkableTypes:["Image"],type:"Link",usageAs:"Matcap",if:{MaterialType:"Matcap"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Toon material options",type:"Separator",if:{MaterialType:"Toon"}},{displayName:"Gradient map",linkableTypes:["Image"],if:{MaterialType:"Toon"},type:"Link",usageAs:"Gradient"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Nearest",displayName:"Mag filter",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientMagFilter",options:["Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Nearest",displayName:"Min Filter",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientMinFilter",options:["Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Basic material options",type:"Separator",if:{MaterialType:"Basic"}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",name:"EmissionColor",type:"Attribute",if:{MaterialType:"Basic"}},{label:"Custom shaders",type:"Separator",if:{MaterialType:"Shader"}},{displayName:"Vertex shader",linkableTypes:["Vertex Shader"],type:"Link",usageAs:"VertexShader",if:{MaterialType:"Shader"}},{displayName:"Pixel shader",linkableTypes:["Pixel Shader"],type:"Link",usageAs:"PixelShader",if:{MaterialType:"Shader"}},{label:"Point rendering",type:"Separator",if:{MaterialType:"Point"}},{datatype:"Float",defaultValue:1,displayName:"Size",if:{MaterialType:"Point"},minValue:0,name:"PointSize",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Size attenuation",if:{MaterialType:"Point"},name:"PointSizeAttenuation",type:"Attribute"},{label:"Attenuation",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",info:"The color that white light turns into due to absorption when reaching the attenuation distance.",name:"AttenuationColor",type:"Attribute",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1e3,displayName:"Distance",info:"Density of the medium given as the average distance that light travels in the medium before interacting with a particle. The value is given in world space units, and must be greater than zero.",minValue:1e-5,name:"AttenuationDistance",type:"Attribute",if:{MaterialType:"Physical"}},{label:"Diffuse",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",name:"DiffuseColor",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Albedo map",linkableTypes:["Image","Composition","Video"],type:"Link",usageAs:"Albedo",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Vertex Colors",name:"VertexColors",type:"Attribute"},{label:"Transparency",type:"Separator"},{datatype:"Float",defaultValue:0,displayName:"Alpha test",maxValue:1,minValue:0,name:"AlphaTest",type:"Attribute",widget:"Slider"},{datatype:"Boolean",defaultValue:false,displayName:"Transparent",name:"Transparent",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Opacity",if:{Transparent:true},maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{displayName:"Alpha map",linkableTypes:["Image"],type:"Link",usageAs:"Alpha",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Emission",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Color",name:"EmissiveColor",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",maxValue:10,minValue:0,name:"EmissiveIntensity",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Emissive map",linkableTypes:["Image"],type:"Link",usageAs:"Emissive",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Sheen",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Sheen",maxValue:1,minValue:0,name:"Sheen",type:"Attribute",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Sheen roughness",maxValue:1,minValue:0,name:"SheenRoughness",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Sheen roughness map",linkableTypes:["Image"],type:"Link",usageAs:"SheenRoughnessMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Sheen color",name:"SheenColor",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Sheen color map",linkableTypes:["Image"],type:"Link",usageAs:"SheenColorMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Normal",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Normal map",linkableTypes:["Image"],type:"Link",usageAs:"Normal",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"Scale",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},maxValue:10,minValue:0,name:"NormalScale2d",type:"Attribute"},{datatype:"Enum",defaultValue:"TangentSpace",displayName:"Type",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalType",options:["TangentSpace","ObjectSpace"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Roughness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1,displayName:"Roughness Intensity",maxValue:1,minValue:0,name:"RoughnessIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Roughness map",linkableTypes:["Image"],type:"Link",usageAs:"Roughness",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{Roughness:{$isset:true}},name:"RoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{Roughness:{$isset:true}},name:"RoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{Roughness:{$isset:true}},name:"RoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{Roughness:{$isset:true}},name:"RoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Roughness:{$isset:true}},name:"RoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Metalness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1,displayName:"Metalness Intensity",maxValue:1,minValue:0,name:"MetalnessIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Metalness map",linkableTypes:["Image"],type:"Link",usageAs:"Metalness",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{Metalness:{$isset:true}},name:"MetalnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{Metalness:{$isset:true}},name:"MetalnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{Metalness:{$isset:true}},name:"MetalnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{Metalness:{$isset:true}},name:"MetalnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Metalness:{$isset:true}},name:"MetalnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Specular",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"}]}},{datatype:"Float",defaultValue:1,displayName:"Specular intensity",maxValue:1,minValue:0,name:"SpecularIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Specular intensity map",linkableTypes:["Image"],type:"Link",usageAs:"SpecularIntensityMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},if:{MaterialType:"Physical"},displayName:"Specular color",name:"SpecularColor",type:"Attribute"},{displayName:"Specular color map",linkableTypes:["Image"],if:{MaterialType:"Physical"},type:"Link",usageAs:"SpecularColorMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Ambient occlusion",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Ambient occlusion map",linkableTypes:["Image"],type:"Link",usageAs:"AmbientOcclusion",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},maxValue:10,minValue:0,name:"AmbientOcclusionIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Clearcoat",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Intensity",maxValue:1,minValue:0,name:"ClearcoatLevel",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Clearcoat map",linkableTypes:["Image"],type:"Link",usageAs:"Clearcoat",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{displayName:"Normal map",linkableTypes:["Image"],type:"Link",usageAs:"ClearcoatNormalMap",if:{MaterialType:"Physical"}},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"Normal scale",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},maxValue:10,minValue:0,name:"ClearcoatNormalScale2d",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Normal H-wrapping",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Normal V-wrapping",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Normal mag filter",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Normal min Filter",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Normal Anisotropy",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Roughness intensity",maxValue:1,minValue:0,name:"ClearcoatRoughness",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Roughness map",linkableTypes:["Image"],type:"Link",usageAs:"ClearcoatRoughnessMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Roughness H-wrapping",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Roughness V-wrapping",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Roughness mag filter",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Roughness min Filter",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Roughness Anisotropy",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Reflections and Refractions",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:.98,displayName:"Refraction ratio",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]},minValue:0,maxValue:1,name:"RefractionRatio",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Reflectivity",maxValue:1,minValue:0,name:"Reflectivity",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1.5,displayName:"Index of refraction",maxValue:2.333,minValue:1,name:"IndexOfRefraction",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{label:"Environment",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Environment map",linkableTypes:["HDR Image"],type:"Link",usageAs:"Environment",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"}],Environment:{$isset:true}},maxValue:10,minValue:0,name:"EnvironmentIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Multiply",info:"How to combine the result of the surface's color with the environment map, if any. If mix is chosen, the .reflectivity is used to blend between the two colors.",displayName:"Surface combination",name:"SurfaceEnvironmentCombination",options:["Multiply","Mix","Add"],type:"Attribute",if:{$or:[{MaterialType:"Lambert"},{MaterialType:"Basic"},{MaterialType:"Phong"}]}},{label:"Thickness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Thickness",minValue:0,name:"Thickness",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Thickness map",linkableTypes:["Image"],type:"Link",usageAs:"ThicknessMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Displacement",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Displacement map",linkableTypes:["Image"],type:"Link",usageAs:"Displacement",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:.1,displayName:"Scale",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},maxValue:10,minValue:0,name:"DisplacementScale",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Bias",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementBias",type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Lightmaps",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Light map",linkableTypes:["Image"],type:"Link",usageAs:"LightMap",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},maxValue:100,minValue:0,name:"LightMapIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Specular map options",type:"Separator",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:30,displayName:"Shininess",minValue:0,name:"Shininess",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},if:{MaterialType:"Phong"},displayName:"Specular color",name:"SpecularColor",type:"Attribute"},{displayName:"Specular map",linkableTypes:["Image"],if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]},type:"Link",usageAs:"SpecularMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Transmission",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Intensity",maxValue:1,minValue:0,name:"Transmission",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Transmission map",linkableTypes:["Image"],type:"Link",usageAs:"TransmissionMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Blending",type:"Separator"},{datatype:"Enum",defaultValue:"Normal",displayName:"Mode",name:"Blending",options:["None","Normal","Additive","Subtractive","Multiply","Custom"],type:"Attribute"},{datatype:"Enum",defaultValue:"Source alpha",displayName:"Source",name:"BlendSrc",options:["Zero","One","Source color","One minus source color","Source alpha","One minus source alpha","Destination alpha","One minus destination alpha","Destination color","One minus destination color","Source alpha saturate"],type:"Attribute",if:{Blending:"Custom"}},{datatype:"Enum",defaultValue:"One minus source alpha",displayName:"Destination",name:"BlendDest",options:["Zero","One","Source color","One minus source color","Source alpha","One minus source alpha","Destination alpha","One minus destination alpha","Destination color","One minus destination color"],type:"Attribute",if:{Blending:"Custom"}},{datatype:"Enum",defaultValue:"Add",displayName:"Equation",name:"BlendEquation",options:["Add","Subtract","Reverse subtract","Min","Max"],type:"Attribute",if:{Blending:"Custom"}},{label:"Depth test",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"DepthTest",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Write",if:{DepthTest:true},name:"DepthWrite",type:"Attribute"},{datatype:"Enum",defaultValue:"Less/equal",displayName:"Mode",if:{DepthTest:true},name:"DepthMode",options:["Never","Always","Less","Less/equal","Greater/equal","Greater","Not equal"],type:"Attribute"},{label:"Culling",type:"Separator"},{datatype:"Enum",defaultValue:"Back",displayName:"Mode",name:"Culling",options:["Front","Back","Off"],type:"Attribute"},{label:"Flat shading",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Boolean",defaultValue:false,displayName:"Active",name:"FlatShading",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{label:"Wireframe",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Shader"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Boolean",defaultValue:false,displayName:"Wireframe",name:"Wireframe",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Shader"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}}],name:"Material",updateRequiresThumbRefresh:true,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707feef9173394"},contentTypes:["model/obj","model/gltf-binary","model/vnd.usdz+zip","model/draco","model/ply","model/fbx"],fieldSets:[],fields:[{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{doesNotAffectThumbnail:true,linkableTypes:["Mesh"],loadingManager:"ignore",preload:false,type:"Link",usageAs:"USDZ"},{doesNotAffectThumbnail:true,linkableTypes:["Mesh"],loadingManager:"ignore",preload:false,type:"Link",usageAs:"GLB"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},name:"Pivot",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"DefaultTransform",displayName:"Default transform",type:"Attribute"}],name:"Mesh",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173396"},contentTypes:[""],fields:[{label:"Camera & Composition",type:"Separator"},{datatype:"Enum",defaultValue:"Automatic user controllable camera",displayName:"Camera mode",info:"Camera to render during playback. The main camera is the one with the 'mainCamera' Tag or if only one camera exists, that is the one. Composer setting will render whatever the composition defines.",name:"CameraMode",options:["Automatic user controllable camera","Main camera","Composer"],type:"Attribute"},{linkableTypes:["Composition"],type:"Link",if:{CameraMode:"Composer"},usageAs:"Composition",mandatory:true},{label:"Environment & Background",type:"Separator"},{datatype:"Enum",defaultValue:"None",displayName:"Background mode",name:"BackgroundMode",options:["None","Color","Image","Environment map","Shader"],type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Background blurriness",if:{BackgroundMode:"Environment map"},maxValue:1,minValue:0,name:"BackgroundBlurriness",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:1,displayName:"Background intensity",if:{$or:[{BackgroundMode:"Image"},{BackgroundMode:"Environment map"}]},maxValue:10,minValue:0,name:"BackgroundIntensity",type:"Attribute",widget:"Slider"},{displayName:"Background shader",if:{BackgroundMode:"Shader"},linkableTypes:["Background Shader"],type:"Link",usageAs:"BackgroundShader",mandatory:true},{displayName:"Background image",if:{BackgroundMode:"Image"},linkableTypes:["Image"],type:"Link",usageAs:"Background",mandatory:true},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Background color",if:{BackgroundMode:"Color"},name:"BackgroundColor",type:"Attribute"},{displayName:"Environment map",linkableTypes:["HDR Image"],type:"Link",usageAs:"Environment"},{datatype:"Float",defaultValue:1,displayName:"Environment intensity",maxValue:10,minValue:0,name:"EnvironmentIntensity",type:"Attribute",widget:"Slider"},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Clear color",name:"ClearColor",type:"Attribute"},{label:"Rendering",type:"Separator",collapsed:false},{datatype:"Enum",defaultValue:"PCF Shadow Map",displayName:"Shadow type",name:"ShadowType",options:["Basic Shadow Map","PCF Shadow Map","VSM Shadow Map"],type:"Attribute"}],name:"Scene",updateRequiresThumbRefresh:true,inherits:"Prefab",creatableEmpty:true},{_id:{$oid:"5e6a1ad189707fcef4252336"},contentTypes:[""],fieldSets:[{fields:[{label:"3D Object",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"Indicates if the 3D object is currently active or inactive. When set to true, the object is active.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"Specifies the name of the 3D object. This is used for identification and reference in the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Describes the object's transformation attributes including its position, rotation, and scale in the 3D space.",name:"Transform",type:"Attribute"},{type:"Label",text:"Changing scale in transforms for physics enabled objects is not recommended. Not all objects fully support it. Keep it at least uniform!",labelType:"warning",if:{"PhysicsEnabled?":true,$or:[{"Transform.scale.x":{$not:1}},{"Transform.scale.y":{$not:1}},{"Transform.scale.z":{$not:1}}]}},{datatype:"Layers",defaultValue:[0],info:"Defines the layers that the 3D object is part of. Layers are used for managing object interactions and visibility in the scene.",name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"Lists tags associated with the 3D object. Tags are useful for categorizing and searching objects in the scene.",name:"Tags",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Receive shadow",info:"Determines whether the object can receive shadows from other objects. Set to true if the object should display shadows cast upon it.",name:"ReceiveShadow",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Cast shadow",info:"Controls whether the object casts shadows in the presence of light sources. Set to true to enable shadow casting from this object.",name:"CastShadow",type:"Attribute"}],name:"3dObjectDefault"},{fields:[{label:"3D Object",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"A Boolean attribute indicating whether the 3D object is active or not. When set to true, the object is considered active in the scene.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"A string attribute representing the name of the 3D object. It is used to identify and reference the object within the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Specifies the transformation properties of the 3D object, including its position, rotation, and scale in the scene.",name:"Transform",type:"Attribute"},{datatype:"Layers",defaultValue:[0],info:"Determines the layers the 3D object belongs to. Layers are used to organize objects in the scene for various purposes like rendering and interaction.",name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"A list of tags associated with the 3D object. Tags are used for categorizing and identifying objects for scripting and scene management.",name:"Tags",type:"Attribute"}],name:"3dObjectNoShadows"},{fields:[{label:"Physics",type:"Separator"},{datatype:"Boolean",defaultValue:false,displayName:"Physics enabled",info:"A Boolean attribute that determines whether physics properties are applied to the object. Disabling it turns off physics calculations.",name:"PhysicsEnabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Rigid body",displayName:"Body type",if:{PhysicsEnabled:true},name:"BodyType",options:["Rigid body","Soft body","Ghost object"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Separate subobjects",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"When adding all subobjects of the mesh separately, they will all act individually. We lose however also the possibility to control and watch them as a single object. The configured mass will be distributed among all subobjects",name:"SeparateSubobjects",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Mass",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Specifies the mass of the object as a float value. The mass must be a non-negative value.",minValue:0,name:"Mass",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Pressure",if:{BodyType:"Soft body",PhysicsEnabled:true},info:"Specifies the pressure of the soft body as a float value. The pressure must be a non-negative value.",minValue:0,name:"Pressure",type:"Attribute"},{datatype:"Float",defaultValue:.01,displayName:"Damping",if:{BodyType:"Soft body",PhysicsEnabled:true},info:"Specifies the damping of the soft body.",minValue:0,name:"Damping",type:"Attribute"},{datatype:"Float",defaultValue:.04,displayName:"Margin",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Defines the margin of the object for physics calculations as a float value. The margin is a non-negative value.",minValue:0,name:"Margin",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Restitution",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Determines the restitution (bounciness) of the object. It's a float value affecting how the object bounces upon impact.",name:"Restitution",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Sets the friction coefficient of the object. It's a float value, affecting how the object slides against other surfaces.",name:"Friction",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Spinning friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Defines the spinning friction of the object as a float value, affecting the object's rotational resistance.",name:"SpinningFriction",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Rolling friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Specifies the rolling friction of the object. It's a float value that influences how the object rolls over surfaces.",name:"RollingFriction",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Linear damping",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the linear damping.",name:"LinearDamping",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Angular damping",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the angular damping.",name:"AngularDamping",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},displayName:"Linear factor",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"A Vector3d value that defines the linear factor of the object in terms of x, y, and z axes, controlling how the object moves linearly.",name:"LinearFactor",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Linear velocity",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Defines the object's linear velocity using a Vector3d value, representing the velocity along the x, y, and z axes.",name:"LinearVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},displayName:"Angular factor",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"A Vector3d attribute that specifies the angular factor of the object, influencing the object's rotation around each axis.",name:"AngularFactor",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Angular velocity",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the angular velocity of the object using a Vector3d value, affecting the object's rotational speed.",name:"AngularVelocity",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Is kinematic",if:{BodyType:"Rigid body",PhysicsEnabled:true,SeparateSubobjects:false},info:"A Boolean attribute that makes the object kinematic when true, meaning it will not be affected by physics but can still affect other objects.",name:"IsKinematic",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Disable deactivation",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,$or:[{IsKinematic:false},{BodyType:"Soft body"}]},info:"When set to true, object will be simulated in physics forever. Otherwise it will be deactivated when not moving anymore",name:"DisableDeactivation",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch collisions",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"When set to true, enables monitoring of collisions involving the object.",name:"WatchCollisions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Report contact points",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"If set to true, collision events will contain the exact contact points. Only enable if you really need it as it costs performance.",name:"ReportContactPoints",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Filter potential collisions",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"The physics engine might report collisions without contact points in cases where objects get close. Filter these out by setting this.",name:"FilterPotentialCollisions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch linear velocity",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"Enables the tracking of changes in the object's linear velocity when set to true.",name:"WatchLinearVelocity",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch angular velocity",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"Allows for the monitoring of changes in the object's angular velocity when enabled.",name:"WatchAngularVelocity",type:"Attribute"},{if:{BodyType:{$not:"Soft body"},PhysicsEnabled:true},label:"Collider",type:"Separator"},{datatype:"Enum",defaultValue:"Self",displayName:"Collider type",if:{BodyType:{$not:"Soft body"},PhysicsEnabled:true},name:"ColliderType",options:["Self","Bounding Box","Bounding Sphere","Bounding Cylinder","Capsule","Convex Hull","Custom Mesh"],type:"Attribute"},{datatype:"Enum",defaultValue:"Derive from mesh",displayName:"Capsule size",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",PhysicsEnabled:true},name:"CapsuleSize",options:["Derive from mesh","Manual"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Capsule height",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",CapsuleSize:"Manual",PhysicsEnabled:true},name:"CapsuleHeight",minValue:0,type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Capsule radius",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",CapsuleSize:"Manual",PhysicsEnabled:true},name:"CapsuleRadius",minValue:0,type:"Attribute"},{displayName:"Collider mesh",if:{BodyType:{$not:"Soft body"},ColliderType:"Custom Mesh",PhysicsEnabled:true},linkableTypes:["Mesh","Mesh Collection"],type:"Link",usageAs:"ColliderMesh",mandatory:true},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{BodyType:{$not:"Soft body"},ColliderType:"Custom Mesh",PhysicsEnabled:true,$optionsexist:true},name:"ColliderMeshCollectionEntry",options:[],type:"Attribute"}],name:"Physics"},{fields:[{datatype:"Enum",defaultValue:"Single",displayName:"Source type",name:"SourceType",options:["Single","Collection"],type:"Attribute"},{displayName:"Audio item",if:{SourceType:"Single"},linkableTypes:["Audio"],type:"Link",usageAs:"AudioItem"},{displayName:"Audio collection",if:{SourceType:"Collection"},linkableTypes:["Audio Collection"],type:"Link",usageAs:"AudioCollectionItem"},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{SourceType:"Collection"},name:"AudioCollectionEntry",options:[],type:"Attribute"}],name:"AudioLink"},{fields:[{displayName:"Mesh item",linkableTypes:["Mesh","Mesh Collection"],type:"Link",usageAs:"Mesh",mandatory:true},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{$optionsexist:true},name:"MeshCollectionEntry",options:[],type:"Attribute"}],name:"MeshLink"}],fields:[{childTypes:[{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Mesh specific fields",type:"Separator"},{name:"MeshLink",type:"FieldSet"},{datatype:"Enum",defaultValue:"Pivot",name:"OriginMode",displayName:"Origin mode",if:{$or:[{MeshCollectionEntry:{$isset:true}},{Mesh:{$isset:true}}]},options:["Pivot","Center","Custom"],type:"Attribute"},{name:"CustomPivot",displayName:"Custom Pivot",type:"Attribute",datatype:"Vector3d",if:{OriginMode:"Custom"},defaultValue:{x:0,y:0,z:0}},{datatype:"Animations",defaultValue:[],displayName:"Animations",if:{$or:[{MeshCollectionEntry:{$isset:true}},{Mesh:{$isset:true}}]},name:"Animations",type:"Attribute"},{name:"Physics",type:"FieldSet"}],mainItemField:"Mesh",typeName:"Mesh"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"ScriptedMesh specific fields",type:"Separator"},{displayName:"Material(s)",linkableTypes:["Material","Material Collection"],type:"Link",usageAs:"Materials"},{datatype:"Boolean",defaultValue:false,displayName:"Indexed",info:"Indicates if the geometry buffer is indexed.",name:"Indexed",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Have positions",info:"Add a position attribute to the mesh.",name:"HavePositions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have normals",info:"Add a normal attribute to the mesh.",name:"HaveNormals",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have colors",info:"Add a color attribute to the mesh.",name:"HaveColors",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have UV Coords",info:"Add a UV texture coordinate attribute to the mesh.",name:"HaveUVs",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"ScriptedMesh"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Splats specific fields",type:"Separator"},{linkableTypes:["Gaussian Splats"],type:"Link",usageAs:"Splats",mandatory:true}],mainItemField:"Splats",typeName:"GaussianSplats"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Prefab specific fields",type:"Separator"},{linkableTypes:["Scene","Prefab"],type:"Link",usageAs:"Prefab",mandatory:true}],mainItemField:"Prefab",typeName:"Prefab"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Points specific fields",type:"Separator"},{name:"MeshLink",type:"FieldSet"}],mainItemField:"Mesh",typeName:"Points"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Lightsource specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Point",name:"Type",options:["Point","Directional","Ambient","Hemisphere","Spot"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},name:"Color",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:64,g:64,r:64},displayName:"Ground color (Hemisphere)",if:{Type:"Hemisphere"},name:"GroundColor",type:"Attribute"},{datatype:"Float",defaultValue:10,minValue:0,name:"Intensity",type:"Attribute"},{datatype:"Float",defaultValue:100,if:{$or:[{Type:"Spot"},{Type:"Point"}]},minValue:0,name:"Distance",type:"Attribute"},{datatype:"Float",defaultValue:2,if:{$or:[{Type:"Spot"},{Type:"Point"}]},minValue:1,name:"Decay",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Angle",if:{Type:"Spot"},maxValue:1.57,minValue:0,name:"Angle",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Penumbra",if:{Type:"Spot"},maxValue:1,minValue:0,name:"Penumbra",type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"Target",if:{$or:[{Type:"Spot"},{Type:"Directional"}]},name:"Target",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Cast shadows",name:"CastShadows",type:"Attribute",if:{$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}},{datatype:"Float",defaultValue:0,displayName:"Shadow bias",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},maxValue:1,minValue:-1,name:"ShadowBias",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:512,displayName:"Shadow size",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},name:"ShadowSize",options:[128,256,512,1024,2048],type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Shadow camera near",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},minValue:0,name:"ShadowCameraNear",type:"Attribute"},{datatype:"Float",defaultValue:500,displayName:"Shadow camera far",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},minValue:0,name:"ShadowCameraFar",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Shadow area width",if:{CastShadows:true,Type:"Directional"},minValue:1,name:"ShadowAreaWidth",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Shadow area height",if:{CastShadows:true,Type:"Directional"},minValue:1,name:"ShadowAreaHeight",type:"Attribute"},{datatype:"Float",defaultValue:4,displayName:"Shadow radius",minValue:0,name:"ShadowRadius",type:"Attribute",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}},{datatype:"Integer",defaultValue:8,displayName:"VSM blur samples",maxValue:32,minValue:1,name:"VsmBlurSamples",type:"Attribute",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}}],typeName:"Lightsource"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"Indicates if the 3D object is currently active or inactive. When set to true, the object is active.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"Specifies the name of the 3D object. This is used for identification and reference in the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Describes the object's transformation attributes including its position, rotation, and scale in the 3D space.",name:"Transform",type:"Attribute"},{datatype:"Layers",defaultValue:[],name:"Cullmode",info:"Defines the layers that are not visible to the camera.",displayName:"Cull mode",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"Lists tags associated with the 3D object. Tags are useful for categorizing and searching objects in the scene.",name:"Tags",type:"Attribute"},{label:"Camera specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Perspective",name:"Type",options:["Perspective","Orthographic"],type:"Attribute"},{datatype:"Float",defaultValue:60,displayName:"Field of view",if:{Type:"Perspective"},maxValue:360,minValue:1,name:"FieldOfView",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Left",if:{Type:"Orthographic"},name:"Left",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Right",if:{Type:"Orthographic"},name:"Right",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Top",if:{Type:"Orthographic"},name:"Top",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Bottom",if:{Type:"Orthographic"},name:"Bottom",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Near plane",minValue:0,name:"NearPlane",type:"Attribute"},{datatype:"Float",defaultValue:1e3,displayName:"Far plane",minValue:0,name:"FarPlane",type:"Attribute"},{datatype:"Enum",defaultValue:"Free",name:"Mode",options:["Free","Look at"],type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},if:{Mode:"Look at"},name:"LookAt",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:1,z:0},displayName:"Up vector",if:{Mode:"Look at"},name:"UpVector",type:"Attribute"}],typeName:"Camera"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"}],typeName:"Group"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Box specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},name:"Size",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},name:"Segments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Box"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"GridMap specific fields",type:"Separator"},{linkableTypes:["GridMap"],type:"Link",usageAs:"GridMap"},{name:"Physics",type:"FieldSet"}],typeName:"GridMap"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Ribbon specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Integer",defaultValue:16,displayName:"Ring vertex count",minValue:3,maxValue:256,name:"RingVertexCount",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Path steps",minValue:2,name:"PathStepCount",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Start time",minValue:0,name:"StartTime",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"End time",minValue:0,name:"EndTime",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Closed",name:"Closed",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Add caps",name:"AddCaps",if:{Closed:false},type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Vertex colors",name:"VertexColors",type:"Attribute"},{label:"Ring formulas",type:"Separator",presets:[{name:"Circle",fields:{RingFormulaX:"cos(theta) * 0.5",RingFormulaY:"0",RingFormulaZ:"sin(theta) * 0.5"}}]},{datatype:"Formula",defaultValue:"cos(theta) * 0.5",displayName:"X",name:"RingFormulaX",type:"Attribute"},{datatype:"Formula",defaultValue:"0",displayName:"Y",name:"RingFormulaY",type:"Attribute"},{datatype:"Formula",defaultValue:"sin(theta) * 0.5",displayName:"Z",name:"RingFormulaZ",type:"Attribute"},{label:"Path formulas",type:"Separator"},{datatype:"Formula",defaultValue:"0",displayName:"X",name:"PathFormulaX",type:"Attribute"},{datatype:"Formula",defaultValue:"sin(t)",displayName:"Y",name:"PathFormulaY",type:"Attribute"},{datatype:"Formula",defaultValue:"t",displayName:"Z",name:"PathFormulaZ",type:"Attribute"},{label:"Color formulas",type:"Separator",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"abs(sin(t))",displayName:"R",name:"ColorFormulaR",type:"Attribute",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"0",displayName:"G",name:"ColorFormulaG",type:"Attribute",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"abs(cos(t))",displayName:"B",name:"ColorFormulaB",type:"Attribute",if:{VertexColors:true}},{label:"Other formulas",type:"Separator"},{datatype:"Formula",defaultValue:"1 + 0.3 * sin(t * 2)",displayName:"Scale",name:"ScaleFormula",type:"Attribute"},{datatype:"Formula",defaultValue:"t * PI * 2",displayName:"Twist",name:"TwistFormula",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Ribbon"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Billboard Specific Fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material",mandatory:true},{datatype:"Text",defaultValue:"Text",displayName:"Text",name:"Text",type:"Attribute"},{datatype:"Enum",defaultValue:"center",displayName:"Text Alignment",info:"The alignment of the text",name:"TextAlign",options:["left","center","right"],type:"Attribute"},{linkableTypes:["Font"],type:"Link",usageAs:"Font"},{datatype:"Boolean",defaultValue:true,displayName:"Size Attenuation",info:"Scales the Billboard with respect to distance to the camera.",name:"SizeAttenuation",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:0,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Text Stroke Width",info:"The width of the border of the text.",maxValue:100,minValue:0,name:"TextStrokeWidth",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Text Stroke Color",info:"The color of the border of the text.",name:"TextStrokeColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Text color",info:"The infill color of the text.",name:"TextColor",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:5,y:5},displayName:"Padding",info:"Two values controlling the vertical and horizontal padding size. Higher values increase the size of the padding.",name:"Padding",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Padding color",info:"The background color of the padding section.",name:"BackgroundColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Padding Line Color",info:"The color of the border delimited by the padding.",name:"BackgroundStrokeColor",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Padding Line Width",info:"The width of the border of the padding section.",minValue:0,name:"BackgroundStrokeWidth",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:2,y:2},displayName:"Border",info:"Two values controlling the vertical and horizontal border size. Higher values increase the size of the border.",name:"BorderWidth",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Border Color",info:"The background color of the border section.",name:"BorderBackgroundColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Border Line Color",info:"The color of the outer border of the sprite.",name:"BorderStrokeColor",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Border Line Width",info:"The width of the outer border.",minValue:0,name:"BorderStrokeWidth",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Outer Radius",info:"The outer radius of the sprite. Higher values increase the roundness.",minValue:0,name:"OuterRadius",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Inner Radius",info:"The inner radius of the sprite. Higher values increase the roundness.",minValue:0,name:"InnerRadius",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"}],typeName:"Billboard"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Cone specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:1,name:"RadialSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Open ended",name:"OpenEnded",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Cone"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Lod specific fields",type:"Separator"},{datatype:"String",defaultValue:"0,2,4,6,8,10",displayName:"Distances",name:"Distances",type:"Attribute"}],typeName:"Lod"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Cylinder specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius top",minValue:0,name:"RadiusTop",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Radius bottom",minValue:0,name:"RadiusBottom",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:1,name:"RadialSegments",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Open ended",name:"OpenEnded",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Cylinder"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Plane specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Width",minValue:0,name:"Width",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Width segments",minValue:1,name:"WidthSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Plane"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Ring specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:.5,displayName:"Inner radius",minValue:0,name:"InnerRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Outer radius",minValue:0,name:"OuterRadius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Theta segments",minValue:3,name:"ThetaSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Phi segments",minValue:1,name:"PhiSegments",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Ring"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Particles Editor Fields",type:"Separator"},{datatype:"Boolean",defaultValue:false,displayName:"Preview",info:"Previews the particle system by playing it in the editor.",name:"RunPreview",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Show Emitter Preview",info:"Shows a preview of the particle system's emitter.",name:"ShowHelper",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Pause",info:"Pauses the particle system.",name:"Pause",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Kill All Particles",info:"Kills all the alive particles in the system.",name:"KillAllParticles",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Restart",info:"Hard restart of the particle system. It kills all particles, clean all data and reset the simulation time.",name:"Restart",type:"Attribute"},{displayName:"Particle System",label:"Particle System Configuration File",linkableTypes:["Particles"],type:"Link",usageAs:"ParticleData",mandatory:true}],typeName:"ParticleSystem"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"CircleShadow specific fields",type:"Separator"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:0,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Strength",maxValue:1,minValue:0,name:"Strength",type:"Attribute",widget:"Slider"}],typeName:"CircleShadow"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Sphere specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Width segments",minValue:3,name:"WidthSegments",type:"Attribute"},{datatype:"Integer",defaultValue:6,displayName:"Height segments",minValue:2,name:"HeightSegments",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Phi start",maxValue:360,minValue:0,name:"PhiStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Phi length",maxValue:360,minValue:0,name:"PhiLength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:180,displayName:"Theta length",maxValue:180,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Sphere"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Text specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"String",defaultValue:"Text",name:"Text",type:"Attribute"},{datatype:"Enum",defaultValue:"center",displayName:"Horizontal Alignment",info:"Horizontal text positioning",name:"HorizontalAlign",options:["left","center","right"],type:"Attribute"},{datatype:"Enum",defaultValue:"baseline",displayName:"Vertical Alignment",info:"Vertical text positioning",name:"VerticalAlign",options:["baseline","top","middle","bottom"],type:"Attribute"},{linkableTypes:["Font"],type:"Link",usageAs:"Font"},{datatype:"Float",defaultValue:1,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:12,displayName:"Curve segments",name:"CurveSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Bevel enabled",name:"BevelEnabled",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Bevel thickness",name:"BevelThickness",type:"Attribute"},{datatype:"Float",defaultValue:.03,displayName:"Bevel size",name:"BevelSize",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Bevel offset",name:"BevelOffset",type:"Attribute"},{datatype:"Integer",defaultValue:3,displayName:"Bevel segments",name:"BevelSegments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Text"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Torus specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:.4,displayName:"Tube",minValue:0,name:"Tube",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:3,name:"RadialSegments",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Tubular segments",minValue:2,name:"TubularSegments",type:"Attribute"},{datatype:"Float",defaultValue:360,displayName:"Arc",maxValue:360,minValue:0,name:"Arc",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Torus"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Layers",defaultValue:[0],name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Sky specific fields",type:"Separator"},{datatype:"Float",defaultValue:1e3,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Turbidity",maxValue:20,minValue:1,name:"Turbidity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:2,displayName:"Rayleigh",maxValue:4,minValue:0,name:"Rayleigh",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.005,displayName:"Mie coefficient",maxValue:1,minValue:0,name:"MieCoefficient",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.8,displayName:"Mie directional G",maxValue:1,minValue:0,name:"MieDirectionalG",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.49,displayName:"Inclination",maxValue:1,minValue:0,name:"Inclination",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.25,displayName:"Azimuth",maxValue:1,minValue:0,name:"Azimuth",type:"Attribute",widget:"Slider"}],typeName:"Sky"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Audio listener specific fields",type:"Separator"},{datatype:"Float",defaultValue:1,name:"Gain",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Time delta",name:"TimeDelta",type:"Attribute"}],maxInstances:1,typeName:"AudioListener"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Positional audio specific fields",type:"Separator"},{name:"AudioLink",type:"FieldSet"},{datatype:"Boolean",defaultValue:false,displayName:"Autoplay",name:"Autoplay",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop",name:"Loop",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop section",name:"LoopSection",type:"Attribute",if:{Loop:true}},{datatype:"Float",defaultValue:0,displayName:"Loop start",minValue:0,name:"LoopStart",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",displayName:"Loop end",defaultValue:1,minValue:0,name:"LoopEnd",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",defaultValue:1,displayName:"Volume",minValue:0,name:"Volume",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Panning",maxValue:1,minValue:-1,name:"Panning",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Duration",minValue:0,name:"Duration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Detune",name:"Detune",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Playback rate",minValue:0,name:"PlaybackRate",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset",maxValue:1,minValue:0,name:"Offset",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Ref distance",minValue:0,name:"RefDistance",type:"Attribute"},{datatype:"Float",defaultValue:1e4,displayName:"Max distance",minValue:0,name:"MaxDistance",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Rolloff factor",minValue:0,name:"RolloffFactor",type:"Attribute"},{datatype:"Enum",defaultValue:"Inverse",displayName:"Distance model",name:"DistanceModel",options:["Linear","Inverse","Exponential"],type:"Attribute"},{datatype:"Enum",defaultValue:"Omnidirectional",displayName:"Direction",name:"Direction",options:["Omnidirectional","Directional"],type:"Attribute"},{datatype:"Float",defaultValue:90,displayName:"Cone inner angle",if:{Direction:"Directional"},maxValue:360,minValue:0,name:"ConeInnerAngle",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:180,displayName:"Cone outer angle",if:{Direction:"Directional"},maxValue:360,minValue:0,name:"ConeOuterAngle",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.2,displayName:"Cone outer gain",if:{Direction:"Directional"},maxValue:1,minValue:0,name:"ConeOuterGain",type:"Attribute",widget:"Slider"}],typeName:"PositionalAudio"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Audio specific fields",type:"Separator"},{name:"AudioLink",type:"FieldSet"},{datatype:"Boolean",defaultValue:false,displayName:"Autoplay",name:"Autoplay",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop",name:"Loop",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop section",name:"LoopSection",type:"Attribute",if:{Loop:true}},{datatype:"Float",defaultValue:0,displayName:"Loop start",minValue:0,name:"LoopStart",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",displayName:"Loop end",defaultValue:1,minValue:0,name:"LoopEnd",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",defaultValue:1,displayName:"Volume",minValue:0,name:"Volume",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Panning",maxValue:1,minValue:-1,name:"Panning",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Duration",minValue:0,name:"Duration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Detune",name:"Detune",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Playback rate",minValue:0,name:"PlaybackRate",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset",maxValue:1,minValue:0,name:"Offset",type:"Attribute"}],typeName:"Audio"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Vehicle specific fields",type:"Separator"},{datatype:"Node",defaultValue:null,displayName:"Chassis node",name:"ChassisNode",type:"Attribute"},{elementName:"Wheel",fields:[{datatype:"Node",defaultValue:null,displayName:"Wheel node",name:"WheelNode",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Is Front",name:"IsFront",type:"Attribute"},{label:"Wheel config",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:.6,displayName:"Suspension rest length",name:"SuspensionRestLength",type:"Attribute"},{datatype:"Float",defaultValue:20,displayName:"Suspension stiffness",name:"SuspensionStiffness",type:"Attribute"},{datatype:"Float",defaultValue:2.3,displayName:"Suspension damping",name:"SuspensionDamping",type:"Attribute"},{datatype:"Float",defaultValue:4.4,displayName:"Suspension compression",name:"SuspensionCompression",type:"Attribute"},{datatype:"Float",defaultValue:1e3,displayName:"Friction",name:"Friction",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Roll influence",name:"RollInfluence",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Radius",name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Acceleration",name:"Acceleration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Brakes",name:"Brakes",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Steering",name:"Steering",type:"Attribute"}],name:"Wheels",type:"List"}],typeName:"Vehicle"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Constraint specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"",displayName:"Type",name:"Type",options:["Point to Point","Hinge","Slider","Cone twist"],type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"First node",name:"FirstNode",type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"Second node",name:"SecondNode",type:"Attribute"}],typeName:"Constraint"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"NavMesh specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Solo",displayName:"Type",name:"Type",options:["Solo","Tiled","Tile cache"],info:"For simple static scenes, use solo. For large maps use tiled, for large and/or dynamic maps, use tile cache",type:"Attribute"},{datatype:"Enum",defaultValue:"From children",displayName:"Mode",name:"Mode",options:["From children","From tags","From layers"],type:"Attribute"},{datatype:"Layers",defaultValue:[0],displayName:"Navmesh layers",info:"Selects which layers are added to the navmesh",name:"NavmeshLayers",type:"Attribute",if:{Mode:"From layers"}},{datatype:"Tags",defaultValue:[],info:"Selects meshes to add to the navmesh based on tag.",displayName:"Navmesh tags",name:"NavmeshTags",type:"Attribute",if:{Mode:"From tags"}},{datatype:"Boolean",defaultValue:false,displayName:"Auto generate",name:"AutoGenerate",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Always render helper",name:"AlwaysRenderHelper",type:"Attribute"},{datatype:"Button",defaultValue:false,displayName:"Regenerate now",name:"RegenerateNow",type:"Attribute"},{datatype:"Float",defaultValue:0,minValue:0,displayName:"Border size",name:"BorderSize",type:"Attribute"},{datatype:"Float",defaultValue:.2,minValue:.01,displayName:"Voxel cell height",name:"CellHeight",type:"Attribute",info:"Needs to resolve step/climb height cleanly."},{datatype:"Float",defaultValue:.2,minValue:.01,displayName:"Voxel cell size",name:"CellSize",type:"Attribute",info:"Smaller = more detail. Around 0.2m for human‑scale"},{datatype:"Integer",defaultValue:256,minValue:1,displayName:"Chunky tri mesh tris per chunk",name:"ChunkyTriMeshTrisPerChunk",type:"Attribute",if:{Type:"Tiled"}},{datatype:"Float",defaultValue:6,minValue:.01,displayName:"Detail sample dist",name:"DetailSampleDist",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:0,displayName:"Detail sample max error",name:"DetailSampleMaxError",type:"Attribute"},{datatype:"Integer",defaultValue:4,minValue:1,displayName:"Expected layers per tile",name:"ExpectedLayersPerTile",type:"Attribute",if:{Type:"Tile Cache"}},{datatype:"Integer",defaultValue:128,minValue:1,displayName:"Max obstacles",name:"MaxObstacles",type:"Attribute",if:{Type:"Tile Cache"}},{datatype:"Float",defaultValue:12,minValue:.01,displayName:"Max edge length",name:"MaxEdgeLen",type:"Attribute"},{datatype:"Float",defaultValue:1.3,minValue:0,displayName:"Max simplification error",name:"MaxSimplificationError",type:"Attribute",info:"Allowed contour deviation from source before another vertex is kept"},{datatype:"Integer",defaultValue:6,minValue:3,displayName:"Max vertices per poly",name:"MaxVertsPerPoly",type:"Attribute"},{datatype:"Float",defaultValue:20,minValue:.01,displayName:"Merge region area",name:"MergeRegionArea",type:"Attribute"},{datatype:"Float",defaultValue:8,minValue:.01,displayName:"Min region area",name:"MinRegionArea",type:"Attribute"},{datatype:"Float",defaultValue:2,minValue:0,displayName:"Walkable climb",name:"WalkableClimb",type:"Attribute",info:"Maximum step height"},{datatype:"Float",defaultValue:2,minValue:0,displayName:"Walkable height",name:"WalkableHeight",type:"Attribute",info:"Required head‑clearance. Must be at least the height of the characters."},{datatype:"Float",defaultValue:.5,minValue:.01,displayName:"Walkable radius",name:"WalkableRadius",type:"Attribute",info:"Clearance from walls/obstacles"},{datatype:"Float",defaultValue:60,minValue:0,maxValue:360,displayName:"Walkable slope angle",name:"WalkableSlopeAngle",type:"Attribute",info:"Steepest walkable slope"},{datatype:"Boolean",defaultValue:true,displayName:"Build BV Tree",name:"BuildBvTree",info:"",type:"Attribute",if:{$or:[{Type:"Solo"},{Type:"Tiled"}]}},{datatype:"Integer",defaultValue:32,minValue:1,displayName:"Tile size",name:"TileSize",type:"Attribute",info:"The size of the tiles to be used. Typically you will want to stay in the range 32 - 64. Sizes outside this range might result in unexpected behaviour",if:{$or:[{Type:"Tiled"},{Type:"Tile cache"}]}},{label:"Crowd fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Enable crowd",name:"EnableCrowd",type:"Attribute"},{datatype:"Integer",defaultValue:100,minValue:1,displayName:"Max agent count",name:"MaxAgentCount",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:.01,displayName:"Max agent radius",name:"MaxAgentRadius",type:"Attribute"}],typeName:"NavMesh"}],name:"Scenegraph",type:"Tree"}],name:"Prefab",updateRequiresThumbRefresh:true},{_id:{$oid:"5e6a1ad189707feef9173397"},contentTypes:["text/x-lua"],fieldSets:[],fields:[],name:"Script",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707f2ef9133396"},contentTypes:[],fieldSets:[],fields:[{childTypes:[{displayName:"Camera",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Tag",info:"Tag of the camera to render",name:"Tag",type:"Attribute"},{datatype:"Layers",defaultValue:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],displayName:"Layers",info:"Selects which layers are rendered by the camera. Overrides scene Camera node 'Cull mode' field.",name:"Layers",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Width",info:"Width in percent to render",name:"Width",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:100,displayName:"Height",info:"Height in percent to render",name:"Height",type:"Attribute",widget:"Slider"}],inputs:[],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"},{displayName:"Depth output",name:"DepthOutput",type:"GrayImage"},{displayName:"Depth Comparison output",name:"DepthComparisonOutput",type:"GrayImage"},{displayName:"Normal output",name:"NormalOutput",type:"RGBImage"},{displayName:"Camera Output",name:"CameraOutput",type:"Attribute"}],typeName:"camera"},{displayName:"Merge",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Alpha",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Adjusts how strongly the blending mode affects the final result.",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Offset X",info:"Horizontal offset for the secondary input (relative to composition resolution). Positive values move right, negative left. Percentage-based for resolution independence.",maxValue:100,minValue:-100,name:"OffsetX",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset Y",info:"Vertical offset for the secondary input (relative to composition resolution). Positive values move up, negative down. Percentage-based for resolution independence.",maxValue:100,minValue:-100,name:"OffsetY",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Width",info:"Horizontal scale of the secondary input as percentage of composition width. 100% maintains original aspect ratio when Height is also 100%. Values <100% shrink, >100% stretch.",maxValue:100,minValue:0,name:"Width",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Height",info:"Vertical scale of the secondary input as percentage of composition height. 100% maintains original aspect ratio when Width is also 100%. Values <100% shrink, >100% stretch.",maxValue:100,minValue:0,name:"Height",type:"Attribute"}],inputs:[{displayName:"Color input 1",name:"ColorInput1",types:["RGBImage"]},{displayName:"Color input 2",name:"ColorInput2",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"merge"},{displayName:"SSAO",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Radius",minValue:.01,name:"Radius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Samples",maxValue:32,minValue:8,name:"Samples",type:"Attribute"},{datatype:"Float",defaultValue:.001,displayName:"Bias",minValue:.001,name:"Bias",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Intensity",minValue:0,name:"Intensity",type:"Attribute"},{datatype:"Float",defaultValue:.07,displayName:"Max distance",minValue:.01,name:"MaxDistance",type:"Attribute"}],inputs:[{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Normal input",name:"NormalInput",types:["RGBImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"ssao"},{displayName:"FXAA",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"fxaa"},{displayName:"Bloom",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1.5,displayName:"Strength",maxValue:10,minValue:0,name:"Strength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.4,displayName:"Radius",maxValue:1,minValue:0,name:"Radius",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.8,displayName:"Threshold",info:"Minimum luminance required for a pixel to contribute to bloom. Pixels darker than this value are suppressed, while brighter pixels contribute to the blur.",maxValue:1,minValue:0,name:"Threshold",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.4,displayName:"Soft Knee",info:"Creates a smooth transition around the threshold to avoid harsh cutoffs. Higher values produce a more gradual blend between non-blooming and blooming pixels.",maxValue:1,minValue:0,name:"SoftKnee",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"bloom"},{displayName:"Outline",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Edge Strength",maxValue:5,minValue:0,name:"EdgeStrength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.5,displayName:"Edge Width",maxValue:2,minValue:.1,name:"EdgeWidth",type:"Attribute",widget:"Slider"},{datatype:"Color",defaultValue:{r:255,g:0,b:0,a:255},displayName:"Edge Color",name:"EdgeColor",type:"Attribute"},{datatype:"Enum",defaultValue:"Add",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth Comparison input",name:"DepthComparisonInput",types:["GrayImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"outline"},{displayName:"Film",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.05,displayName:"Noise intensity",maxValue:1,minValue:0,name:"NoiseIntensity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Scanlines intensity",maxValue:1,minValue:0,name:"ScanlinesIntensity",type:"Attribute",widget:"Slider"},{datatype:"Integer",defaultValue:0,displayName:"Scanlines count",maxValue:1e3,minValue:0,name:"ScanlinesCount",type:"Attribute",widget:"Slider"},{datatype:"Boolean",defaultValue:false,displayName:"Grayscale",name:"Grayscale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Animated",name:"Animated",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"film"},{displayName:"Fog",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Color",defaultValue:{r:255,g:0,b:0,a:255},displayName:"Color",name:"Color",type:"Attribute"},{datatype:"Enum",defaultValue:"Camera Depth",displayName:"Direction",name:"Direction",type:"Attribute",options:["Camera Depth","X","Y","Z"],info:"Defines the ray along which the fog is evaluated. 'Camera Depth' applies fog based on distance from the camera view direction (distances should be non-negative). 'X', 'Y', and 'Z' apply fog along the corresponding world-space axis; distances may be positive or negative depending on where the fog volume should begin and end."},{datatype:"Enum",defaultValue:"Linear",displayName:"Type",name:"Type",type:"Attribute",options:["Linear","Exponential","Exponential Squared"]},{datatype:"Float",defaultValue:1,displayName:"Start Distance",name:"StartDistance",type:"Attribute",info:"Distance along the selected fog ray where the fog begins to accumulate. Must be >= 0 when using Camera Depth."},{datatype:"Float",defaultValue:1e3,displayName:"End Distance",name:"EndDistance",type:"Attribute",info:"Distance along the selected fog ray where the fog reaches maximum density. Must be >= 0 when using Camera Depth."},{datatype:"Float",defaultValue:.0025,displayName:"Density",minValue:1e-5,maxValue:1,name:"Density",type:"Attribute",step:.1,if:{$or:[{FogType:"Exponential"},{FogType:"Exponential Squared"}]}},{datatype:"Boolean",defaultValue:true,displayName:"Enable Noise",name:"EnableNoise",info:"Adds animated noise to the fog to create more natural variation.",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Noise Scale",minValue:.001,name:"NoiseScale",type:"Attribute",step:1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:.1,displayName:"Noise Speed",maxValue:1,minValue:0,name:"NoiseSpeed",type:"Attribute",step:.1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:.5,displayName:"Noise Amount",maxValue:1,minValue:0,name:"NoiseAmount",type:"Attribute",step:.1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:0,maxValue:1,displayName:"Sky Density",info:"Controls the amount of fog applied to the sky.",name:"SkyDensity",type:"Attribute",step:.1}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["DepthBuffer"]},{displayName:"Camera input",name:"CameraInput",types:["Camera"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"fog"},{displayName:"Sepia",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"sepia"},{displayName:"Vignette",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.9,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Float",defaultValue:.4,displayName:"Amount",maxValue:1,minValue:0,name:"Amount",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"vignette"},{displayName:"Blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"blur"},{displayName:"Scanline",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Density",maxValue:1,minValue:0,name:"Density",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.01,displayName:"Scroll Speed",maxValue:1,minValue:0,name:"ScrollSpeed",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Overlay",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"scanline"},{displayName:"Shockwave",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Continuous",info:"Whether or not new shockwaves will emit as soon as the previous shockwave ended.",name:"Continuous",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Delay",minValue:0,name:"Delay",info:"How long to wait between shockwave emissions.",type:"Attribute",if:{Continuous:false}},{datatype:"Integer",defaultValue:5,displayName:"Amount",minValue:0,name:"Amount",info:"The number of shockwaves.",type:"Attribute",if:{Continuous:false}},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Center",info:"The center in world coordinates of the shockwave effect.",name:"Center",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Size",maxValue:100,minValue:.001,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Speed",maxValue:100,minValue:.001,name:"Speed",type:"Attribute"},{datatype:"Float",defaultValue:-0.2,displayName:"Radius",maxValue:10,minValue:-10,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Maximum Radius",maxValue:10,minValue:0,name:"MaxRadius",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Wave Size",maxValue:100,minValue:1,name:"WaveSize",type:"Attribute"},{datatype:"Float",defaultValue:.05,displayName:"Amplitude",maxValue:10,minValue:0,name:"Amplitude",type:"Attribute"},{datatype:"Enum",defaultValue:"Screen",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.75,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"shockwave"},{displayName:"Pixelation",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Granularity",maxValue:100,minValue:1,name:"Granularity",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"pixelation"},{displayName:"Adjust",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Brightness",maxValue:10,minValue:-10,name:"Brightness",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Contrast",maxValue:10,minValue:-10,name:"Contrast",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Hue",maxValue:6.283,minValue:0,name:"Hue",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Saturation",maxValue:1,minValue:-1,name:"Saturation",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"adjust"},{displayName:"Chromatic abberation",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Red factor",maxValue:1,minValue:0,name:"RedFactor",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Green factor",maxValue:1,minValue:0,name:"GreenFactor",type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Blue factor",maxValue:1,minValue:0,name:"BlueFactor",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"chromaticAbberation"},{displayName:"Color Depth",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Bit Depth",maxValue:32,minValue:1,name:"bitDepth",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Amount of blending. Only valid for additive and subtractive modes",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"colorDepth"},{displayName:"Depth Of Field",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Focus Target",name:"FocusTarget",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"World Focus Distance",minValue:0,name:"WorldFocusDistance",type:"Attribute"},{datatype:"Float",defaultValue:5,displayName:"World Focus Range",minValue:0,name:"WorldFocusRange",type:"Attribute"},{datatype:"Integer",defaultValue:4,displayName:"Kawase Blur Kernel Size",maxValue:10,minValue:0,name:"Kernel",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Bokeh Scale",maxValue:25,minValue:0,name:"BokehScale",type:"Attribute"},{datatype:"Float",defaultValue:.75,displayName:"Resolution Scale",maxValue:1,minValue:0,name:"ResolutionScale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"depthoffield"},{displayName:"Glitch",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:.3,y:1},displayName:"Strength",info:"Two values controlling the maximum and minimum strength of the glitch effect.",name:"Strength",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Columns",maxValue:1,minValue:0,name:"Columns",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:0,y:2.5},displayName:"Delay",info:"Two values controlling the duration of the delay of the glitch effect.",name:"Delay",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:0,y:3},displayName:"Duration",info:"Two values controlling the duration of the glitch effect.",name:"Duration",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"glitch"},{displayName:"God Rays",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"String",defaultValue:"",type:"Attribute",displayName:"Light Source",name:"SunTag"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:.01,maxValue:10,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Density",minValue:.01,maxValue:1,name:"Density",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Decay",minValue:.01,maxValue:1,name:"Decay",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Weight",minValue:.01,maxValue:1,name:"Weight",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Exposure",minValue:.01,maxValue:1,name:"Exposure",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"MaximumIntensity",minValue:.01,maxValue:1,name:"MaximumIntensity",type:"Attribute"},{datatype:"Integer",defaultValue:60,displayName:"Samples",minValue:0,name:"Samples",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Blur Rays",name:"BlurRays",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Kernel Size",info:"The number of kernel applied on the God Rays. A higher number yields to a better blur effect at higher computational cost",maxValue:10,minValue:0,name:"Kernel",if:{BlurRays:true},type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Resolution Scale",info:"A higher resolution yields a more realistic result at higher computational cost",maxValue:1,minValue:0,name:"ResolutionScale",type:"Attribute"},{datatype:"Enum",defaultValue:"Screen",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"godrays"},{displayName:"Kawase Blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Kernel Size",info:"The number of kernel applied on the effect. A higher number yields to a better blur effect at higher computational cost",maxValue:10,minValue:0,name:"Kernel",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Scale",info:"The strenth of the blur effect.",maxValue:1,minValue:0,name:"Scale",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"kawaseblur"},{displayName:"Radial blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:.5,y:.5},displayName:"Center",name:"Center",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"radialBlur"},{displayName:"Tone Mapping",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"LINEAR",displayName:"Mode",name:"TonemappingMode",options:["LINEAR","REINHARD","REINHARD2","REINHARD2_ADAPTIVE","UNCHARTED2","ACES_FILMIC","AGX","NEUTRAL"],type:"Attribute"},{datatype:"Integer",defaultValue:256,displayName:"Luminance Map Width. Must be a power of 2.",minValue:1,name:"LuminanceMapWidth",type:"Attribute",if:{TonemappingMode:"REINHARD2_ADAPTIVE"}},{datatype:"Integer",defaultValue:256,displayName:"Luminance Map Height. Must be a power of 2.",if:{TonemappingMode:"REINHARD2_ADAPTIVE"},minValue:1,name:"LuminanceMapHeight",type:"Attribute"},{datatype:"Float",defaultValue:4,displayName:"Maximum Luminance",minValue:0,maxValue:20,name:"MaxLuminance",type:"Attribute"},{datatype:"Float",defaultValue:.01,displayName:"Minimum Luminance",minValue:0,maxValue:3,name:"MinLuminance",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Average Luminance",minValue:0,maxValue:1,name:"MeanLuminance",type:"Attribute"},{datatype:"Float",defaultValue:.6,displayName:"Middle Grey",maxValue:1,minValue:0,name:"MiddleGrey",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Adaptation Rate",minValue:0,name:"AdaptationRate",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"tonemapping"},{displayName:"Output",fields:[{datatype:"String",defaultValue:"Output",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Integer",defaultValue:256,displayName:"Target width",minValue:1,name:"DesiredWidth",type:"Attribute",info:"This is the width of the render target in case the composition is used in a material albedo slot."},{datatype:"Integer",defaultValue:256,displayName:"Target height",minValue:1,name:"DesiredHeight",type:"Attribute",info:"This is the height of the render target in case the composition is used in a material albedo slot."}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[],typeName:"output"}],name:"NodeGraph",type:"NodeGraph"}],name:"Composition",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707f2ef9147396"},contentTypes:[],fieldSets:[],fields:[],name:"Behavior",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173398"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:1,displayName:"GLSL Version",name:"GLSLVersion",options:[1,3],type:"Attribute"},{datatype:"Enum",defaultValue:"Full",displayName:"Resolution",name:"Resolution",options:["Full","Half","Quarter"],type:"Attribute"},{displayName:"Texture Channel 1",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel1"},{displayName:"Texture Channel 2",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel2"},{displayName:"Texture Channel 3",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel3"},{displayName:"Texture Channel 4",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel4"}],name:"Background Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707feef9173399"},contentTypes:["video/mp4","video/webm"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:"Linear",displayName:"Encoding",name:"Encoding",options:["Linear","sRGB"],type:"Attribute"}],name:"Video",creatableEmpty:false},{_id:{$oid:"5e8c9d5c02a37596bb1fd5b6"},contentTypes:[""],fieldSets:[],fields:[{elementName:"Item",fields:[{datatype:"String",defaultValue:"",displayName:"Description",name:"Description",type:"Attribute"},{type:"Link",usageAs:"Item",mandatory:true}],name:"Items",type:"List"}],name:"Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c02a33596bb53d5b6"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Audio items",elementName:"AudioItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Audio"],type:"Link",usageAs:"Audio",mandatory:true}],name:"AudioItems",type:"List"}],name:"Audio Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c01a32576bb53d5b6"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Mesh items",elementName:"MeshItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Mesh"],type:"Link",usageAs:"Mesh",mandatory:true}],name:"MeshItems",type:"List"}],name:"Mesh Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c0233596cb31d5ba2"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Material items",elementName:"MaterialItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Material"],type:"Link",usageAs:"Material",mandatory:true}],name:"MaterialItems",type:"List"}],name:"Material Collection",creatableEmpty:true},{_id:{$oid:"5edf2f6edc25bdf4e5723e52"},contentTypes:["text/x-yaml"],fieldSets:[],fields:[{displayName:"Material collections",elementName:"Material Collection",fields:[{linkableTypes:["Material Collection"],type:"Link",usageAs:"MaterialCollection",displayName:"Material Collection",mandatory:true}],name:"MaterialCollections",type:"List"},{displayName:"Mesh collections",elementName:"Mesh Collection",fields:[{linkableTypes:["Mesh Collection"],type:"Link",usageAs:"MeshCollection",displayName:"Mesh Collection",mandatory:true}],name:"MeshCollections",type:"List"}],name:"GridMap",creatableEmpty:true},{_id:{$oid:"60827c20d3f7a631e71522cc"},contentTypes:[],fieldSets:[],fields:[],name:"Dataset",creatableEmpty:false},{_id:{$oid:"62133ff41302cfcd0d9a2346"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[],name:"Pixel Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"62133ffb1302cf53ef9a234e"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[],name:"Vertex Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"62a83a1ef46738fe096fd7e3"},contentTypes:["application/zip"],fieldSets:[],fields:[],name:"Archive",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"640076f0e49250ab06ea4aec"},contentTypes:["font/ttf","font/otf"],fieldSets:[],fields:[],name:"Font",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"6463df676055450cac673d90"},contentTypes:[],fieldSets:[],fields:[{label:"General Settings",type:"Separator"},{datatype:"Integer",defaultValue:1e3,displayName:"Maximum Number of Particles",info:"The maximum number of particles that can exist at the same time in the simulation.",minValue:0,name:"MaxParticles",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Duration",info:"Duration (in seconds) the particle system runs. Use -1 for infinite duration.",minValue:-1,name:"Duration",type:"Attribute"},{datatype:"Enum",defaultValue:"Local",displayName:"Coordinate System",info:"Defines whether particle movement is relative to the emitter's local space or the global world space.",name:"SystemCoordinates",options:["Local","World"],type:"Attribute"},{label:"Emission Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Emit All At Once",info:"Emit all particles immediately when the simulation starts.",name:"EmitAllAtOnce",type:"Attribute"},{datatype:"Float",defaultValue:128,minValue:0,displayName:"Spawn amount",if:{EmitAllAtOnce:false},info:"The number of particles emitted each time the emitter spawns.",name:"SpawnAmount",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:0,displayName:"Spawn Interval",info:"The time, in seconds, between each consecutive spawn of particles.",if:{EmitAllAtOnce:false},name:"SpawnRate",type:"Attribute"},{datatype:"Float",defaultValue:-1,minValue:-1,displayName:"Number of Emissions",info:"Total number of spawn events before emission stops; after this number of emissions, no more particles will be emitted.",if:{EmitAllAtOnce:false},name:"MaximumEmissions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Continuous emission",info:"If enabled, particles in each emission spawn gradually over time instead of instantly.",if:{EmitAllAtOnce:false},name:"ContinuousEmissionFlag",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Auto Respawn",info:"Automatically respawn particles when they die.",name:"Respawn",type:"Attribute",if:{EmitAllAtOnce:true}},{label:"Size Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable","Velocity"],displayName:"Scaling Mode",info:"Determines how particle size changes over their lifetime: constant size, variable scaling, or based on velocity.",name:"ScaleMode",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Base Size",info:"The size of the particles at emission",minValue:0,name:"ParticleInitialSize",type:"Attribute"},{datatype:"Float",defaultValue:15,displayName:"Final Size",info:"The size particles reach at the end of their lifetime. If particles die early, they may not reach their final size.",minValue:0,name:"ParticleFinalSize",type:"Attribute",if:{ScaleMode:"Variable"}},{datatype:"Float",displayName:"Scale Randomness",name:"ScaleRandomness",defaultValue:.1,minValue:0,maxValue:1,info:"Random variation applied to scale curve values."},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Interpolation Function",info:"Interpolation method for scaling particles over their lifetime.",type:"Attribute",name:"ScaleFunction",if:{ScaleMode:"Variable"}},{datatype:"Float",defaultValue:.5,minValue:0,maxValue:5,if:{ScaleMode:"Variable",$or:[{ScaleFunction:"Exponential"},{ScaleFunction:"Inverse Exponential"},{ScaleFunction:"Ease-in, Ease-out"}]},displayName:"Interpolation Rate",name:"ApproachSize",info:"Controls the rate at which particles scale over time based on the interpolation modes.",type:"Attribute"},{label:"Velocity Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable"],displayName:"Velocity Mode",info:"Determines if particles maintain a constant velocity or change velocity over their lifetime.",name:"VelocityMode",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Initial Velocity",info:"The starting velocity of particles when emitted.",name:"InitialVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Final Velocity",info:"The velocity particles will reach by the end of their lifetime. Used only when Velocity Mode is set to Variable.",name:"FinalVelocity",type:"Attribute",if:{VelocityMode:"Variable"}},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Interpolation Function",info:"Defines the interpolation method for velocity changes over the particle’s lifetime.",name:"VelocityFunction",type:"Attribute",if:{VelocityMode:"Variable"}},{datatype:"Float",defaultValue:.5,displayName:"Interpolation Rate",info:"Controls the rate at which particles transition from initial to final velocity for the interpolation modes.",maxValue:5,minValue:0,name:"FinalVelocityApproach",type:"Attribute",if:{VelocityMode:"Variable",$or:[{VelocityFunction:"Exponential"},{VelocityFunction:"Inverse Exponential"},{VelocityFunction:"Ease-in, Ease-out"}]}},{datatype:"Float",defaultValue:0,displayName:"Spread",info:"Randomly offsets the emission angle (in degrees) from the base direction. A value of 360° emits particles uniformly in all directions. Requires Initial Velocity not be a 0-vector to have any effect.",maxValue:360,minValue:0,name:"Spread",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Angular Velocity",info:"The speed at which particles rotate around their center of mass, in radians per second.",minValue:0,name:"AngularVelocity",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{datatype:"Enum",defaultValue:"Clockwise",options:["Clockwise","Anticlockwise"],displayName:"Rotation Direction",info:"Controls the rotation direction of particles.",name:"AngularDirection",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{datatype:"Float",defaultValue:0,displayName:"Rotation Randomness",info:"Random variation applied to particle angular velocity. 0 = all particles rotate at the same speed, 1 = each particle can vary ±100% of base angular velocity.",minValue:0,maxValue:1,name:"RotationRandomness",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{label:"Force Settings",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:0,displayName:"Drift",info:"A random velocity added to particles in all directions to simulate drifting motion.",name:"Drift",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Gravity",info:"A constant acceleration applied to particles after emission, simulating gravity. Positive values pull particles downward; negative values pull them upward.",name:"Gravity",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Tangential Velocity",info:"Applies a tangential velocity to particles, causing them to orbit the center point along the defined orbital plane.",name:"OrbitalVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Orbit Center",info:"The point in 3D space around which particles orbit.",name:"OrbitalCenterPoint",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:1,z:0},displayName:"Orbital Plane",info:"A vector normal that defines the orientation of the orbital plane. Particles orbit around an axis perpendicular to this vector. Should be normalized (length = 1), but normalization is not enforced.",name:"OrbitalPlane",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Orbital Decay",info:"Causes particles to gradually spiral inward toward the orbital center over time.",name:"OrbitalDecay",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Target",info:"A 3D point in space that particles are attracted to.",name:"Target",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Target Force",info:"The strength of the attraction force pulling particles toward the target. Set to 0 to disable.",name:"TargetForce",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Kill on target",info:"If enabled, particles are deleted once they reach the target position.",name:"TargetDeleteFlag",type:"Attribute"},{datatype:"Float",defaultValue:.1,if:{TargetDeleteFlag:true},displayName:"Target Deletion Threshold",info:"The distance from the target at which particles are deleted.",minValue:0,name:"TargetDeletionThreshold",type:"Attribute"},{label:"Life Settings",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:10,displayName:"Life",info:"Time in seconds each particle remains alive before disappearing.",minValue:0,name:"Life",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Life Randomness",info:"Adds randomness, in seconds, to particle lifetimes. Each particle's life is calculated as: life + random(0 to 1) x life randomness.",minValue:0,name:"LifeRandomness",type:"Attribute"},{label:"Texture and Color Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Base",name:"ParticleType",info:"Defines the rendering style of particles: Base (simple points), Texture (image-based), or Sprite (animated images).",options:["Base","Texture","Sprite"],type:"Attribute"},{displayName:"Texture",info:"Image used as the particle’s texture.",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]},linkableTypes:["Image"],type:"Link",usageAs:"ParticleTexture"},{datatype:"Boolean",defaultValue:true,displayName:"Circular Mask",info:"Applies a circular alpha mask to the texture or sprite, making only the circular area visible while masking out the corners.",name:"useCircularMask",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Texture hue",info:"Amount of hue shift applied to the particle texture, expressed as a normalized value from 0 to 1, where 0 corresponds to 0 radians (0°) and 1 corresponds to 2π radians (360°).",minValue:0,maxValue:1,name:"TextureHue",type:"Attribute"},{datatype:"Boolean",defaultValue:false,name:"TextureBlending",displayName:"Texture Blending",info:"If enabled, blends the particle texture with the background or other particles for smoother visuals.",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]},type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Particle Color",info:"Base color applied to particles at emission.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"Color",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Use Final Color",info:"Enable color transition so particles interpolate to a specified final color at the end of their lifetime.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"EnableFinalColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Final Color",info:"The color particles interpolate to at the end of their life.",if:{EnableFinalColor:true,$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"FinalColor",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Random Color Factor",info:"Linearly blends each particle's color with a unique random tint. 0 = no randomness, 1 = full random color.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},minValue:0,maxValue:1,name:"RandomColorFactor",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Sprite Fade",if:{ParticleType:"Sprite"},info:"Allows the sprite to smoothly fade in and fade, creating a softer transition.",name:"EnableSpriteFade",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Roll Sprite Texture With Particle's Life",if:{ParticleType:"Sprite"},info:"Enable the sprite to animate by rolling through its frames based on the particle's lifetime.",name:"RollSpriteWithLife",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Speed",if:{ParticleType:"Sprite",RollSpriteWithLife:false},info:"Speed, in frames per seconds, at which the sprite animation advances over time.",minValue:0,name:"SpriteSpeed",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Cols",if:{ParticleType:"Sprite"},info:"Number of horizontal frames (columns) in the sprite sheet. Must be specified manually. Incorrect values may cause improper animation.",minValue:1,name:"SpriteColumns",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Rows",if:{ParticleType:"Sprite"},info:"Number of vertical frames (rows) in the sprite sheet. Must be specified manually. Incorrect values may cause improper animation.",minValue:1,name:"SpriteRows",type:"Attribute"},{label:"Blending Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Multiply","Negation","Normal","Subtract"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Adjusts how strongly the blending mode affects the final result.",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{label:"Fade Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable"],displayName:"Fading Mode",info:"Determines how particle opacity changes: constant transparency, fade over lifetime, or based on velocity.",name:"FadeMode",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Initial Opacity",info:"The opacity of particles when they are first emitted (0.0 = transparent, 1.0 = opaque)",minValue:0,maxValue:1,name:"ParticleInitialOpacity",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Final Opacity",info:"The opacity particles reach at the end of their lifetime. Creates fade-out effect when lower than initial opacity.",minValue:0,maxValue:1,name:"ParticleFinalOpacity",type:"Attribute",if:{FadeMode:"Variable"}},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Fade Interpolation",info:"Controls how smoothly particles fade between initial and final opacity over their lifetime.",type:"Attribute",name:"FadeFunction",if:{FadeMode:"Variable"}},{datatype:"Float",defaultValue:1,minValue:.1,maxValue:5,if:{FadeMode:"Variable",$or:[{FadeFunction:"Exponential"},{FadeFunction:"Inverse Exponential"},{FadeFunction:"Ease-in, Ease-out"}]},displayName:"Fade Rate",name:"FadeApproach",info:"Controls how quickly the fade transition occurs. Higher values create sharper transitions, lower values create gentler fades.",type:"Attribute"},{label:"Emission Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Box",name:"EmitterShape",displayName:"Emitter Shape",info:"Defines the geometric shape from which particles are emitted.",options:["Point","Box","Sphere","Hemisphere","Torus","Cone","Circle","Edge"],type:"Attribute"},{datatype:"Enum",defaultValue:"Volume",name:"EmitterTypeSurfaceVolumeNormal",displayName:"Emitter Type",info:"Specifies whether particles are emitted from the surface, volume, or along the normals of the shape.",options:["Surface","Volume","Normals"],if:{$or:[{EmitterShape:"Box"},{EmitterShape:"Sphere"},{EmitterShape:"Cone"}]},type:"Attribute"},{datatype:"Enum",defaultValue:"Volume",name:"EmitterTypeSurfaceVolume",info:"Specifies whether particles are emitted from the surface or volume of the shape.",displayName:"Emitter Type",options:["Surface","Volume"],if:{$or:[{EmitterShape:"Hemisphere"},{EmitterShape:"Torus"}]},type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Velocity Along Normals.",info:"Speed at which particles are emitted along the surface normals.",if:{EmitterTypeSurfaceVolumeNormal:"Normals"},minValue:0,name:"NormalsVelocity",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The size of the emitter.",info:"Defines the size of the emitter.",if:{$or:[{EmitterShape:"Box"}]},minValue:0,name:"EmitterSize",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The radius of the emitter.",if:{$or:[{EmitterShape:"Torus"},{EmitterShape:"Cone"},{EmitterShape:"Sphere"},{EmitterShape:"Hemisphere"},{EmitterShape:"Circle"}]},minValue:0,name:"EmitterRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The outer radius of the emitter",if:{$or:[{EmitterShape:"Torus"}]},minValue:0,name:"EmitterOuterRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The height of the emitter",if:{$or:[{EmitterShape:"Cone"},{EmitterShape:"Edge"}]},minValue:0,name:"EmitterHeight",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The width of the emitter.",if:{$or:[{EmitterShape:"Edge"}]},minValue:0,name:"EmitterWidth",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Round Tip",if:{$or:[{EmitterShape:"Cone"}]},info:"Round the tip of the cone instead of using a sharp point.",name:"EmitterRoundTip",type:"Attribute"},{label:"Bounding Box Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enable Bounding Box",info:"Enable a bounding box to restrict particles within a defined 3D area.",name:"EnableBBox",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:10,y:10,z:10},info:"Coordinates of the bounding box's maximum corner (upper-right-front).",name:"BBoxMax",displayName:"Bounding Box Maximum Corner",if:{EnableBBox:true},type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},info:"Coordinates of the bounding box's minimum corner (lower-left-back).",name:"BBoxMin",displayName:"Bounding Box Minimum Corner",if:{EnableBBox:true},type:"Attribute"},{label:"Curl Noise Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enable Curl Noise",info:"Toggle curl noise effect on particles to simulate turbulent, swirling particle behavior.",name:"NoiseFlag",type:"Attribute"},{datatype:"NoisePreview",if:{NoiseFlag:true},displayName:"Noise Preview",info:"Visual preview of the curl noise pattern applied to the particle system.",name:"NoisePreview",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Noise Strength",if:{NoiseFlag:true},info:"Controls the intensity of the noise.",name:"NoiseStrength",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Noise Frequency",if:{NoiseFlag:true},info:"Determines the smoothness of the noise: lower values produce smooth, slow variations; higher values produce rapid, detailed changes.",name:"NoiseFrequency",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Noise Octaves",if:{NoiseFlag:true},info:"Number of noise layers combined to create complexity. Higher octaves add detail but reduce performance.",name:"NoiseOctaves",type:"Attribute"}],name:"Particles",updateRequiresThumbRefresh:false,creatableEmpty:true}];function F(e,t=false){let a=I$1.find((t=>t.name===e));if(!a)return null;if(a=structuredClone(a),a.fields=a.fields||[],a.fieldSets=a.fieldSets||[],t&&a.inherits){const e=F(a.inherits,true);e&&(a.fields=[...e.fields,...a.fields],a.fieldSets=[...e.fieldSets,...a.fieldSets]);}return a}function E$2(){return structuredClone(I$1)}var D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function L$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function R$a(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var P,O$1={exports:{}};var B$9,$=(P||(P=1,(B$9=O$1).exports=function(){var e,t;function a(){return e.apply(null,arguments)}function i(t){e=t;}function n(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function r(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function o(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return false;return true}function l(e){return void 0===e}function u(e){return "number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var a,i=[],n=e.length;for(a=0;a<n;++a)i.push(t(e[a],a));return i}function p(e,t){for(var a in t)s(t,a)&&(e[a]=t[a]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function h(e,t,a,i){return qa(e,t,a,i,true).utc()}function f(){return {empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidEra:null,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],era:null,meridiem:null,rfc2822:false,weekdayMismatch:false}}function m(e){return null==e._pf&&(e._pf=f()),e._pf}function y(e){var a=null,i=false,n=e._d&&!isNaN(e._d.getTime());return n&&(a=m(e),i=t.call(a.parsedDateParts,(function(e){return null!=e})),n=a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&i),e._strict&&(n=n&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour)),null!=Object.isFrozen&&Object.isFrozen(e)?n:(e._isValid=n,e._isValid)}function g(e){var t=h(NaN);return null!=e?p(m(t),e):m(t).userInvalidated=true,t}t=Array.prototype.some?Array.prototype.some:function(e){var t,a=Object(this),i=a.length>>>0;for(t=0;t<i;t++)if(t in a&&e.call(this,a[t],t,a))return true;return false};var b=a.momentProperties=[],v=false;function _(e,t){var a,i,n,r=b.length;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=m(t)),l(t._locale)||(e._locale=t._locale),r>0)for(a=0;a<r;a++)l(n=t[i=b[a]])||(e[i]=n);return e}function w(e){_(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),false===v&&(v=true,a.updateOffset(this),v=false);}function A(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}function k(e){ false===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e);}function S(e,t){var i=true;return p((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),i){var n,r,o,l=[],u=arguments.length;for(r=0;r<u;r++){if(n="","object"==typeof arguments[r]){for(o in n+="\n["+r+"] ",arguments[0])s(arguments[0],o)&&(n+=o+": "+arguments[0][o]+", ");n=n.slice(0,-2);}else n=arguments[r];l.push(n);}k(e+"\nArguments: "+Array.prototype.slice.call(l).join("")+"\n"+(new Error).stack),i=false;}return t.apply(this,arguments)}),t)}var N,T={};function M(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),T[e]||(k(t),T[e]=true);}function x(e){return "undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function V(e){var t,a;for(a in e)s(e,a)&&(x(t=e[a])?this[a]=t:this["_"+a]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source);}function C(e,t){var a,i=p({},e);for(a in t)s(t,a)&&(r(e[a])&&r(t[a])?(i[a]={},p(i[a],e[a]),p(i[a],t[a])):null!=t[a]?i[a]=t[a]:delete i[a]);for(a in e)s(e,a)&&!s(t,a)&&r(e[a])&&(i[a]=p({},i[a]));return i}function I(e){null!=e&&this.set(e);}a.suppressDeprecationWarnings=false,a.deprecationHandler=null,N=Object.keys?Object.keys:function(e){var t,a=[];for(t in e)s(e,t)&&a.push(t);return a};var F={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function E(e,t,a){var i=this._calendar[e]||this._calendar.sameElse;return x(i)?i.call(t,a):i}function D(e,t,a){var i=""+Math.abs(e),n=t-i.length;return (e>=0?a?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+i}var L=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,O={},$={};function j(e,t,a,i){var n=i;"string"==typeof i&&(n=function(){return this[i]()}),e&&($[e]=n),t&&($[t[0]]=function(){return D(n.apply(this,arguments),t[1],t[2])}),a&&($[a]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)});}function U(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function z(e){var t,a,i=e.match(L);for(t=0,a=i.length;t<a;t++)$[i[t]]?i[t]=$[i[t]]:i[t]=U(i[t]);return function(t){var n,r="";for(n=0;n<a;n++)r+=x(i[n])?i[n].call(t,e):i[n];return r}}function W(e,t){return e.isValid()?(t=H(t,e.localeData()),O[t]=O[t]||z(t),O[t](e)):e.localeData().invalidDate()}function H(e,t){var a=5;function i(e){return t.longDateFormat(e)||e}for(P.lastIndex=0;a>=0&&P.test(e);)e=e.replace(P,i),P.lastIndex=0,a-=1;return e}var Y={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function G(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.match(L).map((function(e){return "MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])}var q="Invalid date";function Z(){return this._invalidDate}var J="%d",K=/\d{1,2}/;function X(e){return this._ordinal.replace("%d",e)}var Q={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ee(e,t,a,i){var n=this._relativeTime[a];return x(n)?n(e,t,a,i):n.replace(/%d/i,e)}function te(e,t){var a=this._relativeTime[e>0?"future":"past"];return x(a)?a(t):a.replace(/%s/i,t)}var ae={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function ie(e){return "string"==typeof e?ae[e]||ae[e.toLowerCase()]:void 0}function ne(e){var t,a,i={};for(a in e)s(e,a)&&(t=ie(a))&&(i[t]=e[a]);return i}var re={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function se(e){var t,a=[];for(t in e)s(e,t)&&a.push({unit:t,priority:re[t]});return a.sort((function(e,t){return e.priority-t.priority})),a}var oe,le=/\d/,ue=/\d\d/,ce=/\d{3}/,de=/\d{4}/,pe=/[+-]?\d{6}/,he=/\d\d?/,fe=/\d\d\d\d?/,me=/\d\d\d\d\d\d?/,ye=/\d{1,3}/,ge=/\d{1,4}/,be=/[+-]?\d{1,6}/,ve=/\d+/,_e=/[+-]?\d+/,we=/Z|[+-]\d\d:?\d\d/gi,Ae=/Z|[+-]\d\d(?::?\d\d)?/gi,ke=/[+-]?\d+(\.\d{1,3})?/,Se=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Ne=/^[1-9]\d?/,Te=/^([1-9]\d|\d)/;function Me(e,t,a){oe[e]=x(t)?t:function(e,i){return e&&a?a:t};}function xe(e,t){return s(oe,e)?oe[e](t._strict,t._locale):new RegExp(Ve(e))}function Ve(e){return Ce(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,a,i,n){return t||a||i||n})))}function Ce(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Ie(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Fe(e){var t=+e,a=0;return 0!==t&&isFinite(t)&&(a=Ie(t)),a}oe={};var Ee={};function De(e,t){var a,i,n=t;for("string"==typeof e&&(e=[e]),u(t)&&(n=function(e,a){a[t]=Fe(e);}),i=e.length,a=0;a<i;a++)Ee[e[a]]=n;}function Le(e,t){De(e,(function(e,a,i,n){i._w=i._w||{},t(e,i._w,i,n);}));}function Re(e,t,a){null!=t&&s(Ee,e)&&Ee[e](t,a._a,a,e);}function Pe(e){return e%4==0&&e%100!=0||e%400==0}var Oe=0,Be=1,$e=2,je=3,Ue=4,ze=5,We=6,He=7,Ye=8;function Ge(e){return Pe(e)?366:365}j("Y",0,0,(function(){var e=this.year();return e<=9999?D(e,4):"+"+e})),j(0,["YY",2],0,(function(){return this.year()%100})),j(0,["YYYY",4],0,"year"),j(0,["YYYYY",5],0,"year"),j(0,["YYYYYY",6,true],0,"year"),Me("Y",_e),Me("YY",he,ue),Me("YYYY",ge,de),Me("YYYYY",be,pe),Me("YYYYYY",be,pe),De(["YYYYY","YYYYYY"],Oe),De("YYYY",(function(e,t){t[Oe]=2===e.length?a.parseTwoDigitYear(e):Fe(e);})),De("YY",(function(e,t){t[Oe]=a.parseTwoDigitYear(e);})),De("Y",(function(e,t){t[Oe]=parseInt(e,10);})),a.parseTwoDigitYear=function(e){return Fe(e)+(Fe(e)>68?1900:2e3)};var qe,Ze=Ke("FullYear",true);function Je(){return Pe(this.year())}function Ke(e,t){return function(i){return null!=i?(Qe(this,e,i),a.updateOffset(this,t),this):Xe(this,e)}}function Xe(e,t){if(!e.isValid())return NaN;var a=e._d,i=e._isUTC;switch(t){case "Milliseconds":return i?a.getUTCMilliseconds():a.getMilliseconds();case "Seconds":return i?a.getUTCSeconds():a.getSeconds();case "Minutes":return i?a.getUTCMinutes():a.getMinutes();case "Hours":return i?a.getUTCHours():a.getHours();case "Date":return i?a.getUTCDate():a.getDate();case "Day":return i?a.getUTCDay():a.getDay();case "Month":return i?a.getUTCMonth():a.getMonth();case "FullYear":return i?a.getUTCFullYear():a.getFullYear();default:return NaN}}function Qe(e,t,a){var i,n,r,s,o;if(e.isValid()&&!isNaN(a)){switch(i=e._d,n=e._isUTC,t){case "Milliseconds":return void(n?i.setUTCMilliseconds(a):i.setMilliseconds(a));case "Seconds":return void(n?i.setUTCSeconds(a):i.setSeconds(a));case "Minutes":return void(n?i.setUTCMinutes(a):i.setMinutes(a));case "Hours":return void(n?i.setUTCHours(a):i.setHours(a));case "Date":return void(n?i.setUTCDate(a):i.setDate(a));case "FullYear":break;default:return}r=a,s=e.month(),o=29!==(o=e.date())||1!==s||Pe(r)?o:28,n?i.setUTCFullYear(r,s,o):i.setFullYear(r,s,o);}}function et(e){return x(this[e=ie(e)])?this[e]():this}function tt(e,t){if("object"==typeof e){var a,i=se(e=ne(e)),n=i.length;for(a=0;a<n;a++)this[i[a].unit](e[i[a].unit]);}else if(x(this[e=ie(e)]))return this[e](t);return this}function at(e,t){return (e%t+t)%t}function it(e,t){if(isNaN(e)||isNaN(t))return NaN;var a=at(t,12);return e+=(t-a)/12,1===a?Pe(e)?29:28:31-a%7%2}qe=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return -1},j("M",["MM",2],"Mo",(function(){return this.month()+1})),j("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),j("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),Me("M",he,Ne),Me("MM",he,ue),Me("MMM",(function(e,t){return t.monthsShortRegex(e)})),Me("MMMM",(function(e,t){return t.monthsRegex(e)})),De(["M","MM"],(function(e,t){t[Be]=Fe(e)-1;})),De(["MMM","MMMM"],(function(e,t,a,i){var n=a._locale.monthsParse(e,i,a._strict);null!=n?t[Be]=n:m(a).invalidMonth=e;}));var nt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),st=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,ot=Se,lt=Se;function ut(e,t){return e?n(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||st).test(t)?"format":"standalone"][e.month()]:n(this._months)?this._months:this._months.standalone}function ct(e,t){return e?n(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[st.test(t)?"format":"standalone"][e.month()]:n(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function dt(e,t,a){var i,n,r,s=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=h([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return a?"MMM"===t?-1!==(n=qe.call(this._shortMonthsParse,s))?n:null:-1!==(n=qe.call(this._longMonthsParse,s))?n:null:"MMM"===t?-1!==(n=qe.call(this._shortMonthsParse,s))||-1!==(n=qe.call(this._longMonthsParse,s))?n:null:-1!==(n=qe.call(this._longMonthsParse,s))||-1!==(n=qe.call(this._shortMonthsParse,s))?n:null}function pt(e,t,a){var i,n,r;if(this._monthsParseExact)return dt.call(this,e,t,a);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(n=h([2e3,i]),a&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),a||this._monthsParse[i]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),a&&"MMMM"===t&&this._longMonthsParse[i].test(e))return i;if(a&&"MMM"===t&&this._shortMonthsParse[i].test(e))return i;if(!a&&this._monthsParse[i].test(e))return i}}function ht(e,t){if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=Fe(t);else if(!u(t=e.localeData().monthsParse(t)))return e;var a=t,i=e.date();return i=i<29?i:Math.min(i,it(e.year(),a)),e._isUTC?e._d.setUTCMonth(a,i):e._d.setMonth(a,i),e}function ft(e){return null!=e?(ht(this,e),a.updateOffset(this,true),this):Xe(this,"Month")}function mt(){return it(this.year(),this.month())}function yt(e){return this._monthsParseExact?(s(this,"_monthsRegex")||bt.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=ot),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)}function gt(e){return this._monthsParseExact?(s(this,"_monthsRegex")||bt.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=lt),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)}function bt(){function e(e,t){return t.length-e.length}var t,a,i,n,r=[],s=[],o=[];for(t=0;t<12;t++)a=h([2e3,t]),i=Ce(this.monthsShort(a,"")),n=Ce(this.months(a,"")),r.push(i),s.push(n),o.push(n),o.push(i);r.sort(e),s.sort(e),o.sort(e),this._monthsRegex=new RegExp("^("+o.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i");}function vt(e,t,a,i,n,r,s){var o;return e<100&&e>=0?(o=new Date(e+400,t,a,i,n,r,s),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,a,i,n,r,s),o}function _t(e){var t,a;return e<100&&e>=0?((a=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function wt(e,t,a){var i=7+t-a;return -(7+_t(e,0,i).getUTCDay()-t)%7+i-1}function At(e,t,a,i,n){var r,s,o=1+7*(t-1)+(7+a-i)%7+wt(e,i,n);return o<=0?s=Ge(r=e-1)+o:o>Ge(e)?(r=e+1,s=o-Ge(e)):(r=e,s=o),{year:r,dayOfYear:s}}function kt(e,t,a){var i,n,r=wt(e.year(),t,a),s=Math.floor((e.dayOfYear()-r-1)/7)+1;return s<1?i=s+St(n=e.year()-1,t,a):s>St(e.year(),t,a)?(i=s-St(e.year(),t,a),n=e.year()+1):(n=e.year(),i=s),{week:i,year:n}}function St(e,t,a){var i=wt(e,t,a),n=wt(e+1,t,a);return (Ge(e)-i+n)/7}function Nt(e){return kt(e,this._week.dow,this._week.doy).week}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),Me("w",he,Ne),Me("ww",he,ue),Me("W",he,Ne),Me("WW",he,ue),Le(["w","ww","W","WW"],(function(e,t,a,i){t[i.substr(0,1)]=Fe(e);}));var Tt={dow:0,doy:6};function Mt(){return this._week.dow}function xt(){return this._week.doy}function Vt(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Ct(e){var t=kt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function It(e,t){return "string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function Ft(e,t){return "string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Et(e,t){return e.slice(t,7).concat(e.slice(0,t))}j("d",0,"do","day"),j("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),j("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),j("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),Me("d",he),Me("e",he),Me("E",he),Me("dd",(function(e,t){return t.weekdaysMinRegex(e)})),Me("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),Me("dddd",(function(e,t){return t.weekdaysRegex(e)})),Le(["dd","ddd","dddd"],(function(e,t,a,i){var n=a._locale.weekdaysParse(e,i,a._strict);null!=n?t.d=n:m(a).invalidWeekday=e;})),Le(["d","e","E"],(function(e,t,a,i){t[i]=Fe(e);}));var Dt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Lt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Rt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Pt=Se,Ot=Se,Bt=Se;function $t(e,t){var a=n(this._weekdays)?this._weekdays:this._weekdays[e&&true!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return true===e?Et(a,this._week.dow):e?a[e.day()]:a}function jt(e){return true===e?Et(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ut(e){return true===e?Et(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function zt(e,t,a){var i,n,r,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=h([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?-1!==(n=qe.call(this._weekdaysParse,s))?n:null:"ddd"===t?-1!==(n=qe.call(this._shortWeekdaysParse,s))?n:null:-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:"dddd"===t?-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._shortWeekdaysParse,s))||-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:"ddd"===t?-1!==(n=qe.call(this._shortWeekdaysParse,s))||-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:-1!==(n=qe.call(this._minWeekdaysParse,s))||-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._shortWeekdaysParse,s))?n:null}function Wt(e,t,a){var i,n,r;if(this._weekdaysParseExact)return zt.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(n=h([2e3,1]).day(i),a&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[i].test(e))return i;if(a&&"ddd"===t&&this._shortWeekdaysParse[i].test(e))return i;if(a&&"dd"===t&&this._minWeekdaysParse[i].test(e))return i;if(!a&&this._weekdaysParse[i].test(e))return i}}function Ht(e){if(!this.isValid())return null!=e?this:NaN;var t=Xe(this,"Day");return null!=e?(e=It(e,this.localeData()),this.add(e-t,"d")):t}function Yt(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Gt(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Ft(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function qt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=Pt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Zt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ot),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Jt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Bt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Kt(){function e(e,t){return t.length-e.length}var t,a,i,n,r,s=[],o=[],l=[],u=[];for(t=0;t<7;t++)a=h([2e3,1]).day(t),i=Ce(this.weekdaysMin(a,"")),n=Ce(this.weekdaysShort(a,"")),r=Ce(this.weekdays(a,"")),s.push(i),o.push(n),l.push(r),u.push(i),u.push(n),u.push(r);s.sort(e),o.sort(e),l.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i");}function Xt(){return this.hours()%12||12}function Qt(){return this.hours()||24}function ea(e,t){j(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}));}function ta(e,t){return t._meridiemParse}function aa(e){return "p"===(e+"").toLowerCase().charAt(0)}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,Xt),j("k",["kk",2],0,Qt),j("hmm",0,0,(function(){return ""+Xt.apply(this)+D(this.minutes(),2)})),j("hmmss",0,0,(function(){return ""+Xt.apply(this)+D(this.minutes(),2)+D(this.seconds(),2)})),j("Hmm",0,0,(function(){return ""+this.hours()+D(this.minutes(),2)})),j("Hmmss",0,0,(function(){return ""+this.hours()+D(this.minutes(),2)+D(this.seconds(),2)})),ea("a",true),ea("A",false),Me("a",ta),Me("A",ta),Me("H",he,Te),Me("h",he,Ne),Me("k",he,Ne),Me("HH",he,ue),Me("hh",he,ue),Me("kk",he,ue),Me("hmm",fe),Me("hmmss",me),Me("Hmm",fe),Me("Hmmss",me),De(["H","HH"],je),De(["k","kk"],(function(e,t,a){var i=Fe(e);t[je]=24===i?0:i;})),De(["a","A"],(function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e;})),De(["h","hh"],(function(e,t,a){t[je]=Fe(e),m(a).bigHour=true;})),De("hmm",(function(e,t,a){var i=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i)),m(a).bigHour=true;})),De("hmmss",(function(e,t,a){var i=e.length-4,n=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i,2)),t[ze]=Fe(e.substr(n)),m(a).bigHour=true;})),De("Hmm",(function(e,t,a){var i=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i));})),De("Hmmss",(function(e,t,a){var i=e.length-4,n=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i,2)),t[ze]=Fe(e.substr(n));}));var ia=/[ap]\.?m?\.?/i,na=Ke("Hours",true);function ra(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"}var sa,oa={calendar:F,longDateFormat:Y,invalidDate:q,ordinal:J,dayOfMonthOrdinalParse:K,relativeTime:Q,months:nt,monthsShort:rt,week:Tt,weekdays:Dt,weekdaysMin:Rt,weekdaysShort:Lt,meridiemParse:ia},la={},ua={};function ca(e,t){var a,i=Math.min(e.length,t.length);for(a=0;a<i;a+=1)if(e[a]!==t[a])return a;return i}function da(e){return e?e.toLowerCase().replace("_","-"):e}function pa(e){for(var t,a,i,n,r=0;r<e.length;){for(t=(n=da(e[r]).split("-")).length,a=(a=da(e[r+1]))?a.split("-"):null;t>0;){if(i=fa(n.slice(0,t).join("-")))return i;if(a&&a.length>=t&&ca(n,a)>=t-1)break;t--;}r++;}return sa}function ha(e){return !(!e||!e.match("^[^/\\\\]*$"))}function fa(e){var t=null;if(void 0===la[e]&&B$9&&B$9.exports&&ha(e))try{t=sa._abbr,R$a("./locale/"+e),ma(t);}catch(t){la[e]=null;}return la[e]}function ma(e,t){var a;return e&&((a=l(t)?ba(e):ya(e,t))?sa=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),sa._abbr}function ya(e,t){if(null!==t){var a,i=oa;if(t.abbr=e,null!=la[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=la[e]._config;else if(null!=t.parentLocale)if(null!=la[t.parentLocale])i=la[t.parentLocale]._config;else {if(null==(a=fa(t.parentLocale)))return ua[t.parentLocale]||(ua[t.parentLocale]=[]),ua[t.parentLocale].push({name:e,config:t}),null;i=a._config;}return la[e]=new I(C(i,t)),ua[e]&&ua[e].forEach((function(e){ya(e.name,e.config);})),ma(e),la[e]}return delete la[e],null}function ga(e,t){if(null!=t){var a,i,n=oa;null!=la[e]&&null!=la[e].parentLocale?la[e].set(C(la[e]._config,t)):(null!=(i=fa(e))&&(n=i._config),t=C(n,t),null==i&&(t.abbr=e),(a=new I(t)).parentLocale=la[e],la[e]=a),ma(e);}else null!=la[e]&&(null!=la[e].parentLocale?(la[e]=la[e].parentLocale,e===ma()&&ma(e)):null!=la[e]&&delete la[e]);return la[e]}function ba(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return sa;if(!n(e)){if(t=fa(e))return t;e=[e];}return pa(e)}function va(){return N(la)}function _a(e){var t,a=e._a;return a&&-2===m(e).overflow&&(t=a[Be]<0||a[Be]>11?Be:a[$e]<1||a[$e]>it(a[Oe],a[Be])?$e:a[je]<0||a[je]>24||24===a[je]&&(0!==a[Ue]||0!==a[ze]||0!==a[We])?je:a[Ue]<0||a[Ue]>59?Ue:a[ze]<0||a[ze]>59?ze:a[We]<0||a[We]>999?We:-1,m(e)._overflowDayOfYear&&(t<Oe||t>$e)&&(t=$e),m(e)._overflowWeeks&&-1===t&&(t=He),m(e)._overflowWeekday&&-1===t&&(t=Ye),m(e).overflow=t),e}var wa=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Aa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ka=/Z|[+-]\d\d(?::?\d\d)?/,Sa=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],Na=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ta=/^\/?Date\((-?\d+)/i,Ma=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Va(e){var t,a,i,n,r,s,o=e._i,l=wa.exec(o)||Aa.exec(o),u=Sa.length,c=Na.length;if(l){for(m(e).iso=true,t=0,a=u;t<a;t++)if(Sa[t][1].exec(l[1])){n=Sa[t][0],i=false!==Sa[t][2];break}if(null==n)return void(e._isValid=false);if(l[3]){for(t=0,a=c;t<a;t++)if(Na[t][1].exec(l[3])){r=(l[2]||" ")+Na[t][0];break}if(null==r)return void(e._isValid=false)}if(!i&&null!=r)return void(e._isValid=false);if(l[4]){if(!ka.exec(l[4]))return void(e._isValid=false);s="Z";}e._f=n+(r||"")+(s||""),ja(e);}else e._isValid=false;}function Ca(e,t,a,i,n,r){var s=[Ia(e),rt.indexOf(t),parseInt(a,10),parseInt(i,10),parseInt(n,10)];return r&&s.push(parseInt(r,10)),s}function Ia(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Fa(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function Ea(e,t,a){return !e||Lt.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(m(a).weekdayMismatch=true,a._isValid=false,false)}function Da(e,t,a){if(e)return xa[e];if(t)return 0;var i=parseInt(a,10),n=i%100;return (i-n)/100*60+n}function La(e){var t,a=Ma.exec(Fa(e._i));if(a){if(t=Ca(a[4],a[3],a[2],a[5],a[6],a[7]),!Ea(a[1],t,e))return;e._a=t,e._tzm=Da(a[8],a[9],a[10]),e._d=_t.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),m(e).rfc2822=true;}else e._isValid=false;}function Ra(e){var t=Ta.exec(e._i);null===t?(Va(e),false===e._isValid&&(delete e._isValid,La(e),false===e._isValid&&(delete e._isValid,e._strict?e._isValid=false:a.createFromInputFallback(e)))):e._d=new Date(+t[1]);}function Pa(e,t,a){return null!=e?e:null!=t?t:a}function Oa(e){var t=new Date(a.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function Ba(e){var t,a,i,n,r,s=[];if(!e._d){for(i=Oa(e),e._w&&null==e._a[$e]&&null==e._a[Be]&&$a(e),null!=e._dayOfYear&&(r=Pa(e._a[Oe],i[Oe]),(e._dayOfYear>Ge(r)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=true),a=_t(r,0,e._dayOfYear),e._a[Be]=a.getUTCMonth(),e._a[$e]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=i[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[je]&&0===e._a[Ue]&&0===e._a[ze]&&0===e._a[We]&&(e._nextDay=true,e._a[je]=0),e._d=(e._useUTC?_t:vt).apply(null,s),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[je]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(m(e).weekdayMismatch=true);}}function $a(e){var t,a,i,n,r,s,o,l,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,s=4,a=Pa(t.GG,e._a[Oe],kt(Za(),1,4).year),i=Pa(t.W,1),((n=Pa(t.E,1))<1||n>7)&&(l=true)):(r=e._locale._week.dow,s=e._locale._week.doy,u=kt(Za(),r,s),a=Pa(t.gg,e._a[Oe],u.year),i=Pa(t.w,u.week),null!=t.d?((n=t.d)<0||n>6)&&(l=true):null!=t.e?(n=t.e+r,(t.e<0||t.e>6)&&(l=true)):n=r),i<1||i>St(a,r,s)?m(e)._overflowWeeks=true:null!=l?m(e)._overflowWeekday=true:(o=At(a,i,n,r,s),e._a[Oe]=o.year,e._dayOfYear=o.dayOfYear);}function ja(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],m(e).empty=true;var t,i,n,r,s,o,l,u=""+e._i,c=u.length,d=0;for(l=(n=H(e._f,e._locale).match(L)||[]).length,t=0;t<l;t++)r=n[t],(i=(u.match(xe(r,e))||[])[0])&&((s=u.substr(0,u.indexOf(i))).length>0&&m(e).unusedInput.push(s),u=u.slice(u.indexOf(i)+i.length),d+=i.length),$[r]?(i?m(e).empty=false:m(e).unusedTokens.push(r),Re(r,i,e)):e._strict&&!i&&m(e).unusedTokens.push(r);m(e).charsLeftOver=c-d,u.length>0&&m(e).unusedInput.push(u),e._a[je]<=12&&true===m(e).bigHour&&e._a[je]>0&&(m(e).bigHour=void 0),m(e).parsedDateParts=e._a.slice(0),m(e).meridiem=e._meridiem,e._a[je]=Ua(e._locale,e._a[je],e._meridiem),null!==(o=m(e).era)&&(e._a[Oe]=e._locale.erasConvertYear(o,e._a[Oe])),Ba(e),_a(e);}else La(e);else Va(e);}function Ua(e,t,a){var i;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?((i=e.isPM(a))&&t<12&&(t+=12),i||12!==t||(t=0),t):t}function za(e){var t,a,i,n,r,s,o=false,l=e._f.length;if(0===l)return m(e).invalidFormat=true,void(e._d=new Date(NaN));for(n=0;n<l;n++)r=0,s=false,t=_({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[n],ja(t),y(t)&&(s=true),r+=m(t).charsLeftOver,r+=10*m(t).unusedTokens.length,m(t).score=r,o?r<i&&(i=r,a=t):(null==i||r<i||s)&&(i=r,a=t,s&&(o=true));p(e,a||t);}function Wa(e){if(!e._d){var t=ne(e._i),a=void 0===t.day?t.date:t.day;e._a=d([t.year,t.month,a,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),Ba(e);}}function Ha(e){var t=new w(_a(Ya(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function Ya(e){var t=e._i,a=e._f;return e._locale=e._locale||ba(e._l),null===t||void 0===a&&""===t?g({nullInput:true}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),A(t)?new w(_a(t)):(c(t)?e._d=t:n(a)?za(e):a?ja(e):Ga(e),y(e)||(e._d=null),e))}function Ga(e){var t=e._i;l(t)?e._d=new Date(a.now()):c(t)?e._d=new Date(t.valueOf()):"string"==typeof t?Ra(e):n(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),Ba(e)):r(t)?Wa(e):u(t)?e._d=new Date(t):a.createFromInputFallback(e);}function qa(e,t,a,i,s){var l={};return true!==t&&false!==t||(i=t,t=void 0),true!==a&&false!==a||(i=a,a=void 0),(r(e)&&o(e)||n(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=true,l._useUTC=l._isUTC=s,l._l=a,l._i=e,l._f=t,l._strict=i,Ha(l)}function Za(e,t,a,i){return qa(e,t,a,i,false)}a.createFromInputFallback=S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""));})),a.ISO_8601=function(){},a.RFC_2822=function(){};var Ja=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Za.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:g()})),Ka=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Za.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:g()}));function Xa(e,t){var a,i;if(1===t.length&&n(t[0])&&(t=t[0]),!t.length)return Za();for(a=t[0],i=1;i<t.length;++i)t[i].isValid()&&!t[i][e](a)||(a=t[i]);return a}function Qa(){return Xa("isBefore",[].slice.call(arguments,0))}function ei(){return Xa("isAfter",[].slice.call(arguments,0))}var ti=function(){return Date.now?Date.now():+new Date},ai=["year","quarter","month","week","day","hour","minute","second","millisecond"];function ii(e){var t,a,i=false,n=ai.length;for(t in e)if(s(e,t)&&(-1===qe.call(ai,t)||null!=e[t]&&isNaN(e[t])))return false;for(a=0;a<n;++a)if(e[ai[a]]){if(i)return false;parseFloat(e[ai[a]])!==Fe(e[ai[a]])&&(i=true);}return true}function ni(){return this._isValid}function ri(){return xi(NaN)}function si(e){var t=ne(e),a=t.year||0,i=t.quarter||0,n=t.month||0,r=t.week||t.isoWeek||0,s=t.day||0,o=t.hour||0,l=t.minute||0,u=t.second||0,c=t.millisecond||0;this._isValid=ii(t),this._milliseconds=+c+1e3*u+6e4*l+1e3*o*60*60,this._days=+s+7*r,this._months=+n+3*i+12*a,this._data={},this._locale=ba(),this._bubble();}function oi(e){return e instanceof si}function li(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function ui(e,t,a){var i,n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),s=0;for(i=0;i<n;i++)Fe(e[i])!==Fe(t[i])&&s++;return s+r}function ci(e,t){j(e,0,0,(function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+D(~~(e/60),2)+t+D(~~e%60,2)}));}ci("Z",":"),ci("ZZ",""),Me("Z",Ae),Me("ZZ",Ae),De(["Z","ZZ"],(function(e,t,a){a._useUTC=true,a._tzm=pi(Ae,e);}));var di=/([\+\-]|\d\d)/gi;function pi(e,t){var a,i,n=(t||"").match(e);return null===n?null:0===(i=60*(a=((n[n.length-1]||[])+"").match(di)||["-",0,0])[1]+Fe(a[2]))?0:"+"===a[0]?i:-i}function hi(e,t){var i,n;return t._isUTC?(i=t.clone(),n=(A(e)||c(e)?e.valueOf():Za(e).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),a.updateOffset(i,false),i):Za(e).local()}function fi(e){return -Math.round(e._d.getTimezoneOffset())}function mi(e,t,i){var n,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=pi(Ae,e)))return this}else Math.abs(e)<16&&!i&&(e*=60);return !this._isUTC&&t&&(n=fi(this)),this._offset=e,this._isUTC=true,null!=n&&this.add(n,"m"),r!==e&&(!t||this._changeInProgress?Ei(this,xi(e-r,"m"),1,false):this._changeInProgress||(this._changeInProgress=true,a.updateOffset(this,true),this._changeInProgress=null)),this}return this._isUTC?r:fi(this)}function yi(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function gi(e){return this.utcOffset(0,e)}function bi(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=false,e&&this.subtract(fi(this),"m")),this}function vi(){if(null!=this._tzm)this.utcOffset(this._tzm,false,true);else if("string"==typeof this._i){var e=pi(we,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,true);}return this}function _i(e){return !!this.isValid()&&(e=e?Za(e).utcOffset():0,(this.utcOffset()-e)%60==0)}function wi(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ai(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e,t={};return _(t,this),(t=Ya(t))._a?(e=t._isUTC?h(t._a):Za(t._a),this._isDSTShifted=this.isValid()&&ui(t._a,e.toArray())>0):this._isDSTShifted=false,this._isDSTShifted}function ki(){return !!this.isValid()&&!this._isUTC}function Si(){return !!this.isValid()&&this._isUTC}function Ni(){return !!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var Ti=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Mi=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function xi(e,t){var a,i,n,r=e,o=null;return oi(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:u(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(o=Ti.exec(e))?(a="-"===o[1]?-1:1,r={y:0,d:Fe(o[$e])*a,h:Fe(o[je])*a,m:Fe(o[Ue])*a,s:Fe(o[ze])*a,ms:Fe(li(1e3*o[We]))*a}):(o=Mi.exec(e))?(a="-"===o[1]?-1:1,r={y:Vi(o[2],a),M:Vi(o[3],a),w:Vi(o[4],a),d:Vi(o[5],a),h:Vi(o[6],a),m:Vi(o[7],a),s:Vi(o[8],a)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=Ii(Za(r.from),Za(r.to)),(r={}).ms=n.milliseconds,r.M=n.months),i=new si(r),oi(e)&&s(e,"_locale")&&(i._locale=e._locale),oi(e)&&s(e,"_isValid")&&(i._isValid=e._isValid),i}function Vi(e,t){var a=e&&parseFloat(e.replace(",","."));return (isNaN(a)?0:a)*t}function Ci(e,t){var a={};return a.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(a.months,"M").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,"M"),a}function Ii(e,t){var a;return e.isValid()&&t.isValid()?(t=hi(t,e),e.isBefore(t)?a=Ci(e,t):((a=Ci(t,e)).milliseconds=-a.milliseconds,a.months=-a.months),a):{milliseconds:0,months:0}}function Fi(e,t){return function(a,i){var n;return null===i||isNaN(+i)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=a,a=i,i=n),Ei(this,xi(a,i),e),this}}function Ei(e,t,i,n){var r=t._milliseconds,s=li(t._days),o=li(t._months);e.isValid()&&(n=null==n||n,o&&ht(e,Xe(e,"Month")+o*i),s&&Qe(e,"Date",Xe(e,"Date")+s*i),r&&e._d.setTime(e._d.valueOf()+r*i),n&&a.updateOffset(e,s||o));}xi.fn=si.prototype,xi.invalid=ri;var Di=Fi(1,"add"),Li=Fi(-1,"subtract");function Ri(e){return "string"==typeof e||e instanceof String}function Pi(e){return A(e)||c(e)||Ri(e)||u(e)||Bi(e)||Oi(e)||null==e}function Oi(e){var t,a,i=r(e)&&!o(e),n=false,l=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],u=l.length;for(t=0;t<u;t+=1)a=l[t],n=n||s(e,a);return i&&n}function Bi(e){var t=n(e),a=false;return t&&(a=0===e.filter((function(t){return !u(t)&&Ri(e)})).length),t&&a}function $i(e){var t,a,i=r(e)&&!o(e),n=false,l=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<l.length;t+=1)a=l[t],n=n||s(e,a);return i&&n}function ji(e,t){var a=e.diff(t,"days",true);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"}function Ui(e,t){1===arguments.length&&(arguments[0]?Pi(arguments[0])?(e=arguments[0],t=void 0):$i(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var i=e||Za(),n=hi(i,this).startOf("day"),r=a.calendarFormat(this,n)||"sameElse",s=t&&(x(t[r])?t[r].call(this,i):t[r]);return this.format(s||this.localeData().calendar(r,this,Za(i)))}function zi(){return new w(this)}function Wi(e,t){var a=A(e)?e:Za(e);return !(!this.isValid()||!a.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()>a.valueOf():a.valueOf()<this.clone().startOf(t).valueOf())}function Hi(e,t){var a=A(e)?e:Za(e);return !(!this.isValid()||!a.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()<a.valueOf():this.clone().endOf(t).valueOf()<a.valueOf())}function Yi(e,t,a,i){var n=A(e)?e:Za(e),r=A(t)?t:Za(t);return !!(this.isValid()&&n.isValid()&&r.isValid())&&("("===(i=i||"()")[0]?this.isAfter(n,a):!this.isBefore(n,a))&&(")"===i[1]?this.isBefore(r,a):!this.isAfter(r,a))}function Gi(e,t){var a,i=A(e)?e:Za(e);return !(!this.isValid()||!i.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()===i.valueOf():(a=i.valueOf(),this.clone().startOf(t).valueOf()<=a&&a<=this.clone().endOf(t).valueOf()))}function qi(e,t){return this.isSame(e,t)||this.isAfter(e,t)}function Zi(e,t){return this.isSame(e,t)||this.isBefore(e,t)}function Ji(e,t,a){var i,n,r;if(!this.isValid())return NaN;if(!(i=hi(e,this)).isValid())return NaN;switch(n=6e4*(i.utcOffset()-this.utcOffset()),t=ie(t)){case "year":r=Ki(this,i)/12;break;case "month":r=Ki(this,i);break;case "quarter":r=Ki(this,i)/3;break;case "second":r=(this-i)/1e3;break;case "minute":r=(this-i)/6e4;break;case "hour":r=(this-i)/36e5;break;case "day":r=(this-i-n)/864e5;break;case "week":r=(this-i-n)/6048e5;break;default:r=this-i;}return a?r:Ie(r)}function Ki(e,t){if(e.date()<t.date())return -Ki(t,e);var a=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(a,"months");return -(a+(t-i<0?(t-i)/(i-e.clone().add(a-1,"months")):(t-i)/(e.clone().add(a+1,"months")-i)))||0}function Xi(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function Qi(e){if(!this.isValid())return null;var t=true!==e,a=t?this.clone().utc():this;return a.year()<0||a.year()>9999?W(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",W(a,"Z")):W(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function en(){if(!this.isValid())return "moment.invalid(/* "+this._i+" */)";var e,t,a,i,n="moment",r="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+n+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",i=r+'[")]',this.format(e+t+a+i)}function tn(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=W(this,e);return this.localeData().postformat(t)}function an(e,t){return this.isValid()&&(A(e)&&e.isValid()||Za(e).isValid())?xi({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function nn(e){return this.from(Za(),e)}function rn(e,t){return this.isValid()&&(A(e)&&e.isValid()||Za(e).isValid())?xi({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function sn(e){return this.to(Za(),e)}function on(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ba(e))&&(this._locale=t),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ln=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function un(){return this._locale}var cn=1e3,dn=60*cn,pn=60*dn,hn=3506328*pn;function fn(e,t){return (e%t+t)%t}function mn(e,t,a){return e<100&&e>=0?new Date(e+400,t,a)-hn:new Date(e,t,a).valueOf()}function yn(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-hn:Date.UTC(e,t,a)}function gn(e){var t,i;if(void 0===(e=ie(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?yn:mn,e){case "year":t=i(this.year(),0,1);break;case "quarter":t=i(this.year(),this.month()-this.month()%3,1);break;case "month":t=i(this.year(),this.month(),1);break;case "week":t=i(this.year(),this.month(),this.date()-this.weekday());break;case "isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case "day":case "date":t=i(this.year(),this.month(),this.date());break;case "hour":t=this._d.valueOf(),t-=fn(t+(this._isUTC?0:this.utcOffset()*dn),pn);break;case "minute":t=this._d.valueOf(),t-=fn(t,dn);break;case "second":t=this._d.valueOf(),t-=fn(t,cn);}return this._d.setTime(t),a.updateOffset(this,true),this}function bn(e){var t,i;if(void 0===(e=ie(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?yn:mn,e){case "year":t=i(this.year()+1,0,1)-1;break;case "quarter":t=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case "month":t=i(this.year(),this.month()+1,1)-1;break;case "week":t=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case "isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case "day":case "date":t=i(this.year(),this.month(),this.date()+1)-1;break;case "hour":t=this._d.valueOf(),t+=pn-fn(t+(this._isUTC?0:this.utcOffset()*dn),pn)-1;break;case "minute":t=this._d.valueOf(),t+=dn-fn(t,dn)-1;break;case "second":t=this._d.valueOf(),t+=cn-fn(t,cn)-1;}return this._d.setTime(t),a.updateOffset(this,true),this}function vn(){return this._d.valueOf()-6e4*(this._offset||0)}function _n(){return Math.floor(this.valueOf()/1e3)}function wn(){return new Date(this.valueOf())}function An(){var e=this;return [e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function kn(){var e=this;return {years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Sn(){return this.isValid()?this.toISOString():null}function Nn(){return y(this)}function Tn(){return p({},m(this))}function Mn(){return m(this).overflow}function xn(){return {input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Vn(e,t){var i,n,r,s=this._eras||ba("en")._eras;for(i=0,n=s.length;i<n;++i)switch("string"==typeof s[i].since&&(r=a(s[i].since).startOf("day"),s[i].since=r.valueOf()),typeof s[i].until){case "undefined":s[i].until=1/0;break;case "string":r=a(s[i].until).startOf("day").valueOf(),s[i].until=r.valueOf();}return s}function Cn(e,t,a){var i,n,r,s,o,l=this.eras();for(e=e.toUpperCase(),i=0,n=l.length;i<n;++i)if(r=l[i].name.toUpperCase(),s=l[i].abbr.toUpperCase(),o=l[i].narrow.toUpperCase(),a)switch(t){case "N":case "NN":case "NNN":if(s===e)return l[i];break;case "NNNN":if(r===e)return l[i];break;case "NNNNN":if(o===e)return l[i]}else if([r,s,o].indexOf(e)>=0)return l[i]}function In(e,t){var i=e.since<=e.until?1:-1;return void 0===t?a(e.since).year():a(e.since).year()+(t-e.offset)*i}function Fn(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].name;if(i[e].until<=a&&a<=i[e].since)return i[e].name}return ""}function En(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].narrow;if(i[e].until<=a&&a<=i[e].since)return i[e].narrow}return ""}function Dn(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].abbr;if(i[e].until<=a&&a<=i[e].since)return i[e].abbr}return ""}function Ln(){var e,t,i,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e)if(i=r[e].since<=r[e].until?1:-1,n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until||r[e].until<=n&&n<=r[e].since)return (this.year()-a(r[e].since).year())*i+r[e].offset;return this.year()}function Rn(e){return s(this,"_erasNameRegex")||zn.call(this),e?this._erasNameRegex:this._erasRegex}function Pn(e){return s(this,"_erasAbbrRegex")||zn.call(this),e?this._erasAbbrRegex:this._erasRegex}function On(e){return s(this,"_erasNarrowRegex")||zn.call(this),e?this._erasNarrowRegex:this._erasRegex}function Bn(e,t){return t.erasAbbrRegex(e)}function $n(e,t){return t.erasNameRegex(e)}function jn(e,t){return t.erasNarrowRegex(e)}function Un(e,t){return t._eraYearOrdinalRegex||ve}function zn(){var e,t,a,i,n,r=[],s=[],o=[],l=[],u=this.eras();for(e=0,t=u.length;e<t;++e)a=Ce(u[e].name),i=Ce(u[e].abbr),n=Ce(u[e].narrow),s.push(a),r.push(i),o.push(n),l.push(a),l.push(i),l.push(n);this._erasRegex=new RegExp("^("+l.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+r.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+o.join("|")+")","i");}function Wn(e,t){j(0,[e,e.length],0,t);}function Hn(e){return Kn.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function Yn(e){return Kn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function Gn(){return St(this.year(),1,4)}function qn(){return St(this.isoWeekYear(),1,4)}function Zn(){var e=this.localeData()._week;return St(this.year(),e.dow,e.doy)}function Jn(){var e=this.localeData()._week;return St(this.weekYear(),e.dow,e.doy)}function Kn(e,t,a,i,n){var r;return null==e?kt(this,i,n).year:(t>(r=St(e,i,n))&&(t=r),Xn.call(this,e,t,a,i,n))}function Xn(e,t,a,i,n){var r=At(e,t,a,i,n),s=_t(r.year,0,r.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}function Qn(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),Me("N",Bn),Me("NN",Bn),Me("NNN",Bn),Me("NNNN",$n),Me("NNNNN",jn),De(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,a,i){var n=a._locale.erasParse(e,i,a._strict);n?m(a).era=n:m(a).invalidEra=e;})),Me("y",ve),Me("yy",ve),Me("yyy",ve),Me("yyyy",ve),Me("yo",Un),De(["y","yy","yyy","yyyy"],Oe),De(["yo"],(function(e,t,a,i){var n;a._locale._eraYearOrdinalRegex&&(n=e.match(a._locale._eraYearOrdinalRegex)),a._locale.eraYearOrdinalParse?t[Oe]=a._locale.eraYearOrdinalParse(e,n):t[Oe]=parseInt(e,10);})),j(0,["gg",2],0,(function(){return this.weekYear()%100})),j(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Wn("gggg","weekYear"),Wn("ggggg","weekYear"),Wn("GGGG","isoWeekYear"),Wn("GGGGG","isoWeekYear"),Me("G",_e),Me("g",_e),Me("GG",he,ue),Me("gg",he,ue),Me("GGGG",ge,de),Me("gggg",ge,de),Me("GGGGG",be,pe),Me("ggggg",be,pe),Le(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,a,i){t[i.substr(0,2)]=Fe(e);})),Le(["gg","GG"],(function(e,t,i,n){t[n]=a.parseTwoDigitYear(e);})),j("Q",0,"Qo","quarter"),Me("Q",le),De("Q",(function(e,t){t[Be]=3*(Fe(e)-1);})),j("D",["DD",2],"Do","date"),Me("D",he,Ne),Me("DD",he,ue),Me("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),De(["D","DD"],$e),De("Do",(function(e,t){t[$e]=Fe(e.match(he)[0]);}));var er=Ke("Date",true);function tr(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}j("DDD",["DDDD",3],"DDDo","dayOfYear"),Me("DDD",ye),Me("DDDD",ce),De(["DDD","DDDD"],(function(e,t,a){a._dayOfYear=Fe(e);})),j("m",["mm",2],0,"minute"),Me("m",he,Te),Me("mm",he,ue),De(["m","mm"],Ue);var ar=Ke("Minutes",false);j("s",["ss",2],0,"second"),Me("s",he,Te),Me("ss",he,ue),De(["s","ss"],ze);var ir,nr,rr=Ke("Seconds",false);for(j("S",0,0,(function(){return ~~(this.millisecond()/100)})),j(0,["SS",2],0,(function(){return ~~(this.millisecond()/10)})),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),j(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),j(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),j(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),j(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),j(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),Me("S",ye,le),Me("SS",ye,ue),Me("SSS",ye,ce),ir="SSSS";ir.length<=9;ir+="S")Me(ir,ve);function sr(e,t){t[We]=Fe(1e3*("0."+e));}for(ir="S";ir.length<=9;ir+="S")De(ir,sr);function or(){return this._isUTC?"UTC":""}function lr(){return this._isUTC?"Coordinated Universal Time":""}nr=Ke("Milliseconds",false),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var ur=w.prototype;function cr(e){return Za(1e3*e)}function dr(){return Za.apply(null,arguments).parseZone()}function pr(e){return e}ur.add=Di,ur.calendar=Ui,ur.clone=zi,ur.diff=Ji,ur.endOf=bn,ur.format=tn,ur.from=an,ur.fromNow=nn,ur.to=rn,ur.toNow=sn,ur.get=et,ur.invalidAt=Mn,ur.isAfter=Wi,ur.isBefore=Hi,ur.isBetween=Yi,ur.isSame=Gi,ur.isSameOrAfter=qi,ur.isSameOrBefore=Zi,ur.isValid=Nn,ur.lang=ln,ur.locale=on,ur.localeData=un,ur.max=Ka,ur.min=Ja,ur.parsingFlags=Tn,ur.set=tt,ur.startOf=gn,ur.subtract=Li,ur.toArray=An,ur.toObject=kn,ur.toDate=wn,ur.toISOString=Qi,ur.inspect=en,"undefined"!=typeof Symbol&&null!=Symbol.for&&(ur[Symbol.for("nodejs.util.inspect.custom")]=function(){return "Moment<"+this.format()+">"}),ur.toJSON=Sn,ur.toString=Xi,ur.unix=_n,ur.valueOf=vn,ur.creationData=xn,ur.eraName=Fn,ur.eraNarrow=En,ur.eraAbbr=Dn,ur.eraYear=Ln,ur.year=Ze,ur.isLeapYear=Je,ur.weekYear=Hn,ur.isoWeekYear=Yn,ur.quarter=ur.quarters=Qn,ur.month=ft,ur.daysInMonth=mt,ur.week=ur.weeks=Vt,ur.isoWeek=ur.isoWeeks=Ct,ur.weeksInYear=Zn,ur.weeksInWeekYear=Jn,ur.isoWeeksInYear=Gn,ur.isoWeeksInISOWeekYear=qn,ur.date=er,ur.day=ur.days=Ht,ur.weekday=Yt,ur.isoWeekday=Gt,ur.dayOfYear=tr,ur.hour=ur.hours=na,ur.minute=ur.minutes=ar,ur.second=ur.seconds=rr,ur.millisecond=ur.milliseconds=nr,ur.utcOffset=mi,ur.utc=gi,ur.local=bi,ur.parseZone=vi,ur.hasAlignedHourOffset=_i,ur.isDST=wi,ur.isLocal=ki,ur.isUtcOffset=Si,ur.isUtc=Ni,ur.isUTC=Ni,ur.zoneAbbr=or,ur.zoneName=lr,ur.dates=S("dates accessor is deprecated. Use date instead.",er),ur.months=S("months accessor is deprecated. Use month instead",ft),ur.years=S("years accessor is deprecated. Use year instead",Ze),ur.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",yi),ur.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ai);var hr=I.prototype;function fr(e,t,a,i){var n=ba(),r=h().set(i,t);return n[a](r,e)}function mr(e,t,a){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return fr(e,t,a,"month");var i,n=[];for(i=0;i<12;i++)n[i]=fr(e,i,a,"month");return n}function yr(e,t,a,i){"boolean"==typeof e?(u(t)&&(a=t,t=void 0),t=t||""):(a=t=e,e=false,u(t)&&(a=t,t=void 0),t=t||"");var n,r=ba(),s=e?r._week.dow:0,o=[];if(null!=a)return fr(t,(a+s)%7,i,"day");for(n=0;n<7;n++)o[n]=fr(t,(n+s)%7,i,"day");return o}function gr(e,t){return mr(e,t,"months")}function br(e,t){return mr(e,t,"monthsShort")}function vr(e,t,a){return yr(e,t,a,"weekdays")}function _r(e,t,a){return yr(e,t,a,"weekdaysShort")}function wr(e,t,a){return yr(e,t,a,"weekdaysMin")}hr.calendar=E,hr.longDateFormat=G,hr.invalidDate=Z,hr.ordinal=X,hr.preparse=pr,hr.postformat=pr,hr.relativeTime=ee,hr.pastFuture=te,hr.set=V,hr.eras=Vn,hr.erasParse=Cn,hr.erasConvertYear=In,hr.erasAbbrRegex=Pn,hr.erasNameRegex=Rn,hr.erasNarrowRegex=On,hr.months=ut,hr.monthsShort=ct,hr.monthsParse=pt,hr.monthsRegex=gt,hr.monthsShortRegex=yt,hr.week=Nt,hr.firstDayOfYear=xt,hr.firstDayOfWeek=Mt,hr.weekdays=$t,hr.weekdaysMin=Ut,hr.weekdaysShort=jt,hr.weekdaysParse=Wt,hr.weekdaysRegex=qt,hr.weekdaysShortRegex=Zt,hr.weekdaysMinRegex=Jt,hr.isPM=aa,hr.meridiem=ra,ma("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Fe(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=S("moment.lang is deprecated. Use moment.locale instead.",ma),a.langData=S("moment.langData is deprecated. Use moment.localeData instead.",ba);var Ar=Math.abs;function kr(){var e=this._data;return this._milliseconds=Ar(this._milliseconds),this._days=Ar(this._days),this._months=Ar(this._months),e.milliseconds=Ar(e.milliseconds),e.seconds=Ar(e.seconds),e.minutes=Ar(e.minutes),e.hours=Ar(e.hours),e.months=Ar(e.months),e.years=Ar(e.years),this}function Sr(e,t,a,i){var n=xi(t,a);return e._milliseconds+=i*n._milliseconds,e._days+=i*n._days,e._months+=i*n._months,e._bubble()}function Nr(e,t){return Sr(this,e,t,1)}function Tr(e,t){return Sr(this,e,t,-1)}function Mr(e){return e<0?Math.floor(e):Math.ceil(e)}function xr(){var e,t,a,i,n,r=this._milliseconds,s=this._days,o=this._months,l=this._data;return r>=0&&s>=0&&o>=0||r<=0&&s<=0&&o<=0||(r+=864e5*Mr(Cr(o)+s),s=0,o=0),l.milliseconds=r%1e3,e=Ie(r/1e3),l.seconds=e%60,t=Ie(e/60),l.minutes=t%60,a=Ie(t/60),l.hours=a%24,s+=Ie(a/24),o+=n=Ie(Vr(s)),s-=Mr(Cr(n)),i=Ie(o/12),o%=12,l.days=s,l.months=o,l.years=i,this}function Vr(e){return 4800*e/146097}function Cr(e){return 146097*e/4800}function Ir(e){if(!this.isValid())return NaN;var t,a,i=this._milliseconds;if("month"===(e=ie(e))||"quarter"===e||"year"===e)switch(t=this._days+i/864e5,a=this._months+Vr(t),e){case "month":return a;case "quarter":return a/3;case "year":return a/12}else switch(t=this._days+Math.round(Cr(this._months)),e){case "week":return t/7+i/6048e5;case "day":return t+i/864e5;case "hour":return 24*t+i/36e5;case "minute":return 1440*t+i/6e4;case "second":return 86400*t+i/1e3;case "millisecond":return Math.floor(864e5*t)+i;default:throw new Error("Unknown unit "+e)}}function Fr(e){return function(){return this.as(e)}}var Er=Fr("ms"),Dr=Fr("s"),Lr=Fr("m"),Rr=Fr("h"),Pr=Fr("d"),Or=Fr("w"),Br=Fr("M"),$r=Fr("Q"),jr=Fr("y"),Ur=Er;function zr(){return xi(this)}function Wr(e){return e=ie(e),this.isValid()?this[e+"s"]():NaN}function Hr(e){return function(){return this.isValid()?this._data[e]:NaN}}var Yr=Hr("milliseconds"),Gr=Hr("seconds"),qr=Hr("minutes"),Zr=Hr("hours"),Jr=Hr("days"),Kr=Hr("months"),Xr=Hr("years");function Qr(){return Ie(this.days()/7)}var es=Math.round,ts={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function as(e,t,a,i,n){return n.relativeTime(t||1,!!a,e,i)}function is(e,t,a,i){var n=xi(e).abs(),r=es(n.as("s")),s=es(n.as("m")),o=es(n.as("h")),l=es(n.as("d")),u=es(n.as("M")),c=es(n.as("w")),d=es(n.as("y")),p=r<=a.ss&&["s",r]||r<a.s&&["ss",r]||s<=1&&["m"]||s<a.m&&["mm",s]||o<=1&&["h"]||o<a.h&&["hh",o]||l<=1&&["d"]||l<a.d&&["dd",l];return null!=a.w&&(p=p||c<=1&&["w"]||c<a.w&&["ww",c]),(p=p||u<=1&&["M"]||u<a.M&&["MM",u]||d<=1&&["y"]||["yy",d])[2]=t,p[3]=+e>0,p[4]=i,as.apply(null,p)}function ns(e){return void 0===e?es:"function"==typeof e&&(es=e,true)}function rs(e,t){return void 0!==ts[e]&&(void 0===t?ts[e]:(ts[e]=t,"s"===e&&(ts.ss=t-1),true))}function ss(e,t){if(!this.isValid())return this.localeData().invalidDate();var a,i,n=false,r=ts;return "object"==typeof e&&(t=e,e=false),"boolean"==typeof e&&(n=e),"object"==typeof t&&(r=Object.assign({},ts,t),null!=t.s&&null==t.ss&&(r.ss=t.s-1)),i=is(this,!n,r,a=this.localeData()),n&&(i=a.pastFuture(+this,i)),a.postformat(i)}var os=Math.abs;function ls(e){return (e>0)-(e<0)||+e}function us(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a,i,n,r,s,o,l=os(this._milliseconds)/1e3,u=os(this._days),c=os(this._months),d=this.asSeconds();return d?(e=Ie(l/60),t=Ie(e/60),l%=60,e%=60,a=Ie(c/12),c%=12,i=l?l.toFixed(3).replace(/\.?0+$/,""):"",n=d<0?"-":"",r=ls(this._months)!==ls(d)?"-":"",s=ls(this._days)!==ls(d)?"-":"",o=ls(this._milliseconds)!==ls(d)?"-":"",n+"P"+(a?r+a+"Y":"")+(c?r+c+"M":"")+(u?s+u+"D":"")+(t||e||l?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(l?o+i+"S":"")):"P0D"}var cs=si.prototype;return cs.isValid=ni,cs.abs=kr,cs.add=Nr,cs.subtract=Tr,cs.as=Ir,cs.asMilliseconds=Er,cs.asSeconds=Dr,cs.asMinutes=Lr,cs.asHours=Rr,cs.asDays=Pr,cs.asWeeks=Or,cs.asMonths=Br,cs.asQuarters=$r,cs.asYears=jr,cs.valueOf=Ur,cs._bubble=xr,cs.clone=zr,cs.get=Wr,cs.milliseconds=Yr,cs.seconds=Gr,cs.minutes=qr,cs.hours=Zr,cs.days=Jr,cs.weeks=Qr,cs.months=Kr,cs.years=Xr,cs.humanize=ss,cs.toISOString=us,cs.toString=us,cs.toJSON=us,cs.locale=on,cs.localeData=un,cs.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",us),cs.lang=ln,j("X",0,0,"unix"),j("x",0,0,"valueOf"),Me("x",_e),Me("X",ke),De("X",(function(e,t,a){a._d=new Date(1e3*parseFloat(e));})),De("x",(function(e,t,a){a._d=new Date(Fe(e));})),
|
|
6583
|
+
let o$2 = class o{func;owner;constructor(e,t){this.func=e,this.owner=t;}};let l$2 = class l{_debugMode=false;_listeners=new Map;_onceListeners=new Map;_catchAllListeners=[];_capturedEvents=new Map;_capturedAccumulatedDuration=0;constructor(){}setDebugMode(e){this._debugMode&&!e&&(console.log("Captured events: ",this._capturedEvents),console.log(`Total duration: ${this._capturedAccumulatedDuration}ms`)),this._debugMode=e,this._capturedEvents=new Map,this._capturedAccumulatedDuration=0;}$clear(){this._listeners.clear(),this._onceListeners.clear();}clearCatchAllListeners(){this._catchAllListeners=[];}listenerCount(e){let t=0;return t+=this._listeners.get(e)?.length||0,t+=this._onceListeners.get(e)?.length||0,t}$hasListener(e){return this.listenerCount(e)>0}$catchAll(e,t){this._catchAllListeners.push(new o$2(e,t));}$on(e,t,a){let i;this._listeners.has(e)?i=this._listeners.get(e):(i=[],this._listeners.set(e,i)),i.push(new o$2(t,a));}$once(e,t,a){let i;this._onceListeners.has(e)?i=this._onceListeners.get(e):(i=[],this._onceListeners.set(e,i)),i.push(new o$2(t,a));}$off(e,t,a){let i=0;if(this._listeners.has(e)){i+=this._listeners.get(e).removeByFilterFunc((e=>e.func===t&&e.owner===a));}if(this._onceListeners.has(e)){i+=this._onceListeners.get(e).removeByFilterFunc((e=>e.func===t&&e.owner===a));}return i}$offByOwner(e,t){let a=0;if(this._listeners.has(e)){a+=this._listeners.get(e).removeByFilterFunc((e=>e.owner===t));}if(this._onceListeners.has(e)){a+=this._onceListeners.get(e).removeByFilterFunc((e=>e.owner===t));}return a}$emitSync(e,...t){const a=[],i=performance.now();let n=0;try{for(const i of this._catchAllListeners.values())try{const r=i.func.call(i.owner,e,...t);r&&r.then&&a.push(r),n++;}catch(e){console.error(e);}if(this._listeners.has(e)){const i=this._listeners.get(e);for(const e of i)try{const i=e.func.call(e.owner,...t);i&&i.then&&a.push(i),n++;}catch(e){console.error(e);}}if(this._onceListeners.has(e)){const i=this._onceListeners.get(e);for(const e of i)try{const i=e.func.call(e.owner,...t);i&&i.then&&a.push(i),n++;}catch(e){console.error(e);}this._onceListeners.set(e,[]);}}catch(e){console.error(e);}if(this._debugMode&&"log"!==e){const t=performance.now(),r=Math.floor(t-i);let s=this._capturedEvents.get(e);s?(s.count++,s.duration+=r,s.promises+=a.length,s.sentTo+=n):(s={eventType:e,count:1,duration:r,promises:a.length,sentTo:n},this._capturedEvents.set(e,s)),r>3&&console.log(`Expensive event ${e}: ${r}ms`);}return a.length>0?Promise.all(a):null}$emit(e,...t){return new Promise((a=>{a(this.$emitSync(e,...t));}))}};const u$3=new l$2;let c$3 = class c{type;itemId;elementId;target;prop;value;oldValue;createdAt=Date.now();moveTargetArray;moveTargetArrayIndex;moveTargetElementId;start;length;position;elementsToDelete;field;fieldId;isLink;bundleIndex=0;_undoFunction;_redoFunction;constructor(e,t,a,i,n,r,s){this.type=e,this.itemId=t,this.elementId=a,this.target=i,this.prop=n,this.value=r,this.oldValue=s;}async undo(){this._undoFunction&&await this._undoFunction();}async redo(){this._redoFunction&&await this._redoFunction();}setUndoFunction(e){this._undoFunction=e;}setRedoFunction(e){this._redoFunction=e;}setMoveTarget(e,t,a){this.moveTargetArray=e,this.moveTargetArrayIndex=t,this.moveTargetElementId=a;}setRange(e,t){this.start=e,this.length=t;}setPosition(e){this.position=e;}setElementsToDelete(e){this.elementsToDelete=e;}setField(e){this.field=e;}setFieldId(e){this.fieldId=e;}setIsLink(e){this.isLink=e;}clone(){return Object.assign(new c,this)}isWithinMergeDeltaOf(e,t){return Math.abs(e.createdAt-this.createdAt)<=t}isMergeableWith(e,t){if(!this.isWithinMergeDeltaOf(e,t))return false;const a=e.type===this.type&&e.itemId===this.itemId&&e.elementId===this.elementId&&e.target===this.target&&e.prop===this.prop,i=void 0!==e.value&&void 0!==e.oldValue&&void 0===e.start&&void 0===e.length&&void 0===e.position&&void 0===e.elementsToDelete;return a&&i}merge(e,t){if(!this.isMergeableWith(e,t))return null;let a=this.clone();return a.value=e.value,a.createdAt=e.createdAt,a._redoFunction=e._redoFunction,a}};const d$1=new e$2({dictionary:"hex",length:12});let p$1=(new Date).valueOf();var h$2={createItemOrBlockID:function(){return d$1.rnd()},createFieldID:function(){return (p$1++).toString()},createGUID:function(){return d$1.rnd()},createGeneratedItemId:function(){return "gen_"+this.createGUID()},toUserFriendlyName:function(e){return e.replace(/_./g,(e=>e.charAt(1).toUpperCase())).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^(.)/,(e=>e.toUpperCase()))},assert:function(e,t){e||console.error(`ASSERTION FAILED: '${e}' is untrue: ${t}`);},matchItemIdAndObject:(e,t)=>!(!e||!t)&&(e._id===t||e===t._id),getDepth(e,t=new WeakSet){if(null===e||"object"!=typeof e)return 1;const a=e;if(t.has(a))return 0;t.add(a);const i=Array.isArray(a)?a:Object.values(a);let n=0;for(const e of i){const a=this.getDepth(e,t);a>n&&(n=a);}return 1+n},areValuesEqual(e,t,a=3){if(e===t)return true;if("number"==typeof e&&"number"==typeof t)return isNaN(e)&&isNaN(t);if(null==e||null==t||typeof e!=typeof t)return false;if("object"!=typeof e)return false;if(Array.isArray(e)!==Array.isArray(t))return false;if(e._id&&e._id!==t._id)return false;const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return false;for(let n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return false;if(a>0&&!this.areValuesEqual(e[n],t[n],a-1))return false}return true},startTimer(e){const t=Date.now();return e&&console.log(`[TIMER] - ${e}`),function(e){const a=Date.now()-t;e?console.log(`[TIMER] - ${e}: ${a}ms`):console.log(`[TIMER] - ${a}ms`);}},dataURItoBlob(e){const t=e.split(",")[0].split(":")[1].split(";")[0],a=atob(e.split(",")[1]),i=[];for(let e=0;e<a.length;e++)i.push(a.charCodeAt(e));return new Blob([new Uint8Array(i)],{type:t})},xmur3(e){let t=1779033703^e.length;for(let a=0;a<e.length;a++)t=Math.imul(t^e.charCodeAt(a),3432918353),t=t<<13|t>>>19;return ()=>(t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),t^=t>>>16,t>>>0)},mulberry32:e=>()=>{let t=e+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296},hslToRgb(e,t,a){const i=(1-Math.abs(2*a-1))*t,n=e/60,r=i*(1-Math.abs(n%2-1));let[s,o,l]=[0,0,0];[s,o,l]=n>=0&&n<1?[i,r,0]:n<2?[r,i,0]:n<3?[0,i,r]:n<4?[0,r,i]:n<5?[r,0,i]:[i,0,r];const u=a-i/2;return [Math.round(255*(s+u)),Math.round(255*(o+u)),Math.round(255*(l+u))]},rgbToHex:(e,t,a)=>"#"+[e,t,a].map((e=>e.toString(16).padStart(2,"0"))).join(""),colorFromString(e,t={}){const{minS:a=.72,maxS:i=.97,minL:n=.48,maxL:r=.62,return:s="hex"}=t,o=this.xmur3(e)(),l=this.mulberry32(o),u=Math.floor(360*l()),c=a+l()*(i-a),d=n+l()*(r-n);if("hsl"===s)return `hsl(${u} ${Math.round(100*c)}% ${Math.round(100*d)}%)`;const[p,h,f]=this.hslToRgb(u,c,d);return "rgb"===s?`rgb(${p}, ${h}, ${f})`:this.rgbToHex(p,h,f)},async downloadFile(e,a){if(e.startsWith("blob:")){const t=await fetch(e),a=await t.blob();return {data:a,mimeType:a.type}}return axios.get(e,{responseType:"blob",onDownloadProgress:e=>{if(a&&e.total){const t=Math.round(100*e.loaded/e.total);a(t,e.total,e.loaded);}}})}};const f$1=new Set(["dependantFields","conditionFields","dependenciesInitialized","_hidden","_updateConditions"]),m=new Set(["__proto__","__ob__","isSelected","isDirty","options","_hidden","_updateConditions","dependantFields","conditionFields","separatorFields","dependenciesInitialized","order","inject","type","datatype","minValue","maxValue","id","linkableTypes"]),y$4=new Set(["isSelected","isDirty","_hidden","_updateConditions","options","dependantFields","conditionFields","separatorFields","dependenciesInitialized","id","linkableTypes"]);let g$1 = class g{suppressDirty=false;undoManager;_promises=[];_capturePromises=false;_profiledEvents=[];_profiling=false;_profilerStartTime=0;_profiledCount=0;static _instance;static get instance(){return this._instance||(this._instance=new this)}constructor(){}suppressDirtyFlag(e){this.suppressDirty=e;}setUndoManager(e){this.undoManager=e;}isUndoManagerActive(){return this.undoManager?.getEnabled()}_postUndoManagerEvent(e){this.undoManager&&(y$4.has(e.prop)||this.undoManager.event(e));}setItemDirty(e,t,a,i){this.suppressDirty||e.isDirty||a===i||m.has(t)||e.markDirty();}capturePromise(e){try{return this._capturePromises=!0,e(),Promise.all(this._promises)}finally{this._capturePromises=false,this._promises=[];}}startProfiling(){this._profiling=true,this._profiledEvents=[],this._profiledCount=0,this._profilerStartTime=performance.now(),u$3.setDebugMode(true);}endProfiling(){const e=performance.now()-this._profilerStartTime;u$3.setDebugMode(false),console.log("Profiled events: ",this._profiledEvents),console.log(`Profiling took ${e}ms`);}_addPromise(e){this._capturePromises&&this._promises.push(e);}_proxyObject(e,t,a,i){const n=this;if(!e)throw "_proxyObject(): Object is not defined. Cannot create proxy!";if(!a)throw "_proxyObject(): Item is not defined. Cannot create proxy!";if(!i)throw "_proxyObject(): Options is not defined. Cannot create proxy!";return new Proxy(e,{set:function(r,s,o){if(f$1.has(s))return Reflect.set(r,s,o);const l=performance.now();let d=n.isUndoManagerActive();const p=Reflect.get(r,s);if(h$2.areValuesEqual(p,o))return true;let m=Reflect.set(r,s,o);function y(n,o){const l=new c$3(i.proxyEventTypeName,a._id,t?t.id:null,r,s,n,o);return i.isField&&(l.setField(e.name),l.setFieldId(e.id)),void 0!==i.isLink&&l.setIsLink(i.isLink),l}i.changeDoesNotMakeItemDirty||(h$2.matchItemIdAndObject(p,o)?d=false:n.setItemDirty(a,s,p,o));const g=y(o,p);d&&(g.setUndoFunction((()=>{Reflect.set(r,s,g.oldValue);const e=y(g.oldValue,g.value);u$3.$emitSync("proxy:valueChange",e),i.changeEventFunc(e);})),g.setRedoFunction((()=>{Reflect.set(r,s,g.value);const e=y(g.value,g.oldValue);u$3.$emitSync("proxy:valueChange",e),i.changeEventFunc(e);}))),i.changeEventFunc(g),d&&n._postUndoManagerEvent(g),u$3.$emitSync("proxy:valueChange",g);const b=performance.now();return n._profiledCount++,n._profiledEvents.push({event:g,type:"object",duration:b-l}),m}})}_proxyArray(e,t,a,i){const n=this;if(!e)throw "_proxyArray(): Array is not defined. Cannot create proxy!";if(!a)throw "_proxyArray(): Item is not defined. Cannot create proxy!";if(!i)throw "_proxyArray(): Options is not defined. Cannot create proxy!";return new Proxy(e,{set(e,r,s){const o=performance.now(),l=Reflect.get(e,r);let d=Reflect.set(e,r,s);if("length"!==r&&"__proto__"!==r){const p=n.isUndoManagerActive();function h(n,s){const o=new c$3("arraySetValue",a._id,t?t.id:null,e,r,n,s);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o}i.changeDoesNotMakeItemDirty||n.setItemDirty(a,r,l,s);const f=h(s,l);p&&(f.setUndoFunction((()=>{const t=h(f.oldValue,f.value),a=parseInt(r);if(void 0===f.oldValue&&e.length-1===a){const i=e.pop();t.setElementsToDelete([i]),t.setRange(a,1);}else Reflect.set(e,r,f.oldValue);u$3.$emitSync("proxy:valueChange",t),i.deleteEventFunc(t);})),f.setRedoFunction((()=>{Reflect.set(e,r,f.value);const t=h(f.value,f.oldValue);u$3.$emitSync("proxy:valueChange",t),i.addEventFunc(t);}))),i.addEventFunc(f),p&&n._postUndoManagerEvent(f),u$3.$emitSync("proxy:valueChange",f);const m=performance.now();n._profiledCount++,n._profiledEvents.push({event:f,type:"set_array",duration:m-o});}return d},get(r,s){if("splice"===s){const e=Reflect.get(r,s);return function(...o){const l=o[0],d=o[1],p=[];for(let e=l;e<l+d;e++){const t=r[e];p.push(t);}function h(e,n,s){const o=new c$3("arraySpliceRemove",a._id,t?t.id:null,r);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o.setRange(e,n),o.setElementsToDelete(s),o}function f(e,n){const o=new c$3("arraySpliceAdd",a._id,t?t.id:null,r,s,n);return i.field&&(o.setField(i.field.name),o.setFieldId(i.field.id)),o.setPosition(e),o}if(e.apply(r,o),n.setItemDirty(a,s,true,false),d>0&&o.length<3){const e=n.isUndoManagerActive(),t=h(l,d,p);e&&(t.setUndoFunction((()=>{r.splice(l,0,...p);const e=f(l,p);u$3.$emitSync("proxy:valueChange",e),i.addEventFunc(e);})),t.setRedoFunction((()=>{r.splice(l,d);const e=h(l,d,p);u$3.$emitSync("proxy:valueChange",e),i.deleteEventFunc(e);}))),i.deleteEventFunc(t),e&&n._postUndoManagerEvent(t),u$3.$emitSync("proxy:valueChange",t);}else if(o.length>2){const e=o.slice(2),t=f(l,e);t.setPosition(l),t.setUndoFunction((()=>{r.splice(l,e.length);const t=h(l,e.length,e);u$3.$emitSync("proxy:valueChange",t),i.deleteEventFunc(t);})),t.setRedoFunction((()=>{r.splice(l,0,...e);const t=f(l,e);u$3.$emitSync("proxy:valueChange",t),i.addEventFunc(t);})),i.addEventFunc(t),n._postUndoManagerEvent(t),u$3.$emitSync("proxy:valueChange",t);}}}return "moveToArray"===s?function(e,o,l){const d=r,p=t,{array:h,element:f}=o.getTargetArrayAndElement();function m(e,t,a,i){i=void 0===i?a.length:i;const n=Reflect.get(e,"splice").apply(e,[t,1]);if(n.length>0){const e=n[0];return Reflect.get(a,"splice").apply(a,[i,0,e]),e}return null}const y=m(d,e,h,l);if(y){function g(e,i,n,r,s,o){const l=new c$3("arrayMoveToArray",a._id,t?t.id:null,e,void 0,o);return l.setRange(i,1),l.setMoveTarget(n,r,s?s.id:null),l}n.setItemDirty(a,s,true,false);const b=n.isUndoManagerActive(),v=g(d,e,o,l,f,y);b&&(v.setUndoFunction((()=>{const t=m(h,l,d,e),a=g(o,l,d,e,p,t);u$3.$emitSync("proxy:valueChange",a),i.moveEventFunc(a);})),v.setRedoFunction((()=>{const t=m(d,e,h,l),a=g(d,e,o,l,f,t);u$3.$emitSync("proxy:valueChange",a),i.moveEventFunc(a);}))),i.moveEventFunc(v),b&&n._postUndoManagerEvent(v),u$3.$emitSync("proxy:valueChange",v);}}:"getTargetArrayAndElement"===s?function(){return {array:e,element:t}}:("move"===s&&console.warn("'move' prop is not implemented in Proxifier"),Reflect.get(r,s))}})}proxyBlockArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockAdded",e));},deleteEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockDeleted",e));},moveEventFunc:e=>{this._addPromise(u$3.$emit("itemRepo:blockMoved",e));}})}proxyListArray(e,t,a){return this._proxyArray(e,null,a,{field:t,addEventFunc:function(e){u$3.$emit("itemRepo:listEntryAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:listEntryDeleted",e);}})}proxyScriptArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:function(e){u$3.$emit("itemRepo:scriptAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:scriptDeleted",e);}})}proxyBlock(e,t){return this._proxyObject(e,e,t,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"blockSetValue"})}proxyGraphBlock(e,t){return this._proxyObject(e,e,t,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:graphNodeChanged",e);},proxyEventTypeName:"blockSetValue"})}proxyGraphBlockArray(e,t){return this._proxyArray(e,t,t,{addEventFunc:function(e){u$3.$emit("itemRepo:graphNodeAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:graphNodeDeleted",e);}})}proxyConnection(e,t){return this._proxyObject(e,t,t,{changeEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionChanged",e);},proxyEventTypeName:"connectionSetValue"})}proxyConnectionArray(e,t){return this._proxyArray(e,e,t,{addEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:graphConnectionDeleted",e);}})}proxyItemField(e,t){const a="Link"===e.type;return this._proxyObject(e,null,t,{isLink:a,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),a&&u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"itemFieldSetValue"})}proxyGraphBlockField(e,t,a){return this._proxyObject(e,t,a,{isLink:"Link"===e.type,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:graphNodeFieldChanged",e);},proxyEventTypeName:"blockFieldSetValue"})}proxyBlockField(e,t,a){const i="Link"===e.type;return this._proxyObject(e,t,a,{isLink:i,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:fieldChanged",e),i&&u$3.$emit("itemRepo:linkChanged",e);},proxyEventTypeName:"blockFieldSetValue"})}proxyScriptItem(e,t,a){return this._proxyObject(e,t,a,{isLink:true,changeEventFunc:function(e){u$3.$emit("itemRepo:scriptItemChanged",e);},proxyEventTypeName:"scriptItemSetValue"})}proxyScriptFieldsArray(e,t,a){return this._proxyArray(e,t,a,{addEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldDeleted",e);},changeDoesNotMakeItemDirty:true})}proxyScriptField(e,t,a){return this._proxyObject(e,t,a,{isLink:false,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:scriptFieldChanged",e);},proxyEventTypeName:"itemScriptFieldSetValue",changeDoesNotMakeItemDirty:false})}proxyCustomFieldsArray(e,t){return this._proxyArray(e,null,t,{addEventFunc:function(e){u$3.$emit("itemRepo:customFieldAdded",e);},deleteEventFunc:function(e){u$3.$emit("itemRepo:customFieldDeleted",e);},changeDoesNotMakeItemDirty:true})}proxyCustomField(e,t){return this._proxyObject(e,null,t,{isLink:false,isField:true,changeEventFunc:function(e){u$3.$emit("itemRepo:customFieldChanged",e);},proxyEventTypeName:"itemCustomFieldSetValue",changeDoesNotMakeItemDirty:false})}};let b$1 = class b{level;name;times;durations=[];childrenMap=new Map;children=[];parent;constructor(e,t,a,i){this.name=e,this.level=t,this.times=[a],this.parent=i;}};function v$1(e,t){return w.instance.block(e,t)}async function _$1(e,t){return w.instance.asyncBlock(e,t)}class w{startTime=0;endTime=0;startIteration=0;currentLevel=0;root=new b$1("root",0,0,void 0);currentEntry;active=false;static _instance;static get instance(){return this._instance||(this._instance=new this)}constructor(){this.currentEntry=this.root;}start(){this.startTime=performance.now(),this.startIteration=this.startTime,this.root=new b$1("root",0,0,void 0),this.currentEntry=this.root,this.currentLevel=0,this.active=true;}end(e=false){this.active=false,this.endTime=performance.now()-this.startTime,this.root.durations.push(this.endTime-this.root.times[0]),e&&this.printResults();}_iterate(e,t){e(t=t||this.root);for(const a of t.children)this._iterate(e,a);}getResults(){const e=[];function t(e){return Math.round(1e3*e)/1e3}function a(e){return e.reduce(((e,t)=>e+t),0)}return this._iterate((function(i){const n=t(a(i.times)/i.times.length),r=t(a(i.durations)/i.durations.length),s=t(a(i.durations)),o=t(s-i.children.reduce(((e,t)=>e+a(t.durations)),0));e.push({name:"".padStart(2*i.level," .")+i.name,executions:i.times.length,avgTimeStartMs:n,avgTimeEndMs:t(n+r),avgDurationMs:r,totalDurationMs:s,selfDurationMs:o});})),e}printResults(){console.table(this.getResults(),["name","executions","avgTimeStartMs","avgTimeEndMs","avgDurationMs","totalDurationMs","selfDurationMs"]);}newIteration(){this.startIteration=performance.now(),this.currentLevel=0;}async asyncBlock(e,t){if(!this.active)return t();let a;try{return a=this.beginBlock(e),await t()}finally{this.endBlock(a);}}block(e,t){if(!this.active)return t();let a;try{return a=this.beginBlock(e),t()}finally{this.endBlock(a);}}beginBlock(e){if(!this.active)return;this.currentLevel++;const t=performance.now()-this.startIteration;let a=this.currentEntry.childrenMap.get(e);return a?a.times.push(t):(a=new b$1(e,this.currentLevel,t,this.currentEntry),this.currentEntry.children.push(a),this.currentEntry.childrenMap.set(e,a)),this.currentEntry=a,a}endBlock(e){if(!e)return;const t=performance.now()-this.startIteration-e.times[e.times.length-1];e.durations.push(t),this.currentEntry=e.parent,this.currentLevel--;}}let A$7 = class A extends Error{constructor(e,t){super(e),t&&(this.name=t);}toString(){return this.name?`${this.name}: ${this.message}`:this.message}};let k$1 = class k extends A$7{constructor(e){super(e,"InvalidArgumentException");}};let S$2 = class S extends A$7{constructor(e){super(e,"InvalidStateException");}};let N$1 = class N extends A$7{constructor(e){super(e,"RuntimeException");}};let T$1 = class T extends A$7{constructor(e){super(e,"LoaderException");}};let M$1 = class M extends A$7{constructor(e){super(e,"QuotaExceededException");}};let x$4 = class x extends A$7{constructor(e){super(e,"AccessDeniedException");}};let V=class{_id;name;folder;folderPath;links;attributes;userAttributes;filename;createdAt;updatedAt;version;filesize;hash;mimeType;type;packageType;createdBy;updatedBy;acl;visibility;properties;allowConversation;conversation;tags;contributors;description;shortDescription;userAttributeTemplate;categories;attachments;license;quotaUser;quotaGroup;itemSize;totalSize;flags;perceptiveHash;unpackagedSize;location;itemFlag;constructor(e){if(this._id=e._id,this.name=e.name,this.folder=e.folder,this.folderPath=e.folderPath,this.links=[],Array.isArray(e.links))for(const t of e.links)this.links.push({to:t.to,usage:t.usage});this.attributes=JSON.parse(JSON.stringify(e.attributes||{})),this.userAttributes=JSON.parse(JSON.stringify(e.userAttributes||{})),this.filename=e.filename,this.createdAt=e.createdAt,this.updatedAt=e.updatedAt,this.version={major:e.version?.major||0,minor:e.version?.minor||0,revision:e.version?.revision||1},this.filesize=e.filesize,this.hash=e.hash,this.mimeType=e.mimeType,this.type=e.type,this.packageType=e.packageType,this.createdBy=e.createdBy,this.updatedBy=e.updatedBy,this.acl=JSON.parse(JSON.stringify(e.acl||[])),this.visibility=e.visibility,this.properties=JSON.parse(JSON.stringify(e.properties||{})),this.allowConversation=e.allowConversation,this.conversation=e.conversation,this.tags=JSON.parse(JSON.stringify(e.tags||[])),this.contributors=JSON.parse(JSON.stringify(e.contributors||[])),this.description=e.description,this.shortDescription=e.shortDescription,this.userAttributeTemplate=e.userAttributeTemplate,this.categories=e.categories,this.attachments=JSON.parse(JSON.stringify(e.attachments||[])),this.license=e.license,this.quotaUser=e.quotaUser,this.quotaGroup=e.quotaGroup,this.itemSize=e.itemSize,this.totalSize=e.totalSize,this.flags=JSON.parse(JSON.stringify(e.flags||[])),this.perceptiveHash=e.perceptiveHash,this.unpackagedSize=e.unpackagedSize,this.location=e.location,this.itemFlag=JSON.parse(JSON.stringify(e.itemFlag||{}));}};let C$2 = class C extends V{links;thumbnails;fieldSets;fields;userFields;isAggregatedItem=true;constructor(e){if(super(e),this.links=[],Array.isArray(e.links))for(const t of e.links)this.links.push({to:t.to,usage:t.usage,stopRecursion:t.stopRecursion});this.thumbnails=JSON.parse(JSON.stringify(e.thumbnails||[])),this.fieldSets=JSON.parse(JSON.stringify(e.fieldSets||[])),this.fields=JSON.parse(JSON.stringify(e.fields||[])),this.userFields=JSON.parse(JSON.stringify(e.userFields||[]));}};var I$1=[{_id:{$oid:"5e6a1ace89707feef5738292"},contentTypes:["model/splat"],fieldSets:[],fields:[],name:"Gaussian Splats",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ace89707feef3748569"},contentTypes:[],fieldSets:[],fields:[{label:"Scenes",type:"Separator"},{elementName:"Scene",fields:[{linkableTypes:["Scene"],type:"Link",usageAs:"Scene",mandatory:true},{datatype:"Boolean",defaultValue:true,displayName:"Load",name:"Load",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Active",if:{Load:true},name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Primary",name:"Primary",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Exclude in packages",name:"ExcludeInPackages",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"}],name:"Scenes",type:"List"},{label:"Variable Sets",type:"Separator",collapsed:true},{displayName:"Variable sets",elementName:"Variable set",fields:[{displayName:"Variable set",linkableTypes:["Variable Set"],type:"Link",usageAs:"VariableSet",mandatory:true},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"}],name:"VariableSets",type:"List"},{label:"Graphics",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Not defined",displayName:"Aspect ratio",info:"This determines the project's aspect ratio. If not defined, the game will run in the default aspect depending on platform and browser size",name:"AspectRatio",options:["Not defined","Standard (4:3)","Widescreen (16:9)","Ultrawide (21:9)","Custom"],type:"Attribute"},{datatype:"Float",defaultValue:1.3,minValue:.1,maxValue:10,displayName:"Custom Aspect",if:{AspectRatio:"Custom"},name:"CustomAspect",type:"Attribute"},{label:"Physics",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enabled",name:"PhysicsEnabled",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:-9.81,z:0},displayName:"Gravity",if:{PhysicsEnabled:true},name:"Gravity",type:"Attribute"},{datatype:"LayerMatrix",defaultValue:[[0]],displayName:"Collision matrix",if:{PhysicsEnabled:true},info:"This controls which physics object interact with which others depending on their layers",name:"CollisionMatrix",type:"Attribute"},{datatype:"StringList",defaultValue:["Default","Terrain","TransparentFX","Water"],displayName:"Layer names",fixedLength:true,info:"Names of the layers to use with all scenegraph nodes",name:"LayerNames",type:"Attribute"},{label:"Resources",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"After loading everything",displayName:"Start execution",info:"This controls when the engine will start execution of the project in the player",name:"StartExecution",options:["Right away","After loading minimum LOD","After loading everything"],type:"Attribute"},{label:"Controls",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Automatic pointer lock",name:"AutomaticPointerLock",type:"Attribute",info:"Enabling this will cause the mouse pointer to be locked until Escape is pressed"},{label:"Canvas Fonts",type:"Separator",collapsed:true},{displayName:"Canvas fonts",elementName:"Font",fields:[{displayName:"Font",linkableTypes:["Font"],type:"Link",usageAs:"Font",mandatory:true}],name:"CanvasFonts",type:"List"}],name:"Project",recursiveLoadStopsHere:true,updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1ace24a07f56f3742569"},contentTypes:[],fieldSets:[],fields:[{elementName:"Variable",fields:[{datatype:"String",defaultValue:"Name",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Enum",defaultValue:"Integer",displayName:"Type",name:"Type",options:["Integer","Float","String","Boolean"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Value",if:{Type:"Boolean"},name:"BooleanValue",type:"Attribute"},{datatype:"Integer",defaultValue:0,displayName:"Value",if:{Type:"Integer"},name:"IntegerValue",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Value",if:{Type:"Float"},name:"FloatValue",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Value",if:{Type:"String"},name:"StringValue",type:"Attribute"}],name:"Variables",type:"List"}],name:"Variable Set",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ace89707feef9173386"},contentTypes:["audio/mpeg"],fieldSets:[],fields:[{datatype:"Float",defaultValue:1,displayName:"Volume",maxValue:1,minValue:0,name:"Volume",type:"Attribute",widget:"Slider"}],name:"Audio",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1acf89707feef917338f"},contentTypes:["*"],fieldSets:[],fields:[],name:"Binary",creatableEmpty:false},{_id:{$oid:"5e6a1acf89707feef917337f"},contentTypes:["application/vnd.lumino.package"],fieldSets:[],fields:[],name:"Package",creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173391"},contentTypes:["image/vnd.radiance"],fieldSets:[],fields:[],name:"HDR Image",creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173392"},contentTypes:["image/png","image/jpeg","image/avif","image/heif"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:"Linear",displayName:"Encoding",name:"Encoding",options:["Linear","sRGB"],type:"Attribute"}],name:"Image",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173393"},contentTypes:[""],fieldSets:[],fields:[{label:"Type",type:"Separator"},{datatype:"Enum",defaultValue:"Physical",displayName:"Material type",name:"MaterialType",options:["Physical","Shader","Point","Basic","Normal","Toon","Matcap","Lambert","Phong"],type:"Attribute"},{label:"Matcap material options",type:"Separator",if:{MaterialType:"Matcap"}},{displayName:"Matcap map",linkableTypes:["Image"],type:"Link",usageAs:"Matcap",if:{MaterialType:"Matcap"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Matcap",Matcap:{$isset:true}},name:"MatcapAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Toon material options",type:"Separator",if:{MaterialType:"Toon"}},{displayName:"Gradient map",linkableTypes:["Image"],if:{MaterialType:"Toon"},type:"Link",usageAs:"Gradient"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Nearest",displayName:"Mag filter",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientMagFilter",options:["Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Nearest",displayName:"Min Filter",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientMinFilter",options:["Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Toon",Gradient:{$isset:true}},name:"GradientAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Basic material options",type:"Separator",if:{MaterialType:"Basic"}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",name:"EmissionColor",type:"Attribute",if:{MaterialType:"Basic"}},{label:"Custom shaders",type:"Separator",if:{MaterialType:"Shader"}},{displayName:"Vertex shader",linkableTypes:["Vertex Shader"],type:"Link",usageAs:"VertexShader",if:{MaterialType:"Shader"}},{displayName:"Pixel shader",linkableTypes:["Pixel Shader"],type:"Link",usageAs:"PixelShader",if:{MaterialType:"Shader"}},{label:"Point rendering",type:"Separator",if:{MaterialType:"Point"}},{datatype:"Float",defaultValue:1,displayName:"Size",if:{MaterialType:"Point"},minValue:0,name:"PointSize",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Size attenuation",if:{MaterialType:"Point"},name:"PointSizeAttenuation",type:"Attribute"},{label:"Attenuation",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",info:"The color that white light turns into due to absorption when reaching the attenuation distance.",name:"AttenuationColor",type:"Attribute",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1e3,displayName:"Distance",info:"Density of the medium given as the average distance that light travels in the medium before interacting with a particle. The value is given in world space units, and must be greater than zero.",minValue:1e-5,name:"AttenuationDistance",type:"Attribute",if:{MaterialType:"Physical"}},{label:"Diffuse",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Color",name:"DiffuseColor",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Albedo map",linkableTypes:["Image","Composition","Video"],type:"Link",usageAs:"Albedo",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Albedo:{$isset:true}},name:"AlbedoAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Vertex Colors",name:"VertexColors",type:"Attribute"},{label:"Transparency",type:"Separator"},{datatype:"Float",defaultValue:0,displayName:"Alpha test",maxValue:1,minValue:0,name:"AlphaTest",type:"Attribute",widget:"Slider"},{datatype:"Boolean",defaultValue:false,displayName:"Transparent",name:"Transparent",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Opacity",if:{Transparent:true},maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{displayName:"Alpha map",linkableTypes:["Image"],type:"Link",usageAs:"Alpha",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Point"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Alpha:{$isset:true}},name:"AlphaAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Emission",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Color",name:"EmissiveColor",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",maxValue:10,minValue:0,name:"EmissiveIntensity",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Emissive map",linkableTypes:["Image"],type:"Link",usageAs:"Emissive",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Emissive:{$isset:true}},name:"EmissiveAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Sheen",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Sheen",maxValue:1,minValue:0,name:"Sheen",type:"Attribute",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Sheen roughness",maxValue:1,minValue:0,name:"SheenRoughness",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Sheen roughness map",linkableTypes:["Image"],type:"Link",usageAs:"SheenRoughnessMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SheenRoughnessMap:{$isset:true}},name:"SheenRoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Sheen color",name:"SheenColor",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Sheen color map",linkableTypes:["Image"],type:"Link",usageAs:"SheenColorMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SheenColorMap:{$isset:true}},name:"SheenColorAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Normal",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Normal map",linkableTypes:["Image"],type:"Link",usageAs:"Normal",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"Scale",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},maxValue:10,minValue:0,name:"NormalScale2d",type:"Attribute"},{datatype:"Enum",defaultValue:"TangentSpace",displayName:"Type",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalType",options:["TangentSpace","ObjectSpace"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Normal:{$isset:true}},name:"NormalAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Roughness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1,displayName:"Roughness Intensity",maxValue:1,minValue:0,name:"RoughnessIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Roughness map",linkableTypes:["Image"],type:"Link",usageAs:"Roughness",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{Roughness:{$isset:true}},name:"RoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{Roughness:{$isset:true}},name:"RoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{Roughness:{$isset:true}},name:"RoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{Roughness:{$isset:true}},name:"RoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Roughness:{$isset:true}},name:"RoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Metalness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:1,displayName:"Metalness Intensity",maxValue:1,minValue:0,name:"MetalnessIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Metalness map",linkableTypes:["Image"],type:"Link",usageAs:"Metalness",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{Metalness:{$isset:true}},name:"MetalnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{Metalness:{$isset:true}},name:"MetalnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{Metalness:{$isset:true}},name:"MetalnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{Metalness:{$isset:true}},name:"MetalnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Metalness:{$isset:true}},name:"MetalnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Specular",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"}]}},{datatype:"Float",defaultValue:1,displayName:"Specular intensity",maxValue:1,minValue:0,name:"SpecularIntensity",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Specular intensity map",linkableTypes:["Image"],type:"Link",usageAs:"SpecularIntensityMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SpecularIntensityMap:{$isset:true}},name:"SpecularIntensityAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},if:{MaterialType:"Physical"},displayName:"Specular color",name:"SpecularColor",type:"Attribute"},{displayName:"Specular color map",linkableTypes:["Image"],if:{MaterialType:"Physical"},type:"Link",usageAs:"SpecularColorMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",SpecularColorMap:{$isset:true}},name:"SpecularColorAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Ambient occlusion",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Ambient occlusion map",linkableTypes:["Image"],type:"Link",usageAs:"AmbientOcclusion",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},maxValue:10,minValue:0,name:"AmbientOcclusionIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],AmbientOcclusion:{$isset:true}},name:"AmbientOcclusionAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Clearcoat",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Intensity",maxValue:1,minValue:0,name:"ClearcoatLevel",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Clearcoat map",linkableTypes:["Image"],type:"Link",usageAs:"Clearcoat",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",Clearcoat:{$isset:true}},name:"ClearcoatAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{displayName:"Normal map",linkableTypes:["Image"],type:"Link",usageAs:"ClearcoatNormalMap",if:{MaterialType:"Physical"}},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"Normal scale",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},maxValue:10,minValue:0,name:"ClearcoatNormalScale2d",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Normal H-wrapping",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Normal V-wrapping",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Normal mag filter",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Normal min Filter",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Normal Anisotropy",if:{MaterialType:"Physical",ClearcoatNormalMap:{$isset:true}},name:"ClearcoatNormalAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Roughness intensity",maxValue:1,minValue:0,name:"ClearcoatRoughness",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Roughness map",linkableTypes:["Image"],type:"Link",usageAs:"ClearcoatRoughnessMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Roughness H-wrapping",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Roughness V-wrapping",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Roughness mag filter",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Roughness min Filter",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Roughness Anisotropy",if:{MaterialType:"Physical",ClearcoatRoughnessMap:{$isset:true}},name:"ClearcoatRoughnessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Reflections and Refractions",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:.98,displayName:"Refraction ratio",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]},minValue:0,maxValue:1,name:"RefractionRatio",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Reflectivity",maxValue:1,minValue:0,name:"Reflectivity",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1.5,displayName:"Index of refraction",maxValue:2.333,minValue:1,name:"IndexOfRefraction",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{label:"Environment",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Environment map",linkableTypes:["HDR Image"],type:"Link",usageAs:"Environment",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"}],Environment:{$isset:true}},maxValue:10,minValue:0,name:"EnvironmentIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Multiply",info:"How to combine the result of the surface's color with the environment map, if any. If mix is chosen, the .reflectivity is used to blend between the two colors.",displayName:"Surface combination",name:"SurfaceEnvironmentCombination",options:["Multiply","Mix","Add"],type:"Attribute",if:{$or:[{MaterialType:"Lambert"},{MaterialType:"Basic"},{MaterialType:"Phong"}]}},{label:"Thickness",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Thickness",minValue:0,name:"Thickness",type:"Attribute",if:{MaterialType:"Physical"}},{displayName:"Thickness map",linkableTypes:["Image"],type:"Link",usageAs:"ThicknessMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",ThicknessMap:{$isset:true}},name:"ThicknessAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Displacement",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Displacement map",linkableTypes:["Image"],type:"Link",usageAs:"Displacement",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:.1,displayName:"Scale",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},maxValue:10,minValue:0,name:"DisplacementScale",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Bias",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementBias",type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],Displacement:{$isset:true}},name:"DisplacementAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Lightmaps",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{displayName:"Light map",linkableTypes:["Image"],type:"Link",usageAs:"LightMap",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:1,displayName:"Intensity",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},maxValue:100,minValue:0,name:"LightMapIntensity",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Toon"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],LightMap:{$isset:true}},name:"LightMapAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Specular map options",type:"Separator",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Float",defaultValue:30,displayName:"Shininess",minValue:0,name:"Shininess",type:"Attribute",widget:"Slider",if:{$or:[{MaterialType:"Phong"}]}},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},if:{MaterialType:"Phong"},displayName:"Specular color",name:"SpecularColor",type:"Attribute"},{displayName:"Specular map",linkableTypes:["Image"],if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]},type:"Link",usageAs:"SpecularMap"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{$or:[{MaterialType:"Basic"},{MaterialType:"Lambert"},{MaterialType:"Phong"}],SpecularMap:{$isset:true}},name:"SpecularAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Transmission",type:"Separator",if:{MaterialType:"Physical"}},{datatype:"Float",defaultValue:0,displayName:"Intensity",maxValue:1,minValue:0,name:"Transmission",type:"Attribute",widget:"Slider",if:{MaterialType:"Physical"}},{displayName:"Transmission map",linkableTypes:["Image"],type:"Link",usageAs:"TransmissionMap",if:{MaterialType:"Physical"}},{datatype:"Enum",defaultValue:"Repeat",displayName:"Horiz. wrapping",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionWrapS",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Repeat",displayName:"Vert. wrapping",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionWrapT",options:["Repeat","Clamp to edge","Mirrored repeat"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear",displayName:"Mag filter",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionMagFilter",options:["Linear","Nearest"],type:"Attribute"},{datatype:"Enum",defaultValue:"Linear, Mipmap linear",displayName:"Min Filter",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionMinFilter",options:["Nearest","Nearest, Mipmap nearest","Nearest, Mipmap linear","Linear","Linear, Mipmap nearest","Linear, Mipmap linear"],type:"Attribute"},{datatype:"Enum",defaultValue:"1x",displayName:"Anisotropy",if:{MaterialType:"Physical",TransmissionMap:{$isset:true}},name:"TransmissionAnisotropy",options:["1x","2x","4x","8x","16x"],type:"Attribute"},{label:"Blending",type:"Separator"},{datatype:"Enum",defaultValue:"Normal",displayName:"Mode",name:"Blending",options:["None","Normal","Additive","Subtractive","Multiply","Custom"],type:"Attribute"},{datatype:"Enum",defaultValue:"Source alpha",displayName:"Source",name:"BlendSrc",options:["Zero","One","Source color","One minus source color","Source alpha","One minus source alpha","Destination alpha","One minus destination alpha","Destination color","One minus destination color","Source alpha saturate"],type:"Attribute",if:{Blending:"Custom"}},{datatype:"Enum",defaultValue:"One minus source alpha",displayName:"Destination",name:"BlendDest",options:["Zero","One","Source color","One minus source color","Source alpha","One minus source alpha","Destination alpha","One minus destination alpha","Destination color","One minus destination color"],type:"Attribute",if:{Blending:"Custom"}},{datatype:"Enum",defaultValue:"Add",displayName:"Equation",name:"BlendEquation",options:["Add","Subtract","Reverse subtract","Min","Max"],type:"Attribute",if:{Blending:"Custom"}},{label:"Depth test",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"DepthTest",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Write",if:{DepthTest:true},name:"DepthWrite",type:"Attribute"},{datatype:"Enum",defaultValue:"Less/equal",displayName:"Mode",if:{DepthTest:true},name:"DepthMode",options:["Never","Always","Less","Less/equal","Greater/equal","Greater","Not equal"],type:"Attribute"},{label:"Culling",type:"Separator"},{datatype:"Enum",defaultValue:"Back",displayName:"Mode",name:"Culling",options:["Front","Back","Off"],type:"Attribute"},{label:"Flat shading",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Boolean",defaultValue:false,displayName:"Active",name:"FlatShading",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Normal"},{MaterialType:"Matcap"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{label:"Wireframe",type:"Separator",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Shader"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}},{datatype:"Boolean",defaultValue:false,displayName:"Wireframe",name:"Wireframe",type:"Attribute",if:{$or:[{MaterialType:"Physical"},{MaterialType:"Basic"},{MaterialType:"Normal"},{MaterialType:"Toon"},{MaterialType:"Shader"},{MaterialType:"Lambert"},{MaterialType:"Phong"}]}}],name:"Material",updateRequiresThumbRefresh:true,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707feef9173394"},contentTypes:["model/obj","model/gltf-binary","model/vnd.usdz+zip","model/draco","model/ply","model/fbx"],fieldSets:[],fields:[{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{doesNotAffectThumbnail:true,linkableTypes:["Mesh"],loadingManager:"ignore",preload:false,type:"Link",usageAs:"USDZ"},{doesNotAffectThumbnail:true,linkableTypes:["Mesh"],loadingManager:"ignore",preload:false,type:"Link",usageAs:"GLB"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},name:"Pivot",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"DefaultTransform",displayName:"Default transform",type:"Attribute"}],name:"Mesh",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173396"},contentTypes:[""],fields:[{label:"Camera & Composition",type:"Separator"},{datatype:"Enum",defaultValue:"Automatic user controllable camera",displayName:"Camera mode",info:"Camera to render during playback. The main camera is the one with the 'mainCamera' Tag or if only one camera exists, that is the one. Composer setting will render whatever the composition defines.",name:"CameraMode",options:["Automatic user controllable camera","Main camera","Composer"],type:"Attribute"},{linkableTypes:["Composition"],type:"Link",if:{CameraMode:"Composer"},usageAs:"Composition",mandatory:true},{label:"Environment & Background",type:"Separator"},{datatype:"Enum",defaultValue:"None",displayName:"Background mode",name:"BackgroundMode",options:["None","Color","Image","Environment map","Shader"],type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Background blurriness",if:{BackgroundMode:"Environment map"},maxValue:1,minValue:0,name:"BackgroundBlurriness",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:1,displayName:"Background intensity",if:{$or:[{BackgroundMode:"Image"},{BackgroundMode:"Environment map"}]},maxValue:10,minValue:0,name:"BackgroundIntensity",type:"Attribute",widget:"Slider"},{displayName:"Background shader",if:{BackgroundMode:"Shader"},linkableTypes:["Background Shader"],type:"Link",usageAs:"BackgroundShader",mandatory:true},{displayName:"Background image",if:{BackgroundMode:"Image"},linkableTypes:["Image"],type:"Link",usageAs:"Background",mandatory:true},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Background color",if:{BackgroundMode:"Color"},name:"BackgroundColor",type:"Attribute"},{displayName:"Environment map",linkableTypes:["HDR Image"],type:"Link",usageAs:"Environment"},{datatype:"Float",defaultValue:1,displayName:"Environment intensity",maxValue:10,minValue:0,name:"EnvironmentIntensity",type:"Attribute",widget:"Slider"},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Clear color",name:"ClearColor",type:"Attribute"},{label:"Rendering",type:"Separator",collapsed:false},{datatype:"Enum",defaultValue:"PCF Shadow Map",displayName:"Shadow type",name:"ShadowType",options:["Basic Shadow Map","PCF Shadow Map","VSM Shadow Map"],type:"Attribute"}],name:"Scene",updateRequiresThumbRefresh:true,inherits:"Prefab",creatableEmpty:true},{_id:{$oid:"5e6a1ad189707fcef4252336"},contentTypes:[""],fieldSets:[{fields:[{label:"3D Object",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"Indicates if the 3D object is currently active or inactive. When set to true, the object is active.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"Specifies the name of the 3D object. This is used for identification and reference in the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Describes the object's transformation attributes including its position, rotation, and scale in the 3D space.",name:"Transform",type:"Attribute"},{type:"Label",text:"Changing scale in transforms for physics enabled objects is not recommended. Not all objects fully support it. Keep it at least uniform!",labelType:"warning",if:{"PhysicsEnabled?":true,$or:[{"Transform.scale.x":{$not:1}},{"Transform.scale.y":{$not:1}},{"Transform.scale.z":{$not:1}}]}},{datatype:"Layers",defaultValue:[0],info:"Defines the layers that the 3D object is part of. Layers are used for managing object interactions and visibility in the scene.",name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"Lists tags associated with the 3D object. Tags are useful for categorizing and searching objects in the scene.",name:"Tags",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Receive shadow",info:"Determines whether the object can receive shadows from other objects. Set to true if the object should display shadows cast upon it.",name:"ReceiveShadow",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Cast shadow",info:"Controls whether the object casts shadows in the presence of light sources. Set to true to enable shadow casting from this object.",name:"CastShadow",type:"Attribute"}],name:"3dObjectDefault"},{fields:[{label:"3D Object",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"A Boolean attribute indicating whether the 3D object is active or not. When set to true, the object is considered active in the scene.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"A string attribute representing the name of the 3D object. It is used to identify and reference the object within the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Specifies the transformation properties of the 3D object, including its position, rotation, and scale in the scene.",name:"Transform",type:"Attribute"},{datatype:"Layers",defaultValue:[0],info:"Determines the layers the 3D object belongs to. Layers are used to organize objects in the scene for various purposes like rendering and interaction.",name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"A list of tags associated with the 3D object. Tags are used for categorizing and identifying objects for scripting and scene management.",name:"Tags",type:"Attribute"}],name:"3dObjectNoShadows"},{fields:[{label:"Physics",type:"Separator"},{datatype:"Boolean",defaultValue:false,displayName:"Physics enabled",info:"A Boolean attribute that determines whether physics properties are applied to the object. Disabling it turns off physics calculations.",name:"PhysicsEnabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Rigid body",displayName:"Body type",if:{PhysicsEnabled:true},name:"BodyType",options:["Rigid body","Soft body","Ghost object"],type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Separate subobjects",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"When adding all subobjects of the mesh separately, they will all act individually. We lose however also the possibility to control and watch them as a single object. The configured mass will be distributed among all subobjects",name:"SeparateSubobjects",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Mass",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Specifies the mass of the object as a float value. The mass must be a non-negative value.",minValue:0,name:"Mass",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Pressure",if:{BodyType:"Soft body",PhysicsEnabled:true},info:"Specifies the pressure of the soft body as a float value. The pressure must be a non-negative value.",minValue:0,name:"Pressure",type:"Attribute"},{datatype:"Float",defaultValue:.01,displayName:"Damping",if:{BodyType:"Soft body",PhysicsEnabled:true},info:"Specifies the damping of the soft body.",minValue:0,name:"Damping",type:"Attribute"},{datatype:"Float",defaultValue:.04,displayName:"Margin",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Defines the margin of the object for physics calculations as a float value. The margin is a non-negative value.",minValue:0,name:"Margin",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Restitution",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Determines the restitution (bounciness) of the object. It's a float value affecting how the object bounces upon impact.",name:"Restitution",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Sets the friction coefficient of the object. It's a float value, affecting how the object slides against other surfaces.",name:"Friction",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Spinning friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Defines the spinning friction of the object as a float value, affecting the object's rotational resistance.",name:"SpinningFriction",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Rolling friction",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true},info:"Specifies the rolling friction of the object. It's a float value that influences how the object rolls over surfaces.",name:"RollingFriction",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Linear damping",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the linear damping.",name:"LinearDamping",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Angular damping",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the angular damping.",name:"AngularDamping",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},displayName:"Linear factor",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"A Vector3d value that defines the linear factor of the object in terms of x, y, and z axes, controlling how the object moves linearly.",name:"LinearFactor",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Linear velocity",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Defines the object's linear velocity using a Vector3d value, representing the velocity along the x, y, and z axes.",name:"LinearVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},displayName:"Angular factor",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"A Vector3d attribute that specifies the angular factor of the object, influencing the object's rotation around each axis.",name:"AngularFactor",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Angular velocity",if:{BodyType:"Rigid body",PhysicsEnabled:true},info:"Sets the angular velocity of the object using a Vector3d value, affecting the object's rotational speed.",name:"AngularVelocity",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Is kinematic",if:{BodyType:"Rigid body",PhysicsEnabled:true,SeparateSubobjects:false},info:"A Boolean attribute that makes the object kinematic when true, meaning it will not be affected by physics but can still affect other objects.",name:"IsKinematic",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Disable deactivation",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,$or:[{IsKinematic:false},{BodyType:"Soft body"}]},info:"When set to true, object will be simulated in physics forever. Otherwise it will be deactivated when not moving anymore",name:"DisableDeactivation",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch collisions",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"When set to true, enables monitoring of collisions involving the object.",name:"WatchCollisions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Report contact points",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"If set to true, collision events will contain the exact contact points. Only enable if you really need it as it costs performance.",name:"ReportContactPoints",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Filter potential collisions",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"The physics engine might report collisions without contact points in cases where objects get close. Filter these out by setting this.",name:"FilterPotentialCollisions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch linear velocity",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"Enables the tracking of changes in the object's linear velocity when set to true.",name:"WatchLinearVelocity",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Watch angular velocity",if:{BodyType:{$not:"Ghost object"},PhysicsEnabled:true,SeparateSubobjects:false},info:"Allows for the monitoring of changes in the object's angular velocity when enabled.",name:"WatchAngularVelocity",type:"Attribute"},{if:{BodyType:{$not:"Soft body"},PhysicsEnabled:true},label:"Collider",type:"Separator"},{datatype:"Enum",defaultValue:"Self",displayName:"Collider type",if:{BodyType:{$not:"Soft body"},PhysicsEnabled:true},name:"ColliderType",options:["Self","Bounding Box","Bounding Sphere","Bounding Cylinder","Capsule","Convex Hull","Custom Mesh"],type:"Attribute"},{datatype:"Enum",defaultValue:"Derive from mesh",displayName:"Capsule size",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",PhysicsEnabled:true},name:"CapsuleSize",options:["Derive from mesh","Manual"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Capsule height",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",CapsuleSize:"Manual",PhysicsEnabled:true},name:"CapsuleHeight",minValue:0,type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Capsule radius",if:{BodyType:{$not:"Soft body"},ColliderType:"Capsule",CapsuleSize:"Manual",PhysicsEnabled:true},name:"CapsuleRadius",minValue:0,type:"Attribute"},{displayName:"Collider mesh",if:{BodyType:{$not:"Soft body"},ColliderType:"Custom Mesh",PhysicsEnabled:true},linkableTypes:["Mesh","Mesh Collection"],type:"Link",usageAs:"ColliderMesh",mandatory:true},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{BodyType:{$not:"Soft body"},ColliderType:"Custom Mesh",PhysicsEnabled:true,$optionsexist:true},name:"ColliderMeshCollectionEntry",options:[],type:"Attribute"}],name:"Physics"},{fields:[{datatype:"Enum",defaultValue:"Single",displayName:"Source type",name:"SourceType",options:["Single","Collection"],type:"Attribute"},{displayName:"Audio item",if:{SourceType:"Single"},linkableTypes:["Audio"],type:"Link",usageAs:"AudioItem"},{displayName:"Audio collection",if:{SourceType:"Collection"},linkableTypes:["Audio Collection"],type:"Link",usageAs:"AudioCollectionItem"},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{SourceType:"Collection"},name:"AudioCollectionEntry",options:[],type:"Attribute"}],name:"AudioLink"},{fields:[{displayName:"Mesh item",linkableTypes:["Mesh","Mesh Collection"],type:"Link",usageAs:"Mesh",mandatory:true},{datatype:"Enum",defaultValue:"",displayName:"Collection entry",if:{$optionsexist:true},name:"MeshCollectionEntry",options:[],type:"Attribute"}],name:"MeshLink"}],fields:[{childTypes:[{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Mesh specific fields",type:"Separator"},{name:"MeshLink",type:"FieldSet"},{datatype:"Enum",defaultValue:"Pivot",name:"OriginMode",displayName:"Origin mode",if:{$or:[{MeshCollectionEntry:{$isset:true}},{Mesh:{$isset:true}}]},options:["Pivot","Center","Custom"],type:"Attribute"},{name:"CustomPivot",displayName:"Custom Pivot",type:"Attribute",datatype:"Vector3d",if:{OriginMode:"Custom"},defaultValue:{x:0,y:0,z:0}},{datatype:"Animations",defaultValue:[],displayName:"Animations",if:{$or:[{MeshCollectionEntry:{$isset:true}},{Mesh:{$isset:true}}]},name:"Animations",type:"Attribute"},{name:"Physics",type:"FieldSet"}],mainItemField:"Mesh",typeName:"Mesh"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"ScriptedMesh specific fields",type:"Separator"},{displayName:"Material(s)",linkableTypes:["Material","Material Collection"],type:"Link",usageAs:"Materials"},{datatype:"Boolean",defaultValue:false,displayName:"Indexed",info:"Indicates if the geometry buffer is indexed.",name:"Indexed",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Have positions",info:"Add a position attribute to the mesh.",name:"HavePositions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have normals",info:"Add a normal attribute to the mesh.",name:"HaveNormals",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have colors",info:"Add a color attribute to the mesh.",name:"HaveColors",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Have UV Coords",info:"Add a UV texture coordinate attribute to the mesh.",name:"HaveUVs",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"ScriptedMesh"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Splats specific fields",type:"Separator"},{linkableTypes:["Gaussian Splats"],type:"Link",usageAs:"Splats",mandatory:true}],mainItemField:"Splats",typeName:"GaussianSplats"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Prefab specific fields",type:"Separator"},{linkableTypes:["Scene","Prefab"],type:"Link",usageAs:"Prefab",mandatory:true}],mainItemField:"Prefab",typeName:"Prefab"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Points specific fields",type:"Separator"},{name:"MeshLink",type:"FieldSet"}],mainItemField:"Mesh",typeName:"Points"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Lightsource specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Point",name:"Type",options:["Point","Directional","Ambient","Hemisphere","Spot"],type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},name:"Color",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:64,g:64,r:64},displayName:"Ground color (Hemisphere)",if:{Type:"Hemisphere"},name:"GroundColor",type:"Attribute"},{datatype:"Float",defaultValue:10,minValue:0,name:"Intensity",type:"Attribute"},{datatype:"Float",defaultValue:100,if:{$or:[{Type:"Spot"},{Type:"Point"}]},minValue:0,name:"Distance",type:"Attribute"},{datatype:"Float",defaultValue:2,if:{$or:[{Type:"Spot"},{Type:"Point"}]},minValue:1,name:"Decay",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Angle",if:{Type:"Spot"},maxValue:1.57,minValue:0,name:"Angle",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Penumbra",if:{Type:"Spot"},maxValue:1,minValue:0,name:"Penumbra",type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"Target",if:{$or:[{Type:"Spot"},{Type:"Directional"}]},name:"Target",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Cast shadows",name:"CastShadows",type:"Attribute",if:{$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}},{datatype:"Float",defaultValue:0,displayName:"Shadow bias",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},maxValue:1,minValue:-1,name:"ShadowBias",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:512,displayName:"Shadow size",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},name:"ShadowSize",options:[128,256,512,1024,2048],type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Shadow camera near",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},minValue:0,name:"ShadowCameraNear",type:"Attribute"},{datatype:"Float",defaultValue:500,displayName:"Shadow camera far",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]},minValue:0,name:"ShadowCameraFar",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Shadow area width",if:{CastShadows:true,Type:"Directional"},minValue:1,name:"ShadowAreaWidth",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Shadow area height",if:{CastShadows:true,Type:"Directional"},minValue:1,name:"ShadowAreaHeight",type:"Attribute"},{datatype:"Float",defaultValue:4,displayName:"Shadow radius",minValue:0,name:"ShadowRadius",type:"Attribute",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}},{datatype:"Integer",defaultValue:8,displayName:"VSM blur samples",maxValue:32,minValue:1,name:"VsmBlurSamples",type:"Attribute",if:{CastShadows:true,$or:[{Type:"Point"},{Type:"Directional"},{Type:"Spot"}]}}],typeName:"Lightsource"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",info:"Indicates if the 3D object is currently active or inactive. When set to true, the object is active.",name:"Active",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Static",info:"A Boolean attribute indicating whether the 3D object is static or not. Static objects can and will never be transformed during runtime.",name:"Static",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",info:"Specifies the name of the 3D object. This is used for identification and reference in the scene.",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},info:"Describes the object's transformation attributes including its position, rotation, and scale in the 3D space.",name:"Transform",type:"Attribute"},{datatype:"Layers",defaultValue:[],name:"Cullmode",info:"Defines the layers that are not visible to the camera.",displayName:"Cull mode",type:"Attribute"},{datatype:"Tags",defaultValue:[],info:"Lists tags associated with the 3D object. Tags are useful for categorizing and searching objects in the scene.",name:"Tags",type:"Attribute"},{label:"Camera specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Perspective",name:"Type",options:["Perspective","Orthographic"],type:"Attribute"},{datatype:"Float",defaultValue:60,displayName:"Field of view",if:{Type:"Perspective"},maxValue:360,minValue:1,name:"FieldOfView",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Left",if:{Type:"Orthographic"},name:"Left",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Right",if:{Type:"Orthographic"},name:"Right",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Top",if:{Type:"Orthographic"},name:"Top",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Bottom",if:{Type:"Orthographic"},name:"Bottom",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Near plane",minValue:0,name:"NearPlane",type:"Attribute"},{datatype:"Float",defaultValue:1e3,displayName:"Far plane",minValue:0,name:"FarPlane",type:"Attribute"},{datatype:"Enum",defaultValue:"Free",name:"Mode",options:["Free","Look at"],type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},if:{Mode:"Look at"},name:"LookAt",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:1,z:0},displayName:"Up vector",if:{Mode:"Look at"},name:"UpVector",type:"Attribute"}],typeName:"Camera"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"}],typeName:"Group"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Box specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},name:"Size",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:1,y:1,z:1},name:"Segments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Box"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"GridMap specific fields",type:"Separator"},{linkableTypes:["GridMap"],type:"Link",usageAs:"GridMap"},{name:"Physics",type:"FieldSet"}],typeName:"GridMap"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Ribbon specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Integer",defaultValue:16,displayName:"Ring vertex count",minValue:3,maxValue:256,name:"RingVertexCount",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Path steps",minValue:2,name:"PathStepCount",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Start time",minValue:0,name:"StartTime",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"End time",minValue:0,name:"EndTime",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Closed",name:"Closed",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Add caps",name:"AddCaps",if:{Closed:false},type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Vertex colors",name:"VertexColors",type:"Attribute"},{label:"Ring formulas",type:"Separator",presets:[{name:"Circle",fields:{RingFormulaX:"cos(theta) * 0.5",RingFormulaY:"0",RingFormulaZ:"sin(theta) * 0.5"}}]},{datatype:"Formula",defaultValue:"cos(theta) * 0.5",displayName:"X",name:"RingFormulaX",type:"Attribute"},{datatype:"Formula",defaultValue:"0",displayName:"Y",name:"RingFormulaY",type:"Attribute"},{datatype:"Formula",defaultValue:"sin(theta) * 0.5",displayName:"Z",name:"RingFormulaZ",type:"Attribute"},{label:"Path formulas",type:"Separator"},{datatype:"Formula",defaultValue:"0",displayName:"X",name:"PathFormulaX",type:"Attribute"},{datatype:"Formula",defaultValue:"sin(t)",displayName:"Y",name:"PathFormulaY",type:"Attribute"},{datatype:"Formula",defaultValue:"t",displayName:"Z",name:"PathFormulaZ",type:"Attribute"},{label:"Color formulas",type:"Separator",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"abs(sin(t))",displayName:"R",name:"ColorFormulaR",type:"Attribute",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"0",displayName:"G",name:"ColorFormulaG",type:"Attribute",if:{VertexColors:true}},{datatype:"Formula",defaultValue:"abs(cos(t))",displayName:"B",name:"ColorFormulaB",type:"Attribute",if:{VertexColors:true}},{label:"Other formulas",type:"Separator"},{datatype:"Formula",defaultValue:"1 + 0.3 * sin(t * 2)",displayName:"Scale",name:"ScaleFormula",type:"Attribute"},{datatype:"Formula",defaultValue:"t * PI * 2",displayName:"Twist",name:"TwistFormula",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Ribbon"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Billboard Specific Fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material",mandatory:true},{datatype:"Text",defaultValue:"Text",displayName:"Text",name:"Text",type:"Attribute"},{datatype:"Enum",defaultValue:"center",displayName:"Text Alignment",info:"The alignment of the text",name:"TextAlign",options:["left","center","right"],type:"Attribute"},{linkableTypes:["Font"],type:"Link",usageAs:"Font"},{datatype:"Boolean",defaultValue:true,displayName:"Size Attenuation",info:"Scales the Billboard with respect to distance to the camera.",name:"SizeAttenuation",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:0,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Text Stroke Width",info:"The width of the border of the text.",maxValue:100,minValue:0,name:"TextStrokeWidth",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Text Stroke Color",info:"The color of the border of the text.",name:"TextStrokeColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:0,g:0,r:0},displayName:"Text color",info:"The infill color of the text.",name:"TextColor",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:5,y:5},displayName:"Padding",info:"Two values controlling the vertical and horizontal padding size. Higher values increase the size of the padding.",name:"Padding",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Padding color",info:"The background color of the padding section.",name:"BackgroundColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Padding Line Color",info:"The color of the border delimited by the padding.",name:"BackgroundStrokeColor",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Padding Line Width",info:"The width of the border of the padding section.",minValue:0,name:"BackgroundStrokeWidth",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:2,y:2},displayName:"Border",info:"Two values controlling the vertical and horizontal border size. Higher values increase the size of the border.",name:"BorderWidth",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Border Color",info:"The background color of the border section.",name:"BorderBackgroundColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Border Line Color",info:"The color of the outer border of the sprite.",name:"BorderStrokeColor",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Border Line Width",info:"The width of the outer border.",minValue:0,name:"BorderStrokeWidth",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Outer Radius",info:"The outer radius of the sprite. Higher values increase the roundness.",minValue:0,name:"OuterRadius",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Inner Radius",info:"The inner radius of the sprite. Higher values increase the roundness.",minValue:0,name:"InnerRadius",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"}],typeName:"Billboard"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Cone specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:1,name:"RadialSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Open ended",name:"OpenEnded",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Cone"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Lod specific fields",type:"Separator"},{datatype:"String",defaultValue:"0,2,4,6,8,10",displayName:"Distances",name:"Distances",type:"Attribute"}],typeName:"Lod"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Cylinder specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius top",minValue:0,name:"RadiusTop",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Radius bottom",minValue:0,name:"RadiusBottom",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:1,name:"RadialSegments",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Open ended",name:"OpenEnded",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Cylinder"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Plane specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Width",minValue:0,name:"Width",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Height",minValue:0,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Width segments",minValue:1,name:"WidthSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Height segments",minValue:1,name:"HeightSegments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Plane"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Ring specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:.5,displayName:"Inner radius",minValue:0,name:"InnerRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Outer radius",minValue:0,name:"OuterRadius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Theta segments",minValue:3,name:"ThetaSegments",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Phi segments",minValue:1,name:"PhiSegments",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Theta length",maxValue:360,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Ring"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Particles Editor Fields",type:"Separator"},{datatype:"Boolean",defaultValue:false,displayName:"Preview",info:"Previews the particle system by playing it in the editor.",name:"RunPreview",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Show Emitter Preview",info:"Shows a preview of the particle system's emitter.",name:"ShowHelper",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Pause",info:"Pauses the particle system.",name:"Pause",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Kill All Particles",info:"Kills all the alive particles in the system.",name:"KillAllParticles",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Restart",info:"Hard restart of the particle system. It kills all particles, clean all data and reset the simulation time.",name:"Restart",type:"Attribute"},{displayName:"Particle System",label:"Particle System Configuration File",linkableTypes:["Particles"],type:"Link",usageAs:"ParticleData",mandatory:true}],typeName:"ParticleSystem"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"CircleShadow specific fields",type:"Separator"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:0,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Strength",maxValue:1,minValue:0,name:"Strength",type:"Attribute",widget:"Slider"}],typeName:"CircleShadow"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Sphere specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Width segments",minValue:3,name:"WidthSegments",type:"Attribute"},{datatype:"Integer",defaultValue:6,displayName:"Height segments",minValue:2,name:"HeightSegments",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Phi start",maxValue:360,minValue:0,name:"PhiStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:360,displayName:"Phi length",maxValue:360,minValue:0,name:"PhiLength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Theta start",maxValue:360,minValue:0,name:"ThetaStart",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:180,displayName:"Theta length",maxValue:180,minValue:0,name:"ThetaLength",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Sphere"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Text specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"String",defaultValue:"Text",name:"Text",type:"Attribute"},{datatype:"Enum",defaultValue:"center",displayName:"Horizontal Alignment",info:"Horizontal text positioning",name:"HorizontalAlign",options:["left","center","right"],type:"Attribute"},{datatype:"Enum",defaultValue:"baseline",displayName:"Vertical Alignment",info:"Vertical text positioning",name:"VerticalAlign",options:["baseline","top","middle","bottom"],type:"Attribute"},{linkableTypes:["Font"],type:"Link",usageAs:"Font"},{datatype:"Float",defaultValue:1,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,name:"Height",type:"Attribute"},{datatype:"Integer",defaultValue:12,displayName:"Curve segments",name:"CurveSegments",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Bevel enabled",name:"BevelEnabled",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Bevel thickness",name:"BevelThickness",type:"Attribute"},{datatype:"Float",defaultValue:.03,displayName:"Bevel size",name:"BevelSize",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Bevel offset",name:"BevelOffset",type:"Attribute"},{datatype:"Integer",defaultValue:3,displayName:"Bevel segments",name:"BevelSegments",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Text"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"Torus specific fields",type:"Separator"},{linkableTypes:["Material"],type:"Link",usageAs:"Material"},{datatype:"Float",defaultValue:1,displayName:"Radius",minValue:0,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:.4,displayName:"Tube",minValue:0,name:"Tube",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Radial segments",minValue:3,name:"RadialSegments",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Tubular segments",minValue:2,name:"TubularSegments",type:"Attribute"},{datatype:"Float",defaultValue:360,displayName:"Arc",maxValue:360,minValue:0,name:"Arc",type:"Attribute",widget:"Slider"},{datatype:"Vector2d",defaultValue:{x:1,y:1},displayName:"UV Scale",name:"UVScale",type:"Attribute"},{name:"Physics",type:"FieldSet"}],typeName:"Torus"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Layers",defaultValue:[0],name:"Layers",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Sky specific fields",type:"Separator"},{datatype:"Float",defaultValue:1e3,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Turbidity",maxValue:20,minValue:1,name:"Turbidity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:2,displayName:"Rayleigh",maxValue:4,minValue:0,name:"Rayleigh",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.005,displayName:"Mie coefficient",maxValue:1,minValue:0,name:"MieCoefficient",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.8,displayName:"Mie directional G",maxValue:1,minValue:0,name:"MieDirectionalG",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.49,displayName:"Inclination",maxValue:1,minValue:0,name:"Inclination",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.25,displayName:"Azimuth",maxValue:1,minValue:0,name:"Azimuth",type:"Attribute",widget:"Slider"}],typeName:"Sky"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Audio listener specific fields",type:"Separator"},{datatype:"Float",defaultValue:1,name:"Gain",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Time delta",name:"TimeDelta",type:"Attribute"}],maxInstances:1,typeName:"AudioListener"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Transform",defaultValue:{position:{x:0,y:0,z:0},rotation:{w:1,x:0,y:0,z:0},scale:{x:1,y:1,z:1}},name:"Transform",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Positional audio specific fields",type:"Separator"},{name:"AudioLink",type:"FieldSet"},{datatype:"Boolean",defaultValue:false,displayName:"Autoplay",name:"Autoplay",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop",name:"Loop",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop section",name:"LoopSection",type:"Attribute",if:{Loop:true}},{datatype:"Float",defaultValue:0,displayName:"Loop start",minValue:0,name:"LoopStart",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",displayName:"Loop end",defaultValue:1,minValue:0,name:"LoopEnd",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",defaultValue:1,displayName:"Volume",minValue:0,name:"Volume",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Panning",maxValue:1,minValue:-1,name:"Panning",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Duration",minValue:0,name:"Duration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Detune",name:"Detune",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Playback rate",minValue:0,name:"PlaybackRate",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset",maxValue:1,minValue:0,name:"Offset",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Ref distance",minValue:0,name:"RefDistance",type:"Attribute"},{datatype:"Float",defaultValue:1e4,displayName:"Max distance",minValue:0,name:"MaxDistance",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Rolloff factor",minValue:0,name:"RolloffFactor",type:"Attribute"},{datatype:"Enum",defaultValue:"Inverse",displayName:"Distance model",name:"DistanceModel",options:["Linear","Inverse","Exponential"],type:"Attribute"},{datatype:"Enum",defaultValue:"Omnidirectional",displayName:"Direction",name:"Direction",options:["Omnidirectional","Directional"],type:"Attribute"},{datatype:"Float",defaultValue:90,displayName:"Cone inner angle",if:{Direction:"Directional"},maxValue:360,minValue:0,name:"ConeInnerAngle",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:180,displayName:"Cone outer angle",if:{Direction:"Directional"},maxValue:360,minValue:0,name:"ConeOuterAngle",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.2,displayName:"Cone outer gain",if:{Direction:"Directional"},maxValue:1,minValue:0,name:"ConeOuterGain",type:"Attribute",widget:"Slider"}],typeName:"PositionalAudio"},{fields:[{label:"3D Object Fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Active",name:"Active",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Tags",defaultValue:[],name:"Tags",type:"Attribute"},{label:"Audio specific fields",type:"Separator"},{name:"AudioLink",type:"FieldSet"},{datatype:"Boolean",defaultValue:false,displayName:"Autoplay",name:"Autoplay",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop",name:"Loop",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Loop section",name:"LoopSection",type:"Attribute",if:{Loop:true}},{datatype:"Float",defaultValue:0,displayName:"Loop start",minValue:0,name:"LoopStart",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",displayName:"Loop end",defaultValue:1,minValue:0,name:"LoopEnd",type:"Attribute",widget:"Slider",if:{Loop:true,LoopSection:true}},{datatype:"Float",defaultValue:1,displayName:"Volume",minValue:0,name:"Volume",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Panning",maxValue:1,minValue:-1,name:"Panning",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Duration",minValue:0,name:"Duration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Detune",name:"Detune",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Playback rate",minValue:0,name:"PlaybackRate",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset",maxValue:1,minValue:0,name:"Offset",type:"Attribute"}],typeName:"Audio"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Vehicle specific fields",type:"Separator"},{datatype:"Node",defaultValue:null,displayName:"Chassis node",name:"ChassisNode",type:"Attribute"},{elementName:"Wheel",fields:[{datatype:"Node",defaultValue:null,displayName:"Wheel node",name:"WheelNode",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Is Front",name:"IsFront",type:"Attribute"},{label:"Wheel config",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:.6,displayName:"Suspension rest length",name:"SuspensionRestLength",type:"Attribute"},{datatype:"Float",defaultValue:20,displayName:"Suspension stiffness",name:"SuspensionStiffness",type:"Attribute"},{datatype:"Float",defaultValue:2.3,displayName:"Suspension damping",name:"SuspensionDamping",type:"Attribute"},{datatype:"Float",defaultValue:4.4,displayName:"Suspension compression",name:"SuspensionCompression",type:"Attribute"},{datatype:"Float",defaultValue:1e3,displayName:"Friction",name:"Friction",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Roll influence",name:"RollInfluence",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Radius",name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Acceleration",name:"Acceleration",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Brakes",name:"Brakes",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Steering",name:"Steering",type:"Attribute"}],name:"Wheels",type:"List"}],typeName:"Vehicle"},{fields:[{name:"3dObjectNoShadows",type:"FieldSet"},{label:"Constraint specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"",displayName:"Type",name:"Type",options:["Point to Point","Hinge","Slider","Cone twist"],type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"First node",name:"FirstNode",type:"Attribute"},{datatype:"Node",defaultValue:null,displayName:"Second node",name:"SecondNode",type:"Attribute"}],typeName:"Constraint"},{fields:[{name:"3dObjectDefault",type:"FieldSet"},{label:"NavMesh specific fields",type:"Separator"},{datatype:"Enum",defaultValue:"Solo",displayName:"Type",name:"Type",options:["Solo","Tiled","Tile cache"],info:"For simple static scenes, use solo. For large maps use tiled, for large and/or dynamic maps, use tile cache",type:"Attribute"},{datatype:"Enum",defaultValue:"From children",displayName:"Mode",name:"Mode",options:["From children","From tags","From layers"],type:"Attribute"},{datatype:"Layers",defaultValue:[0],displayName:"Navmesh layers",info:"Selects which layers are added to the navmesh",name:"NavmeshLayers",type:"Attribute",if:{Mode:"From layers"}},{datatype:"Tags",defaultValue:[],info:"Selects meshes to add to the navmesh based on tag.",displayName:"Navmesh tags",name:"NavmeshTags",type:"Attribute",if:{Mode:"From tags"}},{datatype:"Boolean",defaultValue:false,displayName:"Auto generate",name:"AutoGenerate",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Always render helper",name:"AlwaysRenderHelper",type:"Attribute"},{datatype:"Button",defaultValue:false,displayName:"Regenerate now",name:"RegenerateNow",type:"Attribute"},{datatype:"Float",defaultValue:0,minValue:0,displayName:"Border size",name:"BorderSize",type:"Attribute"},{datatype:"Float",defaultValue:.2,minValue:.01,displayName:"Voxel cell height",name:"CellHeight",type:"Attribute",info:"Needs to resolve step/climb height cleanly."},{datatype:"Float",defaultValue:.2,minValue:.01,displayName:"Voxel cell size",name:"CellSize",type:"Attribute",info:"Smaller = more detail. Around 0.2m for human‑scale"},{datatype:"Integer",defaultValue:256,minValue:1,displayName:"Chunky tri mesh tris per chunk",name:"ChunkyTriMeshTrisPerChunk",type:"Attribute",if:{Type:"Tiled"}},{datatype:"Float",defaultValue:6,minValue:.01,displayName:"Detail sample dist",name:"DetailSampleDist",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:0,displayName:"Detail sample max error",name:"DetailSampleMaxError",type:"Attribute"},{datatype:"Integer",defaultValue:4,minValue:1,displayName:"Expected layers per tile",name:"ExpectedLayersPerTile",type:"Attribute",if:{Type:"Tile Cache"}},{datatype:"Integer",defaultValue:128,minValue:1,displayName:"Max obstacles",name:"MaxObstacles",type:"Attribute",if:{Type:"Tile Cache"}},{datatype:"Float",defaultValue:12,minValue:.01,displayName:"Max edge length",name:"MaxEdgeLen",type:"Attribute"},{datatype:"Float",defaultValue:1.3,minValue:0,displayName:"Max simplification error",name:"MaxSimplificationError",type:"Attribute",info:"Allowed contour deviation from source before another vertex is kept"},{datatype:"Integer",defaultValue:6,minValue:3,displayName:"Max vertices per poly",name:"MaxVertsPerPoly",type:"Attribute"},{datatype:"Float",defaultValue:20,minValue:.01,displayName:"Merge region area",name:"MergeRegionArea",type:"Attribute"},{datatype:"Float",defaultValue:8,minValue:.01,displayName:"Min region area",name:"MinRegionArea",type:"Attribute"},{datatype:"Float",defaultValue:2,minValue:0,displayName:"Walkable climb",name:"WalkableClimb",type:"Attribute",info:"Maximum step height"},{datatype:"Float",defaultValue:2,minValue:0,displayName:"Walkable height",name:"WalkableHeight",type:"Attribute",info:"Required head‑clearance. Must be at least the height of the characters."},{datatype:"Float",defaultValue:.5,minValue:.01,displayName:"Walkable radius",name:"WalkableRadius",type:"Attribute",info:"Clearance from walls/obstacles"},{datatype:"Float",defaultValue:60,minValue:0,maxValue:360,displayName:"Walkable slope angle",name:"WalkableSlopeAngle",type:"Attribute",info:"Steepest walkable slope"},{datatype:"Boolean",defaultValue:true,displayName:"Build BV Tree",name:"BuildBvTree",info:"",type:"Attribute",if:{$or:[{Type:"Solo"},{Type:"Tiled"}]}},{datatype:"Integer",defaultValue:32,minValue:1,displayName:"Tile size",name:"TileSize",type:"Attribute",info:"The size of the tiles to be used. Typically you will want to stay in the range 32 - 64. Sizes outside this range might result in unexpected behaviour",if:{$or:[{Type:"Tiled"},{Type:"Tile cache"}]}},{label:"Crowd fields",type:"Separator"},{datatype:"Boolean",defaultValue:true,displayName:"Enable crowd",name:"EnableCrowd",type:"Attribute"},{datatype:"Integer",defaultValue:100,minValue:1,displayName:"Max agent count",name:"MaxAgentCount",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:.01,displayName:"Max agent radius",name:"MaxAgentRadius",type:"Attribute"}],typeName:"NavMesh"}],name:"Scenegraph",type:"Tree"}],name:"Prefab",updateRequiresThumbRefresh:true},{_id:{$oid:"5e6a1ad189707feef9173397"},contentTypes:["text/x-lua"],fieldSets:[],fields:[],name:"Script",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707f2ef9133396"},contentTypes:[],fieldSets:[],fields:[{childTypes:[{displayName:"Camera",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Tag",info:"Tag of the camera to render",name:"Tag",type:"Attribute"},{datatype:"Layers",defaultValue:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],displayName:"Layers",info:"Selects which layers are rendered by the camera. Overrides scene Camera node 'Cull mode' field.",name:"Layers",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Width",info:"Width in percent to render",name:"Width",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:100,displayName:"Height",info:"Height in percent to render",name:"Height",type:"Attribute",widget:"Slider"}],inputs:[],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"},{displayName:"Depth output",name:"DepthOutput",type:"GrayImage"},{displayName:"Depth Comparison output",name:"DepthComparisonOutput",type:"GrayImage"},{displayName:"Normal output",name:"NormalOutput",type:"RGBImage"},{displayName:"Camera Output",name:"CameraOutput",type:"Attribute"}],typeName:"camera"},{displayName:"Merge",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Alpha",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Adjusts how strongly the blending mode affects the final result.",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Offset X",info:"Horizontal offset for the secondary input (relative to composition resolution). Positive values move right, negative left. Percentage-based for resolution independence.",maxValue:100,minValue:-100,name:"OffsetX",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Offset Y",info:"Vertical offset for the secondary input (relative to composition resolution). Positive values move up, negative down. Percentage-based for resolution independence.",maxValue:100,minValue:-100,name:"OffsetY",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Width",info:"Horizontal scale of the secondary input as percentage of composition width. 100% maintains original aspect ratio when Height is also 100%. Values <100% shrink, >100% stretch.",maxValue:100,minValue:0,name:"Width",type:"Attribute"},{datatype:"Float",defaultValue:100,displayName:"Height",info:"Vertical scale of the secondary input as percentage of composition height. 100% maintains original aspect ratio when Width is also 100%. Values <100% shrink, >100% stretch.",maxValue:100,minValue:0,name:"Height",type:"Attribute"}],inputs:[{displayName:"Color input 1",name:"ColorInput1",types:["RGBImage"]},{displayName:"Color input 2",name:"ColorInput2",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"merge"},{displayName:"SSAO",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Radius",minValue:.01,name:"Radius",type:"Attribute"},{datatype:"Integer",defaultValue:8,displayName:"Samples",maxValue:32,minValue:8,name:"Samples",type:"Attribute"},{datatype:"Float",defaultValue:.001,displayName:"Bias",minValue:.001,name:"Bias",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Intensity",minValue:0,name:"Intensity",type:"Attribute"},{datatype:"Float",defaultValue:.07,displayName:"Max distance",minValue:.01,name:"MaxDistance",type:"Attribute"}],inputs:[{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Normal input",name:"NormalInput",types:["RGBImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"ssao"},{displayName:"FXAA",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"fxaa"},{displayName:"Bloom",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1.5,displayName:"Strength",maxValue:10,minValue:0,name:"Strength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.4,displayName:"Radius",maxValue:1,minValue:0,name:"Radius",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.8,displayName:"Threshold",info:"Minimum luminance required for a pixel to contribute to bloom. Pixels darker than this value are suppressed, while brighter pixels contribute to the blur.",maxValue:1,minValue:0,name:"Threshold",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.4,displayName:"Soft Knee",info:"Creates a smooth transition around the threshold to avoid harsh cutoffs. Higher values produce a more gradual blend between non-blooming and blooming pixels.",maxValue:1,minValue:0,name:"SoftKnee",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"bloom"},{displayName:"Outline",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Edge Strength",maxValue:5,minValue:0,name:"EdgeStrength",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.5,displayName:"Edge Width",maxValue:2,minValue:.1,name:"EdgeWidth",type:"Attribute",widget:"Slider"},{datatype:"Color",defaultValue:{r:255,g:0,b:0,a:255},displayName:"Edge Color",name:"EdgeColor",type:"Attribute"},{datatype:"Enum",defaultValue:"Add",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth Comparison input",name:"DepthComparisonInput",types:["GrayImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"outline"},{displayName:"Film",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.05,displayName:"Noise intensity",maxValue:1,minValue:0,name:"NoiseIntensity",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:0,displayName:"Scanlines intensity",maxValue:1,minValue:0,name:"ScanlinesIntensity",type:"Attribute",widget:"Slider"},{datatype:"Integer",defaultValue:0,displayName:"Scanlines count",maxValue:1e3,minValue:0,name:"ScanlinesCount",type:"Attribute",widget:"Slider"},{datatype:"Boolean",defaultValue:false,displayName:"Grayscale",name:"Grayscale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Animated",name:"Animated",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"film"},{displayName:"Fog",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Color",defaultValue:{r:255,g:0,b:0,a:255},displayName:"Color",name:"Color",type:"Attribute"},{datatype:"Enum",defaultValue:"Camera Depth",displayName:"Direction",name:"Direction",type:"Attribute",options:["Camera Depth","X","Y","Z"],info:"Defines the ray along which the fog is evaluated. 'Camera Depth' applies fog based on distance from the camera view direction (distances should be non-negative). 'X', 'Y', and 'Z' apply fog along the corresponding world-space axis; distances may be positive or negative depending on where the fog volume should begin and end."},{datatype:"Enum",defaultValue:"Linear",displayName:"Type",name:"Type",type:"Attribute",options:["Linear","Exponential","Exponential Squared"]},{datatype:"Float",defaultValue:1,displayName:"Start Distance",name:"StartDistance",type:"Attribute",info:"Distance along the selected fog ray where the fog begins to accumulate. Must be >= 0 when using Camera Depth."},{datatype:"Float",defaultValue:1e3,displayName:"End Distance",name:"EndDistance",type:"Attribute",info:"Distance along the selected fog ray where the fog reaches maximum density. Must be >= 0 when using Camera Depth."},{datatype:"Float",defaultValue:.0025,displayName:"Density",minValue:1e-5,maxValue:1,name:"Density",type:"Attribute",step:.1,if:{$or:[{FogType:"Exponential"},{FogType:"Exponential Squared"}]}},{datatype:"Boolean",defaultValue:true,displayName:"Enable Noise",name:"EnableNoise",info:"Adds animated noise to the fog to create more natural variation.",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Noise Scale",minValue:.001,name:"NoiseScale",type:"Attribute",step:1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:.1,displayName:"Noise Speed",maxValue:1,minValue:0,name:"NoiseSpeed",type:"Attribute",step:.1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:.5,displayName:"Noise Amount",maxValue:1,minValue:0,name:"NoiseAmount",type:"Attribute",step:.1,if:{EnableFogNoise:true}},{datatype:"Float",defaultValue:0,maxValue:1,displayName:"Sky Density",info:"Controls the amount of fog applied to the sky.",name:"SkyDensity",type:"Attribute",step:.1}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["DepthBuffer"]},{displayName:"Camera input",name:"CameraInput",types:["Camera"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"fog"},{displayName:"Sepia",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"sepia"},{displayName:"Vignette",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.9,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Float",defaultValue:.4,displayName:"Amount",maxValue:1,minValue:0,name:"Amount",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"vignette"},{displayName:"Blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"blur"},{displayName:"Scanline",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Density",maxValue:1,minValue:0,name:"Density",type:"Attribute",widget:"Slider"},{datatype:"Float",defaultValue:.01,displayName:"Scroll Speed",maxValue:1,minValue:0,name:"ScrollSpeed",type:"Attribute",widget:"Slider"},{datatype:"Enum",defaultValue:"Overlay",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"scanline"},{displayName:"Shockwave",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Continuous",info:"Whether or not new shockwaves will emit as soon as the previous shockwave ended.",name:"Continuous",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Delay",minValue:0,name:"Delay",info:"How long to wait between shockwave emissions.",type:"Attribute",if:{Continuous:false}},{datatype:"Integer",defaultValue:5,displayName:"Amount",minValue:0,name:"Amount",info:"The number of shockwaves.",type:"Attribute",if:{Continuous:false}},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Center",info:"The center in world coordinates of the shockwave effect.",name:"Center",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Size",maxValue:100,minValue:.001,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:2,displayName:"Speed",maxValue:100,minValue:.001,name:"Speed",type:"Attribute"},{datatype:"Float",defaultValue:-0.2,displayName:"Radius",maxValue:10,minValue:-10,name:"Radius",type:"Attribute"},{datatype:"Float",defaultValue:.2,displayName:"Maximum Radius",maxValue:10,minValue:0,name:"MaxRadius",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Wave Size",maxValue:100,minValue:1,name:"WaveSize",type:"Attribute"},{datatype:"Float",defaultValue:.05,displayName:"Amplitude",maxValue:10,minValue:0,name:"Amplitude",type:"Attribute"},{datatype:"Enum",defaultValue:"Screen",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.75,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"shockwave"},{displayName:"Pixelation",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Granularity",maxValue:100,minValue:1,name:"Granularity",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"pixelation"},{displayName:"Adjust",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Brightness",maxValue:10,minValue:-10,name:"Brightness",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Contrast",maxValue:10,minValue:-10,name:"Contrast",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Hue",maxValue:6.283,minValue:0,name:"Hue",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Saturation",maxValue:1,minValue:-1,name:"Saturation",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"adjust"},{displayName:"Chromatic abberation",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Red factor",maxValue:1,minValue:0,name:"RedFactor",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Green factor",maxValue:1,minValue:0,name:"GreenFactor",type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Blue factor",maxValue:1,minValue:0,name:"BlueFactor",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"chromaticAbberation"},{displayName:"Color Depth",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Integer",defaultValue:16,displayName:"Bit Depth",maxValue:32,minValue:1,name:"bitDepth",type:"Attribute"},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Amount of blending. Only valid for additive and subtractive modes",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"colorDepth"},{displayName:"Depth Of Field",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"String",defaultValue:"",displayName:"Focus Target",name:"FocusTarget",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"World Focus Distance",minValue:0,name:"WorldFocusDistance",type:"Attribute"},{datatype:"Float",defaultValue:5,displayName:"World Focus Range",minValue:0,name:"WorldFocusRange",type:"Attribute"},{datatype:"Integer",defaultValue:4,displayName:"Kawase Blur Kernel Size",maxValue:10,minValue:0,name:"Kernel",type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Bokeh Scale",maxValue:25,minValue:0,name:"BokehScale",type:"Attribute"},{datatype:"Float",defaultValue:.75,displayName:"Resolution Scale",maxValue:1,minValue:0,name:"ResolutionScale",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"depthoffield"},{displayName:"Glitch",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:.3,y:1},displayName:"Strength",info:"Two values controlling the maximum and minimum strength of the glitch effect.",name:"Strength",type:"Attribute"},{datatype:"Float",defaultValue:.1,displayName:"Columns",maxValue:1,minValue:0,name:"Columns",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:0,y:2.5},displayName:"Delay",info:"Two values controlling the duration of the delay of the glitch effect.",name:"Delay",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:0,y:3},displayName:"Duration",info:"Two values controlling the duration of the glitch effect.",name:"Duration",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"glitch"},{displayName:"God Rays",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"String",defaultValue:"",type:"Attribute",displayName:"Light Source",name:"SunTag"},{datatype:"Float",defaultValue:1,displayName:"Size",minValue:.01,maxValue:10,name:"Size",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Density",minValue:.01,maxValue:1,name:"Density",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Decay",minValue:.01,maxValue:1,name:"Decay",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Weight",minValue:.01,maxValue:1,name:"Weight",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Exposure",minValue:.01,maxValue:1,name:"Exposure",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"MaximumIntensity",minValue:.01,maxValue:1,name:"MaximumIntensity",type:"Attribute"},{datatype:"Integer",defaultValue:60,displayName:"Samples",minValue:0,name:"Samples",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Blur Rays",name:"BlurRays",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Kernel Size",info:"The number of kernel applied on the God Rays. A higher number yields to a better blur effect at higher computational cost",maxValue:10,minValue:0,name:"Kernel",if:{BlurRays:true},type:"Attribute"},{datatype:"Float",defaultValue:.5,displayName:"Resolution Scale",info:"A higher resolution yields a more realistic result at higher computational cost",maxValue:1,minValue:0,name:"ResolutionScale",type:"Attribute"},{datatype:"Enum",defaultValue:"Screen",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Alpha","Average","Color","Color Burn","Color Dodge","Darken","Difference","Divide","Exclusion","Hard Light","Hard Mix","Hue","Invert","Invert RGB","Lighten","Linear Burn","Linear Dodge","Linear Light","Luminosity","Multiply","Negation","Normal","Overlay","Pin Light","Reflect","Saturation","Screen","Soft Light","Set","Src","Subtract","Vivid Light"],type:"Attribute"},{datatype:"Float",defaultValue:.25,displayName:"Opacity",name:"Opacity",maxValue:1,minValue:0,type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Debug",name:"Debug",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]},{displayName:"Depth input",name:"DepthInput",types:["GrayImage"]},{displayName:"Camera Input",name:"CameraInput",types:["Attribute"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"godrays"},{displayName:"Kawase Blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Integer",defaultValue:2,displayName:"Kernel Size",info:"The number of kernel applied on the effect. A higher number yields to a better blur effect at higher computational cost",maxValue:10,minValue:0,name:"Kernel",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Scale",info:"The strenth of the blur effect.",maxValue:1,minValue:0,name:"Scale",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"kawaseblur"},{displayName:"Radial blur",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Amount",maxValue:10,minValue:0,name:"Amount",type:"Attribute"},{datatype:"Vector2d",defaultValue:{x:.5,y:.5},displayName:"Center",name:"Center",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"radialBlur"},{displayName:"Tone Mapping",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Boolean",defaultValue:true,displayName:"Enabled",name:"Enabled",type:"Attribute"},{datatype:"Enum",defaultValue:"LINEAR",displayName:"Mode",name:"TonemappingMode",options:["LINEAR","REINHARD","REINHARD2","REINHARD2_ADAPTIVE","UNCHARTED2","ACES_FILMIC","AGX","NEUTRAL"],type:"Attribute"},{datatype:"Integer",defaultValue:256,displayName:"Luminance Map Width. Must be a power of 2.",minValue:1,name:"LuminanceMapWidth",type:"Attribute",if:{TonemappingMode:"REINHARD2_ADAPTIVE"}},{datatype:"Integer",defaultValue:256,displayName:"Luminance Map Height. Must be a power of 2.",if:{TonemappingMode:"REINHARD2_ADAPTIVE"},minValue:1,name:"LuminanceMapHeight",type:"Attribute"},{datatype:"Float",defaultValue:4,displayName:"Maximum Luminance",minValue:0,maxValue:20,name:"MaxLuminance",type:"Attribute"},{datatype:"Float",defaultValue:.01,displayName:"Minimum Luminance",minValue:0,maxValue:3,name:"MinLuminance",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Average Luminance",minValue:0,maxValue:1,name:"MeanLuminance",type:"Attribute"},{datatype:"Float",defaultValue:.6,displayName:"Middle Grey",maxValue:1,minValue:0,name:"MiddleGrey",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Adaptation Rate",minValue:0,name:"AdaptationRate",type:"Attribute"}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[{displayName:"Color output",name:"ColorOutput",type:"RGBImage"}],typeName:"tonemapping"},{displayName:"Output",fields:[{datatype:"String",defaultValue:"Output",displayName:"Name",name:"Name",type:"Attribute"},{datatype:"Integer",defaultValue:256,displayName:"Target width",minValue:1,name:"DesiredWidth",type:"Attribute",info:"This is the width of the render target in case the composition is used in a material albedo slot."},{datatype:"Integer",defaultValue:256,displayName:"Target height",minValue:1,name:"DesiredHeight",type:"Attribute",info:"This is the height of the render target in case the composition is used in a material albedo slot."}],inputs:[{displayName:"Color input",name:"ColorInput",types:["RGBImage"]}],outputs:[],typeName:"output"}],name:"NodeGraph",type:"NodeGraph"}],name:"Composition",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707f2ef9147396"},contentTypes:[],fieldSets:[],fields:[],name:"Behavior",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"5e6a1ad189707feef9173398"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:1,displayName:"GLSL Version",name:"GLSLVersion",options:[1,3],type:"Attribute"},{datatype:"Enum",defaultValue:"Full",displayName:"Resolution",name:"Resolution",options:["Full","Half","Quarter"],type:"Attribute"},{displayName:"Texture Channel 1",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel1"},{displayName:"Texture Channel 2",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel2"},{displayName:"Texture Channel 3",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel3"},{displayName:"Texture Channel 4",linkableTypes:["Image"],type:"Link",usageAs:"TexChannel4"}],name:"Background Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"5e6a1ad189707feef9173399"},contentTypes:["video/mp4","video/webm"],fieldSets:[],fields:[{datatype:"Enum",defaultValue:"Linear",displayName:"Encoding",name:"Encoding",options:["Linear","sRGB"],type:"Attribute"}],name:"Video",creatableEmpty:false},{_id:{$oid:"5e8c9d5c02a37596bb1fd5b6"},contentTypes:[""],fieldSets:[],fields:[{elementName:"Item",fields:[{datatype:"String",defaultValue:"",displayName:"Description",name:"Description",type:"Attribute"},{type:"Link",usageAs:"Item",mandatory:true}],name:"Items",type:"List"}],name:"Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c02a33596bb53d5b6"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Audio items",elementName:"AudioItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Audio"],type:"Link",usageAs:"Audio",mandatory:true}],name:"AudioItems",type:"List"}],name:"Audio Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c01a32576bb53d5b6"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Mesh items",elementName:"MeshItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Mesh"],type:"Link",usageAs:"Mesh",mandatory:true}],name:"MeshItems",type:"List"}],name:"Mesh Collection",creatableEmpty:true},{_id:{$oid:"5e8c9d5c0233596cb31d5ba2"},contentTypes:[""],fieldSets:[],fields:[{displayName:"Material items",elementName:"MaterialItem",fields:[{datatype:"String",defaultValue:"",displayName:"Name",name:"Name",type:"Attribute"},{linkableTypes:["Material"],type:"Link",usageAs:"Material",mandatory:true}],name:"MaterialItems",type:"List"}],name:"Material Collection",creatableEmpty:true},{_id:{$oid:"5edf2f6edc25bdf4e5723e52"},contentTypes:["text/x-yaml"],fieldSets:[],fields:[{displayName:"Material collections",elementName:"Material Collection",fields:[{linkableTypes:["Material Collection"],type:"Link",usageAs:"MaterialCollection",displayName:"Material Collection",mandatory:true}],name:"MaterialCollections",type:"List"},{displayName:"Mesh collections",elementName:"Mesh Collection",fields:[{linkableTypes:["Mesh Collection"],type:"Link",usageAs:"MeshCollection",displayName:"Mesh Collection",mandatory:true}],name:"MeshCollections",type:"List"}],name:"GridMap",creatableEmpty:true},{_id:{$oid:"60827c20d3f7a631e71522cc"},contentTypes:[],fieldSets:[],fields:[],name:"Dataset",creatableEmpty:false},{_id:{$oid:"62133ff41302cfcd0d9a2346"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[],name:"Pixel Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"62133ffb1302cf53ef9a234e"},contentTypes:["text/x-glsl"],fieldSets:[],fields:[],name:"Vertex Shader",updateRequiresThumbRefresh:false,creatableEmpty:true},{_id:{$oid:"62a83a1ef46738fe096fd7e3"},contentTypes:["application/zip"],fieldSets:[],fields:[],name:"Archive",updateRequiresThumbRefresh:false,creatableEmpty:false},{_id:{$oid:"640076f0e49250ab06ea4aec"},contentTypes:["font/ttf","font/otf"],fieldSets:[],fields:[],name:"Font",updateRequiresThumbRefresh:true,creatableEmpty:false},{_id:{$oid:"6463df676055450cac673d90"},contentTypes:[],fieldSets:[],fields:[{label:"General Settings",type:"Separator"},{datatype:"Integer",defaultValue:1e3,displayName:"Maximum Number of Particles",info:"The maximum number of particles that can exist at the same time in the simulation.",minValue:0,name:"MaxParticles",type:"Attribute"},{datatype:"Float",defaultValue:-1,displayName:"Duration",info:"Duration (in seconds) the particle system runs. Use -1 for infinite duration.",minValue:-1,name:"Duration",type:"Attribute"},{datatype:"Enum",defaultValue:"Local",displayName:"Coordinate System",info:"Defines whether particle movement is relative to the emitter's local space or the global world space.",name:"SystemCoordinates",options:["Local","World"],type:"Attribute"},{label:"Emission Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Emit All At Once",info:"Emit all particles immediately when the simulation starts.",name:"EmitAllAtOnce",type:"Attribute"},{datatype:"Float",defaultValue:128,minValue:0,displayName:"Spawn amount",if:{EmitAllAtOnce:false},info:"The number of particles emitted each time the emitter spawns.",name:"SpawnAmount",type:"Attribute"},{datatype:"Float",defaultValue:1,minValue:0,displayName:"Spawn Interval",info:"The time, in seconds, between each consecutive spawn of particles.",if:{EmitAllAtOnce:false},name:"SpawnRate",type:"Attribute"},{datatype:"Float",defaultValue:-1,minValue:-1,displayName:"Number of Emissions",info:"Total number of spawn events before emission stops; after this number of emissions, no more particles will be emitted.",if:{EmitAllAtOnce:false},name:"MaximumEmissions",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Continuous emission",info:"If enabled, particles in each emission spawn gradually over time instead of instantly.",if:{EmitAllAtOnce:false},name:"ContinuousEmissionFlag",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Auto Respawn",info:"Automatically respawn particles when they die.",name:"Respawn",type:"Attribute",if:{EmitAllAtOnce:true}},{label:"Size Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable","Velocity"],displayName:"Scaling Mode",info:"Determines how particle size changes over their lifetime: constant size, variable scaling, or based on velocity.",name:"ScaleMode",type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Base Size",info:"The size of the particles at emission",minValue:0,name:"ParticleInitialSize",type:"Attribute"},{datatype:"Float",defaultValue:15,displayName:"Final Size",info:"The size particles reach at the end of their lifetime. If particles die early, they may not reach their final size.",minValue:0,name:"ParticleFinalSize",type:"Attribute",if:{ScaleMode:"Variable"}},{datatype:"Float",displayName:"Scale Randomness",name:"ScaleRandomness",defaultValue:.1,minValue:0,maxValue:1,info:"Random variation applied to scale curve values."},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Interpolation Function",info:"Interpolation method for scaling particles over their lifetime.",type:"Attribute",name:"ScaleFunction",if:{ScaleMode:"Variable"}},{datatype:"Float",defaultValue:.5,minValue:0,maxValue:5,if:{ScaleMode:"Variable",$or:[{ScaleFunction:"Exponential"},{ScaleFunction:"Inverse Exponential"},{ScaleFunction:"Ease-in, Ease-out"}]},displayName:"Interpolation Rate",name:"ApproachSize",info:"Controls the rate at which particles scale over time based on the interpolation modes.",type:"Attribute"},{label:"Velocity Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable"],displayName:"Velocity Mode",info:"Determines if particles maintain a constant velocity or change velocity over their lifetime.",name:"VelocityMode",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Initial Velocity",info:"The starting velocity of particles when emitted.",name:"InitialVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Final Velocity",info:"The velocity particles will reach by the end of their lifetime. Used only when Velocity Mode is set to Variable.",name:"FinalVelocity",type:"Attribute",if:{VelocityMode:"Variable"}},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Interpolation Function",info:"Defines the interpolation method for velocity changes over the particle’s lifetime.",name:"VelocityFunction",type:"Attribute",if:{VelocityMode:"Variable"}},{datatype:"Float",defaultValue:.5,displayName:"Interpolation Rate",info:"Controls the rate at which particles transition from initial to final velocity for the interpolation modes.",maxValue:5,minValue:0,name:"FinalVelocityApproach",type:"Attribute",if:{VelocityMode:"Variable",$or:[{VelocityFunction:"Exponential"},{VelocityFunction:"Inverse Exponential"},{VelocityFunction:"Ease-in, Ease-out"}]}},{datatype:"Float",defaultValue:0,displayName:"Spread",info:"Randomly offsets the emission angle (in degrees) from the base direction. A value of 360° emits particles uniformly in all directions. Requires Initial Velocity not be a 0-vector to have any effect.",maxValue:360,minValue:0,name:"Spread",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Angular Velocity",info:"The speed at which particles rotate around their center of mass, in radians per second.",minValue:0,name:"AngularVelocity",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{datatype:"Enum",defaultValue:"Clockwise",options:["Clockwise","Anticlockwise"],displayName:"Rotation Direction",info:"Controls the rotation direction of particles.",name:"AngularDirection",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{datatype:"Float",defaultValue:0,displayName:"Rotation Randomness",info:"Random variation applied to particle angular velocity. 0 = all particles rotate at the same speed, 1 = each particle can vary ±100% of base angular velocity.",minValue:0,maxValue:1,name:"RotationRandomness",type:"Attribute",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]}},{label:"Force Settings",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:0,displayName:"Drift",info:"A random velocity added to particles in all directions to simulate drifting motion.",name:"Drift",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Gravity",info:"A constant acceleration applied to particles after emission, simulating gravity. Positive values pull particles downward; negative values pull them upward.",name:"Gravity",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Tangential Velocity",info:"Applies a tangential velocity to particles, causing them to orbit the center point along the defined orbital plane.",name:"OrbitalVelocity",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Orbit Center",info:"The point in 3D space around which particles orbit.",name:"OrbitalCenterPoint",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:1,z:0},displayName:"Orbital Plane",info:"A vector normal that defines the orientation of the orbital plane. Particles orbit around an axis perpendicular to this vector. Should be normalized (length = 1), but normalization is not enforced.",name:"OrbitalPlane",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Orbital Decay",info:"Causes particles to gradually spiral inward toward the orbital center over time.",name:"OrbitalDecay",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},displayName:"Target",info:"A 3D point in space that particles are attracted to.",name:"Target",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Target Force",info:"The strength of the attraction force pulling particles toward the target. Set to 0 to disable.",name:"TargetForce",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Kill on target",info:"If enabled, particles are deleted once they reach the target position.",name:"TargetDeleteFlag",type:"Attribute"},{datatype:"Float",defaultValue:.1,if:{TargetDeleteFlag:true},displayName:"Target Deletion Threshold",info:"The distance from the target at which particles are deleted.",minValue:0,name:"TargetDeletionThreshold",type:"Attribute"},{label:"Life Settings",type:"Separator",collapsed:true},{datatype:"Float",defaultValue:10,displayName:"Life",info:"Time in seconds each particle remains alive before disappearing.",minValue:0,name:"Life",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Life Randomness",info:"Adds randomness, in seconds, to particle lifetimes. Each particle's life is calculated as: life + random(0 to 1) x life randomness.",minValue:0,name:"LifeRandomness",type:"Attribute"},{label:"Texture and Color Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Base",name:"ParticleType",info:"Defines the rendering style of particles: Base (simple points), Texture (image-based), or Sprite (animated images).",options:["Base","Texture","Sprite"],type:"Attribute"},{displayName:"Texture",info:"Image used as the particle’s texture.",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]},linkableTypes:["Image"],type:"Link",usageAs:"ParticleTexture"},{datatype:"Boolean",defaultValue:true,displayName:"Circular Mask",info:"Applies a circular alpha mask to the texture or sprite, making only the circular area visible while masking out the corners.",name:"useCircularMask",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Texture hue",info:"Amount of hue shift applied to the particle texture, expressed as a normalized value from 0 to 1, where 0 corresponds to 0 radians (0°) and 1 corresponds to 2π radians (360°).",minValue:0,maxValue:1,name:"TextureHue",type:"Attribute"},{datatype:"Boolean",defaultValue:false,name:"TextureBlending",displayName:"Texture Blending",info:"If enabled, blends the particle texture with the background or other particles for smoother visuals.",if:{$or:[{ParticleType:"Texture"},{ParticleType:"Sprite"}]},type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Particle Color",info:"Base color applied to particles at emission.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"Color",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Use Final Color",info:"Enable color transition so particles interpolate to a specified final color at the end of their lifetime.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"EnableFinalColor",type:"Attribute"},{datatype:"Color",defaultValue:{a:255,b:255,g:255,r:255},displayName:"Final Color",info:"The color particles interpolate to at the end of their life.",if:{EnableFinalColor:true,$or:[{ParticleType:"Base"},{TextureBlending:true}]},name:"FinalColor",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Random Color Factor",info:"Linearly blends each particle's color with a unique random tint. 0 = no randomness, 1 = full random color.",if:{$or:[{ParticleType:"Base"},{TextureBlending:true}]},minValue:0,maxValue:1,name:"RandomColorFactor",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Enable Sprite Fade",if:{ParticleType:"Sprite"},info:"Allows the sprite to smoothly fade in and fade, creating a softer transition.",name:"EnableSpriteFade",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Roll Sprite Texture With Particle's Life",if:{ParticleType:"Sprite"},info:"Enable the sprite to animate by rolling through its frames based on the particle's lifetime.",name:"RollSpriteWithLife",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Speed",if:{ParticleType:"Sprite",RollSpriteWithLife:false},info:"Speed, in frames per seconds, at which the sprite animation advances over time.",minValue:0,name:"SpriteSpeed",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Cols",if:{ParticleType:"Sprite"},info:"Number of horizontal frames (columns) in the sprite sheet. Must be specified manually. Incorrect values may cause improper animation.",minValue:1,name:"SpriteColumns",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Sprite Rows",if:{ParticleType:"Sprite"},info:"Number of vertical frames (rows) in the sprite sheet. Must be specified manually. Incorrect values may cause improper animation.",minValue:1,name:"SpriteRows",type:"Attribute"},{label:"Blending Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Normal",displayName:"Blending Mode",name:"BlendingMode",options:["Add","Multiply","Negation","Normal","Subtract"],type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Blend amount",info:"Adjusts how strongly the blending mode affects the final result.",maxValue:1,minValue:0,name:"Opacity",type:"Attribute",widget:"Slider"},{label:"Fade Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Constant",options:["Constant","Variable"],displayName:"Fading Mode",info:"Determines how particle opacity changes: constant transparency, fade over lifetime, or based on velocity.",name:"FadeMode",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Initial Opacity",info:"The opacity of particles when they are first emitted (0.0 = transparent, 1.0 = opaque)",minValue:0,maxValue:1,name:"ParticleInitialOpacity",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Final Opacity",info:"The opacity particles reach at the end of their lifetime. Creates fade-out effect when lower than initial opacity.",minValue:0,maxValue:1,name:"ParticleFinalOpacity",type:"Attribute",if:{FadeMode:"Variable"}},{datatype:"Enum",defaultValue:"Linear",options:["Linear","Exponential","Inverse Exponential","Ease-in, Ease-out"],displayName:"Fade Interpolation",info:"Controls how smoothly particles fade between initial and final opacity over their lifetime.",type:"Attribute",name:"FadeFunction",if:{FadeMode:"Variable"}},{datatype:"Float",defaultValue:1,minValue:.1,maxValue:5,if:{FadeMode:"Variable",$or:[{FadeFunction:"Exponential"},{FadeFunction:"Inverse Exponential"},{FadeFunction:"Ease-in, Ease-out"}]},displayName:"Fade Rate",name:"FadeApproach",info:"Controls how quickly the fade transition occurs. Higher values create sharper transitions, lower values create gentler fades.",type:"Attribute"},{label:"Emission Settings",type:"Separator",collapsed:true},{datatype:"Enum",defaultValue:"Box",name:"EmitterShape",displayName:"Emitter Shape",info:"Defines the geometric shape from which particles are emitted.",options:["Point","Box","Sphere","Hemisphere","Torus","Cone","Circle","Edge"],type:"Attribute"},{datatype:"Enum",defaultValue:"Volume",name:"EmitterTypeSurfaceVolumeNormal",displayName:"Emitter Type",info:"Specifies whether particles are emitted from the surface, volume, or along the normals of the shape.",options:["Surface","Volume","Normals"],if:{$or:[{EmitterShape:"Box"},{EmitterShape:"Sphere"},{EmitterShape:"Cone"}]},type:"Attribute"},{datatype:"Enum",defaultValue:"Volume",name:"EmitterTypeSurfaceVolume",info:"Specifies whether particles are emitted from the surface or volume of the shape.",displayName:"Emitter Type",options:["Surface","Volume"],if:{$or:[{EmitterShape:"Hemisphere"},{EmitterShape:"Torus"}]},type:"Attribute"},{datatype:"Float",defaultValue:10,displayName:"Velocity Along Normals.",info:"Speed at which particles are emitted along the surface normals.",if:{EmitterTypeSurfaceVolumeNormal:"Normals"},minValue:0,name:"NormalsVelocity",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The size of the emitter.",info:"Defines the size of the emitter.",if:{$or:[{EmitterShape:"Box"}]},minValue:0,name:"EmitterSize",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The radius of the emitter.",if:{$or:[{EmitterShape:"Torus"},{EmitterShape:"Cone"},{EmitterShape:"Sphere"},{EmitterShape:"Hemisphere"},{EmitterShape:"Circle"}]},minValue:0,name:"EmitterRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The outer radius of the emitter",if:{$or:[{EmitterShape:"Torus"}]},minValue:0,name:"EmitterOuterRadius",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The height of the emitter",if:{$or:[{EmitterShape:"Cone"},{EmitterShape:"Edge"}]},minValue:0,name:"EmitterHeight",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"The width of the emitter.",if:{$or:[{EmitterShape:"Edge"}]},minValue:0,name:"EmitterWidth",type:"Attribute"},{datatype:"Boolean",defaultValue:false,displayName:"Round Tip",if:{$or:[{EmitterShape:"Cone"}]},info:"Round the tip of the cone instead of using a sharp point.",name:"EmitterRoundTip",type:"Attribute"},{label:"Bounding Box Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enable Bounding Box",info:"Enable a bounding box to restrict particles within a defined 3D area.",name:"EnableBBox",type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:10,y:10,z:10},info:"Coordinates of the bounding box's maximum corner (upper-right-front).",name:"BBoxMax",displayName:"Bounding Box Maximum Corner",if:{EnableBBox:true},type:"Attribute"},{datatype:"Vector3d",defaultValue:{x:0,y:0,z:0},info:"Coordinates of the bounding box's minimum corner (lower-left-back).",name:"BBoxMin",displayName:"Bounding Box Minimum Corner",if:{EnableBBox:true},type:"Attribute"},{label:"Curl Noise Settings",type:"Separator",collapsed:true},{datatype:"Boolean",defaultValue:false,displayName:"Enable Curl Noise",info:"Toggle curl noise effect on particles to simulate turbulent, swirling particle behavior.",name:"NoiseFlag",type:"Attribute"},{datatype:"NoisePreview",if:{NoiseFlag:true},displayName:"Noise Preview",info:"Visual preview of the curl noise pattern applied to the particle system.",name:"NoisePreview",type:"Attribute"},{datatype:"Float",defaultValue:0,displayName:"Noise Strength",if:{NoiseFlag:true},info:"Controls the intensity of the noise.",name:"NoiseStrength",type:"Attribute"},{datatype:"Float",defaultValue:1,displayName:"Noise Frequency",if:{NoiseFlag:true},info:"Determines the smoothness of the noise: lower values produce smooth, slow variations; higher values produce rapid, detailed changes.",name:"NoiseFrequency",type:"Attribute"},{datatype:"Integer",defaultValue:1,displayName:"Noise Octaves",if:{NoiseFlag:true},info:"Number of noise layers combined to create complexity. Higher octaves add detail but reduce performance.",name:"NoiseOctaves",type:"Attribute"}],name:"Particles",updateRequiresThumbRefresh:false,creatableEmpty:true}];function F(e,t=false){let a=I$1.find((t=>t.name===e));if(!a)return null;if(a=structuredClone(a),a.fields=a.fields||[],a.fieldSets=a.fieldSets||[],t&&a.inherits){const e=F(a.inherits,true);e&&(a.fields=[...e.fields,...a.fields],a.fieldSets=[...e.fieldSets,...a.fieldSets]);}return a}function E$2(){return structuredClone(I$1)}var D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function L$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function R$a(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var P,O$1={exports:{}};var B$9,$=(P||(P=1,(B$9=O$1).exports=function(){var e,t;function a(){return e.apply(null,arguments)}function i(t){e=t;}function n(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function r(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function o(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return false;return true}function l(e){return void 0===e}function u(e){return "number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var a,i=[],n=e.length;for(a=0;a<n;++a)i.push(t(e[a],a));return i}function p(e,t){for(var a in t)s(t,a)&&(e[a]=t[a]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function h(e,t,a,i){return qa(e,t,a,i,true).utc()}function f(){return {empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidEra:null,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],era:null,meridiem:null,rfc2822:false,weekdayMismatch:false}}function m(e){return null==e._pf&&(e._pf=f()),e._pf}function y(e){var a=null,i=false,n=e._d&&!isNaN(e._d.getTime());return n&&(a=m(e),i=t.call(a.parsedDateParts,(function(e){return null!=e})),n=a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&i),e._strict&&(n=n&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour)),null!=Object.isFrozen&&Object.isFrozen(e)?n:(e._isValid=n,e._isValid)}function g(e){var t=h(NaN);return null!=e?p(m(t),e):m(t).userInvalidated=true,t}t=Array.prototype.some?Array.prototype.some:function(e){var t,a=Object(this),i=a.length>>>0;for(t=0;t<i;t++)if(t in a&&e.call(this,a[t],t,a))return true;return false};var b=a.momentProperties=[],v=false;function _(e,t){var a,i,n,r=b.length;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=m(t)),l(t._locale)||(e._locale=t._locale),r>0)for(a=0;a<r;a++)l(n=t[i=b[a]])||(e[i]=n);return e}function w(e){_(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),false===v&&(v=true,a.updateOffset(this),v=false);}function A(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}function k(e){ false===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e);}function S(e,t){var i=true;return p((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),i){var n,r,o,l=[],u=arguments.length;for(r=0;r<u;r++){if(n="","object"==typeof arguments[r]){for(o in n+="\n["+r+"] ",arguments[0])s(arguments[0],o)&&(n+=o+": "+arguments[0][o]+", ");n=n.slice(0,-2);}else n=arguments[r];l.push(n);}k(e+"\nArguments: "+Array.prototype.slice.call(l).join("")+"\n"+(new Error).stack),i=false;}return t.apply(this,arguments)}),t)}var N,T={};function M(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),T[e]||(k(t),T[e]=true);}function x(e){return "undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function V(e){var t,a;for(a in e)s(e,a)&&(x(t=e[a])?this[a]=t:this["_"+a]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source);}function C(e,t){var a,i=p({},e);for(a in t)s(t,a)&&(r(e[a])&&r(t[a])?(i[a]={},p(i[a],e[a]),p(i[a],t[a])):null!=t[a]?i[a]=t[a]:delete i[a]);for(a in e)s(e,a)&&!s(t,a)&&r(e[a])&&(i[a]=p({},i[a]));return i}function I(e){null!=e&&this.set(e);}a.suppressDeprecationWarnings=false,a.deprecationHandler=null,N=Object.keys?Object.keys:function(e){var t,a=[];for(t in e)s(e,t)&&a.push(t);return a};var F={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function E(e,t,a){var i=this._calendar[e]||this._calendar.sameElse;return x(i)?i.call(t,a):i}function D(e,t,a){var i=""+Math.abs(e),n=t-i.length;return (e>=0?a?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+i}var L=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,O={},$={};function j(e,t,a,i){var n=i;"string"==typeof i&&(n=function(){return this[i]()}),e&&($[e]=n),t&&($[t[0]]=function(){return D(n.apply(this,arguments),t[1],t[2])}),a&&($[a]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)});}function U(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function z(e){var t,a,i=e.match(L);for(t=0,a=i.length;t<a;t++)$[i[t]]?i[t]=$[i[t]]:i[t]=U(i[t]);return function(t){var n,r="";for(n=0;n<a;n++)r+=x(i[n])?i[n].call(t,e):i[n];return r}}function W(e,t){return e.isValid()?(t=H(t,e.localeData()),O[t]=O[t]||z(t),O[t](e)):e.localeData().invalidDate()}function H(e,t){var a=5;function i(e){return t.longDateFormat(e)||e}for(P.lastIndex=0;a>=0&&P.test(e);)e=e.replace(P,i),P.lastIndex=0,a-=1;return e}var Y={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function G(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.match(L).map((function(e){return "MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])}var q="Invalid date";function Z(){return this._invalidDate}var J="%d",K=/\d{1,2}/;function X(e){return this._ordinal.replace("%d",e)}var Q={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ee(e,t,a,i){var n=this._relativeTime[a];return x(n)?n(e,t,a,i):n.replace(/%d/i,e)}function te(e,t){var a=this._relativeTime[e>0?"future":"past"];return x(a)?a(t):a.replace(/%s/i,t)}var ae={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function ie(e){return "string"==typeof e?ae[e]||ae[e.toLowerCase()]:void 0}function ne(e){var t,a,i={};for(a in e)s(e,a)&&(t=ie(a))&&(i[t]=e[a]);return i}var re={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function se(e){var t,a=[];for(t in e)s(e,t)&&a.push({unit:t,priority:re[t]});return a.sort((function(e,t){return e.priority-t.priority})),a}var oe,le=/\d/,ue=/\d\d/,ce=/\d{3}/,de=/\d{4}/,pe=/[+-]?\d{6}/,he=/\d\d?/,fe=/\d\d\d\d?/,me=/\d\d\d\d\d\d?/,ye=/\d{1,3}/,ge=/\d{1,4}/,be=/[+-]?\d{1,6}/,ve=/\d+/,_e=/[+-]?\d+/,we=/Z|[+-]\d\d:?\d\d/gi,Ae=/Z|[+-]\d\d(?::?\d\d)?/gi,ke=/[+-]?\d+(\.\d{1,3})?/,Se=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Ne=/^[1-9]\d?/,Te=/^([1-9]\d|\d)/;function Me(e,t,a){oe[e]=x(t)?t:function(e,i){return e&&a?a:t};}function xe(e,t){return s(oe,e)?oe[e](t._strict,t._locale):new RegExp(Ve(e))}function Ve(e){return Ce(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,a,i,n){return t||a||i||n})))}function Ce(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Ie(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Fe(e){var t=+e,a=0;return 0!==t&&isFinite(t)&&(a=Ie(t)),a}oe={};var Ee={};function De(e,t){var a,i,n=t;for("string"==typeof e&&(e=[e]),u(t)&&(n=function(e,a){a[t]=Fe(e);}),i=e.length,a=0;a<i;a++)Ee[e[a]]=n;}function Le(e,t){De(e,(function(e,a,i,n){i._w=i._w||{},t(e,i._w,i,n);}));}function Re(e,t,a){null!=t&&s(Ee,e)&&Ee[e](t,a._a,a,e);}function Pe(e){return e%4==0&&e%100!=0||e%400==0}var Oe=0,Be=1,$e=2,je=3,Ue=4,ze=5,We=6,He=7,Ye=8;function Ge(e){return Pe(e)?366:365}j("Y",0,0,(function(){var e=this.year();return e<=9999?D(e,4):"+"+e})),j(0,["YY",2],0,(function(){return this.year()%100})),j(0,["YYYY",4],0,"year"),j(0,["YYYYY",5],0,"year"),j(0,["YYYYYY",6,true],0,"year"),Me("Y",_e),Me("YY",he,ue),Me("YYYY",ge,de),Me("YYYYY",be,pe),Me("YYYYYY",be,pe),De(["YYYYY","YYYYYY"],Oe),De("YYYY",(function(e,t){t[Oe]=2===e.length?a.parseTwoDigitYear(e):Fe(e);})),De("YY",(function(e,t){t[Oe]=a.parseTwoDigitYear(e);})),De("Y",(function(e,t){t[Oe]=parseInt(e,10);})),a.parseTwoDigitYear=function(e){return Fe(e)+(Fe(e)>68?1900:2e3)};var qe,Ze=Ke("FullYear",true);function Je(){return Pe(this.year())}function Ke(e,t){return function(i){return null!=i?(Qe(this,e,i),a.updateOffset(this,t),this):Xe(this,e)}}function Xe(e,t){if(!e.isValid())return NaN;var a=e._d,i=e._isUTC;switch(t){case "Milliseconds":return i?a.getUTCMilliseconds():a.getMilliseconds();case "Seconds":return i?a.getUTCSeconds():a.getSeconds();case "Minutes":return i?a.getUTCMinutes():a.getMinutes();case "Hours":return i?a.getUTCHours():a.getHours();case "Date":return i?a.getUTCDate():a.getDate();case "Day":return i?a.getUTCDay():a.getDay();case "Month":return i?a.getUTCMonth():a.getMonth();case "FullYear":return i?a.getUTCFullYear():a.getFullYear();default:return NaN}}function Qe(e,t,a){var i,n,r,s,o;if(e.isValid()&&!isNaN(a)){switch(i=e._d,n=e._isUTC,t){case "Milliseconds":return void(n?i.setUTCMilliseconds(a):i.setMilliseconds(a));case "Seconds":return void(n?i.setUTCSeconds(a):i.setSeconds(a));case "Minutes":return void(n?i.setUTCMinutes(a):i.setMinutes(a));case "Hours":return void(n?i.setUTCHours(a):i.setHours(a));case "Date":return void(n?i.setUTCDate(a):i.setDate(a));case "FullYear":break;default:return}r=a,s=e.month(),o=29!==(o=e.date())||1!==s||Pe(r)?o:28,n?i.setUTCFullYear(r,s,o):i.setFullYear(r,s,o);}}function et(e){return x(this[e=ie(e)])?this[e]():this}function tt(e,t){if("object"==typeof e){var a,i=se(e=ne(e)),n=i.length;for(a=0;a<n;a++)this[i[a].unit](e[i[a].unit]);}else if(x(this[e=ie(e)]))return this[e](t);return this}function at(e,t){return (e%t+t)%t}function it(e,t){if(isNaN(e)||isNaN(t))return NaN;var a=at(t,12);return e+=(t-a)/12,1===a?Pe(e)?29:28:31-a%7%2}qe=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return -1},j("M",["MM",2],"Mo",(function(){return this.month()+1})),j("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),j("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),Me("M",he,Ne),Me("MM",he,ue),Me("MMM",(function(e,t){return t.monthsShortRegex(e)})),Me("MMMM",(function(e,t){return t.monthsRegex(e)})),De(["M","MM"],(function(e,t){t[Be]=Fe(e)-1;})),De(["MMM","MMMM"],(function(e,t,a,i){var n=a._locale.monthsParse(e,i,a._strict);null!=n?t[Be]=n:m(a).invalidMonth=e;}));var nt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),rt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),st=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,ot=Se,lt=Se;function ut(e,t){return e?n(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||st).test(t)?"format":"standalone"][e.month()]:n(this._months)?this._months:this._months.standalone}function ct(e,t){return e?n(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[st.test(t)?"format":"standalone"][e.month()]:n(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function dt(e,t,a){var i,n,r,s=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=h([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return a?"MMM"===t?-1!==(n=qe.call(this._shortMonthsParse,s))?n:null:-1!==(n=qe.call(this._longMonthsParse,s))?n:null:"MMM"===t?-1!==(n=qe.call(this._shortMonthsParse,s))||-1!==(n=qe.call(this._longMonthsParse,s))?n:null:-1!==(n=qe.call(this._longMonthsParse,s))||-1!==(n=qe.call(this._shortMonthsParse,s))?n:null}function pt(e,t,a){var i,n,r;if(this._monthsParseExact)return dt.call(this,e,t,a);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(n=h([2e3,i]),a&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),a||this._monthsParse[i]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),a&&"MMMM"===t&&this._longMonthsParse[i].test(e))return i;if(a&&"MMM"===t&&this._shortMonthsParse[i].test(e))return i;if(!a&&this._monthsParse[i].test(e))return i}}function ht(e,t){if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=Fe(t);else if(!u(t=e.localeData().monthsParse(t)))return e;var a=t,i=e.date();return i=i<29?i:Math.min(i,it(e.year(),a)),e._isUTC?e._d.setUTCMonth(a,i):e._d.setMonth(a,i),e}function ft(e){return null!=e?(ht(this,e),a.updateOffset(this,true),this):Xe(this,"Month")}function mt(){return it(this.year(),this.month())}function yt(e){return this._monthsParseExact?(s(this,"_monthsRegex")||bt.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=ot),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)}function gt(e){return this._monthsParseExact?(s(this,"_monthsRegex")||bt.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=lt),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)}function bt(){function e(e,t){return t.length-e.length}var t,a,i,n,r=[],s=[],o=[];for(t=0;t<12;t++)a=h([2e3,t]),i=Ce(this.monthsShort(a,"")),n=Ce(this.months(a,"")),r.push(i),s.push(n),o.push(n),o.push(i);r.sort(e),s.sort(e),o.sort(e),this._monthsRegex=new RegExp("^("+o.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i");}function vt(e,t,a,i,n,r,s){var o;return e<100&&e>=0?(o=new Date(e+400,t,a,i,n,r,s),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,a,i,n,r,s),o}function _t(e){var t,a;return e<100&&e>=0?((a=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function wt(e,t,a){var i=7+t-a;return -(7+_t(e,0,i).getUTCDay()-t)%7+i-1}function At(e,t,a,i,n){var r,s,o=1+7*(t-1)+(7+a-i)%7+wt(e,i,n);return o<=0?s=Ge(r=e-1)+o:o>Ge(e)?(r=e+1,s=o-Ge(e)):(r=e,s=o),{year:r,dayOfYear:s}}function kt(e,t,a){var i,n,r=wt(e.year(),t,a),s=Math.floor((e.dayOfYear()-r-1)/7)+1;return s<1?i=s+St(n=e.year()-1,t,a):s>St(e.year(),t,a)?(i=s-St(e.year(),t,a),n=e.year()+1):(n=e.year(),i=s),{week:i,year:n}}function St(e,t,a){var i=wt(e,t,a),n=wt(e+1,t,a);return (Ge(e)-i+n)/7}function Nt(e){return kt(e,this._week.dow,this._week.doy).week}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),Me("w",he,Ne),Me("ww",he,ue),Me("W",he,Ne),Me("WW",he,ue),Le(["w","ww","W","WW"],(function(e,t,a,i){t[i.substr(0,1)]=Fe(e);}));var Tt={dow:0,doy:6};function Mt(){return this._week.dow}function xt(){return this._week.doy}function Vt(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Ct(e){var t=kt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function It(e,t){return "string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function Ft(e,t){return "string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Et(e,t){return e.slice(t,7).concat(e.slice(0,t))}j("d",0,"do","day"),j("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),j("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),j("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),Me("d",he),Me("e",he),Me("E",he),Me("dd",(function(e,t){return t.weekdaysMinRegex(e)})),Me("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),Me("dddd",(function(e,t){return t.weekdaysRegex(e)})),Le(["dd","ddd","dddd"],(function(e,t,a,i){var n=a._locale.weekdaysParse(e,i,a._strict);null!=n?t.d=n:m(a).invalidWeekday=e;})),Le(["d","e","E"],(function(e,t,a,i){t[i]=Fe(e);}));var Dt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Lt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Rt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Pt=Se,Ot=Se,Bt=Se;function $t(e,t){var a=n(this._weekdays)?this._weekdays:this._weekdays[e&&true!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return true===e?Et(a,this._week.dow):e?a[e.day()]:a}function jt(e){return true===e?Et(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ut(e){return true===e?Et(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function zt(e,t,a){var i,n,r,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=h([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?-1!==(n=qe.call(this._weekdaysParse,s))?n:null:"ddd"===t?-1!==(n=qe.call(this._shortWeekdaysParse,s))?n:null:-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:"dddd"===t?-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._shortWeekdaysParse,s))||-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:"ddd"===t?-1!==(n=qe.call(this._shortWeekdaysParse,s))||-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._minWeekdaysParse,s))?n:null:-1!==(n=qe.call(this._minWeekdaysParse,s))||-1!==(n=qe.call(this._weekdaysParse,s))||-1!==(n=qe.call(this._shortWeekdaysParse,s))?n:null}function Wt(e,t,a){var i,n,r;if(this._weekdaysParseExact)return zt.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(n=h([2e3,1]).day(i),a&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[i].test(e))return i;if(a&&"ddd"===t&&this._shortWeekdaysParse[i].test(e))return i;if(a&&"dd"===t&&this._minWeekdaysParse[i].test(e))return i;if(!a&&this._weekdaysParse[i].test(e))return i}}function Ht(e){if(!this.isValid())return null!=e?this:NaN;var t=Xe(this,"Day");return null!=e?(e=It(e,this.localeData()),this.add(e-t,"d")):t}function Yt(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Gt(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Ft(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function qt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=Pt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Zt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ot),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Jt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Kt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Bt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Kt(){function e(e,t){return t.length-e.length}var t,a,i,n,r,s=[],o=[],l=[],u=[];for(t=0;t<7;t++)a=h([2e3,1]).day(t),i=Ce(this.weekdaysMin(a,"")),n=Ce(this.weekdaysShort(a,"")),r=Ce(this.weekdays(a,"")),s.push(i),o.push(n),l.push(r),u.push(i),u.push(n),u.push(r);s.sort(e),o.sort(e),l.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i");}function Xt(){return this.hours()%12||12}function Qt(){return this.hours()||24}function ea(e,t){j(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}));}function ta(e,t){return t._meridiemParse}function aa(e){return "p"===(e+"").toLowerCase().charAt(0)}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,Xt),j("k",["kk",2],0,Qt),j("hmm",0,0,(function(){return ""+Xt.apply(this)+D(this.minutes(),2)})),j("hmmss",0,0,(function(){return ""+Xt.apply(this)+D(this.minutes(),2)+D(this.seconds(),2)})),j("Hmm",0,0,(function(){return ""+this.hours()+D(this.minutes(),2)})),j("Hmmss",0,0,(function(){return ""+this.hours()+D(this.minutes(),2)+D(this.seconds(),2)})),ea("a",true),ea("A",false),Me("a",ta),Me("A",ta),Me("H",he,Te),Me("h",he,Ne),Me("k",he,Ne),Me("HH",he,ue),Me("hh",he,ue),Me("kk",he,ue),Me("hmm",fe),Me("hmmss",me),Me("Hmm",fe),Me("Hmmss",me),De(["H","HH"],je),De(["k","kk"],(function(e,t,a){var i=Fe(e);t[je]=24===i?0:i;})),De(["a","A"],(function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e;})),De(["h","hh"],(function(e,t,a){t[je]=Fe(e),m(a).bigHour=true;})),De("hmm",(function(e,t,a){var i=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i)),m(a).bigHour=true;})),De("hmmss",(function(e,t,a){var i=e.length-4,n=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i,2)),t[ze]=Fe(e.substr(n)),m(a).bigHour=true;})),De("Hmm",(function(e,t,a){var i=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i));})),De("Hmmss",(function(e,t,a){var i=e.length-4,n=e.length-2;t[je]=Fe(e.substr(0,i)),t[Ue]=Fe(e.substr(i,2)),t[ze]=Fe(e.substr(n));}));var ia=/[ap]\.?m?\.?/i,na=Ke("Hours",true);function ra(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"}var sa,oa={calendar:F,longDateFormat:Y,invalidDate:q,ordinal:J,dayOfMonthOrdinalParse:K,relativeTime:Q,months:nt,monthsShort:rt,week:Tt,weekdays:Dt,weekdaysMin:Rt,weekdaysShort:Lt,meridiemParse:ia},la={},ua={};function ca(e,t){var a,i=Math.min(e.length,t.length);for(a=0;a<i;a+=1)if(e[a]!==t[a])return a;return i}function da(e){return e?e.toLowerCase().replace("_","-"):e}function pa(e){for(var t,a,i,n,r=0;r<e.length;){for(t=(n=da(e[r]).split("-")).length,a=(a=da(e[r+1]))?a.split("-"):null;t>0;){if(i=fa(n.slice(0,t).join("-")))return i;if(a&&a.length>=t&&ca(n,a)>=t-1)break;t--;}r++;}return sa}function ha(e){return !(!e||!e.match("^[^/\\\\]*$"))}function fa(e){var t=null;if(void 0===la[e]&&B$9&&B$9.exports&&ha(e))try{t=sa._abbr,R$a("./locale/"+e),ma(t);}catch(t){la[e]=null;}return la[e]}function ma(e,t){var a;return e&&((a=l(t)?ba(e):ya(e,t))?sa=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),sa._abbr}function ya(e,t){if(null!==t){var a,i=oa;if(t.abbr=e,null!=la[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=la[e]._config;else if(null!=t.parentLocale)if(null!=la[t.parentLocale])i=la[t.parentLocale]._config;else {if(null==(a=fa(t.parentLocale)))return ua[t.parentLocale]||(ua[t.parentLocale]=[]),ua[t.parentLocale].push({name:e,config:t}),null;i=a._config;}return la[e]=new I(C(i,t)),ua[e]&&ua[e].forEach((function(e){ya(e.name,e.config);})),ma(e),la[e]}return delete la[e],null}function ga(e,t){if(null!=t){var a,i,n=oa;null!=la[e]&&null!=la[e].parentLocale?la[e].set(C(la[e]._config,t)):(null!=(i=fa(e))&&(n=i._config),t=C(n,t),null==i&&(t.abbr=e),(a=new I(t)).parentLocale=la[e],la[e]=a),ma(e);}else null!=la[e]&&(null!=la[e].parentLocale?(la[e]=la[e].parentLocale,e===ma()&&ma(e)):null!=la[e]&&delete la[e]);return la[e]}function ba(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return sa;if(!n(e)){if(t=fa(e))return t;e=[e];}return pa(e)}function va(){return N(la)}function _a(e){var t,a=e._a;return a&&-2===m(e).overflow&&(t=a[Be]<0||a[Be]>11?Be:a[$e]<1||a[$e]>it(a[Oe],a[Be])?$e:a[je]<0||a[je]>24||24===a[je]&&(0!==a[Ue]||0!==a[ze]||0!==a[We])?je:a[Ue]<0||a[Ue]>59?Ue:a[ze]<0||a[ze]>59?ze:a[We]<0||a[We]>999?We:-1,m(e)._overflowDayOfYear&&(t<Oe||t>$e)&&(t=$e),m(e)._overflowWeeks&&-1===t&&(t=He),m(e)._overflowWeekday&&-1===t&&(t=Ye),m(e).overflow=t),e}var wa=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Aa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ka=/Z|[+-]\d\d(?::?\d\d)?/,Sa=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],Na=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ta=/^\/?Date\((-?\d+)/i,Ma=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Va(e){var t,a,i,n,r,s,o=e._i,l=wa.exec(o)||Aa.exec(o),u=Sa.length,c=Na.length;if(l){for(m(e).iso=true,t=0,a=u;t<a;t++)if(Sa[t][1].exec(l[1])){n=Sa[t][0],i=false!==Sa[t][2];break}if(null==n)return void(e._isValid=false);if(l[3]){for(t=0,a=c;t<a;t++)if(Na[t][1].exec(l[3])){r=(l[2]||" ")+Na[t][0];break}if(null==r)return void(e._isValid=false)}if(!i&&null!=r)return void(e._isValid=false);if(l[4]){if(!ka.exec(l[4]))return void(e._isValid=false);s="Z";}e._f=n+(r||"")+(s||""),ja(e);}else e._isValid=false;}function Ca(e,t,a,i,n,r){var s=[Ia(e),rt.indexOf(t),parseInt(a,10),parseInt(i,10),parseInt(n,10)];return r&&s.push(parseInt(r,10)),s}function Ia(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Fa(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function Ea(e,t,a){return !e||Lt.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(m(a).weekdayMismatch=true,a._isValid=false,false)}function Da(e,t,a){if(e)return xa[e];if(t)return 0;var i=parseInt(a,10),n=i%100;return (i-n)/100*60+n}function La(e){var t,a=Ma.exec(Fa(e._i));if(a){if(t=Ca(a[4],a[3],a[2],a[5],a[6],a[7]),!Ea(a[1],t,e))return;e._a=t,e._tzm=Da(a[8],a[9],a[10]),e._d=_t.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),m(e).rfc2822=true;}else e._isValid=false;}function Ra(e){var t=Ta.exec(e._i);null===t?(Va(e),false===e._isValid&&(delete e._isValid,La(e),false===e._isValid&&(delete e._isValid,e._strict?e._isValid=false:a.createFromInputFallback(e)))):e._d=new Date(+t[1]);}function Pa(e,t,a){return null!=e?e:null!=t?t:a}function Oa(e){var t=new Date(a.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function Ba(e){var t,a,i,n,r,s=[];if(!e._d){for(i=Oa(e),e._w&&null==e._a[$e]&&null==e._a[Be]&&$a(e),null!=e._dayOfYear&&(r=Pa(e._a[Oe],i[Oe]),(e._dayOfYear>Ge(r)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=true),a=_t(r,0,e._dayOfYear),e._a[Be]=a.getUTCMonth(),e._a[$e]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=i[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[je]&&0===e._a[Ue]&&0===e._a[ze]&&0===e._a[We]&&(e._nextDay=true,e._a[je]=0),e._d=(e._useUTC?_t:vt).apply(null,s),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[je]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(m(e).weekdayMismatch=true);}}function $a(e){var t,a,i,n,r,s,o,l,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,s=4,a=Pa(t.GG,e._a[Oe],kt(Za(),1,4).year),i=Pa(t.W,1),((n=Pa(t.E,1))<1||n>7)&&(l=true)):(r=e._locale._week.dow,s=e._locale._week.doy,u=kt(Za(),r,s),a=Pa(t.gg,e._a[Oe],u.year),i=Pa(t.w,u.week),null!=t.d?((n=t.d)<0||n>6)&&(l=true):null!=t.e?(n=t.e+r,(t.e<0||t.e>6)&&(l=true)):n=r),i<1||i>St(a,r,s)?m(e)._overflowWeeks=true:null!=l?m(e)._overflowWeekday=true:(o=At(a,i,n,r,s),e._a[Oe]=o.year,e._dayOfYear=o.dayOfYear);}function ja(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],m(e).empty=true;var t,i,n,r,s,o,l,u=""+e._i,c=u.length,d=0;for(l=(n=H(e._f,e._locale).match(L)||[]).length,t=0;t<l;t++)r=n[t],(i=(u.match(xe(r,e))||[])[0])&&((s=u.substr(0,u.indexOf(i))).length>0&&m(e).unusedInput.push(s),u=u.slice(u.indexOf(i)+i.length),d+=i.length),$[r]?(i?m(e).empty=false:m(e).unusedTokens.push(r),Re(r,i,e)):e._strict&&!i&&m(e).unusedTokens.push(r);m(e).charsLeftOver=c-d,u.length>0&&m(e).unusedInput.push(u),e._a[je]<=12&&true===m(e).bigHour&&e._a[je]>0&&(m(e).bigHour=void 0),m(e).parsedDateParts=e._a.slice(0),m(e).meridiem=e._meridiem,e._a[je]=Ua(e._locale,e._a[je],e._meridiem),null!==(o=m(e).era)&&(e._a[Oe]=e._locale.erasConvertYear(o,e._a[Oe])),Ba(e),_a(e);}else La(e);else Va(e);}function Ua(e,t,a){var i;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?((i=e.isPM(a))&&t<12&&(t+=12),i||12!==t||(t=0),t):t}function za(e){var t,a,i,n,r,s,o=false,l=e._f.length;if(0===l)return m(e).invalidFormat=true,void(e._d=new Date(NaN));for(n=0;n<l;n++)r=0,s=false,t=_({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[n],ja(t),y(t)&&(s=true),r+=m(t).charsLeftOver,r+=10*m(t).unusedTokens.length,m(t).score=r,o?r<i&&(i=r,a=t):(null==i||r<i||s)&&(i=r,a=t,s&&(o=true));p(e,a||t);}function Wa(e){if(!e._d){var t=ne(e._i),a=void 0===t.day?t.date:t.day;e._a=d([t.year,t.month,a,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),Ba(e);}}function Ha(e){var t=new w(_a(Ya(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function Ya(e){var t=e._i,a=e._f;return e._locale=e._locale||ba(e._l),null===t||void 0===a&&""===t?g({nullInput:true}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),A(t)?new w(_a(t)):(c(t)?e._d=t:n(a)?za(e):a?ja(e):Ga(e),y(e)||(e._d=null),e))}function Ga(e){var t=e._i;l(t)?e._d=new Date(a.now()):c(t)?e._d=new Date(t.valueOf()):"string"==typeof t?Ra(e):n(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),Ba(e)):r(t)?Wa(e):u(t)?e._d=new Date(t):a.createFromInputFallback(e);}function qa(e,t,a,i,s){var l={};return true!==t&&false!==t||(i=t,t=void 0),true!==a&&false!==a||(i=a,a=void 0),(r(e)&&o(e)||n(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=true,l._useUTC=l._isUTC=s,l._l=a,l._i=e,l._f=t,l._strict=i,Ha(l)}function Za(e,t,a,i){return qa(e,t,a,i,false)}a.createFromInputFallback=S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""));})),a.ISO_8601=function(){},a.RFC_2822=function(){};var Ja=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Za.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:g()})),Ka=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Za.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:g()}));function Xa(e,t){var a,i;if(1===t.length&&n(t[0])&&(t=t[0]),!t.length)return Za();for(a=t[0],i=1;i<t.length;++i)t[i].isValid()&&!t[i][e](a)||(a=t[i]);return a}function Qa(){return Xa("isBefore",[].slice.call(arguments,0))}function ei(){return Xa("isAfter",[].slice.call(arguments,0))}var ti=function(){return Date.now?Date.now():+new Date},ai=["year","quarter","month","week","day","hour","minute","second","millisecond"];function ii(e){var t,a,i=false,n=ai.length;for(t in e)if(s(e,t)&&(-1===qe.call(ai,t)||null!=e[t]&&isNaN(e[t])))return false;for(a=0;a<n;++a)if(e[ai[a]]){if(i)return false;parseFloat(e[ai[a]])!==Fe(e[ai[a]])&&(i=true);}return true}function ni(){return this._isValid}function ri(){return xi(NaN)}function si(e){var t=ne(e),a=t.year||0,i=t.quarter||0,n=t.month||0,r=t.week||t.isoWeek||0,s=t.day||0,o=t.hour||0,l=t.minute||0,u=t.second||0,c=t.millisecond||0;this._isValid=ii(t),this._milliseconds=+c+1e3*u+6e4*l+1e3*o*60*60,this._days=+s+7*r,this._months=+n+3*i+12*a,this._data={},this._locale=ba(),this._bubble();}function oi(e){return e instanceof si}function li(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function ui(e,t,a){var i,n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),s=0;for(i=0;i<n;i++)Fe(e[i])!==Fe(t[i])&&s++;return s+r}function ci(e,t){j(e,0,0,(function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+D(~~(e/60),2)+t+D(~~e%60,2)}));}ci("Z",":"),ci("ZZ",""),Me("Z",Ae),Me("ZZ",Ae),De(["Z","ZZ"],(function(e,t,a){a._useUTC=true,a._tzm=pi(Ae,e);}));var di=/([\+\-]|\d\d)/gi;function pi(e,t){var a,i,n=(t||"").match(e);return null===n?null:0===(i=60*(a=((n[n.length-1]||[])+"").match(di)||["-",0,0])[1]+Fe(a[2]))?0:"+"===a[0]?i:-i}function hi(e,t){var i,n;return t._isUTC?(i=t.clone(),n=(A(e)||c(e)?e.valueOf():Za(e).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),a.updateOffset(i,false),i):Za(e).local()}function fi(e){return -Math.round(e._d.getTimezoneOffset())}function mi(e,t,i){var n,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=pi(Ae,e)))return this}else Math.abs(e)<16&&!i&&(e*=60);return !this._isUTC&&t&&(n=fi(this)),this._offset=e,this._isUTC=true,null!=n&&this.add(n,"m"),r!==e&&(!t||this._changeInProgress?Ei(this,xi(e-r,"m"),1,false):this._changeInProgress||(this._changeInProgress=true,a.updateOffset(this,true),this._changeInProgress=null)),this}return this._isUTC?r:fi(this)}function yi(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function gi(e){return this.utcOffset(0,e)}function bi(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=false,e&&this.subtract(fi(this),"m")),this}function vi(){if(null!=this._tzm)this.utcOffset(this._tzm,false,true);else if("string"==typeof this._i){var e=pi(we,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,true);}return this}function _i(e){return !!this.isValid()&&(e=e?Za(e).utcOffset():0,(this.utcOffset()-e)%60==0)}function wi(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ai(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e,t={};return _(t,this),(t=Ya(t))._a?(e=t._isUTC?h(t._a):Za(t._a),this._isDSTShifted=this.isValid()&&ui(t._a,e.toArray())>0):this._isDSTShifted=false,this._isDSTShifted}function ki(){return !!this.isValid()&&!this._isUTC}function Si(){return !!this.isValid()&&this._isUTC}function Ni(){return !!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var Ti=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Mi=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function xi(e,t){var a,i,n,r=e,o=null;return oi(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:u(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(o=Ti.exec(e))?(a="-"===o[1]?-1:1,r={y:0,d:Fe(o[$e])*a,h:Fe(o[je])*a,m:Fe(o[Ue])*a,s:Fe(o[ze])*a,ms:Fe(li(1e3*o[We]))*a}):(o=Mi.exec(e))?(a="-"===o[1]?-1:1,r={y:Vi(o[2],a),M:Vi(o[3],a),w:Vi(o[4],a),d:Vi(o[5],a),h:Vi(o[6],a),m:Vi(o[7],a),s:Vi(o[8],a)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=Ii(Za(r.from),Za(r.to)),(r={}).ms=n.milliseconds,r.M=n.months),i=new si(r),oi(e)&&s(e,"_locale")&&(i._locale=e._locale),oi(e)&&s(e,"_isValid")&&(i._isValid=e._isValid),i}function Vi(e,t){var a=e&&parseFloat(e.replace(",","."));return (isNaN(a)?0:a)*t}function Ci(e,t){var a={};return a.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(a.months,"M").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,"M"),a}function Ii(e,t){var a;return e.isValid()&&t.isValid()?(t=hi(t,e),e.isBefore(t)?a=Ci(e,t):((a=Ci(t,e)).milliseconds=-a.milliseconds,a.months=-a.months),a):{milliseconds:0,months:0}}function Fi(e,t){return function(a,i){var n;return null===i||isNaN(+i)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=a,a=i,i=n),Ei(this,xi(a,i),e),this}}function Ei(e,t,i,n){var r=t._milliseconds,s=li(t._days),o=li(t._months);e.isValid()&&(n=null==n||n,o&&ht(e,Xe(e,"Month")+o*i),s&&Qe(e,"Date",Xe(e,"Date")+s*i),r&&e._d.setTime(e._d.valueOf()+r*i),n&&a.updateOffset(e,s||o));}xi.fn=si.prototype,xi.invalid=ri;var Di=Fi(1,"add"),Li=Fi(-1,"subtract");function Ri(e){return "string"==typeof e||e instanceof String}function Pi(e){return A(e)||c(e)||Ri(e)||u(e)||Bi(e)||Oi(e)||null==e}function Oi(e){var t,a,i=r(e)&&!o(e),n=false,l=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],u=l.length;for(t=0;t<u;t+=1)a=l[t],n=n||s(e,a);return i&&n}function Bi(e){var t=n(e),a=false;return t&&(a=0===e.filter((function(t){return !u(t)&&Ri(e)})).length),t&&a}function $i(e){var t,a,i=r(e)&&!o(e),n=false,l=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<l.length;t+=1)a=l[t],n=n||s(e,a);return i&&n}function ji(e,t){var a=e.diff(t,"days",true);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"}function Ui(e,t){1===arguments.length&&(arguments[0]?Pi(arguments[0])?(e=arguments[0],t=void 0):$i(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var i=e||Za(),n=hi(i,this).startOf("day"),r=a.calendarFormat(this,n)||"sameElse",s=t&&(x(t[r])?t[r].call(this,i):t[r]);return this.format(s||this.localeData().calendar(r,this,Za(i)))}function zi(){return new w(this)}function Wi(e,t){var a=A(e)?e:Za(e);return !(!this.isValid()||!a.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()>a.valueOf():a.valueOf()<this.clone().startOf(t).valueOf())}function Hi(e,t){var a=A(e)?e:Za(e);return !(!this.isValid()||!a.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()<a.valueOf():this.clone().endOf(t).valueOf()<a.valueOf())}function Yi(e,t,a,i){var n=A(e)?e:Za(e),r=A(t)?t:Za(t);return !!(this.isValid()&&n.isValid()&&r.isValid())&&("("===(i=i||"()")[0]?this.isAfter(n,a):!this.isBefore(n,a))&&(")"===i[1]?this.isBefore(r,a):!this.isAfter(r,a))}function Gi(e,t){var a,i=A(e)?e:Za(e);return !(!this.isValid()||!i.isValid())&&("millisecond"===(t=ie(t)||"millisecond")?this.valueOf()===i.valueOf():(a=i.valueOf(),this.clone().startOf(t).valueOf()<=a&&a<=this.clone().endOf(t).valueOf()))}function qi(e,t){return this.isSame(e,t)||this.isAfter(e,t)}function Zi(e,t){return this.isSame(e,t)||this.isBefore(e,t)}function Ji(e,t,a){var i,n,r;if(!this.isValid())return NaN;if(!(i=hi(e,this)).isValid())return NaN;switch(n=6e4*(i.utcOffset()-this.utcOffset()),t=ie(t)){case "year":r=Ki(this,i)/12;break;case "month":r=Ki(this,i);break;case "quarter":r=Ki(this,i)/3;break;case "second":r=(this-i)/1e3;break;case "minute":r=(this-i)/6e4;break;case "hour":r=(this-i)/36e5;break;case "day":r=(this-i-n)/864e5;break;case "week":r=(this-i-n)/6048e5;break;default:r=this-i;}return a?r:Ie(r)}function Ki(e,t){if(e.date()<t.date())return -Ki(t,e);var a=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(a,"months");return -(a+(t-i<0?(t-i)/(i-e.clone().add(a-1,"months")):(t-i)/(e.clone().add(a+1,"months")-i)))||0}function Xi(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function Qi(e){if(!this.isValid())return null;var t=true!==e,a=t?this.clone().utc():this;return a.year()<0||a.year()>9999?W(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",W(a,"Z")):W(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function en(){if(!this.isValid())return "moment.invalid(/* "+this._i+" */)";var e,t,a,i,n="moment",r="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+n+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",i=r+'[")]',this.format(e+t+a+i)}function tn(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=W(this,e);return this.localeData().postformat(t)}function an(e,t){return this.isValid()&&(A(e)&&e.isValid()||Za(e).isValid())?xi({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function nn(e){return this.from(Za(),e)}function rn(e,t){return this.isValid()&&(A(e)&&e.isValid()||Za(e).isValid())?xi({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function sn(e){return this.to(Za(),e)}function on(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ba(e))&&(this._locale=t),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ln=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function un(){return this._locale}var cn=1e3,dn=60*cn,pn=60*dn,hn=3506328*pn;function fn(e,t){return (e%t+t)%t}function mn(e,t,a){return e<100&&e>=0?new Date(e+400,t,a)-hn:new Date(e,t,a).valueOf()}function yn(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-hn:Date.UTC(e,t,a)}function gn(e){var t,i;if(void 0===(e=ie(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?yn:mn,e){case "year":t=i(this.year(),0,1);break;case "quarter":t=i(this.year(),this.month()-this.month()%3,1);break;case "month":t=i(this.year(),this.month(),1);break;case "week":t=i(this.year(),this.month(),this.date()-this.weekday());break;case "isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case "day":case "date":t=i(this.year(),this.month(),this.date());break;case "hour":t=this._d.valueOf(),t-=fn(t+(this._isUTC?0:this.utcOffset()*dn),pn);break;case "minute":t=this._d.valueOf(),t-=fn(t,dn);break;case "second":t=this._d.valueOf(),t-=fn(t,cn);}return this._d.setTime(t),a.updateOffset(this,true),this}function bn(e){var t,i;if(void 0===(e=ie(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?yn:mn,e){case "year":t=i(this.year()+1,0,1)-1;break;case "quarter":t=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case "month":t=i(this.year(),this.month()+1,1)-1;break;case "week":t=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case "isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case "day":case "date":t=i(this.year(),this.month(),this.date()+1)-1;break;case "hour":t=this._d.valueOf(),t+=pn-fn(t+(this._isUTC?0:this.utcOffset()*dn),pn)-1;break;case "minute":t=this._d.valueOf(),t+=dn-fn(t,dn)-1;break;case "second":t=this._d.valueOf(),t+=cn-fn(t,cn)-1;}return this._d.setTime(t),a.updateOffset(this,true),this}function vn(){return this._d.valueOf()-6e4*(this._offset||0)}function _n(){return Math.floor(this.valueOf()/1e3)}function wn(){return new Date(this.valueOf())}function An(){var e=this;return [e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function kn(){var e=this;return {years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Sn(){return this.isValid()?this.toISOString():null}function Nn(){return y(this)}function Tn(){return p({},m(this))}function Mn(){return m(this).overflow}function xn(){return {input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Vn(e,t){var i,n,r,s=this._eras||ba("en")._eras;for(i=0,n=s.length;i<n;++i)switch("string"==typeof s[i].since&&(r=a(s[i].since).startOf("day"),s[i].since=r.valueOf()),typeof s[i].until){case "undefined":s[i].until=1/0;break;case "string":r=a(s[i].until).startOf("day").valueOf(),s[i].until=r.valueOf();}return s}function Cn(e,t,a){var i,n,r,s,o,l=this.eras();for(e=e.toUpperCase(),i=0,n=l.length;i<n;++i)if(r=l[i].name.toUpperCase(),s=l[i].abbr.toUpperCase(),o=l[i].narrow.toUpperCase(),a)switch(t){case "N":case "NN":case "NNN":if(s===e)return l[i];break;case "NNNN":if(r===e)return l[i];break;case "NNNNN":if(o===e)return l[i]}else if([r,s,o].indexOf(e)>=0)return l[i]}function In(e,t){var i=e.since<=e.until?1:-1;return void 0===t?a(e.since).year():a(e.since).year()+(t-e.offset)*i}function Fn(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].name;if(i[e].until<=a&&a<=i[e].since)return i[e].name}return ""}function En(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].narrow;if(i[e].until<=a&&a<=i[e].since)return i[e].narrow}return ""}function Dn(){var e,t,a,i=this.localeData().eras();for(e=0,t=i.length;e<t;++e){if(a=this.clone().startOf("day").valueOf(),i[e].since<=a&&a<=i[e].until)return i[e].abbr;if(i[e].until<=a&&a<=i[e].since)return i[e].abbr}return ""}function Ln(){var e,t,i,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e)if(i=r[e].since<=r[e].until?1:-1,n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until||r[e].until<=n&&n<=r[e].since)return (this.year()-a(r[e].since).year())*i+r[e].offset;return this.year()}function Rn(e){return s(this,"_erasNameRegex")||zn.call(this),e?this._erasNameRegex:this._erasRegex}function Pn(e){return s(this,"_erasAbbrRegex")||zn.call(this),e?this._erasAbbrRegex:this._erasRegex}function On(e){return s(this,"_erasNarrowRegex")||zn.call(this),e?this._erasNarrowRegex:this._erasRegex}function Bn(e,t){return t.erasAbbrRegex(e)}function $n(e,t){return t.erasNameRegex(e)}function jn(e,t){return t.erasNarrowRegex(e)}function Un(e,t){return t._eraYearOrdinalRegex||ve}function zn(){var e,t,a,i,n,r=[],s=[],o=[],l=[],u=this.eras();for(e=0,t=u.length;e<t;++e)a=Ce(u[e].name),i=Ce(u[e].abbr),n=Ce(u[e].narrow),s.push(a),r.push(i),o.push(n),l.push(a),l.push(i),l.push(n);this._erasRegex=new RegExp("^("+l.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+r.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+o.join("|")+")","i");}function Wn(e,t){j(0,[e,e.length],0,t);}function Hn(e){return Kn.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function Yn(e){return Kn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function Gn(){return St(this.year(),1,4)}function qn(){return St(this.isoWeekYear(),1,4)}function Zn(){var e=this.localeData()._week;return St(this.year(),e.dow,e.doy)}function Jn(){var e=this.localeData()._week;return St(this.weekYear(),e.dow,e.doy)}function Kn(e,t,a,i,n){var r;return null==e?kt(this,i,n).year:(t>(r=St(e,i,n))&&(t=r),Xn.call(this,e,t,a,i,n))}function Xn(e,t,a,i,n){var r=At(e,t,a,i,n),s=_t(r.year,0,r.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}function Qn(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),Me("N",Bn),Me("NN",Bn),Me("NNN",Bn),Me("NNNN",$n),Me("NNNNN",jn),De(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,a,i){var n=a._locale.erasParse(e,i,a._strict);n?m(a).era=n:m(a).invalidEra=e;})),Me("y",ve),Me("yy",ve),Me("yyy",ve),Me("yyyy",ve),Me("yo",Un),De(["y","yy","yyy","yyyy"],Oe),De(["yo"],(function(e,t,a,i){var n;a._locale._eraYearOrdinalRegex&&(n=e.match(a._locale._eraYearOrdinalRegex)),a._locale.eraYearOrdinalParse?t[Oe]=a._locale.eraYearOrdinalParse(e,n):t[Oe]=parseInt(e,10);})),j(0,["gg",2],0,(function(){return this.weekYear()%100})),j(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Wn("gggg","weekYear"),Wn("ggggg","weekYear"),Wn("GGGG","isoWeekYear"),Wn("GGGGG","isoWeekYear"),Me("G",_e),Me("g",_e),Me("GG",he,ue),Me("gg",he,ue),Me("GGGG",ge,de),Me("gggg",ge,de),Me("GGGGG",be,pe),Me("ggggg",be,pe),Le(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,a,i){t[i.substr(0,2)]=Fe(e);})),Le(["gg","GG"],(function(e,t,i,n){t[n]=a.parseTwoDigitYear(e);})),j("Q",0,"Qo","quarter"),Me("Q",le),De("Q",(function(e,t){t[Be]=3*(Fe(e)-1);})),j("D",["DD",2],"Do","date"),Me("D",he,Ne),Me("DD",he,ue),Me("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),De(["D","DD"],$e),De("Do",(function(e,t){t[$e]=Fe(e.match(he)[0]);}));var er=Ke("Date",true);function tr(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}j("DDD",["DDDD",3],"DDDo","dayOfYear"),Me("DDD",ye),Me("DDDD",ce),De(["DDD","DDDD"],(function(e,t,a){a._dayOfYear=Fe(e);})),j("m",["mm",2],0,"minute"),Me("m",he,Te),Me("mm",he,ue),De(["m","mm"],Ue);var ar=Ke("Minutes",false);j("s",["ss",2],0,"second"),Me("s",he,Te),Me("ss",he,ue),De(["s","ss"],ze);var ir,nr,rr=Ke("Seconds",false);for(j("S",0,0,(function(){return ~~(this.millisecond()/100)})),j(0,["SS",2],0,(function(){return ~~(this.millisecond()/10)})),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),j(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),j(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),j(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),j(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),j(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),Me("S",ye,le),Me("SS",ye,ue),Me("SSS",ye,ce),ir="SSSS";ir.length<=9;ir+="S")Me(ir,ve);function sr(e,t){t[We]=Fe(1e3*("0."+e));}for(ir="S";ir.length<=9;ir+="S")De(ir,sr);function or(){return this._isUTC?"UTC":""}function lr(){return this._isUTC?"Coordinated Universal Time":""}nr=Ke("Milliseconds",false),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var ur=w.prototype;function cr(e){return Za(1e3*e)}function dr(){return Za.apply(null,arguments).parseZone()}function pr(e){return e}ur.add=Di,ur.calendar=Ui,ur.clone=zi,ur.diff=Ji,ur.endOf=bn,ur.format=tn,ur.from=an,ur.fromNow=nn,ur.to=rn,ur.toNow=sn,ur.get=et,ur.invalidAt=Mn,ur.isAfter=Wi,ur.isBefore=Hi,ur.isBetween=Yi,ur.isSame=Gi,ur.isSameOrAfter=qi,ur.isSameOrBefore=Zi,ur.isValid=Nn,ur.lang=ln,ur.locale=on,ur.localeData=un,ur.max=Ka,ur.min=Ja,ur.parsingFlags=Tn,ur.set=tt,ur.startOf=gn,ur.subtract=Li,ur.toArray=An,ur.toObject=kn,ur.toDate=wn,ur.toISOString=Qi,ur.inspect=en,"undefined"!=typeof Symbol&&null!=Symbol.for&&(ur[Symbol.for("nodejs.util.inspect.custom")]=function(){return "Moment<"+this.format()+">"}),ur.toJSON=Sn,ur.toString=Xi,ur.unix=_n,ur.valueOf=vn,ur.creationData=xn,ur.eraName=Fn,ur.eraNarrow=En,ur.eraAbbr=Dn,ur.eraYear=Ln,ur.year=Ze,ur.isLeapYear=Je,ur.weekYear=Hn,ur.isoWeekYear=Yn,ur.quarter=ur.quarters=Qn,ur.month=ft,ur.daysInMonth=mt,ur.week=ur.weeks=Vt,ur.isoWeek=ur.isoWeeks=Ct,ur.weeksInYear=Zn,ur.weeksInWeekYear=Jn,ur.isoWeeksInYear=Gn,ur.isoWeeksInISOWeekYear=qn,ur.date=er,ur.day=ur.days=Ht,ur.weekday=Yt,ur.isoWeekday=Gt,ur.dayOfYear=tr,ur.hour=ur.hours=na,ur.minute=ur.minutes=ar,ur.second=ur.seconds=rr,ur.millisecond=ur.milliseconds=nr,ur.utcOffset=mi,ur.utc=gi,ur.local=bi,ur.parseZone=vi,ur.hasAlignedHourOffset=_i,ur.isDST=wi,ur.isLocal=ki,ur.isUtcOffset=Si,ur.isUtc=Ni,ur.isUTC=Ni,ur.zoneAbbr=or,ur.zoneName=lr,ur.dates=S("dates accessor is deprecated. Use date instead.",er),ur.months=S("months accessor is deprecated. Use month instead",ft),ur.years=S("years accessor is deprecated. Use year instead",Ze),ur.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",yi),ur.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ai);var hr=I.prototype;function fr(e,t,a,i){var n=ba(),r=h().set(i,t);return n[a](r,e)}function mr(e,t,a){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return fr(e,t,a,"month");var i,n=[];for(i=0;i<12;i++)n[i]=fr(e,i,a,"month");return n}function yr(e,t,a,i){"boolean"==typeof e?(u(t)&&(a=t,t=void 0),t=t||""):(a=t=e,e=false,u(t)&&(a=t,t=void 0),t=t||"");var n,r=ba(),s=e?r._week.dow:0,o=[];if(null!=a)return fr(t,(a+s)%7,i,"day");for(n=0;n<7;n++)o[n]=fr(t,(n+s)%7,i,"day");return o}function gr(e,t){return mr(e,t,"months")}function br(e,t){return mr(e,t,"monthsShort")}function vr(e,t,a){return yr(e,t,a,"weekdays")}function _r(e,t,a){return yr(e,t,a,"weekdaysShort")}function wr(e,t,a){return yr(e,t,a,"weekdaysMin")}hr.calendar=E,hr.longDateFormat=G,hr.invalidDate=Z,hr.ordinal=X,hr.preparse=pr,hr.postformat=pr,hr.relativeTime=ee,hr.pastFuture=te,hr.set=V,hr.eras=Vn,hr.erasParse=Cn,hr.erasConvertYear=In,hr.erasAbbrRegex=Pn,hr.erasNameRegex=Rn,hr.erasNarrowRegex=On,hr.months=ut,hr.monthsShort=ct,hr.monthsParse=pt,hr.monthsRegex=gt,hr.monthsShortRegex=yt,hr.week=Nt,hr.firstDayOfYear=xt,hr.firstDayOfWeek=Mt,hr.weekdays=$t,hr.weekdaysMin=Ut,hr.weekdaysShort=jt,hr.weekdaysParse=Wt,hr.weekdaysRegex=qt,hr.weekdaysShortRegex=Zt,hr.weekdaysMinRegex=Jt,hr.isPM=aa,hr.meridiem=ra,ma("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Fe(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=S("moment.lang is deprecated. Use moment.locale instead.",ma),a.langData=S("moment.langData is deprecated. Use moment.localeData instead.",ba);var Ar=Math.abs;function kr(){var e=this._data;return this._milliseconds=Ar(this._milliseconds),this._days=Ar(this._days),this._months=Ar(this._months),e.milliseconds=Ar(e.milliseconds),e.seconds=Ar(e.seconds),e.minutes=Ar(e.minutes),e.hours=Ar(e.hours),e.months=Ar(e.months),e.years=Ar(e.years),this}function Sr(e,t,a,i){var n=xi(t,a);return e._milliseconds+=i*n._milliseconds,e._days+=i*n._days,e._months+=i*n._months,e._bubble()}function Nr(e,t){return Sr(this,e,t,1)}function Tr(e,t){return Sr(this,e,t,-1)}function Mr(e){return e<0?Math.floor(e):Math.ceil(e)}function xr(){var e,t,a,i,n,r=this._milliseconds,s=this._days,o=this._months,l=this._data;return r>=0&&s>=0&&o>=0||r<=0&&s<=0&&o<=0||(r+=864e5*Mr(Cr(o)+s),s=0,o=0),l.milliseconds=r%1e3,e=Ie(r/1e3),l.seconds=e%60,t=Ie(e/60),l.minutes=t%60,a=Ie(t/60),l.hours=a%24,s+=Ie(a/24),o+=n=Ie(Vr(s)),s-=Mr(Cr(n)),i=Ie(o/12),o%=12,l.days=s,l.months=o,l.years=i,this}function Vr(e){return 4800*e/146097}function Cr(e){return 146097*e/4800}function Ir(e){if(!this.isValid())return NaN;var t,a,i=this._milliseconds;if("month"===(e=ie(e))||"quarter"===e||"year"===e)switch(t=this._days+i/864e5,a=this._months+Vr(t),e){case "month":return a;case "quarter":return a/3;case "year":return a/12}else switch(t=this._days+Math.round(Cr(this._months)),e){case "week":return t/7+i/6048e5;case "day":return t+i/864e5;case "hour":return 24*t+i/36e5;case "minute":return 1440*t+i/6e4;case "second":return 86400*t+i/1e3;case "millisecond":return Math.floor(864e5*t)+i;default:throw new Error("Unknown unit "+e)}}function Fr(e){return function(){return this.as(e)}}var Er=Fr("ms"),Dr=Fr("s"),Lr=Fr("m"),Rr=Fr("h"),Pr=Fr("d"),Or=Fr("w"),Br=Fr("M"),$r=Fr("Q"),jr=Fr("y"),Ur=Er;function zr(){return xi(this)}function Wr(e){return e=ie(e),this.isValid()?this[e+"s"]():NaN}function Hr(e){return function(){return this.isValid()?this._data[e]:NaN}}var Yr=Hr("milliseconds"),Gr=Hr("seconds"),qr=Hr("minutes"),Zr=Hr("hours"),Jr=Hr("days"),Kr=Hr("months"),Xr=Hr("years");function Qr(){return Ie(this.days()/7)}var es=Math.round,ts={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function as(e,t,a,i,n){return n.relativeTime(t||1,!!a,e,i)}function is(e,t,a,i){var n=xi(e).abs(),r=es(n.as("s")),s=es(n.as("m")),o=es(n.as("h")),l=es(n.as("d")),u=es(n.as("M")),c=es(n.as("w")),d=es(n.as("y")),p=r<=a.ss&&["s",r]||r<a.s&&["ss",r]||s<=1&&["m"]||s<a.m&&["mm",s]||o<=1&&["h"]||o<a.h&&["hh",o]||l<=1&&["d"]||l<a.d&&["dd",l];return null!=a.w&&(p=p||c<=1&&["w"]||c<a.w&&["ww",c]),(p=p||u<=1&&["M"]||u<a.M&&["MM",u]||d<=1&&["y"]||["yy",d])[2]=t,p[3]=+e>0,p[4]=i,as.apply(null,p)}function ns(e){return void 0===e?es:"function"==typeof e&&(es=e,true)}function rs(e,t){return void 0!==ts[e]&&(void 0===t?ts[e]:(ts[e]=t,"s"===e&&(ts.ss=t-1),true))}function ss(e,t){if(!this.isValid())return this.localeData().invalidDate();var a,i,n=false,r=ts;return "object"==typeof e&&(t=e,e=false),"boolean"==typeof e&&(n=e),"object"==typeof t&&(r=Object.assign({},ts,t),null!=t.s&&null==t.ss&&(r.ss=t.s-1)),i=is(this,!n,r,a=this.localeData()),n&&(i=a.pastFuture(+this,i)),a.postformat(i)}var os=Math.abs;function ls(e){return (e>0)-(e<0)||+e}function us(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a,i,n,r,s,o,l=os(this._milliseconds)/1e3,u=os(this._days),c=os(this._months),d=this.asSeconds();return d?(e=Ie(l/60),t=Ie(e/60),l%=60,e%=60,a=Ie(c/12),c%=12,i=l?l.toFixed(3).replace(/\.?0+$/,""):"",n=d<0?"-":"",r=ls(this._months)!==ls(d)?"-":"",s=ls(this._days)!==ls(d)?"-":"",o=ls(this._milliseconds)!==ls(d)?"-":"",n+"P"+(a?r+a+"Y":"")+(c?r+c+"M":"")+(u?s+u+"D":"")+(t||e||l?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(l?o+i+"S":"")):"P0D"}var cs=si.prototype;return cs.isValid=ni,cs.abs=kr,cs.add=Nr,cs.subtract=Tr,cs.as=Ir,cs.asMilliseconds=Er,cs.asSeconds=Dr,cs.asMinutes=Lr,cs.asHours=Rr,cs.asDays=Pr,cs.asWeeks=Or,cs.asMonths=Br,cs.asQuarters=$r,cs.asYears=jr,cs.valueOf=Ur,cs._bubble=xr,cs.clone=zr,cs.get=Wr,cs.milliseconds=Yr,cs.seconds=Gr,cs.minutes=qr,cs.hours=Zr,cs.days=Jr,cs.weeks=Qr,cs.months=Kr,cs.years=Xr,cs.humanize=ss,cs.toISOString=us,cs.toString=us,cs.toJSON=us,cs.locale=on,cs.localeData=un,cs.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",us),cs.lang=ln,j("X",0,0,"unix"),j("x",0,0,"valueOf"),Me("x",_e),Me("X",ke),De("X",(function(e,t,a){a._d=new Date(1e3*parseFloat(e));})),De("x",(function(e,t,a){a._d=new Date(Fe(e));})),
|
|
6584
6584
|
//! moment.js
|
|
6585
6585
|
a.version="2.30.1",i(Za),a.fn=ur,a.min=Qa,a.max=ei,a.now=ti,a.utc=h,a.unix=cr,a.months=gr,a.isDate=c,a.locale=ma,a.invalid=g,a.duration=xi,a.isMoment=A,a.weekdays=vr,a.parseZone=dr,a.localeData=ba,a.isDuration=oi,a.monthsShort=br,a.weekdaysMin=wr,a.defineLocale=ya,a.updateLocale=ga,a.locales=va,a.weekdaysShort=_r,a.normalizeUnits=ie,a.relativeTimeRounding=ns,a.relativeTimeThreshold=rs,a.calendarFormat=ji,a.prototype=ur,a.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},a}()),O$1.exports),j=L$1($);class U{apiClient;debug;apiCalls=[];apiCallsStartTime=null;constructor(e){if(!e)throw "A lumino client needs to be passed.";this.apiClient=e,this.debug=false,this.debug&&(this.apiCalls=[],this.apiCallsStartTime=null);}start(){this.debug&&(this.apiCallsStartTime=j(),this.apiCalls=[]);}end(){if(this.debug){console.log("Calls: "+this.apiCalls.length);for(const e of this.apiCalls){const t=e.callTime.toString().padStart(6," "),a=e.totalTime.toString().padStart(6," ");console.log(t+a+" -> "+e.caller+"::"+e.method+" ("+JSON.stringify(e.params)+")");}}}async call(e,t,...a){try{if(this.debug){const i=j(),n=await this.apiClient[t](...a),r=j(),s=r.diff(i,"milliseconds"),o=r.diff(this.apiCallsStartTime,"milliseconds");return this.apiCalls.push({caller:e,method:t,params:a,callTime:s,totalTime:o}),n}return this.apiClient[t](...a)}catch(e){throw u$3.$emit("client:fatalError","API call failed: "+t),e}}}let z$1=class z{itemCache;apiGateway;constructor(e){this.itemCache=new Map,this.apiGateway=e;}clear(){this.itemCache.clear();}async getItem(e){if(this.itemCache.has(e))return this.itemCache.get(e);const t=await this.apiGateway.call("ItemCache::getItem","getItem",e);return this.itemCache.set(e,t),t}};class W{id;type;data;constructor(e,t,a){this.id=e,this.type=t,this.data=a;}}class H{ownerItem;constructor(e=void 0){this.ownerItem=e;}createSnapshot(){throw "createSnapshot not implemented!"}restoreFromSnapshot(e,t){throw "restoreFromSnapshot not implemented!"}rollbackFromSnapshot(e){throw "rollbackFromSnapshot not implemented!"}_getElementById(e,t){for(const a of t)if(a.id===e)return a;return null}_rollbackArray(e,t,a){if(!Array.isArray(e))return void console.log("_rollbackArray(): no array given!");const i=[],n=[];let r=0;for(const a of t){const t=this._getElementById(a.id,e);t?n.push({element:t,snapshot:a}):i.push({position:r,snapshot:a}),r++;}const s=[];r=0;for(const a of e){this._getElementById(a.id,t)||s.push(r-s.length),r++;}for(const t of s)e.splice(t,1);for(const e of n)e.element.rollbackFromSnapshot(e.snapshot);for(const t of i){const i=a(t.snapshot,this);e.splice(t.position,0,i);}}}let Y$2 = class Y extends H{id;srcNode;srcSlot;destNode;destSlot;posX;posY;constructor(e,t){super(t),h$2.assert(e,"NkConnection: data is null or undefined!"),h$2.assert(e.srcNode,"NkConnection: srcNode is null or undefined!"),h$2.assert(e.srcSlot,"NkConnection: srcSlot is null or undefined!"),h$2.assert(e.destNode,"NkConnection: srcNode is null or undefined!"),h$2.assert(e.destSlot,"NkConnection: srcSlot is null or undefined!"),this.id=e.id||h$2.createItemOrBlockID(),this.srcNode=e.srcNode,this.srcSlot=e.srcSlot,this.destNode=e.destNode,this.destSlot=e.destSlot,this.posX=e.posX||0,this.posY=e.posY||0;}getId(){return this.id}setPosition(e,t){this.posX=e,this.posY=t;}getPosX(){return this.posX}getPosY(){return this.posY}getSrcNode(){return this.srcNode}getDestNode(){return this.destNode}getSrcSlot(){return this.srcSlot}getDestSlot(){return this.destSlot}setSrcNode(e){this.srcNode=e;}setDestNode(e){this.destNode=e;}setSrcSlot(e){this.srcSlot=e;}setDestSlot(e){this.destSlot=e;}clone(){return new Y({srcNode:this.srcNode,srcSlot:this.srcSlot,destNode:this.destNode,destSlot:this.destSlot,posX:this.posX,posY:this.posY},this.ownerItem)}createSnapshot(){return new W(this.id,"connection",{id:this.id,srcNode:this.srcNode,srcSlot:this.srcSlot,destNode:this.destNode,destSlot:this.destSlot,posX:this.posX,posY:this.posY})}restoreFromSnapshot(e){this.id=e.id,this.srcNode=e.data.srcNode,this.srcSlot=e.data.srcSlot,this.destNode=e.data.destNode,this.destSlot=e.data.destSlot,this.posX=e.data.posX,this.posY=e.data.posY;}rollbackFromSnapshot(e){this.srcNode=e.data.srcNode,this.srcSlot=e.data.srcSlot,this.destNode=e.data.destNode,this.destSlot=e.data.destSlot,this.posX=e.data.posX,this.posY=e.data.posY;}};let G$9 = class G extends H{id;name=void 0;displayName=void 0;value;script;type=void 0;datatype=void 0;minValue=void 0;maxValue=void 0;order=0;inject=void 0;info=void 0;constructor(e=void 0,t=void 0,a=void 0,i=void 0){super(i),this.value=a,this.script=e,this.id=h$2.createGUID(),this.name=t,this.displayName=t,this._updateDisplayName();}getId(){return this.id}setName(e){this.name=e,this._updateDisplayName();}setOrder(e){this.order=e;}setInfo(e){this.info=e;}clone(e=new Map){const t=new G;return t.ownerItem=this.ownerItem,t.value=e.get(this.value)??this.value,t.script=this.script,t.type=this.type,t.minValue=this.minValue,t.maxValue=this.maxValue,t.order=this.order,t.info=this.info,t.setName(this.name),t}clearDefinition(){this.type=void 0;}setDefinition(e){this.inject=e.inject;const t=e.type.toLowerCase();switch(t){case "boolean":case "bool":this.type="Attribute",this.datatype="Boolean",this.value=void 0!==this.value?this._toBoolean(this.value):this._toBoolean(e.defaultValue);break;case "number":{this.type="Attribute",this.datatype="Float",this.value=void 0!==this.value?Number(this.value):Number(e.defaultValue);const t=this._parseTypeParams(e.typeparams,2);t?(this.minValue=Number(t[0]),this.maxValue=Number(t[1])):(this.minValue=void 0,this.maxValue=void 0);break}case "string":this.type="Attribute",this.datatype="String",this.value=void 0!==this.value&&null!==this.value?this.value.toString():e.defaultValue?e.defaultValue.toString():"";break;case "node":this.type="Attribute",this.datatype="Node";break;default:console.error("Unknown script field type: "+t),this.type="Attribute",this.datatype="String",this.value=this.value?this.value.toString():e.defaultValue?e.defaultValue.toString():"";}}_toBoolean(e){return null!=e&&(true===e||false===e?e:"false"!==e.toString().toLowerCase())}_updateDisplayName(){this.name?this.displayName=h$2.toUserFriendlyName(this.name):this.displayName="";}_parseTypeParams(e,t){if(!e)return null;const a=e.split(",").map((e=>e.trim()));return a.length!==t?null:a}createSnapshot(){return new W(this.name,"scriptfield",{id:this.id,type:this.type,name:this.name,value:this.value,datatype:this.datatype,minValue:this.minValue,maxValue:this.maxValue,order:this.order,info:this.info})}};function q(e,t,a){const{datatype:i,minValue:n,maxValue:r,name:s,value:o,type:l,order:u,id:c,info:d}=e.data,p=new G$9(t,s,o,a);return p.id=c,p.type=l,p.datatype=i,p.minValue=n,p.maxValue=r,p.order=u,p.info=d,p}class Z extends H{id=void 0;block=void 0;fields=[];item=null;deferInitCall=false;constructor(e=void 0,t=void 0,a=void 0,i=void 0){super(a),e instanceof W?this.restoreFromSnapshot(e,t):(this.id=e||h$2.createItemOrBlockID(),this.block=t),this.item||(this.item={value:i,linkableItems:[],linkableTypes:["Script"]}),this.item=g$1.instance.proxyScriptItem(this.item,this,this.ownerItem),this.fields=g$1.instance.proxyScriptFieldsArray(this.fields,this,this.ownerItem);}getId(){return this.id}makeIdsUnique(e,t=false){if(this.id)if(e.has(this.id)||t){const t=h$2.createItemOrBlockID();e.set(this.id,t),this.id=t;}else e.set(this.id,this.id);}transformNodeIds(e){for(const t of this.fields)t.value&&e.has(t.value)&&(t.value=e.get(t.value));}clone(e=new Map){const t=new Z(void 0,this.block,this.ownerItem,this.item.value);for(const a of this.fields){const i=a.clone(e);i.script=t,t.addField(i);}return t}createFieldsFromDefinition(e=[]){function t(e,t){for(const a of e)if(a.name===t)return a;return null}for(const a of this.fields)t(e,a.name)||a.clearDefinition();let a=0;for(const i of e){let e=t(this.fields,i.name);e||(e=new G$9(this,i.name,void 0,this.ownerItem),this.addField(e)),e.setOrder(a++),e.setInfo(i.info),e.setDefinition(i);}this.fields.sort((function(e,t){return e.order-t.order}));}clearFieldTypes(){this.createFieldsFromDefinition();}addField(e){this.fields.push(g$1.instance.proxyScriptField(e,this,this.ownerItem));}createSnapshot(){const e=[];for(const t of this.fields)e.push(t.createSnapshot());return new W(this.id,"script",{id:this.id,value:this.item.value,fields:e})}restoreFromSnapshot(e,t){this.id=e.data.id,this.block=t,this.item={value:e.data.value,linkableItems:[],linkableTypes:["Script"]};const a=[];this._rollbackArray(a,e.data.fields,(e=>{const t=q(e,this,this.ownerItem);return g$1.instance.proxyScriptField(t,this,this.ownerItem)})),this.fields=a;}rollbackFromSnapshot(e){e.data.value&&(this.item.value=e.data.value),this._rollbackArray(this.fields,e.data.fields,(e=>{const t=q(e,this,this.ownerItem);return g$1.instance.proxyScriptField(t,this,this.ownerItem)}));}}var J,K$1={exports:{}},X$1=K$1.exports;
|
|
6586
6586
|
/**
|
|
@@ -114104,7 +114104,7 @@ void main() {
|
|
|
114104
114104
|
}
|
|
114105
114105
|
}
|
|
114106
114106
|
|
|
114107
|
-
var engine$1 = "26.3.
|
|
114107
|
+
var engine$1 = "26.3.5";
|
|
114108
114108
|
var bullet = "3.26";
|
|
114109
114109
|
var lua = "5.4.3";
|
|
114110
114110
|
var packageVersionInfo = {
|
|
@@ -218057,7 +218057,7 @@ void main() {
|
|
|
218057
218057
|
|
|
218058
218058
|
var lua_api_events = "\nlocal _internal = require('engine/_internal');\nlocal msgpack = require('engine/msgpack');\nlocal handle = require('engine/handle');\nlocal unpack = msgpack.unpack\n\n--- @module events\nlocal events = {}\nlocal listeners = {}\nlocal listenerIndex = 1\n\n---Start listening to events of a certain type. This method will take an event type and a function to call if the\n---event is triggered.\n---@param eventtype string Type of the event. See possible types of events below\n---@param func function function to call\nfunction events.on(eventtype, func)\n if type(func) == 'function' then\n local id = listenerIndex\n local listener = { id=id, func=func, eventtype=eventtype, once=false }\n listeners[id] = listener\n listenerIndex = listenerIndex + 1\n _internal.sendMessage('events.on', { eventtype=eventtype, id=id })\n else\n error(\"func parameter needs to be a function\")\n end\nend\n\n---Listen to the next event of a certain type. After the event is triggered once, the event listener will automatically\n---deactivate again. This method will take an event type and a function to call if the event is triggered.\n---@param eventtype string Type of the event. See possible types of events below\n---@param func function function to call\nfunction events.once(eventtype, func)\n if type(func) == 'function' then\n local id = listenerIndex\n local listener = { id=id, func=func, eventtype=eventtype, once=true }\n listeners[id] = listener\n listenerIndex = listenerIndex + 1\n _internal.sendMessage('events.once', { eventtype=eventtype, id=id })\n else\n error(\"func parameter needs to be a function\")\n end\nend\n\n---Stop listening to events of a certain type. Clears all events of the given type for this script entity.\n---@param eventtype string Type of the event\nfunction events.off(eventtype)\n local keys_to_remove = {}\n for id, listener in pairs(listeners) do\n if listener.eventtype == eventtype then\n table.insert(keys_to_remove, id)\n end\n end\n\n for _, id in ipairs(keys_to_remove) do\n listeners[id] = nil\n end\n\n _internal.sendMessage('events.off', { eventtype=eventtype })\nend\n\nfunction events.emitExternal(eventtype, value)\n _internal.sendMessage('events.emitExternal', { eventtype=eventtype, value=value })\nend\n\nfunction events._translate(e)\n e = unpack(e)\n\n --- Translate handles to an actual object\n if type(e.event.handle) == 'table' then\n local object = handle.createObject(e.event.handle)\n if object == nil then\n error(\"events._translate(): Cannot translate handle to object, because it is invalid!\")\n end\n e.event.object = object\n e.event.handle = nil\n end\n\n return e;\nend\n\nfunction events._processIncoming(e)\n\n --- Translate handles to an actual object\n if type(e.event.handle) == 'table' then\n local object = handle.createObject(e.event.handle)\n if object == nil then\n error(\"events._processIncoming(): Cannot translate handle to object, because it is invalid!\")\n end\n e.event.object = handle.createObject(e.event.handle)\n e.event.handle = nil\n end\n\n local listener = listeners[e.listenerId]\n if listener then\n listener.func(e.event)\n end\nend\n\nreturn events\n";
|
|
218059
218059
|
|
|
218060
|
-
var lua_api_handle = "\nlocal handle = {}\n\
|
|
218060
|
+
var lua_api_handle = "\nlocal handle = {}\n\n--local objectCache = {}\n\nfunction handle.createObject(h)\n if h == nil then\n return nil\n end\n if h and h._isHandle then\n --if objectCache[h.id] then\n -- return objectCache[h.id]\n --end\n local path = 'engine/' .. h.basetype .. 's/' .. h.type\n local Type = require(path)\n if not Type then\n print(\"handle.createObject(): Type not found!\", path)\n return nil\n end\n if type(Type.new) == 'function' then\n local obj = Type.new(h.id, h.nodeId)\n --objectCache[h.id] = obj\n return obj\n else\n print(\"handle.createObject(): Type found but fromHandle function is missing!\", path)\n printDump(Type)\n return nil\n end\n else\n print(debug.traceback())\n print(\"handle.createObject(): Not a valid handle!\", h)\n return nil\n end\nend\n\nfunction handle.invalidate(id)\n --if id and objectCache[id] then\n -- objectCache[id] = nil\n --end\nend\n\nreturn handle\n";
|
|
218061
218061
|
|
|
218062
218062
|
var lua_api_imgui = "\nlocal _internal = require('engine/_internal');\n\n--- @module ImGui\nlocal ImGui = {}\n\n--- Enumeration of the available backend flags.\n--- @enum BackendFlags\n--- @field None number No flag set.\n--- @field HasGamepad number Backend platform supports gamepad and currently has one connected.\n--- @field HasMouseCursors number Backend platform supports honoring GetMouseCursor() value to change the OS cursor shape.\n--- @field HasSetMousePos number Backend platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if ImGuiConfigFlags_NavEnableSetMousePos is set).\n--- @field RendererHasVtxOffset number Backend renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices.\nImGui.BackendFlags = {\n None = 0,\n HasGamepad = 1 << 0,\n HasMouseCursors = 1 << 1,\n HasSetMousePos = 1 << 2,\n RendererHasVtxOffset = 1 << 3\n}\n\n--- Enumeration of the available configuration flags.\n--- @enum ConfigFlags\n--- @field None number No flag set.\n--- @field NavEnableKeyboard number Enable keyboard controls.\n--- @field NavEnableGamepad number Enable gamepad controls.\n--- @field NavEnableSetMousePos number Enable mouse repositioning requests with io.WantSetMousePos.\n--- @field NavNoCaptureKeyboard number Disable keyboard capture by ImGui.\n--- @field NoMouse number Disable mouse controls.\n--- @field NoMouseCursorChange number Disable mouse cursor change requests.\n--- @field IsSRGB number Enable sRGB gamma correction.\n--- @field IsTouchScreen number Enable touch screen controls.\nImGui.ConfigFlags = {\n None = 0,\n NavEnableKeyboard = 1 << 0,\n NavEnableGamepad = 1 << 1,\n NavEnableSetMousePos = 1 << 2,\n NavNoCaptureKeyboard = 1 << 3,\n NoMouse = 1 << 4,\n NoMouseCursorChange = 1 << 5,\n IsSRGB = 1 << 20,\n IsTouchScreen = 1 << 21\n}\n\n--- Sets the global window padding for all windows.\n--- @param x number Padding for the x-axis.\n--- @param y number Padding for the y-axis.\nfunction ImGui.setGlobalWindowPadding(x, y)\n _internal.sendMessage('imgui.setGlobalWindowPadding', { x=x, y=y })\nend\n\n--- Sets the global window rounding for all windows.\n--- @param r number Rounding value.\nfunction ImGui.setGlobalWindowRounding(r)\n _internal.sendMessage('imgui.setGlobalWindowRounding', { r=r })\nend\n\n--- Sets the global frame padding for all windows.\n--- @param x float Padding for the x-axis.\n--- @param y float Padding for the y-axis.\nfunction ImGui.setGlobalFramePadding(x, y)\n _internal.sendMessage('imgui.setGlobalFramePadding', { x=x, y=y })\nend\n\n--- Sets the global frame rounding for all windows.\n--- @param r number Rounding value.\nfunction ImGui.setGlobalFrameRounding(r)\n _internal.sendMessage('imgui.setGlobalFrameRounding', { r=r })\nend\n\n--- Sets the global item spacing for all windows.\n--- @param x number Spacing for the x-axis.\n--- @param y number Spacing for the y-axis.\nfunction ImGui.setGlobalItemSpacing(x, y)\n _internal.sendMessage('imgui.setGlobalItemSpacing', { x=x, y=y })\nend\n\n--- Sets the global item inner spacing for all windows.\n--- @param x number Inner spacing for the x-axis.\n--- @param y number Inner spacing for the y-axis.\nfunction ImGui.setGlobalItemInnerSpacing(x, y)\n _internal.sendMessage('imgui.setGlobalItemInnerSpacing', { x=x, y=y })\nend\n\n--- Sets the global indent spacing for all windows.\n--- @param value number Indent spacing value.\nfunction ImGui.setGlobalIndentSpacing(value)\n _internal.sendMessage('imgui.setGlobalIndentSpacing', { value=value })\nend\n\n--- Sets the global scrollbar size for all windows.\n--- @param value number Scrollbar size value.\nfunction ImGui.setGlobalScrollbarSize(value)\n _internal.sendMessage('imgui.setGlobalScrollbarSize', { value=value })\nend\n\n--- Sets the global scrollbar rounding for all windows.\n--- @param value number The value of the scrollbar rounding.\nfunction ImGui.setGlobalScrollbarRounding(value)\n _internal.sendMessage('imgui.setGlobalScrollbarRounding', { value=value })\nend\n\n--- Sets the global minimum width/height of a grab box for slider/scrollbar for all windows.\n--- @param value number The value of the minimum grab.\nfunction ImGui.setGlobalGrabMinSize(value)\n _internal.sendMessage('imgui.setGlobalGrabMinSize', { value=value })\nend\n\n--- Sets the global radius of grabs corners rounding for all windows. Set to 0.0 to have rectangular slider grabs.\n--- @param value number The value of grabs corners rounding.\nfunction ImGui.setGlobalGrabRounding(value)\n _internal.sendMessage('imgui.setGlobalGrabRounding', { value=value })\nend\n\n--- Enumeration of the available window flags.\n--- @enum WindowFlags\n--- @field None number No flag set.\n--- @field NoTitleBar number Window doesn't have a title bar.\n--- @field NoResize number Window can't be resized.\n--- @field NoMove number Window can't be moved.\n--- @field NoScrollbar number Window has no scrollbar.\n--- @field NoScrollWithMouse number Window scrollbar doesn't respond to mouse scrolling.\n--- @field NoCollapse number Window can't be collapsed.\n--- @field AlwaysAutoResize number Window should resize to its content every frame.\n--- @field ShowBorders number Window has borders.\n--- @field NoSavedSettings number Never save settings (inodependent of ImGuiConfigFlags_NoSaveSettings).\n--- @field NoMouseInputs number Window will not receive mouse inputs.\n--- @field MenuBar number Window has a menu-bar.\n--- @field HorizontalScrollbar number Window has a horizontal scrollbar.\n--- @field NoFocusOnAppearing number Window doesn't take focus when first appearing.\n--- @field NoBringToFrontOnFocus number Window doesn't bring to front when taking focus.\n--- @field AlwaysVerticalScrollbar number Window has a vertical scrollbar.\n--- @field AlwaysHorizontalScrollbar number Window has a horizontal scrollbar.\n--- @field AlwaysUseWindowPadding number Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient).\n--- @field NoNavInputs number No gamepad/keyboard navigation within the window.\n--- @field NoNavFocus number No focusing toward this window with gamepad/keyboard navigation (e.g. skipped by CTRL+TAB).\n--- @field UnsavedDocument number Display a dot next to the title. When used in a tab/docking context, tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar.\n--- @field NoNav number No gamepad/keyboard navigation within the window and no focusing toward this window with gamepad/keyboard navigation.\n--- @field NoDecoration number Disable title-bar, resizing borders, and scrollbar.\n--- @field NoInputs number Window is completely sealed and won't receive inputs.\nImGui.WindowFlags = {\n None = 0,\n NoTitleBar = 1 << 0,\n NoResize = 1 << 1,\n NoMove = 1 << 2,\n NoScrollbar = 1 << 3,\n NoScrollWithMouse = 1 << 4,\n NoCollapse = 1 << 5,\n AlwaysAutoResize = 1 << 6,\n ShowBorders = 1 << 7,\n NoSavedSettings = 1 << 8,\n NoMouseInputs = 1 << 9,\n MenuBar = 1 << 10,\n HorizontalScrollbar = 1 << 11,\n NoFocusOnAppearing = 1 << 12,\n NoBringToFrontOnFocus = 1 << 13,\n AlwaysVerticalScrollbar = 1 << 14,\n AlwaysHorizontalScrollbar = 1 << 15,\n AlwaysUseWindowPadding = 1 << 16,\n NoNavInputs = 1 << 18,\n NoNavFocus = 1 << 19,\n UnsavedDocument = 1 << 20,\n NoNav = 1 << 18 | 1 << 19,\n NoDecoration = 1 << 0 | 1 << 1 | 1 << 3 | 1 << 5,\n NoInputs = 1 << 9 | 1 << 18 | 1 << 19\n}\n\n--- Begins a new dialog.\n--- @param text string The title of the dialog.\n--- @param x number The x coordinate of the dialog (optional).\n--- @param y number The y coordinate of the dialog (optional).\n--- @param flags WindowFlags Configuration flags.\nfunction ImGui.beginDialog(text, x, y, flags)\n return _internal.sendMessage('imgui.beginDialog', { text=text, x=x, y=y, flags=flags })\nend\n\n--- Ends the current dialog.\n--- @function\nfunction ImGui.endDialog()\n _internal.sendMessage('imgui.endDialog')\nend\n\n--- Begins the main menu bar. See `Menubar example`_.\n--- @return boolean Return true if the main menu bar is open, otherwise false.\nfunction ImGui.beginMainMenuBar()\n return _internal.sendMessage('imgui.beginMainMenuBar')\nend\n\n--- Ends the current main menu bar.\n--- @function\nfunction ImGui.endMainMenuBar()\n _internal.sendMessage('imgui.endMainMenuBar')\nend\n\n--- Begins a new menu-bar inside current window.\n--- To be displayed correctly, the dialog parent needs to have\n--- the ImGui.WindowFlags.MenuBar flag enabled. See `Menubar example`_.\n--- @return boolean Return true if the menu bar is open, otherwise false.\nfunction ImGui.beginMenuBar()\n return _internal.sendMessage('imgui.beginMenuBar')\nend\n\n--- Ends the current menu bar.\n--- @function\nfunction ImGui.endMenuBar()\n _internal.sendMessage('imgui.endMenuBar')\nend\n\n--- Begins a new menu.\n--- @param label string the label of the menu. See `Menubar example`_.\n--- @return boolean Return true if the menu is open, otherwise false.\nfunction ImGui.beginMenu(label)\n return _internal.sendMessage('imgui.beginMenu', { label=label})\nend\n\n--- Ends the current menu.\n--- @function\nfunction ImGui.endMenu()\n _internal.sendMessage('imgui.endMenu')\nend\n\n--- Creates a new menu item.\n--- @param mainLabel string The main label of the menu item.\n--- @param secondaryLabel string The secondary label of the menu item.\n--- @return boolean Return true if the menu item is pressed, otherwise false.\nfunction ImGui.menuItem(mainLabel, secondaryLabel)\n return _internal.sendMessage('imgui.menuItem', { mainLabel=mainLabel, secondaryLabel=secondaryLabel })\nend\n\n--- Begins a child window. See `Group Child example`_ for a full example\n--- @param label string the label of the child window.\nfunction ImGui.beginChild(label)\n _internal.sendMessage('imgui.beginChild', { label=label})\nend\n\n--- Ends the current child window.\n--- @function\nfunction ImGui.endChild()\n _internal.sendMessage('imgui.endChild')\nend\n\n--- Begins a new group of items. See `Group Child example`_ for a full example\n--- @function\nfunction ImGui.beginGroup()\n _internal.sendMessage('imgui.beginGroup')\nend\n\n--- Ends the current group of items.\n--- @function\nfunction ImGui.endGroup()\n _internal.sendMessage('imgui.endGroup')\nend\n\n--- Begins a new table. See `Table example`_ for a full example.\n--- @param mode string The mode of the table.\n--- @param number number The number of the table.\n--- @return boolean Return true if the table is open, otherwise false.\nfunction ImGui.beginTable(mode, number)\n return _internal.sendMessage('imgui.beginTable', { mode=mode, number=number })\nend\n\n--- Ends the current table.\n--- @function\nfunction ImGui.endTable()\n _internal.sendMessage('imgui.endTable')\nend\n\n--- Appends into into the next row of the table.\n--- @function\nfunction ImGui.tableNextRow()\n _internal.sendMessage('imgui.tableNextRow')\nend\n\n--- Appends into into the next column of the table.\n--- @function\nfunction ImGui.tableNextColumn()\n _internal.sendMessage('imgui.tableNextColumn')\nend\n\n--- Moves to the next row in the table.\n--- @function\nfunction ImGui.tableNextRow()\n _internal.sendMessage('imgui.tableNextRow')\nend\n\n--- Moves to the next column in the table.\n--- @function\nfunction ImGui.moveToNextColumn()\n _internal.sendMessage('imgui.moveToNextColumn')\nend\n\n--- Sets a cell in the table.\n--- @param label string The label of the cell.\nfunction ImGui.tableSetCell(label)\n _internal.sendMessage('imgui.tableSetCell', { label=label })\nend\n\n--- Creates the specified number of columns in the current window.\n--- @param numberCols number The number of columns.\nfunction ImGui.createColumns(numberCols)\n _internal.sendMessage('imgui.createColumns', { numberCols=numberCols })\nend\n\n--- Enumeration of available tab bar flags.\n--- @enum TabBarFlags\n--- @field None number No flags.\n--- @field Reorderable number Allow manually dragging tabs to re-order them + New tabs are appended at the end of list.\n--- @field AutoSelectNewTabs number Automatically select new tabs when they appear.\n--- @field TabListPopupButton number Disable buttons to open the tab list popup.\n--- @field NoCloseWithMiddleMouseButton number Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button.\n--- @field NoTabListScrollingButtons number Disable scrolling buttons (apply when fitting policy is ImGuiTabBarFlags_FittingPolicyScroll).\n--- @field NoTooltip number Disable tooltips when hovering a tab.\n--- @field FittingPolicyResizeDown number Resize tabs when they don't fit.\n--- @field FittingPolicyScroll number Add scroll buttons when tabs don't fit.\n--- @field FittingPolicyMask number Fitting policy mask (defaults to ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll).\n--- @field FittingPolicyDefault number Fitting policy when there are no tabs.\nImGui.TabBarFlags = {\n None = 0,\n Reorderable = 1,\n AutoSelectNewTabs = 2,\n TabListPopupButton = 4,\n NoCloseWithMiddleMouseButton = 8,\n NoTabListScrollingButtons = 16,\n NoTooltip = 32,\n FittingPolicyResizeDown = 64,\n FittingPolicyScroll = 128,\n FittingPolicyMask = 64 + 128,\n FittingPolicyDefault = 64\n}\n\n--- Begins a new tab bar. See `Tabbar example`_ for a full example.\n--- @param label string The label of the tab bar.\n--- @param flags TabBarFlags Configuration flags.\n--- @return boolean Return true if the tab bar is open, otherwise false.\nfunction ImGui.beginTabBar(label, flags)\n return _internal.sendMessage('imgui.beginTabBar', { label=label, flags=flags })\nend\n\n--- Ends the current tab bar.\n--- @function\nfunction ImGui.endTabBar()\n _internal.sendMessage('imgui.endTabBar')\nend\n\n--- Begins a new tab item.\n--- @param label string The label of the tab item.\n--- @param flags TabBarFlags Configuration flags.\n--- @return boolean Return true if the tab item is open, otherwise false.\nfunction ImGui.beginTabItem(label, flags)\n return _internal.sendMessage('imgui.beginTabItem', { label=label, flags=flags })\nend\n\n--- Ends the current tab item.\n--- @function\nfunction ImGui.endTabItem()\n _internal.sendMessage('imgui.endTabItem')\nend\n\n--- Begins a new tooltip.\n--- @function\nfunction ImGui.beginTooltip()\n _internal.sendMessage('imgui.beginTooltip')\nend\n\n--- Ends the current tab item.\n--- @function\nfunction ImGui.endTooltip()\n _internal.sendMessage('imgui.endTooltip')\nend\n\n--- Enumeration of available popup flags.\n--- @enum PopupFlags\n--- @field None number No flag set.\n--- @field MouseButtonLeft number Open on Left Mouse release.\n--- @field MouseButtonRight number Open on Right Mouse release.\n--- @field MouseButtonMiddle number Open on Middle Mouse release.\n--- @field MouseButtonMask number Bit mask for buttons.\n--- @field MouseButtonDefault number Open on MouseButtonRight Mouse release (default).\n--- @field NoOpenOverExistingPopup number Don't open if there's already a popup at the same level of the popup stack.\n--- @field NoOpenOverItems number Don't return true when hovering items, only when hovering empty space.\n--- @field AnyPopupId number Ignore the ImGuiID parameter and test for any popup.\n--- @field AnyPopupLevel number Search/test at any level of the popup stack.\nImGui.PopupFlags = {\n None = 0,\n MouseButtonLeft = 0, -- Open on Left Mouse release\n MouseButtonRight = 1, -- Open on Right Mouse release\n MouseButtonMiddle = 2, -- Open on Middle Mouse release\n MouseButtonMask = 31,\n MouseButtonDefault = 1,\n NoOpenOverExistingPopup = 1 << 5, -- Don't open if there's already a popup at the same level of the popup stack\n NoOpenOverItems = 1 << 6, -- Don't return true when hovering items, only when hovering empty space\n AnyPopupId = 1 << 7, -- Ignore the ImGuiID parameter and test for any popup\n AnyPopupLevel = 1 << 8, -- Search/test at any level of the popup stack\n}\n\n--- Begins a new popup window. See `Popup example`_ for a full example.\n--- @param label string The label of the pop up item.\n--- @param flags PopupFlags Configuration flags.\n--- @return boolean Return true if the popup is open, otherwise false.\nfunction ImGui.beginPopup(label, flags)\n return _internal.sendMessage('imgui.beginPopup', { label=label, flags=flags })\nend\n\n--- Ends the current popup window.\n--- @function\nfunction ImGui.endPopup()\n _internal.sendMessage('imgui.endPopup')\nend\n\n--- Opens a popup window identified by the label.\n--- @function\nfunction ImGui.openPopup(label)\n _internal.sendMessage('imgui.openPopup', { label=label })\nend\n\n--- Closes the current popup window.\n--- @function\nfunction ImGui.closeCurrentPopup()\n _internal.sendMessage('imgui.closeCurrentPopup')\nend\n\n--- Begins a new modal popup window.\n--- @param label string The label of the pop up modal item.\n--- @param flags PopupFlags Configuration flags.\n--- @return boolean Return true if the popup is open, otherwise false.\nfunction ImGui.beginPopupModal(label, flags)\n return _internal.sendMessage('imgui.beginPopupModal', { label=label, flags=flags })\nend\n\n--- Displays text to the current window.\n--- @param text string The text to be displayed.\nfunction ImGui.text(text)\n _internal.sendMessage('imgui.text', { text=text })\nend\n\n--- Displays text to the current window with a given color.\n--- @param text string the text to be displayed.\n--- @param color WidgetColor An instance of WidgetColor.\nfunction ImGui.textColored(text, color)\n _internal.sendMessage('imgui.textColored', { text=text, colorId=color.idx })\nend\n\n--- Displays wrapped text to the current window\n--- @param text string The text to be displayed.\nfunction ImGui.textWrapped(text)\n _internal.sendMessage('imgui.textWrapped', { text=text })\nend\n\n--- Enumeration for input text flags.\n--- @enum InputTextFlags\n--- @field None number No flags.\n--- @field CharsDecimal number Allow decimals and operators (0123456789.+-/).\n--- @field CharsHexadecimal number Allow decimals, operators ad letters (0123456789ABCDEFabcdef).\n--- @field CharsUppercase number Turn lowercase letters into uppercase.\n--- @field CharsNoBlank number Filter out spaces, tabs.\n--- @field AutoSelectAll number Select entire text when first taking mouse focus.\n--- @field EnterReturnsTrue number Return 'true' when Enter is pressed (as opposed to every time the value was modified).\n--- @field CallbackCompletion number Callback on pressing TAB (for completion handling).\n--- @field CallbackHistory number Callback on pressing Up/Down arrows (for history handling).\n--- @field CallbackAlways number Callback on each iteration. User code may query cursor position, modify text buffer.\n--- @field CallbackCharFilter number Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or discard, or return 1 in callback to discard.\n--- @field AllowTabInput number Pressing TAB input a '\\t' character into the text field.\n--- @field CtrlEnterForNewLine number In multi-line mode, unfocus with Enter, add new line with Ctrl+Enter (default is opposite unfocus with Ctrl+Enter, add line with Enter).\n--- @field NoHorizontalScroll number Disable following the cursor horizontally.\n--- @field AlwaysOverwrite number Overwrite mode.\n--- @field ReadOnly number Read-only mode.\n--- @field Password number Password mode, display all characters as ''.\n--- @field NoUndoRedo number Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID().\n--- @field CharsScientific number Allow scientific notation input (0123456789.+-\\*/eE).\n--- @field CallbackResize number Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow.\n--- @field CallbackEdit number Callback on any edit.\n--- @field EscapeClearsAll number Clears the input when Escape key is pressed.\nImGui.InputTextFlags = {\n None = 0,\n CharsDecimal = 1 << 0,\n CharsHexadecimal = 1 << 1,\n CharsUppercase = 1 << 2,\n CharsNoBlank = 1 << 3,\n AutoSelectAll = 1 << 4,\n EnterReturnsTrue = 1 << 5,\n CallbackCompletion = 1 << 6,\n CallbackHistory = 1 << 7,\n CallbackAlways = 1 << 8,\n CallbackCharFilter = 1 << 9,\n AllowTabInput = 1 << 10,\n CtrlEnterForNewLine = 1 << 11,\n NoHorizontalScroll = 1 << 12,\n AlwaysOverwrite = 1 << 13,\n ReadOnly = 1 << 14,\n Password = 1 << 15,\n NoUndoRedo = 1 << 16,\n CharsScientific = 1 << 17,\n CallbackResize = 1 << 18,\n CallbackEdit = 1 << 19,\n EscapeClearsAll = 1 << 20\n}\n\n--- Creates a text input widget.\n--- @param label string the label to add to the input widget.\n--- @param widgetString WidgetString An intance of WidgetString to interact with the inputText widget.\n--- @param flags InputTextFlags The flags to be used for the input label (optional).\n--- @usage\n--- local gui = require 'engine/imgui'\n--- widgetString = gui.WidgetString:new(32, \"\")\n--- gui.inputText(\"your name\", widgetString)\nfunction ImGui.inputText(label, widgetString, flags)\n _internal.sendMessage('imgui.inputText', { label=label, bufferId=widgetString.idx, flags=flags })\nend\n\n--- Creates a number input widget.\n--- @param label string the label to add to the input widget.\n--- @param widgetNumber WidgetNumber An intance of WidgetString to interact with the inputNumber widget.\n--- @param flags InputTextFlags The flags to be used for the input label (optional). They are the same for InputText.\n--- @usage\n--- local gui = require 'engine/imgui'\n--- widgetNumber = gui.WidgetNumber:new(42)\n--- gui.inputNumber(\"Answer to The Ultimate Question of Life\", widgetNumber)\nfunction ImGui.inputNumber(label, widgetNumber, flags)\n _internal.sendMessage('imgui.inputNumber', { label=label, bufferId=widgetNumber.idx, flags=flags })\nend\n\n--- Creates a bullet point with accompanying text.\n--- @param text string The text to display next to the bullet point.\nfunction ImGui.bulletText(text)\n _internal.sendMessage('imgui.bulletText', { text=text})\nend\n\n--- Increases the horizontal indent of the subsequent widgets by a certain amount.\nfunction ImGui.indent()\n _internal.sendMessage('imgui.indent')\nend\n\n--- Decreases the horizontal indent of the subsequent widgets by a certain amount.\nfunction ImGui.unindent()\n _internal.sendMessage('imgui.unindent')\nend\n\n--- @class WidgetString\n--- A class to internally store strings to be used in the Lumino Lua environment.\nlocal WidgetString = {\n _isWidgetString = true,\n _type = \"WidgetString\"\n}\n\n--- Creates a new WidgetString object with the given length and initial value.\n--- @param length number The length (in bytes) of the buffer where the string is stored.\n--- @param initialValue string The initial value of the string.\nfunction WidgetString:new(length, initialValue)\n local idx = _internal.sendMessage('imgui.createStringBuffer', { length = length, initialValue = initialValue })\n local obj = { idx = idx, length = length }\n self.__index = self\n Class.__setmetatable(obj, self)\n return obj\nend\n\n--- Retrieves the value stored inside an instance of WidgetString.\n--- @return string The string stored inside the instance of WidgetString.\nfunction WidgetString:getValue()\n __assertTrace(self._isWidgetString, \"self is not a WidgetString\")\n return _internal.sendMessage('imgui.getStringBufferValue', { bufferId = self.idx })\nend\n\n--- Sets a new internal value to an instance of WidgetString.\n--- @param value string The value to set the widget string to.\nfunction WidgetString:setValue(value)\n __assertTrace(self._isWidgetString, \"self is not a WidgetString\")\n return _internal.sendMessage('imgui.setStringBuffer', { value = value, bufferId = self.idx })\nend\n\n--- Concatenation operator for WidgetString. It also accepts primitive strings.\n--- @param other WidgetString|string The other WidgetString or string to concatenate with.\n--- @return string The concatenated string.\nfunction WidgetString.__concat(self, other)\n if type(self) == \"string\" then\n return self .. other:getValue()\n elseif type(other) == \"string\" then\n return self:getValue() .. other\n elseif getmetatable(self) == WidgetString and getmetatable(other) == WidgetString then\n return self:getValue() .. other:getValue()\n else\n error(\"One argument must be a WidgetString instance. The second argument must be a WidgetString instance or a string\")\n end\nend\n\n--- Equality operator for WidgetString.\n--- @param other WidgetString|string The other WidgetString or string to compare with.\n--- @return boolean True if the values are equal.\nfunction WidgetString.__eq(self, other)\n if type(other) == \"string\" then\n return self:getValue() == other\n elseif getmetatable(other) == WidgetString then\n return self:getValue() == other:getValue()\n else\n return false\n end\nend\n\n--- Hook that runs before an object is deleted by the garbage collector.\n--- It calls a function to delete the WidgetString object in JS\n--- @private\nfunction WidgetString:__gc()\n _internal.sendMessage('imgui.freeStringBuffer', { bufferId = self.idx })\nend\n\n--- Returns the string representation of the WidgetString.\n--- @return string The string value.\nfunction WidgetString:__tostring()\n return self:getValue()\nend\n\n-- Add the WidgetString class to the ImGui namespace\nImGui.WidgetString = WidgetString\n\n--- @class WidgetNumber\n--- A class to internally store numbers to be used in the Lumino Lua environment.\nlocal WidgetNumber = {\n _isWidgetNumber = true,\n _type = \"WidgetNumber\"\n}\n\n--- Creates a new WidgetNumber object with the given initial value\n--- @param initialValue number The initial value stored internally.\nfunction WidgetNumber:new(initialValue)\n -- Store the WidgetNumber object in a field of the class instance metatable\n local idx = _internal.sendMessage('imgui.createWidgetNumber', { initialValue = initialValue })\n local obj = { idx = idx}\n self.__index = self\n Class.__setmetatable(obj, self)\n -- Return the instance\n return obj\nend\n\n--- Retrieves the value stored inside an instance of WidgetNumber.\n--- @return number The value interally stored inside the widget number.\nfunction WidgetNumber:getValue()\n __assertTrace(self._isWidgetNumber, \"self is not a WidgetNumber\")\n return _internal.sendMessage('imgui.getWidgetNumber', { numberId = self.idx })\nend\n\n--- Sets a new internal value to an instance of WidgetNumber.\n--- @param value number The value to set the widget number to.\nfunction WidgetNumber:setValue(value)\n __assertTrace(self._isWidgetNumber, \"self is not a WidgetNumber\")\n return _internal.sendMessage('imgui.setWidgetNumber', { value = value, numberId = self.idx })\nend\n\n--- Sum operator for widgetNumber. It also accepts primitive number.\n--- @param other WidgetNumber The other WidgetNumber (or number) to add to.\n--- @return number The sum of the two values.\nfunction WidgetNumber.__add(self, other)\n if type(self) == \"number\" then\n return self + other:getValue()\n elseif type(other) == \"number\" then\n return self:getValue() + other\n elseif getmetatable(self) == WidgetNumber and getmetatable(other) == WidgetNumber then\n return self:getValue() + other:getValue()\n else\n error(\"One argument must be a WidgetNumber instance. \\\n The second argument must be a WidgetNumber instance or a number\")\n end\nend\n\n--- Multiplication operator for widgetNumber. It also accepts primitive number.\n--- @param other WidgetNumber The other `WidgetNumber` instance to multiply to.\n--- @return number the product of the two values.\nfunction WidgetNumber.__mul(self, other)\n assert(self._isWidgetNumber, \"self is not a WidgetNumber\")\n if type(other) == \"number\" then\n return self:getValue() * other\n elseif type(self) == \"number\" then\n return self * other:getValue()\n elseif getmetatable(other) == WidgetNumber and getmetatable(self) == WidgetNumber then\n return self:getValue() * other:getValue()\n else\n error(\"One argument must be a WidgetNumber instance. \\\n The second argument must be a WidgetNumber instance or a number\")\n end\nend\n\n--- Hook that runs before an object is deleted by the garbage collector.\n--- It calls a function to delete the WidgetNumber object in JS\n--- @private\nfunction WidgetNumber:__gc()\n _internal.sendMessage('imgui.freeWidgetNumber', { numberId = self.idx })\nend\n-- Add the WidgetNumber class to the Nk.Canvas namespace\nImGui.WidgetNumber = WidgetNumber\n\n--- @class WidgetVector3\n--- A class to internally store a 3D vector to be used in the Lumino Lua environment.\nlocal WidgetVector3 = {\n _isWidgetVector3 = true,\n _type = \"WidgetVector3\"\n}\n\n--- Creates a new WidgetVector3 object with the given initial values for x, y, z.\n--- @param x number The initial x component value.\n--- @param y number The initial y component value.\n--- @param z number The initial z component value.\n--- @return WidgetVector3 A new WidgetVector3 instance.\nfunction WidgetVector3:new(x, y, z)\n -- Store the WidgetVector3 object in a field of the class instance metatable\n local idx = _internal.sendMessage('imgui.createWidgetVector3', { x = x, y = y, z = z })\n local obj = { idx = idx, x = x, y = y, z = z }\n self.__index = self\n Class.__setmetatable(obj, self)\n -- Return the instance\n return obj\nend\n\n--- Retrieves the vector components stored inside an instance of WidgetVector3.\n--- @return number x The X component\n--- @return number y The Y component\n--- @return number z The Z component\nfunction WidgetVector3:getValue()\n assert(self._isWidgetVector3, \"self is not a WidgetVector3\")\n local values = _internal.sendMessage('imgui.getWidgetVector3', { vectorId = self.idx })\n self.x = values.x\n self.y = values.y\n self.z = values.z\n return self.x, self.y, self.z\nend\n\n--- Sets new internal values for the x, y, z components of an instance of WidgetVector3.\n--- @param x number The x component to set.\n--- @param y number The y component to set.\n--- @param z number The z component to set.\nfunction WidgetVector3:setValue(x, y, z)\n assert(self._isWidgetVector3, \"self is not a WidgetVector3\")\n self.x, self.y, self.z = x, y, z\n _internal.sendMessage('imgui.setWidgetVector3', { x = x, y = y, z = z, vectorId = self.idx })\nend\n\n--- Addition operator for WidgetVector3. It also accepts primitive number.\n--- @param other WidgetVector3 The other WidgetVector3 (or number) to add to.\n--- @return WidgetVector3 The sum of the two vectors.\nfunction WidgetVector3.__add(self, other)\n assert(self._isWidgetVector3, \"self is not a WidgetVector3\")\n if type(other) == \"number\" then\n return WidgetVector3:new(self.x + other, self.y + other, self.z + other)\n elseif getmetatable(other) == WidgetVector3 then\n return WidgetVector3:new(self.x + other.x, self.y + other.y, self.z + other.z)\n else\n error(\"One argument must be a WidgetVector3 instance. The other must be a WidgetVector3 instance or a number\")\n end\nend\n\n--- Subtraction operator for WidgetVector3. It also accepts primitive number.\n--- @param other WidgetVector3 The other WidgetVector3 (or number) to subtract from.\n--- @return WidgetVector3 The difference between the two vectors.\nfunction WidgetVector3.__sub(self, other)\n assert(self._isWidgetVector3, \"self is not a WidgetVector3\")\n if type(other) == \"number\" then\n return WidgetVector3:new(self.x - other, self.y - other, self.z - other)\n elseif getmetatable(other) == WidgetVector3 then\n return WidgetVector3:new(self.x - other.x, self.y - other.y, self.z - other.z)\n else\n error(\"One argument must be a WidgetVector3 instance. The other must be a WidgetVector3 instance or a number\")\n end\nend\n\n--- Hook that runs before an object is deleted by the garbage collector.\n--- It calls a function to delete the WidgetVector3 object in JS.\n--- @private\nfunction WidgetVector3:__gc()\n _internal.sendMessage('imgui.freeWidgetVector3', { vectorId = self.idx })\nend\n\n-- Add the WidgetVector3 class to the ImGui namespace\nImGui.WidgetVector3 = WidgetVector3\n\n--- Creates a new progress bar.\n--- @param status number Progress status (0.0f to 1.0f) to represent in the progress bar.\nfunction ImGui.progressBar(status)\n _internal.sendMessage('imgui.progressBar', { status=status })\nend\n\n--- Enumeration for slider flags\n--- @enum SliderFlags\n--- @field None number No flag set.\n--- @field AlwaysClamp number Clamp value to min/max bounds when input manually with CTRL+Click. By default CTRL+Click allows going out of bounds.\n--- @field Logarithmic number Make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits.\n--- @field NoRoundToFormat number Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits).\n--- @field NoInput number Disable CTRL+Click or Enter key allowing to input text directly into the widget.\nImGui.SliderFlags = {\n None = 0,\n AlwaysClamp = 1 << 4,\n Logarithmic = 1 << 5,\n NoRoundToFormat = 1 << 6,\n NoInput = 1 << 7\n}\n\n--- Creates a new float slider.\n--- @param label string the label to add to the slider.\n--- @param number WidgetNumber The widgetNumber to use as storage.\n--- @param minValue number the minimum value for the slider.\n--- @param maxValue number the maximum value for the slider.\n--- @param format string format of the string in the slider. The default if omitted is \"%f\".\n--- @param flags SliderFlags The flags to be used for the slider (optional).\nfunction ImGui.sliderFloat(label, number, minValue, maxValue, format, flags)\n assert(number._isWidgetNumber, \"number is not a WidgetNumber\")\n _internal.sendMessage('imgui.sliderFloat', { label=label, numberId=number.idx, minValue=minValue, maxValue=maxValue, format=format, flags=flags })\nend\n\n--- Creates a new integer slider.\n--- @param label string The label to add to the slider.\n--- @param number WidgetNumber The widgetNumber to use as storage.\n--- @param minValue number The minimum value for the slider.\n--- @param maxValue number The maximum value for the slider.\n--- @param format string The format of the string in the slider. The default if omitted is \"%d\".\n--- @param flags SliderFlags The flags to be used for the slider (optional).\nfunction ImGui.sliderInt(label, number, minValue, maxValue, format, flags)\n assert(number._isWidgetNumber, \"number is not a WidgetNumber\")\n _internal.sendMessage('imgui.sliderInt', { label=label, numberId=number.idx, minValue=minValue, maxValue=maxValue, format=format, flags=flags })\nend\n\n--- Creates a set of three sliders for manipulating a vector3 object.\n--- @param label string The label to display next to the sliders.\n--- @param widgetVector3 WidgetVector3 The vector3 widget object.\n--- @param minValue number The minimum value for the slider.\n--- @param maxValue number The maximum value for the slider.\n--- @param format string The format of the string in the slider. The default if omitted is \"%f\".\n--- @param flags SliderFlags The flags to be used for the slider (optional).\nfunction ImGui.sliderVector3(label, vector, minValue, maxValue, format, flags)\n assert(vector._isWidgetVector3, \"vector is not a WidgetVector3\")\n _internal.sendMessage('imgui.sliderVector3', { label=label, vectorId=vector.idx, minValue=minValue, maxValue=maxValue, format=format, flags=flags })\nend\n\n--- Creates a new button.\n--- @param text string The text to be displayed on the button.\n--- @param width number The width of the button (optional).\n--- @param height number The height of the button (optional).\n--- @return boolean Returns true if the button was clicked, otherwise false.\nfunction ImGui.button(text, width, height)\n return _internal.sendMessage('imgui.button', { text=text, width=width, height=height })\nend\n\n--- Logs button events in the ImGui interface.\n--- @function\nfunction ImGui.logButtons()\n _internal.sendMessage('imgui.logButtons')\nend\n\n--- Logs the current ImGui interface to the clipboard. Useful for debugging.\n--- @function\nfunction ImGui.logToClipboard()\n _internal.sendMessage('imgui.logToClipboard')\nend\n\n--- Stops logging events in the ImGui interface.\n--- @function\nfunction ImGui.logFinish()\n _internal.sendMessage('imgui.logFinish')\nend\n\n--- Logs a text in the ImGui interface.\n--- @param text string the text to log\nfunction ImGui.logText(text)\n _internal.sendMessage('imgui.logText', { text=text})\nend\n\n--- Adds an horizontal separator between items.\n--- @function\nfunction ImGui.separator()\n _internal.sendMessage('imgui.separator')\nend\n\n--- Adds horizontal spacing between items.\n--- @function\nfunction ImGui.spacing()\n _internal.sendMessage('imgui.spacing')\nend\n\n--- The next item will be created on the same line.\n--- @param spacing number The spacing between items in pixels. If not given, the default spacing is used.\n--- @param offset number The X position where the next item should start in window coordiantes. If not given, the item is placed right after the previous one.\nfunction ImGui.sameLine(spacing, offset)\n _internal.sendMessage('imgui.sameLine', { offset=offset, spacing=spacing})\nend\n\n--- Enum for selectable flags\n--- @enum SelectableFlags\n--- @field None number No flag set.\n--- @field DontClosePopups number Clicking this doesn't close parent popup window.\n--- @field SpanAllColumns number Selectable frame can span all columns (text will still fit in current column).\n--- @field AllowDoubleClick number Generate press events on double clicks too.\n--- @field Disabled number Cannot be selected, display grayed out text.\n--- @field AllowItemOverlap number (WIP) Hit testing to allow subsequent widgets to overlap this one.\nImGui.SelectableFlags = {\n None = 0,\n DontClosePopups = 1 << 0,\n SpanAllColumns = 1 << 1,\n AllowDoubleClick = 1 << 2,\n Disabled = 1 << 3,\n AllowItemOverlap = 1 << 4\n}\n\n--- Creates a selectable item.\n--- @param text string Text in the selectable item.\n--- @param flags SelectableFlags Configuration flags.\nfunction ImGui.selectable(text, flags)\n _internal.sendMessage('imgui.selectable', { text=text, flags=flags })\nend\n\n--- Creates a new checkbox.\n--- @param label string The label of the checkbox.\n--- @param number WidgetNumber The widgetNumber to use as storage.\nfunction ImGui.checkbox(label, number)\n assert(number._isWidgetNumber, \"number is not a WidgetNumber\")\n _internal.sendMessage('imgui.checkbox', { label=label, numberId=number.idx })\nend\n\n--- Creates a new checkbox to enable/disable flags.\n--- @param label string The label of the checkbox.\n--- @param flags ConfigFlags Configuration flags.\nfunction ImGui.checkboxFlags(label, flags)\n _internal.sendMessage('imgui.checkboxFlags', { label=label, flags=flags })\nend\n\n--- Creates a combo box with a list of items to choose from.\n--- @param label string The label of the combo box.\n--- @param number WidgetNumber The widgetNumber to use as storage. Note that arrays in ImGUI\n--- are indexed from 0 and arrays in Lua are indexed from 1. You will need to offset the arrays.\n--- @param items array An array of strings to use as options.\nfunction ImGui.combo(label, number, items)\n -- TODO\n -- Lua starts counting arrays from 1. The number is offset by this value\n -- but it doesn't look like there's any way to directly correct it without\n -- touching imgui source code...we could do some \"hack\" like hardcoding\n -- an empty element into the array\n -- table.insert(items, 1, \"\")\n -- number.idx + 1\n _internal.sendMessage('imgui.combo', { label=label, numberId=number.idx, items=items })\nend\n\n--- Creates a collapsing header with a given label.\n--- @param label string The label of the header.\n--- @return boolean Return true if the header is open, false if it is closed.\nfunction ImGui.collapsingHeader(label)\n return _internal.sendMessage('imgui.collapsingHeader', { label=label })\nend\n\n--- Creates a tree node.\n--- @param label string The label of the tree node.\n--- @return boolean A boolean indicating whether the tree node is open.\n--- @usage\n--- local gui = require 'engine/imgui'\n--- local TreeBehaviour = Class.new(Behaviour)\n--- \n--- function TreeBehaviour:rendergui()\n--- gui.beginDialog(\"Tree Example\")\n--- \n--- if gui.treeNode(\"Click to expand\") then\n--- if gui.isItemToggledOpen() then\n--- gui.text(\"Just opened!\")\n--- end\n--- gui.text(\"Some content...\")\n--- gui.treePop()\n--- end\n--- \n--- gui.endDialog()\n--- end\n--- return TreeBehaviour\nfunction ImGui.treeNode(label)\n return _internal.sendMessage('imgui.treeNode', { label=label })\nend\n\n--- Ends the current tree node.\n--- Called after `treeNode()`, it ends a tree node and automatically\n--- pops it from the ImGui tree structure.\n--- @function\n--- @see treeNode()\nfunction ImGui.treePop()\n _internal.sendMessage('imgui.treePop')\nend\n\n--- Add a tree node to the GUI with the given label.\n--- @param label string The label to display on the tree node.\nfunction ImGui.treePush(label)\n _internal.sendMessage('imgui.treePush', { label=label })\nend\n\n--- @class WidgetColor\n--- A class to internally link numbers to be used in the Dear ImGui api from the Lumino codebase to Lua environment.\nlocal WidgetColor = {}\n\n--- Creates a new WidgetColor object with the given RGBA values. The RGBA values range from 0 to 1.\n--- @param r number The red color component channel.\n--- @param g number The green color component channel.\n--- @param b number The blue color component channel.\n--- @param a number The alpha color component channel.\n--- @return WidgetColor A new WidgetColor instance.\nfunction WidgetColor:new(r, g, b, a)\n -- Store the WidgetColor object in a field of the class instance metatable\n local idx = _internal.sendMessage('imgui.createWidgetColor', { r=r, g=g, b=b, a=a })\n local obj = { idx = idx,\n r = r,\n g = g,\n b = b,\n a = a}\n self.__index = self\n Class.__setmetatable(obj, self)\n -- Return the instance\n return obj\nend\n\n--- Retrieves the RGBA components stored inside an instance of WidgetColor. The RGBA values range from 0 to 1.\n--- @return number r Red component\n--- @return number g Green component\n--- @return number b Blue component\n--- @return number a Alpha component\nfunction WidgetColor:getValue()\n local values = _internal.sendMessage('imgui.getWidgetColor', { colorId = self.idx })\n self.r = values.r\n self.g = values.g\n self.b = values.b\n self.a = values.a\n return self.r, self.g, self.b, self.a\nend\n\n--- Sets new internal values for the r, g, b, a components of an instance of WidgetColor. The RGBA values range from 0 to 1.\n--- @param r number The r component to set.\n--- @param g number The g component to set.\n--- @param b number The b component to set.\n--- @param a number The a component to set.\nfunction WidgetColor:setValue(r, g, b, a)\n self.r, self.g, self.b, self.a = r, g, b, a\n _internal.sendMessage('imgui.setWidgetColor', { r = r, g = g, b = b, a = a, colorId = self.idx })\nend\n\n--- Hook that runs before an object is deleted by the garbage collector.\n--- It calls a function to delete the WidgetColor object in JS\n--- @private\nfunction WidgetColor:__gc()\n _internal.sendMessage('imgui.freeWidgetColor', { colorId = self.idx })\nend\n-- Add the WidgetColor class to the Nk.Canvas namespace\nImGui.WidgetColor = WidgetColor\n\n--- Enumeration of flags for the color editing widgets.\n--- @enum ColorEditFlags\n--- @field None number No flag set.\n--- @field NoAlpha number ColorEdit, ColorPicker, ColorButton: ignore Alpha component (will only read 3 components from the input pointer).\n--- @field NoPicker number ColorEdit: disable picker when clicking on color square.\n--- @field NoOptions number ColorEdit: disable toggling options menu when right-clicking on inputs/small preview.\n--- @field NoSmallPreview number ColorEdit, ColorPicker: disable color square preview next to the inputs. (e.g. to show only the inputs)\n--- @field NoInputs number ColorEdit, ColorPicker: disable inputs sliders/text widgets (e.g. to show only the small preview color square).\n--- @field NoTooltip number ColorEdit, ColorPicker, ColorButton: disable tooltip when hovering the preview.\n--- @field NoLabel number ColorEdit, ColorPicker: disable display of inline text label (the label is still forwarded to the tooltip and picker).\n--- @field NoSidePreview number ColorPicker: disable bigger color preview on right side of the picker, use small color square preview instead.\n--- @field NoDragDrop number ColorEdit: disable drag and drop target. ColorButton: disable drag and drop source.\n--- @field NoBorder number ColorButton: disable border (which is enforced by default)\n--- @field AlphaBar number ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker.\n--- @field AlphaPreview number ColorEdit, ColorPicker, ColorButton: display preview as a transparent color over a checkerboard, instead of opaque.\n--- @field AlphaPreviewHalf number ColorEdit, ColorPicker, ColorButton: display half opaque / half checkerboard, instead of opaque.\n--- @field HDR number ColorEdit: Currently only disable 0.0f..1.0f limits in RGBA edition (note: you probably want to use ImGuiColorEditFlags_Float flag as well).\n--- @field DisplayRGB number ColorEdit: override display type among RGB.\n--- @field DisplayHSV number ColorEdit: override display type among HSV.\n--- @field DisplayHex number ColorEdit: override display type among Hex.\n--- @field Uint8 number Display values formatted as 0..255.\n--- @field Float number Display values formatted as 0.0f..1.0f floats instead of 0..255 integers. No round-trip of value via integers.\n--- @field PickerHueBar number Display a bar for Hue and rectangle for Sat/Value.\n--- @field PickerHueWheel number Display a wheel for Hue and triangle for Sat/Value.\n--- @field InputRGB number Input and output data in RGB format.\n--- @field InputHSV number Input and output data in HSV format.\nImGui.ColorEditFlags = {\n None = 0,\n NoAlpha = 1 << 1,\n NoPicker = 1 << 2,\n NoOptions = 1 << 3,\n NoSmallPreview = 1 << 4,\n NoInputs = 1 << 5,\n NoTooltip = 1 << 6,\n NoLabel = 1 << 7,\n NoSidePreview = 1 << 8,\n NoDragDrop = 1 << 9,\n NoBorder = 1 << 10,\n AlphaBar = 1 << 16,\n AlphaPreview = 1 << 17,\n AlphaPreviewHalf = 1 << 18,\n HDR = 1 << 19,\n DisplayRGB = 1 << 20,\n DisplayHSV = 1 << 21,\n DisplayHex = 1 << 22,\n Uint8 = 1 << 23,\n Float = 1 << 24,\n PickerHueBar = 1 << 25,\n PickerHueWheel = 1 << 26,\n InputRGB = 1 << 27,\n InputHSV = 1 << 28\n}\n\n--- Creates a color picker.\n--- @param label string The label of the color picker.\n--- @param color WidgetColor An instance of WidgetColor.\n--- @param flag ColorEditFlags User given flags to change the behaviour the behaviour of the widget.\n--- @usage\n--- local gui = Nk.ImGui\n--- gui.beginDialog(\"Color picker\")\n--- gui.colorPicker(\"Pick a color\", color1)\n--- gui.spacing()\n--- gui.colorEdit(\"Edit a color\", color2)\n--- gui.endDialog()\nfunction ImGui.colorPicker(label, color, flags)\n _internal.sendMessage('imgui.colorPicker', { label=label, colorId=color.idx, flags=flags })\nend\n\n--- Creates a color edit. Similar to ColorPicker\n--- @param label string The label of the color picker.\n--- @param color WidgetColor An instance of WidgetColor.\n--- @param flag ColorEditFlags User given flags to change the behaviour of the widget.\nfunction ImGui.colorEdit(label, color, flags)\n _internal.sendMessage('imgui.colorEdit', { label=label, colorId=color.idx, flags=flags })\nend\n\n--- Sets the position of the next window.\n--- @param x number The x-coordinate of the window position.\n--- @param y number The y-coordinate of the window position.\nfunction ImGui.setNextWindowPos(x, y)\n _internal.sendMessage('imgui.setNextWindowPos', { x=x, y=y })\nend\n\n--- Sets the size of the next window.\n--- @param x number Width of the window.\n--- @param y number Height of the window.\nfunction ImGui.setNextWindowSize(x, y)\n _internal.sendMessage('imgui.setNextWindowSize', { x=x, y=y })\nend\n\n--- Sets the content size of the ColorEditFlagsnext window.\n--- @param x number Width of the window content\n--- @param y number Height of the window content\nfunction ImGui.setNextWindowContentSize(x, y)\n _internal.sendMessage('imgui.setNextWindowContentSize', { x=x, y=y })\nend\n\n--- Sets the size constraints of the next window.\n--- @param x number Minimum width of the window.\n--- @param y number Minimum height of the window.\nfunction ImGui.setNextWindowSizeConstraints(minX, minY, maxX, maxY)\n _internal.sendMessage('imgui.setNextWindowSizeConstraints', { minX=minX, minY=minY, maxX=maxX, maxY=maxY })\nend\n\n--- Sets the collapsed state of the next window.\n--- @param collapsed boolean Whether the window should be collapsed or not.\nfunction ImGui.setNextWindowCollapsed(collapsed)\n _internal.sendMessage('imgui.setNextWindowCollapsed', { collapsed=collapsed })\nend\n\n--- Sets the focus state of the next window.\n--- @param focused boolean Whether the window should be focused or not.\nfunction ImGui.setNextWindowFocus()\n _internal.sendMessage('imgui.setNextWindowFocus')\nend\n\n--- Sets the background alpha value of the next window.\n--- @param alpha number The alpha value of the background, between 0 and 1.\nfunction ImGui.setNextWindowBgAlpha(alpha)\n _internal.sendMessage('imgui.setNextWindowBgAlpha', { alpha=alpha })\nend\n\n--- Determines if the current item is hovered by the mouse cursor. For an example, see `Item State Example`_.\n--- @return boolean True if the current item is being hovered by the mouse cursor, false otherwise.\nfunction ImGui.isItemHovered()\n return _internal.sendMessage('imgui.isItemHovered')\nend\n\n--- Determines if the current item has been clicked. For an example, see `Item State Example`_.\n--- @return boolean True if the current item has been clicked, false otherwise.\nfunction ImGui.isItemClicked()\n return _internal.sendMessage('imgui.isItemClicked')\nend\n\n--- Determines if the current item is open. For an example, see `Item State Example`_.\n--- @return boolean True if the current item is toggled open, false otherwise.\nfunction ImGui.isItemToggledOpen()\n return _internal.sendMessage('imgui.isItemToggledOpen')\nend\n\n--- Enumeration for mouse button events.\n--- @enum MouseButton\n--- @field Left number Index for the left mouse button.\n--- @field Right number Index for the right mouse button.\n--- @field Middle number Index for the middle mouse button.\n--- @field COUNT number The number of mouse buttons.\nImGui.MouseButton = {\n Left = 0,\n Right = 1,\n Middle = 2,\n COUNT = 5\n}\n\n--- Enumeration of mouse cursor types for use with SetMouseCursor().\n--- @enum MouseCursor\n--- @field None number No cursor.\n--- @field Arrow number Arrow cursor.\n--- @field TextInput number Text input I-beam cursor.\n--- @field ResizeAll number (Unused by Dear ImGui functions).\n--- @field ResizeNS number Vertical resize cursor.\n--- @field ResizeEW number Horizontal resize cursor.\n--- @field ResizeNESW number Cursor for resizing bottom-left corner of window.\n--- @field ResizeNWSE number Cursor for resizing bottom-right corner of window.\n--- @field Hand number Sets mouse cursor to hand.\n--- @field NotAllowed number Cursor for disallowed interaction (usually a crossed circle).\n--- @field COUNT number Number of cursor types.\nImGui.MouseCursor = {\n None = -1,\n Arrow = 0,\n TextInput = 1,\n ResizeAll = 2,\n ResizeNS = 3,\n ResizeEW = 4,\n ResizeNESW = 5,\n ResizeNWSE = 6,\n Hand = 7,\n NotAllowed = 8,\n COUNT = 9\n}\n\n--- Returns true if the mouse was clicked on the given event.\n--- @param event MouseButton The event for which to check for a mouse click.\nfunction ImGui.isMouseClicked(event)\n return _internal.sendMessage('imgui.isMouseClicked', { event=event })\nend\n\n--- Sets the mouse cursor to the given cursor type.\n--- @param cursor MouseCursor The cursor type to set.\nfunction ImGui.setMouseCursor(cursor)\n _internal.sendMessage('imgui.setMouseCursor', { cursor=cursor })\nend\n\n--- Hook that runs before an object is deleted by the garbage collector.\n--- Cleanup resources and shut down the user interface\n--- @private\nfunction ImGui:__gc()\n _internal.sendMessage('imgui.shutdown')\nend\n\nreturn ImGui\n";
|
|
218063
218063
|
|