@netless/appliance-plugin 1.1.42 → 1.1.43-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/READMA.zh-CN.md +23 -1
  2. package/README.md +24 -1
  3. package/dist/appliance-plugin.js +1 -1
  4. package/dist/appliance-plugin.mjs +33 -30
  5. package/dist/{bridge-C8yT2GqS.js → bridge-D68E09T9.js} +1 -1
  6. package/dist/{bridge-DLGOhX8U.mjs → bridge-DcVN05tP.mjs} +1 -1
  7. package/dist/bridge.js +1 -1
  8. package/dist/bridge.mjs +1 -1
  9. package/dist/collector/collector.d.ts +50 -2
  10. package/dist/collector/types.d.ts +6 -0
  11. package/dist/component/svg/manager.d.ts +1 -0
  12. package/dist/component/svg/snapshot.d.ts +4 -1
  13. package/dist/component/textEditor/manager.d.ts +3 -0
  14. package/dist/core/backGroundThread/index.d.ts +6 -1
  15. package/dist/core/cameraTask.d.ts +45 -0
  16. package/dist/core/const.d.ts +4 -0
  17. package/dist/core/enum.d.ts +5 -1
  18. package/dist/core/error.d.ts +1 -0
  19. package/dist/core/fontFace.d.ts +5 -3
  20. package/dist/core/mainEngine.d.ts +230 -31
  21. package/dist/core/mainThread/base.d.ts +23 -2
  22. package/dist/core/mainThread/canvas2DReadback.d.ts +27 -0
  23. package/dist/core/mainThread/index.d.ts +12 -1
  24. package/dist/core/mainThread/snapshotThread.d.ts +11 -2
  25. package/dist/core/mainThread/subLocalThread.d.ts +12 -6
  26. package/dist/core/mainThread/subServiceThread.d.ts +5 -3
  27. package/dist/core/msgEvent/base.d.ts +4 -1
  28. package/dist/core/msgEvent/baseForWorker.d.ts +1 -1
  29. package/dist/core/msgEvent/copyNode/forWorker.d.ts +1 -1
  30. package/dist/core/msgEvent/forWorker.d.ts +1 -1
  31. package/dist/core/msgEvent/index.d.ts +5 -3
  32. package/dist/core/msgEvent/rotateNode/forMain.d.ts +1 -0
  33. package/dist/core/msgEvent/rotateNode/forWorker.d.ts +1 -1
  34. package/dist/core/msgEvent/scaleNode/forMain.d.ts +1 -0
  35. package/dist/core/msgEvent/scaleNode/forWorker.d.ts +1 -1
  36. package/dist/core/msgEvent/setColor/forMain.d.ts +1 -0
  37. package/dist/core/msgEvent/setColor/forWorker.d.ts +1 -1
  38. package/dist/core/msgEvent/setFont/forWorker.d.ts +1 -1
  39. package/dist/core/msgEvent/setLock/forWorker.d.ts +1 -1
  40. package/dist/core/msgEvent/setPoint/forWorker.d.ts +1 -1
  41. package/dist/core/msgEvent/setShape/forWorker.d.ts +1 -1
  42. package/dist/core/msgEvent/setZIndex/forWorker.d.ts +1 -1
  43. package/dist/core/msgEvent/translateNode/forMain.d.ts +1 -0
  44. package/dist/core/msgEvent/translateNode/forWorker.d.ts +1 -1
  45. package/dist/core/renderRuntimeFallback.d.ts +2 -0
  46. package/dist/core/rendererBusinessTask.d.ts +30 -0
  47. package/dist/core/serviceRenderScheduler.d.ts +33 -0
  48. package/dist/core/tools/base.d.ts +1 -1
  49. package/dist/core/tools/bitmapEraserFastPath.d.ts +8 -0
  50. package/dist/core/tools/eraserFaces.d.ts +24 -9
  51. package/dist/core/tools/image.d.ts +1 -0
  52. package/dist/core/tools/pencilEraserBitMap.d.ts +62 -14
  53. package/dist/core/tools/text.d.ts +2 -1
  54. package/dist/core/types.d.ts +64 -1
  55. package/dist/core/utils/indexDB.d.ts +3 -3
  56. package/dist/core/vNodeManager.d.ts +7 -0
  57. package/dist/core/worker/base.d.ts +52 -7
  58. package/dist/core/worker/fullWorkerLocal.d.ts +8 -2
  59. package/dist/core/worker/fullWorkerService.d.ts +7 -3
  60. package/dist/core/worker/renderCapabilityProbe.d.ts +54 -0
  61. package/dist/core/worker/simpleWorker.d.ts +2 -2
  62. package/dist/core/worker/snapshotWork.d.ts +1 -0
  63. package/dist/core/worker/workerManager.d.ts +17 -4
  64. package/dist/displayer/floatBar/selectorGesture.d.ts +2 -0
  65. package/dist/fullWorker.js +138 -139
  66. package/dist/index-BNHPCii1.mjs +4089 -0
  67. package/dist/index-B_vZ9d3x.mjs +55912 -0
  68. package/dist/index-C2AHqjj8.js +570 -0
  69. package/dist/index-CV8YaU3F.mjs +931 -0
  70. package/dist/index-CWDWQZBs.mjs +4088 -0
  71. package/dist/index-DChI1--R.js +1 -0
  72. package/dist/index-DFo0Gmfx.js +570 -0
  73. package/dist/index-DiLPVPwQ.js +1 -0
  74. package/dist/index-GBYM7kT5.js +1 -0
  75. package/dist/index-GZUDLXJC.js +1 -0
  76. package/dist/{index-D8p2ph99.mjs → index-K_0NX6pD.mjs} +401 -263
  77. package/dist/index-NG5kKK1W.mjs +55920 -0
  78. package/dist/plugin/applianceMultiPlugin.d.ts +18 -3
  79. package/dist/plugin/applianceSinglePlugin.d.ts +18 -4
  80. package/dist/plugin/baseApplianceManager.d.ts +138 -12
  81. package/dist/plugin/baseViewContainerManager.d.ts +40 -3
  82. package/dist/plugin/bitmapEraserOptions.d.ts +9 -0
  83. package/dist/plugin/const.d.ts +4 -0
  84. package/dist/plugin/displayerView.d.ts +7 -7
  85. package/dist/plugin/initLogAggregator.d.ts +45 -0
  86. package/dist/plugin/multi/applianceMultiManager.d.ts +1 -0
  87. package/dist/plugin/multi/containerManager.d.ts +19 -1
  88. package/dist/plugin/pluginInstanceOwner.d.ts +1 -0
  89. package/dist/plugin/renderImageBitmapRetirement.d.ts +100 -0
  90. package/dist/plugin/renderRuntimeCache.d.ts +18 -0
  91. package/dist/plugin/renderSurface.d.ts +15 -0
  92. package/dist/plugin/renderingCompatibility.d.ts +21 -5
  93. package/dist/plugin/roomLifecycle.d.ts +12 -0
  94. package/dist/plugin/selectorApi.d.ts +8 -0
  95. package/dist/plugin/single/applianceSingleManager.d.ts +4 -0
  96. package/dist/plugin/types.d.ts +11 -14
  97. package/dist/plugin/utils.d.ts +8 -0
  98. package/dist/subWorker.js +136 -137
  99. package/dist/undo/index.d.ts +12 -3
  100. package/dist/undo/timing.d.ts +9 -4
  101. package/package.json +23 -8
  102. package/dist/index--wqREfHK.js +0 -570
  103. package/dist/index-B-tFucpi.mjs +0 -48995
  104. package/dist/index-BOx854fU.mjs +0 -3266
  105. package/dist/index-BpiBM5wZ.js +0 -1
  106. package/dist/index-ByjVgxJm.js +0 -1
  107. package/dist/index-CSVCH-SQ.mjs +0 -789
  108. package/dist/index-CfIWmlMn.js +0 -570
  109. package/dist/index-D6gXcNbF.js +0 -1
  110. package/dist/index-HAZlgByL.mjs +0 -48987
  111. package/dist/index-OZXjSPr1.js +0 -1
  112. package/dist/index-z7deO9Md.mjs +0 -3267
@@ -0,0 +1,570 @@
1
+ "use strict";var uM=Object.defineProperty;var hM=(s,t,e)=>t in s?uM(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var E=(s,t,e)=>hM(s,typeof t!="symbol"?t+"":t,e);const De=require("white-web-sdk"),It=require("clipper-lib"),nm=require("lz-string"),Xu=require("lineclip"),Kl=require("xss"),ve=require("lodash"),dM=require("rbush"),Xl=require("eventemitter2"),fM=require("./markmap-runtime-CsBCTpRs.js"),gM=require("spark-md5"),H=require("react"),$a=require("react-dom"),Gi=require("react-draggable"),pM=require("re-resizable");var Le=(s=>(s.selector="selector",s.clicker="clicker",s.laserPointer="laserPointer",s.pencil="pencil",s.rectangle="rectangle",s.ellipse="ellipse",s.shape="shape",s.eraser="eraser",s.pencilEraser="pencilEraser",s.text="text",s.straight="straight",s.arrow="arrow",s.hand="hand",s.laserPen="laserPen",s))(Le||{}),vr=(s=>(s[s.OffscreenTransfer=1]="OffscreenTransfer",s[s.ImageBitmap=2]="ImageBitmap",s[s.MainThread=3]="MainThread",s))(vr||{}),Ya=(s=>(s[s.WebGL=1]="WebGL",s))(Ya||{}),Ju=(s=>(s[s.SingleChannelTexture=1]="SingleChannelTexture",s))(Ju||{}),_u=(s=>(s[s.TextureSubImage2D=1]="TextureSubImage2D",s))(_u||{}),Zs=(s=>(s[s.RefreshTextRender=1]="RefreshTextRender",s))(Zs||{}),Be=(s=>(s.Normal="Normal",s.Stroke="Stroke",s.Dotted="Dotted",s.LongDotted="LongDotted",s))(Be||{}),Zt=(s=>(s.Triangle="triangle",s.Rhombus="rhombus",s.Pentagram="pentagram",s.SpeechBalloon="speechBalloon",s.Star="star",s.Polygon="polygon",s))(Zt||{});const or={star:"star",polygon:"polygon",speechBalloon:"speechBalloon",bitMapEraser:"bitMapEraser"};var Te=(s=>(s.None="None",s.ShowFloatBar="ShowFloatBar",s.ZIndexFloatBar="ZIndexFloatBar",s.DeleteNode="DeleteNode",s.CopyNode="CopyNode",s.ZIndexNode="ZIndexNode",s.ZIndexBackgroundSVG="ZIndexBackgroundSVG",s.RotateNode="RotateNode",s.SetColorNode="SetColorNode",s.TranslateNode="TranslateNode",s.ScaleNode="ScaleNode",s.OriginalEvent="OriginalEvent",s.CreateScene="CreateScene",s.ActiveCursor="ActiveCursor",s.MoveCursor="MoveCursor",s.CommandEditor="CommandEditor",s.SetEditorData="SetEditorData",s.SetFontStyle="SetFontStyle",s.SetPoint="SetPoint",s.SetLock="SetLock",s.SetShapeOpt="SetShapeOpt",s.CameraChange="CameraChange",s.ActiveMethod="ActiveMethod",s.HidFloatBarBtn="HidFloatBarBtn",s.SelectMethod="SelectMethod",s))(Te||{}),We=(s=>(s.MainEngine="MainEngine",s.Cursor="Cursor",s.BindMainView="BindMainView",s))(We||{}),im=(s=>(s[s.MainView=0]="MainView",s[s.Plugin=1]="Plugin",s[s.Both=2]="Both",s))(im||{}),pa=(s=>(s.longPencil="longPencil",s.longBitmapEraser="longBitmapEraser",s))(pa||{}),q=(s=>(s[s.Pencil=1]="Pencil",s[s.Eraser=2]="Eraser",s[s.PencilEraser=3]="PencilEraser",s[s.BitMapEraser=4]="BitMapEraser",s[s.Selector=5]="Selector",s[s.Clicker=6]="Clicker",s[s.Arrow=7]="Arrow",s[s.Hand=8]="Hand",s[s.LaserPen=9]="LaserPen",s[s.Text=10]="Text",s[s.Straight=11]="Straight",s[s.Rectangle=12]="Rectangle",s[s.Ellipse=13]="Ellipse",s[s.Star=14]="Star",s[s.Triangle=15]="Triangle",s[s.Rhombus=16]="Rhombus",s[s.Polygon=17]="Polygon",s[s.SpeechBalloon=18]="SpeechBalloon",s[s.Image=19]="Image",s[s.BackgroundSVG=20]="BackgroundSVG",s))(q||{}),Re=(s=>(s[s.Local=1]="Local",s[s.Service=2]="Service",s[s.Worker=3]="Worker",s))(Re||{}),de=(s=>(s[s.Pending=0]="Pending",s[s.Start=1]="Start",s[s.Doing=2]="Doing",s[s.Done=3]="Done",s[s.Unwritable=4]="Unwritable",s))(de||{}),le=(s=>(s[s.None=0]="None",s[s.Init=1]="Init",s[s.UpdateCamera=2]="UpdateCamera",s[s.UpdateTools=3]="UpdateTools",s[s.CreateWork=4]="CreateWork",s[s.DrawWork=5]="DrawWork",s[s.FullWork=6]="FullWork",s[s.UpdateNode=7]="UpdateNode",s[s.RemoveNode=8]="RemoveNode",s[s.Clear=9]="Clear",s[s.Select=10]="Select",s[s.Destroy=11]="Destroy",s[s.Snapshot=12]="Snapshot",s[s.BoundingBox=13]="BoundingBox",s[s.Cursor=14]="Cursor",s[s.TextUpdate=15]="TextUpdate",s[s.GetTextActive=16]="GetTextActive",s[s.TasksQueue=17]="TasksQueue",s[s.CursorHover=18]="CursorHover",s[s.CursorBlur=19]="CursorBlur",s[s.Console=20]="Console",s[s.GetImageBitMap=23]="GetImageBitMap",s[s.AuthWriter=24]="AuthWriter",s[s.AuthReader=25]="AuthReader",s[s.AuthClear=26]="AuthClear",s[s.AuthPage=27]="AuthPage",s[s.GetVNodeInfo=28]="GetVNodeInfo",s[s.UpdateDpr=29]="UpdateDpr",s[s.SetFontFace=30]="SetFontFace",s[s.ReportError=31]="ReportError",s[s.ReportLog=32]="ReportLog",s[s.BackgroundSVGUpdate=33]="BackgroundSVGUpdate",s[s.BackgroundSVGDelete=34]="BackgroundSVGDelete",s[s.SelectorTransform=35]="SelectorTransform",s[s.CheckFontFace=36]="CheckFontFace",s[s.RefreshTextRender=37]="RefreshTextRender",s[s.ProbeRenderCapabilities=38]="ProbeRenderCapabilities",s[s.ServiceSyncCommit=39]="ServiceSyncCommit",s[s.CancelFontFace=40]="CancelFontFace",s))(le||{}),_e=(s=>(s[s.None=0]="None",s[s.Bg=1]="Bg",s[s.ServiceFloat=2]="ServiceFloat",s[s.Float=3]="Float",s[s.TopFloat=4]="TopFloat",s))(_e||{}),As=(s=>(s[s.Cursor=1]="Cursor",s[s.TextCreate=2]="TextCreate",s))(As||{}),In=(s=>(s[s.Top=1]="Top",s[s.Bottom=2]="Bottom",s))(In||{}),Ye=(s=>(s[s.none=1]="none",s[s.all=2]="all",s[s.both=3]="both",s[s.proportional=4]="proportional",s))(Ye||{}),wn=(s=>(s[s.inside=0]="inside",s[s.outside=1]="outside",s[s.intersect=2]="intersect",s))(wn||{}),wt=(s=>(s.renderPage="renderPage",s.addPage="addPage",s.deletePage="deletePage",s.addElement="addElement",s.deleteElement="deleteElement",s.clearPage="clearPage",s.clearViewScenePath="clearViewScenePath",s.clearView="clearView",s.syncUndoStack="syncUndoStack",s.syncRedoStack="syncRedoStack",s))(wt||{}),Mr=(s=>(s.setAuth="setAuth",s.setShow="addShow",s.setHide="setHide",s.setClear="setClear",s))(Mr||{}),Sn=(s=>(s.Image="image",s.Iconify="iconify",s))(Sn||{}),ks=(s=>(s.url="url",s.markmap="markmap",s))(ks||{});const mM="cursorhover",eh=20,Fe="mainView",Ga=500,sm=Ga,Jl=500,na=1e3,ma=new WeakMap,Fc=(s,t)=>{try{s.error(t)}catch{}};function om(s,t,e){const r=Symbol("appliance-room-lifecycle-owner"),n=ma.get(s);if(n)return n.owner=r,n.getManager=t,n.logger=e,n.active=!0,()=>zd(s,n,r);const i=s.setWritable,o=s.disconnect,a={},c=d=>{const f=a.transitionQueue.then(d,d);return a.transitionQueue=f.then(()=>{},()=>{}),f},l=async d=>{try{const f=a.getManager();if(d==="set-readonly"){const g=await(f==null?void 0:f.setWritable(!1));(g==null?void 0:g.status)==="failed"&&Fc(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}else{const g=await(f==null?void 0:f.forceDoneLocalWorks(d));(g==null?void 0:g.status)==="failed"&&Fc(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}}catch(f){Fc(a.logger,`[Appliance]: force-Done before ${d} failed: ${(f==null?void 0:f.message)||f}`)}},u=function(d){var y;if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));const f=this,g=d||(y=a.getManager())==null?void 0:y.acquireLocalMutationFence();return c(async()=>{try{return d&&a.disconnectRequested?void 0:(d?a.phase==="readonly"&&(a.phase="active"):(a.phase="preparing-readonly",await l("set-readonly"),a.phase="readonly"),await i.call(f,d))}finally{g==null||g()}})},h=function(d){if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));a.disconnectRequested=!0;const f=this,g=a.getManager(),y=g==null?void 0:g.acquireLocalMutationFence();a.disconnectFenceRelease=y;const T=c(async()=>{var x;try{return a.phase="disconnecting",await l("disconnect"),await o.call(f,d)}finally{a.phase="terminal",a.active=!1,(x=g==null?void 0:g.markRoomLifecycleTerminal)==null||x.call(g)}});return a.disconnectPromise=T,T};return Object.assign(a,{owner:r,getManager:t,logger:e,transitionQueue:Promise.resolve(),disconnectRequested:!1,originalSetWritable:i,originalDisconnect:o,setWritableWrapper:u,disconnectWrapper:h,phase:"active",active:!0}),ma.set(s,a),s.setWritable=u,s.disconnect=h,()=>zd(s,a,r)}function zd(s,t,e){var r;e&&t.owner!==e||(t.active=!1,t.phase="terminal",(r=t.disconnectFenceRelease)==null||r.call(t),t.disconnectFenceRelease=void 0,s.setWritable===t.setWritableWrapper&&(s.setWritable=t.originalSetWritable),s.disconnect===t.disconnectWrapper&&(s.disconnect=t.originalDisconnect),ma.get(s)===t&&ma.delete(s))}const yM={linear:s=>s,easeInQuad:s=>s*s,easeOutQuad:s=>s*(2-s),easeInOutQuad:s=>s<.5?2*s*s:-1+(4-2*s)*s,easeInCubic:s=>s*s*s,easeOutCubic:s=>--s*s*s+1,easeInOutCubic:s=>s<.5?4*s*s*s:(s-1)*(2*s-2)*(2*s-2)+1,easeInQuart:s=>s*s*s*s,easeOutQuart:s=>1- --s*s*s*s,easeInOutQuart:s=>s<.5?8*s*s*s*s:1-8*--s*s*s*s,easeInQuint:s=>s*s*s*s*s,easeOutQuint:s=>1+--s*s*s*s*s,easeInOutQuint:s=>s<.5?16*s*s*s*s*s:1+16*--s*s*s*s*s,easeInSine:s=>1-Math.cos(s*Math.PI/2),easeOutSine:s=>Math.sin(s*Math.PI/2),easeInOutSine:s=>-(Math.cos(Math.PI*s)-1)/2,easeInExpo:s=>s<=0?0:Math.pow(2,10*s-10),easeOutExpo:s=>s>=1?1:1-Math.pow(2,-10*s),easeInOutExpo:s=>s<=0?0:s>=1?1:s<.5?Math.pow(2,20*s-10)/2:(2-Math.pow(2,-20*s+10))/2};class fe{constructor(t=0,e=0,r=1){this.x=t,this.y=e,this.z=r}get XY(){return[this.x,this.y]}setz(t){return this.z=t,this}setXY(t=this.x,e=this.y){return this.x=t,this.y=e,this}set(t=this.x,e=this.y,r=this.z){return this.x=t,this.y=e,this.z=r,this}setTo({x:t=0,y:e=0,z:r=1}){return this.x=t,this.y=e,this.z=r,this}rot(t){if(t===0)return this;const{x:e,y:r}=this,n=Math.sin(t),i=Math.cos(t);return this.x=e*i-r*n,this.y=e*n+r*i,this}rotWith(t,e){if(e===0)return this;const r=this.x-t.x,n=this.y-t.y,i=Math.sin(e),o=Math.cos(e);return this.x=t.x+(r*o-n*i),this.y=t.y+(r*i+n*o),this}clone(){const{x:t,y:e,z:r}=this;return new fe(t,e,r)}sub(t){return this.x-=t.x,this.y-=t.y,this}subXY(t,e){return this.x-=t,this.y-=e,this}subScalar(t){return this.x-=t,this.y-=t,this}add(t){return this.x+=t.x,this.y+=t.y,this}addXY(t,e){return this.x+=t,this.y+=e,this}addScalar(t){return this.x+=t,this.y+=t,this}clamp(t,e){return this.x=Math.max(this.x,t),this.y=Math.max(this.y,t),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(t){return this.x/=t,this.y/=t,this}divV(t){return this.x/=t.x,this.y/=t.y,this}mul(t){return this.x*=t,this.y*=t,this}mulV(t){return this.x*=t.x,this.y*=t.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(t,e){const r=fe.Tan(t,this);return this.add(r.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(t){return this.x=this.y*t.z-this.z*t.y,this.y=this.z*t.x-this.x*t.z,this}dpr(t){return fe.Dpr(this,t)}cpr(t){return fe.Cpr(this,t)}len2(){return fe.Len2(this)}len(){return fe.Len(this)}pry(t){return fe.Pry(this,t)}per(){const{x:t,y:e}=this;return this.x=e,this.y=-t,this}uni(){return fe.Uni(this)}tan(t){return fe.Tan(this,t)}dist(t){return fe.Dist(this,t)}distanceToLineSegment(t,e){return fe.DistanceToLineSegment(t,e,this)}slope(t){return fe.Slope(this,t)}snapToGrid(t){return this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this}angle(t){return fe.Angle(this,t)}toAngle(){return fe.ToAngle(this)}lrp(t,e){return this.x=this.x+(t.x-this.x)*e,this.y=this.y+(t.y-this.y)*e,this}equals(t,e){return fe.Equals(this,t,e)}equalsXY(t,e){return fe.EqualsXY(this,t,e)}norm(){const t=this.len();return this.x=t===0?0:this.x/t,this.y=t===0?0:this.y/t,this}toFixed(){return fe.ToFixed(this)}toString(){return fe.ToString(fe.ToFixed(this))}toJson(){return fe.ToJson(this)}toArray(){return fe.ToArray(this)}static Add(t,e){return new fe(t.x+e.x,t.y+e.y)}static AddXY(t,e,r){return new fe(t.x+e,t.y+r)}static Sub(t,e){return new fe(t.x-e.x,t.y-e.y)}static SubXY(t,e,r){return new fe(t.x-e,t.y-r)}static AddScalar(t,e){return new fe(t.x+e,t.y+e)}static SubScalar(t,e){return new fe(t.x-e,t.y-e)}static Div(t,e){return new fe(t.x/e,t.y/e)}static Mul(t,e){return new fe(t.x*e,t.y*e)}static DivV(t,e){return new fe(t.x/e.x,t.y/e.y)}static MulV(t,e){return new fe(t.x*e.x,t.y*e.y)}static Neg(t){return new fe(-t.x,-t.y)}static Per(t){return new fe(t.y,-t.x)}static Dist2(t,e){return fe.Sub(t,e).len2()}static Abs(t){return new fe(Math.abs(t.x),Math.abs(t.y))}static Dist(t,e){return Math.hypot(t.y-e.y,t.x-e.x)}static Dpr(t,e){return t.x*e.x+t.y*e.y}static Cross(t,e){return new fe(t.y*e.z-t.z*e.y,t.z*e.x-t.x*e.z)}static Cpr(t,e){return t.x*e.y-e.x*t.y}static Len2(t){return t.x*t.x+t.y*t.y}static Len(t){return Math.hypot(t.x,t.y)}static Pry(t,e){return fe.Dpr(t,e)/fe.Len(e)}static Uni(t){return fe.Div(t,fe.Len(t))}static Tan(t,e){return fe.Uni(fe.Sub(t,e))}static Min(t,e){return new fe(Math.min(t.x,e.x),Math.min(t.y,e.y))}static Max(t,e){return new fe(Math.max(t.x,e.x),Math.max(t.y,e.y))}static From(t){return new fe().add(t)}static FromArray(t){return new fe(t[0],t[1])}static Rot(t,e=0){const r=Math.sin(e),n=Math.cos(e);return new fe(t.x*n-t.y*r,t.x*r+t.y*n)}static RotWith(t,e,r){const n=t.x-e.x,i=t.y-e.y,o=Math.sin(r),a=Math.cos(r);return new fe(e.x+(n*a-i*o),e.y+(n*o+i*a))}static NearestPointOnLineThroughPoint(t,e,r){return fe.Mul(e,fe.Sub(r,t).pry(e)).add(t)}static NearestPointOnLineSegment(t,e,r,n=!0){const i=fe.Tan(e,t),o=fe.Add(t,fe.Mul(i,fe.Sub(r,t).pry(i)));if(n){if(o.x<Math.min(t.x,e.x))return fe.Cast(t.x<e.x?t:e);if(o.x>Math.max(t.x,e.x))return fe.Cast(t.x>e.x?t:e);if(o.y<Math.min(t.y,e.y))return fe.Cast(t.y<e.y?t:e);if(o.y>Math.max(t.y,e.y))return fe.Cast(t.y>e.y?t:e)}return o}static DistanceToLineThroughPoint(t,e,r){return fe.Dist(r,fe.NearestPointOnLineThroughPoint(t,e,r))}static DistanceToLineSegment(t,e,r,n=!0){return fe.Dist(r,fe.NearestPointOnLineSegment(t,e,r,n))}static Snap(t,e=1){return new fe(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}static Cast(t){return t instanceof fe?t:fe.From(t)}static Slope(t,e){return t.x===e.y?NaN:(t.y-e.y)/(t.x-e.x)}static Angle(t,e){return Math.atan2(e.y-t.y,e.x-t.x)}static Lrp(t,e,r){return fe.Sub(e,t).mul(r).add(t)}static Med(t,e){return new fe((t.x+e.x)/2,(t.y+e.y)/2)}static Equals(t,e,r=1e-4){return Math.abs(t.x-e.x)<r&&Math.abs(t.y-e.y)<r}static EqualsXY(t,e,r){return t.x===e&&t.y===r}static EqualsXYZ(t,e,r=1e-4){return fe.Equals(t,e,r)&&Math.abs((t.z||0)-(e.z||0))<r}static Clockwise(t,e,r){return(r.x-t.x)*(e.y-t.y)-(e.x-t.x)*(r.y-t.y)<0}static Rescale(t,e){const r=fe.Len(t);return new fe(e*t.x/r,e*t.y/r)}static ScaleWithOrigin(t,e,r){return fe.Sub(t,r).mul(e).add(r)}static ScaleWOrigin(t,e,r){return fe.Sub(t,r).mulV(e).add(r)}static ToFixed(t,e=2){return new fe(+t.x.toFixed(e),+t.y.toFixed(e),+t.z.toFixed(e))}static Nudge(t,e,r){return fe.Add(t,fe.Tan(e,t).mul(r))}static ToString(t){return`${t.x}, ${t.y}`}static ToAngle(t){let e=Math.atan2(t.y,t.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(t,e=1){return new fe(Math.cos(t)*e,Math.sin(t)*e)}static ToArray(t){return[t.x,t.y,t.z]}static ToJson(t){const{x:e,y:r,z:n}=t;return{x:e,y:r,z:n}}static Average(t){const e=t.length,r=new fe(0,0);for(let n=0;n<e;n++)r.add(t[n]);return r.div(e)}static Clamp(t,e,r){return r===void 0?new fe(Math.min(Math.max(t.x,e)),Math.min(Math.max(t.y,e))):new fe(Math.min(Math.max(t.x,e),r),Math.min(Math.max(t.y,e),r))}static PointsBetween(t,e,r=6){const n=[];for(let i=0;i<r;i++){const o=yM.easeInQuad(i/(r-1)),a=fe.Lrp(t,e,o);a.z=Math.min(1,.5+Math.abs(.5-vM(o))*.65),n.push(a)}return n}static SnapToGrid(t,e=8){return new fe(Math.round(t.x/e)*e,Math.round(t.y/e)*e)}}const vM=s=>s<.5?2*s*s:-1+(4-2*s)*s;class Pe extends fe{constructor(t=0,e=0,r=0,n={x:0,y:0},i=0,o=0){super(t,e,r),this.x=t,this.y=e,this.z=r,this.v=n,this.t=i,this.a=o}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(t){this.a=t}setT(t){this.t=t}setv(t){return this.v={x:t.x,y:t.y},this}set(t=this.x,e=this.y,r=this.z,n=this.v,i=this.t,o=this.a){return this.x=t,this.y=e,this.z=r,this.v=n,this.t=i,this.a=o,this}clone(){const{x:t,y:e,z:r,v:n,t:i,a:o}=this,a={x:n.x,y:n.y};return new Pe(t,e,r,a,i,o)}distance(t){return Pe.GetDistance(this,t)}isNear(t,e){return Pe.IsNear(this,t,e)}getAngleByPoints(t,e){return Pe.GetAngleByPoints(t,this,e)}static Sub(t,e){return new Pe(t.x-e.x,t.y-e.y)}static Add(t,e){return new Pe(t.x+e.x,t.y+e.y)}static GetDistance(t,e){return Pe.Len(t.clone().sub(e))}static GetAngleByPoints(t,e,r){const n=e.x-t.x,i=r.x-e.x,o=e.y-t.y,a=r.y-e.y;let c=0;const l=Math.sqrt(n*n+o*o),u=Math.sqrt(i*i+a*a);if(l&&u){const h=n*i+o*a;c=Math.acos(h/(l*u)),c=c/Math.PI*180;let d=n*a-o*i;d=d>0?1:-1,c=180+d*c}return c}static IsNear(t,e,r){return Pe.Len(t.clone().sub(e))<r}static RotWith(t,e,r,n=2){const i=t.x-e.x,o=t.y-e.y,a=Math.sin(r),c=Math.cos(r),l=Math.pow(10,n),u=Math.floor((e.x+(i*c-o*a))*l)/l,h=Math.floor((e.y+(i*a+o*c))*l)/l;return new Pe(u,h)}static GetDotStroke(t,e,r=16){const n=new fe(1,1),i=Math.PI+.001,o=Pe.Add(t,Pe.Sub(t,n).uni().per().mul(-e)),a=[];for(let c=1/r,l=c;l<=1;l+=c)a.push(Pe.RotWith(o,t,i*2*l));return a}static GetSemicircleStroke(t,e,r=-1,n=8){const i=r*(Math.PI+.001),o=[];for(let a=1/n,c=a;c<=1;c+=a)o.push(Pe.RotWith(e,t,i*c));return o}}var Mi=1e-6,Bs=typeof Float32Array<"u"?Float32Array:Array;function Ze(s){Bs=s}function MM(){var s=new Bs(6);return Bs!=Float32Array&&(s[1]=0,s[2]=0,s[4]=0,s[5]=0),s[0]=1,s[3]=1,s}function wM(s){var t=new Bs(6);return t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3],t[4]=s[4],t[5]=s[5],t}function SM(s,t){return s[0]=t[0],s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=t[4],s[5]=t[5],s}function TM(s){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=0,s[5]=0,s}function ei(s,t,e,r,n,i){var o=new Bs(6);return o[0]=s,o[1]=t,o[2]=e,o[3]=r,o[4]=n,o[5]=i,o}function CM(s,t,e,r,n,i,o){return s[0]=t,s[1]=e,s[2]=r,s[3]=n,s[4]=i,s[5]=o,s}function ya(s,t){var e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],a=t[5],c=e*i-r*n;return c?(c=1/c,s[0]=i*c,s[1]=-r*c,s[2]=-n*c,s[3]=e*c,s[4]=(n*a-i*o)*c,s[5]=(r*o-e*a)*c,s):null}function IM(s){return s[0]*s[3]-s[1]*s[2]}function Lr(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1],h=e[2],d=e[3],f=e[4],g=e[5];return s[0]=r*l+i*u,s[1]=n*l+o*u,s[2]=r*h+i*d,s[3]=n*h+o*d,s[4]=r*f+i*g+a,s[5]=n*f+o*g+c,s}function am(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=Math.sin(e),u=Math.cos(e);return s[0]=r*u+i*l,s[1]=n*u+o*l,s[2]=r*-l+i*u,s[3]=n*-l+o*u,s[4]=a,s[5]=c,s}function bM(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1];return s[0]=r*l,s[1]=n*l,s[2]=i*u,s[3]=o*u,s[4]=a,s[5]=c,s}function _l(s,t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],c=t[5],l=e[0],u=e[1];return s[0]=r,s[1]=n,s[2]=i,s[3]=o,s[4]=r*l+i*u+a,s[5]=n*l+o*u+c,s}function EM(s,t){var e=Math.sin(t),r=Math.cos(t);return s[0]=r,s[1]=e,s[2]=-e,s[3]=r,s[4]=0,s[5]=0,s}function xM(s,t){return s[0]=t[0],s[1]=0,s[2]=0,s[3]=t[1],s[4]=0,s[5]=0,s}function RM(s,t){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=t[0],s[5]=t[1],s}function AM(s){return"mat2d("+s[0]+", "+s[1]+", "+s[2]+", "+s[3]+", "+s[4]+", "+s[5]+")"}function kM(s){return Math.sqrt(s[0]*s[0]+s[1]*s[1]+s[2]*s[2]+s[3]*s[3]+s[4]*s[4]+s[5]*s[5]+1)}function PM(s,t,e){return s[0]=t[0]+e[0],s[1]=t[1]+e[1],s[2]=t[2]+e[2],s[3]=t[3]+e[3],s[4]=t[4]+e[4],s[5]=t[5]+e[5],s}function cm(s,t,e){return s[0]=t[0]-e[0],s[1]=t[1]-e[1],s[2]=t[2]-e[2],s[3]=t[3]-e[3],s[4]=t[4]-e[4],s[5]=t[5]-e[5],s}function DM(s,t,e){return s[0]=t[0]*e,s[1]=t[1]*e,s[2]=t[2]*e,s[3]=t[3]*e,s[4]=t[4]*e,s[5]=t[5]*e,s}function LM(s,t,e,r){return s[0]=t[0]+e[0]*r,s[1]=t[1]+e[1]*r,s[2]=t[2]+e[2]*r,s[3]=t[3]+e[3]*r,s[4]=t[4]+e[4]*r,s[5]=t[5]+e[5]*r,s}function NM(s,t){return s[0]===t[0]&&s[1]===t[1]&&s[2]===t[2]&&s[3]===t[3]&&s[4]===t[4]&&s[5]===t[5]}function OM(s,t){var e=s[0],r=s[1],n=s[2],i=s[3],o=s[4],a=s[5],c=t[0],l=t[1],u=t[2],h=t[3],d=t[4],f=t[5];return Math.abs(e-c)<=Mi*Math.max(1,Math.abs(e),Math.abs(c))&&Math.abs(r-l)<=Mi*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(n-u)<=Mi*Math.max(1,Math.abs(n),Math.abs(u))&&Math.abs(i-h)<=Mi*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-d)<=Mi*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(a-f)<=Mi*Math.max(1,Math.abs(a),Math.abs(f))}var zM=Lr,BM=cm;const lm=Object.freeze(Object.defineProperty({__proto__:null,add:PM,clone:wM,copy:SM,create:MM,determinant:IM,equals:OM,exactEquals:NM,frob:kM,fromRotation:EM,fromScaling:xM,fromTranslation:RM,fromValues:ei,identity:TM,invert:ya,mul:zM,multiply:Lr,multiplyScalar:DM,multiplyScalarAndAdd:LM,rotate:am,scale:bM,set:CM,str:AM,sub:BM,subtract:cm,translate:_l},Symbol.toStringTag,{value:"Module"}));var St=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function an(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var um={exports:{}};(function(s,t){(function(r,n){s.exports=n()})(St,function(){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var o=r[i]={i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(i,o,a){n.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:a})},n.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,o){if(o&1&&(i=n(i)),o&8||o&4&&typeof i=="object"&&i&&i.__esModule)return i;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:i}),o&2&&typeof i!="string")for(var c in i)n.d(a,c,(function(l){return i[l]}).bind(null,c));return a},n.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(o,"a",o),o},n.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},n.p="/js/",n(n.s=0)}([function(e,r,n){n.r(r);var i=n(12);n.d(r,"Renderer",function(){return i.default});var o=n(56);n.d(r,"Figure2D",function(){return o.default});var a=n(73);n.d(r,"Mesh2D",function(){return a.default});var c=n(45);n.d(r,"MeshCloud",function(){return c.default});var l=n(39);n.d(r,"parseFont",function(){return l.default});var u=n(47);n.d(r,"parseColor",function(){return u.default});var h=n(37);n.d(r,"ENV",function(){return h.default}),n(1).glMatrix.setMatrixArrayType(Array)},function(e,r,n){n.r(r);var i=n(2);n.d(r,"glMatrix",function(){return i});var o=n(3);n.d(r,"mat2",function(){return o});var a=n(4);n.d(r,"mat2d",function(){return a});var c=n(5);n.d(r,"mat3",function(){return c});var l=n(6);n.d(r,"mat4",function(){return l});var u=n(7);n.d(r,"quat",function(){return u});var h=n(10);n.d(r,"quat2",function(){return h});var d=n(11);n.d(r,"vec2",function(){return d});var f=n(8);n.d(r,"vec3",function(){return f});var g=n(9);n.d(r,"vec4",function(){return g})},function(e,r,n){n.r(r),n.d(r,"EPSILON",function(){return i}),n.d(r,"ARRAY_TYPE",function(){return o}),n.d(r,"RANDOM",function(){return a}),n.d(r,"setMatrixArrayType",function(){return c}),n.d(r,"toRadian",function(){return u}),n.d(r,"equals",function(){return h});var i=1e-6,o=typeof Float32Array<"u"?Float32Array:Array,a=Math.random;function c(d){o=d}var l=Math.PI/180;function u(d){return d*l}function h(d,f){return Math.abs(d-f)<=i*Math.max(1,Math.abs(d),Math.abs(f))}Math.hypot||(Math.hypot=function(){for(var d=0,f=arguments.length;f--;)d+=arguments[f]*arguments[f];return Math.sqrt(d)})},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"identity",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"transpose",function(){return d}),n.d(r,"invert",function(){return f}),n.d(r,"adjoint",function(){return g}),n.d(r,"determinant",function(){return y}),n.d(r,"multiply",function(){return T}),n.d(r,"rotate",function(){return x}),n.d(r,"scale",function(){return C}),n.d(r,"fromRotation",function(){return L}),n.d(r,"fromScaling",function(){return S}),n.d(r,"str",function(){return p}),n.d(r,"frob",function(){return m}),n.d(r,"LDU",function(){return M}),n.d(r,"add",function(){return v}),n.d(r,"subtract",function(){return R}),n.d(r,"exactEquals",function(){return b}),n.d(r,"equals",function(){return P}),n.d(r,"multiplyScalar",function(){return D}),n.d(r,"multiplyScalarAndAdd",function(){return z}),n.d(r,"mul",function(){return j}),n.d(r,"sub",function(){return k});var i=n(2);function o(){var A=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(A[1]=0,A[2]=0),A[0]=1,A[3]=1,A}function a(A){var N=new i.ARRAY_TYPE(4);return N[0]=A[0],N[1]=A[1],N[2]=A[2],N[3]=A[3],N}function c(A,N){return A[0]=N[0],A[1]=N[1],A[2]=N[2],A[3]=N[3],A}function l(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=1,A}function u(A,N,W,Y){var Q=new i.ARRAY_TYPE(4);return Q[0]=A,Q[1]=N,Q[2]=W,Q[3]=Y,Q}function h(A,N,W,Y,Q){return A[0]=N,A[1]=W,A[2]=Y,A[3]=Q,A}function d(A,N){if(A===N){var W=N[1];A[1]=N[2],A[2]=W}else A[0]=N[0],A[1]=N[2],A[2]=N[1],A[3]=N[3];return A}function f(A,N){var W=N[0],Y=N[1],Q=N[2],ie=N[3],O=W*ie-Q*Y;return O?(O=1/O,A[0]=ie*O,A[1]=-Y*O,A[2]=-Q*O,A[3]=W*O,A):null}function g(A,N){var W=N[0];return A[0]=N[3],A[1]=-N[1],A[2]=-N[2],A[3]=W,A}function y(A){return A[0]*A[3]-A[2]*A[1]}function T(A,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=W[0],Z=W[1],$=W[2],ee=W[3];return A[0]=Y*V+ie*Z,A[1]=Q*V+O*Z,A[2]=Y*$+ie*ee,A[3]=Q*$+O*ee,A}function x(A,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=Math.sin(W),Z=Math.cos(W);return A[0]=Y*Z+ie*V,A[1]=Q*Z+O*V,A[2]=Y*-V+ie*Z,A[3]=Q*-V+O*Z,A}function C(A,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=W[0],Z=W[1];return A[0]=Y*V,A[1]=Q*V,A[2]=ie*Z,A[3]=O*Z,A}function L(A,N){var W=Math.sin(N),Y=Math.cos(N);return A[0]=Y,A[1]=W,A[2]=-W,A[3]=Y,A}function S(A,N){return A[0]=N[0],A[1]=0,A[2]=0,A[3]=N[1],A}function p(A){return"mat2("+A[0]+", "+A[1]+", "+A[2]+", "+A[3]+")"}function m(A){return Math.hypot(A[0],A[1],A[2],A[3])}function M(A,N,W,Y){return A[2]=Y[2]/Y[0],W[0]=Y[0],W[1]=Y[1],W[3]=Y[3]-A[2]*W[1],[A,N,W]}function v(A,N,W){return A[0]=N[0]+W[0],A[1]=N[1]+W[1],A[2]=N[2]+W[2],A[3]=N[3]+W[3],A}function R(A,N,W){return A[0]=N[0]-W[0],A[1]=N[1]-W[1],A[2]=N[2]-W[2],A[3]=N[3]-W[3],A}function b(A,N){return A[0]===N[0]&&A[1]===N[1]&&A[2]===N[2]&&A[3]===N[3]}function P(A,N){var W=A[0],Y=A[1],Q=A[2],ie=A[3],O=N[0],V=N[1],Z=N[2],$=N[3];return Math.abs(W-O)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(O))&&Math.abs(Y-V)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs(V))&&Math.abs(Q-Z)<=i.EPSILON*Math.max(1,Math.abs(Q),Math.abs(Z))&&Math.abs(ie-$)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs($))}function D(A,N,W){return A[0]=N[0]*W,A[1]=N[1]*W,A[2]=N[2]*W,A[3]=N[3]*W,A}function z(A,N,W,Y){return A[0]=N[0]+W[0]*Y,A[1]=N[1]+W[1]*Y,A[2]=N[2]+W[2]*Y,A[3]=N[3]+W[3]*Y,A}var j=T,k=R},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"identity",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"invert",function(){return d}),n.d(r,"determinant",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"rotate",function(){return y}),n.d(r,"scale",function(){return T}),n.d(r,"translate",function(){return x}),n.d(r,"fromRotation",function(){return C}),n.d(r,"fromScaling",function(){return L}),n.d(r,"fromTranslation",function(){return S}),n.d(r,"str",function(){return p}),n.d(r,"frob",function(){return m}),n.d(r,"add",function(){return M}),n.d(r,"subtract",function(){return v}),n.d(r,"multiplyScalar",function(){return R}),n.d(r,"multiplyScalarAndAdd",function(){return b}),n.d(r,"exactEquals",function(){return P}),n.d(r,"equals",function(){return D}),n.d(r,"mul",function(){return z}),n.d(r,"sub",function(){return j});var i=n(2);function o(){var k=new i.ARRAY_TYPE(6);return i.ARRAY_TYPE!=Float32Array&&(k[1]=0,k[2]=0,k[4]=0,k[5]=0),k[0]=1,k[3]=1,k}function a(k){var A=new i.ARRAY_TYPE(6);return A[0]=k[0],A[1]=k[1],A[2]=k[2],A[3]=k[3],A[4]=k[4],A[5]=k[5],A}function c(k,A){return k[0]=A[0],k[1]=A[1],k[2]=A[2],k[3]=A[3],k[4]=A[4],k[5]=A[5],k}function l(k){return k[0]=1,k[1]=0,k[2]=0,k[3]=1,k[4]=0,k[5]=0,k}function u(k,A,N,W,Y,Q){var ie=new i.ARRAY_TYPE(6);return ie[0]=k,ie[1]=A,ie[2]=N,ie[3]=W,ie[4]=Y,ie[5]=Q,ie}function h(k,A,N,W,Y,Q,ie){return k[0]=A,k[1]=N,k[2]=W,k[3]=Y,k[4]=Q,k[5]=ie,k}function d(k,A){var N=A[0],W=A[1],Y=A[2],Q=A[3],ie=A[4],O=A[5],V=N*Q-W*Y;return V?(V=1/V,k[0]=Q*V,k[1]=-W*V,k[2]=-Y*V,k[3]=N*V,k[4]=(Y*O-Q*ie)*V,k[5]=(W*ie-N*O)*V,k):null}function f(k){return k[0]*k[3]-k[1]*k[2]}function g(k,A,N){var W=A[0],Y=A[1],Q=A[2],ie=A[3],O=A[4],V=A[5],Z=N[0],$=N[1],ee=N[2],se=N[3],ce=N[4],me=N[5];return k[0]=W*Z+Q*$,k[1]=Y*Z+ie*$,k[2]=W*ee+Q*se,k[3]=Y*ee+ie*se,k[4]=W*ce+Q*me+O,k[5]=Y*ce+ie*me+V,k}function y(k,A,N){var W=A[0],Y=A[1],Q=A[2],ie=A[3],O=A[4],V=A[5],Z=Math.sin(N),$=Math.cos(N);return k[0]=W*$+Q*Z,k[1]=Y*$+ie*Z,k[2]=W*-Z+Q*$,k[3]=Y*-Z+ie*$,k[4]=O,k[5]=V,k}function T(k,A,N){var W=A[0],Y=A[1],Q=A[2],ie=A[3],O=A[4],V=A[5],Z=N[0],$=N[1];return k[0]=W*Z,k[1]=Y*Z,k[2]=Q*$,k[3]=ie*$,k[4]=O,k[5]=V,k}function x(k,A,N){var W=A[0],Y=A[1],Q=A[2],ie=A[3],O=A[4],V=A[5],Z=N[0],$=N[1];return k[0]=W,k[1]=Y,k[2]=Q,k[3]=ie,k[4]=W*Z+Q*$+O,k[5]=Y*Z+ie*$+V,k}function C(k,A){var N=Math.sin(A),W=Math.cos(A);return k[0]=W,k[1]=N,k[2]=-N,k[3]=W,k[4]=0,k[5]=0,k}function L(k,A){return k[0]=A[0],k[1]=0,k[2]=0,k[3]=A[1],k[4]=0,k[5]=0,k}function S(k,A){return k[0]=1,k[1]=0,k[2]=0,k[3]=1,k[4]=A[0],k[5]=A[1],k}function p(k){return"mat2d("+k[0]+", "+k[1]+", "+k[2]+", "+k[3]+", "+k[4]+", "+k[5]+")"}function m(k){return Math.hypot(k[0],k[1],k[2],k[3],k[4],k[5],1)}function M(k,A,N){return k[0]=A[0]+N[0],k[1]=A[1]+N[1],k[2]=A[2]+N[2],k[3]=A[3]+N[3],k[4]=A[4]+N[4],k[5]=A[5]+N[5],k}function v(k,A,N){return k[0]=A[0]-N[0],k[1]=A[1]-N[1],k[2]=A[2]-N[2],k[3]=A[3]-N[3],k[4]=A[4]-N[4],k[5]=A[5]-N[5],k}function R(k,A,N){return k[0]=A[0]*N,k[1]=A[1]*N,k[2]=A[2]*N,k[3]=A[3]*N,k[4]=A[4]*N,k[5]=A[5]*N,k}function b(k,A,N,W){return k[0]=A[0]+N[0]*W,k[1]=A[1]+N[1]*W,k[2]=A[2]+N[2]*W,k[3]=A[3]+N[3]*W,k[4]=A[4]+N[4]*W,k[5]=A[5]+N[5]*W,k}function P(k,A){return k[0]===A[0]&&k[1]===A[1]&&k[2]===A[2]&&k[3]===A[3]&&k[4]===A[4]&&k[5]===A[5]}function D(k,A){var N=k[0],W=k[1],Y=k[2],Q=k[3],ie=k[4],O=k[5],V=A[0],Z=A[1],$=A[2],ee=A[3],se=A[4],ce=A[5];return Math.abs(N-V)<=i.EPSILON*Math.max(1,Math.abs(N),Math.abs(V))&&Math.abs(W-Z)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(Z))&&Math.abs(Y-$)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs($))&&Math.abs(Q-ee)<=i.EPSILON*Math.max(1,Math.abs(Q),Math.abs(ee))&&Math.abs(ie-se)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs(se))&&Math.abs(O-ce)<=i.EPSILON*Math.max(1,Math.abs(O),Math.abs(ce))}var z=g,j=v},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"fromMat4",function(){return a}),n.d(r,"clone",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"identity",function(){return d}),n.d(r,"transpose",function(){return f}),n.d(r,"invert",function(){return g}),n.d(r,"adjoint",function(){return y}),n.d(r,"determinant",function(){return T}),n.d(r,"multiply",function(){return x}),n.d(r,"translate",function(){return C}),n.d(r,"rotate",function(){return L}),n.d(r,"scale",function(){return S}),n.d(r,"fromTranslation",function(){return p}),n.d(r,"fromRotation",function(){return m}),n.d(r,"fromScaling",function(){return M}),n.d(r,"fromMat2d",function(){return v}),n.d(r,"fromQuat",function(){return R}),n.d(r,"normalFromMat4",function(){return b}),n.d(r,"projection",function(){return P}),n.d(r,"str",function(){return D}),n.d(r,"frob",function(){return z}),n.d(r,"add",function(){return j}),n.d(r,"subtract",function(){return k}),n.d(r,"multiplyScalar",function(){return A}),n.d(r,"multiplyScalarAndAdd",function(){return N}),n.d(r,"exactEquals",function(){return W}),n.d(r,"equals",function(){return Y}),n.d(r,"mul",function(){return Q}),n.d(r,"sub",function(){return ie});var i=n(2);function o(){var O=new i.ARRAY_TYPE(9);return i.ARRAY_TYPE!=Float32Array&&(O[1]=0,O[2]=0,O[3]=0,O[5]=0,O[6]=0,O[7]=0),O[0]=1,O[4]=1,O[8]=1,O}function a(O,V){return O[0]=V[0],O[1]=V[1],O[2]=V[2],O[3]=V[4],O[4]=V[5],O[5]=V[6],O[6]=V[8],O[7]=V[9],O[8]=V[10],O}function c(O){var V=new i.ARRAY_TYPE(9);return V[0]=O[0],V[1]=O[1],V[2]=O[2],V[3]=O[3],V[4]=O[4],V[5]=O[5],V[6]=O[6],V[7]=O[7],V[8]=O[8],V}function l(O,V){return O[0]=V[0],O[1]=V[1],O[2]=V[2],O[3]=V[3],O[4]=V[4],O[5]=V[5],O[6]=V[6],O[7]=V[7],O[8]=V[8],O}function u(O,V,Z,$,ee,se,ce,me,pe){var B=new i.ARRAY_TYPE(9);return B[0]=O,B[1]=V,B[2]=Z,B[3]=$,B[4]=ee,B[5]=se,B[6]=ce,B[7]=me,B[8]=pe,B}function h(O,V,Z,$,ee,se,ce,me,pe,B){return O[0]=V,O[1]=Z,O[2]=$,O[3]=ee,O[4]=se,O[5]=ce,O[6]=me,O[7]=pe,O[8]=B,O}function d(O){return O[0]=1,O[1]=0,O[2]=0,O[3]=0,O[4]=1,O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function f(O,V){if(O===V){var Z=V[1],$=V[2],ee=V[5];O[1]=V[3],O[2]=V[6],O[3]=Z,O[5]=V[7],O[6]=$,O[7]=ee}else O[0]=V[0],O[1]=V[3],O[2]=V[6],O[3]=V[1],O[4]=V[4],O[5]=V[7],O[6]=V[2],O[7]=V[5],O[8]=V[8];return O}function g(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8],J=F*ce-me*B,oe=-F*se+me*pe,K=B*se-ce*pe,te=Z*J+$*oe+ee*K;return te?(te=1/te,O[0]=J*te,O[1]=(-F*$+ee*B)*te,O[2]=(me*$-ee*ce)*te,O[3]=oe*te,O[4]=(F*Z-ee*pe)*te,O[5]=(-me*Z+ee*se)*te,O[6]=K*te,O[7]=(-B*Z+$*pe)*te,O[8]=(ce*Z-$*se)*te,O):null}function y(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8];return O[0]=ce*F-me*B,O[1]=ee*B-$*F,O[2]=$*me-ee*ce,O[3]=me*pe-se*F,O[4]=Z*F-ee*pe,O[5]=ee*se-Z*me,O[6]=se*B-ce*pe,O[7]=$*pe-Z*B,O[8]=Z*ce-$*se,O}function T(O){var V=O[0],Z=O[1],$=O[2],ee=O[3],se=O[4],ce=O[5],me=O[6],pe=O[7],B=O[8];return V*(B*se-ce*pe)+Z*(-B*ee+ce*me)+$*(pe*ee-se*me)}function x(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Z[0],K=Z[1],te=Z[2],w=Z[3],I=Z[4],U=Z[5],G=Z[6],_=Z[7],re=Z[8];return O[0]=oe*$+K*ce+te*B,O[1]=oe*ee+K*me+te*F,O[2]=oe*se+K*pe+te*J,O[3]=w*$+I*ce+U*B,O[4]=w*ee+I*me+U*F,O[5]=w*se+I*pe+U*J,O[6]=G*$+_*ce+re*B,O[7]=G*ee+_*me+re*F,O[8]=G*se+_*pe+re*J,O}function C(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Z[0],K=Z[1];return O[0]=$,O[1]=ee,O[2]=se,O[3]=ce,O[4]=me,O[5]=pe,O[6]=oe*$+K*ce+B,O[7]=oe*ee+K*me+F,O[8]=oe*se+K*pe+J,O}function L(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Math.sin(Z),K=Math.cos(Z);return O[0]=K*$+oe*ce,O[1]=K*ee+oe*me,O[2]=K*se+oe*pe,O[3]=K*ce-oe*$,O[4]=K*me-oe*ee,O[5]=K*pe-oe*se,O[6]=B,O[7]=F,O[8]=J,O}function S(O,V,Z){var $=Z[0],ee=Z[1];return O[0]=$*V[0],O[1]=$*V[1],O[2]=$*V[2],O[3]=ee*V[3],O[4]=ee*V[4],O[5]=ee*V[5],O[6]=V[6],O[7]=V[7],O[8]=V[8],O}function p(O,V){return O[0]=1,O[1]=0,O[2]=0,O[3]=0,O[4]=1,O[5]=0,O[6]=V[0],O[7]=V[1],O[8]=1,O}function m(O,V){var Z=Math.sin(V),$=Math.cos(V);return O[0]=$,O[1]=Z,O[2]=0,O[3]=-Z,O[4]=$,O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function M(O,V){return O[0]=V[0],O[1]=0,O[2]=0,O[3]=0,O[4]=V[1],O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function v(O,V){return O[0]=V[0],O[1]=V[1],O[2]=0,O[3]=V[2],O[4]=V[3],O[5]=0,O[6]=V[4],O[7]=V[5],O[8]=1,O}function R(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=Z+Z,me=$+$,pe=ee+ee,B=Z*ce,F=$*ce,J=$*me,oe=ee*ce,K=ee*me,te=ee*pe,w=se*ce,I=se*me,U=se*pe;return O[0]=1-J-te,O[3]=F-U,O[6]=oe+I,O[1]=F+U,O[4]=1-B-te,O[7]=K-w,O[2]=oe-I,O[5]=K+w,O[8]=1-B-J,O}function b(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8],J=V[9],oe=V[10],K=V[11],te=V[12],w=V[13],I=V[14],U=V[15],G=Z*me-$*ce,_=Z*pe-ee*ce,re=Z*B-se*ce,ne=$*pe-ee*me,X=$*B-se*me,ae=ee*B-se*pe,ue=F*w-J*te,he=F*I-oe*te,ge=F*U-K*te,Me=J*I-oe*w,we=J*U-K*w,be=oe*U-K*I,Ie=G*be-_*we+re*Me+ne*ge-X*he+ae*ue;return Ie?(Ie=1/Ie,O[0]=(me*be-pe*we+B*Me)*Ie,O[1]=(pe*ge-ce*be-B*he)*Ie,O[2]=(ce*we-me*ge+B*ue)*Ie,O[3]=(ee*we-$*be-se*Me)*Ie,O[4]=(Z*be-ee*ge+se*he)*Ie,O[5]=($*ge-Z*we-se*ue)*Ie,O[6]=(w*ae-I*X+U*ne)*Ie,O[7]=(I*re-te*ae-U*_)*Ie,O[8]=(te*X-w*re+U*G)*Ie,O):null}function P(O,V,Z){return O[0]=2/V,O[1]=0,O[2]=0,O[3]=0,O[4]=-2/Z,O[5]=0,O[6]=-1,O[7]=1,O[8]=1,O}function D(O){return"mat3("+O[0]+", "+O[1]+", "+O[2]+", "+O[3]+", "+O[4]+", "+O[5]+", "+O[6]+", "+O[7]+", "+O[8]+")"}function z(O){return Math.hypot(O[0],O[1],O[2],O[3],O[4],O[5],O[6],O[7],O[8])}function j(O,V,Z){return O[0]=V[0]+Z[0],O[1]=V[1]+Z[1],O[2]=V[2]+Z[2],O[3]=V[3]+Z[3],O[4]=V[4]+Z[4],O[5]=V[5]+Z[5],O[6]=V[6]+Z[6],O[7]=V[7]+Z[7],O[8]=V[8]+Z[8],O}function k(O,V,Z){return O[0]=V[0]-Z[0],O[1]=V[1]-Z[1],O[2]=V[2]-Z[2],O[3]=V[3]-Z[3],O[4]=V[4]-Z[4],O[5]=V[5]-Z[5],O[6]=V[6]-Z[6],O[7]=V[7]-Z[7],O[8]=V[8]-Z[8],O}function A(O,V,Z){return O[0]=V[0]*Z,O[1]=V[1]*Z,O[2]=V[2]*Z,O[3]=V[3]*Z,O[4]=V[4]*Z,O[5]=V[5]*Z,O[6]=V[6]*Z,O[7]=V[7]*Z,O[8]=V[8]*Z,O}function N(O,V,Z,$){return O[0]=V[0]+Z[0]*$,O[1]=V[1]+Z[1]*$,O[2]=V[2]+Z[2]*$,O[3]=V[3]+Z[3]*$,O[4]=V[4]+Z[4]*$,O[5]=V[5]+Z[5]*$,O[6]=V[6]+Z[6]*$,O[7]=V[7]+Z[7]*$,O[8]=V[8]+Z[8]*$,O}function W(O,V){return O[0]===V[0]&&O[1]===V[1]&&O[2]===V[2]&&O[3]===V[3]&&O[4]===V[4]&&O[5]===V[5]&&O[6]===V[6]&&O[7]===V[7]&&O[8]===V[8]}function Y(O,V){var Z=O[0],$=O[1],ee=O[2],se=O[3],ce=O[4],me=O[5],pe=O[6],B=O[7],F=O[8],J=V[0],oe=V[1],K=V[2],te=V[3],w=V[4],I=V[5],U=V[6],G=V[7],_=V[8];return Math.abs(Z-J)<=i.EPSILON*Math.max(1,Math.abs(Z),Math.abs(J))&&Math.abs($-oe)<=i.EPSILON*Math.max(1,Math.abs($),Math.abs(oe))&&Math.abs(ee-K)<=i.EPSILON*Math.max(1,Math.abs(ee),Math.abs(K))&&Math.abs(se-te)<=i.EPSILON*Math.max(1,Math.abs(se),Math.abs(te))&&Math.abs(ce-w)<=i.EPSILON*Math.max(1,Math.abs(ce),Math.abs(w))&&Math.abs(me-I)<=i.EPSILON*Math.max(1,Math.abs(me),Math.abs(I))&&Math.abs(pe-U)<=i.EPSILON*Math.max(1,Math.abs(pe),Math.abs(U))&&Math.abs(B-G)<=i.EPSILON*Math.max(1,Math.abs(B),Math.abs(G))&&Math.abs(F-_)<=i.EPSILON*Math.max(1,Math.abs(F),Math.abs(_))}var Q=x,ie=k},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"copy",function(){return c}),n.d(r,"fromValues",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"identity",function(){return h}),n.d(r,"transpose",function(){return d}),n.d(r,"invert",function(){return f}),n.d(r,"adjoint",function(){return g}),n.d(r,"determinant",function(){return y}),n.d(r,"multiply",function(){return T}),n.d(r,"translate",function(){return x}),n.d(r,"scale",function(){return C}),n.d(r,"rotate",function(){return L}),n.d(r,"rotateX",function(){return S}),n.d(r,"rotateY",function(){return p}),n.d(r,"rotateZ",function(){return m}),n.d(r,"fromTranslation",function(){return M}),n.d(r,"fromScaling",function(){return v}),n.d(r,"fromRotation",function(){return R}),n.d(r,"fromXRotation",function(){return b}),n.d(r,"fromYRotation",function(){return P}),n.d(r,"fromZRotation",function(){return D}),n.d(r,"fromRotationTranslation",function(){return z}),n.d(r,"fromQuat2",function(){return j}),n.d(r,"getTranslation",function(){return k}),n.d(r,"getScaling",function(){return A}),n.d(r,"getRotation",function(){return N}),n.d(r,"fromRotationTranslationScale",function(){return W}),n.d(r,"fromRotationTranslationScaleOrigin",function(){return Y}),n.d(r,"fromQuat",function(){return Q}),n.d(r,"frustum",function(){return ie}),n.d(r,"perspective",function(){return O}),n.d(r,"perspectiveFromFieldOfView",function(){return V}),n.d(r,"ortho",function(){return Z}),n.d(r,"lookAt",function(){return $}),n.d(r,"targetTo",function(){return ee}),n.d(r,"str",function(){return se}),n.d(r,"frob",function(){return ce}),n.d(r,"add",function(){return me}),n.d(r,"subtract",function(){return pe}),n.d(r,"multiplyScalar",function(){return B}),n.d(r,"multiplyScalarAndAdd",function(){return F}),n.d(r,"exactEquals",function(){return J}),n.d(r,"equals",function(){return oe}),n.d(r,"mul",function(){return K}),n.d(r,"sub",function(){return te});var i=n(2);function o(){var w=new i.ARRAY_TYPE(16);return i.ARRAY_TYPE!=Float32Array&&(w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=0,w[12]=0,w[13]=0,w[14]=0),w[0]=1,w[5]=1,w[10]=1,w[15]=1,w}function a(w){var I=new i.ARRAY_TYPE(16);return I[0]=w[0],I[1]=w[1],I[2]=w[2],I[3]=w[3],I[4]=w[4],I[5]=w[5],I[6]=w[6],I[7]=w[7],I[8]=w[8],I[9]=w[9],I[10]=w[10],I[11]=w[11],I[12]=w[12],I[13]=w[13],I[14]=w[14],I[15]=w[15],I}function c(w,I){return w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function l(w,I,U,G,_,re,ne,X,ae,ue,he,ge,Me,we,be,Ie){var Ce=new i.ARRAY_TYPE(16);return Ce[0]=w,Ce[1]=I,Ce[2]=U,Ce[3]=G,Ce[4]=_,Ce[5]=re,Ce[6]=ne,Ce[7]=X,Ce[8]=ae,Ce[9]=ue,Ce[10]=he,Ce[11]=ge,Ce[12]=Me,Ce[13]=we,Ce[14]=be,Ce[15]=Ie,Ce}function u(w,I,U,G,_,re,ne,X,ae,ue,he,ge,Me,we,be,Ie,Ce){return w[0]=I,w[1]=U,w[2]=G,w[3]=_,w[4]=re,w[5]=ne,w[6]=X,w[7]=ae,w[8]=ue,w[9]=he,w[10]=ge,w[11]=Me,w[12]=we,w[13]=be,w[14]=Ie,w[15]=Ce,w}function h(w){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function d(w,I){if(w===I){var U=I[1],G=I[2],_=I[3],re=I[6],ne=I[7],X=I[11];w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=U,w[6]=I[9],w[7]=I[13],w[8]=G,w[9]=re,w[11]=I[14],w[12]=_,w[13]=ne,w[14]=X}else w[0]=I[0],w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=I[1],w[5]=I[5],w[6]=I[9],w[7]=I[13],w[8]=I[2],w[9]=I[6],w[10]=I[10],w[11]=I[14],w[12]=I[3],w[13]=I[7],w[14]=I[11],w[15]=I[15];return w}function f(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=I[4],X=I[5],ae=I[6],ue=I[7],he=I[8],ge=I[9],Me=I[10],we=I[11],be=I[12],Ie=I[13],Ce=I[14],ke=I[15],Ee=U*X-G*ne,Ae=U*ae-_*ne,Oe=U*ue-re*ne,ze=G*ae-_*X,je=G*ue-re*X,Je=_*ue-re*ae,rt=he*Ie-ge*be,et=he*Ce-Me*be,nt=he*ke-we*be,Qe=ge*Ce-Me*Ie,st=ge*ke-we*Ie,ut=Me*ke-we*Ce,Ke=Ee*ut-Ae*st+Oe*Qe+ze*nt-je*et+Je*rt;return Ke?(Ke=1/Ke,w[0]=(X*ut-ae*st+ue*Qe)*Ke,w[1]=(_*st-G*ut-re*Qe)*Ke,w[2]=(Ie*Je-Ce*je+ke*ze)*Ke,w[3]=(Me*je-ge*Je-we*ze)*Ke,w[4]=(ae*nt-ne*ut-ue*et)*Ke,w[5]=(U*ut-_*nt+re*et)*Ke,w[6]=(Ce*Oe-be*Je-ke*Ae)*Ke,w[7]=(he*Je-Me*Oe+we*Ae)*Ke,w[8]=(ne*st-X*nt+ue*rt)*Ke,w[9]=(G*nt-U*st-re*rt)*Ke,w[10]=(be*je-Ie*Oe+ke*Ee)*Ke,w[11]=(ge*Oe-he*je-we*Ee)*Ke,w[12]=(X*et-ne*Qe-ae*rt)*Ke,w[13]=(U*Qe-G*et+_*rt)*Ke,w[14]=(Ie*Ae-be*ze-Ce*Ee)*Ke,w[15]=(he*ze-ge*Ae+Me*Ee)*Ke,w):null}function g(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=I[4],X=I[5],ae=I[6],ue=I[7],he=I[8],ge=I[9],Me=I[10],we=I[11],be=I[12],Ie=I[13],Ce=I[14],ke=I[15];return w[0]=X*(Me*ke-we*Ce)-ge*(ae*ke-ue*Ce)+Ie*(ae*we-ue*Me),w[1]=-(G*(Me*ke-we*Ce)-ge*(_*ke-re*Ce)+Ie*(_*we-re*Me)),w[2]=G*(ae*ke-ue*Ce)-X*(_*ke-re*Ce)+Ie*(_*ue-re*ae),w[3]=-(G*(ae*we-ue*Me)-X*(_*we-re*Me)+ge*(_*ue-re*ae)),w[4]=-(ne*(Me*ke-we*Ce)-he*(ae*ke-ue*Ce)+be*(ae*we-ue*Me)),w[5]=U*(Me*ke-we*Ce)-he*(_*ke-re*Ce)+be*(_*we-re*Me),w[6]=-(U*(ae*ke-ue*Ce)-ne*(_*ke-re*Ce)+be*(_*ue-re*ae)),w[7]=U*(ae*we-ue*Me)-ne*(_*we-re*Me)+he*(_*ue-re*ae),w[8]=ne*(ge*ke-we*Ie)-he*(X*ke-ue*Ie)+be*(X*we-ue*ge),w[9]=-(U*(ge*ke-we*Ie)-he*(G*ke-re*Ie)+be*(G*we-re*ge)),w[10]=U*(X*ke-ue*Ie)-ne*(G*ke-re*Ie)+be*(G*ue-re*X),w[11]=-(U*(X*we-ue*ge)-ne*(G*we-re*ge)+he*(G*ue-re*X)),w[12]=-(ne*(ge*Ce-Me*Ie)-he*(X*Ce-ae*Ie)+be*(X*Me-ae*ge)),w[13]=U*(ge*Ce-Me*Ie)-he*(G*Ce-_*Ie)+be*(G*Me-_*ge),w[14]=-(U*(X*Ce-ae*Ie)-ne*(G*Ce-_*Ie)+be*(G*ae-_*X)),w[15]=U*(X*Me-ae*ge)-ne*(G*Me-_*ge)+he*(G*ae-_*X),w}function y(w){var I=w[0],U=w[1],G=w[2],_=w[3],re=w[4],ne=w[5],X=w[6],ae=w[7],ue=w[8],he=w[9],ge=w[10],Me=w[11],we=w[12],be=w[13],Ie=w[14],Ce=w[15],ke=I*ne-U*re,Ee=I*X-G*re,Ae=I*ae-_*re,Oe=U*X-G*ne,ze=U*ae-_*ne,je=G*ae-_*X,Je=ue*be-he*we,rt=ue*Ie-ge*we,et=ue*Ce-Me*we,nt=he*Ie-ge*be,Qe=he*Ce-Me*be,st=ge*Ce-Me*Ie;return ke*st-Ee*Qe+Ae*nt+Oe*et-ze*rt+je*Je}function T(w,I,U){var G=I[0],_=I[1],re=I[2],ne=I[3],X=I[4],ae=I[5],ue=I[6],he=I[7],ge=I[8],Me=I[9],we=I[10],be=I[11],Ie=I[12],Ce=I[13],ke=I[14],Ee=I[15],Ae=U[0],Oe=U[1],ze=U[2],je=U[3];return w[0]=Ae*G+Oe*X+ze*ge+je*Ie,w[1]=Ae*_+Oe*ae+ze*Me+je*Ce,w[2]=Ae*re+Oe*ue+ze*we+je*ke,w[3]=Ae*ne+Oe*he+ze*be+je*Ee,Ae=U[4],Oe=U[5],ze=U[6],je=U[7],w[4]=Ae*G+Oe*X+ze*ge+je*Ie,w[5]=Ae*_+Oe*ae+ze*Me+je*Ce,w[6]=Ae*re+Oe*ue+ze*we+je*ke,w[7]=Ae*ne+Oe*he+ze*be+je*Ee,Ae=U[8],Oe=U[9],ze=U[10],je=U[11],w[8]=Ae*G+Oe*X+ze*ge+je*Ie,w[9]=Ae*_+Oe*ae+ze*Me+je*Ce,w[10]=Ae*re+Oe*ue+ze*we+je*ke,w[11]=Ae*ne+Oe*he+ze*be+je*Ee,Ae=U[12],Oe=U[13],ze=U[14],je=U[15],w[12]=Ae*G+Oe*X+ze*ge+je*Ie,w[13]=Ae*_+Oe*ae+ze*Me+je*Ce,w[14]=Ae*re+Oe*ue+ze*we+je*ke,w[15]=Ae*ne+Oe*he+ze*be+je*Ee,w}function x(w,I,U){var G=U[0],_=U[1],re=U[2],ne,X,ae,ue,he,ge,Me,we,be,Ie,Ce,ke;return I===w?(w[12]=I[0]*G+I[4]*_+I[8]*re+I[12],w[13]=I[1]*G+I[5]*_+I[9]*re+I[13],w[14]=I[2]*G+I[6]*_+I[10]*re+I[14],w[15]=I[3]*G+I[7]*_+I[11]*re+I[15]):(ne=I[0],X=I[1],ae=I[2],ue=I[3],he=I[4],ge=I[5],Me=I[6],we=I[7],be=I[8],Ie=I[9],Ce=I[10],ke=I[11],w[0]=ne,w[1]=X,w[2]=ae,w[3]=ue,w[4]=he,w[5]=ge,w[6]=Me,w[7]=we,w[8]=be,w[9]=Ie,w[10]=Ce,w[11]=ke,w[12]=ne*G+he*_+be*re+I[12],w[13]=X*G+ge*_+Ie*re+I[13],w[14]=ae*G+Me*_+Ce*re+I[14],w[15]=ue*G+we*_+ke*re+I[15]),w}function C(w,I,U){var G=U[0],_=U[1],re=U[2];return w[0]=I[0]*G,w[1]=I[1]*G,w[2]=I[2]*G,w[3]=I[3]*G,w[4]=I[4]*_,w[5]=I[5]*_,w[6]=I[6]*_,w[7]=I[7]*_,w[8]=I[8]*re,w[9]=I[9]*re,w[10]=I[10]*re,w[11]=I[11]*re,w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function L(w,I,U,G){var _=G[0],re=G[1],ne=G[2],X=Math.hypot(_,re,ne),ae,ue,he,ge,Me,we,be,Ie,Ce,ke,Ee,Ae,Oe,ze,je,Je,rt,et,nt,Qe,st,ut,Ke,Wt;return X<i.EPSILON?null:(X=1/X,_*=X,re*=X,ne*=X,ae=Math.sin(U),ue=Math.cos(U),he=1-ue,ge=I[0],Me=I[1],we=I[2],be=I[3],Ie=I[4],Ce=I[5],ke=I[6],Ee=I[7],Ae=I[8],Oe=I[9],ze=I[10],je=I[11],Je=_*_*he+ue,rt=re*_*he+ne*ae,et=ne*_*he-re*ae,nt=_*re*he-ne*ae,Qe=re*re*he+ue,st=ne*re*he+_*ae,ut=_*ne*he+re*ae,Ke=re*ne*he-_*ae,Wt=ne*ne*he+ue,w[0]=ge*Je+Ie*rt+Ae*et,w[1]=Me*Je+Ce*rt+Oe*et,w[2]=we*Je+ke*rt+ze*et,w[3]=be*Je+Ee*rt+je*et,w[4]=ge*nt+Ie*Qe+Ae*st,w[5]=Me*nt+Ce*Qe+Oe*st,w[6]=we*nt+ke*Qe+ze*st,w[7]=be*nt+Ee*Qe+je*st,w[8]=ge*ut+Ie*Ke+Ae*Wt,w[9]=Me*ut+Ce*Ke+Oe*Wt,w[10]=we*ut+ke*Ke+ze*Wt,w[11]=be*ut+Ee*Ke+je*Wt,I!==w&&(w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w)}function S(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[4],ne=I[5],X=I[6],ae=I[7],ue=I[8],he=I[9],ge=I[10],Me=I[11];return I!==w&&(w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[4]=re*_+ue*G,w[5]=ne*_+he*G,w[6]=X*_+ge*G,w[7]=ae*_+Me*G,w[8]=ue*_-re*G,w[9]=he*_-ne*G,w[10]=ge*_-X*G,w[11]=Me*_-ae*G,w}function p(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[0],ne=I[1],X=I[2],ae=I[3],ue=I[8],he=I[9],ge=I[10],Me=I[11];return I!==w&&(w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=re*_-ue*G,w[1]=ne*_-he*G,w[2]=X*_-ge*G,w[3]=ae*_-Me*G,w[8]=re*G+ue*_,w[9]=ne*G+he*_,w[10]=X*G+ge*_,w[11]=ae*G+Me*_,w}function m(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[0],ne=I[1],X=I[2],ae=I[3],ue=I[4],he=I[5],ge=I[6],Me=I[7];return I!==w&&(w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=re*_+ue*G,w[1]=ne*_+he*G,w[2]=X*_+ge*G,w[3]=ae*_+Me*G,w[4]=ue*_-re*G,w[5]=he*_-ne*G,w[6]=ge*_-X*G,w[7]=Me*_-ae*G,w}function M(w,I){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=I[0],w[13]=I[1],w[14]=I[2],w[15]=1,w}function v(w,I){return w[0]=I[0],w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=I[1],w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=I[2],w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function R(w,I,U){var G=U[0],_=U[1],re=U[2],ne=Math.hypot(G,_,re),X,ae,ue;return ne<i.EPSILON?null:(ne=1/ne,G*=ne,_*=ne,re*=ne,X=Math.sin(I),ae=Math.cos(I),ue=1-ae,w[0]=G*G*ue+ae,w[1]=_*G*ue+re*X,w[2]=re*G*ue-_*X,w[3]=0,w[4]=G*_*ue-re*X,w[5]=_*_*ue+ae,w[6]=re*_*ue+G*X,w[7]=0,w[8]=G*re*ue+_*X,w[9]=_*re*ue-G*X,w[10]=re*re*ue+ae,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w)}function b(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=G,w[6]=U,w[7]=0,w[8]=0,w[9]=-U,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function P(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=0,w[2]=-U,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=U,w[9]=0,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function D(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=U,w[2]=0,w[3]=0,w[4]=-U,w[5]=G,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function z(w,I,U){var G=I[0],_=I[1],re=I[2],ne=I[3],X=G+G,ae=_+_,ue=re+re,he=G*X,ge=G*ae,Me=G*ue,we=_*ae,be=_*ue,Ie=re*ue,Ce=ne*X,ke=ne*ae,Ee=ne*ue;return w[0]=1-(we+Ie),w[1]=ge+Ee,w[2]=Me-ke,w[3]=0,w[4]=ge-Ee,w[5]=1-(he+Ie),w[6]=be+Ce,w[7]=0,w[8]=Me+ke,w[9]=be-Ce,w[10]=1-(he+we),w[11]=0,w[12]=U[0],w[13]=U[1],w[14]=U[2],w[15]=1,w}function j(w,I){var U=new i.ARRAY_TYPE(3),G=-I[0],_=-I[1],re=-I[2],ne=I[3],X=I[4],ae=I[5],ue=I[6],he=I[7],ge=G*G+_*_+re*re+ne*ne;return ge>0?(U[0]=(X*ne+he*G+ae*re-ue*_)*2/ge,U[1]=(ae*ne+he*_+ue*G-X*re)*2/ge,U[2]=(ue*ne+he*re+X*_-ae*G)*2/ge):(U[0]=(X*ne+he*G+ae*re-ue*_)*2,U[1]=(ae*ne+he*_+ue*G-X*re)*2,U[2]=(ue*ne+he*re+X*_-ae*G)*2),z(w,I,U),w}function k(w,I){return w[0]=I[12],w[1]=I[13],w[2]=I[14],w}function A(w,I){var U=I[0],G=I[1],_=I[2],re=I[4],ne=I[5],X=I[6],ae=I[8],ue=I[9],he=I[10];return w[0]=Math.hypot(U,G,_),w[1]=Math.hypot(re,ne,X),w[2]=Math.hypot(ae,ue,he),w}function N(w,I){var U=new i.ARRAY_TYPE(3);A(U,I);var G=1/U[0],_=1/U[1],re=1/U[2],ne=I[0]*G,X=I[1]*_,ae=I[2]*re,ue=I[4]*G,he=I[5]*_,ge=I[6]*re,Me=I[8]*G,we=I[9]*_,be=I[10]*re,Ie=ne+he+be,Ce=0;return Ie>0?(Ce=Math.sqrt(Ie+1)*2,w[3]=.25*Ce,w[0]=(ge-we)/Ce,w[1]=(Me-ae)/Ce,w[2]=(X-ue)/Ce):ne>he&&ne>be?(Ce=Math.sqrt(1+ne-he-be)*2,w[3]=(ge-we)/Ce,w[0]=.25*Ce,w[1]=(X+ue)/Ce,w[2]=(Me+ae)/Ce):he>be?(Ce=Math.sqrt(1+he-ne-be)*2,w[3]=(Me-ae)/Ce,w[0]=(X+ue)/Ce,w[1]=.25*Ce,w[2]=(ge+we)/Ce):(Ce=Math.sqrt(1+be-ne-he)*2,w[3]=(X-ue)/Ce,w[0]=(Me+ae)/Ce,w[1]=(ge+we)/Ce,w[2]=.25*Ce),w}function W(w,I,U,G){var _=I[0],re=I[1],ne=I[2],X=I[3],ae=_+_,ue=re+re,he=ne+ne,ge=_*ae,Me=_*ue,we=_*he,be=re*ue,Ie=re*he,Ce=ne*he,ke=X*ae,Ee=X*ue,Ae=X*he,Oe=G[0],ze=G[1],je=G[2];return w[0]=(1-(be+Ce))*Oe,w[1]=(Me+Ae)*Oe,w[2]=(we-Ee)*Oe,w[3]=0,w[4]=(Me-Ae)*ze,w[5]=(1-(ge+Ce))*ze,w[6]=(Ie+ke)*ze,w[7]=0,w[8]=(we+Ee)*je,w[9]=(Ie-ke)*je,w[10]=(1-(ge+be))*je,w[11]=0,w[12]=U[0],w[13]=U[1],w[14]=U[2],w[15]=1,w}function Y(w,I,U,G,_){var re=I[0],ne=I[1],X=I[2],ae=I[3],ue=re+re,he=ne+ne,ge=X+X,Me=re*ue,we=re*he,be=re*ge,Ie=ne*he,Ce=ne*ge,ke=X*ge,Ee=ae*ue,Ae=ae*he,Oe=ae*ge,ze=G[0],je=G[1],Je=G[2],rt=_[0],et=_[1],nt=_[2],Qe=(1-(Ie+ke))*ze,st=(we+Oe)*ze,ut=(be-Ae)*ze,Ke=(we-Oe)*je,Wt=(1-(Me+ke))*je,zr=(Ce+Ee)*je,Br=(be+Ae)*Je,vi=(Ce-Ee)*Je,go=(1-(Me+Ie))*Je;return w[0]=Qe,w[1]=st,w[2]=ut,w[3]=0,w[4]=Ke,w[5]=Wt,w[6]=zr,w[7]=0,w[8]=Br,w[9]=vi,w[10]=go,w[11]=0,w[12]=U[0]+rt-(Qe*rt+Ke*et+Br*nt),w[13]=U[1]+et-(st*rt+Wt*et+vi*nt),w[14]=U[2]+nt-(ut*rt+zr*et+go*nt),w[15]=1,w}function Q(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=U+U,X=G+G,ae=_+_,ue=U*ne,he=G*ne,ge=G*X,Me=_*ne,we=_*X,be=_*ae,Ie=re*ne,Ce=re*X,ke=re*ae;return w[0]=1-ge-be,w[1]=he+ke,w[2]=Me-Ce,w[3]=0,w[4]=he-ke,w[5]=1-ue-be,w[6]=we+Ie,w[7]=0,w[8]=Me+Ce,w[9]=we-Ie,w[10]=1-ue-ge,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function ie(w,I,U,G,_,re,ne){var X=1/(U-I),ae=1/(_-G),ue=1/(re-ne);return w[0]=re*2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=re*2*ae,w[6]=0,w[7]=0,w[8]=(U+I)*X,w[9]=(_+G)*ae,w[10]=(ne+re)*ue,w[11]=-1,w[12]=0,w[13]=0,w[14]=ne*re*2*ue,w[15]=0,w}function O(w,I,U,G,_){var re=1/Math.tan(I/2),ne;return w[0]=re/U,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=re,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=-1,w[12]=0,w[13]=0,w[15]=0,_!=null&&_!==1/0?(ne=1/(G-_),w[10]=(_+G)*ne,w[14]=2*_*G*ne):(w[10]=-1,w[14]=-2*G),w}function V(w,I,U,G){var _=Math.tan(I.upDegrees*Math.PI/180),re=Math.tan(I.downDegrees*Math.PI/180),ne=Math.tan(I.leftDegrees*Math.PI/180),X=Math.tan(I.rightDegrees*Math.PI/180),ae=2/(ne+X),ue=2/(_+re);return w[0]=ae,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=ue,w[6]=0,w[7]=0,w[8]=-((ne-X)*ae*.5),w[9]=(_-re)*ue*.5,w[10]=G/(U-G),w[11]=-1,w[12]=0,w[13]=0,w[14]=G*U/(U-G),w[15]=0,w}function Z(w,I,U,G,_,re,ne){var X=1/(I-U),ae=1/(G-_),ue=1/(re-ne);return w[0]=-2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=-2*ae,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=2*ue,w[11]=0,w[12]=(I+U)*X,w[13]=(_+G)*ae,w[14]=(ne+re)*ue,w[15]=1,w}function $(w,I,U,G){var _,re,ne,X,ae,ue,he,ge,Me,we,be=I[0],Ie=I[1],Ce=I[2],ke=G[0],Ee=G[1],Ae=G[2],Oe=U[0],ze=U[1],je=U[2];return Math.abs(be-Oe)<i.EPSILON&&Math.abs(Ie-ze)<i.EPSILON&&Math.abs(Ce-je)<i.EPSILON?h(w):(he=be-Oe,ge=Ie-ze,Me=Ce-je,we=1/Math.hypot(he,ge,Me),he*=we,ge*=we,Me*=we,_=Ee*Me-Ae*ge,re=Ae*he-ke*Me,ne=ke*ge-Ee*he,we=Math.hypot(_,re,ne),we?(we=1/we,_*=we,re*=we,ne*=we):(_=0,re=0,ne=0),X=ge*ne-Me*re,ae=Me*_-he*ne,ue=he*re-ge*_,we=Math.hypot(X,ae,ue),we?(we=1/we,X*=we,ae*=we,ue*=we):(X=0,ae=0,ue=0),w[0]=_,w[1]=X,w[2]=he,w[3]=0,w[4]=re,w[5]=ae,w[6]=ge,w[7]=0,w[8]=ne,w[9]=ue,w[10]=Me,w[11]=0,w[12]=-(_*be+re*Ie+ne*Ce),w[13]=-(X*be+ae*Ie+ue*Ce),w[14]=-(he*be+ge*Ie+Me*Ce),w[15]=1,w)}function ee(w,I,U,G){var _=I[0],re=I[1],ne=I[2],X=G[0],ae=G[1],ue=G[2],he=_-U[0],ge=re-U[1],Me=ne-U[2],we=he*he+ge*ge+Me*Me;we>0&&(we=1/Math.sqrt(we),he*=we,ge*=we,Me*=we);var be=ae*Me-ue*ge,Ie=ue*he-X*Me,Ce=X*ge-ae*he;return we=be*be+Ie*Ie+Ce*Ce,we>0&&(we=1/Math.sqrt(we),be*=we,Ie*=we,Ce*=we),w[0]=be,w[1]=Ie,w[2]=Ce,w[3]=0,w[4]=ge*Ce-Me*Ie,w[5]=Me*be-he*Ce,w[6]=he*Ie-ge*be,w[7]=0,w[8]=he,w[9]=ge,w[10]=Me,w[11]=0,w[12]=_,w[13]=re,w[14]=ne,w[15]=1,w}function se(w){return"mat4("+w[0]+", "+w[1]+", "+w[2]+", "+w[3]+", "+w[4]+", "+w[5]+", "+w[6]+", "+w[7]+", "+w[8]+", "+w[9]+", "+w[10]+", "+w[11]+", "+w[12]+", "+w[13]+", "+w[14]+", "+w[15]+")"}function ce(w){return Math.hypot(w[0],w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9],w[10],w[11],w[12],w[13],w[14],w[15])}function me(w,I,U){return w[0]=I[0]+U[0],w[1]=I[1]+U[1],w[2]=I[2]+U[2],w[3]=I[3]+U[3],w[4]=I[4]+U[4],w[5]=I[5]+U[5],w[6]=I[6]+U[6],w[7]=I[7]+U[7],w[8]=I[8]+U[8],w[9]=I[9]+U[9],w[10]=I[10]+U[10],w[11]=I[11]+U[11],w[12]=I[12]+U[12],w[13]=I[13]+U[13],w[14]=I[14]+U[14],w[15]=I[15]+U[15],w}function pe(w,I,U){return w[0]=I[0]-U[0],w[1]=I[1]-U[1],w[2]=I[2]-U[2],w[3]=I[3]-U[3],w[4]=I[4]-U[4],w[5]=I[5]-U[5],w[6]=I[6]-U[6],w[7]=I[7]-U[7],w[8]=I[8]-U[8],w[9]=I[9]-U[9],w[10]=I[10]-U[10],w[11]=I[11]-U[11],w[12]=I[12]-U[12],w[13]=I[13]-U[13],w[14]=I[14]-U[14],w[15]=I[15]-U[15],w}function B(w,I,U){return w[0]=I[0]*U,w[1]=I[1]*U,w[2]=I[2]*U,w[3]=I[3]*U,w[4]=I[4]*U,w[5]=I[5]*U,w[6]=I[6]*U,w[7]=I[7]*U,w[8]=I[8]*U,w[9]=I[9]*U,w[10]=I[10]*U,w[11]=I[11]*U,w[12]=I[12]*U,w[13]=I[13]*U,w[14]=I[14]*U,w[15]=I[15]*U,w}function F(w,I,U,G){return w[0]=I[0]+U[0]*G,w[1]=I[1]+U[1]*G,w[2]=I[2]+U[2]*G,w[3]=I[3]+U[3]*G,w[4]=I[4]+U[4]*G,w[5]=I[5]+U[5]*G,w[6]=I[6]+U[6]*G,w[7]=I[7]+U[7]*G,w[8]=I[8]+U[8]*G,w[9]=I[9]+U[9]*G,w[10]=I[10]+U[10]*G,w[11]=I[11]+U[11]*G,w[12]=I[12]+U[12]*G,w[13]=I[13]+U[13]*G,w[14]=I[14]+U[14]*G,w[15]=I[15]+U[15]*G,w}function J(w,I){return w[0]===I[0]&&w[1]===I[1]&&w[2]===I[2]&&w[3]===I[3]&&w[4]===I[4]&&w[5]===I[5]&&w[6]===I[6]&&w[7]===I[7]&&w[8]===I[8]&&w[9]===I[9]&&w[10]===I[10]&&w[11]===I[11]&&w[12]===I[12]&&w[13]===I[13]&&w[14]===I[14]&&w[15]===I[15]}function oe(w,I){var U=w[0],G=w[1],_=w[2],re=w[3],ne=w[4],X=w[5],ae=w[6],ue=w[7],he=w[8],ge=w[9],Me=w[10],we=w[11],be=w[12],Ie=w[13],Ce=w[14],ke=w[15],Ee=I[0],Ae=I[1],Oe=I[2],ze=I[3],je=I[4],Je=I[5],rt=I[6],et=I[7],nt=I[8],Qe=I[9],st=I[10],ut=I[11],Ke=I[12],Wt=I[13],zr=I[14],Br=I[15];return Math.abs(U-Ee)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(Ee))&&Math.abs(G-Ae)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(Ae))&&Math.abs(_-Oe)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(Oe))&&Math.abs(re-ze)<=i.EPSILON*Math.max(1,Math.abs(re),Math.abs(ze))&&Math.abs(ne-je)<=i.EPSILON*Math.max(1,Math.abs(ne),Math.abs(je))&&Math.abs(X-Je)<=i.EPSILON*Math.max(1,Math.abs(X),Math.abs(Je))&&Math.abs(ae-rt)<=i.EPSILON*Math.max(1,Math.abs(ae),Math.abs(rt))&&Math.abs(ue-et)<=i.EPSILON*Math.max(1,Math.abs(ue),Math.abs(et))&&Math.abs(he-nt)<=i.EPSILON*Math.max(1,Math.abs(he),Math.abs(nt))&&Math.abs(ge-Qe)<=i.EPSILON*Math.max(1,Math.abs(ge),Math.abs(Qe))&&Math.abs(Me-st)<=i.EPSILON*Math.max(1,Math.abs(Me),Math.abs(st))&&Math.abs(we-ut)<=i.EPSILON*Math.max(1,Math.abs(we),Math.abs(ut))&&Math.abs(be-Ke)<=i.EPSILON*Math.max(1,Math.abs(be),Math.abs(Ke))&&Math.abs(Ie-Wt)<=i.EPSILON*Math.max(1,Math.abs(Ie),Math.abs(Wt))&&Math.abs(Ce-zr)<=i.EPSILON*Math.max(1,Math.abs(Ce),Math.abs(zr))&&Math.abs(ke-Br)<=i.EPSILON*Math.max(1,Math.abs(ke),Math.abs(Br))}var K=T,te=pe},function(e,r,n){n.r(r),n.d(r,"create",function(){return l}),n.d(r,"identity",function(){return u}),n.d(r,"setAxisAngle",function(){return h}),n.d(r,"getAxisAngle",function(){return d}),n.d(r,"getAngle",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"rotateX",function(){return y}),n.d(r,"rotateY",function(){return T}),n.d(r,"rotateZ",function(){return x}),n.d(r,"calculateW",function(){return C}),n.d(r,"exp",function(){return L}),n.d(r,"ln",function(){return S}),n.d(r,"pow",function(){return p}),n.d(r,"slerp",function(){return m}),n.d(r,"random",function(){return M}),n.d(r,"invert",function(){return v}),n.d(r,"conjugate",function(){return R}),n.d(r,"fromMat3",function(){return b}),n.d(r,"fromEuler",function(){return P}),n.d(r,"str",function(){return D}),n.d(r,"clone",function(){return z}),n.d(r,"fromValues",function(){return j}),n.d(r,"copy",function(){return k}),n.d(r,"set",function(){return A}),n.d(r,"add",function(){return N}),n.d(r,"mul",function(){return W}),n.d(r,"scale",function(){return Y}),n.d(r,"dot",function(){return Q}),n.d(r,"lerp",function(){return ie}),n.d(r,"length",function(){return O}),n.d(r,"len",function(){return V}),n.d(r,"squaredLength",function(){return Z}),n.d(r,"sqrLen",function(){return $}),n.d(r,"normalize",function(){return ee}),n.d(r,"exactEquals",function(){return se}),n.d(r,"equals",function(){return ce}),n.d(r,"rotationTo",function(){return me}),n.d(r,"sqlerp",function(){return pe}),n.d(r,"setAxes",function(){return B});var i=n(2),o=n(5),a=n(8),c=n(9);function l(){var F=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(F[0]=0,F[1]=0,F[2]=0),F[3]=1,F}function u(F){return F[0]=0,F[1]=0,F[2]=0,F[3]=1,F}function h(F,J,oe){oe=oe*.5;var K=Math.sin(oe);return F[0]=K*J[0],F[1]=K*J[1],F[2]=K*J[2],F[3]=Math.cos(oe),F}function d(F,J){var oe=Math.acos(J[3])*2,K=Math.sin(oe/2);return K>i.EPSILON?(F[0]=J[0]/K,F[1]=J[1]/K,F[2]=J[2]/K):(F[0]=1,F[1]=0,F[2]=0),oe}function f(F,J){var oe=Q(F,J);return Math.acos(2*oe*oe-1)}function g(F,J,oe){var K=J[0],te=J[1],w=J[2],I=J[3],U=oe[0],G=oe[1],_=oe[2],re=oe[3];return F[0]=K*re+I*U+te*_-w*G,F[1]=te*re+I*G+w*U-K*_,F[2]=w*re+I*_+K*G-te*U,F[3]=I*re-K*U-te*G-w*_,F}function y(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G+I*U,F[1]=te*G+w*U,F[2]=w*G-te*U,F[3]=I*G-K*U,F}function T(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G-w*U,F[1]=te*G+I*U,F[2]=w*G+K*U,F[3]=I*G-te*U,F}function x(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G+te*U,F[1]=te*G-K*U,F[2]=w*G+I*U,F[3]=I*G-w*U,F}function C(F,J){var oe=J[0],K=J[1],te=J[2];return F[0]=oe,F[1]=K,F[2]=te,F[3]=Math.sqrt(Math.abs(1-oe*oe-K*K-te*te)),F}function L(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(oe*oe+K*K+te*te),U=Math.exp(w),G=I>0?U*Math.sin(I)/I:0;return F[0]=oe*G,F[1]=K*G,F[2]=te*G,F[3]=U*Math.cos(I),F}function S(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(oe*oe+K*K+te*te),U=I>0?Math.atan2(I,w)/I:0;return F[0]=oe*U,F[1]=K*U,F[2]=te*U,F[3]=.5*Math.log(oe*oe+K*K+te*te+w*w),F}function p(F,J,oe){return S(F,J),Y(F,F,oe),L(F,F),F}function m(F,J,oe,K){var te=J[0],w=J[1],I=J[2],U=J[3],G=oe[0],_=oe[1],re=oe[2],ne=oe[3],X,ae,ue,he,ge;return ae=te*G+w*_+I*re+U*ne,ae<0&&(ae=-ae,G=-G,_=-_,re=-re,ne=-ne),1-ae>i.EPSILON?(X=Math.acos(ae),ue=Math.sin(X),he=Math.sin((1-K)*X)/ue,ge=Math.sin(K*X)/ue):(he=1-K,ge=K),F[0]=he*te+ge*G,F[1]=he*w+ge*_,F[2]=he*I+ge*re,F[3]=he*U+ge*ne,F}function M(F){var J=i.RANDOM(),oe=i.RANDOM(),K=i.RANDOM(),te=Math.sqrt(1-J),w=Math.sqrt(J);return F[0]=te*Math.sin(2*Math.PI*oe),F[1]=te*Math.cos(2*Math.PI*oe),F[2]=w*Math.sin(2*Math.PI*K),F[3]=w*Math.cos(2*Math.PI*K),F}function v(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=oe*oe+K*K+te*te+w*w,U=I?1/I:0;return F[0]=-oe*U,F[1]=-K*U,F[2]=-te*U,F[3]=w*U,F}function R(F,J){return F[0]=-J[0],F[1]=-J[1],F[2]=-J[2],F[3]=J[3],F}function b(F,J){var oe=J[0]+J[4]+J[8],K;if(oe>0)K=Math.sqrt(oe+1),F[3]=.5*K,K=.5/K,F[0]=(J[5]-J[7])*K,F[1]=(J[6]-J[2])*K,F[2]=(J[1]-J[3])*K;else{var te=0;J[4]>J[0]&&(te=1),J[8]>J[te*3+te]&&(te=2);var w=(te+1)%3,I=(te+2)%3;K=Math.sqrt(J[te*3+te]-J[w*3+w]-J[I*3+I]+1),F[te]=.5*K,K=.5/K,F[3]=(J[w*3+I]-J[I*3+w])*K,F[w]=(J[w*3+te]+J[te*3+w])*K,F[I]=(J[I*3+te]+J[te*3+I])*K}return F}function P(F,J,oe,K){var te=.5*Math.PI/180;J*=te,oe*=te,K*=te;var w=Math.sin(J),I=Math.cos(J),U=Math.sin(oe),G=Math.cos(oe),_=Math.sin(K),re=Math.cos(K);return F[0]=w*G*re-I*U*_,F[1]=I*U*re+w*G*_,F[2]=I*G*_-w*U*re,F[3]=I*G*re+w*U*_,F}function D(F){return"quat("+F[0]+", "+F[1]+", "+F[2]+", "+F[3]+")"}var z=c.clone,j=c.fromValues,k=c.copy,A=c.set,N=c.add,W=g,Y=c.scale,Q=c.dot,ie=c.lerp,O=c.length,V=O,Z=c.squaredLength,$=Z,ee=c.normalize,se=c.exactEquals,ce=c.equals,me=function(){var F=a.create(),J=a.fromValues(1,0,0),oe=a.fromValues(0,1,0);return function(K,te,w){var I=a.dot(te,w);return I<-.999999?(a.cross(F,J,te),a.len(F)<1e-6&&a.cross(F,oe,te),a.normalize(F,F),h(K,F,Math.PI),K):I>.999999?(K[0]=0,K[1]=0,K[2]=0,K[3]=1,K):(a.cross(F,te,w),K[0]=F[0],K[1]=F[1],K[2]=F[2],K[3]=1+I,ee(K,K))}}(),pe=function(){var F=l(),J=l();return function(oe,K,te,w,I,U){return m(F,K,I,U),m(J,te,w,U),m(oe,F,J,2*U*(1-U)),oe}}(),B=function(){var F=o.create();return function(J,oe,K,te){return F[0]=K[0],F[3]=K[1],F[6]=K[2],F[1]=te[0],F[4]=te[1],F[7]=te[2],F[2]=-oe[0],F[5]=-oe[1],F[8]=-oe[2],ee(J,b(J,F))}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"length",function(){return c}),n.d(r,"fromValues",function(){return l}),n.d(r,"copy",function(){return u}),n.d(r,"set",function(){return h}),n.d(r,"add",function(){return d}),n.d(r,"subtract",function(){return f}),n.d(r,"multiply",function(){return g}),n.d(r,"divide",function(){return y}),n.d(r,"ceil",function(){return T}),n.d(r,"floor",function(){return x}),n.d(r,"min",function(){return C}),n.d(r,"max",function(){return L}),n.d(r,"round",function(){return S}),n.d(r,"scale",function(){return p}),n.d(r,"scaleAndAdd",function(){return m}),n.d(r,"distance",function(){return M}),n.d(r,"squaredDistance",function(){return v}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return b}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return D}),n.d(r,"dot",function(){return z}),n.d(r,"cross",function(){return j}),n.d(r,"lerp",function(){return k}),n.d(r,"hermite",function(){return A}),n.d(r,"bezier",function(){return N}),n.d(r,"random",function(){return W}),n.d(r,"transformMat4",function(){return Y}),n.d(r,"transformMat3",function(){return Q}),n.d(r,"transformQuat",function(){return ie}),n.d(r,"rotateX",function(){return O}),n.d(r,"rotateY",function(){return V}),n.d(r,"rotateZ",function(){return Z}),n.d(r,"angle",function(){return $}),n.d(r,"zero",function(){return ee}),n.d(r,"str",function(){return se}),n.d(r,"exactEquals",function(){return ce}),n.d(r,"equals",function(){return me}),n.d(r,"sub",function(){return pe}),n.d(r,"mul",function(){return B}),n.d(r,"div",function(){return F}),n.d(r,"dist",function(){return J}),n.d(r,"sqrDist",function(){return oe}),n.d(r,"len",function(){return K}),n.d(r,"sqrLen",function(){return te}),n.d(r,"forEach",function(){return w});var i=n(2);function o(){var I=new i.ARRAY_TYPE(3);return i.ARRAY_TYPE!=Float32Array&&(I[0]=0,I[1]=0,I[2]=0),I}function a(I){var U=new i.ARRAY_TYPE(3);return U[0]=I[0],U[1]=I[1],U[2]=I[2],U}function c(I){var U=I[0],G=I[1],_=I[2];return Math.hypot(U,G,_)}function l(I,U,G){var _=new i.ARRAY_TYPE(3);return _[0]=I,_[1]=U,_[2]=G,_}function u(I,U){return I[0]=U[0],I[1]=U[1],I[2]=U[2],I}function h(I,U,G,_){return I[0]=U,I[1]=G,I[2]=_,I}function d(I,U,G){return I[0]=U[0]+G[0],I[1]=U[1]+G[1],I[2]=U[2]+G[2],I}function f(I,U,G){return I[0]=U[0]-G[0],I[1]=U[1]-G[1],I[2]=U[2]-G[2],I}function g(I,U,G){return I[0]=U[0]*G[0],I[1]=U[1]*G[1],I[2]=U[2]*G[2],I}function y(I,U,G){return I[0]=U[0]/G[0],I[1]=U[1]/G[1],I[2]=U[2]/G[2],I}function T(I,U){return I[0]=Math.ceil(U[0]),I[1]=Math.ceil(U[1]),I[2]=Math.ceil(U[2]),I}function x(I,U){return I[0]=Math.floor(U[0]),I[1]=Math.floor(U[1]),I[2]=Math.floor(U[2]),I}function C(I,U,G){return I[0]=Math.min(U[0],G[0]),I[1]=Math.min(U[1],G[1]),I[2]=Math.min(U[2],G[2]),I}function L(I,U,G){return I[0]=Math.max(U[0],G[0]),I[1]=Math.max(U[1],G[1]),I[2]=Math.max(U[2],G[2]),I}function S(I,U){return I[0]=Math.round(U[0]),I[1]=Math.round(U[1]),I[2]=Math.round(U[2]),I}function p(I,U,G){return I[0]=U[0]*G,I[1]=U[1]*G,I[2]=U[2]*G,I}function m(I,U,G,_){return I[0]=U[0]+G[0]*_,I[1]=U[1]+G[1]*_,I[2]=U[2]+G[2]*_,I}function M(I,U){var G=U[0]-I[0],_=U[1]-I[1],re=U[2]-I[2];return Math.hypot(G,_,re)}function v(I,U){var G=U[0]-I[0],_=U[1]-I[1],re=U[2]-I[2];return G*G+_*_+re*re}function R(I){var U=I[0],G=I[1],_=I[2];return U*U+G*G+_*_}function b(I,U){return I[0]=-U[0],I[1]=-U[1],I[2]=-U[2],I}function P(I,U){return I[0]=1/U[0],I[1]=1/U[1],I[2]=1/U[2],I}function D(I,U){var G=U[0],_=U[1],re=U[2],ne=G*G+_*_+re*re;return ne>0&&(ne=1/Math.sqrt(ne)),I[0]=U[0]*ne,I[1]=U[1]*ne,I[2]=U[2]*ne,I}function z(I,U){return I[0]*U[0]+I[1]*U[1]+I[2]*U[2]}function j(I,U,G){var _=U[0],re=U[1],ne=U[2],X=G[0],ae=G[1],ue=G[2];return I[0]=re*ue-ne*ae,I[1]=ne*X-_*ue,I[2]=_*ae-re*X,I}function k(I,U,G,_){var re=U[0],ne=U[1],X=U[2];return I[0]=re+_*(G[0]-re),I[1]=ne+_*(G[1]-ne),I[2]=X+_*(G[2]-X),I}function A(I,U,G,_,re,ne){var X=ne*ne,ae=X*(2*ne-3)+1,ue=X*(ne-2)+ne,he=X*(ne-1),ge=X*(3-2*ne);return I[0]=U[0]*ae+G[0]*ue+_[0]*he+re[0]*ge,I[1]=U[1]*ae+G[1]*ue+_[1]*he+re[1]*ge,I[2]=U[2]*ae+G[2]*ue+_[2]*he+re[2]*ge,I}function N(I,U,G,_,re,ne){var X=1-ne,ae=X*X,ue=ne*ne,he=ae*X,ge=3*ne*ae,Me=3*ue*X,we=ue*ne;return I[0]=U[0]*he+G[0]*ge+_[0]*Me+re[0]*we,I[1]=U[1]*he+G[1]*ge+_[1]*Me+re[1]*we,I[2]=U[2]*he+G[2]*ge+_[2]*Me+re[2]*we,I}function W(I,U){U=U||1;var G=i.RANDOM()*2*Math.PI,_=i.RANDOM()*2-1,re=Math.sqrt(1-_*_)*U;return I[0]=Math.cos(G)*re,I[1]=Math.sin(G)*re,I[2]=_*U,I}function Y(I,U,G){var _=U[0],re=U[1],ne=U[2],X=G[3]*_+G[7]*re+G[11]*ne+G[15];return X=X||1,I[0]=(G[0]*_+G[4]*re+G[8]*ne+G[12])/X,I[1]=(G[1]*_+G[5]*re+G[9]*ne+G[13])/X,I[2]=(G[2]*_+G[6]*re+G[10]*ne+G[14])/X,I}function Q(I,U,G){var _=U[0],re=U[1],ne=U[2];return I[0]=_*G[0]+re*G[3]+ne*G[6],I[1]=_*G[1]+re*G[4]+ne*G[7],I[2]=_*G[2]+re*G[5]+ne*G[8],I}function ie(I,U,G){var _=G[0],re=G[1],ne=G[2],X=G[3],ae=U[0],ue=U[1],he=U[2],ge=re*he-ne*ue,Me=ne*ae-_*he,we=_*ue-re*ae,be=re*we-ne*Me,Ie=ne*ge-_*we,Ce=_*Me-re*ge,ke=X*2;return ge*=ke,Me*=ke,we*=ke,be*=2,Ie*=2,Ce*=2,I[0]=ae+ge+be,I[1]=ue+Me+Ie,I[2]=he+we+Ce,I}function O(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[0],ne[1]=re[1]*Math.cos(_)-re[2]*Math.sin(_),ne[2]=re[1]*Math.sin(_)+re[2]*Math.cos(_),I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function V(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[2]*Math.sin(_)+re[0]*Math.cos(_),ne[1]=re[1],ne[2]=re[2]*Math.cos(_)-re[0]*Math.sin(_),I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function Z(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[0]*Math.cos(_)-re[1]*Math.sin(_),ne[1]=re[0]*Math.sin(_)+re[1]*Math.cos(_),ne[2]=re[2],I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function $(I,U){var G=I[0],_=I[1],re=I[2],ne=U[0],X=U[1],ae=U[2],ue=Math.sqrt(G*G+_*_+re*re),he=Math.sqrt(ne*ne+X*X+ae*ae),ge=ue*he,Me=ge&&z(I,U)/ge;return Math.acos(Math.min(Math.max(Me,-1),1))}function ee(I){return I[0]=0,I[1]=0,I[2]=0,I}function se(I){return"vec3("+I[0]+", "+I[1]+", "+I[2]+")"}function ce(I,U){return I[0]===U[0]&&I[1]===U[1]&&I[2]===U[2]}function me(I,U){var G=I[0],_=I[1],re=I[2],ne=U[0],X=U[1],ae=U[2];return Math.abs(G-ne)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ne))&&Math.abs(_-X)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(X))&&Math.abs(re-ae)<=i.EPSILON*Math.max(1,Math.abs(re),Math.abs(ae))}var pe=f,B=g,F=y,J=M,oe=v,K=c,te=R,w=function(){var I=o();return function(U,G,_,re,ne,X){var ae,ue;for(G||(G=3),_||(_=0),re?ue=Math.min(re*G+_,U.length):ue=U.length,ae=_;ae<ue;ae+=G)I[0]=U[ae],I[1]=U[ae+1],I[2]=U[ae+2],ne(I,I,X),U[ae]=I[0],U[ae+1]=I[1],U[ae+2]=I[2];return U}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"fromValues",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"add",function(){return h}),n.d(r,"subtract",function(){return d}),n.d(r,"multiply",function(){return f}),n.d(r,"divide",function(){return g}),n.d(r,"ceil",function(){return y}),n.d(r,"floor",function(){return T}),n.d(r,"min",function(){return x}),n.d(r,"max",function(){return C}),n.d(r,"round",function(){return L}),n.d(r,"scale",function(){return S}),n.d(r,"scaleAndAdd",function(){return p}),n.d(r,"distance",function(){return m}),n.d(r,"squaredDistance",function(){return M}),n.d(r,"length",function(){return v}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return b}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return D}),n.d(r,"dot",function(){return z}),n.d(r,"cross",function(){return j}),n.d(r,"lerp",function(){return k}),n.d(r,"random",function(){return A}),n.d(r,"transformMat4",function(){return N}),n.d(r,"transformQuat",function(){return W}),n.d(r,"zero",function(){return Y}),n.d(r,"str",function(){return Q}),n.d(r,"exactEquals",function(){return ie}),n.d(r,"equals",function(){return O}),n.d(r,"sub",function(){return V}),n.d(r,"mul",function(){return Z}),n.d(r,"div",function(){return $}),n.d(r,"dist",function(){return ee}),n.d(r,"sqrDist",function(){return se}),n.d(r,"len",function(){return ce}),n.d(r,"sqrLen",function(){return me}),n.d(r,"forEach",function(){return pe});var i=n(2);function o(){var B=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(B[0]=0,B[1]=0,B[2]=0,B[3]=0),B}function a(B){var F=new i.ARRAY_TYPE(4);return F[0]=B[0],F[1]=B[1],F[2]=B[2],F[3]=B[3],F}function c(B,F,J,oe){var K=new i.ARRAY_TYPE(4);return K[0]=B,K[1]=F,K[2]=J,K[3]=oe,K}function l(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B}function u(B,F,J,oe,K){return B[0]=F,B[1]=J,B[2]=oe,B[3]=K,B}function h(B,F,J){return B[0]=F[0]+J[0],B[1]=F[1]+J[1],B[2]=F[2]+J[2],B[3]=F[3]+J[3],B}function d(B,F,J){return B[0]=F[0]-J[0],B[1]=F[1]-J[1],B[2]=F[2]-J[2],B[3]=F[3]-J[3],B}function f(B,F,J){return B[0]=F[0]*J[0],B[1]=F[1]*J[1],B[2]=F[2]*J[2],B[3]=F[3]*J[3],B}function g(B,F,J){return B[0]=F[0]/J[0],B[1]=F[1]/J[1],B[2]=F[2]/J[2],B[3]=F[3]/J[3],B}function y(B,F){return B[0]=Math.ceil(F[0]),B[1]=Math.ceil(F[1]),B[2]=Math.ceil(F[2]),B[3]=Math.ceil(F[3]),B}function T(B,F){return B[0]=Math.floor(F[0]),B[1]=Math.floor(F[1]),B[2]=Math.floor(F[2]),B[3]=Math.floor(F[3]),B}function x(B,F,J){return B[0]=Math.min(F[0],J[0]),B[1]=Math.min(F[1],J[1]),B[2]=Math.min(F[2],J[2]),B[3]=Math.min(F[3],J[3]),B}function C(B,F,J){return B[0]=Math.max(F[0],J[0]),B[1]=Math.max(F[1],J[1]),B[2]=Math.max(F[2],J[2]),B[3]=Math.max(F[3],J[3]),B}function L(B,F){return B[0]=Math.round(F[0]),B[1]=Math.round(F[1]),B[2]=Math.round(F[2]),B[3]=Math.round(F[3]),B}function S(B,F,J){return B[0]=F[0]*J,B[1]=F[1]*J,B[2]=F[2]*J,B[3]=F[3]*J,B}function p(B,F,J,oe){return B[0]=F[0]+J[0]*oe,B[1]=F[1]+J[1]*oe,B[2]=F[2]+J[2]*oe,B[3]=F[3]+J[3]*oe,B}function m(B,F){var J=F[0]-B[0],oe=F[1]-B[1],K=F[2]-B[2],te=F[3]-B[3];return Math.hypot(J,oe,K,te)}function M(B,F){var J=F[0]-B[0],oe=F[1]-B[1],K=F[2]-B[2],te=F[3]-B[3];return J*J+oe*oe+K*K+te*te}function v(B){var F=B[0],J=B[1],oe=B[2],K=B[3];return Math.hypot(F,J,oe,K)}function R(B){var F=B[0],J=B[1],oe=B[2],K=B[3];return F*F+J*J+oe*oe+K*K}function b(B,F){return B[0]=-F[0],B[1]=-F[1],B[2]=-F[2],B[3]=-F[3],B}function P(B,F){return B[0]=1/F[0],B[1]=1/F[1],B[2]=1/F[2],B[3]=1/F[3],B}function D(B,F){var J=F[0],oe=F[1],K=F[2],te=F[3],w=J*J+oe*oe+K*K+te*te;return w>0&&(w=1/Math.sqrt(w)),B[0]=J*w,B[1]=oe*w,B[2]=K*w,B[3]=te*w,B}function z(B,F){return B[0]*F[0]+B[1]*F[1]+B[2]*F[2]+B[3]*F[3]}function j(B,F,J,oe){var K=J[0]*oe[1]-J[1]*oe[0],te=J[0]*oe[2]-J[2]*oe[0],w=J[0]*oe[3]-J[3]*oe[0],I=J[1]*oe[2]-J[2]*oe[1],U=J[1]*oe[3]-J[3]*oe[1],G=J[2]*oe[3]-J[3]*oe[2],_=F[0],re=F[1],ne=F[2],X=F[3];return B[0]=re*G-ne*U+X*I,B[1]=-(_*G)+ne*w-X*te,B[2]=_*U-re*w+X*K,B[3]=-(_*I)+re*te-ne*K,B}function k(B,F,J,oe){var K=F[0],te=F[1],w=F[2],I=F[3];return B[0]=K+oe*(J[0]-K),B[1]=te+oe*(J[1]-te),B[2]=w+oe*(J[2]-w),B[3]=I+oe*(J[3]-I),B}function A(B,F){F=F||1;var J,oe,K,te,w,I;do J=i.RANDOM()*2-1,oe=i.RANDOM()*2-1,w=J*J+oe*oe;while(w>=1);do K=i.RANDOM()*2-1,te=i.RANDOM()*2-1,I=K*K+te*te;while(I>=1);var U=Math.sqrt((1-w)/I);return B[0]=F*J,B[1]=F*oe,B[2]=F*K*U,B[3]=F*te*U,B}function N(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3];return B[0]=J[0]*oe+J[4]*K+J[8]*te+J[12]*w,B[1]=J[1]*oe+J[5]*K+J[9]*te+J[13]*w,B[2]=J[2]*oe+J[6]*K+J[10]*te+J[14]*w,B[3]=J[3]*oe+J[7]*K+J[11]*te+J[15]*w,B}function W(B,F,J){var oe=F[0],K=F[1],te=F[2],w=J[0],I=J[1],U=J[2],G=J[3],_=G*oe+I*te-U*K,re=G*K+U*oe-w*te,ne=G*te+w*K-I*oe,X=-w*oe-I*K-U*te;return B[0]=_*G+X*-w+re*-U-ne*-I,B[1]=re*G+X*-I+ne*-w-_*-U,B[2]=ne*G+X*-U+_*-I-re*-w,B[3]=F[3],B}function Y(B){return B[0]=0,B[1]=0,B[2]=0,B[3]=0,B}function Q(B){return"vec4("+B[0]+", "+B[1]+", "+B[2]+", "+B[3]+")"}function ie(B,F){return B[0]===F[0]&&B[1]===F[1]&&B[2]===F[2]&&B[3]===F[3]}function O(B,F){var J=B[0],oe=B[1],K=B[2],te=B[3],w=F[0],I=F[1],U=F[2],G=F[3];return Math.abs(J-w)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(w))&&Math.abs(oe-I)<=i.EPSILON*Math.max(1,Math.abs(oe),Math.abs(I))&&Math.abs(K-U)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(U))&&Math.abs(te-G)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(G))}var V=d,Z=f,$=g,ee=m,se=M,ce=v,me=R,pe=function(){var B=o();return function(F,J,oe,K,te,w){var I,U;for(J||(J=4),oe||(oe=0),K?U=Math.min(K*J+oe,F.length):U=F.length,I=oe;I<U;I+=J)B[0]=F[I],B[1]=F[I+1],B[2]=F[I+2],B[3]=F[I+3],te(B,B,w),F[I]=B[0],F[I+1]=B[1],F[I+2]=B[2],F[I+3]=B[3];return F}}()},function(e,r,n){n.r(r),n.d(r,"create",function(){return c}),n.d(r,"clone",function(){return l}),n.d(r,"fromValues",function(){return u}),n.d(r,"fromRotationTranslationValues",function(){return h}),n.d(r,"fromRotationTranslation",function(){return d}),n.d(r,"fromTranslation",function(){return f}),n.d(r,"fromRotation",function(){return g}),n.d(r,"fromMat4",function(){return y}),n.d(r,"copy",function(){return T}),n.d(r,"identity",function(){return x}),n.d(r,"set",function(){return C}),n.d(r,"getReal",function(){return L}),n.d(r,"getDual",function(){return S}),n.d(r,"setReal",function(){return p}),n.d(r,"setDual",function(){return m}),n.d(r,"getTranslation",function(){return M}),n.d(r,"translate",function(){return v}),n.d(r,"rotateX",function(){return R}),n.d(r,"rotateY",function(){return b}),n.d(r,"rotateZ",function(){return P}),n.d(r,"rotateByQuatAppend",function(){return D}),n.d(r,"rotateByQuatPrepend",function(){return z}),n.d(r,"rotateAroundAxis",function(){return j}),n.d(r,"add",function(){return k}),n.d(r,"multiply",function(){return A}),n.d(r,"mul",function(){return N}),n.d(r,"scale",function(){return W}),n.d(r,"dot",function(){return Y}),n.d(r,"lerp",function(){return Q}),n.d(r,"invert",function(){return ie}),n.d(r,"conjugate",function(){return O}),n.d(r,"length",function(){return V}),n.d(r,"len",function(){return Z}),n.d(r,"squaredLength",function(){return $}),n.d(r,"sqrLen",function(){return ee}),n.d(r,"normalize",function(){return se}),n.d(r,"str",function(){return ce}),n.d(r,"exactEquals",function(){return me}),n.d(r,"equals",function(){return pe});var i=n(2),o=n(7),a=n(6);function c(){var B=new i.ARRAY_TYPE(8);return i.ARRAY_TYPE!=Float32Array&&(B[0]=0,B[1]=0,B[2]=0,B[4]=0,B[5]=0,B[6]=0,B[7]=0),B[3]=1,B}function l(B){var F=new i.ARRAY_TYPE(8);return F[0]=B[0],F[1]=B[1],F[2]=B[2],F[3]=B[3],F[4]=B[4],F[5]=B[5],F[6]=B[6],F[7]=B[7],F}function u(B,F,J,oe,K,te,w,I){var U=new i.ARRAY_TYPE(8);return U[0]=B,U[1]=F,U[2]=J,U[3]=oe,U[4]=K,U[5]=te,U[6]=w,U[7]=I,U}function h(B,F,J,oe,K,te,w){var I=new i.ARRAY_TYPE(8);I[0]=B,I[1]=F,I[2]=J,I[3]=oe;var U=K*.5,G=te*.5,_=w*.5;return I[4]=U*oe+G*J-_*F,I[5]=G*oe+_*B-U*J,I[6]=_*oe+U*F-G*B,I[7]=-U*B-G*F-_*J,I}function d(B,F,J){var oe=J[0]*.5,K=J[1]*.5,te=J[2]*.5,w=F[0],I=F[1],U=F[2],G=F[3];return B[0]=w,B[1]=I,B[2]=U,B[3]=G,B[4]=oe*G+K*U-te*I,B[5]=K*G+te*w-oe*U,B[6]=te*G+oe*I-K*w,B[7]=-oe*w-K*I-te*U,B}function f(B,F){return B[0]=0,B[1]=0,B[2]=0,B[3]=1,B[4]=F[0]*.5,B[5]=F[1]*.5,B[6]=F[2]*.5,B[7]=0,B}function g(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B[4]=0,B[5]=0,B[6]=0,B[7]=0,B}function y(B,F){var J=o.create();a.getRotation(J,F);var oe=new i.ARRAY_TYPE(3);return a.getTranslation(oe,F),d(B,J,oe),B}function T(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B[4]=F[4],B[5]=F[5],B[6]=F[6],B[7]=F[7],B}function x(B){return B[0]=0,B[1]=0,B[2]=0,B[3]=1,B[4]=0,B[5]=0,B[6]=0,B[7]=0,B}function C(B,F,J,oe,K,te,w,I,U){return B[0]=F,B[1]=J,B[2]=oe,B[3]=K,B[4]=te,B[5]=w,B[6]=I,B[7]=U,B}var L=o.copy;function S(B,F){return B[0]=F[4],B[1]=F[5],B[2]=F[6],B[3]=F[7],B}var p=o.copy;function m(B,F){return B[4]=F[0],B[5]=F[1],B[6]=F[2],B[7]=F[3],B}function M(B,F){var J=F[4],oe=F[5],K=F[6],te=F[7],w=-F[0],I=-F[1],U=-F[2],G=F[3];return B[0]=(J*G+te*w+oe*U-K*I)*2,B[1]=(oe*G+te*I+K*w-J*U)*2,B[2]=(K*G+te*U+J*I-oe*w)*2,B}function v(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[0]*.5,U=J[1]*.5,G=J[2]*.5,_=F[4],re=F[5],ne=F[6],X=F[7];return B[0]=oe,B[1]=K,B[2]=te,B[3]=w,B[4]=w*I+K*G-te*U+_,B[5]=w*U+te*I-oe*G+re,B[6]=w*G+oe*U-K*I+ne,B[7]=-oe*I-K*U-te*G+X,B}function R(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateX(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function b(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateY(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function P(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateZ(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function D(B,F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=F[0],U=F[1],G=F[2],_=F[3];return B[0]=I*w+_*oe+U*te-G*K,B[1]=U*w+_*K+G*oe-I*te,B[2]=G*w+_*te+I*K-U*oe,B[3]=_*w-I*oe-U*K-G*te,I=F[4],U=F[5],G=F[6],_=F[7],B[4]=I*w+_*oe+U*te-G*K,B[5]=U*w+_*K+G*oe-I*te,B[6]=G*w+_*te+I*K-U*oe,B[7]=_*w-I*oe-U*K-G*te,B}function z(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[0],U=J[1],G=J[2],_=J[3];return B[0]=oe*_+w*I+K*G-te*U,B[1]=K*_+w*U+te*I-oe*G,B[2]=te*_+w*G+oe*U-K*I,B[3]=w*_-oe*I-K*U-te*G,I=J[4],U=J[5],G=J[6],_=J[7],B[4]=oe*_+w*I+K*G-te*U,B[5]=K*_+w*U+te*I-oe*G,B[6]=te*_+w*G+oe*U-K*I,B[7]=w*_-oe*I-K*U-te*G,B}function j(B,F,J,oe){if(Math.abs(oe)<i.EPSILON)return T(B,F);var K=Math.hypot(J[0],J[1],J[2]);oe=oe*.5;var te=Math.sin(oe),w=te*J[0]/K,I=te*J[1]/K,U=te*J[2]/K,G=Math.cos(oe),_=F[0],re=F[1],ne=F[2],X=F[3];B[0]=_*G+X*w+re*U-ne*I,B[1]=re*G+X*I+ne*w-_*U,B[2]=ne*G+X*U+_*I-re*w,B[3]=X*G-_*w-re*I-ne*U;var ae=F[4],ue=F[5],he=F[6],ge=F[7];return B[4]=ae*G+ge*w+ue*U-he*I,B[5]=ue*G+ge*I+he*w-ae*U,B[6]=he*G+ge*U+ae*I-ue*w,B[7]=ge*G-ae*w-ue*I-he*U,B}function k(B,F,J){return B[0]=F[0]+J[0],B[1]=F[1]+J[1],B[2]=F[2]+J[2],B[3]=F[3]+J[3],B[4]=F[4]+J[4],B[5]=F[5]+J[5],B[6]=F[6]+J[6],B[7]=F[7]+J[7],B}function A(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[4],U=J[5],G=J[6],_=J[7],re=F[4],ne=F[5],X=F[6],ae=F[7],ue=J[0],he=J[1],ge=J[2],Me=J[3];return B[0]=oe*Me+w*ue+K*ge-te*he,B[1]=K*Me+w*he+te*ue-oe*ge,B[2]=te*Me+w*ge+oe*he-K*ue,B[3]=w*Me-oe*ue-K*he-te*ge,B[4]=oe*_+w*I+K*G-te*U+re*Me+ae*ue+ne*ge-X*he,B[5]=K*_+w*U+te*I-oe*G+ne*Me+ae*he+X*ue-re*ge,B[6]=te*_+w*G+oe*U-K*I+X*Me+ae*ge+re*he-ne*ue,B[7]=w*_-oe*I-K*U-te*G+ae*Me-re*ue-ne*he-X*ge,B}var N=A;function W(B,F,J){return B[0]=F[0]*J,B[1]=F[1]*J,B[2]=F[2]*J,B[3]=F[3]*J,B[4]=F[4]*J,B[5]=F[5]*J,B[6]=F[6]*J,B[7]=F[7]*J,B}var Y=o.dot;function Q(B,F,J,oe){var K=1-oe;return Y(F,J)<0&&(oe=-oe),B[0]=F[0]*K+J[0]*oe,B[1]=F[1]*K+J[1]*oe,B[2]=F[2]*K+J[2]*oe,B[3]=F[3]*K+J[3]*oe,B[4]=F[4]*K+J[4]*oe,B[5]=F[5]*K+J[5]*oe,B[6]=F[6]*K+J[6]*oe,B[7]=F[7]*K+J[7]*oe,B}function ie(B,F){var J=$(F);return B[0]=-F[0]/J,B[1]=-F[1]/J,B[2]=-F[2]/J,B[3]=F[3]/J,B[4]=-F[4]/J,B[5]=-F[5]/J,B[6]=-F[6]/J,B[7]=F[7]/J,B}function O(B,F){return B[0]=-F[0],B[1]=-F[1],B[2]=-F[2],B[3]=F[3],B[4]=-F[4],B[5]=-F[5],B[6]=-F[6],B[7]=F[7],B}var V=o.length,Z=V,$=o.squaredLength,ee=$;function se(B,F){var J=$(F);if(J>0){J=Math.sqrt(J);var oe=F[0]/J,K=F[1]/J,te=F[2]/J,w=F[3]/J,I=F[4],U=F[5],G=F[6],_=F[7],re=oe*I+K*U+te*G+w*_;B[0]=oe,B[1]=K,B[2]=te,B[3]=w,B[4]=(I-oe*re)/J,B[5]=(U-K*re)/J,B[6]=(G-te*re)/J,B[7]=(_-w*re)/J}return B}function ce(B){return"quat2("+B[0]+", "+B[1]+", "+B[2]+", "+B[3]+", "+B[4]+", "+B[5]+", "+B[6]+", "+B[7]+")"}function me(B,F){return B[0]===F[0]&&B[1]===F[1]&&B[2]===F[2]&&B[3]===F[3]&&B[4]===F[4]&&B[5]===F[5]&&B[6]===F[6]&&B[7]===F[7]}function pe(B,F){var J=B[0],oe=B[1],K=B[2],te=B[3],w=B[4],I=B[5],U=B[6],G=B[7],_=F[0],re=F[1],ne=F[2],X=F[3],ae=F[4],ue=F[5],he=F[6],ge=F[7];return Math.abs(J-_)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(_))&&Math.abs(oe-re)<=i.EPSILON*Math.max(1,Math.abs(oe),Math.abs(re))&&Math.abs(K-ne)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(ne))&&Math.abs(te-X)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(X))&&Math.abs(w-ae)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(ae))&&Math.abs(I-ue)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(ue))&&Math.abs(U-he)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(he))&&Math.abs(G-ge)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ge))}},function(e,r,n){n.r(r),n.d(r,"create",function(){return o}),n.d(r,"clone",function(){return a}),n.d(r,"fromValues",function(){return c}),n.d(r,"copy",function(){return l}),n.d(r,"set",function(){return u}),n.d(r,"add",function(){return h}),n.d(r,"subtract",function(){return d}),n.d(r,"multiply",function(){return f}),n.d(r,"divide",function(){return g}),n.d(r,"ceil",function(){return y}),n.d(r,"floor",function(){return T}),n.d(r,"min",function(){return x}),n.d(r,"max",function(){return C}),n.d(r,"round",function(){return L}),n.d(r,"scale",function(){return S}),n.d(r,"scaleAndAdd",function(){return p}),n.d(r,"distance",function(){return m}),n.d(r,"squaredDistance",function(){return M}),n.d(r,"length",function(){return v}),n.d(r,"squaredLength",function(){return R}),n.d(r,"negate",function(){return b}),n.d(r,"inverse",function(){return P}),n.d(r,"normalize",function(){return D}),n.d(r,"dot",function(){return z}),n.d(r,"cross",function(){return j}),n.d(r,"lerp",function(){return k}),n.d(r,"random",function(){return A}),n.d(r,"transformMat2",function(){return N}),n.d(r,"transformMat2d",function(){return W}),n.d(r,"transformMat3",function(){return Y}),n.d(r,"transformMat4",function(){return Q}),n.d(r,"rotate",function(){return ie}),n.d(r,"angle",function(){return O}),n.d(r,"zero",function(){return V}),n.d(r,"str",function(){return Z}),n.d(r,"exactEquals",function(){return $}),n.d(r,"equals",function(){return ee}),n.d(r,"len",function(){return se}),n.d(r,"sub",function(){return ce}),n.d(r,"mul",function(){return me}),n.d(r,"div",function(){return pe}),n.d(r,"dist",function(){return B}),n.d(r,"sqrDist",function(){return F}),n.d(r,"sqrLen",function(){return J}),n.d(r,"forEach",function(){return oe});var i=n(2);function o(){var K=new i.ARRAY_TYPE(2);return i.ARRAY_TYPE!=Float32Array&&(K[0]=0,K[1]=0),K}function a(K){var te=new i.ARRAY_TYPE(2);return te[0]=K[0],te[1]=K[1],te}function c(K,te){var w=new i.ARRAY_TYPE(2);return w[0]=K,w[1]=te,w}function l(K,te){return K[0]=te[0],K[1]=te[1],K}function u(K,te,w){return K[0]=te,K[1]=w,K}function h(K,te,w){return K[0]=te[0]+w[0],K[1]=te[1]+w[1],K}function d(K,te,w){return K[0]=te[0]-w[0],K[1]=te[1]-w[1],K}function f(K,te,w){return K[0]=te[0]*w[0],K[1]=te[1]*w[1],K}function g(K,te,w){return K[0]=te[0]/w[0],K[1]=te[1]/w[1],K}function y(K,te){return K[0]=Math.ceil(te[0]),K[1]=Math.ceil(te[1]),K}function T(K,te){return K[0]=Math.floor(te[0]),K[1]=Math.floor(te[1]),K}function x(K,te,w){return K[0]=Math.min(te[0],w[0]),K[1]=Math.min(te[1],w[1]),K}function C(K,te,w){return K[0]=Math.max(te[0],w[0]),K[1]=Math.max(te[1],w[1]),K}function L(K,te){return K[0]=Math.round(te[0]),K[1]=Math.round(te[1]),K}function S(K,te,w){return K[0]=te[0]*w,K[1]=te[1]*w,K}function p(K,te,w,I){return K[0]=te[0]+w[0]*I,K[1]=te[1]+w[1]*I,K}function m(K,te){var w=te[0]-K[0],I=te[1]-K[1];return Math.hypot(w,I)}function M(K,te){var w=te[0]-K[0],I=te[1]-K[1];return w*w+I*I}function v(K){var te=K[0],w=K[1];return Math.hypot(te,w)}function R(K){var te=K[0],w=K[1];return te*te+w*w}function b(K,te){return K[0]=-te[0],K[1]=-te[1],K}function P(K,te){return K[0]=1/te[0],K[1]=1/te[1],K}function D(K,te){var w=te[0],I=te[1],U=w*w+I*I;return U>0&&(U=1/Math.sqrt(U)),K[0]=te[0]*U,K[1]=te[1]*U,K}function z(K,te){return K[0]*te[0]+K[1]*te[1]}function j(K,te,w){var I=te[0]*w[1]-te[1]*w[0];return K[0]=K[1]=0,K[2]=I,K}function k(K,te,w,I){var U=te[0],G=te[1];return K[0]=U+I*(w[0]-U),K[1]=G+I*(w[1]-G),K}function A(K,te){te=te||1;var w=i.RANDOM()*2*Math.PI;return K[0]=Math.cos(w)*te,K[1]=Math.sin(w)*te,K}function N(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[2]*U,K[1]=w[1]*I+w[3]*U,K}function W(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[2]*U+w[4],K[1]=w[1]*I+w[3]*U+w[5],K}function Y(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[3]*U+w[6],K[1]=w[1]*I+w[4]*U+w[7],K}function Q(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[4]*U+w[12],K[1]=w[1]*I+w[5]*U+w[13],K}function ie(K,te,w,I){var U=te[0]-w[0],G=te[1]-w[1],_=Math.sin(I),re=Math.cos(I);return K[0]=U*re-G*_+w[0],K[1]=U*_+G*re+w[1],K}function O(K,te){var w=K[0],I=K[1],U=te[0],G=te[1],_=Math.sqrt(w*w+I*I)*Math.sqrt(U*U+G*G),re=_&&(w*U+I*G)/_;return Math.acos(Math.min(Math.max(re,-1),1))}function V(K){return K[0]=0,K[1]=0,K}function Z(K){return"vec2("+K[0]+", "+K[1]+")"}function $(K,te){return K[0]===te[0]&&K[1]===te[1]}function ee(K,te){var w=K[0],I=K[1],U=te[0],G=te[1];return Math.abs(w-U)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(U))&&Math.abs(I-G)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(G))}var se=v,ce=d,me=f,pe=g,B=m,F=M,J=R,oe=function(){var K=o();return function(te,w,I,U,G,_){var re,ne;for(w||(w=2),I||(I=0),U?ne=Math.min(U*w+I,te.length):ne=te.length,re=I;re<ne;re+=w)K[0]=te[re],K[1]=te[re+1],G(K,K,_),te[re]=K[0],te[re+1]=K[1];return te}}()},function(e,r,n){n.r(r),n.d(r,"default",function(){return O});var i=n(13),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(25),g=n(1),y=n(36),T=n(43),x=n(41),C=n(56),L=n(73),S=n(45),p=n(78),m=n(37),M=n(82);n(1).glMatrix.setMatrixArrayType(Array);function v(V,Z){var $;if(typeof Symbol>"u"||V[Symbol.iterator]==null){if(Array.isArray(V)||($=R(V))||Z){$&&(V=$);var ee=0,se=function(){};return{s:se,n:function(){return ee>=V.length?{done:!0}:{done:!1,value:V[ee++]}},e:function(F){throw F},f:se}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ce=!0,me=!1,pe;return{s:function(){$=V[Symbol.iterator]()},n:function(){var F=$.next();return ce=F.done,F},e:function(F){me=!0,pe=F},f:function(){try{!ce&&$.return!=null&&$.return()}finally{if(me)throw pe}}}}function R(V,Z){if(V){if(typeof V=="string")return b(V,Z);var $=Object.prototype.toString.call(V).slice(8,-1);if($==="Object"&&V.constructor&&($=V.constructor.name),$==="Map"||$==="Set")return Array.from(V);if($==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test($))return b(V,Z)}}function b(V,Z){(Z==null||Z>V.length)&&(Z=V.length);for(var $=0,ee=new Array(Z);$<Z;$++)ee[$]=V[$];return ee}var P={autoUpdate:!1,preserveDrawingBuffer:!1,bufferSize:1500},D=`attribute vec3 a_vertexPosition;
3
+ attribute vec3 a_vertexTextureCoord;
4
+ varying vec3 vTextureCoord;
5
+ uniform mat3 viewMatrix;
6
+ uniform mat3 projectionMatrix;
7
+
8
+ void main() {
9
+ gl_PointSize = 1.0;
10
+ vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
11
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
12
+ vTextureCoord = a_vertexTextureCoord;
13
+ }
14
+ `,z=`precision mediump float;
15
+ varying vec3 vTextureCoord;
16
+ uniform sampler2D u_texSampler;
17
+ void main() {
18
+ gl_FragColor = texture2D(u_texSampler, vTextureCoord.xy);
19
+ }
20
+ `,j=Symbol("glRenderer"),k=Symbol("canvasRenderer"),A=Symbol("options"),N=Symbol("globalTransform"),W=Symbol("applyGlobalTransform"),Y=Symbol("canvas");function Q(V){var Z=V.gl,$=V.fbo;$&&Z.bindFramebuffer(Z.FRAMEBUFFER,$),V._draw(),$&&Z.bindFramebuffer(Z.FRAMEBUFFER,null)}function ie(V,Z,$,ee){var se=V.createTexture(Z.canvas),ce=[[[0,0],[$,0],[$,ee],[0,ee],[0,0]]];ce.closed=!0;var me=new L.default({contours:ce});me.setTexture(se),V.setMeshData([me.meshData]),Q(V),se.delete(),Z.clearRect(0,0,$,ee),delete Z._filter}var O=function(){function V(Z){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};u()(this,V);var ee=$.contextType;if(ee||(typeof WebGL2RenderingContext=="function"?ee="webgl2":typeof WebGLRenderingContext=="function"?ee="webgl":ee="2d"),!Z.getContext){var se=Z;Z={getContext:function(){return se},width:$.width,height:$.height},se.canvas=Z,ee="2d"}if(this[Y]=Z,ee!=="webgl"&&ee!=="webgl2"&&ee!=="2d")throw new Error("Unknown context type ".concat(ee));if($.contextType=ee,this[A]=Object.assign({},P,$),ee==="webgl"||ee==="webgl2"){ee==="webgl2"&&(this[A].webgl2=!0);var ce=new f.default(Z,this[A]);ee==="webgl2"&&!ce.isWebGL2&&($.contextType="webgl"),Object(M.createShaders)(ce),Object(M.applyShader)(ce),Object(M.createCloudShaders)(ce);var me=ce.gl;me.clearColor(0,0,0,0),me.blendFuncSeparate(me.SRC_ALPHA,me.ONE_MINUS_SRC_ALPHA,me.ONE,me.ONE_MINUS_SRC_ALPHA),this[j]=ce}else this[k]=new y.default(Z,this[A]);this[N]=[1,0,0,0,1,0,0,0,1],this.updateResolution()}return d()(V,[{key:W,value:function(){var $=this[j]||this[k];if(this[j]){var ee=this.canvas,se=ee.width,ce=ee.height;$.uniforms.viewMatrix=this.viewMatrix,$.uniforms.projectionMatrix=this.projectionMatrix,$.uniforms.u_resolution=[se,ce]}}},{key:"updateResolution",value:function(){var $=this.canvas,ee=$.width,se=$.height,ce=[1,0,0,0,1,0,-ee/2,-se/2,1],me=[2/ee,0,0,0,-2/se,0,0,0,1],pe=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),me,ce);this.projectionMatrix=pe,this[j]&&this[j].gl.viewport(0,0,ee,se)}},{key:"createTexture",value:function($,ee){var se=this[j]||this[k];return se.createTexture($,ee)}},{key:"loadTexture",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.useImageBitmap,ce=se===void 0?!1:se,me=this[j]||this[k];return me.loadTexture($,{useImageBitmap:ce})}},{key:"createText",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.font,ce=se===void 0?"16px arial":se,me=ee.fillColor,pe=me===void 0?null:me,B=ee.strokeColor,F=B===void 0?null:B,J=ee.strokeWidth,oe=J===void 0?1:J;if(this[j]){var K=m.default.createText($,{font:ce,fillColor:pe,strokeColor:F,strokeWidth:oe});return{image:this.createTexture(K.image),rect:K.rect}}return{_img:{font:ce,fillColor:pe,strokeColor:F,strokeWidth:oe,text:$}}}},{key:"createProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,se=$.fragment,ce=$.options;if(this[j]){var me=this[j].compileSync(se,ee);return me._attribOpts=ce,me}throw new Error("Context 2D cannot create webgl program.")}},{key:"createPassProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,se=ee===void 0?D:ee,ce=$.fragment,me=ce===void 0?z:ce,pe=$.options;return this.createProgram({vertex:se,fragment:me,options:pe})}},{key:"useProgram",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this[j]){var se=Object.assign({},$._attribOpts,ee);return this[j].useProgram($,se)}throw new Error("Context 2D cannot use webgl program.")}},{key:"deleteTexture",value:function($){var ee=this[j]||this[k];return ee.deleteTexture($)}},{key:"clear",value:function(){if(this[j]){var $=this[j].gl;$.clear($.COLOR_BUFFER_BIT)}else{var ee;(ee=this[k]).clear.apply(ee,arguments)}}},{key:"drawMeshCloud",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.clear,ce=se===void 0?!1:se,me=ee.program,pe=me===void 0?null:me,B=this[j]||this[k],F=pe||$.program;if(this[j]){var J=B.gl;if(ce&&J.clear(J.COLOR_BUFFER_BIT),F)B.program!==F&&this.useProgram(F,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}});else{var oe=$.mesh.meshData,K=!!oe.uniforms.u_texSampler,te=!!oe.uniforms.u_filterFlag,w=!!oe.uniforms.u_radialGradientVector,I=$.hasCloudColor,U=$.hasCloudFilter,G=!!oe.uniforms.u_clipSampler;Object(M.applyCloudShader)(B,{hasTexture:K,hasFilter:te,hasGradient:w,hasCloudColor:I,hasCloudFilter:U,hasClipPath:G})}this[W](),B.setMeshData([$.meshData]),$.beforeRender&&$.beforeRender(J,$),Q(B),$.afterRender&&$.afterRender(J,$)}else B.setTransform(this.globalTransformMatrix),B.drawMeshCloud($,{clear:ce,hook:!1})}},{key:"drawMeshes",value:function($){var ee=this,se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ce=se.clear,me=ce===void 0?!1:ce,pe=se.program,B=pe===void 0?null:pe,F=this[j]||this[k];this[j]?function(){var J=F.fbo,oe=Object(T.default)(ee,$,B==null),K=F.gl;me&&K.clear(K.COLOR_BUFFER_BIT);var te=!Object(p.isUnitTransform)(ee.globalTransformMatrix);ee._drawCalls=0;var w=v(oe),I;try{var U=function(){var _=I.value;ee._drawCalls++;var re=B||_.program;if(_ instanceof S.default)ee.drawMeshCloud(_,{clear:me,program:re});else{var ne=ee.canvas,X=ne.width,ae=ne.height;if(_.beforeRender&&_.beforeRender(K,_),_.pass.length&&((!ee.fbo||ee.fbo.width!==X||ee.fbo.height!==ae)&&(ee.fbo={width:X,height:ae,target:F.createFBO(),buffer:F.createFBO(),swap:function(){var ze=[this.buffer,this.target];this.target=ze[0],this.buffer=ze[1]}}),F.bindFBO(ee.fbo.target)),!re&&_.filterCanvas){Object(M.applyShader)(F,{hasTexture:!0});var ue=ee.filterContext;if(!ue){var he=m.default.createCanvas(X,ae);ue=he.getContext("2d"),ee.filterContext=ue}var ge=$[_.packIndex],Me=ge.filter,we=$[_.packIndex+1],be=$[_.packIndex-1];(!be||!be.filterCanvas||be.filter!==Me)&&(!we||!we.filterCanvas||we.filter!==Me)?(te?(ue.save(),Object(x.drawMesh2D)(ge,ue,!1),ue.restore(),Object(x.applyFilter)(ue,Me)):Object(x.drawMesh2D)(ge,ue,!0),ee[W](),ie(F,ue,X,ae)):(te&&ue.save(),Object(x.drawMesh2D)(ge,ue,!1),te&&ue.restore(),(!we||!we.filterCanvas||ge.filter!==we.filter)&&(Object(x.applyFilter)(ue,Me),ee[W](),ie(F,ue,X,ae)))}else{if(re)F.program!==re&&ee.useProgram(re,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}});else{var Ie=!!_.uniforms.u_texSampler,Ce=!!_.uniforms.u_filterFlag,ke=!!_.uniforms.u_radialGradientVector,Ee=!!_.uniforms.u_clipSampler;Object(M.applyShader)(F,{hasTexture:Ie,hasFilter:Ce,hasGradient:ke,hasClipPath:Ee})}_.filterCanvas&&console.warn("User program ignored some filter effects."),ee[W](),F.setMeshData([_]),Q(F)}if(_.pass.length){var Ae=_.pass.length;_.pass.forEach(function(Oe,ze){Oe.blend=_.enableBlend,Oe.setTexture(F.fbo.texture),ze===Ae-1?F.bindFBO(J):(ee.fbo.swap(),F.bindFBO(ee.fbo.target)),Oe.program?F.useProgram(Oe.program):(ee.defaultPassProgram=ee.defaultPassProgram||ee.createPassProgram(),F.useProgram(ee.defaultPassProgram)),F.setMeshData([Oe.meshData]),K.clear(K.COLOR_BUFFER_BIT),Q(F)})}_.afterRender&&_.afterRender(K,_)}};for(w.s();!(I=w.n()).done;)U()}catch(G){w.e(G)}finally{w.f()}}():(F.setTransform(this.globalTransformMatrix),F.drawMeshes($,{clear:me}))}},{key:"drawImage",value:function($){for(var ee=arguments.length,se=new Array(ee>1?ee-1:0),ce=1;ce<ee;ce++)se[ce-1]=arguments[ce];var me=se.length;if(me<2)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': 3 arguments required, but only ".concat(se.length+1," present."));if(me!==2&&me!==4&&me!==8)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': Valid arities are: [3, 5, 9], but ".concat(se.length+1," arguments provided."));var pe=null,B=null;me===2?pe=[se[0],se[1],$.width,$.height]:me===4?pe=se:me===8&&(B=se.slice(0,4),pe=se.slice(4));var F=this.createTexture($),J=this.canvas,oe=J.width,K=J.height,te=new C.default;te.rect(pe[0],pe[1],oe,K);var w=new L.default(te,{width:oe,height:K});w.setTexture(F,{rect:pe,srcRect:B}),this.drawMeshes([w]),this.deleteTexture(F)}},{key:"setGlobalTransform",value:function(){return this[N]=[arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1],0,arguments.length<=2?void 0:arguments[2],arguments.length<=3?void 0:arguments[3],0,arguments.length<=4?void 0:arguments[4],arguments.length<=5?void 0:arguments[5],1],this}},{key:"globalTransform",value:function(){for(var $=this[N],ee=arguments.length,se=new Array(ee),ce=0;ce<ee;ce++)se[ce]=arguments[ce];return this[N]=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),$,se),this}},{key:"globalTranslate",value:function($,ee){var se=g.mat3.create();return se=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),se,[$,ee]),this.globalTransform.apply(this,c()(se))}},{key:"globalRotate",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],se=o()(ee,2),ce=se[0],me=se[1],pe=g.mat3.create();return pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[ce,me]),pe=g.mat3.rotate(Array.of(0,0,0,0,0,0,0,0,0),pe,$),pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[-ce,-me]),this.globalTransform.apply(this,c()(pe))}},{key:"globalScale",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,se=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(se,2),me=ce[0],pe=ce[1],B=g.mat3.create();return B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[me,pe]),B=g.mat3.scale(Array.of(0,0,0,0,0,0,0,0,0),B,[$,ee]),B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[-me,-pe]),this.globalTransform.apply(this,c()(B))}},{key:"globalSkew",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,se=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(se,2),me=ce[0],pe=ce[1],B=g.mat3.create();return B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[me,pe]),B=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),B,g.mat3.fromValues(1,Math.tan(ee),Math.tan($),1,0,0)),B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[-me,-pe]),this.globalTransform.apply(this,c()(B))}},{key:"transformPoint",value:function($,ee,se){var ce=this.globalTransformMatrix;se&&(ce=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),ce,se));var me=$*ce[0]+ee*ce[2]+ce[4],pe=$*ce[1]+ee*ce[3]+ce[5];return[me,pe]}},{key:"canvas",get:function(){return this[Y]}},{key:"canvasRenderer",get:function(){return this[k]}},{key:"glRenderer",get:function(){return this[j]}},{key:"isWebGL2",get:function(){return this[j]&&this[j].isWebGL2}},{key:"options",get:function(){return this[A]}},{key:"globalTransformMatrix",get:function(){var $=this[N];return[$[0],$[1],$[3],$[4],$[6],$[7]]}},{key:"viewMatrix",get:function(){return this[N]}}]),V}()},function(e,r,n){var i=n(14),o=n(15),a=n(16),c=n(18);function l(u,h){return i(u)||o(u,h)||a(u,h)||c()}e.exports=l},function(e,r){function n(i){if(Array.isArray(i))return i}e.exports=n},function(e,r){function n(i,o){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(i)))){var a=[],c=!0,l=!1,u=void 0;try{for(var h=i[Symbol.iterator](),d;!(c=(d=h.next()).done)&&(a.push(d.value),!(o&&a.length===o));c=!0);}catch(f){l=!0,u=f}finally{try{!c&&h.return!=null&&h.return()}finally{if(l)throw u}}return a}}e.exports=n},function(e,r,n){var i=n(17);function o(a,c){if(a){if(typeof a=="string")return i(a,c);var l=Object.prototype.toString.call(a).slice(8,-1);if(l==="Object"&&a.constructor&&(l=a.constructor.name),l==="Map"||l==="Set")return Array.from(a);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return i(a,c)}}e.exports=o},function(e,r){function n(i,o){(o==null||o>i.length)&&(o=i.length);for(var a=0,c=new Array(o);a<o;a++)c[a]=i[a];return c}e.exports=n},function(e,r){function n(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
21
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,r,n){var i=n(20),o=n(21),a=n(16),c=n(22);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,r,n){var i=n(17);function o(a){if(Array.isArray(a))return i(a)}e.exports=o},function(e,r){function n(i){if(typeof Symbol<"u"&&Symbol.iterator in Object(i))return Array.from(i)}e.exports=n},function(e,r){function n(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
22
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,r){function n(i,o){if(!(i instanceof o))throw new TypeError("Cannot call a class as a function")}e.exports=n},function(e,r){function n(o,a){for(var c=0;c<a.length;c++){var l=a[c];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(o,l.key,l)}}function i(o,a,c){return a&&n(o.prototype,a),c&&n(o,c),o}e.exports=i},function(e,r,n){n.r(r);var i=n(26);n(1).glMatrix.setMatrixArrayType(Array),r.default=i.default},function(e,r,n){n.r(r),n.d(r,"default",function(){return D});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(13),u=n.n(l),h=n(19),d=n.n(h),f=n(23),g=n.n(f),y=n(24),T=n.n(y),x=n(30),C=n.n(x),L=n(31),S=n(33),p=n(34),m=n(35);n(1).glMatrix.setMatrixArrayType(Array);var M={};function v(z){for(var j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3,k=[],A=z.length,N=0;N<A;N++)N%j<2&&k.push(.5*(z[N]+1));return k}function R(z,j){var k=j._buffers;Object.values(k).forEach(function(A){z.deleteBuffer(A)}),j._buffers={}}function b(z,j,k){return z.activeTexture(z.TEXTURE0+k),Array.isArray(j._img)?z.bindTexture(z.TEXTURE_CUBE_MAP,j):z.bindTexture(z.TEXTURE_2D,j),j}var P={int:"1i",ivec2:"2i",ivec3:"3i",ivec4:"4i",float:"1f",vec2:"2f",vec3:"3f",vec4:"4f",mat2:"Matrix2fv",mat3:"Matrix3fv",mat4:"Matrix4fv",sampler1D:"sampler1D",sampler2D:"sampler2D",sampler3D:"sampler3D",samplerCube:"samplerCube",sampler1DShadow:"sampler1DShadow",sampler2DShadow:"sampler2DShadow",sampler2DRect:"sampler2DRect",sampler2DRectShadow:"sampler2DRectShadow"},D=function(){T()(z,null,[{key:"addLibs",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(M,k)}},{key:"FLOAT",value:function(k,A){return Object(L.pointsToBuffer)(k,Float32Array,A)}},{key:"UNSIGNED_BYTE",value:function(k,A){return Object(L.pointsToBuffer)(k,Uint8Array,A)}},{key:"UNSIGNED_SHORT",value:function(k,A){return Object(L.pointsToBuffer)(k,Uint16Array,A)}},{key:"BYTE",value:function(k,A){return Object(L.pointsToBuffer)(k,Int8Array,A)}},{key:"SHORT",value:function(k,A){return Object(L.pointsToBuffer)(k,Int16Array,A)}}]);function z(j){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};g()(this,z),this.options=Object.assign({},z.defaultOptions,k),this.canvas=j;var A;this.options.webgl2&&(A=j.getContext("webgl2",this.options)),A==null&&(A=Object(L.setupWebGL)(j,this.options),this.aia_ext=A.getExtension("ANGLE_instanced_arrays")),this.gl=A,A.viewport(0,0,j.width,j.height),A.clearColor(0,0,0,0),A.blendFuncSeparate(A.SRC_ALPHA,A.ONE_MINUS_SRC_ALPHA,A.ONE,A.ONE_MINUS_SRC_ALPHA),this.programs=[],this._events={}}return T()(z,[{key:"_declareUniform",value:function(k,A){var N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"1f",W=this.gl,Y=W.getUniformLocation(k,A),Q,ie=this;if(/^sampler/.test(N)){var O=k._samplerMap,V=k._bindTextures;Object.defineProperty(k.uniforms,A,{get:function(){return Q},set:function(ce){Q=ce;var me=O[A]!=null?O[A]:V.length;V[me]=ce,b(W,ce,me),O[A]||(O[A]=me,W.uniform1i(Y,me)),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}else{var Z=N.indexOf("Matrix")===0,$=!Z&&/v$/.test(N),ee=W["uniform".concat(N)].bind(W);Object.defineProperty(k.uniforms,A,{get:function(){return Q},set:function(ce){Q=ce,typeof ce=="number"&&(ce=[ce]),Z?ee(Y,!1,ce):$?ee(Y,ce):ee.apply(void 0,[Y].concat(d()(ce))),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}}},{key:"_draw",value:function(){var k=this,A=this.program;A.meshData.forEach(function(N,W){var Y=N.positions,Q=N.cells,ie=N.instanceCount,O=N.cellsCount,V=N.attributes,Z=N.uniforms,$=N.textureCoord,ee=N.enableBlend,se=k.gl,ce=N.mode!=null?N.mode:se.TRIANGLES;typeof ce=="string"&&(ce=se[ce]),ee?se.enable(se.BLEND):se.disable(se.BLEND),se.bindBuffer(se.ARRAY_BUFFER,A._buffers.verticesBuffer),se.bufferData(se.ARRAY_BUFFER,Y,se.STATIC_DRAW),Q&&(se.bindBuffer(se.ELEMENT_ARRAY_BUFFER,A._buffers.cellsBuffer),se.bufferData(se.ELEMENT_ARRAY_BUFFER,Q,se.STATIC_DRAW));var me=[];V&&Object.values(V).forEach(function(J){var oe=J.name,K=J.data,te=J.divisor;if(se.bindBuffer(se.ARRAY_BUFFER,A._buffers[oe]),se.bufferData(se.ARRAY_BUFFER,K,se.STATIC_DRAW),te!=null){var w=se.getAttribLocation(A,oe);w>=0&&(se.enableVertexAttribArray(w),me.push(w),se.vertexAttribDivisor?se.vertexAttribDivisor(w,te):k.aia_ext&&k.aia_ext.vertexAttribDivisorANGLE(w,te))}}),Z&&Object.entries(Z).forEach(function(J){var oe=u()(J,2),K=oe[0],te=oe[1];k.uniforms[K]=te});var pe;if(!Q){var B=A._dimension;pe=Y.length/B}if(A._enableTextures&&A._buffers.texCoordBuffer){var F=$||v(Y,A._dimension);se.bindBuffer(se.ARRAY_BUFFER,A._buffers.texCoordBuffer),se.bufferData(se.ARRAY_BUFFER,z.FLOAT(F),se.STATIC_DRAW)}ie!=null?(Q?se.drawElementsInstanced?se.drawElementsInstanced(ce,O,se.UNSIGNED_SHORT,0,ie):k.aia_ext&&k.aia_ext.drawElementsInstancedANGLE(ce,O,se.UNSIGNED_SHORT,0,ie):se.drawArraysInstanced?se.drawArraysInstanced(ce,0,pe,ie):k.aia_ext.drawArraysInstancedANGLE(ce,0,pe,ie),me.forEach(function(J){se.vertexAttribDivisor?se.vertexAttribDivisor(J,null):k.aia_ext&&k.aia_ext.vertexAttribDivisorANGLE(J,null)})):Q?se.drawElements(ce,O,se.UNSIGNED_SHORT,0):se.drawArrays(ce,0,pe)})}},{key:"deleteProgram",value:function(k){var A=this.gl;this.program===k&&(this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID),A.useProgram(null));var N=this.programs.indexOf(k);N>=0&&this.programs.splice(N,1),R(A,k),A.deleteProgram(k)}},{key:"setMeshData",value:function(k){var A=this;Array.isArray(k)||(k=[k]);var N=this.program;N.meshData=k.map(function(W){var Y=W.mode,Q=W.positions,ie=W.instanceCount,O=W.cells,V=W.cellsCount,Z=W.attributes,$=W.uniforms,ee=W.textureCoord,se=W.enableBlend,ce={positions:z.FLOAT(Q),uniforms:$,enableBlend:!!se,textureCoord:z.FLOAT(ee)};if(O&&(ce.cells=z.USHORT(O),ce.cellsCount=V||ce.cells.length),Y!=null&&(ce.mode=Y),ie!=null){if(!A.isWebGL2&&!A.aia_ext)throw new Error("Cannot use instanceCount in this rendering context, use webgl2 context instead.");ce.instanceCount=ie}if(Z){var me={};Object.entries(Z).forEach(function(pe){var B=u()(pe,2),F=B[0],J=B[1];if(!N._attribute[F])N._attribute[F]="ignored";else if(N._attribute[F]!=="ignored"){var oe=N._attribute[F],K=oe.name,te=oe.type,w=J.data||J;if(Array.isArray(w)&&(w=z[te](w)),me[F]={name:K,data:w},J.divisor!=null){if(!A.isWebGL2&&!A.aia_ext)throw new Error("Cannot use divisor in this rendering context, use webgl2 context instead.");me[F].divisor=J.divisor}}}),ce.attributes=me}return ce}),this.options.autoUpdate&&this.update()}},{key:"createProgram",value:function(k,A){var N=this,W=/^\s*uniform\s+sampler/mg.test(k);k==null&&(k=p.default),A==null&&(A=W?m.default:S.default);var Y=this.gl,Q=Object(L.createProgram)(Y,A,k);Q.shaderText={vertexShader:A,fragmentShader:k},Q._buffers={},Q._attribute={},Q.uniforms={},Q._samplerMap={},Q._bindTextures=[];var ie=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexPosition),"im"),O=A.match(ie);O&&(Q._dimension=Number(O[1]));var V=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexTextureCoord),"im");O=A.match(V),O&&(Q._texCoordSize=Number(O[1]));var Z=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/gim;if(O=A.match(Z),O)for(var $=0;$<O.length;$++){var ee=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/im,se=O[$].match(ee);if(se&&se[3]!==this.options.vertexPosition&&se[3]!==this.options.vertexTextureCoord){var ce=u()(se,4),me=ce[1],pe=ce[2],B=ce[3];me==="mat"&&(pe=Math.pow(pe,2)),Q._buffers[B]=Y.createBuffer(),Q._attribute[B]={name:B,type:me,size:Number(pe)||1}}}var F=/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/mg;O=A.match(F)||[],O=O.concat(k.match(F)||[]),O.forEach(function(oe){var K=oe.match(/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/),te=K.slice(1),w=u()(te,3),I=w[0],U=w[1],G=w[2];I=P[I],G=!!G,I.indexOf("Matrix")!==0&&G&&(I+="v"),N._declareUniform(Q,U,I)}),Q._buffers.verticesBuffer=Y.createBuffer(),Q._buffers.cellsBuffer=Y.createBuffer();var J=Y.getAttribLocation(Q,this.options.vertexTextureCoord);return Q._enableTextures=J>=0,Q._enableTextures&&(Q._buffers.texCoordBuffer=Y.createBuffer()),this.programs.push(Q),Q}},{key:"useProgram",value:function(k){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID);var N=this.gl;N.useProgram(k);var W=k._dimension;N.bindBuffer(N.ARRAY_BUFFER,k._buffers.verticesBuffer);var Y=N.getAttribLocation(k,this.options.vertexPosition);if(N.vertexAttribPointer(Y,W,N.FLOAT,!1,0,0),N.enableVertexAttribArray(Y),k._enableTextures){N.bindBuffer(N.ARRAY_BUFFER,k._buffers.texCoordBuffer);var Q=N.getAttribLocation(k,this.options.vertexTextureCoord);N.vertexAttribPointer(Q,k._texCoordSize||2,N.FLOAT,!1,0,0),N.enableVertexAttribArray(Q)}if(Object.entries(k._attribute).forEach(function(V){var Z=u()(V,2),$=Z[0],ee=Z[1];if(ee!=="ignored"){var se=ee.size,ce=A[$]||{},me=!!ce.normalize,pe=ce.type||"FLOAT",B=ce.key||$;pe==="UBYTE"&&(pe="UNSIGNED_BYTE"),pe==="USHORT"&&(pe="UNSIGNED_SHORT"),ee.type=pe,B&&B!==$&&(k._attribute[B]=ee),N.bindBuffer(N.ARRAY_BUFFER,k._buffers[$]);var F=N.getAttribLocation(k,$);F>=0&&(N.vertexAttribPointer(F,se,N[pe],me,0,0),N.enableVertexAttribArray(F))}}),!k.meshData){var ie=[[-1,-1,0,1].slice(0,W),[1,-1,0,1].slice(0,W),[1,1,0,1].slice(0,W),[-1,1,0,1].slice(0,W)],O=[[0,1,3],[3,1,2]];this.setMeshData({positions:ie,cells:O})}return k}},{key:"compileSync",value:function(k,A){k=k||p.default;var N={};function W(O){O=O.replace(/^\s*/mg,"");var V=[],Z=O.match(/^#pragma\s+include\s+.*/mg);if(Z){for(var $=0;$<Z.length;$++){var ee=Z[$],se=ee.match(/(?:<|")(.*)(?:>|")/);if(se){var ce=se[0].indexOf("<")===0?"lib":"link",me=se[1];if(me==="graph"&&(me="graphics"),N[me])V.push("/* included ".concat(me," */"));else if(N[me]=!0,ce==="lib"){var pe=W(M[me]);V.push(pe)}else if(ce==="link")throw new Error("Cannot load external links synchronously. Use compile instead of compileSync.")}}V.forEach(function(B){O=O.replace(/^#pragma\s+include\s+.*/m,B)})}return O}var Y=W(k),Q=A?W(A):null,ie=this.createProgram(Y,Q);return ie}},{key:"compile",value:function(){var j=c()(o.a.mark(function A(N,W){var Y,Q,ie,O,V,Z;return o.a.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return ie=function(){return ie=c()(o.a.mark(function ce(me){var pe,B,F,J,oe,K,te,w,I;return o.a.wrap(function(G){for(;;)switch(G.prev=G.next){case 0:if(me=me.replace(/^\s*/mg,""),pe=[],B=me.match(/^#pragma\s+include\s+.*/mg),!B){G.next=36;break}F=0;case 5:if(!(F<B.length)){G.next=35;break}if(J=B[F],oe=J.match(/(?:<|")(.*)(?:>|")/),!oe){G.next=32;break}if(K=oe[0].indexOf("<")===0?"lib":"link",te=oe[1],te==="graph"&&(te="graphics"),Y[te]){G.next=31;break}if(Y[te]=!0,K!=="lib"){G.next=21;break}return G.next=17,Q(M[te]);case 17:w=G.sent,pe.push(w),G.next=29;break;case 21:if(K!=="link"){G.next=29;break}return G.next=24,z.fetchShader(te);case 24:return I=G.sent,G.next=27,Q(I);case 27:I=G.sent,pe.push(I);case 29:G.next=32;break;case 31:pe.push("/* included ".concat(te," */"));case 32:F++,G.next=5;break;case 35:pe.forEach(function(_){me=me.replace(/^#pragma\s+include\s+.*/m,_)});case 36:return G.abrupt("return",me);case 37:case"end":return G.stop()}},ce)})),ie.apply(this,arguments)},Q=function(ce){return ie.apply(this,arguments)},N=N||p.default,Y={},ee.next=6,Q(N);case 6:if(O=ee.sent,!W){ee.next=13;break}return ee.next=10,Q(W);case 10:ee.t0=ee.sent,ee.next=14;break;case 13:ee.t0=null;case 14:return V=ee.t0,Z=this.createProgram(O,V),ee.abrupt("return",Z);case 17:case"end":return ee.stop()}},A,this)}));function k(A,N){return j.apply(this,arguments)}return k}()},{key:"load",value:function(){var j=c()(o.a.mark(function A(N){var W,Y=arguments;return o.a.wrap(function(ie){for(;;)switch(ie.prev=ie.next){case 0:return W=Y.length>1&&Y[1]!==void 0?Y[1]:null,ie.next=3,z.fetchShader(N);case 3:if(N=ie.sent,!W){ie.next=8;break}return ie.next=7,z.fetchShader(W);case 7:W=ie.sent;case 8:return ie.abrupt("return",this.compile(N,W));case 9:case"end":return ie.stop()}},A,this)}));function k(A){return j.apply(this,arguments)}return k}()},{key:"createTexture",value:function(){var k=this,A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W=N.wrapS,Y=W===void 0?this.gl.CLAMP_TO_EDGE:W,Q=N.wrapT,ie=Q===void 0?this.gl.CLAMP_TO_EDGE:Q,O=N.minFilter,V=O===void 0?this.gl.LINEAR:O,Z=N.magFilter,$=Z===void 0?this.gl.LINEAR:Z,ee=this.gl,se=Array.isArray(A)?ee.TEXTURE_CUBE_MAP:ee.TEXTURE_2D;this._max_texture_image_units=this._max_texture_image_units||ee.getParameter(ee.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee.activeTexture(ee.TEXTURE0+this._max_texture_image_units-1);var ce=ee.createTexture();ee.bindTexture(se,ce),ee.pixelStorei(ee.UNPACK_FLIP_Y_WEBGL,!0);var me=this.canvas,pe=me.width,B=me.height;if(A)if(se===ee.TEXTURE_CUBE_MAP)for(var F=0;F<6;F++)ee.texImage2D(ee.TEXTURE_CUBE_MAP_POSITIVE_X+F,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,A[F]);else ee.texImage2D(se,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,A);else if(se===ee.TEXTURE_CUBE_MAP)for(var J=0;J<6;J++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+J,0,ee.RGBA,pe,B,0,ee.RGBA,ee.UNSIGNED_BYTE,null);else ee.texImage2D(se,0,ee.RGBA,pe,B,0,ee.RGBA,ee.UNSIGNED_BYTE,null);return ee.texParameteri(se,ee.TEXTURE_MIN_FILTER,V),ee.texParameteri(se,ee.TEXTURE_MAG_FILTER,$),ee.texParameteri(se,ee.TEXTURE_WRAP_S,Y),ee.texParameteri(se,ee.TEXTURE_WRAP_T,ie),se===ee.TEXTURE_CUBE_MAP&&(A.width=A[0].width,A.height=A[0].height),ee.bindTexture(se,null),ce._img=A||{width:pe,height:B},ce.delete=function(){k.deleteTexture(ce)},ce}},{key:"deleteTexture",value:function(k){var A=k._img;this.gl.deleteTexture(k),typeof A.close=="function"&&A.close()}},{key:"loadTexture",value:function(){var j=c()(o.a.mark(function A(N){var W,Y,Q,ie,O=arguments;return o.a.wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:return W=O.length>1&&O[1]!==void 0?O[1]:{},Y=W.useImageBitmap,Q=Y===void 0?!0:Y,Z.next=3,z.loadImage(N,{useImageBitmap:Q});case 3:return ie=Z.sent,Z.abrupt("return",this.createTexture(ie));case 5:case"end":return Z.stop()}},A,this)}));function k(A){return j.apply(this,arguments)}return k}()},{key:"createFBO",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=k.color,N=A===void 0?1:A,W=k.blend,Y=W===void 0?!1:W,Q=k.depth,ie=Q===void 0?this.options.depth!==!1:Q,O=k.stencil,V=O===void 0?!!this.options.stencil:O,Z=this.gl,$=Z.createFramebuffer();Z.bindFramebuffer(Z.FRAMEBUFFER,$);for(var ee=[],se=0;se<N;se++){var ce=this.createTexture();Z.framebufferTexture2D(Z.FRAMEBUFFER,Z.COLOR_ATTACHMENT0+se,Z.TEXTURE_2D,ce,0),ee.push(ce)}$.textures=ee,$.texture=ee[0],$.blend=Y;var me=this.canvas,pe=me.width,B=me.height;return ie&&!V&&($.depthBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_COMPONENT16,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_ATTACHMENT,Z.RENDERBUFFER,$.depthBuffer)),V&&!ie&&($.stencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.stencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.STENCIL_INDEX8,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.stencilBuffer)),ie&&V&&($.depthStencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthStencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_STENCIL,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.depthStencilBuffer)),Z.bindFramebuffer(Z.FRAMEBUFFER,null),$}},{key:"bindFBO",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;this.fbo=k}},{key:"render",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};k.clearBuffer,this.startRender=!0;var A=this.gl,N=this.program;N||(N=this.createProgram(),this.useProgram(N)),this.fbo&&A.bindFramebuffer(A.FRAMEBUFFER,this.fbo);var W=this.options.depth;W&&A.enable(A.DEPTH_TEST),this.gl.clear(this.gl.COLOR_BUFFER_BIT|(W?this.gl.DEPTH_BUFFER_BIT:0)|(this.options.stencil?this.gl.STENCIL_BUFFER_BIT:0));var Y=this._renderFrameID;this._draw(),this.fbo&&A.bindFramebuffer(A.FRAMEBUFFER,null),this._renderFrameID===Y&&(this._renderFrameID=null)}},{key:"update",value:function(){this.startRender&&this._renderFrameID==null&&(this._renderFrameID=requestAnimationFrame(this.render.bind(this)))}},{key:"program",get:function(){var k=this.gl;return k.getParameter(k.CURRENT_PROGRAM)}},{key:"isWebGL2",get:function(){return typeof WebGL2RenderingContext<"u"&&this.gl instanceof WebGL2RenderingContext}},{key:"enableTextures",get:function(){return this.program&&this.program._enableTextures}},{key:"uniforms",get:function(){var k=this.program;if(!k||!k.uniforms)throw Error("No avaliable program.");return k.uniforms}}]),z}();C()(D,"defaultOptions",{preserveDrawingBuffer:!0,autoUpdate:!0,vertexPosition:"a_vertexPosition",vertexTextureCoord:"a_vertexTextureCoord",webgl2:!1}),C()(D,"UBYTE",D.UNSIGNED_BYTE),C()(D,"USHORT",D.UNSIGNED_SHORT),C()(D,"fetchShader",L.fetchShader),C()(D,"loadImage",L.loadImage)},function(e,r,n){e.exports=n(28)},function(e,r,n){var i=function(o){var a=Object.prototype,c=a.hasOwnProperty,l,u=typeof Symbol=="function"?Symbol:{},h=u.iterator||"@@iterator",d=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function g(O,V,Z){return Object.defineProperty(O,V,{value:Z,enumerable:!0,configurable:!0,writable:!0}),O[V]}try{g({},"")}catch{g=function(V,Z,$){return V[Z]=$}}function y(O,V,Z,$){var ee=V&&V.prototype instanceof m?V:m,se=Object.create(ee.prototype),ce=new Y($||[]);return se._invoke=k(O,Z,ce),se}o.wrap=y;function T(O,V,Z){try{return{type:"normal",arg:O.call(V,Z)}}catch($){return{type:"throw",arg:$}}}var x="suspendedStart",C="suspendedYield",L="executing",S="completed",p={};function m(){}function M(){}function v(){}var R={};R[h]=function(){return this};var b=Object.getPrototypeOf,P=b&&b(b(Q([])));P&&P!==a&&c.call(P,h)&&(R=P);var D=v.prototype=m.prototype=Object.create(R);M.prototype=D.constructor=v,v.constructor=M,M.displayName=g(v,f,"GeneratorFunction");function z(O){["next","throw","return"].forEach(function(V){g(O,V,function(Z){return this._invoke(V,Z)})})}o.isGeneratorFunction=function(O){var V=typeof O=="function"&&O.constructor;return V?V===M||(V.displayName||V.name)==="GeneratorFunction":!1},o.mark=function(O){return Object.setPrototypeOf?Object.setPrototypeOf(O,v):(O.__proto__=v,g(O,f,"GeneratorFunction")),O.prototype=Object.create(D),O},o.awrap=function(O){return{__await:O}};function j(O,V){function Z(se,ce,me,pe){var B=T(O[se],O,ce);if(B.type==="throw")pe(B.arg);else{var F=B.arg,J=F.value;return J&&typeof J=="object"&&c.call(J,"__await")?V.resolve(J.__await).then(function(oe){Z("next",oe,me,pe)},function(oe){Z("throw",oe,me,pe)}):V.resolve(J).then(function(oe){F.value=oe,me(F)},function(oe){return Z("throw",oe,me,pe)})}}var $;function ee(se,ce){function me(){return new V(function(pe,B){Z(se,ce,pe,B)})}return $=$?$.then(me,me):me()}this._invoke=ee}z(j.prototype),j.prototype[d]=function(){return this},o.AsyncIterator=j,o.async=function(O,V,Z,$,ee){ee===void 0&&(ee=Promise);var se=new j(y(O,V,Z,$),ee);return o.isGeneratorFunction(V)?se:se.next().then(function(ce){return ce.done?ce.value:se.next()})};function k(O,V,Z){var $=x;return function(se,ce){if($===L)throw new Error("Generator is already running");if($===S){if(se==="throw")throw ce;return ie()}for(Z.method=se,Z.arg=ce;;){var me=Z.delegate;if(me){var pe=A(me,Z);if(pe){if(pe===p)continue;return pe}}if(Z.method==="next")Z.sent=Z._sent=Z.arg;else if(Z.method==="throw"){if($===x)throw $=S,Z.arg;Z.dispatchException(Z.arg)}else Z.method==="return"&&Z.abrupt("return",Z.arg);$=L;var B=T(O,V,Z);if(B.type==="normal"){if($=Z.done?S:C,B.arg===p)continue;return{value:B.arg,done:Z.done}}else B.type==="throw"&&($=S,Z.method="throw",Z.arg=B.arg)}}}function A(O,V){var Z=O.iterator[V.method];if(Z===l){if(V.delegate=null,V.method==="throw"){if(O.iterator.return&&(V.method="return",V.arg=l,A(O,V),V.method==="throw"))return p;V.method="throw",V.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var $=T(Z,O.iterator,V.arg);if($.type==="throw")return V.method="throw",V.arg=$.arg,V.delegate=null,p;var ee=$.arg;if(!ee)return V.method="throw",V.arg=new TypeError("iterator result is not an object"),V.delegate=null,p;if(ee.done)V[O.resultName]=ee.value,V.next=O.nextLoc,V.method!=="return"&&(V.method="next",V.arg=l);else return ee;return V.delegate=null,p}z(D),g(D,f,"Generator"),D[h]=function(){return this},D.toString=function(){return"[object Generator]"};function N(O){var V={tryLoc:O[0]};1 in O&&(V.catchLoc=O[1]),2 in O&&(V.finallyLoc=O[2],V.afterLoc=O[3]),this.tryEntries.push(V)}function W(O){var V=O.completion||{};V.type="normal",delete V.arg,O.completion=V}function Y(O){this.tryEntries=[{tryLoc:"root"}],O.forEach(N,this),this.reset(!0)}o.keys=function(O){var V=[];for(var Z in O)V.push(Z);return V.reverse(),function $(){for(;V.length;){var ee=V.pop();if(ee in O)return $.value=ee,$.done=!1,$}return $.done=!0,$}};function Q(O){if(O){var V=O[h];if(V)return V.call(O);if(typeof O.next=="function")return O;if(!isNaN(O.length)){var Z=-1,$=function ee(){for(;++Z<O.length;)if(c.call(O,Z))return ee.value=O[Z],ee.done=!1,ee;return ee.value=l,ee.done=!0,ee};return $.next=$}}return{next:ie}}o.values=Q;function ie(){return{value:l,done:!0}}return Y.prototype={constructor:Y,reset:function(O){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(W),!O)for(var V in this)V.charAt(0)==="t"&&c.call(this,V)&&!isNaN(+V.slice(1))&&(this[V]=l)},stop:function(){this.done=!0;var O=this.tryEntries[0],V=O.completion;if(V.type==="throw")throw V.arg;return this.rval},dispatchException:function(O){if(this.done)throw O;var V=this;function Z(pe,B){return se.type="throw",se.arg=O,V.next=pe,B&&(V.method="next",V.arg=l),!!B}for(var $=this.tryEntries.length-1;$>=0;--$){var ee=this.tryEntries[$],se=ee.completion;if(ee.tryLoc==="root")return Z("end");if(ee.tryLoc<=this.prev){var ce=c.call(ee,"catchLoc"),me=c.call(ee,"finallyLoc");if(ce&&me){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0);if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else if(ce){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0)}else if(me){if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(O,V){for(var Z=this.tryEntries.length-1;Z>=0;--Z){var $=this.tryEntries[Z];if($.tryLoc<=this.prev&&c.call($,"finallyLoc")&&this.prev<$.finallyLoc){var ee=$;break}}ee&&(O==="break"||O==="continue")&&ee.tryLoc<=V&&V<=ee.finallyLoc&&(ee=null);var se=ee?ee.completion:{};return se.type=O,se.arg=V,ee?(this.method="next",this.next=ee.finallyLoc,p):this.complete(se)},complete:function(O,V){if(O.type==="throw")throw O.arg;return O.type==="break"||O.type==="continue"?this.next=O.arg:O.type==="return"?(this.rval=this.arg=O.arg,this.method="return",this.next="end"):O.type==="normal"&&V&&(this.next=V),p},finish:function(O){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.finallyLoc===O)return this.complete(Z.completion,Z.afterLoc),W(Z),p}},catch:function(O){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.tryLoc===O){var $=Z.completion;if($.type==="throw"){var ee=$.arg;W(Z)}return ee}}throw new Error("illegal catch attempt")},delegateYield:function(O,V,Z){return this.delegate={iterator:Q(O),resultName:V,nextLoc:Z},this.method==="next"&&(this.arg=l),p}},o}(e.exports);try{regeneratorRuntime=i}catch{Function("r","regeneratorRuntime = r")(i)}},function(e,r){function n(o,a,c,l,u,h,d){try{var f=o[h](d),g=f.value}catch(y){c(y);return}f.done?a(g):Promise.resolve(g).then(l,u)}function i(o){return function(){var a=this,c=arguments;return new Promise(function(l,u){var h=o.apply(a,c);function d(g){n(h,l,u,d,f,"next",g)}function f(g){n(h,l,u,d,f,"throw",g)}d(void 0)})}}e.exports=i},function(e,r){function n(i,o,a){return o in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i}e.exports=n},function(e,r,n){n.r(r),n.d(r,"setupWebGL",function(){return d}),n.d(r,"createProgram",function(){return f}),n.d(r,"pointsToBuffer",function(){return g}),n.d(r,"loadImage",function(){return T}),n.d(r,"fetchShader",function(){return C});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(32),u=n.n(l);n(1).glMatrix.setMatrixArrayType(Array);function h(S,p){for(var m=["webgl","experimental-webgl","webkit-3d","moz-webgl"],M=null,v=0;v<m.length;++v){try{M=S.getContext(m[v],p)}catch{}if(M)break}return M}function d(S,p){var m=h(S,p);if(!m)throw new Error("Sorry, your browser doesn't support WebGL.");return m}function f(S,p,m){var M=S.createShader(S.VERTEX_SHADER);if(S.shaderSource(M,p),S.compileShader(M),!S.getShaderParameter(M,S.COMPILE_STATUS)){var v="Vertex shader failed to compile. The error log is:".concat(S.getShaderInfoLog(M));throw new Error(v)}var R=S.createShader(S.FRAGMENT_SHADER);if(S.shaderSource(R,m),S.compileShader(R),!S.getShaderParameter(R,S.COMPILE_STATUS)){var b="Fragment shader failed to compile. The error log is:".concat(S.getShaderInfoLog(R));throw new Error(b)}var P=S.createProgram();if(S.attachShader(P,M),S.attachShader(P,R),S.linkProgram(P),!S.getProgramParameter(P,S.LINK_STATUS)){var D="Shader program failed to link. The error log is:".concat(S.getProgramInfoLog(P));throw new Error(D)}return S.deleteShader(M),S.deleteShader(R),P}function g(S){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Float32Array,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(m&&!(m instanceof p))throw new TypeError("Wrong buffer type.");if(S==null||S instanceof p)return S;if(S[0]==null||S[0].length==null)return m?(m.set(S,0),m):new p(S);var M=S[0].length,v=S.length;m||(m=new p(M*v));for(var R=0,b=0;b<v;b++)for(var P=0;P<M;P++)m[R++]=S[b][P];return m}var y={};function T(S){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=p.useImageBitmap,M=m===void 0?!0:m,v=p.alias,R=v===void 0?null:v;if(!y[S]){if(typeof Image=="function"){var b=new Image;typeof S=="string"&&!((typeof location>"u"?"undefined":u()(location))==="object"&&/^file:/.test(location.href))&&!/^data:/.test(S)&&(b.crossOrigin="anonymous"),y[S]=new Promise(function(P){b.onload=function(){M&&typeof createImageBitmap=="function"?createImageBitmap(b,{imageOrientation:"flipY"}).then(function(D){y[S]=D,R&&(y[R]=D),P(D)}):(y[S]=b,R&&(y[R]=b),P(b))},b.src=S}),R&&(y[R]=y[S])}else if(typeof fetch=="function")return fetch(S,{method:"GET",mode:"cors",cache:"default"}).then(function(P){return P.blob()}).then(function(P){return createImageBitmap(P,{imageOrientation:"flipY"}).then(function(D){return y[S]=D,R&&(y[R]=D),D})})}return y[S]}var x={};function C(S){return L.apply(this,arguments)}function L(){return L=c()(o.a.mark(function S(p){var m,M;return o.a.wrap(function(R){for(;;)switch(R.prev=R.next){case 0:if(!x[p]){R.next=2;break}return R.abrupt("return",x[p]);case 2:return R.next=4,fetch(p);case 4:if(m=R.sent,!(m.status>=200&&m.status<300)){R.next=11;break}return R.next=8,m.text();case 8:return M=R.sent,x[p]=M,R.abrupt("return",M);case 11:throw new Error("Shader loaded error.");case 12:case"end":return R.stop()}},S)})),L.apply(this,arguments)}},function(e,r){function n(i){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e.exports=n=function(a){return typeof a}:e.exports=n=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},n(i)}e.exports=n},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
23
+
24
+ void main() {
25
+ gl_PointSize = 1.0;
26
+ gl_Position = vec4(a_vertexPosition, 1);
27
+ }`},function(e,r,n){n.r(r),r.default=`#ifdef GL_ES
28
+ precision mediump float;
29
+ #endif
30
+
31
+ void main() {
32
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.1);
33
+ }`},function(e,r,n){n.r(r),r.default=`attribute vec4 a_vertexPosition;
34
+ attribute vec2 a_vertexTextureCoord;
35
+ varying vec2 vTextureCoord;
36
+
37
+ void main() {
38
+ gl_PointSize = 1.0;
39
+ gl_Position = a_vertexPosition;
40
+ vTextureCoord = a_vertexTextureCoord;
41
+ }`},function(e,r,n){n.r(r),n.d(r,"default",function(){return S});var i=n(19),o=n.n(i),a=n(13),c=n.n(a),l=n(27),u=n.n(l),h=n(29),d=n.n(h),f=n(23),g=n.n(f),y=n(24),T=n.n(y),x=n(37),C=n(41);n(1).glMatrix.setMatrixArrayType(Array);var L=Symbol("transform"),S=function(){function p(m,M){g()(this,p),this.context=m.getContext("2d"),this.options=M,this[L]=[1,0,0,1,0,0]}return T()(p,[{key:"createTexture",value:function(M){var v={_img:M};return v}},{key:"loadTexture",value:function(){var m=d()(u.a.mark(function v(R){var b;return u.a.wrap(function(D){for(;;)switch(D.prev=D.next){case 0:return D.next=2,x.default.loadImage(R,{useImageBitmap:!1});case 2:return b=D.sent,D.abrupt("return",this.createTexture(b));case 4:case"end":return D.stop()}},v,this)}));function M(v){return m.apply(this,arguments)}return M}()},{key:"deleteTexture",value:function(M){return M}},{key:"clear",value:function(M,v,R,b){var P=this.context;M=M||0,v=v||0,R=R||P.canvas.width-M,b=b||P.canvas.height-v,P.clearRect(M,v,R,b)}},{key:"drawMeshCloud",value:function(M){for(var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=v.clear,b=R===void 0?!1:R,P=[],D=0;D<M.amount;D++){var z=M.getTransform(D),j=M.getTextureFrame(D);j&&(j=j._img);var k=M.getFilter(D),A=M.getCloudRGBA(D),N=A.fill,W=A.stroke;P.push({mesh:M.mesh,_cloudOptions:[N,W,j,z,k]})}M.beforeRender&&M.beforeRender(this.context,M),this.drawMeshes(P,{clear:b,hook:!1}),M.afterRender&&M.afterRender(this.context,M)}},{key:"drawMeshes",value:function(M){var v=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=R.clear,P=b===void 0?!1:b,D=R.hook,z=D===void 0?!0:D,j=this.context;P&&j.clearRect(0,0,j.canvas.width,j.canvas.height);var k=null,A=j.canvas,N=A.width,W=A.height,Y=M.length;M.forEach(function(Q,ie){var O,V,Z,$,ee;if(z&&Q.beforeRender&&Q.beforeRender(j,Q),Q._cloudOptions){var se=c()(Q._cloudOptions,5);O=se[0],V=se[1],Z=se[2],$=se[3],ee=se[4],Q=Q.mesh}var ce=Q.filter;if(ee&&(ce=ce?"".concat(ce," ").concat(ee):ee),ce&&!v.filterBuffer&&v.filterBuffer!==!1){var me=x.default.createCanvas(N,W);me?v.filterBuffer=me.getContext("2d"):v.filterBuffer=!1}if(k&&k!==ce&&(Object(C.applyFilter)(v.filterBuffer,k),j.drawImage(v.filterBuffer.canvas,0,0,N,W),v.filterBuffer.clearRect(0,0,N,W),k=null),ce&&v.filterBuffer){var pe;v.filterBuffer.save(),(pe=v.filterBuffer).transform.apply(pe,o()(v[L])),Object(C.drawMesh2D)(Q,v.filterBuffer,!1,O,V,Z,$),v.filterBuffer.restore(),ie===Y-1?(Object(C.applyFilter)(v.filterBuffer,ce),j.drawImage(v.filterBuffer.canvas,0,0,N,W),v.filterBuffer.clearRect(0,0,N,W)):k=ce}else j.save(),j.transform.apply(j,o()(v[L])),Object(C.drawMesh2D)(Q,j,!1,O,V,Z,$),j.restore();z&&Q.afterRender&&Q.afterRender(j,Q)})}},{key:"setTransform",value:function(M){this[L]=M}}]),p}()},function(e,r,n){n.r(r),(function(i){var o=n(32),a=n.n(o),c=n(19),l=n.n(c),u=n(25),h=n(39),d=n(40);n(1).glMatrix.setMatrixArrayType(Array);var f={};function g(S,p){var m=S.style,M=S.variant,v=S.weight,R=S.stretch,b=S.size,P=S.pxLineHeight,D=S.family;return R==="normal"?"".concat(m," ").concat(M," ").concat(v," ").concat(b*p,"px/").concat(P*p,"px ").concat(D):"".concat(m," ").concat(M," ").concat(v," ").concat(R," ").concat(b*p,"px/").concat(P*p,"px ").concat(D)}function y(S,p){var m=p.font,M=p.fillColor,v=p.strokeColor,R=p.strokeWidth,b=p.ratio,P=b===void 0?1:b,D=p.textCanvas,z=p.cachable,j=z===void 0?!1:z,k;if(j){k=[S,m,String(M),String(v),String(R)].join("###");var A=f[k];if(A)return A}D||(D=C(1,1));var N=D.getContext("2d");N.save(),N.font=m;var W=N.measureText(S),Y=W.width;N.restore();var Q=Object(h.default)(m),ie=Math.max(Q.pxLineHeight,Q.pxHeight*1.13);/italic|oblique/.test(m)&&(Y+=ie*Math.tan(15*Math.PI/180)),!M&&!v&&(M="#000");var O=N.canvas,V=Math.ceil(Y),Z=Math.ceil(ie);O.width=Math.round(V*P),O.height=Math.round(Z*P),N.save(),N.font=g(Q,P),N.textAlign="center",N.textBaseline="middle";var $=O.height*.5+Q.pxHeight*.05*P,ee=O.width*.5;if(M){if(Array.isArray(M))M=Object(d.default)(M);else if(M.vector){var se,ce=M,me=ce.vector,pe=ce.colors;me.length===6?se=N.createRadialGradient.apply(N,l()(me)):se=N.createLinearGradient.apply(N,l()(me)),pe.forEach(function(te){var w=te.offset,I=te.color;se.addColorStop(w,I)}),M=se}N.fillStyle=M,N.fillText(S,ee,$)}if(v){if(N.lineWidth=R*P,Array.isArray(v))v=Object(d.default)(v);else if(v.vector){var B,F=v,J=F.vector,oe=F.colors;J.length===6?B=N.createRadialGradient.apply(N,l()(J)):B=N.createLinearGradient.apply(N,l()(J)),oe.forEach(function(te){var w=te.offset,I=te.color;B.addColorStop(w,I)}),v=B}N.strokeStyle=v,N.strokeText(S,ee,$)}N.restore();var K={image:D,rect:[0,0,V,Z]};return j&&(f[k]=K),K}var T=!1;if((typeof navigator>"u"?"undefined":a()(navigator))==="object"&&typeof navigator.userAgent=="string"){var x=navigator.userAgent.toLowerCase().match(/chrome\/(\d+)/);x&&(T=Number(x[1])<70)}function C(S,p){var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},M=m.offscreen||!T&&m.offscreen!==!1,v;return typeof i<"u"&&typeof i.createCanvas=="function"?v=i.createCanvas(S,p,m):M&&typeof OffscreenCanvas=="function"?v=new OffscreenCanvas(S,p):(v=document.createElement("canvas"),v.width=S,v.height=p),v}var L={createCanvas:C,createText:y,loadImage:u.default.loadImage};r.default=L}).call(this,n(38))},function(e,r){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch{typeof window=="object"&&(n=window)}e.exports=n},function(e,r,n){n.r(r),n.d(r,"default",function(){return x}),n(1).glMatrix.setMatrixArrayType(Array);function i(C,L){if(typeof C=="string"){var S=C.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%)$/);S?C={size:parseFloat(S[1]),unit:S[2]}:C={size:parseInt(C,10),unit:"px"}}var p=C,m=p.size,M=p.unit;if(M==="pt")m/=.75;else if(M==="pc")m*=16;else if(M==="in")m*=96;else if(M==="cm")m*=96/2.54;else if(M==="mm")m*=96/25.4;else if(M==="em"||M==="rem"||M==="ex"){if(!L&&typeof getComputedStyle=="function"&&typeof document<"u"){var v=getComputedStyle(document.documentElement).fontSize;L=i(v,16)}m*=L,M==="ex"&&(m/=2)}else if(M==="q")m*=96/25.4/4;else if(M==="vw"||M==="vh"){if(typeof document<"u"){var R=M==="vw"?document.documentElement.clientWidth:document.documentElement.clientHeight;m*=R/100}}else if((M==="vmax"||M==="vmin")&&typeof document<"u"){var b=document.documentElement.clientWidth,P=document.documentElement.clientHeight;M==="vmax"?m*=Math.max(b,P)/100:m*=Math.min(b,P)/100}return m}var o="bold|bolder|lighter|[1-9]00",a="italic|oblique",c="small-caps",l="ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",u="px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%",h=`'([^']+)'|"([^"]+)"|([\\w-]|[一-龥])+`,d=new RegExp("(".concat(o,") +"),"i"),f=new RegExp("(".concat(a,") +"),"i"),g=new RegExp("(".concat(c,") +"),"i"),y=new RegExp("(".concat(l,") +"),"i"),T=new RegExp("([\\d\\.]+)("+u+")(?:\\/([\\d\\.]+)("+u+"))? *((?:"+h+")( *, *(?:"+h+"))*)");function x(C,L){var S=T.exec(C);if(S){var p=parseFloat(S[3]),m={weight:"normal",style:"normal",stretch:"normal",variant:"normal",size:parseFloat(S[1]),unit:S[2],lineHeight:Number.isFinite(p)?p:void 0,lineHeightUnit:S[4],family:S[5].replace(/ *, */g,",")},M=C.substring(0,S.index),v=d.exec(M),R=f.exec(M),b=g.exec(M),P=y.exec(M);return v&&(m.weight=v[1]),R&&(m.style=R[1]),b&&(m.variant=b[1]),P&&(m.stretch=P[1]),m.pxHeight=i({size:m.size,unit:m.unit},L),m.pxLineHeight=i({size:m.lineHeight||m.size,unit:m.lineHeightUnit||m.unit},L),m}}},function(e,r,n){n.r(r),n.d(r,"default",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return"rgba(".concat(o.map(function(a,c){return c<3?Math.round(a*255):a}).join(),")")}},function(e,r,n){n.r(r),n.d(r,"applyFilter",function(){return h}),n.d(r,"drawMesh2D",function(){return f});var i=n(19),o=n.n(i),a=n(1),c=n(40),l=n(39),u=n(42);n(1).glMatrix.setMatrixArrayType(Array);function h(g,y){var T=g.canvas;g.save(),g.filter=y,g.drawImage(T,0,0,T.width,T.height),g.restore()}function d(g,y){var T=/rgba\((\d+),(\d+),(\d+),(\d+)\)/;g=g.match(T).slice(1,5).map(Number),y=y.match(T).slice(1,5).map(Number);for(var x=[],C=y[3],L=0;L<4;L++)x[L]=Object(u.mix)(g[L],y[L],C);return"rgba(".concat(x.join(),")")}function f(g,y){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,x=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null,L=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,S=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null;y.save();var p=!1,m=!1;if(y.globalAlpha=g.getOpacity(),g._updateMatrix){var M=g.transformScale/g.contours.scale;M>1.5&&g.accurate(g.transformScale)}if(g.lineWidth){var v=g.gradient&&g.gradient.stroke;if(v){var R=v,b=R.vector,P=R.colors;if(b.length===6)v=y.createRadialGradient.apply(y,o()(b));else if(b.length===4)v=y.createLinearGradient.apply(y,o()(b));else if(b.length===3)v=y.createCircularGradient.apply(y,o()(b));else throw new TypeError("Invalid vector dimension.");P.forEach(function(Q){var ie=Q.offset,O=Q.color,V=Object(c.default)(O);C&&(V=d(V,C)),v.addColorStop(ie,V)}),y.strokeStyle=v,p=!0}else g.strokeStyle&&(C?y.strokeStyle=d(g.strokeStyle,C):y.strokeStyle=g.strokeStyle,p=!0)}p&&(y.lineWidth=g.lineWidth,y.lineJoin=g.lineJoin,y.lineCap=g.lineCap,y.miterLimit=g.miterLimit,g.lineDash&&(y.setLineDash(g.lineDash),g.lineDashOffset&&(y.lineDashOffset=g.lineDashOffset)));var D=g.gradient&&g.gradient.fill;if(D){var z=D,j=z.vector,k=z.colors;if(j.length===6)D=y.createRadialGradient.apply(y,o()(j));else if(j.length===4)D=y.createLinearGradient.apply(y,o()(j));else if(j.length===3)D=y.createCircularGradient.apply(y,o()(j));else throw new TypeError("Invalid vector dimension.");k.forEach(function(Q){var ie=Q.offset,O=Q.color,V=Object(c.default)(O);C&&(V=d(V,C)),D.addColorStop(ie,V)}),y.fillStyle=D,m=!0}else g.fillStyle&&(x?y.fillStyle=d(g.fillStyle,x):y.fillStyle=g.fillStyle,m=!0);if(S&&y.transform.apply(y,o()(S)),y.transform.apply(y,o()(g.transformMatrix)),g.clipPath){var A=g.clipPath,N=new Path2D(A);y.clip(N)}var W=g.contours.length;if(g.contours.forEach(function(Q,ie){var O=Q.length,V=O>1&&a.vec2.equals(Q[0],Q[O-1]),Z=ie===W-1&&g.texture;if(Q&&O>0){if(m||p||Z){y.beginPath(),y.moveTo.apply(y,o()(Q[0]));for(var $=1;$<O;$++)$===O-1&&V?y.closePath():y.lineTo.apply(y,o()(Q[$]))}if(m&&y.fill(g.fillRule),Z){y.save(),y.clip();var ee=g.texture,se=ee.image,ce=ee.options;if(L&&(se=L),ce.repeat&&console.warn("Context 2D not supported image repeat yet."),se.font){ce.scale&&console.warn("Context 2D not supported text scale yet."),ce.srcRect&&console.warn("Context 2D not supported text srcRect yet.");var me=se,pe=me.font,B=me.fillColor,F=me.strokeColor,J=me.strokeWidth,oe=me.text;!B&&!F&&(B="#000"),Array.isArray(B)&&(B=Object(c.default)(B)),Array.isArray(F)&&(F=Object(c.default)(F)),y.font=pe;var K=y.measureText(oe),te=K.width,w=Object(l.default)(pe),I=Math.max(w.pxLineHeight,w.pxHeight*1.13);y.textAlign="center",y.textBaseline="middle";var U=ce.rect,G=U[0]+I*.5+w.pxHeight*.06,_=U[1]+te*.5;U[2]!=null&&y.scale(U[2]/te,U[3]/I),B&&(y.fillStyle=B,y.fillText(oe,_,G)),F&&(y.lineWidth=J,y.strokeStyle=F,y.strokeText(oe,_,G))}else{var re=ce.rect,ne=ce.srcRect;ce.scale&&(re=[0,0,y.canvas.width,y.canvas.height]),ce.rotated&&re&&(re=[-re[1],re[0],re[3],re[2]]),ne&&(re=re||[0,0,ne[2],ne[3]]),ce.rotated&&(y.translate(0,re?re[2]:se.width),y.rotate(-.5*Math.PI)),ne?y.drawImage.apply(y,[se].concat(o()(ne),o()(re))):re?y.drawImage.apply(y,[se].concat(o()(re))):y.drawImage(se,0,0)}y.restore()}p&&y.stroke()}}),y.restore(),T){var Y=g.filter;Y&&h(y,Y)}}},function(e,r,n){n.r(r),n.d(r,"clamp",function(){return a}),n.d(r,"mix",function(){return c}),n.d(r,"transformPoint",function(){return l});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(u,h,d){if(h>d){var f=[d,h];h=f[0],d=f[1]}return u<h?h:u>d?d:u}function c(u,h,d){return u*(1-d)+h*d}function l(u,h){var d=o()(u,2),f=d[0],g=d[1];return[f*h[0]+g*h[2]+h[4],f*h[1]+g*h[3]+h[5]]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return f});var i=n(27),o=n.n(i),a=n(44),c=n(45);n(1).glMatrix.setMatrixArrayType(Array);var l=o.a.mark(f);function u(g,y,T){var x=g.uniforms||{},C=y.uniforms||{};if(x.u_texSampler&&C.u_texSampler&&x.u_texSampler!==C.u_texSampler)return!1;var L=Object.keys(x),S=Object.keys(C),p=L.indexOf("u_texSampler"),m=S.indexOf("u_texSampler");if(p>=0&&L.splice(p,1),m>=0&&S.splice(m,1),L.length!==S.length)return!1;var M=L.every(function(R){var b=x[R],P=C[R];if(b===P)return!0;if(b.length&&P.length&&b.length===P.length){for(var D=0;D<b.length;D++)if(b[D]!==P[D])return!1;return!0}return!1});if(M){if(x.u_texSampler&&!C.u_texSampler)y.setTexture(x.u_texSampler,{hidden:!0});else if(!x.u_texSampler&&C.u_texSampler)for(var v=0;v<T.length;v++)T[v].setTexture(C.u_texSampler,{hidden:!0})}return M}var h={};function d(g,y){if(g.length){var T=Object(a.default)(g,h);return T.enableBlend=y,g[0].filterCanvas&&(T.filterCanvas=!0),T.packIndex=g[0].packIndex,T.packLength=g.length,T.beforeRender=g[0].beforeRender,T.pass=g[0].pass,T.afterRender=g[g.length-1].afterRender,g.length=0,T}}function f(g,y){var T,x,C,L,S,p,m,M,v,R,b,P,D=arguments;return o.a.wrap(function(j){for(;;)switch(j.prev=j.next){case 0:T=D.length>2&&D[2]!==void 0?D[2]:!1,x=[],C=g.options.bufferSize,L=0,S=!1,p=0;case 6:if(!(p<y.length)){j.next=50;break}if(m=y[p],!(m instanceof c.default)){j.next=18;break}if(!x.length){j.next=12;break}return j.next=12,d(x,S);case 12:return L=0,S=!1,j.next=16,m;case 16:j.next=47;break;case 18:if(M=m.meshData,M.clipPath&&!M.uniforms.u_clipSampler&&(v=g.createTexture(M.clipPath),M.uniforms.u_clipSampler=v),R=0,!((!T||!m.canIgnore())&&M&&M.positions.length)){j.next=43;break}if(m.packIndex=p,b=m.filterCanvas,R=M.positions.length,!(b||L+R>C)){j.next=33;break}if(!x.length){j.next=29;break}return j.next=29,d(x,S);case 29:L=0,S=!1,j.next=40;break;case 33:if(!L){j.next=40;break}if(P=x[x.length-1],!(P&&(P.filterCanvas||P.afterRender||m.beforeRender||P.pass.length||m.pass.length||P.program!==m.program||!u(P,m,x)))){j.next=40;break}return j.next=38,d(x,S);case 38:L=0,S=!1;case 40:x.push(m),S=S||m.enableBlend,L+=R;case 43:if(p!==y.length-1){j.next=47;break}if(!x.length){j.next=47;break}return j.next=47,d(x,S);case 47:p++,j.next=6;break;case 50:case"end":return j.stop()}},l)}},function(e,r,n){n.r(r),n.d(r,"default",function(){return h});var i=n(19),o=n.n(i),a=n(13),c=n.n(a);n(1).glMatrix.setMatrixArrayType(Array);var l={UNSIGNED_BYTE:Uint8Array,UNSIGNED_SHORT:Uint16Array,BYTE:Int8Array,SHORT:Int16Array,FLOAT:Float32Array};function u(d,f){for(var g=0,y=0,T=0,x=0,C=0,L=0,S=0,p=d[0].program,m=0;m<d.length;m++){var M=d[m].meshData;if(M){S+=M.positions.length;var v=M.positions[0].length;g+=M.positions.length*v,y+=M.cells.length*3,L+=M.attributes.a_color.length*4;var R=M.textureCoord;R&&(T+=R.length*R[0].length);var b=M.attributes.a_sourceRect;b&&(x+=b.length*4);var P=M.attributes.a_clipUV;P&&(C+=P.length*2)}}if((!f.positions||f.positions.length<g)&&(f.positions=new Float32Array(g)),(!f.cells||f.cells.length<y)&&(f.cells=new Uint16Array(y)),T&&(!f.textureCoord||f.textureCoord.length<T)&&(f.textureCoord=new Float32Array(T)),(!f.a_color||f.a_color.length<L)&&(f.a_color=new Uint8Array(L)),x&&(!f.a_sourceRect||f.a_sourceRect.length<x)&&(f.a_sourceRect=new Float32Array(x)),C&&(!f.a_clipUV||f.a_clipUV.length<C)&&(f.a_clipUV=new Float32Array(C)),p)for(var D=Object.entries(p._attribute),z=p._attribOpts||{},j=0;j<D.length;j++){var k=c()(D[j],2),A=k[0],N=k[1];if(A!=="a_color"&&A!=="a_sourceRect"&&N!=="ignored"){var W=z[A]?z[A].type:"FLOAT",Y=l[W],Q=N.size*S;(!f[A]||f[A].length<Q)&&(f[A]=new Y(Q))}}return f}function h(d,f){var g=[],y=[],T=[],x=[],C=[],L=[],S=0,p=0,m=d[0]?d[0].uniforms||{}:{},M=d[0]?d[0].program:null;f&&(u(d,f),y=f.cells,g=f.positions,T=f.textureCoord,x=f.a_color,C=f.a_sourceRect,L=f.a_clipUV);for(var v=!1,R=!1,b={},P=0;P<d.length;P++){var D=d[P];if(D){if(D.meshData&&(D=D.meshData),f)for(var z=D.positions,j=0;j<z.length;j++)for(var k=z[j],A=3*(S+j),N=0;N<k.length;N++)g[A+N]=k[N];else{var W;(W=g).push.apply(W,o()(D.positions))}for(var Y=D.cells,Q=0;Q<Y.length;Q++){var ie=Y[Q];if(f){var O=3*(p+Q);y[O]=ie[0]+S,y[O+1]=ie[1]+S,y[O+2]=ie[2]+S}else y.push([ie[0]+S,ie[1]+S,ie[2]+S])}if(f)for(var V=D.attributes.a_color,Z=0;Z<V.length;Z++){var $=V[Z],ee=4*(S+Z);x[ee]=$[0],x[ee+1]=$[1],x[ee+2]=$[2],x[ee+3]=$[3]}else{var se;(se=x).push.apply(se,o()(D.attributes.a_color))}if(D.attributes.a_sourceRect)if(v=!0,f)for(var ce=D.attributes.a_sourceRect,me=0;me<ce.length;me++){var pe=ce[me],B=4*(S+me);C[B]=pe[0],C[B+1]=pe[1],C[B+2]=pe[2],C[B+3]=pe[3]}else{var F;(F=C).push.apply(F,o()(D.attributes.a_sourceRect))}if(D.attributes.a_clipUV)if(R=!0,f)for(var J=D.attributes.a_clipUV,oe=0;oe<J.length;oe++){var K=J[oe],te=2*(S+oe);L[te]=K[0],L[te+1]=K[1]}else{var w;(w=L).push.apply(w,o()(D.attributes.a_clipUV))}if(D.textureCoord)if(f)for(var I=D.textureCoord,U=0;U<I.length;U++)for(var G=I[U],_=3*(S+U),re=0;re<G.length;re++)T[_+re]=G[re];else{var ne;(ne=T).push.apply(ne,o()(D.textureCoord))}if(M)for(var X=Object.entries(M._attribute),ae=0;ae<X.length;ae++){var ue=c()(X[ae],2),he=ue[0],ge=ue[1];if(he!=="a_color"&&he!=="a_sourceRect"&&ge!=="ignored")if(b[he]=[],f){b[he]=f[he];for(var Me=D.attributes[he],we=Me[0].length,be=0;be<Me.length;be++)for(var Ie=Me[be],Ce=we*(S+be),ke=0;ke<Ie.length;ke++)b[he][Ce+ke]=Ie[ke]}else{var Ee;(Ee=b[he]).push.apply(Ee,o()(D.attributes[he]))}}S+=D.positions.length,p+=D.cells.length}}b.a_color=x,v&&C&&C.length>0&&(b.a_sourceRect=C);var Ae={positions:g,cells:y,attributes:b,uniforms:m,cellsCount:p*3,program:M};return T&&T.length&&(Ae.textureCoord=T),R&&L.length>0&&(b.a_clipUV=L),Ae}},function(e,r,n){n.r(r),n.d(r,"default",function(){return k});var i=n(30),o=n.n(i),a=n(19),c=n.n(a),l=n(13),u=n.n(l),h=n(23),d=n.n(h),f=n(24),g=n.n(f),y=n(1),T=n(46),x=n(42),C=n(47);n(1).glMatrix.setMatrixArrayType(Array);function L(A,N){var W=Object.keys(A);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(A);N&&(Y=Y.filter(function(Q){return Object.getOwnPropertyDescriptor(A,Q).enumerable})),W.push.apply(W,Y)}return W}function S(A){for(var N=1;N<arguments.length;N++){var W=arguments[N]!=null?arguments[N]:{};N%2?L(Object(W),!0).forEach(function(Y){o()(A,Y,W[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(W)):L(Object(W)).forEach(function(Y){Object.defineProperty(A,Y,Object.getOwnPropertyDescriptor(W,Y))})}return A}var p=Symbol("mesh"),m=Symbol("count"),M=Symbol("blend"),v=Symbol("filter"),R=Symbol("textures"),b=Symbol("textureOptions"),P=Symbol("cloudColor"),D=Symbol("cloudFilter"),z=Symbol("buffer");function j(A){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,W=new Float32Array(3*A),Y=new Float32Array(3*A),Q=new Float32Array(4*A),ie=new Float32Array(4*A),O=new Float32Array(4*A),V=new Float32Array(4*A),Z=new Float32Array(4*A),$=new Uint8Array(A),ee=new Uint8Array(4*A),se=new Uint8Array(4*A);return N&&(W.set(N.transform0,0),Y.set(N.transform1,0),Q.set(N.color0,0),ie.set(N.color1,0),O.set(N.color2,0),V.set(N.color3,0),Z.set(N.color4,0),$.set(N.frameIndex,0),ee.set(N.fillColor,0),se.set(N.strokeColor,0)),{bufferSize:A,transform0:W,transform1:Y,color0:Q,color1:ie,color2:O,color3:V,color4:Z,frameIndex:$,fillColor:ee,strokeColor:se}}var k=function(){function A(N){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},Q=Y.buffer,ie=Q===void 0?1e3:Q;d()(this,A),ie=Math.max(ie,W),this[m]=W,this[p]=N,this[z]=j(ie),this[R]=[],this[v]=[],this[P]=!1,this[D]=!1,this[M]=!1,this.initBuffer()}return g()(A,[{key:"initBuffer",value:function(){for(var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,Y=this[m],Q=W;Q<Y;Q++)this[z].transform0.set([1,0,0],Q*3),this[z].transform1.set([0,1,0],Q*3),this[z].frameIndex.set([-1],Q),this[z].fillColor.set([0,0,0,0],Q*4),this[z].strokeColor.set([0,0,0,0],Q*4),this.setColorTransform(Q,null)}},{key:"_getFilter",value:function(W){return this[v][W]=this[v][W]||[],this[v][W]}},{key:"getFilter",value:function(W){return this._getFilter(W).join(" ")}},{key:"canIgnore",value:function(){return this[p].canIgnore()}},{key:"delete",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");var Y=this[z],Q=Y.transform0,ie=Y.transform1,O=Y.color0,V=Y.color1,Z=Y.color2,$=Y.color3,ee=Y.color4,se=Y.frameIndex,ce=Y.fillColor,me=Y.strokeColor;Q.set(Q.subarray(3*(W+1)),3*W),ie.set(ie.subarray(3*(W+1)),3*W),O.set(O.subarray(4*(W+1)),4*W),V.set(V.subarray(4*(W+1)),4*W),Z.set(Z.subarray(4*(W+1)),4*W),$.set($.subarray(4*(W+1)),4*W),ee.set(ee.subarray(4*(W+1)),4*W),se.set(se.subarray(W+1),W),ce.set(ce.subarray(4*(W+1)),4*W),me.set(me.subarray(4*(W+1)),4*W);for(var pe in this[v])pe===W?delete this[v][pe]:pe>W&&(this[v][pe-1]=this[v][pe],delete this[v][pe]);this[m]--}},{key:"setColorTransform",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Q=this[z],ie=Q.color0,O=Q.color1,V=Q.color2,Z=Q.color3,$=Q.color4;return Y!=null?(ie.set([Y[0],Y[5],Y[10],Y[15]],W),O.set([Y[1],Y[6],Y[11],Y[16]],W),V.set([Y[2],Y[7],Y[12],Y[17]],W),Z.set([Y[3],Y[8],Y[13],Y[18]],W),$.set([Y[4],Y[9],Y[14],Y[19]],W),this[M]=this[M]||Y[18]<1,this[D]=!0):(ie.set([1,0,0,0],W),O.set([0,1,0,0],W),V.set([0,0,1,0],W),Z.set([0,0,0,1],W),$.set([0,0,0,0],W)),this}},{key:"getColorTransform",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Y=this[z],Q=Y.color0,ie=Y.color1,O=Y.color2,V=Y.color3,Z=Y.color4;return[Q[W],ie[W],O[W],V[W],Z[W],Q[W+1],ie[W+1],O[W+1],V[W+1],Z[W+1],Q[W+2],ie[W+2],O[W+2],V[W+2],Z[W+2],Q[W+3],ie[W+3],O[W+3],V[W+3],Z[W+3]]}},{key:"transformColor",value:function(W,Y){var Q=this.getColorTransform(W);return Q=Object(T.multiply)(Q,Y),this.setColorTransform(W,Q),this}},{key:"setFillColor",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[z].fillColor.set(Y.map(function(Q){return Math.round(255*Q)}),4*W)}},{key:"setStrokeColor",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[z].strokeColor.set(Y.map(function(Q){return Math.round(255*Q)}),4*W)}},{key:"getCloudRGBA",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Y=this[z],Q=Y.fillColor,ie=Y.strokeColor,O=[Q[W],Q[W+1],Q[W+2],Q[W+3]],V=[ie[W],ie[W+1],ie[W+2],ie[W+3]];return O[3]/=255,V[3]/=255,{fill:"rgba(".concat(O.join(),")"),stroke:"rgba(".concat(V.join(),")")}}},{key:"grayscale",value:function(W,Y){this.transformColor(W,Object(T.grayscale)(Y)),this._getFilter(W).push("grayscale(".concat(100*Y,"%)"))}},{key:"brightness",value:function(W,Y){this.transformColor(W,Object(T.brightness)(Y)),this._getFilter(W).push("brightness(".concat(100*Y,"%)"))}},{key:"saturate",value:function(W,Y){this.transformColor(W,Object(T.saturate)(Y)),this._getFilter(W).push("saturate(".concat(100*Y,"%)"))}},{key:"contrast",value:function(W,Y){this.transformColor(W,Object(T.contrast)(Y)),this._getFilter(W).push("contrast(".concat(100*Y,"%)"))}},{key:"invert",value:function(W,Y){this.transformColor(W,Object(T.invert)(Y)),this._getFilter(W).push("invert(".concat(100*Y,"%)"))}},{key:"sepia",value:function(W,Y){this.transformColor(W,Object(T.sepia)(Y)),this._getFilter(W).push("sepia(".concat(100*Y,"%)"))}},{key:"opacity",value:function(W,Y){this.transformColor(W,Object(T.opacity)(Y)),this._getFilter(W).push("opacity(".concat(100*Y,"%)"))}},{key:"hueRotate",value:function(W,Y){this.transformColor(W,Object(T.hueRotate)(Y)),this._getFilter(W).push("hue-rotate(".concat(Y,"deg)"))}},{key:"setTransform",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=3,Y==null&&(Y=[1,0,0,1,0,0]);var Q=this[z],ie=Q.transform0,O=Q.transform1;return ie.set([Y[0],Y[2],Y[4]],W),O.set([Y[1],Y[3],Y[5]],W),this}},{key:"getTransform",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=3;var Y=this[z],Q=Y.transform0,ie=Y.transform1,O=[Q[W],ie[W],Q[W+1],ie[W+1],Q[W+2],ie[W+2]];return O}},{key:"getTextureFrame",value:function(W){return this[R][this[z].frameIndex[W]]}},{key:"setTextureFrames",value:function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(W.length>12)throw new Error("Max frames exceed. Allow 12 frames.");if(W.length){var Q=this[p];Q.setTexture(W[0],Y)}this[R]=W,this[b]=Y}},{key:"setFrameIndex",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");var Q=this[R].length;if(Q<=0)throw new Error("No frames");this[z].frameIndex[W]=Y%Q}},{key:"setProgram",value:function(W){this[p].setProgram(W)}},{key:"transform",value:function(W,Y){var Q=this.getTransform(W);return Y=y.mat2d.multiply(Array.of(0,0,0,0,0,0),Q,Y),this.setTransform(W,Y),this}},{key:"translate",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=y.mat2d.create();return V=y.mat2d.translate(Array.of(0,0,0,0,0,0),V,[ie,O]),this.transform(W,V)}},{key:"rotate",value:function(W,Y){var Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ie=u()(Q,2),O=ie[0],V=ie[1],Z=y.mat2d.create();return Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[O,V]),Z=y.mat2d.rotate(Array.of(0,0,0,0,0,0),Z,Y),Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[-O,-V]),this.transform(W,Z)}},{key:"scale",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=O===void 0?ie:O,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],se=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,se]),ce=y.mat2d.scale(Array.of(0,0,0,0,0,0),ce,[ie,V]),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-se]),this.transform(W,ce)}},{key:"skew",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=O===void 0?ie:O,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],se=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,se]),ce=y.mat2d.multiply(Array.of(0,0,0,0,0,0),ce,y.mat2d.fromValues(1,Math.tan(V),Math.tan(ie),1,0,0)),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-se]),this.transform(W,ce)}},{key:"isPointCollision",value:function(W,Y){var Q,ie=u()(Y,2),O=ie[0],V=ie[1],Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",$=this.getTransform(W),ee=Object(x.transformPoint)([O,V],y.mat2d.invert(Array.of(0,0,0,0,0,0),$));return(Q=this[p]).isPointCollision.apply(Q,c()(ee).concat([Z]))}},{key:"isPointInFill",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1];return this.isPointCollision(W,[ie,O],"fill")}},{key:"isPointInStroke",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1];return this.isPointCollision(W,[ie,O],"stroke")}},{key:"bufferSize",get:function(){return this[z].bufferSize}},{key:"mesh",get:function(){return this[p]},set:function(W){this[p]=W,this[R]&&this.setTextureFrames(this[R],this[b])}},{key:"hasCloudColor",get:function(){return this[P]}},{key:"hasCloudFilter",get:function(){return this[D]}},{key:"enableBlend",get:function(){return this[p].enableBlend||this[M]}},{key:"amount",get:function(){return this[m]},set:function(W){var Y=this[m];W!==Y&&(W>this[z].bufferSize&&(this[z]=j(Math.max(W,this[z].bufferSize+1e3),this[z])),this[m]=W,W>Y&&this.initBuffer(Y))}},{key:"meshData",get:function(){var W=this[p].meshData,Y=W.attributes,Q=W.cells,ie=W.positions,O=W.textureCoord,V=W.uniforms,Z=this[R],$={attributes:S({},Y),cells:Q,positions:ie,textureCoord:O,uniforms:S({},V),instanceCount:this[m],enableBlend:this.enableBlend};Z.length&&Z.forEach(function(w,I){$.uniforms["u_texFrame".concat(I)]=w});var ee=this[z],se=ee.transform0,ce=ee.transform1,me=ee.color0,pe=ee.color1,B=ee.color2,F=ee.color3,J=ee.color4,oe=ee.fillColor,K=ee.strokeColor,te=ee.frameIndex;return this[p].uniforms.u_texSampler&&($.attributes.a_frameIndex={data:te,divisor:1}),$.attributes.a_transform0={data:se,divisor:1},$.attributes.a_transform1={data:ce,divisor:1},$.attributes.a_colorCloud0={data:me,divisor:1},$.attributes.a_colorCloud1={data:pe,divisor:1},$.attributes.a_colorCloud2={data:B,divisor:1},$.attributes.a_colorCloud3={data:F,divisor:1},$.attributes.a_colorCloud4={data:J,divisor:1},this.hasCloudColor&&($.attributes.a_fillCloudColor={data:oe,divisor:1},$.attributes.a_strokeCloudColor={data:K,divisor:1}),$}},{key:"program",get:function(){return this[p].program}}]),A}()},function(e,r,n){n.r(r),n.d(r,"multiply",function(){return o}),n.d(r,"grayscale",function(){return a}),n.d(r,"brightness",function(){return c}),n.d(r,"saturate",function(){return l}),n.d(r,"contrast",function(){return u}),n.d(r,"invert",function(){return h}),n.d(r,"sepia",function(){return d}),n.d(r,"opacity",function(){return f}),n.d(r,"hueRotate",function(){return g});var i=n(42);n(1).glMatrix.setMatrixArrayType(Array);function o(y,T){var x=[],C=y[0],L=y[1],S=y[2],p=y[3],m=y[4],M=y[5],v=y[6],R=y[7],b=y[8],P=y[9],D=y[10],z=y[11],j=y[12],k=y[13],A=y[14],N=y[15],W=y[16],Y=y[17],Q=y[18],ie=y[19],O=T[0],V=T[1],Z=T[2],$=T[3],ee=T[4];return x[0]=O*C+V*M+Z*D+$*N,x[1]=O*L+V*v+Z*z+$*W,x[2]=O*S+V*R+Z*j+$*Y,x[3]=O*p+V*b+Z*k+$*Q,x[4]=O*m+V*P+Z*A+$*ie+ee,O=T[5],V=T[6],Z=T[7],$=T[8],ee=T[9],x[5]=O*C+V*M+Z*D+$*N,x[6]=O*L+V*v+Z*z+$*W,x[7]=O*S+V*R+Z*j+$*Y,x[8]=O*p+V*b+Z*k+$*Q,x[9]=O*m+V*P+Z*A+$*ie+ee,O=T[10],V=T[11],Z=T[12],$=T[13],ee=T[14],x[10]=O*C+V*M+Z*D+$*N,x[11]=O*L+V*v+Z*z+$*W,x[12]=O*S+V*R+Z*j+$*Y,x[13]=O*p+V*b+Z*k+$*Q,x[14]=O*m+V*P+Z*A+$*ie+ee,O=T[15],V=T[16],Z=T[17],$=T[18],ee=T[19],x[15]=O*C+V*M+Z*D+$*N,x[16]=O*L+V*v+Z*z+$*W,x[17]=O*S+V*R+Z*j+$*Y,x[18]=O*p+V*b+Z*k+$*Q,x[19]=O*m+V*P+Z*A+$*ie+ee,x}function a(y){y=Object(i.clamp)(0,1,y);var T=.2126*y,x=.7152*y,C=.0722*y;return[T+1-y,x,C,0,0,T,x+1-y,C,0,0,T,x,C+1-y,0,0,0,0,0,1,0]}function c(y){return[y,0,0,0,0,0,y,0,0,0,0,0,y,0,0,0,0,0,1,0]}function l(y){var T=.2126*(1-y),x=.7152*(1-y),C=.0722*(1-y);return[T+y,x,C,0,0,T,x+y,C,0,0,T,x,C+y,0,0,0,0,0,1,0]}function u(y){var T=.5*(1-y);return[y,0,0,0,T,0,y,0,0,T,0,0,y,0,T,0,0,0,1,0]}function h(y){var T=1-2*y;return[T,0,0,0,y,0,T,0,0,y,0,0,T,0,y,0,0,0,1,0]}function d(y){return[1-.607*y,.769*y,.189*y,0,0,.349*y,1-.314*y,.168*y,0,0,.272*y,.534*y,1-.869*y,0,0,0,0,0,1,0]}function f(y){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,y,0]}function g(y){var T=y/180*Math.PI,x=Math.cos(T),C=Math.sin(T),L=.2126,S=.7152,p=.0722;return[L+x*(1-L)+C*-L,S+x*-S+C*-S,p+x*-p+C*(1-p),0,0,L+x*-L+C*.143,S+x*(1-S)+C*.14,p+x*-p+C*-.283,0,0,L+x*-L+C*-.7874,S+x*-S+C*S,p+x*(1-p)+C*p,0,0,0,0,0,1,0]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return a});var i=n(48),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(c){var l=o()(c);if(!l||!l.length)throw new TypeError("Invalid color value.");return[l[0]/255,l[1]/255,l[2]/255,l[3]]}},function(e,r,n){var i=n(49),o=n(53),a=n(55);e.exports=function(l){var u,h=i(l);return h.space?(u=Array(3),u[0]=a(h.values[0],0,255),u[1]=a(h.values[1],0,255),u[2]=a(h.values[2],0,255),h.space[0]==="h"&&(u=o.rgb(u)),u.push(a(h.alpha,0,1)),u):[]}},function(e,r,n){(function(i){var o=n(50),a=n(51),c=n(52);e.exports=u;var l={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function u(h){var d,f=[],g=1,y;if(typeof h=="string")if(o[h])f=o[h].slice(),y="rgb";else if(h==="transparent")g=0,y="rgb",f=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(h)){var T=h.slice(1),x=T.length,C=x<=4;g=1,C?(f=[parseInt(T[0]+T[0],16),parseInt(T[1]+T[1],16),parseInt(T[2]+T[2],16)],x===4&&(g=parseInt(T[3]+T[3],16)/255)):(f=[parseInt(T[0]+T[1],16),parseInt(T[2]+T[3],16),parseInt(T[4]+T[5],16)],x===8&&(g=parseInt(T[6]+T[7],16)/255)),f[0]||(f[0]=0),f[1]||(f[1]=0),f[2]||(f[2]=0),y="rgb"}else if(d=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(h)){var L=d[1],S=L==="rgb",T=L.replace(/a$/,"");y=T;var x=T==="cmyk"?4:T==="gray"?1:3;f=d[2].trim().split(/\s*,\s*/).map(function(v,R){if(/%$/.test(v))return R===x?parseFloat(v)/100:T==="rgb"?parseFloat(v)*255/100:parseFloat(v);if(T[R]==="h"){if(/deg$/.test(v))return parseFloat(v);if(l[v]!==void 0)return l[v]}return parseFloat(v)}),L===T&&f.push(1),g=S||f[x]===void 0?1:f[x],f=f.slice(0,x)}else h.length>10&&/[0-9](?:\s|\/)/.test(h)&&(f=h.match(/([0-9]+)/g).map(function(m){return parseFloat(m)}),y=h.match(/([a-z])/ig).join("").toLowerCase());else if(!isNaN(h))y="rgb",f=[h>>>16,(h&65280)>>>8,h&255];else if(a(h)){var p=c(h.r,h.red,h.R,null);p!==null?(y="rgb",f=[p,c(h.g,h.green,h.G),c(h.b,h.blue,h.B)]):(y="hsl",f=[c(h.h,h.hue,h.H),c(h.s,h.saturation,h.S),c(h.l,h.lightness,h.L,h.b,h.brightness)]),g=c(h.a,h.alpha,h.opacity,1),h.opacity!=null&&(g/=100)}else(Array.isArray(h)||i.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(h))&&(f=[h[0],h[1],h[2]],y="rgb",g=h.length===4?h[3]:1);return{space:y,values:f,alpha:g}}}).call(this,n(38))},function(e,r,n){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,r,n){var i=Object.prototype.toString;e.exports=function(o){var a;return i.call(o)==="[object Object]"&&(a=Object.getPrototypeOf(o),a===null||a===Object.getPrototypeOf({}))}},function(e,r){e.exports=function(){for(var n=0;n<arguments.length;n++)if(arguments[n]!==void 0)return arguments[n]}},function(e,r,n){var i=n(54);e.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(o){var a=o[0]/360,c=o[1]/100,l=o[2]/100,u,h,d,f,g;if(c===0)return g=l*255,[g,g,g];l<.5?h=l*(1+c):h=l+c-l*c,u=2*l-h,f=[0,0,0];for(var y=0;y<3;y++)d=a+1/3*-(y-1),d<0?d++:d>1&&d--,6*d<1?g=u+(h-u)*6*d:2*d<1?g=h:3*d<2?g=u+(h-u)*(2/3-d)*6:g=u,f[y]=g*255;return f}},i.hsl=function(o){var a=o[0]/255,c=o[1]/255,l=o[2]/255,u=Math.min(a,c,l),h=Math.max(a,c,l),d=h-u,f,g,y;return h===u?f=0:a===h?f=(c-l)/d:c===h?f=2+(l-a)/d:l===h&&(f=4+(a-c)/d),f=Math.min(f*60,360),f<0&&(f+=360),y=(u+h)/2,h===u?g=0:y<=.5?g=d/(h+u):g=d/(2-h-u),[f,g*100,y*100]}},function(e,r,n){e.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},function(e,r){e.exports=n;function n(i,o,a){return o<a?i<o?o:i>a?a:i:i<a?a:i>o?o:i}},function(e,r,n){n.r(r),n.d(r,"default",function(){return z});var i=n(19),o=n.n(i),a=n(57),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(58),g=n.n(f),y=n(59),T=n.n(y),x=n(60),C=n.n(x),L=n(61),S=n(63),p=n.n(S),m=n(70),M=n(72);n(1).glMatrix.setMatrixArrayType(Array);var v=Symbol("contours"),R=Symbol("path"),b=Symbol("simplify"),P=Symbol("scale"),D=2*Math.PI,z=function(){function j(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};u()(this,j),typeof k=="string"&&(k={path:k}),k.path?this[R]=g()(k.path):this[R]=[],this[v]=null,this[b]=k.simplify!=null?k.simplify:0,this[P]=k.scale!=null?k.scale:2}return d()(j,[{key:"normalize",value:function(){var A,N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,Y=Object(L.default)(C()(this[R])).map(function(Q){for(var ie=c()(Q),O=ie[0],V=ie.slice(1),Z=[O],$=0;$<V.length;$+=2){var ee=V[$]-N,se=V[$+1]-W;Z.push(ee,se)}return Z});return this.beginPath(),(A=this[R]).push.apply(A,o()(Y)),this}},{key:"getPointAtLength",value:function(A){return this.contours?Object(m.getPointAtLength)(this[v],A):null}},{key:"getTotalLength",value:function(){return this.contours?Object(m.getTotalLength)(this[v]):0}},{key:"addPath",value:function(A){var N;this[v]=null,typeof A=="string"&&(A=g()(A)),(N=this[R]).push.apply(N,o()(A))}},{key:"beginPath",value:function(){this[R]=[],this[v]=null}},{key:"clear",value:function(){this.beginPath()}},{key:"ellipse",value:function(A,N,W,Y,Q,ie,O){var V=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0;if(ie+=Q,O+=Q,!(W<=0||Y<=0||O===ie)){O<ie&&(O=ie+D+(O-ie)%D),O-ie>D&&(O=ie+D);var Z=O-ie;Z>=D&&(O-=.001);var $=this[R].length>0&&Z<D?"L":"M",ee=Object(M.getPoint)(A,N,W,Y,ie),se=Object(M.getPoint)(A,N,W,Y,O),ce=+!V,me=Z>Math.PI?1:0;V&&(me=1-me),$+=ee.join(" "),$+="A".concat(W," ").concat(Y," 0 ").concat(me," ").concat(ce," ").concat(se.join(" ")),Z>=D&&($+="Z"),this.addPath($)}}},{key:"arc",value:function(A,N,W,Y,Q){var ie=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;return this.ellipse(A,N,W,W,0,Y,Q,ie)}},{key:"arcTo",value:function(A,N,W,Y,Q,ie,O){this[v]=null,this[R].push(["A",A,N,W,Y,Q,ie,O])}},{key:"moveTo",value:function(A,N){this[v]=null,this[R].push(["M",A,N])}},{key:"lineTo",value:function(A,N){this[v]=null,this[R].push(["L",A,N])}},{key:"bezierCurveTo",value:function(A,N,W,Y,Q,ie){this[v]=null,this[R].push(["C",A,N,W,Y,Q,ie])}},{key:"quadraticCurveTo",value:function(A,N,W,Y){this[v]=null,this[R].push(["Q",A,N,W,Y])}},{key:"rect",value:function(A,N,W,Y){var Q="M".concat(A," ").concat(N,"L").concat(A+W," ").concat(N,"L").concat(A+W," ").concat(N+Y,"L").concat(A," ").concat(N+Y,"Z");this.addPath(Q)}},{key:"closePath",value:function(){this[v]=null;var A=[],N=this[R].length;N>0&&(A=this[R][N-1]),A[0]!=="Z"&&A[0]!=="z"&&this[R].push(["Z"])}},{key:"contours",get:function(){var A=null;if(!this[v]&&this[R]){var N=Object(L.default)(C()(this[R]));this[v]=p()(N,this[P],this[b]),this[v].path=N,this[v].simplify=this[b],this[v].scale=this[P]}return this[v]&&(A=this[v].map(function(W){return o()(W)}),A.path=this[v].path,A.simplify=this[v].simplify,A.scale=this[v].scale),A}},{key:"path",get:function(){return this[R]}},{key:"simplify",get:function(){return this[b]}},{key:"boundingBox",get:function(){var A=this.contours;if(A&&A.length){var N=A.reduce(function(W,Y){return[].concat(o()(W),o()(Y))});return T()(N)}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var A=this.boundingBox;return A?[.5*(A[0][0]+A[1][0]),.5*(A[0][1]+A[1][1])]:[0,0]}}]),j}()},function(e,r,n){var i=n(14),o=n(21),a=n(16),c=n(18);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,r){e.exports=o;var n={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function o(l){var u=[];return l.replace(i,function(h,d,f){var g=d.toLowerCase();for(f=c(f),g=="m"&&f.length>2&&(u.push([d].concat(f.splice(0,2))),g="l",d=d=="m"?"l":"L");;){if(f.length==n[g])return f.unshift(d),u.push(f);if(f.length<n[g])throw new Error("malformed path data");u.push([d].concat(f.splice(0,n[g])))}}),u}var a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function c(l){var u=l.match(a);return u?u.map(Number):[]}},function(e,r,n){e.exports=i;function i(o){var a=o.length;if(a===0)return[[],[]];for(var c=o[0].length,l=o[0].slice(),u=o[0].slice(),h=1;h<a;++h)for(var d=o[h],f=0;f<c;++f){var g=d[f];l[f]=Math.min(l[f],g),u[f]=Math.max(u[f],g)}return[l,u]}},function(e,r){e.exports=n;function n(i){var o=0,a=0,c=0,l=0;return i.map(function(u){u=u.slice();var h=u[0],d=h.toUpperCase();if(h!=d)switch(u[0]=d,h){case"a":u[6]+=c,u[7]+=l;break;case"v":u[1]+=l;break;case"h":u[1]+=c;break;default:for(var f=1;f<u.length;)u[f++]+=c,u[f++]+=l}switch(d){case"Z":c=o,l=a;break;case"H":c=u[1];break;case"V":l=u[1];break;case"M":c=o=u[1],l=a=u[2];break;default:c=u[u.length-2],l=u[u.length-1]}return u})}},function(e,r,n){n.r(r),n.d(r,"default",function(){return c});var i=n(13),o=n.n(i),a=n(62);n(1).glMatrix.setMatrixArrayType(Array);function c(h){for(var d,f=[],g=0,y=0,T=0,x=0,C=null,L=null,S=0,p=0,m=0,M=h.length;m<M;m++){var v=h[m],R=v[0];switch(R){case"M":T=v[1],x=v[2];break;case"A":var b=Object(a.default)(S,p,v[6],v[7],v[4],v[5],v[1],v[2],v[3]);if(!b.length)continue;b=b.map(function(k){var A=o()(k,8);A[0],A[1];var N=A[2],W=A[3],Y=A[4],Q=A[5],ie=A[6],O=A[7];return{x1:N,y1:W,x2:Y,y2:Q,x:ie,y:O}});for(var P=0,D;P<b.length;P++)D=b[P],v=["C",D.x1,D.y1,D.x2,D.y2,D.x,D.y],P<b.length-1&&f.push(v);break;case"S":var z=S,j=p;(d=="C"||d=="S")&&(z+=z-g,j+=j-y),v=["C",z,j,v[1],v[2],v[3],v[4]];break;case"T":d=="Q"||d=="T"?(C=S*2-C,L=p*2-L):(C=S,L=p),v=u(S,p,C,L,v[1],v[2]);break;case"Q":C=v[1],L=v[2],v=u(S,p,v[1],v[2],v[3],v[4]);break;case"L":v=l(S,p,v[1],v[2]);break;case"H":v=l(S,p,v[1],p);break;case"V":v=l(S,p,S,v[1]);break;case"Z":v=l(S,p,T,x);break}d=R,S=v[v.length-2],p=v[v.length-1],v.length>4?(g=v[v.length-4],y=v[v.length-3]):(g=S,y=p),f.push(v)}return f}function l(h,d,f,g){return["C",h,d,f,g,f,g]}function u(h,d,f,g,y,T){return["C",h/3+2/3*f,d/3+2/3*g,y/3+2/3*f,T/3+2/3*g,y,T]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return l}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(u,h,d,f){var g=u*f-h*d<0?-1:1,y=u*d+h*f;return y>1&&(y=1),y<-1&&(y=-1),g*Math.acos(y)}function a(u,h,d,f,g,y,T,x,C,L){var S=L*(u-d)/2+C*(h-f)/2,p=-C*(u-d)/2+L*(h-f)/2,m=T*T,M=x*x,v=S*S,R=p*p,b=m*M-m*R-M*v;b<0&&(b=0),b/=m*R+M*v,b=Math.sqrt(b)*(g===y?-1:1);var P=b*T/x*p,D=b*-x/T*S,z=L*P-C*D+(u+d)/2,j=C*P+L*D+(h+f)/2,k=(S-P)/T,A=(p-D)/x,N=(-S-P)/T,W=(-p-D)/x,Y=o(1,0,k,A),Q=o(k,A,N,W);return y===0&&Q>0&&(Q-=i),y===1&&Q<0&&(Q+=i),[z,j,Y,Q]}function c(u,h){var d=1.3333333333333333*Math.tan(h/4),f=Math.cos(u),g=Math.sin(u),y=Math.cos(u+h),T=Math.sin(u+h);return[f,g,f-g*d,g+f*d,y+T*d,T-y*d,y,T]}function l(u,h,d,f,g,y,T,x,C){var L=Math.sin(C*i/360),S=Math.cos(C*i/360),p=S*(u-d)/2+L*(h-f)/2,m=-L*(u-d)/2+S*(h-f)/2;if(p===0&&m===0)return[];if(T===0||x===0)return[];T=Math.abs(T),x=Math.abs(x);var M=p*p/(T*T)+m*m/(x*x);M>1&&(T*=Math.sqrt(M),x*=Math.sqrt(M));var v=a(u,h,d,f,g,y,T,x,L,S),R=[],b=v[2],P=v[3],D=Math.max(Math.ceil(Math.abs(P)/(i/4)),1);P/=D;for(var z=0;z<D;z++)R.push(c(b,P)),b+=P;return R.map(function(j){for(var k=0;k<j.length;k+=2){var A=j[k+0],N=j[k+1];A*=T,N*=x;var W=S*A-L*N,Y=L*A+S*N;j[k+0]=W+v[0],j[k+1]=Y+v[1]}return j})}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(64),o=n(66),a=o.copy,c=n(67);function l(g,y,T){return g[0]=y,g[1]=T,g}var u=[0,0],h=[0,0],d=[0,0];function f(g,y,T,x){i(T,l(u,x[1],x[2]),l(h,x[3],x[4]),l(d,x[5],x[6]),y,g)}e.exports=function(y,T,x){var C=[],L=[],S=[0,0];return y.forEach(function(p,m,M){if(p[0]==="M")a(S,p.slice(1)),L.length>0&&(C.push(L),L=[]);else if(p[0]==="C")f(L,T,S,p),l(S,p[5],p[6]);else throw new Error("illegal type in SVG: "+p[0])}),L.length>0&&C.push(L),C.map(function(p){return c(p,x||0)})}},function(e,r,n){e.exports=n(65)()},function(e,r){function n(o){return[o[0],o[1]]}function i(o,a){return[o,a]}e.exports=function(a){a=a||{};var c=typeof a.recursion=="number"?a.recursion:8,l=typeof a.epsilon=="number"?a.epsilon:11920929e-14,u=typeof a.pathEpsilon=="number"?a.pathEpsilon:1,h=typeof a.angleEpsilon=="number"?a.angleEpsilon:.01,d=a.angleTolerance||0,f=a.cuspLimit||0;return function(x,C,L,S,p,m){m||(m=[]),p=typeof p=="number"?p:1;var M=u/p;return M*=M,g(x,C,L,S,m,M),m};function g(T,x,C,L,S,p){S.push(n(T));var m=T[0],M=T[1],v=x[0],R=x[1],b=C[0],P=C[1],D=L[0],z=L[1];y(m,M,v,R,b,P,D,z,S,p,0),S.push(n(L))}function y(T,x,C,L,S,p,m,M,v,R,b){if(!(b>c)){var P=Math.PI,D=(T+C)/2,z=(x+L)/2,j=(C+S)/2,k=(L+p)/2,A=(S+m)/2,N=(p+M)/2,W=(D+j)/2,Y=(z+k)/2,Q=(j+A)/2,ie=(k+N)/2,O=(W+Q)/2,V=(Y+ie)/2;if(b>0){var Z=m-T,$=M-x,ee=Math.abs((C-m)*$-(L-M)*Z),se=Math.abs((S-m)*$-(p-M)*Z),ce,me;if(ee>l&&se>l){if((ee+se)*(ee+se)<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}var pe=Math.atan2(p-L,S-C);if(ce=Math.abs(pe-Math.atan2(L-x,C-T)),me=Math.abs(Math.atan2(M-p,m-S)-pe),ce>=P&&(ce=2*P-ce),me>=P&&(me=2*P-me),ce+me<d){v.push(i(O,V));return}if(f!==0){if(ce>f){v.push(i(C,L));return}if(me>f){v.push(i(S,p));return}}}}else if(ee>l){if(ee*ee<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}if(ce=Math.abs(Math.atan2(p-L,S-C)-Math.atan2(L-x,C-T)),ce>=P&&(ce=2*P-ce),ce<d){v.push(i(C,L)),v.push(i(S,p));return}if(f!==0&&ce>f){v.push(i(C,L));return}}}else if(se>l){if(se*se<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}if(ce=Math.abs(Math.atan2(M-p,m-S)-Math.atan2(p-L,S-C)),ce>=P&&(ce=2*P-ce),ce<d){v.push(i(C,L)),v.push(i(S,p));return}if(f!==0&&ce>f){v.push(i(S,p));return}}}else if(Z=O-(T+m)/2,$=V-(x+M)/2,Z*Z+$*$<=R){v.push(i(O,V));return}}y(T,x,D,z,W,Y,O,V,v,R,b+1),y(O,V,Q,ie,A,N,m,M,v,R,b+1)}}}},function(e,r,n){n.r(r),n.d(r,"create",function(){return a}),n.d(r,"clone",function(){return o}),n.d(r,"copy",function(){return c}),n.d(r,"scaleAndAdd",function(){return l}),n.d(r,"dot",function(){return u}),n.d(r,"rotate",function(){return h}),n.d(r,"cross",function(){return d}),n.d(r,"sub",function(){return f}),n.d(r,"add",function(){return g}),n.d(r,"computeMiter",function(){return C}),n.d(r,"normal",function(){return L}),n.d(r,"direction",function(){return S});var i=n(1);n(1).glMatrix.setMatrixArrayType(Array);function o(p){return[p[0],p[1]]}function a(){return[0,0]}var c=i.vec2.copy,l=i.vec2.scaleAndAdd,u=i.vec2.dot,h=i.vec2.rotate,d=i.vec2.cross,f=i.vec2.sub,g=i.vec2.add,y=i.vec2.normalize,T=i.vec2.set,x=a();function C(p,m,M,v,R){g(p,M,v),y(p,p),T(m,-p[1],p[0]),T(x,-M[1],M[0]);var b=R/u(m,x);return Math.abs(b)}function L(p,m){return T(p,-m[1],m[0]),p}function S(p,m,M){return f(p,m,M),y(p,p),p}},function(e,r,n){var i=n(68),o=n(69);e.exports=function(c,l){return c=i(c,l),c=o(c,l),c},e.exports.radialDistance=i,e.exports.douglasPeucker=o},function(e,r){function n(i,o){var a=i[0]-o[0],c=i[1]-o[1];return a*a+c*c}e.exports=function(o,a){if(o.length<=1)return o;a=typeof a=="number"?a:1;for(var c=a*a,l=o[0],u=[l],h,d=1,f=o.length;d<f;d++)h=o[d],n(h,l)>c&&(u.push(h),l=h);return l!==h&&u.push(h),u}},function(e,r){function n(o,a,c){var l=a[0],u=a[1],h=c[0]-l,d=c[1]-u;if(h!==0||d!==0){var f=((o[0]-l)*h+(o[1]-u)*d)/(h*h+d*d);f>1?(l=c[0],u=c[1]):f>0&&(l+=h*f,u+=d*f)}return h=o[0]-l,d=o[1]-u,h*h+d*d}function i(o,a,c,l,u){for(var h=l,d,f=a+1;f<c;f++){var g=n(o[f],o[a],o[c]);g>h&&(d=f,h=g)}h>l&&(d-a>1&&i(o,a,d,l,u),u.push(o[d]),c-d>1&&i(o,d,c,l,u))}e.exports=function(a,c){if(a.length<=1)return a;c=typeof c=="number"?c:1;var l=c*c,u=a.length-1,h=[a[0]];return i(a,0,u,l,h),h.push(a[u]),h}},function(e,r,n){n.r(r),n.d(r,"getTotalLength",function(){return c}),n.d(r,"getPointAtLength",function(){return u}),n.d(r,"getDashContours",function(){return h});var i=n(19),o=n.n(i),a=n(71);n(1).glMatrix.setMatrixArrayType(Array);function c(d){if(d.totalLength!=null)return d.totalLength;var f=0;return d.forEach(function(g){for(var y=g[0],T=1;T<g.length;T++){var x=g[T];f+=Object(a.distance)(y,x),y=x}}),d.totalLength=f,f}function l(d,f){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(f<=0)throw new TypeError("Length must > 0");var y=c(d);if(f>=y){var T=d[d.length-1],x=T[T.length-2],C=T[T.length-1],L=Math.atan2(C[1]-x[1],C[0]-x[0]);return{current:d.map(function(A){return o()(A)}),point:{x:C[0],y:C[1],angle:L}}}for(var S=[],p=0;p<d.length;p++){S[p]=[];for(var m=d[p],M=m[0],v=1;v<m.length;v++){var R=m[v],b=Object(a.distance)(M,R);if(f<b){var P=f/b,D=Math.atan2(R[1]-M[1],R[0]-M[0]),z={x:M[0]*(1-P)+R[0]*P,y:M[1]*(1-P)+R[1]*P,angle:D};if(S[p].push(M),f>0&&S[p].push([z.x,z.y]),!g)return{current:S,point:z};for(var j=[],k=p;p<d.length;p++){for(j[p-k]=[],p===k&&j[0].push([z.x,z.y]);v<m.length;v++)j[p-k].push(m[v]);v=0}return{current:S,point:z,rest:j}}f-=b,S[p].push(M),M=R}}}function u(d,f){if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(d.length<=0)return{x:0,y:0,angle:0};if(f<=0){var g=d[0][0],y=d[0][1],T=Math.atan2(y[1]-g[1],y[0]-g[0]);return{x:g[0],y:g[1],angle:T}}return l(d,f,!1).point}function h(d,f,g){var y=0,T=f[0],x=d,C=[],L=f.length;if(g>0){do g-=f[y%L],y++;while(g>0);g<0&&(T=-g,y--)}else if(g<0){y=-1;do g+=f[y%L+L-1],y--;while(g<0);g>=0&&(y++,T=f[y%L+L-1]-g)}do{var S=l(x,T);x=S.rest,++y%2&&C.push.apply(C,o()(S.current));var p=y%L;p<0&&(p+=L),T=f[p]}while(x);return C}},function(e,r,n){n.r(r),n.d(r,"normalize",function(){return a}),n.d(r,"distance",function(){return c});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(l,u,h,d){var f=o()(l,3),g=f[0],y=f[1],T=f[2];return g=g*2/u-1,y=1-y*2/h,Number.isFinite(d)?(T=T*2/d-1,[g,y,T]):[g,y]}function c(l,u){var h=o()(l,3),d=h[0],f=h[1],g=h[2],y=g===void 0?0:g,T=o()(u,3),x=T[0],C=T[1],L=T[2],S=L===void 0?0:L;return Math.hypot(x-d,C-f,S-y)}},function(e,r,n){n.r(r),n.d(r,"getPoint",function(){return o}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(a,c,l,u,h){h%=i,h<0&&(h+=i);var d=Math.tan(h);if(Math.abs(d)<1e5){var f=c-d*a,g=1/Math.pow(l,2)+Math.pow(d,2)/Math.pow(u,2),y=-1;(h<=Math.PI/2||h>3*Math.PI/2)&&(y=1);var T=y*Math.sqrt(1/g)+a,x=d*T+f;return[T,x]}return h<Math.PI?[a,c+u]:[a,c-u]}},function(e,r,n){n.r(r),n.d(r,"default",function(){return _});var i=n(74),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(13),g=n.n(f),y=n(1),T=n(59),x=n.n(T),C=n(76),L=n(44),S=n(40),p=n(46),m=n(78),M=n(70),v=n(79),R=n.n(v),b=n(63),P=n.n(b),D=n(47),z=n(56),j=n(37);n(1).glMatrix.setMatrixArrayType(Array);var k=Symbol("mesh"),A=Symbol("contours"),N=Symbol("stroke"),W=Symbol("fill"),Y=Symbol("strokeColor"),Q=Symbol("fillColor"),ie=Symbol("transform"),O=Symbol("invertTransform"),V=Symbol("uniforms"),Z=Symbol("texOptions"),$=Symbol("blend"),ee=Symbol("applyTexture"),se=Symbol("applyTransform"),ce=Symbol("applyGradientTransform"),me=Symbol("applyProgram"),pe=Symbol("gradient"),B=Symbol("filter"),F=Symbol("opacity"),J=Symbol("program"),oe=Symbol("attributes"),K=Symbol("pass"),te=Symbol("clipContext"),w=Symbol("applyClipPath");function I(re,ne){for(var X=re[1][0]-re[0][0],ae=re[1][1]-re[0][1],ue=[],he=0;he<ne.length;he++){var ge=ne[he],Me=[(ge[0]-re[0][0])/X,1-(ge[1]-re[0][1])/ae];ue.push(Me)}return ue}function U(re,ne,X){var ae=g()(re,2),ue=ae[0],he=ae[1],ge=g()(ne,4),Me=ge[0],we=ge[1],be=ge[2],Ie=ge[3],Ce=X.scale;return Ce||(ue/=be,he=1-he/Ie,ue-=Me,he+=we),[ue,he,0]}function G(re,ne,X){var ae=P()(re,ne,X);return ae.path=re,ae.simplify=X,ae.scale=ne,ae}var _=function(){function re(ne){u()(this,re),this[N]=null,this[W]=null,this[ie]=[1,0,0,1,0,0],this[F]=1,this[V]={},this[B]=[],this[$]=null,this[Z]={},this.contours=ne.contours,this[J]=null,this[oe]={},this[K]=[]}return d()(re,[{key:"setProgram",value:function(X){this[J]=X,this[k]&&this[me](X)}},{key:"setAttribute",value:function(X,ae){ae==null?delete this[oe][X]:this[oe][X]=ae}},{key:"getOpacity",value:function(){return this[F]}},{key:"setOpacity",value:function(X){if(X<0||X>1)throw new TypeError("Invalid opacity value.");this[k]&&this[k].positions.forEach(function(ae){ae[2]=1/ae[2]>0?X:-X}),this[F]=X}},{key:"setClipPath",value:function(X){this.clipPath=X,this[V].u_clipSampler&&this[V].u_clipSampler.delete(),this.setUniforms({u_clipSampler:null}),this[k]&&delete this[k].attributes.a_clipUV,X&&this[k]&&this[w]()}},{key:w,value:function(){if(this.clipPath){this[te]||(this[te]=j.default.createCanvas(1,1));var X=g()(this.boundingBox,2),ae=g()(X[0],2),ue=ae[0],he=ae[1],ge=g()(X[1],2),Me=ge[0],we=ge[1];Me&&we&&(this[te].width=Me-ue,this[te].height=we-he);var be=this[te].getContext("2d"),Ie=new Path2D(this.clipPath);be.clearRect(0,0,this[te].width,this[te].height),be.save(),be.translate(-ue,-he),be.fillStyle="white",be.fill(Ie),be.restore(),this[k].clipPath=this[te];var Ce=I(this.boundingBox,this[k].position0);this[k].attributes.a_clipUV=Ce}}},{key:"getPointAtLength",value:function(X){return Object(M.getPointAtLength)(this[A],X)}},{key:"getTotalLength",value:function(){return Object(M.getTotalLength)(this[A])}},{key:me,value:function(X){for(var ae=this[oe],ue=this[k].position0,he=Object.entries(X._attribute),ge=0;ge<he.length;ge++){var Me=g()(he[ge],2),we=Me[0],be=Me[1];if(we!=="a_color"&&we!=="a_sourceRect"&&be!=="ignored"){var Ie=ae[we];if(we==="uv"&&!Ie){var Ce=this[k].boundingBox||x()(ue);this[k].attributes[we]=I(Ce,ue)}else{this[k].attributes[we]=[];for(var ke=0;ke<ue.length;ke++){var Ee=ue[ke];this[k].attributes[we].push(Ie?Ie(Ee,ge,ue):Array(be.size).fill(0))}}}}}},{key:se,value:function(X,ae){for(var ue=X.positions,he=X.position0,ge=0;ge<ue.length;ge++){var Me=g()(he[ge],2),we=Me[0],be=Me[1],Ie=ue[ge];Ie[0]=we*ae[0]+be*ae[2]+ae[4],Ie[1]=we*ae[1]+be*ae[3]+ae[5]}this._updateMatrix=!1}},{key:ce,value:function(){var X=this[ie],ae=c()(this._radialGradientVector);if(ae){var ue=g()(ae,5),he=ue[0],ge=ue[1],Me=ue[3],we=ue[4];ae[0]=he*X[0]+ge*X[2]+X[4],ae[1]=he*X[1]+ge*X[3]+X[5],ae[3]=Me*X[0]+we*X[2]+X[4],ae[4]=Me*X[1]+we*X[3]+X[5],this[V].u_radialGradientVector=ae}}},{key:ee,value:function(X,ae){function ue(Ee,Ae){return Ee==null&&Ae==null?!0:Ee==null||Ae==null?!1:Ee[0]===Ae[0]&&Ee[1]===Ae[1]&&Ee[2]===Ae[2]&&Ee[3]===Ae[3]}var he=this[V].u_texSampler;if(he){var ge=he._img,Me=ge.width,we=ge.height,be=ae.srcRect,Ie=ae.rect||[0,0];if(ae.rotated&&(Ie=[-Ie[1],Ie[0],Ie[3],Ie[2]]),Ie[2]==null&&(Ie[2]=be?be[2]:Me),Ie[3]==null&&(Ie[3]=be?be[3]:we),ae.hidden)X.textureCoord=X.positions.map(function(){return[-1,-1,-1]});else if(!X.textureCoord||!ue(this[Z].rect,ae.rect)||this[Z].hidden!==ae.hidden||this[Z].rotated!==ae.rotated){var Ce=null;ae.rotated&&(Ce=y.mat2d.rotate(Array.of(0,0,0,0,0,0),y.mat2d.fromValues(1,0,0,1,0,0),.5*Math.PI),Ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),Ce,[0,-Ie[2]])),X.textureCoord=X.position0.map(function(Ee){var Ae=g()(Ee,3),Oe=Ae[0],ze=Ae[1],je=Ae[2];if(1/je>0){if(ae.rotated){var Je=Oe*Ce[0]+ze*Ce[2]+Ce[4],rt=Oe*Ce[1]+ze*Ce[3]+Ce[5];Oe=Je,ze=rt}var et=U([Oe,ze],[Ie[0]/Ie[2],Ie[1]/Ie[3],Ie[2],Ie[3]],ae);return ae.repeat&&(et[2]=1),et}return[-1,-1,-1]})}if(be){var ke=[be[0]/Me,be[1]/we,be[2]/Me,be[3]/we];X.attributes.a_sourceRect=X.positions.map(function(){return[].concat(ke)})}else X.attributes.a_sourceRect=X.positions.map(function(){return[0,0,0,0]})}}},{key:"accurate",value:function(X){if(this.contours){var ae=this.contours.path;if(ae){var ue=this.contours.simplify,he=G(this.contours.path,2*X,ue);this[k]=null,this[A]=he}}}},{key:"canIgnore",value:function(){var X=this[N]==null||this[N].lineWidth===0||this[Y][3]===0,ae=this[W]==null||this[Q][3]===0,ue=this[V].u_radialGradientVector==null,he=this[V].u_texSampler==null;return this[F]===0||this[J]==null&&X&&ae&&ue&&he&&!this.beforeRender&&!this.afterRender}},{key:"setStroke",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.thickness,ue=ae===void 0?1:ae,he=X.cap,ge=he===void 0?"butt":he,Me=X.join,we=Me===void 0?"miter":Me,be=X.miterLimit,Ie=be===void 0?10:be,Ce=X.color,ke=Ce===void 0?[0,0,0,0]:Ce,Ee=X.lineDash,Ae=Ee===void 0?null:Ee,Oe=X.lineDashOffset,ze=Oe===void 0?0:Oe,je=X.roundSegments,Je=je===void 0?20:je;return this[k]=null,this[N]=new C.default({lineWidth:ue,lineCap:ge,lineJoin:we,miterLimit:Ie,roundSegments:Je}),typeof ke=="string"&&(ke=Object(D.default)(ke)),this[Y]=ke,this[N].lineDash=Ae,this[N].lineDashOffset=ze,this}},{key:"setFill",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.rule,ue=ae===void 0?this.fillRule:ae,he=X.color,ge=he===void 0?[0,0,0,0]:he;return this[k]=null,this[W]={rule:ue},typeof ge=="string"&&(ge=Object(D.default)(ge)),this[Q]=ge,this}},{key:"setTexture",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(X&&X.image){var ue=X,he=ue.image,ge=ue.rect;if(X=he,ae.rect)for(var Me=0;Me<ae.rect.length;Me++)ge[Me]=ae.rect[Me];ae.rect=ge}return this[W]||this.setFill(),this.setUniforms({u_texSampler:X}),this[k]&&this[ee](this[k],ae),this[Z]=ae,this}},{key:"setCircularGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==3)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setLinearGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==4)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setRadialGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==6)throw new TypeError("Invalid radialGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;ue=ue.map(function(be){var Ie=be.offset,Ce=be.color;return typeof Ce=="string"&&(Ce=Object(D.default)(Ce)),{offset:Ie,color:Ce}}),this[pe]=this[pe]||{},this[pe][ge]={vector:ae,colors:ue},ue.sort(function(be,Ie){return be.offset-Ie.offset});var Me=[];ue.forEach(function(be){var Ie=be.offset,Ce=be.color;Me.push.apply(Me,[Ie].concat(c()(Ce)))});var we;if(ae.length===4?we=[ae[0],ae[1],0,ae[2],ae[3],0]:we=c()(ae),Me.length<40&&Me.push(-1),Me.length>40)throw new Error("Too many colors, should be less than 8 colors");return this._radialGradientVector=we,this[V].u_colorSteps=Me,ge==="fill"?this[V].u_gradientType=1:this[V].u_gradientType=0,this[ce](),this}},{key:"setUniforms",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this[V],X),this}},{key:"setTransform",value:function(){for(var X=this[ie],ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return y.mat2d.equals(ue,X)||(this[ie]=ue,delete this[O],this._updateMatrix=!0),this}},{key:"transform",value:function(){for(var X=this[ie],ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return this[ie]=y.mat2d.multiply(Array.of(0,0,0,0,0,0),X,ue),delete this[O],this._updateMatrix=!0,this}},{key:"translate",value:function(X,ae){var ue=y.mat2d.create();return ue=y.mat2d.translate(Array.of(0,0,0,0,0,0),ue,[X,ae]),this.transform.apply(this,c()(ue))}},{key:"rotate",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],ue=g()(ae,2),he=ue[0],ge=ue[1],Me=y.mat2d.create();return Me=y.mat2d.translate(Array.of(0,0,0,0,0,0),Me,[he,ge]),Me=y.mat2d.rotate(Array.of(0,0,0,0,0,0),Me,X),Me=y.mat2d.translate(Array.of(0,0,0,0,0,0),Me,[-he,-ge]),this.transform.apply(this,c()(Me))}},{key:"scale",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],he=g()(ue,2),ge=he[0],Me=he[1],we=y.mat2d.create();return we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[ge,Me]),we=y.mat2d.scale(Array.of(0,0,0,0,0,0),we,[X,ae]),we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[-ge,-Me]),this.transform.apply(this,c()(we))}},{key:"skew",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],he=g()(ue,2),ge=he[0],Me=he[1],we=y.mat2d.create();return we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[ge,Me]),we=y.mat2d.multiply(Array.of(0,0,0,0,0,0),we,y.mat2d.fromValues(1,Math.tan(ae),Math.tan(X),1,0,0)),we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[-ge,-Me]),this.transform.apply(this,c()(we))}},{key:"clearFilter",value:function(){return this.setColorTransform(null),this[B].length=0,this}},{key:"setColorTransform",value:function(){for(var X=arguments.length,ae=new Array(X),ue=0;ue<X;ue++)ae[ue]=arguments[ue];return ae[0]===null?this.setUniforms({u_filterFlag:0,u_colorMatrix:0}):this.setUniforms({u_filterFlag:1,u_colorMatrix:ae}),this}},{key:"transformColor",value:function(){for(var X=this.uniforms.u_colorMatrix,ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return X?X=Object(p.multiply)(X,ue):X=ue,this.setColorTransform.apply(this,c()(X)),this}},{key:"blur",value:function(X){return this[B].push("blur(".concat(X,"px)")),this}},{key:"brightness",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("brightness(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.brightness)(X)))}},{key:"contrast",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("contrast(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.contrast)(X)))}},{key:"dropShadow",value:function(X,ae){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,he=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0,1];return Array.isArray(he)&&(he=Object(S.default)(he)),this[B].push("drop-shadow(".concat(X,"px ").concat(ae,"px ").concat(ue,"px ").concat(he,")")),this}},{key:"grayscale",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("grayscale(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.grayscale)(X)))}},{key:"hueRotate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this[B].push("hue-rotate(".concat(X,"deg)")),this.transformColor.apply(this,c()(Object(p.hueRotate)(X)))}},{key:"invert",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("invert(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.invert)(X)))}},{key:"opacity",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("opacity(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.opacity)(X)))}},{key:"saturate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("saturate(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.saturate)(X)))}},{key:"sepia",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("sepia(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.sepia)(X)))}},{key:"url",value:function(X){return this[B].push("url(".concat(X,")")),this}},{key:"isPointCollision",value:function(X,ae){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",he=this.meshData,ge=he.positions,Me=he.cells,we=this.invertMatrix,be=we[0]*X+we[2]*ae+we[4],Ie=we[1]*X+we[3]*ae+we[5],Ce=this.boundingBox;if(be<Ce[0][0]||be>Ce[1][0]||Ie<Ce[0][1]||Ie>Ce[1][1])return!1;function ke(vi,go,sM){var Rd=g()(vi,2),oM=Rd[0],aM=Rd[1],Ad=g()(go,2),kd=Ad[0],Pd=Ad[1],Dd=g()(sM,2),cM=Dd[0],lM=Dd[1],Ld=cM-kd,Nd=lM-Pd,Od=((oM-kd)*Ld+(aM-Pd)*Nd)/(Math.pow(Ld,2)+Math.pow(Nd,2));return Od>=0&&Od<=1}for(var Ee=0;Ee<Me.length;Ee++){var Ae=Me[Ee];if(ue==="fill"&&Ae[0]>=he.fillPointCount)break;if(!(ue==="stroke"&&Ae[0]<he.fillPointCount)){var Oe=Ae.map(function(vi){return ge[vi]}),ze=g()(Oe,3),je=g()(ze[0],2),Je=je[0],rt=je[1],et=g()(ze[1],2),nt=et[0],Qe=et[1],st=g()(ze[2],2),ut=st[0],Ke=st[1],Wt=Math.sign((X-Je)*(Qe-rt)-(nt-Je)*(ae-rt));if(Wt===0&&ke([X,ae],[Je,rt],[nt,Qe]))return!0;var zr=Math.sign((X-nt)*(Ke-Qe)-(ut-nt)*(ae-Qe));if(zr===0&&ke([X,ae],[nt,Qe],[ut,Ke]))return!0;var Br=Math.sign((X-ut)*(rt-Ke)-(Je-ut)*(ae-Ke));if(Br===0&&ke([X,ae],[ut,Ke],[Je,rt])||Wt===1&&zr===1&&Br===1||Wt===-1&&zr===-1&&Br===-1)return!0}}return!1}},{key:"isPointInFill",value:function(X,ae){return this.isPointCollision(X,ae,"fill")}},{key:"isPointInStroke",value:function(X,ae){return this.isPointCollision(X,ae,"stroke")}},{key:"addPass",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ue=ae.width,he=ae.height,ge=o()(ae,["width","height"]),Me=new z.default;Me.rect(0,0,ue,he);var we=new re(Me);we.setUniforms(ge),we.setProgram(X),this[K].push(we)}},{key:"contours",get:function(){return this[A]},set:function(X){this[k]=null,this[A]=X;var ae=X.scale,ue=this.transformScale/ae;ue>1.5&&this.accurate(this.transformScale)}},{key:"program",get:function(){return this[J]}},{key:"blend",get:function(){return this[$]==null?"auto":this[$]},set:function(X){this[$]=X,this[k]&&(this[k].enableBlend=this.enableBlend)}},{key:"boundingBox",get:function(){if(this[k]&&this[k].boundingBox)return this[k].boundingBox;var X=this.meshData;if(X){var ae=X.position0;if(ae.length)X.boundingBox=x()(ae);else return[[0,0],[0,0]];return X.boundingBox}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var X=this.boundingBox;return X?[.5*(X[0][0]+X[1][0]),.5*(X[0][1]+X[1][1])]:[0,0]}},{key:"fillRule",get:function(){return this[W]?this[W].rule:"nonzero"}},{key:"lineWidth",get:function(){return this[N]?this[N].lineWidth:0}},{key:"lineCap",get:function(){return this[N]?this[N].lineCap:""}},{key:"lineJoin",get:function(){return this[N]?this[N].lineJoin:""}},{key:"miterLimit",get:function(){return this[N]?this[N].miterLimit:0}},{key:"strokeStyle",get:function(){return this[Y]&&this[Y][3]!==0?Object(S.default)(this[Y]):""}},{key:"lineDash",get:function(){return this[N]?this[N].lineDash:null}},{key:"lineDashOffset",get:function(){return this[N]?this[N].lineDashOffset:0}},{key:"fillStyle",get:function(){return this[Q]&&this[Q][3]!==0?Object(S.default)(this[Q]):""}},{key:"gradient",get:function(){return this[pe]}},{key:"texture",get:function(){return this[V].u_texSampler?{image:this[V].u_texSampler._img,options:this[Z]}:null}},{key:"enableBlend",get:function(){return this[$]===!0||this[$]===!1?this[$]:this[F]<1||this[Y]!=null&&this[Y][3]<1||this[Q]!=null&&this[Q][3]<1||this[V].u_colorMatrix!=null&&this[V].u_colorMatrix[18]<1||this[V].u_radialGradientVector!=null||this.beforeRender||this.afterRender}},{key:"filterCanvas",get:function(){return/blur|drop-shadow|url/.test(this.filter)}},{key:"filter",get:function(){return this[B].join(" ")}},{key:"transformMatrix",get:function(){return this[ie]}},{key:"invertMatrix",get:function(){if(!this[O]){var X=y.mat2d.invert(Array.of(0,0,0,0,0,0),this[ie]);this[O]=X}return this[O]}},{key:"transformScale",get:function(){var X=this[ie];return Math.max(Math.hypot(X[0],X[1]),Math.hypot(X[2],X[3]))}},{key:"uniforms",get:function(){return this[V]}},{key:"pass",get:function(){return this[K]}},{key:"meshData",get:function(){var X=this;if(this._updateMatrix){var ae=this.transformScale/this.contours.scale;ae>1.5&&this.accurate(this.transformScale)}if(!this[k]){!this[W]&&!this[N]&&this.setFill();var ue=this[A],he={};if(ue&&ue.length){if(this[W])try{var ge=R()(ue,this[W]);ge.positions=ge.positions.map(function(Ee){return Ee.push(X[F]),Ee}),ge.attributes={a_color:Array.from({length:ge.positions.length}).map(function(){return X[Q].map(function(Ee){return Math.round(255*Ee)})})},he.fill=ge}catch{}if(this[N]){var Me=this[N].lineDash,we=ue;if(Me){var be=this[N].lineDashOffset;we=Object(M.getDashContours)(ue,Me,be)}var Ie=we.map(function(Ee,Ae){var Oe=Ee.length>1&&y.vec2.equals(Ee[0],Ee[Ee.length-1]),ze=X[N].build(Ee,Oe);return R()([ze])});Ie.forEach(function(Ee){Ee.positions=Ee.positions.map(function(Ae){return Ae.push(-X[F]),Ae}),Ee.attributes={a_color:Array.from({length:Ee.positions.length}).map(function(){return X[Y].map(function(Ae){return Math.round(255*Ae)})})}}),he.stroke=Object(L.default)(Ie)}}var Ce=Object(L.default)([he.fill,he.stroke]);Ce.fillPointCount=he.fill?he.fill.positions.length:0,Ce.enableBlend=this.enableBlend,Ce.position0=Ce.positions.map(function(Ee){var Ae=g()(Ee,3),Oe=Ae[0],ze=Ae[1],je=Ae[2];return[Oe,ze,je]}),Ce.uniforms=this[V],this[k]=Ce,this[V].u_texSampler&&this[ee](Ce,this[Z]);var ke=this[ie];Object(m.isUnitTransform)(ke)||(this[se](Ce,ke),this[V].u_radialGradientVector&&this[ce]()),this.clipPath&&this[w](),this[J]&&this[me](this[J])}return this._updateMatrix&&(this[k].matrix=this[ie],this[se](this[k],this[ie]),this[V].u_radialGradientVector&&this[ce]()),this[k]}}]),re}()},function(e,r,n){var i=n(75);function o(a,c){if(a==null)return{};var l=i(a,c),u,h;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);for(h=0;h<d.length;h++)u=d[h],!(c.indexOf(u)>=0)&&Object.prototype.propertyIsEnumerable.call(a,u)&&(l[u]=a[u])}return l}e.exports=o},function(e,r){function n(i,o){if(i==null)return{};var a={},c=Object.keys(i),l,u;for(u=0;u<c.length;u++)l=c[u],!(o.indexOf(l)>=0)&&(a[l]=i[l]);return a}e.exports=n},function(e,r,n){n.r(r);var i=n(77);n(1).glMatrix.setMatrixArrayType(Array),r.default=i.Stroke},function(e,r,n){n.r(r),n.d(r,"Stroke",function(){return C});var i=n(19),o=n.n(i),a=n(23),c=n.n(a),l=n(24),u=n.n(l),h=n(66);n(1).glMatrix.setMatrixArrayType(Array);var d=Object(h.create)(),f=Object(h.create)(),g=Object(h.create)(),y=Object(h.create)(),T=Object(h.create)(),x=1e20,C=function(){function m(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},v=M.lineWidth,R=v===void 0?1:v,b=M.lineJoin,P=b===void 0?"miter":b,D=M.miterLimit,z=D===void 0?10:D,j=M.lineCap,k=j===void 0?"butt":j,A=M.roundSegments,N=A===void 0?20:A;c()(this,m),this.lineWidth=R,this.lineJoin=P,this.miterLimit=z,this.lineCap=k,this.roundSegments=N,this._normal=null}return u()(m,[{key:"build",value:function(v){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,b=v.length;if(v=o()(v),b<2)return v;R&&((v[0][0]!==v[b-1][0]||v[0][1]!==v[b-1][1])&&v.push(o()(v[0])),v.push(o()(v[1]))),b=v.length,this._normal=null;var P={left:[],right:[]},D=this.lineWidth/2,z=this.lineCap;if(!R&&z==="square"){Object(h.direction)(f,v[0],v[1]),Object(h.scaleAndAdd)(v[0],v[0],f,D);var j=v.length-1;Object(h.direction)(f,v[j],v[j-1]),Object(h.scaleAndAdd)(v[j],v[j],f,D)}for(var k=1;k<b;k++){var A=v[k-1],N=v[k],W=v[k+1];this._seg(P,A,N,W,D,R)}!R&&z==="round"&&p(P,this.roundSegments);var Y=[].concat(o()(P.left),o()(P.right.reverse()));return Y}},{key:"_seg",value:function(v,R,b,P,D,z){var j=this.lineJoin==="bevel",k=this.lineJoin==="round";if(Object(h.direction)(f,b,R),this._normal||(this._normal=Object(h.create)(),Object(h.normal)(this._normal,f)),v.left.length||S(v,R,this._normal,D),!P)Object(h.normal)(this._normal,f),z?S(v,R,this._normal,D):S(v,b,this._normal,D);else{Object(h.direction)(g,P,b);var A=Object(h.computeMiter)(y,T,f,g,D);A=Math.min(A,x);var N=Object(h.dot)(y,this._normal)<0?-1:1,W=j||k;if(!W&&this.lineJoin==="miter"){var Y=A/D;Y>this.miterLimit&&(W=!0)}if(W){Object(h.scaleAndAdd)(d,b,this._normal,-D*N),L(v,d,N);var Q=1/0;R&&(Q=Math.min(Q,Math.hypot(b[0]-R[0],b[1]-R[1]))),P&&(Q=Math.min(Q,Math.hypot(P[0]-b[0],P[1]-b[1])));var ie=Math.max(D,Math.min(A,Q));if(Object(h.scaleAndAdd)(d,b,T,ie*N),L(v,d,-N),P)if(Object(h.normal)(d,g),Object(h.copy)(this._normal,d),Object(h.scaleAndAdd)(d,b,d,-D*N),k){for(var O=Object(h.clone)(d),V=N>0?v.left[v.left.length-1]:v.right[v.right.length-1],Z=Object(h.clone)(b),$=Object(h.sub)(Object(h.create)(),V,Z),ee=Object(h.sub)(Object(h.create)(),O,Z),se=Math.PI/this.roundSegments,ce=0;ce<this.roundSegments&&(Object(h.rotate)($,$,[0,0],N*se),Math.sign(Object(h.cross)(d,$,ee)[2])===N);ce++)Object(h.add)(d,$,Z),L(v,d,N);L(v,O,N)}else L(v,d,N)}else S(v,b,T,A),Object(h.copy)(this._normal,T)}}}]),m}();function L(m,M,v){v>0?m.left.push(Object(h.clone)(M)):m.right.push(Object(h.clone)(M))}function S(m,M,v,R){var b=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;Object(h.scaleAndAdd)(d,M,v,-R),L(m,d,-b),Object(h.scaleAndAdd)(d,M,v,R),L(m,d,b)}function p(m,M){var v=m.left,R=m.right,b=Object(h.create)(),P=Object(h.create)(),D=v[0],z=R[0],j=[.5*(D[0]+z[0]),.5*(D[1]+z[1])];Object(h.sub)(P,D,j);for(var k=1;k<=M;k++){var A=-1*Math.PI*k/M;Object(h.rotate)(b,P,[0,0],A),Object(h.add)(d,j,b),v.unshift(Object(h.clone)(d))}D=R[R.length-1],z=v[v.length-1],j=[.5*(D[0]+z[0]),.5*(D[1]+z[1])],Object(h.sub)(P,D,j);for(var N=1;N<=M;N++){var W=-1*Math.PI*N/M;Object(h.rotate)(b,P,[0,0],W),Object(h.add)(d,j,b),R.push(Object(h.clone)(d))}}},function(e,r,n){n.r(r),n.d(r,"isUnitTransform",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return o[0]===1&&o[1]===0&&o[2]===0&&o[3]===1&&o[4]===0&&o[5]===0}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(80),o=n(81);e.exports=function(a,c){if(c=c||{},a=a.filter(function(C){return C.length>2}),a.length===0)return{positions:[],cells:[]};typeof c.vertexSize!="number"&&(c.vertexSize=a[0][0].length),a=a.map(function(C){return C.reduce(function(L,S){return L.concat(S)})});for(var l=c.rule==="evenodd"?i.WINDING_ODD:i.WINDING_NONZERO,u=i.tesselate(o({contours:a,windingRule:l,elementType:i.POLYGONS,polySize:3,vertexSize:2},c)),h=[],d=0;d<u.vertices.length;d+=c.vertexSize){var f=u.vertices.slice(d,d+c.vertexSize);h.push(f)}var g=[];for(d=0;d<u.elements.length;d+=3){var y=u.elements[d],T=u.elements[d+1],x=u.elements[d+2];g.push([y,T,x])}return{positions:h,cells:g}}},function(e,r,n){n(1).glMatrix.setMatrixArrayType(Array);var i={},o={};e.exports=i,i.WINDING_ODD=0,i.WINDING_NONZERO=1,i.WINDING_POSITIVE=2,i.WINDING_NEGATIVE=3,i.WINDING_ABS_GEQ_TWO=4,i.POLYGONS=0,i.CONNECTED_POLYGONS=1,i.BOUNDARY_CONTOURS=2,i.tesselate=function(S){for(var p=S.debug||!1,m=new L,M=0;M<S.contours.length;M++)m.addContour(S.vertexSize||2,S.contours[M]);return m.tesselate(S.windingRule||i.WINDING_ODD,S.elementType||i.POLYGONS,S.polySize||3,S.vertexSize||2,S.normal||[0,0,1]),{vertices:m.vertices,vertexIndices:m.vertexIndices,vertexCount:m.vertexCount,elements:m.elements,elementCount:m.elementCount,mesh:p?m.mesh:void 0}};var a=function(p){if(!p)throw"Assertion Failed!"};function c(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}function l(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}function u(S){this.next=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Org=null,this.Lface=null,this.activeRegion=null,this.winding=0,this.side=S}u.prototype={get Rface(){return this.Sym.Lface},set Rface(S){this.Sym.Lface=S},get Dst(){return this.Sym.Org},set Dst(S){this.Sym.Org=S},get Oprev(){return this.Sym.Lnext},set Oprev(S){this.Sym.Lnext=S},get Lprev(){return this.Onext.Sym},set Lprev(S){this.Onext.Sym=S},get Dprev(){return this.Lnext.Sym},set Dprev(S){this.Lnext.Sym=S},get Rprev(){return this.Sym.Onext},set Rprev(S){this.Sym.Onext=S},get Dnext(){return this.Sym.Onext.Sym},set Dnext(S){this.Sym.Onext.Sym=S},get Rnext(){return this.Sym.Lnext.Sym},set Rnext(S){this.Sym.Lnext.Sym=S}};function h(){var S=new c,p=new l,m=new u(0),M=new u(1);S.next=S.prev=S,S.anEdge=null,p.next=p.prev=p,p.anEdge=null,p.trail=null,p.marked=!1,p.inside=!1,m.next=m,m.Sym=M,m.Onext=null,m.Lnext=null,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,M.next=M,M.Sym=m,M.Onext=null,M.Lnext=null,M.Org=null,M.Lface=null,M.winding=0,M.activeRegion=null,this.vHead=S,this.fHead=p,this.eHead=m,this.eHeadSym=M}h.prototype={makeEdge_:function(p){var m=new u(0),M=new u(1);p.Sym.side<p.side&&(p=p.Sym);var v=p.Sym.next;return M.next=v,v.Sym.next=m,m.next=p,p.Sym.next=M,m.Sym=M,m.Onext=m,m.Lnext=M,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,M.Sym=m,M.Onext=M,M.Lnext=m,M.Org=null,M.Lface=null,M.winding=0,M.activeRegion=null,m},splice_:function(p,m){var M=p.Onext,v=m.Onext;M.Sym.Lnext=m,v.Sym.Lnext=p,p.Onext=v,m.Onext=M},makeVertex_:function(p,m,M){var v=p;a(v!==null);var R=M.prev;v.prev=R,R.next=v,v.next=M,M.prev=v,v.anEdge=m;var b=m;do b.Org=v,b=b.Onext;while(b!==m)},makeFace_:function(p,m,M){var v=p;a(v!==null);var R=M.prev;v.prev=R,R.next=v,v.next=M,M.prev=v,v.anEdge=m,v.trail=null,v.marked=!1,v.inside=M.inside;var b=m;do b.Lface=v,b=b.Lnext;while(b!==m)},killEdge_:function(p){p.Sym.side<p.side&&(p=p.Sym);var m=p.next,M=p.Sym.next;m.Sym.next=M,M.Sym.next=m},killVertex_:function(p,m){var M=p.anEdge,v=M;do v.Org=m,v=v.Onext;while(v!==M);var R=p.prev,b=p.next;b.prev=R,R.next=b},killFace_:function(p,m){var M=p.anEdge,v=M;do v.Lface=m,v=v.Lnext;while(v!==M);var R=p.prev,b=p.next;b.prev=R,R.next=b},makeEdge:function(){var p=new c,m=new c,M=new l,v=this.makeEdge_(this.eHead);return this.makeVertex_(p,v,this.vHead),this.makeVertex_(m,v.Sym,this.vHead),this.makeFace_(M,v,this.fHead),v},splice:function(p,m){var M=!1,v=!1;if(p!==m){if(m.Org!==p.Org&&(v=!0,this.killVertex_(m.Org,p.Org)),m.Lface!==p.Lface&&(M=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(m,p),!v){var R=new c;this.makeVertex_(R,m,p.Org),p.Org.anEdge=p}if(!M){var b=new l;this.makeFace_(b,m,p.Lface),p.Lface.anEdge=p}}},delete:function(p){var m=p.Sym,M=!1;if(p.Lface!==p.Rface&&(M=!0,this.killFace_(p.Lface,p.Rface)),p.Onext===p)this.killVertex_(p.Org,null);else if(p.Rface.anEdge=p.Oprev,p.Org.anEdge=p.Onext,this.splice_(p,p.Oprev),!M){var v=new l;this.makeFace_(v,p,p.Lface)}m.Onext===m?(this.killVertex_(m.Org,null),this.killFace_(m.Lface,null)):(p.Lface.anEdge=m.Oprev,m.Org.anEdge=m.Onext,this.splice_(m,m.Oprev)),this.killEdge_(p)},addEdgeVertex:function(p){var m=this.makeEdge_(p),M=m.Sym;this.splice_(m,p.Lnext),m.Org=p.Dst;var v=new c;return this.makeVertex_(v,M,m.Org),m.Lface=M.Lface=p.Lface,m},splitEdge:function(p,m){var M=this.addEdgeVertex(p),v=M.Sym;return this.splice_(p.Sym,p.Sym.Oprev),this.splice_(p.Sym,v),p.Dst=v.Org,v.Dst.anEdge=v.Sym,v.Rface=p.Rface,v.winding=p.winding,v.Sym.winding=p.Sym.winding,v},connect:function(p,m){var M=!1,v=this.makeEdge_(p),R=v.Sym;if(m.Lface!==p.Lface&&(M=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(v,p.Lnext),this.splice_(R,m),v.Org=p.Dst,R.Org=m.Org,v.Lface=R.Lface=p.Lface,p.Lface.anEdge=R,!M){var b=new l;this.makeFace_(b,v,p.Lface)}return v},zapFace:function(p){var m=p.anEdge,M,v,R,b,P;v=m.Lnext;do M=v,v=M.Lnext,M.Lface=null,M.Rface===null&&(M.Onext===M?this.killVertex_(M.Org,null):(M.Org.anEdge=M.Onext,this.splice_(M,M.Oprev)),R=M.Sym,R.Onext===R?this.killVertex_(R.Org,null):(R.Org.anEdge=R.Onext,this.splice_(R,R.Oprev)),this.killEdge_(M));while(M!=m);b=p.prev,P=p.next,P.prev=b,b.next=P},countFaceVerts_:function(p){var m=p.anEdge,M=0;do M++,m=m.Lnext;while(m!==p.anEdge);return M},mergeConvexFaces:function(p){var m,M,v,R,b,P,D;for(m=this.fHead.next;m!==this.fHead;m=m.next)if(m.inside)for(M=m.anEdge,b=M.Org;v=M.Lnext,R=M.Sym,R&&R.Lface&&R.Lface.inside&&(P=this.countFaceVerts_(m),D=this.countFaceVerts_(R.Lface),P+D-2<=p&&o.vertCCW(M.Lprev.Org,M.Org,R.Lnext.Lnext.Org)&&o.vertCCW(R.Lprev.Org,R.Org,M.Lnext.Lnext.Org)&&(v=R.Lnext,this.delete(R),M=null,R=null)),!(M&&M.Lnext.Org===b);)M=v;return!0},check:function(){var p=this.fHead,m=this.vHead,M=this.eHead,v,R,b,P,D,z;for(R=p,R=p;(v=R.next)!==p;R=v){a(v.prev===R),D=v.anEdge;do a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D),a(D.Lface===v),D=D.Lnext;while(D!==v.anEdge)}for(a(v.prev===R&&v.anEdge===null),P=m,P=m;(b=P.next)!==m;P=b){a(b.prev===P),D=b.anEdge;do a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D),a(D.Org===b),D=D.Onext;while(D!==b.anEdge)}for(a(b.prev===P&&b.anEdge===null),z=M,z=M;(D=z.next)!==M;z=D)a(D.Sym.next===z.Sym),a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Org!==null),a(D.Dst!==null),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D);a(D.Sym.next===z.Sym&&D.Sym===this.eHeadSym&&D.Sym.Sym===D&&D.Org===null&&D.Dst===null&&D.Lface===null&&D.Rface===null)}},o.vertEq=function(S,p){return S.s===p.s&&S.t===p.t},o.vertLeq=function(S,p){return S.s<p.s||S.s===p.s&&S.t<=p.t},o.transLeq=function(S,p){return S.t<p.t||S.t===p.t&&S.s<=p.s},o.edgeGoesLeft=function(S){return o.vertLeq(S.Dst,S.Org)},o.edgeGoesRight=function(S){return o.vertLeq(S.Org,S.Dst)},o.vertL1dist=function(S,p){return Math.abs(S.s-p.s)+Math.abs(S.t-p.t)},o.edgeEval=function(S,p,m){a(o.vertLeq(S,p)&&o.vertLeq(p,m));var M=p.s-S.s,v=m.s-p.s;return M+v>0?M<v?p.t-S.t+(S.t-m.t)*(M/(M+v)):p.t-m.t+(m.t-S.t)*(v/(M+v)):0},o.edgeSign=function(S,p,m){a(o.vertLeq(S,p)&&o.vertLeq(p,m));var M=p.s-S.s,v=m.s-p.s;return M+v>0?(p.t-m.t)*M+(p.t-S.t)*v:0},o.transEval=function(S,p,m){a(o.transLeq(S,p)&&o.transLeq(p,m));var M=p.t-S.t,v=m.t-p.t;return M+v>0?M<v?p.s-S.s+(S.s-m.s)*(M/(M+v)):p.s-m.s+(m.s-S.s)*(v/(M+v)):0},o.transSign=function(S,p,m){a(o.transLeq(S,p)&&o.transLeq(p,m));var M=p.t-S.t,v=m.t-p.t;return M+v>0?(p.s-m.s)*M+(p.s-S.s)*v:0},o.vertCCW=function(S,p,m){return S.s*(p.t-m.t)+p.s*(m.t-S.t)+m.s*(S.t-p.t)>=0},o.interpolate=function(S,p,m,M){return S=S<0?0:S,m=m<0?0:m,S<=m?m===0?(p+M)/2:p+(M-p)*(S/(S+m)):M+(p-M)*(m/(S+m))},o.intersect=function(S,p,m,M,v){var R,b,P;o.vertLeq(S,p)||(P=S,S=p,p=P),o.vertLeq(m,M)||(P=m,m=M,M=P),o.vertLeq(S,m)||(P=S,S=m,m=P,P=p,p=M,M=P),o.vertLeq(m,p)?o.vertLeq(p,M)?(R=o.edgeEval(S,m,p),b=o.edgeEval(m,p,M),R+b<0&&(R=-R,b=-b),v.s=o.interpolate(R,m.s,b,p.s)):(R=o.edgeSign(S,m,p),b=-o.edgeSign(S,M,p),R+b<0&&(R=-R,b=-b),v.s=o.interpolate(R,m.s,b,M.s)):v.s=(m.s+p.s)/2,o.transLeq(S,p)||(P=S,S=p,p=P),o.transLeq(m,M)||(P=m,m=M,M=P),o.transLeq(S,m)||(P=S,S=m,m=P,P=p,p=M,M=P),o.transLeq(m,p)?o.transLeq(p,M)?(R=o.transEval(S,m,p),b=o.transEval(m,p,M),R+b<0&&(R=-R,b=-b),v.t=o.interpolate(R,m.t,b,p.t)):(R=o.transSign(S,m,p),b=-o.transSign(S,M,p),R+b<0&&(R=-R,b=-b),v.t=o.interpolate(R,m.t,b,M.t)):v.t=(m.t+p.t)/2};function d(){this.key=null,this.next=null,this.prev=null}function f(S,p){this.head=new d,this.head.next=this.head,this.head.prev=this.head,this.frame=S,this.leq=p}f.prototype={min:function(){return this.head.next},max:function(){return this.head.prev},insert:function(p){return this.insertBefore(this.head,p)},search:function(p){var m=this.head;do m=m.next;while(m.key!==null&&!this.leq(this.frame,p,m.key));return m},insertBefore:function(p,m){do p=p.prev;while(p.key!==null&&!this.leq(this.frame,p.key,m));var M=new d;return M.key=m,M.next=p.next,p.next.prev=M,M.prev=p,p.next=M,M},delete:function(p){p.next.prev=p.prev,p.prev.next=p.next}};function g(){this.handle=null}function y(){this.key=null,this.node=null}function T(S,p){this.size=0,this.max=S,this.nodes=[],this.nodes.length=S+1;var m;for(m=0;m<this.nodes.length;m++)this.nodes[m]=new g;for(this.handles=[],this.handles.length=S+1,m=0;m<this.handles.length;m++)this.handles[m]=new y;this.initialized=!1,this.freeList=0,this.leq=p,this.nodes[1].handle=1,this.handles[1].key=null}T.prototype={floatDown_:function(p){var m=this.nodes,M=this.handles,v,R,b;for(v=m[p].handle;;){if(b=p<<1,b<this.size&&this.leq(M[m[b+1].handle].key,M[m[b].handle].key)&&++b,a(b<=this.max),R=m[b].handle,b>this.size||this.leq(M[v].key,M[R].key)){m[p].handle=v,M[v].node=p;break}m[p].handle=R,M[R].node=p,p=b}},floatUp_:function(p){var m=this.nodes,M=this.handles,v,R,b;for(v=m[p].handle;;){if(b=p>>1,R=m[b].handle,b===0||this.leq(M[R].key,M[v].key)){m[p].handle=v,M[v].node=p;break}m[p].handle=R,M[R].node=p,p=b}},init:function(){for(var p=this.size;p>=1;--p)this.floatDown_(p);this.initialized=!0},min:function(){return this.handles[this.nodes[1].handle].key},insert:function(p){var m,M;if(m=++this.size,m*2>this.max){this.max*=2;var v,R;for(R=this.nodes.length,this.nodes.length=this.max+1,v=R;v<this.nodes.length;v++)this.nodes[v]=new g;for(R=this.handles.length,this.handles.length=this.max+1,v=R;v<this.handles.length;v++)this.handles[v]=new y}return this.freeList===0?M=m:(M=this.freeList,this.freeList=this.handles[M].node),this.nodes[m].handle=M,this.handles[M].node=m,this.handles[M].key=p,this.initialized&&this.floatUp_(m),M},extractMin:function(){var p=this.nodes,m=this.handles,M=p[1].handle,v=m[M].key;return this.size>0&&(p[1].handle=p[this.size].handle,m[p[1].handle].node=1,m[M].key=null,m[M].node=this.freeList,this.freeList=M,--this.size,this.size>0&&this.floatDown_(1)),v},delete:function(p){var m=this.nodes,M=this.handles,v;a(p>=1&&p<=this.max&&M[p].key!==null),v=M[p].node,m[v].handle=m[this.size].handle,M[m[v].handle].node=v,--this.size,v<=this.size&&(v<=1||this.leq(M[m[v>>1].handle].key,M[m[v].handle].key)?this.floatDown_(v):this.floatUp_(v)),M[p].key=null,M[p].node=this.freeList,this.freeList=p}};function x(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}var C={};C.regionBelow=function(S){return S.nodeUp.prev.key},C.regionAbove=function(S){return S.nodeUp.next.key},C.debugEvent=function(S){},C.addWinding=function(S,p){S.winding+=p.winding,S.Sym.winding+=p.Sym.winding},C.edgeLeq=function(S,p,m){var M=S.event,b,P,v=p.eUp,R=m.eUp;if(v.Dst===M)return R.Dst===M?o.vertLeq(v.Org,R.Org)?o.edgeSign(R.Dst,v.Org,R.Org)<=0:o.edgeSign(v.Dst,R.Org,v.Org)>=0:o.edgeSign(R.Dst,M,R.Org)<=0;if(R.Dst===M)return o.edgeSign(v.Dst,M,v.Org)>=0;var b=o.edgeEval(v.Dst,M,v.Org),P=o.edgeEval(R.Dst,M,R.Org);return b>=P},C.deleteRegion=function(S,p){p.fixUpperEdge&&a(p.eUp.winding===0),p.eUp.activeRegion=null,S.dict.delete(p.nodeUp)},C.fixUpperEdge=function(S,p,m){a(p.fixUpperEdge),S.mesh.delete(p.eUp),p.fixUpperEdge=!1,p.eUp=m,m.activeRegion=p},C.topLeftRegion=function(S,p){var m=p.eUp.Org,M;do p=C.regionAbove(p);while(p.eUp.Org===m);if(p.fixUpperEdge){if(M=S.mesh.connect(C.regionBelow(p).eUp.Sym,p.eUp.Lnext),M===null)return null;C.fixUpperEdge(S,p,M),p=C.regionAbove(p)}return p},C.topRightRegion=function(S){var p=S.eUp.Dst;do S=C.regionAbove(S);while(S.eUp.Dst===p);return S},C.addRegionBelow=function(S,p,m){var M=new x;return M.eUp=m,M.nodeUp=S.dict.insertBefore(p.nodeUp,M),M.fixUpperEdge=!1,M.sentinel=!1,M.dirty=!1,m.activeRegion=M,M},C.isWindingInside=function(S,p){switch(S.windingRule){case i.WINDING_ODD:return(p&1)!==0;case i.WINDING_NONZERO:return p!==0;case i.WINDING_POSITIVE:return p>0;case i.WINDING_NEGATIVE:return p<0;case i.WINDING_ABS_GEQ_TWO:return p>=2||p<=-2}return a(!1),!1},C.computeWinding=function(S,p){p.windingNumber=C.regionAbove(p).windingNumber+p.eUp.winding,p.inside=C.isWindingInside(S,p.windingNumber)},C.finishRegion=function(S,p){var m=p.eUp,M=m.Lface;M.inside=p.inside,M.anEdge=m,C.deleteRegion(S,p)},C.finishLeftRegions=function(S,p,m){for(var M,b,v=null,R=p,b=p.eUp;R!==m;){if(R.fixUpperEdge=!1,v=C.regionBelow(R),M=v.eUp,M.Org!=b.Org){if(!v.fixUpperEdge){C.finishRegion(S,R);break}M=S.mesh.connect(b.Lprev,M.Sym),C.fixUpperEdge(S,v,M)}b.Onext!==M&&(S.mesh.splice(M.Oprev,M),S.mesh.splice(b,M)),C.finishRegion(S,R),b=v.eUp,R=v}return b},C.addRightEdges=function(S,p,m,M,v,R){var b,P,D,z,j=!0;D=m;do a(o.vertLeq(D.Org,D.Dst)),C.addRegionBelow(S,p,D.Sym),D=D.Onext;while(D!==M);for(v===null&&(v=C.regionBelow(p).eUp.Rprev),P=p,z=v;b=C.regionBelow(P),D=b.eUp.Sym,D.Org===z.Org;)D.Onext!==z&&(S.mesh.splice(D.Oprev,D),S.mesh.splice(z.Oprev,D)),b.windingNumber=P.windingNumber-D.winding,b.inside=C.isWindingInside(S,b.windingNumber),P.dirty=!0,!j&&C.checkForRightSplice(S,P)&&(C.addWinding(D,z),C.deleteRegion(S,P),S.mesh.delete(z)),j=!1,P=b,z=D;P.dirty=!0,a(P.windingNumber-D.winding===b.windingNumber),R&&C.walkDirtyRegions(S,P)},C.spliceMergeVertices=function(S,p,m){S.mesh.splice(p,m)},C.vertexWeights=function(S,p,m){var M=o.vertL1dist(p,S),v=o.vertL1dist(m,S),R=.5*v/(M+v),b=.5*M/(M+v);S.coords[0]+=R*p.coords[0]+b*m.coords[0],S.coords[1]+=R*p.coords[1]+b*m.coords[1],S.coords[2]+=R*p.coords[2]+b*m.coords[2]},C.getIntersectData=function(S,p,m,M,v,R){p.coords[0]=p.coords[1]=p.coords[2]=0,p.idx=-1,C.vertexWeights(p,m,M),C.vertexWeights(p,v,R)},C.checkForRightSplice=function(S,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp;if(o.vertLeq(M.Org,v.Org)){if(o.edgeSign(v.Dst,M.Org,v.Org)>0)return!1;o.vertEq(M.Org,v.Org)?M.Org!==v.Org&&(S.pq.delete(M.Org.pqHandle),C.spliceMergeVertices(S,v.Oprev,M)):(S.mesh.splitEdge(v.Sym),S.mesh.splice(M,v.Oprev),p.dirty=m.dirty=!0)}else{if(o.edgeSign(M.Dst,v.Org,M.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,S.mesh.splitEdge(M.Sym),S.mesh.splice(v.Oprev,M)}return!0},C.checkForLeftSplice=function(S,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp,R;if(a(!o.vertEq(M.Dst,v.Dst)),o.vertLeq(M.Dst,v.Dst)){if(o.edgeSign(M.Dst,v.Dst,M.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,R=S.mesh.splitEdge(M),S.mesh.splice(v.Sym,R),R.Lface.inside=p.inside}else{if(o.edgeSign(v.Dst,M.Dst,v.Org)>0)return!1;p.dirty=m.dirty=!0,R=S.mesh.splitEdge(v),S.mesh.splice(M.Lnext,v.Sym),R.Rface.inside=p.inside}return!0},C.checkForIntersect=function(S,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp,R=M.Org,b=v.Org,P=M.Dst,D=v.Dst,z,j,k=new c,A,N;if(a(!o.vertEq(D,P)),a(o.edgeSign(P,S.event,R)<=0),a(o.edgeSign(D,S.event,b)>=0),a(R!==S.event&&b!==S.event),a(!p.fixUpperEdge&&!m.fixUpperEdge),R===b||(z=Math.min(R.t,P.t),j=Math.max(b.t,D.t),z>j))return!1;if(o.vertLeq(R,b)){if(o.edgeSign(D,R,b)>0)return!1}else if(o.edgeSign(P,b,R)<0)return!1;return C.debugEvent(S),o.intersect(P,R,D,b,k),a(Math.min(R.t,P.t)<=k.t),a(k.t<=Math.max(b.t,D.t)),a(Math.min(D.s,P.s)<=k.s),a(k.s<=Math.max(b.s,R.s)),o.vertLeq(k,S.event)&&(k.s=S.event.s,k.t=S.event.t),A=o.vertLeq(R,b)?R:b,o.vertLeq(A,k)&&(k.s=A.s,k.t=A.t),o.vertEq(k,R)||o.vertEq(k,b)?(C.checkForRightSplice(S,p),!1):!o.vertEq(P,S.event)&&o.edgeSign(P,S.event,k)>=0||!o.vertEq(D,S.event)&&o.edgeSign(D,S.event,k)<=0?D===S.event?(S.mesh.splitEdge(M.Sym),S.mesh.splice(v.Sym,M),p=C.topLeftRegion(S,p),M=C.regionBelow(p).eUp,C.finishLeftRegions(S,C.regionBelow(p),m),C.addRightEdges(S,p,M.Oprev,M,M,!0),!0):P===S.event?(S.mesh.splitEdge(v.Sym),S.mesh.splice(M.Lnext,v.Oprev),m=p,p=C.topRightRegion(p),N=C.regionBelow(p).eUp.Rprev,m.eUp=v.Oprev,v=C.finishLeftRegions(S,m,null),C.addRightEdges(S,p,v.Onext,M.Rprev,N,!0),!0):(o.edgeSign(P,S.event,k)>=0&&(C.regionAbove(p).dirty=p.dirty=!0,S.mesh.splitEdge(M.Sym),M.Org.s=S.event.s,M.Org.t=S.event.t),o.edgeSign(D,S.event,k)<=0&&(p.dirty=m.dirty=!0,S.mesh.splitEdge(v.Sym),v.Org.s=S.event.s,v.Org.t=S.event.t),!1):(S.mesh.splitEdge(M.Sym),S.mesh.splitEdge(v.Sym),S.mesh.splice(v.Oprev,M),M.Org.s=k.s,M.Org.t=k.t,M.Org.pqHandle=S.pq.insert(M.Org),C.getIntersectData(S,M.Org,R,P,b,D),C.regionAbove(p).dirty=p.dirty=m.dirty=!0,!1)},C.walkDirtyRegions=function(S,p){for(var m=C.regionBelow(p),M,v;;){for(;m.dirty;)p=m,m=C.regionBelow(m);if(!p.dirty&&(m=p,p=C.regionAbove(p),p===null||!p.dirty))return;if(p.dirty=!1,M=p.eUp,v=m.eUp,M.Dst!==v.Dst&&C.checkForLeftSplice(S,p)&&(m.fixUpperEdge?(C.deleteRegion(S,m),S.mesh.delete(v),m=C.regionBelow(p),v=m.eUp):p.fixUpperEdge&&(C.deleteRegion(S,p),S.mesh.delete(M),p=C.regionAbove(m),M=p.eUp)),M.Org!==v.Org)if(M.Dst!==v.Dst&&!p.fixUpperEdge&&!m.fixUpperEdge&&(M.Dst===S.event||v.Dst===S.event)){if(C.checkForIntersect(S,p))return}else C.checkForRightSplice(S,p);M.Org===v.Org&&M.Dst===v.Dst&&(C.addWinding(v,M),C.deleteRegion(S,p),S.mesh.delete(M),p=C.regionAbove(m))}},C.connectRightVertex=function(S,p,m){var M,v=m.Onext,R=C.regionBelow(p),b=p.eUp,P=R.eUp,D=!1;if(b.Dst!==P.Dst&&C.checkForIntersect(S,p),o.vertEq(b.Org,S.event)&&(S.mesh.splice(v.Oprev,b),p=C.topLeftRegion(S,p),v=C.regionBelow(p).eUp,C.finishLeftRegions(S,C.regionBelow(p),R),D=!0),o.vertEq(P.Org,S.event)&&(S.mesh.splice(m,P.Oprev),m=C.finishLeftRegions(S,R,null),D=!0),D){C.addRightEdges(S,p,m.Onext,v,v,!0);return}o.vertLeq(P.Org,b.Org)?M=P.Oprev:M=b,M=S.mesh.connect(m.Lprev,M),C.addRightEdges(S,p,M,M.Onext,M.Onext,!1),M.Sym.activeRegion.fixUpperEdge=!0,C.walkDirtyRegions(S,p)},C.connectLeftDegenerate=function(S,p,m){var M,v,R,b,P;if(M=p.eUp,o.vertEq(M.Org,m)){a(!1),C.spliceMergeVertices(S,M,m.anEdge);return}if(!o.vertEq(M.Dst,m)){S.mesh.splitEdge(M.Sym),p.fixUpperEdge&&(S.mesh.delete(M.Onext),p.fixUpperEdge=!1),S.mesh.splice(m.anEdge,M),C.sweepEvent(S,m);return}a(!1),p=C.topRightRegion(p),P=C.regionBelow(p),R=P.eUp.Sym,v=b=R.Onext,P.fixUpperEdge&&(a(v!==R),C.deleteRegion(S,P),S.mesh.delete(R),R=v.Oprev),S.mesh.splice(m.anEdge,R),o.edgeGoesLeft(v)||(v=null),C.addRightEdges(S,p,R.Onext,b,v,!0)},C.connectLeftVertex=function(S,p){var m,M,v,R,b,P,D=new x;if(D.eUp=p.anEdge.Sym,m=S.dict.search(D).key,M=C.regionBelow(m),!!M){if(R=m.eUp,b=M.eUp,o.edgeSign(R.Dst,p,R.Org)===0){C.connectLeftDegenerate(S,m,p);return}if(v=o.vertLeq(b.Dst,R.Dst)?m:M,m.inside||v.fixUpperEdge){if(v===m)P=S.mesh.connect(p.anEdge.Sym,R.Lnext);else{var z=S.mesh.connect(b.Dnext,p.anEdge);P=z.Sym}v.fixUpperEdge?C.fixUpperEdge(S,v,P):C.computeWinding(S,C.addRegionBelow(S,m,P)),C.sweepEvent(S,p)}else C.addRightEdges(S,m,p.anEdge,p.anEdge,null,!0)}},C.sweepEvent=function(S,p){S.event=p,C.debugEvent(S);for(var m=p.anEdge;m.activeRegion===null;)if(m=m.Onext,m===p.anEdge){C.connectLeftVertex(S,p);return}var M=C.topLeftRegion(S,m.activeRegion);a(M!==null);var v=C.regionBelow(M),R=v.eUp,b=C.finishLeftRegions(S,v,null);b.Onext===R?C.connectRightVertex(S,M,b):C.addRightEdges(S,M,b.Onext,R,R,!0)},C.addSentinel=function(S,p,m,M){var v=new x,R=S.mesh.makeEdge();R.Org.s=m,R.Org.t=M,R.Dst.s=p,R.Dst.t=M,S.event=R.Dst,v.eUp=R,v.windingNumber=0,v.inside=!1,v.fixUpperEdge=!1,v.sentinel=!0,v.dirty=!1,v.nodeUp=S.dict.insert(v)},C.initEdgeDict=function(S){S.dict=new f(S,C.edgeLeq);var p=S.bmax[0]-S.bmin[0],m=S.bmax[1]-S.bmin[1],M=S.bmin[0]-p,v=S.bmax[0]+p,R=S.bmin[1]-m,b=S.bmax[1]+m;C.addSentinel(S,M,v,R),C.addSentinel(S,M,v,b)},C.doneEdgeDict=function(S){for(var p,m=0;(p=S.dict.min().key)!==null;)p.sentinel||(a(p.fixUpperEdge),a(++m===1)),a(p.windingNumber===0),C.deleteRegion(S,p)},C.removeDegenerateEdges=function(S){var p,m,M,v=S.mesh.eHead;for(p=v.next;p!==v;p=m)m=p.next,M=p.Lnext,o.vertEq(p.Org,p.Dst)&&p.Lnext.Lnext!==p&&(C.spliceMergeVertices(S,M,p),S.mesh.delete(p),p=M,M=p.Lnext),M.Lnext===p&&(M!==p&&((M===m||M===m.Sym)&&(m=m.next),S.mesh.delete(M)),(p===m||p===m.Sym)&&(m=m.next),S.mesh.delete(p))},C.initPriorityQ=function(S){var p,m,M,v=0;for(M=S.mesh.vHead,m=M.next;m!==M;m=m.next)v++;for(v+=8,p=S.pq=new T(v,o.vertLeq),M=S.mesh.vHead,m=M.next;m!==M;m=m.next)m.pqHandle=p.insert(m);return m!==M?!1:(p.init(),!0)},C.donePriorityQ=function(S){S.pq=null},C.removeDegenerateFaces=function(S,p){var m,M,v;for(m=p.fHead.next;m!==p.fHead;m=M)M=m.next,v=m.anEdge,a(v.Lnext!==v),v.Lnext.Lnext===v&&(C.addWinding(v.Onext,v),S.mesh.delete(v));return!0},C.computeInterior=function(S){var p,m;if(C.removeDegenerateEdges(S),!C.initPriorityQ(S))return!1;for(C.initEdgeDict(S);(p=S.pq.extractMin())!==null;){for(;m=S.pq.min(),!(m===null||!o.vertEq(m,p));)m=S.pq.extractMin(),C.spliceMergeVertices(S,p.anEdge,m.anEdge);C.sweepEvent(S,p)}return S.event=S.dict.min().key.eUp.Org,C.debugEvent(S),C.doneEdgeDict(S),C.donePriorityQ(S),C.removeDegenerateFaces(S,S.mesh)?(S.mesh.check(),!0):!1};function L(){this.mesh=null,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=i.WINDING_ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}L.prototype={dot_:function(p,m){return p[0]*m[0]+p[1]*m[1]+p[2]*m[2]},normalize_:function(p){var m=p[0]*p[0]+p[1]*p[1]+p[2]*p[2];a(m>0),m=Math.sqrt(m),p[0]/=m,p[1]/=m,p[2]/=m},longAxis_:function(p){var m=0;return Math.abs(p[1])>Math.abs(p[0])&&(m=1),Math.abs(p[2])>Math.abs(p[m])&&(m=2),m},computeNormal_:function(p){var m,M,v,R,b,P,D=[0,0,0],z=[0,0,0],j=[0,0,0],k=[0,0,0],A=[0,0,0],N=[null,null,null],W=[null,null,null],Y=this.mesh.vHead,Q;for(m=Y.next,Q=0;Q<3;++Q)R=m.coords[Q],z[Q]=R,W[Q]=m,D[Q]=R,N[Q]=m;for(m=Y.next;m!==Y;m=m.next)for(Q=0;Q<3;++Q)R=m.coords[Q],R<z[Q]&&(z[Q]=R,W[Q]=m),R>D[Q]&&(D[Q]=R,N[Q]=m);if(Q=0,D[1]-z[1]>D[0]-z[0]&&(Q=1),D[2]-z[2]>D[Q]-z[Q]&&(Q=2),z[Q]>=D[Q]){p[0]=0,p[1]=0,p[2]=1;return}for(P=0,M=W[Q],v=N[Q],j[0]=M.coords[0]-v.coords[0],j[1]=M.coords[1]-v.coords[1],j[2]=M.coords[2]-v.coords[2],m=Y.next;m!==Y;m=m.next)k[0]=m.coords[0]-v.coords[0],k[1]=m.coords[1]-v.coords[1],k[2]=m.coords[2]-v.coords[2],A[0]=j[1]*k[2]-j[2]*k[1],A[1]=j[2]*k[0]-j[0]*k[2],A[2]=j[0]*k[1]-j[1]*k[0],b=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],b>P&&(P=b,p[0]=A[0],p[1]=A[1],p[2]=A[2]);P<=0&&(p[0]=p[1]=p[2]=0,p[this.longAxis_(j)]=1)},checkOrientation_:function(){var p,m,M=this.mesh.fHead,v,R=this.mesh.vHead,b;for(p=0,m=M.next;m!==M;m=m.next)if(b=m.anEdge,!(b.winding<=0))do p+=(b.Org.s-b.Dst.s)*(b.Org.t+b.Dst.t),b=b.Lnext;while(b!==m.anEdge);if(p<0){for(v=R.next;v!==R;v=v.next)v.t=-v.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},projectPolygon_:function(){var p,m=this.mesh.vHead,M=[0,0,0],v,R,b,P,D=!1;for(M[0]=this.normal[0],M[1]=this.normal[1],M[2]=this.normal[2],M[0]===0&&M[1]===0&&M[2]===0&&(this.computeNormal_(M),D=!0),v=this.sUnit,R=this.tUnit,b=this.longAxis_(M),v[b]=0,v[(b+1)%3]=1,v[(b+2)%3]=0,R[b]=0,R[(b+1)%3]=0,R[(b+2)%3]=M[b]>0?1:-1,p=m.next;p!==m;p=p.next)p.s=this.dot_(p.coords,v),p.t=this.dot_(p.coords,R);for(D&&this.checkOrientation_(),P=!0,p=m.next;p!==m;p=p.next)P?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,P=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},addWinding_:function(p,m){p.winding+=m.winding,p.Sym.winding+=m.Sym.winding},tessellateMonoRegion_:function(p,m){var M,v;for(M=m.anEdge,a(M.Lnext!==M&&M.Lnext.Lnext!==M);o.vertLeq(M.Dst,M.Org);M=M.Lprev);for(;o.vertLeq(M.Org,M.Dst);M=M.Lnext);for(v=M.Lprev;M.Lnext!==v;)if(o.vertLeq(M.Dst,v.Org)){for(;v.Lnext!==M&&(o.edgeGoesLeft(v.Lnext)||o.edgeSign(v.Org,v.Dst,v.Lnext.Dst)<=0);){var R=p.connect(v.Lnext,v);v=R.Sym}v=v.Lprev}else{for(;v.Lnext!==M&&(o.edgeGoesRight(M.Lprev)||o.edgeSign(M.Dst,M.Org,M.Lprev.Org)>=0);){var R=p.connect(M,M.Lprev);M=R.Sym}M=M.Lnext}for(a(v.Lnext!==M);v.Lnext.Lnext!==M;){var R=p.connect(v.Lnext,v);v=R.Sym}return!0},tessellateInterior_:function(p){var m,M;for(m=p.fHead.next;m!==p.fHead;m=M)if(M=m.next,m.inside&&!this.tessellateMonoRegion_(p,m))return!1;return!0},discardExterior_:function(p){var m,M;for(m=p.fHead.next;m!==p.fHead;m=M)M=m.next,m.inside||p.zapFace(m)},setWindingNumber_:function(p,m,M){var v,R;for(v=p.eHead.next;v!==p.eHead;v=R)R=v.next,v.Rface.inside!==v.Lface.inside?v.winding=v.Lface.inside?m:-m:M?p.delete(v):v.winding=0},getNeighbourFace_:function(p){return!p.Rface||!p.Rface.inside?-1:p.Rface.n},outputPolymesh_:function(p,m,M,v){var R,b,P,D=0,z=0,j,k;for(M>3&&p.mergeConvexFaces(M),R=p.vHead.next;R!==p.vHead;R=R.next)R.n=-1;for(b=p.fHead.next;b!==p.fHead;b=b.next)if(b.n=-1,!!b.inside){P=b.anEdge,j=0;do R=P.Org,R.n===-1&&(R.n=z,z++),j++,P=P.Lnext;while(P!==b.anEdge);a(j<=M),b.n=D,++D}for(this.elementCount=D,m===i.CONNECTED_POLYGONS&&(D*=2),this.elements=[],this.elements.length=D*M,this.vertexCount=z,this.vertices=[],this.vertices.length=z*v,this.vertexIndices=[],this.vertexIndices.length=z,R=p.vHead.next;R!==p.vHead;R=R.next)if(R.n!==-1){var A=R.n*v;this.vertices[A+0]=R.coords[0],this.vertices[A+1]=R.coords[1],v>2&&(this.vertices[A+2]=R.coords[2]),this.vertexIndices[R.n]=R.idx}var N=0;for(b=p.fHead.next;b!==p.fHead;b=b.next)if(b.inside){P=b.anEdge,j=0;do R=P.Org,this.elements[N++]=R.n,j++,P=P.Lnext;while(P!==b.anEdge);for(k=j;k<M;++k)this.elements[N++]=-1;if(m===i.CONNECTED_POLYGONS){P=b.anEdge;do this.elements[N++]=this.getNeighbourFace_(P),P=P.Lnext;while(P!==b.anEdge);for(k=j;k<M;++k)this.elements[N++]=-1}}},outputContours_:function(p,m){var M,v,R,b=0,P=0;for(this.vertexCount=0,this.elementCount=0,M=p.fHead.next;M!==p.fHead;M=M.next)if(M.inside){R=v=M.anEdge;do this.vertexCount++,v=v.Lnext;while(v!==R);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*m,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var D=0,z=0,j=0;for(b=0,M=p.fHead.next;M!==p.fHead;M=M.next)if(M.inside){P=0,R=v=M.anEdge;do this.vertices[D++]=v.Org.coords[0],this.vertices[D++]=v.Org.coords[1],m>2&&(this.vertices[D++]=v.Org.coords[2]),this.vertexIndices[z++]=v.Org.idx,P++,v=v.Lnext;while(v!==R);this.elements[j++]=b,this.elements[j++]=P,b+=P}},addContour:function(p,m){var M,v;for(this.mesh===null&&(this.mesh=new h),p<2&&(p=2),p>3&&(p=3),M=null,v=0;v<m.length;v+=p)M===null?(M=this.mesh.makeEdge(),this.mesh.splice(M,M.Sym)):(this.mesh.splitEdge(M),M=M.Lnext),M.Org.coords[0]=m[v+0],M.Org.coords[1]=m[v+1],p>2?M.Org.coords[2]=m[v+2]:M.Org.coords[2]=0,M.Org.idx=this.vertexIndexCounter++,M.winding=1,M.Sym.winding=-1},tesselate:function(p,m,M,v,R){if(this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,R&&(this.normal[0]=R[0],this.normal[1]=R[1],this.normal[2]=R[2]),this.windingRule=p,v<2&&(v=2),v>3&&(v=3),!this.mesh)return!1;this.projectPolygon_(),C.computeInterior(this);var b=this.mesh;return m===i.BOUNDARY_CONTOURS?this.setWindingNumber_(b,1,!0):this.tessellateInterior_(b),b.check(),m===i.BOUNDARY_CONTOURS?this.outputContours_(b,v):this.outputPolymesh_(b,m,M,v),!0}}},function(e,r){e.exports=i;var n=Object.prototype.hasOwnProperty;function i(){for(var o={},a=0;a<arguments.length;a++){var c=arguments[a];for(var l in c)n.call(c,l)&&(o[l]=c[l])}return o}},function(e,r,n){n.r(r),n.d(r,"createShaders",function(){return d}),n.d(r,"applyShader",function(){return f}),n.d(r,"createCloudShaders",function(){return y}),n.d(r,"applyCloudShader",function(){return T});var i=n(19),o=n.n(i),a=n(83),c=n(84),l=n(85),u=n(86);n(1).glMatrix.setMatrixArrayType(Array);var h=Symbol("shaders");function d(x){x[h]=[];for(var C=0;C<16;C++){var L=[],S=!!(C&1),p=!!(C&2),m=!!(C&4),M=!!(C&8);S&&L.push("#define TEXTURE 1"),p&&L.push("#define FILTER 1"),m&&L.push("#define GRADIENT 1"),M&&L.push("#define CLIPPATH 1");var v="".concat(L.join(`
42
+ `),`
43
+ `),R=[];S&&R.push("uniform sampler2D u_texSampler;"),M&&R.push("uniform sampler2D u_clipSampler;"),x[h][C]=[v+R.join(`
44
+ `)+c.default,v+a.default]}}function f(x){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},L=C.hasTexture,S=L===void 0?!1:L,p=C.hasFilter,m=p===void 0?!1:p,M=C.hasGradient,v=M===void 0?!1:M,R=C.hasClipPath,b=R===void 0?!1:R,P=S|m<<1|v<<2|b<<3,D=x[h][P];Array.isArray(D)&&(D=x.createProgram.apply(x,o()(D)),x[h][P]=D),x.program!==D&&x.useProgram(D,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}})}var g=[];function y(x){for(var C=0;C<64;C++){var L=[],S=!!(C&1),p=!!(C&2),m=!!(C&4),M=!!(C&8),v=!!(C&16),R=!!(C&32);S&&L.push("#define TEXTURE 1"),p&&L.push("#define FILTER 1"),m&&L.push("#define GRADIENT 1"),M&&L.push("#define CLOUDCOLOR 1"),v&&L.push("#define CLOUDFILTER 1"),R&&L.push("#define CLIPPATH 1");var b="".concat(L.join(`
45
+ `),`
46
+ `),P=[];if(S){P.push("uniform sampler2D u_texSampler;");for(var D=0;D<12;D++)P.push("uniform sampler2D u_texFrame".concat(D,";"))}R&&P.push("uniform sampler2D u_clipSampler;"),g[C]=[b+P.join(`
47
+ `)+u.default,b+l.default]}}function T(x){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},L=C.hasTexture,S=L===void 0?!1:L,p=C.hasFilter,m=p===void 0?!1:p,M=C.hasGradient,v=M===void 0?!1:M,R=C.hasCloudColor,b=R===void 0?!1:R,P=C.hasCloudFilter,D=P===void 0?!1:P,z=C.hasClipPath,j=z===void 0?!1:z,k=S|m<<1|v<<2|b<<3|D<<4|j<<5,A=g[k];Array.isArray(A)&&(A=x.createProgram.apply(x,o()(A)),g[k]=A),x.program!==A&&x.useProgram(A,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}})}},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
48
+ attribute vec4 a_color;
49
+ varying vec4 vColor;
50
+ varying float flagBackground;
51
+ uniform vec2 u_resolution;
52
+ uniform mat3 viewMatrix;
53
+ uniform mat3 projectionMatrix;
54
+
55
+ #ifdef TEXTURE
56
+ attribute vec3 a_vertexTextureCoord;
57
+ varying vec3 vTextureCoord;
58
+ attribute vec4 a_sourceRect;
59
+ varying vec4 vSourceRect;
60
+ #endif
61
+
62
+ #ifdef CLIPPATH
63
+ attribute vec2 a_clipUV;
64
+ varying vec2 vClipUV;
65
+ #endif
66
+
67
+ #ifdef GRADIENT
68
+ uniform float u_radialGradientVector[6];
69
+ varying vec3 vGradientVector1;
70
+ varying vec3 vGradientVector2;
71
+ #endif
72
+
73
+ void main() {
74
+ gl_PointSize = 1.0;
75
+
76
+ vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
77
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
78
+
79
+ #ifdef GRADIENT
80
+ vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
81
+ vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
82
+ float h = u_resolution.y;
83
+ vg1.y = h - vg1.y;
84
+ vg2.y = h - vg2.y;
85
+ vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
86
+ vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
87
+ #endif
88
+
89
+ flagBackground = a_vertexPosition.z;
90
+ vColor = a_color;
91
+
92
+ #ifdef TEXTURE
93
+ vTextureCoord = a_vertexTextureCoord;
94
+ vSourceRect = a_sourceRect;
95
+ #endif
96
+
97
+ #ifdef CLIPPATH
98
+ vClipUV = a_clipUV;
99
+ #endif
100
+ }`},function(e,r,n){n.r(r),r.default=`precision mediump float;
101
+
102
+ varying vec4 vColor;
103
+ varying float flagBackground;
104
+
105
+ #ifdef TEXTURE
106
+ varying vec3 vTextureCoord;
107
+ varying vec4 vSourceRect;
108
+ #endif
109
+
110
+ #ifdef CLIPPATH
111
+ varying vec2 vClipUV;
112
+ #endif
113
+
114
+ #ifdef FILTER
115
+ uniform int u_filterFlag;
116
+ uniform float u_colorMatrix[20];
117
+ #endif
118
+
119
+ #ifdef GRADIENT
120
+ varying vec3 vGradientVector1;
121
+ varying vec3 vGradientVector2;
122
+ uniform float u_colorSteps[40];
123
+ uniform int u_gradientType;
124
+ // uniform float u_radialGradientVector[6];
125
+
126
+ void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
127
+ float t;
128
+ // center circle radius
129
+ float cr = gv1.z;
130
+ // focal circle radius
131
+ float fr = gv2.z;
132
+
133
+ if(cr > 0.0 || fr > 0.0) {
134
+ // radial gradient
135
+ vec2 center = gv1.xy;
136
+ vec2 focal = gv2.xy;
137
+ float x = focal.x - gl_FragCoord.x;
138
+ float y = focal.y - gl_FragCoord.y;
139
+ float dx = focal.x - center.x;
140
+ float dy = focal.y - center.y;
141
+ float dr = cr - fr;
142
+ float a = dx * dx + dy * dy - dr * dr;
143
+ float b = -2.0 * (y * dy + x * dx + fr * dr);
144
+ float c = x * x + y * y - fr * fr;
145
+ t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
146
+ } else {
147
+ // linear gradient
148
+ vec2 v1 = gl_FragCoord.xy - gv1.xy;
149
+ vec2 v2 = gv2.xy - gv1.xy;
150
+ t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
151
+ }
152
+
153
+ vec4 colors[8];
154
+ colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
155
+ colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
156
+ colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
157
+ colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
158
+ colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
159
+ colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
160
+ colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
161
+ colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
162
+
163
+ float steps[8];
164
+ steps[0] = colorSteps[0];
165
+ steps[1] = colorSteps[5];
166
+ steps[2] = colorSteps[10];
167
+ steps[3] = colorSteps[15];
168
+ steps[4] = colorSteps[20];
169
+ steps[5] = colorSteps[25];
170
+ steps[6] = colorSteps[30];
171
+ steps[7] = colorSteps[35];
172
+
173
+ color = colors[0];
174
+ for (int i = 1; i < 8; i++) {
175
+ if (steps[i] < 0.0 || steps[i] > 1.0) {
176
+ break;
177
+ }
178
+ if(steps[i] == steps[i - 1]) {
179
+ color = colors[i];
180
+ } else {
181
+ color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
182
+ }
183
+ if (steps[i] >= t) {
184
+ break;
185
+ }
186
+ }
187
+ }
188
+ #endif
189
+
190
+ #ifdef FILTER
191
+ void transformColor(inout vec4 color, in float colorMatrix[20]) {
192
+ float r = color.r, g = color.g, b = color.b, a = color.a;
193
+ color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
194
+ color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
195
+ color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
196
+ color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
197
+ }
198
+ #endif
199
+
200
+ void main() {
201
+ vec4 color = vColor;
202
+ float opacity = abs(flagBackground);
203
+
204
+ #ifdef GRADIENT
205
+ if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
206
+ gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
207
+ }
208
+ #endif
209
+
210
+ if(opacity < 1.0) {
211
+ color.a *= opacity;
212
+ }
213
+
214
+ #ifdef TEXTURE
215
+ if(flagBackground > 0.0) {
216
+ vec3 texCoord = vTextureCoord;
217
+
218
+ if(texCoord.z == 1.0) {
219
+ texCoord = fract(texCoord);
220
+ }
221
+
222
+ if(texCoord.x <= 1.0 && texCoord.x >= 0.0
223
+ && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
224
+ if(vSourceRect.z > 0.0) {
225
+ texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
226
+ texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
227
+ }
228
+ vec4 texColor = texture2D(u_texSampler, texCoord.xy);
229
+ float alpha = texColor.a;
230
+ if(opacity < 1.0) {
231
+ texColor.a *= opacity;
232
+ alpha *= mix(0.465, 1.0, opacity);
233
+ }
234
+ // color = mix(color, texColor, texColor.a);
235
+ color.rgb = mix(color.rgb, texColor.rgb, alpha);
236
+ // color.rgb = mix(texColor.rgb, color.rgb, color.a);
237
+ color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
238
+ color.a = texColor.a + (1.0 - texColor.a) * color.a;
239
+ }
240
+ }
241
+ #endif
242
+
243
+ #ifdef FILTER
244
+ if(u_filterFlag > 0) {
245
+ transformColor(color, u_colorMatrix);
246
+ }
247
+ #endif
248
+
249
+ #ifdef CLIPPATH
250
+ float clip = texture2D(u_clipSampler, vClipUV).r;
251
+ color *= clip;
252
+ #endif
253
+
254
+ gl_FragColor = color;
255
+ }`},function(e,r,n){n.r(r),r.default=`attribute vec3 a_vertexPosition;
256
+ attribute vec4 a_color;
257
+ varying vec4 vColor;
258
+ varying float flagBackground;
259
+ attribute vec3 a_transform0;
260
+ attribute vec3 a_transform1;
261
+ uniform vec2 u_resolution;
262
+ uniform mat3 viewMatrix;
263
+ uniform mat3 projectionMatrix;
264
+
265
+ #ifdef TEXTURE
266
+ attribute vec3 a_vertexTextureCoord;
267
+ varying vec3 vTextureCoord;
268
+ attribute float a_frameIndex;
269
+ varying float frameIndex;
270
+ attribute vec4 a_sourceRect;
271
+ varying vec4 vSourceRect;
272
+ #endif
273
+
274
+ #ifdef CLIPPATH
275
+ attribute vec2 a_clipUV;
276
+ varying vec2 vClipUV;
277
+ #endif
278
+
279
+ #ifdef CLOUDFILTER
280
+ attribute vec4 a_colorCloud0;
281
+ attribute vec4 a_colorCloud1;
282
+ attribute vec4 a_colorCloud2;
283
+ attribute vec4 a_colorCloud3;
284
+ attribute vec4 a_colorCloud4;
285
+ varying vec4 colorCloud0;
286
+ varying vec4 colorCloud1;
287
+ varying vec4 colorCloud2;
288
+ varying vec4 colorCloud3;
289
+ varying vec4 colorCloud4;
290
+ #endif
291
+
292
+ #ifdef CLOUDCOLOR
293
+ attribute vec4 a_fillCloudColor;
294
+ attribute vec4 a_strokeCloudColor;
295
+ #endif
296
+
297
+ #ifdef GRADIENT
298
+ uniform float u_radialGradientVector[6];
299
+ varying vec3 vGradientVector1;
300
+ varying vec3 vGradientVector2;
301
+ #endif
302
+
303
+ void main() {
304
+ gl_PointSize = 1.0;
305
+
306
+ mat3 modelMatrix = mat3(
307
+ a_transform0.x, a_transform1.x, 0,
308
+ a_transform0.y, a_transform1.y, 0,
309
+ a_transform0.z, a_transform1.z, 1
310
+ );
311
+
312
+ vec3 pos = projectionMatrix * viewMatrix * modelMatrix * vec3(a_vertexPosition.xy, 1.0);
313
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
314
+
315
+ #ifdef GRADIENT
316
+ vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
317
+ vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
318
+ float h = u_resolution.y;
319
+ vg1.y = h - vg1.y;
320
+ vg2.y = h - vg2.y;
321
+ vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
322
+ vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
323
+ #endif
324
+
325
+ flagBackground = a_vertexPosition.z;
326
+
327
+ #ifdef CLOUDCOLOR
328
+ if(flagBackground > 0.0) {
329
+ vColor = mix(a_color, a_fillCloudColor, a_fillCloudColor.a);
330
+ } else {
331
+ vColor = mix(a_color, a_strokeCloudColor, a_strokeCloudColor.a);
332
+ }
333
+ #else
334
+ vColor = a_color;
335
+ #endif
336
+
337
+ #ifdef TEXTURE
338
+ vTextureCoord = a_vertexTextureCoord;
339
+ frameIndex = a_frameIndex;
340
+ vSourceRect = a_sourceRect;
341
+ #endif
342
+
343
+ #ifdef CLIPPATH
344
+ vClipUV = a_clipUV;
345
+ #endif
346
+
347
+ #ifdef CLOUDFILTER
348
+ colorCloud0 = a_colorCloud0;
349
+ colorCloud1 = a_colorCloud1;
350
+ colorCloud2 = a_colorCloud2;
351
+ colorCloud3 = a_colorCloud3;
352
+ colorCloud4 = a_colorCloud4;
353
+ #endif
354
+ }`},function(e,r,n){n.r(r),r.default=`precision mediump float;
355
+
356
+ varying vec4 vColor;
357
+ varying float flagBackground;
358
+
359
+ #ifdef TEXTURE
360
+ varying float frameIndex;
361
+ varying vec3 vTextureCoord;
362
+ varying vec4 vSourceRect;
363
+ #endif
364
+
365
+ #ifdef CLIPPATH
366
+ varying vec2 vClipUV;
367
+ #endif
368
+
369
+ #ifdef FILTER
370
+ uniform int u_filterFlag;
371
+ uniform float u_colorMatrix[20];
372
+ #endif
373
+
374
+ #ifdef CLOUDFILTER
375
+ varying vec4 colorCloud0;
376
+ varying vec4 colorCloud1;
377
+ varying vec4 colorCloud2;
378
+ varying vec4 colorCloud3;
379
+ varying vec4 colorCloud4;
380
+ #endif
381
+
382
+ #ifdef GRADIENT
383
+ varying vec3 vGradientVector1;
384
+ varying vec3 vGradientVector2;
385
+ uniform float u_colorSteps[40];
386
+ uniform int u_gradientType;
387
+
388
+ void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
389
+ float t;
390
+ // center circle radius
391
+ float cr = gv1.z;
392
+ // focal circle radius
393
+ float fr = gv2.z;
394
+
395
+ if(cr > 0.0 || fr > 0.0) {
396
+ // radial gradient
397
+ vec2 center = gv1.xy;
398
+ vec2 focal = gv2.xy;
399
+ float x = focal.x - gl_FragCoord.x;
400
+ float y = focal.y - gl_FragCoord.y;
401
+ float dx = focal.x - center.x;
402
+ float dy = focal.y - center.y;
403
+ float dr = cr - fr;
404
+ float a = dx * dx + dy * dy - dr * dr;
405
+ float b = -2.0 * (y * dy + x * dx + fr * dr);
406
+ float c = x * x + y * y - fr * fr;
407
+ t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
408
+ } else {
409
+ // linear gradient
410
+ vec2 v1 = gl_FragCoord.xy - gv1.xy;
411
+ vec2 v2 = gv2.xy - gv1.xy;
412
+ t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
413
+ }
414
+
415
+ vec4 colors[8];
416
+ colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
417
+ colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
418
+ colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
419
+ colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
420
+ colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
421
+ colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
422
+ colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
423
+ colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
424
+
425
+ float steps[8];
426
+ steps[0] = colorSteps[0];
427
+ steps[1] = colorSteps[5];
428
+ steps[2] = colorSteps[10];
429
+ steps[3] = colorSteps[15];
430
+ steps[4] = colorSteps[20];
431
+ steps[5] = colorSteps[25];
432
+ steps[6] = colorSteps[30];
433
+ steps[7] = colorSteps[35];
434
+
435
+ color = colors[0];
436
+ for (int i = 1; i < 8; i++) {
437
+ if (steps[i] < 0.0 || steps[i] > 1.0) {
438
+ break;
439
+ }
440
+ if(steps[i] == steps[i - 1]) {
441
+ color = colors[i];
442
+ } else {
443
+ color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
444
+ }
445
+ if (steps[i] >= t) {
446
+ break;
447
+ }
448
+ }
449
+ }
450
+ #endif
451
+
452
+ void transformColor(inout vec4 color, in float colorMatrix[20]) {
453
+ float r = color.r, g = color.g, b = color.b, a = color.a;
454
+ color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
455
+ color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
456
+ color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
457
+ color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
458
+ }
459
+
460
+ #ifdef CLOUDFILTER
461
+ void buildCloudColor(inout float colorCloudMatrix[20]) {
462
+ colorCloudMatrix[0] = colorCloud0[0];
463
+ colorCloudMatrix[1] = colorCloud1[0];
464
+ colorCloudMatrix[2] = colorCloud2[0];
465
+ colorCloudMatrix[3] = colorCloud3[0];
466
+ colorCloudMatrix[4] = colorCloud4[0];
467
+
468
+ colorCloudMatrix[5] = colorCloud0[1];
469
+ colorCloudMatrix[6] = colorCloud1[1];
470
+ colorCloudMatrix[7] = colorCloud2[1];
471
+ colorCloudMatrix[8] = colorCloud3[1];
472
+ colorCloudMatrix[9] = colorCloud4[1];
473
+
474
+ colorCloudMatrix[10] = colorCloud0[2];
475
+ colorCloudMatrix[11] = colorCloud1[2];
476
+ colorCloudMatrix[12] = colorCloud2[2];
477
+ colorCloudMatrix[13] = colorCloud3[2];
478
+ colorCloudMatrix[14] = colorCloud4[2];
479
+
480
+ colorCloudMatrix[15] = colorCloud0[3];
481
+ colorCloudMatrix[16] = colorCloud1[3];
482
+ colorCloudMatrix[17] = colorCloud2[3];
483
+ colorCloudMatrix[18] = colorCloud3[3];
484
+ colorCloudMatrix[19] = colorCloud4[3];
485
+ }
486
+ #endif
487
+
488
+ void main() {
489
+ vec4 color = vColor;
490
+ float opacity = abs(flagBackground);
491
+
492
+ #ifdef GRADIENT
493
+ if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
494
+ gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
495
+ }
496
+ #endif
497
+
498
+ if(opacity < 1.0) {
499
+ color.a *= opacity;
500
+ }
501
+
502
+ #ifdef TEXTURE
503
+ if(flagBackground > 0.0) {
504
+ vec3 texCoord = vTextureCoord;
505
+
506
+ if(texCoord.z == 1.0) {
507
+ texCoord = fract(texCoord);
508
+ }
509
+
510
+ if(texCoord.x <= 1.0 && texCoord.x >= 0.0
511
+ && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
512
+ if(vSourceRect.z > 0.0) {
513
+ texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
514
+ texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
515
+ }
516
+ if(frameIndex < 0.0) {
517
+ vec4 texColor = texture2D(u_texSampler, texCoord.xy);
518
+ color = mix(color, texColor, texColor.a);
519
+ } else {
520
+ int index = int(floor(clamp(0.0, 11.0, frameIndex)));
521
+ vec4 texColor;
522
+ if(index == 0) texColor = texture2D(u_texFrame0, texCoord.xy);
523
+ else if(index == 1) texColor = texture2D(u_texFrame1, texCoord.xy);
524
+ else if(index == 2) texColor = texture2D(u_texFrame2, texCoord.xy);
525
+ else if(index == 3) texColor = texture2D(u_texFrame3, texCoord.xy);
526
+ else if(index == 4) texColor = texture2D(u_texFrame4, texCoord.xy);
527
+ else if(index == 5) texColor = texture2D(u_texFrame5, texCoord.xy);
528
+ else if(index == 6) texColor = texture2D(u_texFrame6, texCoord.xy);
529
+ else if(index == 7) texColor = texture2D(u_texFrame7, texCoord.xy);
530
+ else if(index == 8) texColor = texture2D(u_texFrame8, texCoord.xy);
531
+ else if(index == 9) texColor = texture2D(u_texFrame9, texCoord.xy);
532
+ else if(index == 10) texColor = texture2D(u_texFrame10, texCoord.xy);
533
+ else texColor = texture2D(u_texFrame11, texCoord.xy);
534
+ float alpha = texColor.a;
535
+ if(opacity < 1.0) {
536
+ texColor.a *= opacity;
537
+ alpha *= mix(0.465, 1.0, opacity);
538
+ }
539
+ // color = mix(color, texColor, texColor.a);
540
+ color.rgb = mix(color.rgb, texColor.rgb, alpha);
541
+ // color.rgb = mix(texColor.rgb, color.rgb, color.a);
542
+ color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
543
+ color.a = texColor.a + (1.0 - texColor.a) * color.a;
544
+ }
545
+ }
546
+ }
547
+ #endif
548
+
549
+ #ifdef FILTER
550
+ if(u_filterFlag > 0) {
551
+ transformColor(color, u_colorMatrix);
552
+ }
553
+ #endif
554
+
555
+ #ifdef CLOUDFILTER
556
+ float colorCloudMatrix[20];
557
+ buildCloudColor(colorCloudMatrix);
558
+ transformColor(color, colorCloudMatrix);
559
+ #endif
560
+
561
+ #ifdef CLIPPATH
562
+ float clip = texture2D(u_clipSampler, vClipUV).r;
563
+ color *= clip;
564
+ #endif
565
+
566
+ gl_FragColor = color;
567
+ }`}])})})(um);var ft=um.exports;Ze(Array);function th(s,t){const e=s.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/);e?s={size:parseFloat(e[1]),unit:e[2]}:s={size:parseFloat(s),unit:"px"};let{size:r,unit:n}=s;if(n==="pt")r/=.75;else if(n==="pc")r*=16;else if(n==="in")r*=96;else if(n==="cm")r*=96/2.54;else if(n==="mm")r*=96/25.4;else if(n==="em"||n==="rem"||n==="ex"){if(!t&&typeof getComputedStyle=="function"&&typeof document<"u"){const i=getComputedStyle(document.documentElement).fontSize;i?t=th(i,16):t=16}r*=t,n==="ex"&&(r/=2)}else if(n==="q")r*=96/25.4/4;else if(n==="vw"||n==="vh"){if(typeof document<"u"){const i=n==="vw"?window.innerWidth||document.documentElement.clientWidth:window.innerHeight||document.documentElement.clientHeight;r*=i/100}}else if((n==="vmax"||n==="vmin")&&typeof document<"u"){const i=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight;n==="vmax"?r*=Math.max(i,o)/100:r*=Math.min(i,o)/100}return r}function qe(s){if(s==null)return s;if(typeof s=="string"&&(s=th(s)),!Number.isFinite(s))throw new TypeError("Invalid value");return s}function Mt(s,t=!1){return s===""?null:(typeof s=="string"&&(s=s.split(/[\s,]+/g)),Array.isArray(s)&&(t&&(s=s.map(qe)),s.length===1)?s[0]:s)}function eu(s,t){if(Array.isArray(s)&&Array.isArray(t)){if(s.length!==t.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!==t[e])return!1;return!0}return s==null&&t==null||s===t}Ze(Array);const Uc=Symbol.for("spritejs_setAttributeDefault"),Wc=Symbol.for("spritejs_declareAlias"),xt=Symbol.for("spritejs_setAttribute"),gt=Symbol.for("spritejs_getAttribute"),Bd=Symbol.for("spritejs_attributes"),jd=Symbol.for("spritejs_changedAttrs"),ia=Symbol("subject"),Qr=Symbol("attr"),Vc=Symbol("default"),po=Symbol("alias");function jM(s,[t,e]){let r=ei(1,0,0,1,0,0);return[...s].forEach(([n,i])=>{if((t||e)&&(r=_l(Array.of(0,0,0,0,0,0),r,[t,e])),n==="matrix")r=Lr(r,r,i);else if(n==="offsetTranslate")r[4]+=i[0],r[5]+=i[1];else if(n==="offsetRotate")r=am(Array.of(0,0,0,0,0,0),r,i);else if(n==="skew"){const[o,a]=i;r=Lr(r,r,ei(1,Math.tan(a),Math.tan(o),1,0,0))}else lm[n](r,r,i);(t||e)&&(r=_l(Array.of(0,0,0,0,0,0),r,[-t,-e]))}),r}const yn=Symbol("transformMatrix"),Ps=Symbol("transforms"),ns=Symbol("changedAttrs"),hm=Symbol("lastChangedAttr"),sa=Symbol("offsetFigure");function mo(s,t,e){const r=s[Qr][t];if(s[xt](t,e,!1)||s[hm]!==t){const i=s[Ps];i.has(t)&&i.delete(t),e&&(t==="rotate"&&(e=Math.PI*e/180),t==="scale"&&(e=e.map(o=>Math.abs(o)>1e-5?o:1/o>0?1e-5:-1e-5)),i.set(t,e)),s[yn]=null,s[ia].onPropertyChange(t,e,r,s)}}function $c(s){const t=s[sa],e=s.offsetDistance*t.getTotalLength(),r=t.getPointAtLength(e);if(r){const n=s[Ps];let i=s.offsetRotate;i==="auto"?i=r.angle:i==="reverse"?i=Math.PI+r.angle:i=Math.PI*i/180,n.set("offsetRotate",i),n.set("offsetTranslate",[r.x,r.y]),s[yn]=null}}let rh=class{static setDefault(t,...e){return t[Uc](...e)}static declareAlias(t,...e){return t[Wc](...e)}static setAttribute(t,...e){return t[xt](...e)}static getAttribute(t,...e){return t[gt](...e)}static getAttributes(t){return t[Bd]}static getChangedAttributes(t){return t[jd]}constructor(t){this[ia]=t,this[Qr]={},this[yn]=ei(1,0,0,1,0,0),this[Ps]=new Map,this[Vc]={},this[po]=[],Object.defineProperty(t,"transformMatrix",{get:()=>(this[yn]||(this[yn]=jM(this[Ps],this.transformOrigin)),[...this[yn]])}),this[Uc]({id:"",name:"",className:"",x:0,y:0,transformOrigin:[0,0],transform:"",translate:[0,0],rotate:0,scale:[1,1],skew:[0,0],opacity:1,zIndex:0,offsetPath:void 0,offsetDistance:0,offsetRotate:"auto",pointerEvents:"visible",filter:"none",display:""}),this[Wc]("class","pos"),this[ns]=new Set,this[sa]=new ft.Figure2D({scale:5,simplify:0})}get[jd](){const t={};return[...this[ns]].forEach(e=>{t[e]=this[Qr][e]}),t}get[Bd](){const t=Object.assign({},this[Qr]);for(let e=0;e<this[po].length;e++){const r=this[po][e];t[r]=this[r]}return t}[Uc](t){Object.assign(this[Vc],t),Object.assign(this[Qr],t)}[Wc](...t){this[po].push(...t)}[xt](t,e,r=!0){const n=this[Qr][t],i=this[ia];return e==null&&(e=this[Vc][t]),eu(n,e)?!1:(this[Qr][t]=e,this[ns].has(t)&&this[ns].delete(t),this[ns].add(t),this[hm]=t,r&&i.onPropertyChange(t,e,n,this),!0)}[gt](t){return this[Qr][t]}set id(t){this[xt]("id",t)}get id(){return this[gt]("id")}set name(t){this[xt]("name",t)}get name(){return this[gt]("name")}set className(t){this[xt]("className",t)}get className(){return this[gt]("className")}set class(t){this.className=t}get class(){return this.className}get x(){return this[gt]("x")}set x(t){this[xt]("x",qe(t))}get y(){return this[gt]("y")}set y(t){this[xt]("y",qe(t))}get pos(){return[this.x,this.y]}set pos(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.x=t[0],this.y=t[1]}get transform(){return this[gt]("transform")}set transform(t){let e=null;if(Array.isArray(t)&&(e=t,t=`matrix(${t.map(qe).join()})`),typeof t=="string")t=t.replace(/\s*,\s*/g,",");else if(t!=null)throw new TypeError("Invalid transform value.");const r=this[Qr].transform;if(this[xt]("transform",t,!1)){const n=this[Ps];if(n.has("matrix")&&n.delete("matrix"),e)n.set("matrix",e);else if(t){const i=t.match(/(matrix|translate|rotate|scale|skew)\([^()]+\)/g);if(i){let o=ei(1,0,0,1,0,0);for(let a=0;a<i.length;a++){const l=i[a].match(/^(matrix|translate|rotate|scale|skew)\(([^()]+)\)/);if(l){let[,u,h]=l;u==="rotate"?h=Math.PI*parseFloat(h)/180:h=h.trim().split(/[\s,]+/).map(d=>qe(d)),u==="matrix"?o=Lr(o,o,h):u==="skew"?o=Lr(o,o,ei(1,Math.tan(h[1]),Math.tan(h[0]),1,0,0)):lm[u](o,o,h),n.set("matrix",o)}}}else throw new TypeError("Invalid transform value.")}this[yn]=null,this[ia].onPropertyChange("transform",t,r,this)}}get transformOrigin(){return this[gt]("transformOrigin")}set transformOrigin(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),this[xt]("transformOrigin",t)&&(this[yn]=null)}get rotate(){return this[gt]("rotate")}set rotate(t){mo(this,"rotate",t)}get translate(){return this[gt]("translate")}set translate(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),mo(this,"translate",t)}get scale(){return this[gt]("scale")}set scale(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),mo(this,"scale",t)}get skew(){return this[gt]("skew")}set skew(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t,t]),mo(this,"skew",t)}get opacity(){return this[gt]("opacity")}set opacity(t){t!=null&&(t=Number(t)),this[xt]("opacity",t)}get zIndex(){return this[gt]("zIndex")}set zIndex(t){t!=null&&(t=Number(t)),this[xt]("zIndex",t)}get offsetPath(){return this[gt]("offsetPath")}set offsetPath(t){this[xt]("offsetPath",t)&&(this[sa].beginPath(),t!=null&&this[sa].addPath(t),$c(this))}get offsetDistance(){return this[gt]("offsetDistance")}set offsetDistance(t){this[xt]("offsetDistance",qe(t))&&$c(this)}get offsetRotate(){return this[gt]("offsetRotate")}set offsetRotate(t){this[xt]("offsetRotate",t),$c(this)}get pointerEvents(){return this[gt]("pointerEvents")}set pointerEvents(t){if(t!=null&&t!=="none"&&t!=="visible"&&t!=="visibleFill"&&t!=="visibleStroke"&&t!=="all")throw new TypeError("Invalid pointerEvents type.");this[xt]("pointerEvents",t)}get filter(){return this[gt]("filter")}set filter(t){this[xt]("filter",t)}get display(){return this[gt]("display")}set display(t){this[xt]("display",t)}set offset(t){}};var en={},Ha={},Ks={},dm=function(s,t){return{value:t,done:!!s}},Hi={},FM={}.toString,Xs=function(s){return FM.call(s).slice(8,-1)},UM=Xs,nh=Object("z").propertyIsEnumerable(0)?Object:function(s){return UM(s)=="String"?s.split(""):Object(s)},ih=function(s){if(s==null)throw TypeError("Can't call method on "+s);return s},WM=nh,VM=ih,oi=function(s){return WM(VM(s))},$M=!0,fm={exports:{}},YM=fm.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=YM);var Jt=fm.exports,gm={exports:{}},GM=gm.exports={version:"2.6.12"};typeof __e=="number"&&(__e=GM);var Pt=gm.exports,Js=function(s){if(typeof s!="function")throw TypeError(s+" is not a function!");return s},HM=Js,An=function(s,t,e){if(HM(s),t===void 0)return s;switch(e){case 1:return function(r){return s.call(t,r)};case 2:return function(r,n){return s.call(t,r,n)};case 3:return function(r,n,i){return s.call(t,r,n,i)}}return function(){return s.apply(t,arguments)}},dr={},Nr=function(s){return typeof s=="object"?s!==null:typeof s=="function"},QM=Nr,cn=function(s){if(!QM(s))throw TypeError(s+" is not an object!");return s},ai=function(s){try{return!!s()}catch{return!0}},fr=!ai(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7}),Fd=Nr,tu=Jt.document,qM=Fd(tu)&&Fd(tu.createElement),sh=function(s){return qM?tu.createElement(s):{}},pm=!fr&&!ai(function(){return Object.defineProperty(sh("div"),"a",{get:function(){return 7}}).a!=7}),yo=Nr,oh=function(s,t){if(!yo(s))return s;var e,r;if(t&&typeof(e=s.toString)=="function"&&!yo(r=e.call(s))||typeof(e=s.valueOf)=="function"&&!yo(r=e.call(s))||!t&&typeof(e=s.toString)=="function"&&!yo(r=e.call(s)))return r;throw TypeError("Can't convert object to primitive value")},Ud=cn,ZM=pm,KM=oh,XM=Object.defineProperty;dr.f=fr?Object.defineProperty:function(t,e,r){if(Ud(t),e=KM(e,!0),Ud(r),ZM)try{return XM(t,e,r)}catch{}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t};var _s=function(s,t){return{enumerable:!(s&1),configurable:!(s&2),writable:!(s&4),value:t}},JM=dr,_M=_s,kn=fr?function(s,t,e){return JM.f(s,t,_M(1,e))}:function(s,t,e){return s[t]=e,s},ew={}.hasOwnProperty,ci=function(s,t){return ew.call(s,t)},vo=Jt,Yc=Pt,Wd=An,tw=kn,rw=ci,Mo="prototype",Ft=function(s,t,e){var r=s&Ft.F,n=s&Ft.G,i=s&Ft.S,o=s&Ft.P,a=s&Ft.B,c=s&Ft.W,l=n?Yc:Yc[t]||(Yc[t]={}),u=l[Mo],h=n?vo:i?vo[t]:(vo[t]||{})[Mo],d,f,g;n&&(e=t);for(d in e)f=!r&&h&&h[d]!==void 0,!(f&&rw(l,d))&&(g=f?h[d]:e[d],l[d]=n&&typeof h[d]!="function"?e[d]:a&&f?Wd(g,vo):c&&h[d]==g?function(y){var T=function(x,C,L){if(this instanceof y){switch(arguments.length){case 0:return new y;case 1:return new y(x);case 2:return new y(x,C)}return new y(x,C,L)}return y.apply(this,arguments)};return T[Mo]=y[Mo],T}(g):o&&typeof g=="function"?Wd(Function.call,g):g,o&&((l.virtual||(l.virtual={}))[d]=g,s&Ft.R&&u&&!u[d]&&tw(u,d,g)))};Ft.F=1;Ft.G=2;Ft.S=4;Ft.P=8;Ft.B=16;Ft.W=32;Ft.U=64;Ft.R=128;var _t=Ft,mm=kn,nw=Math.ceil,iw=Math.floor,ah=function(s){return isNaN(s=+s)?0:(s>0?iw:nw)(s)},sw=ah,ow=Math.min,Qa=function(s){return s>0?ow(sw(s),9007199254740991):0},aw=ah,cw=Math.max,lw=Math.min,uw=function(s,t){return s=aw(s),s<0?cw(s+t,0):lw(s,t)},hw=oi,dw=Qa,fw=uw,gw=function(s){return function(t,e,r){var n=hw(t),i=dw(n.length),o=fw(r,i),a;if(s&&e!=e){for(;i>o;)if(a=n[o++],a!=a)return!0}else for(;i>o;o++)if((s||o in n)&&n[o]===e)return s||o||0;return!s&&-1}},ym={exports:{}},pw=Pt,Vd=Jt,$d="__core-js_shared__",Yd=Vd[$d]||(Vd[$d]={});(ym.exports=function(s,t){return Yd[s]||(Yd[s]=t!==void 0?t:{})})("versions",[]).push({version:pw.version,mode:"pure",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"});var ch=ym.exports,mw=0,yw=Math.random(),qa=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++mw+yw).toString(36))},Gd=ch("keys"),vw=qa,lh=function(s){return Gd[s]||(Gd[s]=vw(s))},Hd=ci,Mw=oi,ww=gw(!1),Sw=lh("IE_PROTO"),vm=function(s,t){var e=Mw(s),r=0,n=[],i;for(i in e)i!=Sw&&Hd(e,i)&&n.push(i);for(;t.length>r;)Hd(e,i=t[r++])&&(~ww(n,i)||n.push(i));return n},uh="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),Tw=vm,Cw=uh,Qi=Object.keys||function(t){return Tw(t,Cw)},Iw=dr,bw=cn,Ew=Qi,xw=fr?Object.defineProperties:function(t,e){bw(t);for(var r=Ew(e),n=r.length,i=0,o;n>i;)Iw.f(t,o=r[i++],e[o]);return t},Qd=Jt.document,Mm=Qd&&Qd.documentElement,Rw=cn,Aw=xw,qd=uh,kw=lh("IE_PROTO"),Gc=function(){},ru="prototype",oa=function(){var s=sh("iframe"),t=qd.length,e="<",r=">",n;for(s.style.display="none",Mm.appendChild(s),s.src="javascript:",n=s.contentWindow.document,n.open(),n.write(e+"script"+r+"document.F=Object"+e+"/script"+r),n.close(),oa=n.F;t--;)delete oa[ru][qd[t]];return oa()},hh=Object.create||function(t,e){var r;return t!==null?(Gc[ru]=Rw(t),r=new Gc,Gc[ru]=null,r[kw]=t):r=oa(),e===void 0?r:Aw(r,e)},wm={exports:{}},nu=ch("wks"),Pw=qa,iu=Jt.Symbol,Zd=typeof iu=="function",Dw=wm.exports=function(s){return nu[s]||(nu[s]=Zd&&iu[s]||(Zd?iu:Pw)("Symbol."+s))};Dw.store=nu;var Yt=wm.exports,Lw=dr.f,Nw=ci,Kd=Yt("toStringTag"),eo=function(s,t,e){s&&!Nw(s=e?s:s.prototype,Kd)&&Lw(s,Kd,{configurable:!0,value:t})},Ow=hh,zw=_s,Bw=eo,Sm={};kn(Sm,Yt("iterator"),function(){return this});var jw=function(s,t,e){s.prototype=Ow(Sm,{next:zw(1,e)}),Bw(s,t+" Iterator")},Fw=ih,qi=function(s){return Object(Fw(s))},Uw=ci,Ww=qi,Xd=lh("IE_PROTO"),Vw=Object.prototype,$w=Object.getPrototypeOf||function(s){return s=Ww(s),Uw(s,Xd)?s[Xd]:typeof s.constructor=="function"&&s instanceof s.constructor?s.constructor.prototype:s instanceof Object?Vw:null},Hc=_t,Yw=mm,Gw=kn,Jd=Hi,Hw=jw,Qw=eo,qw=$w,Qc=Yt("iterator"),qc=!([].keys&&"next"in[].keys()),Zw="@@iterator",_d="keys",wo="values",Kw=function(){return this},dh=function(s,t,e,r,n,i,o){Hw(e,t,r);var a=function(L){if(!qc&&L in h)return h[L];switch(L){case _d:return function(){return new e(this,L)};case wo:return function(){return new e(this,L)}}return function(){return new e(this,L)}},c=t+" Iterator",l=n==wo,u=!1,h=s.prototype,d=h[Qc]||h[Zw]||n&&h[n],f=d||a(n),g=n?l?a("entries"):f:void 0,y=t=="Array"&&h.entries||d,T,x,C;if(y&&(C=qw(y.call(new s)),C!==Object.prototype&&C.next&&Qw(C,c,!0)),l&&d&&d.name!==wo&&(u=!0,f=function(){return d.call(this)}),o&&(qc||u||!h[Qc])&&Gw(h,Qc,f),Jd[t]=f,Jd[c]=Kw,n)if(T={values:l?f:a(wo),keys:i?f:a(_d),entries:g},o)for(x in T)x in h||Yw(h,x,T[x]);else Hc(Hc.P+Hc.F*(qc||u),t,T);return T},So=dm,ef=Hi,Xw=oi;dh(Array,"Array",function(s,t){this._t=Xw(s),this._i=0,this._k=t},function(){var s=this._t,t=this._k,e=this._i++;return!s||e>=s.length?(this._t=void 0,So(1)):t=="keys"?So(0,e):t=="values"?So(0,s[e]):So(0,[e,s[e]])},"values");ef.Arguments=ef.Array;var Jw=Jt,_w=kn,tf=Hi,rf=Yt("toStringTag"),nf="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(var Zc=0;Zc<nf.length;Zc++){var Kc=nf[Zc],sf=Jw[Kc],Xc=sf&&sf.prototype;Xc&&!Xc[rf]&&_w(Xc,rf,Kc),tf[Kc]=tf.Array}var eS=ah,tS=ih,rS=function(s){return function(t,e){var r=String(tS(t)),n=eS(e),i=r.length,o,a;return n<0||n>=i?s?"":void 0:(o=r.charCodeAt(n),o<55296||o>56319||n+1===i||(a=r.charCodeAt(n+1))<56320||a>57343?s?r.charAt(n):o:s?r.slice(n,n+2):(o-55296<<10)+(a-56320)+65536)}},nS=rS(!0);dh(String,"String",function(s){this._t=String(s),this._i=0},function(){var s=this._t,t=this._i,e;return t>=s.length?{value:void 0,done:!0}:(e=nS(s,t),this._i+=e.length,{value:e,done:!1})});var su=Xs,iS=Yt("toStringTag"),sS=su(function(){return arguments}())=="Arguments",oS=function(s,t){try{return s[t]}catch{}},Za=function(s){var t,e,r;return s===void 0?"Undefined":s===null?"Null":typeof(e=oS(t=Object(s),iS))=="string"?e:sS?su(t):(r=su(t))=="Object"&&typeof t.callee=="function"?"Arguments":r},aS=Za,cS=Yt("iterator"),lS=Hi,uS=Pt.isIterable=function(s){var t=Object(s);return t[cS]!==void 0||"@@iterator"in t||lS.hasOwnProperty(aS(t))},hS=uS,dS={default:hS,__esModule:!0},fS=Za,gS=Yt("iterator"),pS=Hi,fh=Pt.getIteratorMethod=function(s){if(s!=null)return s[gS]||s["@@iterator"]||pS[fS(s)]},mS=cn,yS=fh,vS=Pt.getIterator=function(s){var t=yS(s);if(typeof t!="function")throw TypeError(s+" is not iterable!");return mS(t.call(s))},MS=vS,wS={default:MS,__esModule:!0};Ks.__esModule=!0;var SS=dS,TS=Tm(SS),CS=wS,IS=Tm(CS);function Tm(s){return s&&s.__esModule?s:{default:s}}Ks.default=function(){function s(t,e){var r=[],n=!0,i=!1,o=void 0;try{for(var a=(0,IS.default)(t),c;!(n=(c=a.next()).done)&&(r.push(c.value),!(e&&r.length===e));n=!0);}catch(l){i=!0,o=l}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}return r}return function(t,e){if(Array.isArray(t))return t;if((0,TS.default)(Object(t)))return s(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var Ka={},of=cn,Cm=function(s,t,e,r){try{return r?t(of(e)[0],e[1]):t(e)}catch(i){var n=s.return;throw n!==void 0&&of(n.call(s)),i}},bS=Hi,ES=Yt("iterator"),xS=Array.prototype,Im=function(s){return s!==void 0&&(bS.Array===s||xS[ES]===s)},RS=dr,AS=_s,kS=function(s,t,e){t in s?RS.f(s,t,AS(0,e)):s[t]=e},Jc,af;function bm(){if(af)return Jc;af=1;var s=Yt("iterator"),t=!1;try{var e=[7][s]();e.return=function(){t=!0},Array.from(e,function(){throw 2})}catch{}return Jc=function(r,n){if(!n&&!t)return!1;var i=!1;try{var o=[7],a=o[s]();a.next=function(){return{done:i=!0}},o[s]=function(){return a},r(o)}catch{}return i},Jc}var PS=An,_c=_t,DS=qi,LS=Cm,NS=Im,OS=Qa,cf=kS,zS=fh;_c(_c.S+_c.F*!bm()(function(s){Array.from(s)}),"Array",{from:function(t){var e=DS(t),r=typeof this=="function"?this:Array,n=arguments.length,i=n>1?arguments[1]:void 0,o=i!==void 0,a=0,c=zS(e),l,u,h,d;if(o&&(i=PS(i,n>2?arguments[2]:void 0,2)),c!=null&&!(r==Array&&NS(c)))for(d=c.call(e),u=new r;!(h=d.next()).done;a++)cf(u,a,o?LS(d,i,[h.value,a],!0):h.value);else for(l=OS(e.length),u=new r(l);l>a;a++)cf(u,a,o?i(e[a],a):e[a]);return u.length=a,u}});var BS=Pt.Array.from,jS={default:BS,__esModule:!0};Ka.__esModule=!0;var FS=jS,US=WS(FS);function WS(s){return s&&s.__esModule?s:{default:s}}Ka.default=function(s){if(Array.isArray(s)){for(var t=0,e=Array(s.length);t<s.length;t++)e[t]=s[t];return e}else return(0,US.default)(s)};var VS=kn,gh=function(s,t,e){for(var r in t)e&&s[r]?s[r]=t[r]:VS(s,r,t[r]);return s},ph=function(s,t,e,r){if(!(s instanceof t)||r!==void 0&&r in s)throw TypeError(e+": incorrect invocation!");return s},Em={exports:{}},$S=An,YS=Cm,GS=Im,HS=cn,QS=Qa,qS=fh,ou={},au={},xm=Em.exports=function(s,t,e,r,n){var i=n?function(){return s}:qS(s),o=$S(e,r,t?2:1),a=0,c,l,u,h;if(typeof i!="function")throw TypeError(s+" is not iterable!");if(GS(i)){for(c=QS(s.length);c>a;a++)if(h=t?o(HS(l=s[a])[0],l[1]):o(s[a]),h===ou||h===au)return h}else for(u=i.call(s);!(l=u.next()).done;)if(h=YS(u,o,l.value,t),h===ou||h===au)return h};xm.BREAK=ou;xm.RETURN=au;var to=Em.exports,ZS=Jt,lf=Pt,KS=dr,XS=fr,uf=Yt("species"),Rm=function(s){var t=typeof lf[s]=="function"?lf[s]:ZS[s];XS&&t&&!t[uf]&&KS.f(t,uf,{configurable:!0,get:function(){return this}})},Am={exports:{}},ii=qa("meta"),JS=Nr,mh=ci,_S=dr.f,eT=0,Xa=Object.isExtensible||function(){return!0},tT=!ai(function(){return Xa(Object.preventExtensions({}))}),yh=function(s){_S(s,ii,{value:{i:"O"+ ++eT,w:{}}})},rT=function(s,t){if(!JS(s))return typeof s=="symbol"?s:(typeof s=="string"?"S":"P")+s;if(!mh(s,ii)){if(!Xa(s))return"F";if(!t)return"E";yh(s)}return s[ii].i},nT=function(s,t){if(!mh(s,ii)){if(!Xa(s))return!0;if(!t)return!1;yh(s)}return s[ii].w},iT=function(s){return tT&&sT.NEED&&Xa(s)&&!mh(s,ii)&&yh(s),s},sT=Am.exports={KEY:ii,NEED:!1,fastKey:rT,getWeak:nT,onFreeze:iT},vh=Am.exports,oT=Nr,km=function(s,t){if(!oT(s)||s._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return s},aT=dr.f,cT=hh,lT=gh,uT=An,hT=ph,dT=to,fT=dh,To=dm,gT=Rm,Pm=fr,Dm=vh.fastKey,wi=km,is=Pm?"_s":"size",Co=function(s,t){var e=Dm(t),r;if(e!=="F")return s._i[e];for(r=s._f;r;r=r.n)if(r.k==t)return r},pT={getConstructor:function(s,t,e,r){var n=s(function(i,o){hT(i,n,t,"_i"),i._t=t,i._i=cT(null),i._f=void 0,i._l=void 0,i[is]=0,o!=null&&dT(o,e,i[r],i)});return lT(n.prototype,{clear:function(){for(var o=wi(this,t),a=o._i,c=o._f;c;c=c.n)c.r=!0,c.p&&(c.p=c.p.n=void 0),delete a[c.i];o._f=o._l=void 0,o[is]=0},delete:function(i){var o=wi(this,t),a=Co(o,i);if(a){var c=a.n,l=a.p;delete o._i[a.i],a.r=!0,l&&(l.n=c),c&&(c.p=l),o._f==a&&(o._f=c),o._l==a&&(o._l=l),o[is]--}return!!a},forEach:function(o){wi(this,t);for(var a=uT(o,arguments.length>1?arguments[1]:void 0,3),c;c=c?c.n:this._f;)for(a(c.v,c.k,this);c&&c.r;)c=c.p},has:function(o){return!!Co(wi(this,t),o)}}),Pm&&aT(n.prototype,"size",{get:function(){return wi(this,t)[is]}}),n},def:function(s,t,e){var r=Co(s,t),n,i;return r?r.v=e:(s._l=r={i:i=Dm(t,!0),k:t,v:e,p:n=s._l,n:void 0,r:!1},s._f||(s._f=r),n&&(n.n=r),s[is]++,i!=="F"&&(s._i[i]=r)),s},getEntry:Co,setStrong:function(s,t,e){fT(s,t,function(r,n){this._t=wi(r,t),this._k=n,this._l=void 0},function(){for(var r=this,n=r._k,i=r._l;i&&i.r;)i=i.p;return!r._t||!(r._l=i=i?i.n:r._t._f)?(r._t=void 0,To(1)):n=="keys"?To(0,i.k):n=="values"?To(0,i.v):To(0,[i.k,i.v])},e?"entries":"values",!e,!0),gT(t)}},mT=Xs,Lm=Array.isArray||function(t){return mT(t)=="Array"},yT=Nr,hf=Lm,vT=Yt("species"),MT=function(s){var t;return hf(s)&&(t=s.constructor,typeof t=="function"&&(t===Array||hf(t.prototype))&&(t=void 0),yT(t)&&(t=t[vT],t===null&&(t=void 0))),t===void 0?Array:t},wT=MT,ST=function(s,t){return new(wT(s))(t)},TT=An,CT=nh,IT=qi,bT=Qa,ET=ST,xT=function(s,t){var e=s==1,r=s==2,n=s==3,i=s==4,o=s==6,a=s==5||o,c=t||ET;return function(l,u,h){for(var d=IT(l),f=CT(d),g=TT(u,h,3),y=bT(f.length),T=0,x=e?c(l,y):r?c(l,0):void 0,C,L;y>T;T++)if((a||T in f)&&(C=f[T],L=g(C,T,d),s)){if(e)x[T]=L;else if(L)switch(s){case 3:return!0;case 5:return C;case 6:return T;case 2:x.push(C)}else if(i)return!1}return o?-1:n||i?i:x}},RT=Jt,Io=_t,AT=vh,kT=ai,PT=kn,DT=gh,LT=to,df=ph,NT=Nr,OT=eo,zT=dr.f,BT=xT(0),jT=fr,FT=function(s,t,e,r,n,i){var o=RT[s],a=o,c=n?"set":"add",l=a&&a.prototype,u={};return!jT||typeof a!="function"||!(i||l.forEach&&!kT(function(){new a().entries().next()}))?(a=r.getConstructor(t,s,n,c),DT(a.prototype,e),AT.NEED=!0):(a=t(function(h,d){df(h,a,s,"_c"),h._c=new o,d!=null&&LT(d,n,h[c],h)}),BT("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(h){var d=h=="add"||h=="set";h in l&&!(i&&h=="clear")&&PT(a.prototype,h,function(f,g){if(df(this,a,h),!d&&i&&!NT(f))return h=="get"?void 0:!1;var y=this._c[h](f===0?0:f,g);return d?this:y})}),i||zT(a.prototype,"size",{get:function(){return this._c.size}})),OT(a,s),u[s]=a,Io(Io.G+Io.W+Io.F,u),i||r.setStrong(a,s,n),a},el=pT,ff=km,tl="Map";FT(tl,function(s){return function(){return s(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=el.getEntry(ff(this,tl),t);return e&&e.v},set:function(t,e){return el.def(ff(this,tl),t===0?0:t,e)}},el,!0);var rl,gf;function UT(){if(gf)return rl;gf=1;var s=to;return rl=function(t,e){var r=[];return s(t,!1,r.push,r,e),r},rl}var nl,pf;function WT(){if(pf)return nl;pf=1;var s=Za,t=UT();return nl=function(e){return function(){if(s(this)!=e)throw TypeError(e+"#toJSON isn't generic");return t(this)}},nl}var il=_t;il(il.P+il.R,"Map",{toJSON:WT()("Map")});var mf=_t,VT=function(s){mf(mf.S,s,{of:function(){for(var e=arguments.length,r=new Array(e);e--;)r[e]=arguments[e];return new this(r)}})};VT("Map");var yf=_t,vf=Js,$T=An,Mf=to,YT=function(s){yf(yf.S,s,{from:function(e){var r=arguments[1],n,i,o,a;return vf(this),n=r!==void 0,n&&vf(r),e==null?new this:(i=[],n?(o=0,a=$T(r,arguments[2],2),Mf(e,!1,function(c){i.push(a(c,o++))})):Mf(e,!1,i.push,i),new this(i))}})};YT("Map");var GT=Pt.Map,Nm={default:GT,__esModule:!0},Ja={};Ja.f=Object.getOwnPropertySymbols;var Zi={};Zi.f={}.propertyIsEnumerable;var sl,wf;function HT(){if(wf)return sl;wf=1;var s=fr,t=Qi,e=Ja,r=Zi,n=qi,i=nh,o=Object.assign;return sl=!o||ai(function(){var a={},c={},l=Symbol(),u="abcdefghijklmnopqrst";return a[l]=7,u.split("").forEach(function(h){c[h]=h}),o({},a)[l]!=7||Object.keys(o({},c)).join("")!=u})?function(c,l){for(var u=n(c),h=arguments.length,d=1,f=e.f,g=r.f;h>d;)for(var y=i(arguments[d++]),T=f?t(y).concat(f(y)):t(y),x=T.length,C=0,L;x>C;)L=T[C++],(!s||g.call(y,L))&&(u[L]=y[L]);return u}:o,sl}var ol=_t;ol(ol.S+ol.F,"Object",{assign:HT()});var QT=Pt.Object.assign,Mh={default:QT,__esModule:!0},_a={};_a.__esModule=!0;_a.default=function(s,t){if(!(s instanceof t))throw new TypeError("Cannot call a class as a function")};var ec={},al=_t;al(al.S+al.F*!fr,"Object",{defineProperty:dr.f});var qT=Pt.Object,ZT=function(t,e,r){return qT.defineProperty(t,e,r)},KT={default:ZT,__esModule:!0};ec.__esModule=!0;var XT=KT,JT=_T(XT);function _T(s){return s&&s.__esModule?s:{default:s}}ec.default=function(){function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,JT.default)(t,n.key,n)}}return function(t,e,r){return e&&s(t.prototype,e),r&&s(t,r),t}}();var wh={};wh.f=Yt;var Sf=Pt,e1=wh,t1=dr.f,Sh=function(s){var t=Sf.Symbol||(Sf.Symbol={});s.charAt(0)!="_"&&!(s in t)&&t1(t,s,{value:e1.f(s)})},r1=Qi,n1=Ja,i1=Zi,s1=function(s){var t=r1(s),e=n1.f;if(e)for(var r=e(s),n=i1.f,i=0,o;r.length>i;)n.call(s,o=r[i++])&&t.push(o);return t},Om={},Th={},o1=vm,a1=uh.concat("length","prototype");Th.f=Object.getOwnPropertyNames||function(t){return o1(t,a1)};var c1=oi,zm=Th.f,l1={}.toString,Bm=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u1=function(s){try{return zm(s)}catch{return Bm.slice()}};Om.f=function(t){return Bm&&l1.call(t)=="[object Window]"?u1(t):zm(c1(t))};var jm={},h1=Zi,d1=_s,f1=oi,g1=oh,p1=ci,m1=pm,Tf=Object.getOwnPropertyDescriptor;jm.f=fr?Tf:function(t,e){if(t=f1(t),e=g1(e,!0),m1)try{return Tf(t,e)}catch{}if(p1(t,e))return d1(!h1.f.call(t,e),t[e])};var tc=Jt,Rt=ci,Fm=fr,Ut=_t,y1=mm,v1=vh.KEY,Ch=ai,Ih=ch,bh=eo,M1=qa,ro=Yt,w1=wh,S1=Sh,T1=s1,C1=Lm,cu=cn,I1=Nr,b1=qi,rc=oi,Eh=oh,lu=_s,js=hh,Um=Om,Wm=jm,nc=Ja,Vm=dr,E1=Qi,$m=Wm.f,Hn=Vm.f,Ym=Um.f,Xt=tc.Symbol,va=tc.JSON,bo=va&&va.stringify,Tn="prototype",Kt=ro("_hidden"),Cf=ro("toPrimitive"),x1={}.propertyIsEnumerable,ss=Ih("symbol-registry"),on=Ih("symbols"),no=Ih("op-symbols"),Sr=Object[Tn],Ki=typeof Xt=="function"&&!!nc.f,cl=tc.QObject,uu=!cl||!cl[Tn]||!cl[Tn].findChild,hu=Fm&&Ch(function(){return js(Hn({},"a",{get:function(){return Hn(this,"a",{value:7}).a}})).a!=7})?function(s,t,e){var r=$m(Sr,t);r&&delete Sr[t],Hn(s,t,e),r&&s!==Sr&&Hn(Sr,t,r)}:Hn,If=function(s){var t=on[s]=js(Xt[Tn]);return t._k=s,t},du=Ki&&typeof Xt.iterator=="symbol"?function(s){return typeof s=="symbol"}:function(s){return s instanceof Xt},ic=function(t,e,r){return t===Sr&&ic(no,e,r),cu(t),e=Eh(e,!0),cu(r),Rt(on,e)?(r.enumerable?(Rt(t,Kt)&&t[Kt][e]&&(t[Kt][e]=!1),r=js(r,{enumerable:lu(0,!1)})):(Rt(t,Kt)||Hn(t,Kt,lu(1,{})),t[Kt][e]=!0),hu(t,e,r)):Hn(t,e,r)},Gm=function(t,e){cu(t);for(var r=T1(e=rc(e)),n=0,i=r.length,o;i>n;)ic(t,o=r[n++],e[o]);return t},R1=function(t,e){return e===void 0?js(t):Gm(js(t),e)},A1=function(t){var e=x1.call(this,t=Eh(t,!0));return this===Sr&&Rt(on,t)&&!Rt(no,t)?!1:e||!Rt(this,t)||!Rt(on,t)||Rt(this,Kt)&&this[Kt][t]?e:!0},Hm=function(t,e){if(t=rc(t),e=Eh(e,!0),!(t===Sr&&Rt(on,e)&&!Rt(no,e))){var r=$m(t,e);return r&&Rt(on,e)&&!(Rt(t,Kt)&&t[Kt][e])&&(r.enumerable=!0),r}},Qm=function(t){for(var e=Ym(rc(t)),r=[],n=0,i;e.length>n;)!Rt(on,i=e[n++])&&i!=Kt&&i!=v1&&r.push(i);return r},qm=function(t){for(var e=t===Sr,r=Ym(e?no:rc(t)),n=[],i=0,o;r.length>i;)Rt(on,o=r[i++])&&(!e||Rt(Sr,o))&&n.push(on[o]);return n};Ki||(Xt=function(){if(this instanceof Xt)throw TypeError("Symbol is not a constructor!");var t=M1(arguments.length>0?arguments[0]:void 0),e=function(r){this===Sr&&e.call(no,r),Rt(this,Kt)&&Rt(this[Kt],t)&&(this[Kt][t]=!1),hu(this,t,lu(1,r))};return Fm&&uu&&hu(Sr,t,{configurable:!0,set:e}),If(t)},y1(Xt[Tn],"toString",function(){return this._k}),Wm.f=Hm,Vm.f=ic,Th.f=Um.f=Qm,Zi.f=A1,nc.f=qm,w1.f=function(s){return If(ro(s))});Ut(Ut.G+Ut.W+Ut.F*!Ki,{Symbol:Xt});for(var bf="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Ef=0;bf.length>Ef;)ro(bf[Ef++]);for(var xf=E1(ro.store),Rf=0;xf.length>Rf;)S1(xf[Rf++]);Ut(Ut.S+Ut.F*!Ki,"Symbol",{for:function(s){return Rt(ss,s+="")?ss[s]:ss[s]=Xt(s)},keyFor:function(t){if(!du(t))throw TypeError(t+" is not a symbol!");for(var e in ss)if(ss[e]===t)return e},useSetter:function(){uu=!0},useSimple:function(){uu=!1}});Ut(Ut.S+Ut.F*!Ki,"Object",{create:R1,defineProperty:ic,defineProperties:Gm,getOwnPropertyDescriptor:Hm,getOwnPropertyNames:Qm,getOwnPropertySymbols:qm});var k1=Ch(function(){nc.f(1)});Ut(Ut.S+Ut.F*k1,"Object",{getOwnPropertySymbols:function(t){return nc.f(b1(t))}});va&&Ut(Ut.S+Ut.F*(!Ki||Ch(function(){var s=Xt();return bo([s])!="[null]"||bo({a:s})!="{}"||bo(Object(s))!="{}"})),"JSON",{stringify:function(t){for(var e=[t],r=1,n,i;arguments.length>r;)e.push(arguments[r++]);if(i=n=e[1],!(!I1(n)&&t===void 0||du(t)))return C1(n)||(n=function(o,a){if(typeof i=="function"&&(a=i.call(this,o,a)),!du(a))return a}),e[1]=n,bo.apply(va,e)}});Xt[Tn][Cf]||kn(Xt[Tn],Cf,Xt[Tn].valueOf);bh(Xt,"Symbol");bh(Math,"Math",!0);bh(tc.JSON,"JSON",!0);Sh("asyncIterator");Sh("observable");var P1=Pt.Symbol,Zm={default:P1,__esModule:!0},sc={};Object.defineProperty(sc,"__esModule",{value:!0});sc.createNowTime=D1;sc.formatDelay=L1;function D1(){var s=null;return Date.now?s=Date.now:s=function(){return new Date().getTime()},s}function L1(s){return typeof s=="number"?s={delay:s}:"entropy"in s&&(s={delay:s.entropy,isEntropy:!0}),s}Object.defineProperty(Ha,"__esModule",{value:!0});var N1=Ks,Af=ui(N1),O1=Ka,ll=ui(O1),z1=Nm,B1=ui(z1),j1=Mh,F1=ui(j1),U1=_a,W1=ui(U1),V1=ec,$1=ui(V1),Y1=Zm,li=ui(Y1),Km=sc;function ui(s){return s&&s.__esModule?s:{default:s}}var G1=(0,Km.createNowTime)(),H1={originTime:0,playbackRate:1},jr=(0,li.default)("timeMark"),ul=(0,li.default)("playbackRate"),Fr=(0,li.default)("timers"),Q1=(0,li.default)("originTime"),os=(0,li.default)("setTimer"),Ur=(0,li.default)("parent"),q1=function(){function s(t,e){(0,W1.default)(this,s),t instanceof s&&(e=t,t={}),t=(0,F1.default)({},H1,t),e&&(this[Ur]=e);var r=t.nowtime||G1;if(e)Object.defineProperty(this,"globalTime",{get:function(){return e.currentTime}});else{var n=r();Object.defineProperty(this,"globalTime",{get:function(){return r()-n}})}this[jr]=[{globalTime:this.globalTime,localTime:-t.originTime,entropy:-t.originTime,playbackRate:t.playbackRate,globalEntropy:0}],this[Ur]&&(this[jr][0].globalEntropy=this[Ur].entropy),this[Q1]=t.originTime,this[ul]=t.playbackRate,this[Fr]=new B1.default}return(0,$1.default)(s,[{key:"markTime",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=e.time,n=r===void 0?this.currentTime:r,i=e.entropy,o=i===void 0?this.entropy:i,a=e.playbackRate,c=a===void 0?this.playbackRate:a,l={globalTime:this.globalTime,localTime:n,entropy:o,playbackRate:c,globalEntropy:this.globalEntropy};this[jr].push(l)}},{key:"fork",value:function(e){return new s(e,this)}},{key:"seekGlobalTime",value:function(e){var r=this.seekTimeMark(e),n=this[jr][r],i=n.entropy,o=n.playbackRate,a=n.globalTime;return a+(e-i)/Math.abs(o)}},{key:"seekLocalTime",value:function(e){var r=this.seekTimeMark(e),n=this[jr][r],i=n.localTime,o=n.entropy,a=n.playbackRate;return a>0?i+(e-o):i-(e-o)}},{key:"seekTimeMark",value:function(e){var r=this[jr],n=0,i=r.length-1;if(e<=r[n].entropy)return n;if(e>=r[i].entropy)return i;for(var o=Math.floor((n+i)/2);o>n&&o<i;){if(e===r[o].entropy)return o;e<r[o].entropy?i=o:e>r[o].entropy&&(n=o),o=Math.floor((n+i)/2)}return n}},{key:"updateTimers",value:function(){var e=this,r=[].concat((0,ll.default)(this[Fr]));r.forEach(function(n){var i=(0,Af.default)(n,2),o=i[0],a=i[1];e[os](a.handler,a.time,o)})}},{key:"clearTimeout",value:function(t){function e(r){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){var e=this[Fr].get(t);e&&e.timerID!=null&&(this[Ur]?this[Ur].clearTimeout(e.timerID):clearTimeout(e.timerID)),this[Fr].delete(t)})},{key:"clearInterval",value:function(e){return this.clearTimeout(e)}},{key:"clear",value:function(){var e=this,r=this[Fr];[].concat((0,ll.default)(r.keys())).forEach(function(n){e.clearTimeout(n)})}},{key:"setTimeout",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0};return this[os](e,r)}},{key:"setInterval",value:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0},n=this,i=this[os](function o(){n[os](o,r,i),e()},r);return i}},{key:os,value:function(e,r){var n=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(0,li.default)("timerID");r=(0,Km.formatDelay)(r);var o=this[Fr].get(i),a=void 0,c=null,l=void 0,u=void 0;o?(this.clearTimeout(i),r.isEntropy?a=(r.delay-(this.entropy-o.startEntropy))/Math.abs(this.playbackRate):a=(r.delay-(this.currentTime-o.startTime))/this.playbackRate,l=o.startTime,u=o.startEntropy):(a=r.delay/(r.isEntropy?Math.abs(this.playbackRate):this.playbackRate),l=this.currentTime,u=this.entropy);var h=this[Ur],d=h?h.setTimeout.bind(h):setTimeout,f=r.heading;return!h&&f===!1&&a<0&&(a=1/0),(isFinite(a)||h)&&(a=Math.ceil(a),d!==setTimeout&&(a={delay:a,heading:f}),c=d(function(){n[Fr].delete(i),e()},a)),this[Fr].set(i,{timerID:c,handler:e,time:r,startTime:l,startEntropy:u}),i}},{key:"parent",get:function(){return this[Ur]}},{key:"lastTimeMark",get:function(){return this[jr][this[jr].length-1]}},{key:"currentTime",get:function(){var e=this.lastTimeMark,r=e.localTime,n=e.globalTime;return r+(this.globalTime-n)*this.playbackRate},set:function(e){var r=this,n=this.currentTime,i=e,o=this[Fr];this.markTime({time:e}),[].concat((0,ll.default)(o)).forEach(function(a){var c=(0,Af.default)(a,2),l=c[0],u=c[1];if(o.has(l)){var h=u.time,d=h.isEntropy,f=h.delay,g=h.heading,y=u.handler,T=u.startTime;if(d)f===0&&(y(),r.clearTimeout(l));else{var x=T+f;(f===0||g!==!1&&(i-n)*f<=0||n<=x&&x<=i||n>=x&&x>=i)&&(y(),r.clearTimeout(l))}}}),this.updateTimers()}},{key:"entropy",get:function(){var e=this.lastTimeMark,r=e.entropy,n=e.globalEntropy;return r+Math.abs((this.globalEntropy-n)*this.playbackRate)},set:function(e){if(this.entropy>e){var r=this.seekTimeMark(e);this[jr].length=r+1}this.markTime({entropy:e}),this.updateTimers()}},{key:"globalEntropy",get:function(){return this[Ur]?this[Ur].entropy:this.globalTime}},{key:"playbackRate",get:function(){return this[ul]},set:function(e){e!==this.playbackRate&&(this.markTime({playbackRate:e}),this[ul]=e,this.updateTimers())}},{key:"paused",get:function(){if(this.playbackRate===0)return!0;for(var e=this.parent;e;){if(e.playbackRate===0)return!0;e=e.parent}return!1}}]),s}();Ha.default=q1;var oc={};Object.defineProperty(oc,"__esModule",{value:!0});oc.default={default:function(t,e,r,n,i){return typeof t=="number"&&typeof e=="number"?t+(r-n)/(i-n)*(e-t):r-n>i-r?e:t}};var bn={},Z1=4,K1=.001,X1=1e-7,J1=10,Is=11,Eo=1/(Is-1),_1=typeof Float32Array=="function";function Xm(s,t){return 1-3*t+3*s}function Jm(s,t){return 3*t-6*s}function _m(s){return 3*s}function Ma(s,t,e){return((Xm(t,e)*s+Jm(t,e))*s+_m(t))*s}function ey(s,t,e){return 3*Xm(t,e)*s*s+2*Jm(t,e)*s+_m(t)}function eC(s,t,e,r,n){var i,o,a=0;do o=t+(e-t)/2,i=Ma(o,r,n)-s,i>0?e=o:t=o;while(Math.abs(i)>X1&&++a<J1);return o}function tC(s,t,e,r){for(var n=0;n<Z1;++n){var i=ey(t,e,r);if(i===0)return t;var o=Ma(t,e,r)-s;t-=o/i}return t}function rC(s){return s}var nC=function(t,e,r,n){if(!(0<=t&&t<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(t===e&&r===n)return rC;for(var i=_1?new Float32Array(Is):new Array(Is),o=0;o<Is;++o)i[o]=Ma(o*Eo,t,r);function a(c){for(var l=0,u=1,h=Is-1;u!==h&&i[u]<=c;++u)l+=Eo;--u;var d=(c-i[u])/(i[u+1]-i[u]),f=l+d*Eo,g=ey(f,t,r);return g>=K1?tC(c,f,t,r):g===0?f:eC(c,l,l+Eo,t,r)}return function(l){return l===0?0:l===1?1:Ma(a(l),e,n)}};Object.defineProperty(bn,"__esModule",{value:!0});bn.parseEasing=bn.Easings=void 0;var iC=Ks,sC=xh(iC),oC=Ka,ty=xh(oC),aC=Nm,cC=xh(aC);function xh(s){return s&&s.__esModule?s:{default:s}}var lC=nC,kf=new cC.default;function Pi(){for(var s=arguments.length,t=Array(s),e=0;e<s;e++)t[e]=arguments[e];var r=kf.get(t);return r||(r=lC.apply(void 0,t),kf.set(t,r),r)}function wa(s){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"end";return function(e,r){for(var n=1;n<r.length;n++){var i=r[n].offset;if(e<=i){var o=r[n-1].offset,a=i,c=(e-o)/(a-o),l=1/s,u=c/l;return t==="end"?u=Math.floor(u):u=Math.ceil(u),l*u*(a-o)+o}}return 0}}function uC(s){var t=/^cubic-bezier\((.*)\)/,e=s.match(t);if(e){var r=e[1].trim();return r=r.split(",").map(function(l){return parseFloat(l.trim())}),Pi.apply(void 0,(0,ty.default)(r))}if(t=/^steps\((.*)\)/,e=s.match(t),e){var n=e[1].trim();n=n.split(",").map(function(l){return l.trim()});var i=n,o=(0,sC.default)(i,2),a=o[0],c=o[1];return wa(parseInt(a,10),c)}return s}var fu={linear:function(t){return t},ease:Pi(.25,.1,.25,1),"ease-in":Pi(.42,0,1,1),"ease-out":Pi(0,0,.58,1),"ease-in-out":Pi(.42,0,.58,1),"step-start":wa(1,"start"),"step-end":wa(1,"end")};function hC(s){return typeof s=="string"?fu[s]?s=fu[s]:s=uC(s):s.type==="cubic-bezier"?s=Pi.apply(void 0,(0,ty.default)(s.value)):s.type==="steps"&&(s=wa(s.step,s.pos)),s}bn.Easings=fu;bn.parseEasing=hC;var Rh={},Pf=cn,dC=Js,fC=Yt("species"),ry=function(s,t){var e=Pf(s).constructor,r;return e===void 0||(r=Pf(e)[fC])==null?t:dC(r)},gC=function(s,t,e){var r=e===void 0;switch(t.length){case 0:return r?s():s.call(e);case 1:return r?s(t[0]):s.call(e,t[0]);case 2:return r?s(t[0],t[1]):s.call(e,t[0],t[1]);case 3:return r?s(t[0],t[1],t[2]):s.call(e,t[0],t[1],t[2]);case 4:return r?s(t[0],t[1],t[2],t[3]):s.call(e,t[0],t[1],t[2],t[3])}return s.apply(e,t)},xo=An,pC=gC,Df=Mm,Lf=sh,tn=Jt,Nf=tn.process,gu=tn.setImmediate,Of=tn.clearImmediate,zf=tn.MessageChannel,hl=tn.Dispatch,dl=0,Ds={},Bf="onreadystatechange",On,fl,gl,bs=function(){var s=+this;if(Ds.hasOwnProperty(s)){var t=Ds[s];delete Ds[s],t()}},jf=function(s){bs.call(s.data)};(!gu||!Of)&&(gu=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return Ds[++dl]=function(){pC(typeof t=="function"?t:Function(t),e)},On(dl),dl},Of=function(t){delete Ds[t]},Xs(Nf)=="process"?On=function(s){Nf.nextTick(xo(bs,s,1))}:hl&&hl.now?On=function(s){hl.now(xo(bs,s,1))}:zf?(fl=new zf,gl=fl.port2,fl.port1.onmessage=jf,On=xo(gl.postMessage,gl,1)):tn.addEventListener&&typeof postMessage=="function"&&!tn.importScripts?(On=function(s){tn.postMessage(s+"","*")},tn.addEventListener("message",jf,!1)):Bf in Lf("script")?On=function(s){Df.appendChild(Lf("script"))[Bf]=function(){Df.removeChild(this),bs.call(s)}}:On=function(s){setTimeout(xo(bs,s,1),0)});var ny={set:gu},ti=Jt,mC=ny.set,Ff=ti.MutationObserver||ti.WebKitMutationObserver,pu=ti.process,pl=ti.Promise,Uf=Xs(pu)=="process",yC=function(){var s,t,e,r=function(){var a,c;for(Uf&&(a=pu.domain)&&a.exit();s;){c=s.fn,s=s.next;try{c()}catch(l){throw s?e():t=void 0,l}}t=void 0,a&&a.enter()};if(Uf)e=function(){pu.nextTick(r)};else if(Ff&&!(ti.navigator&&ti.navigator.standalone)){var n=!0,i=document.createTextNode("");new Ff(r).observe(i,{characterData:!0}),e=function(){i.data=n=!n}}else if(pl&&pl.resolve){var o=pl.resolve(void 0);e=function(){o.then(r)}}else e=function(){mC.call(ti,r)};return function(a){var c={fn:a,next:void 0};t&&(t.next=c),s||(s=c,e()),t=c}},ac={},Wf=Js;function vC(s){var t,e;this.promise=new s(function(r,n){if(t!==void 0||e!==void 0)throw TypeError("Bad Promise constructor");t=r,e=n}),this.resolve=Wf(t),this.reject=Wf(e)}ac.f=function(s){return new vC(s)};var iy=function(s){try{return{e:!1,v:s()}}catch(t){return{e:!0,v:t}}},MC=Jt,Vf=MC.navigator,wC=Vf&&Vf.userAgent||"",SC=cn,TC=Nr,CC=ac,sy=function(s,t){if(SC(s),TC(t)&&t.constructor===s)return t;var e=CC.f(s),r=e.resolve;return r(t),e.promise},IC=$M,Cn=Jt,Di=An,bC=Za,ar=_t,EC=Nr,xC=Js,RC=ph,$f=to,AC=ry,oy=ny.set,ay=yC(),cy=ac,mu=iy,kC=wC,PC=sy,Pn="Promise",ly=Cn.TypeError,$i=Cn.process,Yf=$i&&$i.versions,DC=Yf&&Yf.v8||"",kr=Cn[Pn],Fs=bC($i)=="process",aa=function(){},Ro,uy,Gf,Ah,Us=uy=cy.f,cc=!!function(){try{var s=kr.resolve(1),t=(s.constructor={})[Yt("species")]=function(e){e(aa,aa)};return(Fs||typeof PromiseRejectionEvent=="function")&&s.then(aa)instanceof t&&DC.indexOf("6.6")!==0&&kC.indexOf("Chrome/66")===-1}catch{}}(),hy=function(s){var t;return EC(s)&&typeof(t=s.then)=="function"?t:!1},kh=function(s,t){if(!s._n){s._n=!0;var e=s._c;ay(function(){for(var r=s._v,n=s._s==1,i=0,o=function(a){var c=n?a.ok:a.fail,l=a.resolve,u=a.reject,h=a.domain,d,f,g;try{c?(n||(s._h==2&&NC(s),s._h=1),c===!0?d=r:(h&&h.enter(),d=c(r),h&&(h.exit(),g=!0)),d===a.promise?u(ly("Promise-chain cycle")):(f=hy(d))?f.call(d,l,u):l(d)):u(r)}catch(y){h&&!g&&h.exit(),u(y)}};e.length>i;)o(e[i++]);s._c=[],s._n=!1,t&&!s._h&&LC(s)})}},LC=function(s){oy.call(Cn,function(){var t=s._v,e=Hf(s),r,n,i;if(e&&(r=mu(function(){Fs?$i.emit("unhandledRejection",t,s):(n=Cn.onunhandledrejection)?n({promise:s,reason:t}):(i=Cn.console)&&i.error&&i.error("Unhandled promise rejection",t)}),s._h=Fs||Hf(s)?2:1),s._a=void 0,e&&r.e)throw r.v})},Hf=function(s){return s._h!==1&&(s._a||s._c).length===0},NC=function(s){oy.call(Cn,function(){var t;Fs?$i.emit("rejectionHandled",s):(t=Cn.onrejectionhandled)&&t({promise:s,reason:s._v})})},Ui=function(s){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=s,t._s=2,t._a||(t._a=t._c.slice()),kh(t,!0))},yu=function(s){var t=this,e;if(!t._d){t._d=!0,t=t._w||t;try{if(t===s)throw ly("Promise can't be resolved itself");(e=hy(s))?ay(function(){var r={_w:t,_d:!1};try{e.call(s,Di(yu,r,1),Di(Ui,r,1))}catch(n){Ui.call(r,n)}}):(t._v=s,t._s=1,kh(t,!1))}catch(r){Ui.call({_w:t,_d:!1},r)}}};cc||(kr=function(t){RC(this,kr,Pn,"_h"),xC(t),Ro.call(this);try{t(Di(yu,this,1),Di(Ui,this,1))}catch(e){Ui.call(this,e)}},Ro=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},Ro.prototype=gh(kr.prototype,{then:function(t,e){var r=Us(AC(this,kr));return r.ok=typeof t=="function"?t:!0,r.fail=typeof e=="function"&&e,r.domain=Fs?$i.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&kh(this,!1),r.promise},catch:function(s){return this.then(void 0,s)}}),Gf=function(){var s=new Ro;this.promise=s,this.resolve=Di(yu,s,1),this.reject=Di(Ui,s,1)},cy.f=Us=function(s){return s===kr||s===Ah?new Gf(s):uy(s)});ar(ar.G+ar.W+ar.F*!cc,{Promise:kr});eo(kr,Pn);Rm(Pn);Ah=Pt[Pn];ar(ar.S+ar.F*!cc,Pn,{reject:function(t){var e=Us(this),r=e.reject;return r(t),e.promise}});ar(ar.S+ar.F*IC,Pn,{resolve:function(t){return PC(this===Ah?kr:this,t)}});ar(ar.S+ar.F*!(cc&&bm()(function(s){kr.all(s).catch(aa)})),Pn,{all:function(t){var e=this,r=Us(e),n=r.resolve,i=r.reject,o=mu(function(){var a=[],c=0,l=1;$f(t,!1,function(u){var h=c++,d=!1;a.push(void 0),l++,e.resolve(u).then(function(f){d||(d=!0,a[h]=f,--l||n(a))},i)}),--l||n(a)});return o.e&&i(o.v),r.promise},race:function(t){var e=this,r=Us(e),n=r.reject,i=mu(function(){$f(t,!1,function(o){e.resolve(o).then(r.resolve,n)})});return i.e&&n(i.v),r.promise}});var ml=_t,OC=Pt,zC=Jt,BC=ry,Qf=sy;ml(ml.P+ml.R,"Promise",{finally:function(s){var t=BC(this,OC.Promise||zC.Promise),e=typeof s=="function";return this.then(e?function(r){return Qf(t,s()).then(function(){return r})}:s,e?function(r){return Qf(t,s()).then(function(){throw r})}:s)}});var qf=_t,jC=ac,FC=iy;qf(qf.S,"Promise",{try:function(s){var t=jC.f(this),e=FC(s);return(e.e?t.reject:t.resolve)(e.v),t.promise}});var UC=Pt.Promise,dy={default:UC,__esModule:!0},yl=_t,WC=Pt,VC=ai,$C=function(s,t){var e=(WC.Object||{})[s]||Object[s],r={};r[s]=t(e),yl(yl.S+yl.F*VC(function(){e(1)}),"Object",r)},YC=qi,GC=Qi;$C("keys",function(){return function(t){return GC(YC(t))}});var HC=Pt.Object.keys,QC={default:HC,__esModule:!0},hi={},qC=fr,ZC=Qi,KC=oi,XC=Zi.f,JC=function(s){return function(t){for(var e=KC(t),r=ZC(e),n=r.length,i=0,o=[],a;n>i;)a=r[i++],(!qC||XC.call(e,a))&&o.push(s?[a,e[a]]:e[a]);return o}},Zf=_t,_C=JC(!0);Zf(Zf.S,"Object",{entries:function(t){return _C(t)}});var eI=Pt.Object.entries,tI={default:eI,__esModule:!0};Object.defineProperty(hi,"__esModule",{value:!0});var rI=Ks,nI=io(rI),iI=tI,sI=io(iI),oI=Mh,fy=io(oI),aI=dy,cI=io(aI);hi.defer=dI;hi.periodicity=fI;hi.calculateFramesOffset=gI;hi.getProgress=pI;hi.getCurrentFrame=yI;var lI=bn,uI=oc,hI=io(uI);function io(s){return s&&s.__esModule?s:{default:s}}function dI(){var s={};return s.promise=new cI.default(function(t,e){s.resolve=t,s.reject=e}),s}function fI(s,t){var e=Math.floor(s/t),r=s-e*t;return r===0&&e>0&&(r=t,e--),[e,r]}function gI(s){s=s.slice(0);var t=s[0],e=s[s.length-1];e.offset=e.offset||1,t.offset=t.offset||0;for(var r=0,n=-1,i=0;i<s.length;i++){var o=s[i];if(o.offset!=null){var a=i-n;if(a>1)for(var c=(o.offset-r)/a,l=0;l<a-1;l++)s[n+l+1].offset=r+c*(l+1);r=o.offset,n=i}if(o.easing!=null&&(o.easing=(0,lI.parseEasing)(o.easing)),i>0){var u=s[i].easing!=null;s[i]=(0,fy.default)({},s[i-1],s[i]),u||delete s[i].easing}}return s}function pI(s,t,e){var r=s.currentTime,n=t.direction,i=t.duration,o=!1;if(n==="reverse")e=1-e,o=!0;else if(n==="alternate"||n==="alternate-reverse"){var a=Math.floor(r/i);e===1&&a--,a%2^n==="alternate-reverse"&&(e=1-e,o=!0)}return{p:e,inverted:o}}function mI(s,t,e,r){var n={};return(0,sI.default)(t).forEach(function(i){var o=(0,nI.default)(i,2),a=o[0],c=o[1];if(a!=="offset"&&a!=="easing"){var l=e[a]||e.default,u=l(s[a],c,r,s.offset,t.offset);u!=null&&(n[a]=u)}}),n}function yI(s,t,e,r){var n=s.easing,i=s.effect;i||(e=(0,fy.default)({},hI.default,e));var o={};r=n(r,t);for(var a=1;a<t.length;a++){var c=t[a],l=c.offset;if(l>=r||a===t.length-1){var u=t[a-1],h=u.offset,d=u.easing,f=r;if(d){var g=l-h;f=d((r-h)/g)*g+h}i?o=i(u,c,f,h,l):o=mI(u,c,e,f);break}}return o}Object.defineProperty(Rh,"__esModule",{value:!0});var vI=dy,vl=di(vI),MI=QC,wI=di(MI),SI=Mh,as=di(SI),TI=_a,CI=di(TI),II=ec,bI=di(II),EI=Zm,ln=di(EI),xI=Ha,RI=di(xI),un=hi,AI=bn;function di(s){return s&&s.__esModule?s:{default:s}}var jt=(0,ln.default)("timing"),Wr=(0,ln.default)("keyframes"),cs=(0,ln.default)("initState"),Dt=(0,ln.default)("readyDefer"),er=(0,ln.default)("finishedDefer"),Ao=(0,ln.default)("effects"),ko=(0,ln.default)("activeReadyTimer"),Ml=(0,ln.default)("activeFinishTimer"),Vr=(0,ln.default)("removeDefer"),kI={delay:0,endDelay:0,fill:"auto",iterations:1,playbackRate:1,direction:"normal",easing:"linear",effect:null},PI=function(){function s(t,e,r){var n=this;if((0,CI.default)(this,s),Array.isArray(t)){var i=[t[0],t,e];t=i[0],e=i[1],r=i[2]}typeof r=="number"&&(r={duration:r}),this[jt]=(0,as.default)({},kI,r),this[jt].easing=(0,AI.parseEasing)(this[jt].easing),this[Wr]=(0,un.calculateFramesOffset)(e);var o=this[Wr][this[Wr].length-1];this[cs]={},(0,wI.default)(o).forEach(function(a){Object.prototype.hasOwnProperty.call(t,a)&&a!=="easing"&&a!=="offset"&&(n[cs][a]=t[a])}),this[Wr]=this[Wr].map(function(a){return(0,as.default)({},n[cs],a)}),this[Wr][0].offset!==0&&this[Wr].unshift((0,as.default)({},this[cs],{offset:0})),o.offset<1&&this[Wr].push((0,as.default)({},o,{offset:1})),this[Ao]={},this.timeline=null}return(0,bI.default)(s,[{key:"pause",value:function(){this.timeline.playbackRate=0}},{key:ko,value:function(){var e=this;this[Dt]&&!this[Dt].timerID&&(this.timeline.currentTime<0?this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:-this.timeline.currentTime,heading:!1}):this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:0,isEntropy:!0}))}},{key:Ml,value:function(){var e=this,r=this[jt],n=r.duration,i=r.iterations,o=r.endDelay,a=Math.ceil(n*i+o-this.timeline.currentTime)+1;this[er]&&!this[er].timerID&&(this[er].timerID=this.timeline.setTimeout(function(){e[er].resolve(),e[Vr](Dt),e[Vr](er)},{delay:a,heading:!1}),this[er].reverseTimerID=this.timeline.setTimeout(function(){e[er].resolve(),e[Vr](Dt),e[Vr](er),e.timeline=null},{delay:-this[jt].delay-1,heading:!1}))}},{key:"play",value:function(){if(this.playState==="finished"&&this.cancel(),this.playState==="idle"){if(this.playbackRate<=0)return;var e=this[jt],r=e.delay,n=e.playbackRate,i=e.timeline;this.timeline=new RI.default({originTime:r,playbackRate:n},i),this[ko](),this[Ml]()}else this.playState==="paused"&&(this.timeline.playbackRate=this.playbackRate,this[ko]())}},{key:Vr,value:function(e){var r=this[e],n=this.timeline;r&&n&&(n.clearTimeout(r.timerID),r.reverseTimerID&&n.clearTimeout(r.reverseTimerID)),delete this[e]}},{key:"cancel",value:function(){this[Vr](Dt),this[Vr](er),this.timeline=null}},{key:"finish",value:function(){this.timeline&&(this.timeline.currentTime=1/0/this.playbackRate),this[Vr](Dt),this[Vr](er)}},{key:"applyEffects",value:function(e){return(0,as.default)(this[Ao],e)}},{key:"playbackRate",get:function(){return this[jt].playbackRate},set:function(e){this.timeline&&(this.timeline.playbackRate=e),this[jt].playbackRate=e}},{key:"playState",get:function(){var e=this.timeline,r=this[jt],n=r.iterations,i=r.duration,o=r.endDelay,a="running";if(e==null)a="idle";else if(e.paused)a="paused";else if(e.currentTime<0)a="pending";else{var c=e.currentTime-n*i;c>0&&c<o?a="pending":c>=o&&(a="finished")}return a}},{key:"progress",get:function(){if(!this.timeline)return 0;var e=this[jt],r=e.duration,n=e.iterations,i=this.timeline,o=this.playState,a=void 0;if(o==="idle")a=0;else if(o==="paused"&&i.currentTime<0)a=0;else if(o==="pending")if(i.currentTime<0)a=0;else{var c=i.seekLocalTime(n*r);a=(0,un.periodicity)(c,r)[1]/r}else(o==="running"||o==="paused")&&(a=(0,un.periodicity)(i.currentTime,r)[1]/r);return o==="finished"&&(a=(0,un.periodicity)(n,1)[1]),a}},{key:"frame",get:function(){var e=this.playState,r=this[cs],n=this[jt].fill;if(e==="idle")return r;var i=this.timeline.currentTime,o=this[Wr].slice(0),a=(0,un.getProgress)(this.timeline,this[jt],this.progress),c=a.p,l=a.inverted,u=r;return i<0&&e==="pending"?(n==="backwards"||n==="both")&&(u=l?o[o.length-1]:o[0]):(e!=="pending"&&e!=="finished"||n==="forwards"||n==="both")&&(u=(0,un.getCurrentFrame)(this[jt],o,this[Ao],c)),u}},{key:"timing",get:function(){return this[jt]}},{key:"effects",get:function(){return this[Ao]}},{key:"baseTimeline",set:function(e){this[jt].timeline=e},get:function(){return this[jt].timeline}},{key:"ready",get:function(){return this[Dt]?this[Dt].promise:this.timeline&&this.timeline.currentTime>=0&&this.playState!=="paused"?vl.default.resolve():(this[Dt]=(0,un.defer)(),this.timeline&&this[ko](),this[Dt]?this[Dt].promise:vl.default.resolve())}},{key:"finished",get:function(){return this.playState==="finished"?vl.default.resolve():(this[er]||(this[er]=(0,un.defer)(),this.timeline&&this[Ml]()),this[er].promise)}}]),s}();Rh.default=PI;Object.defineProperty(en,"__esModule",{value:!0});var gy=en.Timeline=Cr=en.Effects=en.Easings=py=en.Animator=void 0,DI=Ha,LI=Ph(DI),NI=oc,OI=Ph(NI),zI=bn,BI=Rh,jI=Ph(BI);function Ph(s){return s&&s.__esModule?s:{default:s}}var py=en.Animator=jI.default;en.Easings=zI.Easings;var Cr=en.Effects=OI.default;gy=en.Timeline=LI.default;var FI={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};const Kf=an(FI);var Xf={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function UI(s){var t,e=[],r=1,n;if(typeof s=="string")if(s=s.toLowerCase(),Kf[s])e=Kf[s].slice(),n="rgb";else if(s==="transparent")r=0,n="rgb",e=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(s)){var i=s.slice(1),o=i.length,a=o<=4;r=1,a?(e=[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16)],o===4&&(r=parseInt(i[3]+i[3],16)/255)):(e=[parseInt(i[0]+i[1],16),parseInt(i[2]+i[3],16),parseInt(i[4]+i[5],16)],o===8&&(r=parseInt(i[6]+i[7],16)/255)),e[0]||(e[0]=0),e[1]||(e[1]=0),e[2]||(e[2]=0),n="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(s)){var c=t[1],l=c==="rgb",i=c.replace(/a$/,"");n=i;var o=i==="cmyk"?4:i==="gray"?1:3;e=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(d,f){if(/%$/.test(d))return f===o?parseFloat(d)/100:i==="rgb"?parseFloat(d)*255/100:parseFloat(d);if(i[f]==="h"){if(/deg$/.test(d))return parseFloat(d);if(Xf[d]!==void 0)return Xf[d]}return parseFloat(d)}),c===i&&e.push(1),r=l||e[o]===void 0?1:e[o],e=e.slice(0,o)}else s.length>10&&/[0-9](?:\s|\/)/.test(s)&&(e=s.match(/([0-9]+)/g).map(function(u){return parseFloat(u)}),n=s.match(/([a-z])/ig).join("").toLowerCase());else isNaN(s)?Array.isArray(s)||s.length?(e=[s[0],s[1],s[2]],n="rgb",r=s.length===4?s[3]:1):s instanceof Object&&(s.r!=null||s.red!=null||s.R!=null?(n="rgb",e=[s.r||s.red||s.R||0,s.g||s.green||s.G||0,s.b||s.blue||s.B||0]):(n="hsl",e=[s.h||s.hue||s.H||0,s.s||s.saturation||s.S||0,s.l||s.lightness||s.L||s.b||s.brightness]),r=s.a||s.alpha||s.opacity||1,s.opacity!=null&&(r/=100)):(n="rgb",e=[s>>>16,(s&65280)>>>8,s&255]);return{space:n,values:e,alpha:r}}const vu={min:[0,0,0],max:[255,255,255]};var wl={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(s){var t=s[0]/360,e=s[1]/100,r=s[2]/100,n,i,o,a,c,l=0;if(e===0)return c=r*255,[c,c,c];for(i=r<.5?r*(1+e):r+e-r*e,n=2*r-i,a=[0,0,0];l<3;)o=t+1/3*-(l-1),o<0?o++:o>1&&o--,c=6*o<1?n+(i-n)*6*o:2*o<1?i:3*o<2?n+(i-n)*(2/3-o)*6:n,a[l++]=c*255;return a}};vu.hsl=function(s){var t=s[0]/255,e=s[1]/255,r=s[2]/255,n=Math.min(t,e,r),i=Math.max(t,e,r),o=i-n,a,c,l;return i===n?a=0:t===i?a=(e-r)/o:e===i?a=2+(r-t)/o:r===i&&(a=4+(t-e)/o),a=Math.min(a*60,360),a<0&&(a+=360),l=(n+i)/2,i===n?c=0:l<=.5?c=o/(i+n):c=o/(2-i-n),[a,c*100,l*100]};function Mu(s){Array.isArray(s)&&s.raw&&(s=String.raw(...arguments));var t,e=UI(s);if(!e.space)return[];const r=e.space[0]==="h"?wl.min:vu.min,n=e.space[0]==="h"?wl.max:vu.max;return t=Array(3),t[0]=Math.min(Math.max(e.values[0],r[0]),n[0]),t[1]=Math.min(Math.max(e.values[1],r[1]),n[1]),t[2]=Math.min(Math.max(e.values[2],r[2]),n[2]),e.space[0]==="h"&&(t=wl.rgb(t)),t.push(Math.min(Math.max(e.alpha,0),1)),t}Ze(Array);function WI(){if(typeof performance<"u"&&performance.now)return performance.now();if(typeof process<"u"&&process.hrtime){const[s,t]=process.hrtime();return s*1e3+t*1e-6}return Date.now?Date.now():new Date().getTime()}let rn,ri;typeof global<"u"&&typeof global.requestAnimationFrame=="function"?(rn=global.requestAnimationFrame,ri=global.cancelAnimationFrame):(rn=function(s){return setTimeout(()=>{s(WI())},16)},ri=function(s){return clearTimeout(s)});Ze(Array);function Jf(s){if(typeof s=="string"){if(s=s.trim(),/^[0-9.]+%$/.test(s))return parseFloat(s)/100;if(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/.test(s))return th(s)}return s}function lc(s,t,e,r,n){return typeof s=="string"&&(s=Mu(s)),typeof t=="string"&&(t=Mu(t)),Cr.default(s,t,e,r,n)}function VI(s,t,e,r,n){return Cr.default(s,t,e,r,n)}Cr.default=function(s,t,e,r,n){return Array.isArray(s)&&Array.isArray(t)?s.map((i,o)=>i+(e-r)/(n-r)*(t[o]-i)):typeof s=="number"&&typeof t=="number"?s+(e-r)/(n-r)*(t-s):e-r>n-e?t:s};Cr.fillColor=lc;Cr.strokeColor=lc;Cr.bgcolor=lc;Cr.borderColor=lc;Cr.text=VI;class $I extends py{constructor(t,e,r){const n=t.attr();Object.entries(n).forEach(([i,o])=>{n[i]=Cr[i]?o:Jf(o)}),e=e.map(({...i})=>{const o={};return Object.entries(i).forEach(([a,c])=>{o[a]=Cr[a]?c:Jf(c)}),o}),super(n,e,r),this.target=t,this.setter=function(i,o){o.attr(i)}}get playState(){return this.target.parent?super.playState:"idle"}get finished(){return super.finished.then(()=>{const t=this;return new Promise(e=>{function r(){t.setter(t.frame,t.target);const n=t.playState;n==="finished"||n==="idle"?(ri(t.requestId),e()):rn(r)}r()})})}finish(){super.finish(),ri(this.requestId),this.setter(this.frame,this.target)}play(){if(!this.target.parent||this.playState==="running")return;super.play(),this.setter(this.frame,this.target);const t=this;this.ready.then(()=>{t.setter(t.frame,t.target),t.requestId=rn(function e(){const r=t.target;if(typeof document<"u"&&document.documentElement&&document.documentElement.contains&&r.layer&&r.layer.canvas&&!document.documentElement.contains(r.layer.canvas)){t.cancel();return}const n=t.playState;t.setter(t.frame,t.target),n!=="idle"&&(n==="running"?t.requestId=rn(e):(n==="paused"||n==="pending"&&t.timeline.currentTime<0)&&t.ready.then(()=>{t.setter(t.frame,t.target),t.requestId=rn(e)}))})})}cancel(t=!1){ri(this.requestId),t?(this.setter(this.frame,this.target),super.cancel()):(super.cancel(),this.setter(this.frame,this.target))}}Ze(Array);const ca=new Map;function _f(s,t={},e=[]){s=s.toLowerCase();const r=ca.get(s);if(!r)throw new TypeError(`Invalid node: ${s}`);const n=new r(t);return e.forEach(i=>{n.appendChild(i)}),n}const Gt={registerNode(s,t,e=100){if(t=t.toLowerCase(),ca.has(t))throw new TypeError(`Cannot registerNode, ${t} has been taken.`);ca.set(t,s),Object.defineProperties(s.prototype,{nodeType:{value:e},tagName:{value:t.toUpperCase()},nodeName:{value:t},ownerDocument:{value:Gt},namespaceURI:{value:`http://spritejs.com/${t}`}})},createElement:_f,createElementNS(s,t){return _f(t)},isSpriteNode(s){return ca.has(s.toLowerCase())}};Ze(Array);const Po=Symbol("type"),Sl=Symbol("bubbles"),Tl=Symbol("originalEvent"),eg=Symbol("detail");class ni{constructor(t,{bubbles:e=null}={}){if(typeof t=="string"?(this[Po]=t,this[Sl]=!!e):(this[Po]=t.type,this[Tl]=t,this[Sl]=e!=null?!!e:!!t.bubbles,t.detail&&(this[eg]=t.detail)),!this[Po])throw new TypeError("Invalid event type.");this.cancelBubble=!1}setOriginalEvent(t){this[Tl]=t}get originalEvent(){return this[Tl]}get type(){return this[Po]}get bubbles(){return this[Sl]}get detail(){return this[eg]}stopPropagation(){this.cancelBubble=!0}}Ze(Array);function YI(s){if(s=s.trim(),!s||s==="none")return null;const t=/^(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+$/i,e=s.match(/(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+?/ig),r=[];return e&&e.forEach(n=>{const i=n.match(t);if(!i)throw new TypeError("Invalid fitler string.");let[,o,a]=i;o=o.toLowerCase(),a=a.trim().match(/([^( )]+|([^( )]+\(.*\)))(?=\s|$)/g).map((c,l)=>{let u;return o==="url"||o==="drop-shadow"&&l===3?u=c:u=qe(c),/%$/.test(c)&&(u/=100),u}),r.push({type:o,args:a})}),r}function GI(s,t){s.clearFilter(),t&&t.forEach(({type:e,args:r})=>{let n=e;n==="drop-shadow"?n="dropShadow":n==="hue-rotate"&&(n="hueRotate"),s[n](...r)})}Ze(Array);function HI(s,t){if(!t)return;const e=s.getListeners("beforerender"),r=s.getListeners("afterrender");e.length&&!t.beforeRender?t.beforeRender=n=>{s.dispatchEvent({type:"beforerender",detail:{context:n}})}:e.length||(t.beforeRender=null),r.length&&!t.afterRender?t.afterRender=n=>{s.dispatchEvent({type:"afterrender",detail:{context:n}})}:r.length||(t.afterRender=null)}Ze(Array);const QI=Symbol.for("spritejs_changedAttrs"),qI=Symbol.for("spritejs_attributes"),Do=Symbol("resolution"),Si=Symbol("animations"),zn=Symbol("eventListeners"),Bn=Symbol("captureEventListeners"),tg=Symbol("filters"),rg=Symbol("display"),Lo=Symbol("program"),ls=Symbol("shaderAttrs"),Ti=Symbol("uniforms"),No=Symbol("mask");var Zl;let uc=(Zl=class{constructor(t={}){this.attributes=new this.constructor.Attr(this),this[Do]={width:300,height:150},Object.assign(this.attributes,t),this[Si]=new Set,this[zn]={},this[Bn]={}}get ancestors(){let t=this.parent;const e=[];for(;t;)e.push(t),t=t.parent;return e}get animations(){return this[Si]}get filters(){return this[tg]||this.parent&&this.parent.filters}get isVisible(){return!1}get layer(){return this.parent?this.parent.layer:null}get localMatrix(){const t=this.transformMatrix,{x:e,y:r}=this.attributes;return t[4]+=e,t[5]+=r,t}get opacity(){let t=this.attributes.opacity;return this.parent&&this.parent.opacity!=null&&(t*=this.parent.opacity),t}get mask(){return this[No]?{...this[No],owner:this}:this.parent&&this.parent.mask}get parentNode(){return this.parent}get nextSibling(){return this.getNodeNearBy(1)}get previousSibling(){return this.getNodeNearBy(-1)}get program(){return this[Lo]}get renderer(){return this.parent?this.parent.renderer:null}get renderMatrix(){if(this.__cacheRenderMatrix)return this.__cacheRenderMatrix;let t=this.localMatrix;const e=this.parent;if(e){const r=e.__cacheRenderMatrix||e.renderMatrix;r&&(t=Lr(Array.of(0,0,0,0,0,0),r,t))}return t}get worldScaling(){const t=this.renderMatrix;return[Math.hypot(t[0],t[1]),Math.hypot(t[2],t[3])]}get worldRotation(){const t=this.renderMatrix;return Math.atan2(t[1],t[3])}get worldPosition(){const t=this.renderMatrix;return[t[4],t[5]]}get uniforms(){return this[Ti]}get className(){return this.attributes.className}set className(t){this.attributes.className=t}get id(){return this.attributes.id}set id(t){this.attributes.id=t}get name(){return this.attributes.name}set name(t){this.attributes.name=t}get zIndex(){return this.attributes.zIndex}set zIndex(t){this.attributes.zIndex=t}get mesh(){return null}get shaderAttrs(){return this[ls]||{}}activateAnimations(){const t=this.layer;if(t){const e=this[Si];e.forEach(n=>{n.baseTimeline=t.timeline,n.play(),n.finished.then(()=>{e.delete(n)})});const r=this.children;r&&r.forEach(n=>{n.activateAnimations&&n.activateAnimations()})}}addEventListener(t,e,r={}){t==="mousewheel"&&(t="wheel"),typeof r=="boolean"&&(r={capture:r});const{capture:n,once:i}=r,o=n?Bn:zn;return this[o][t]=this[o][t]||[],this[o][t].push({listener:e,once:i}),this}animate(t,e){const r=new $I(this,t,e);return this.effects&&r.applyEffects(this.effects),this.layer&&(r.baseTimeline=this.layer.timeline,r.play(),r.finished.then(()=>{this[Si].delete(r)})),this[Si].add(r),r}attr(...t){if(t.length===0)return this.attributes[qI];if(t.length>1){let[e,r]=t;return typeof r=="function"&&(r=r(this.attr(e))),this.setAttribute(e,r),this}return typeof t[0]=="string"?this.getAttribute(t[0]):(Object.assign(this.attributes,t[0]),this)}cloneNode(){const t=new this.constructor,e=this.attributes[QI];return t.attr(e),t}connect(t,e){Object.defineProperty(this,"parent",{value:t,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:e,writable:!1,configurable:!0}),t.timeline&&this.activateAnimations(),this.setResolution(t.getResolution()),this.forceUpdate(),this.dispatchEvent({type:"append",detail:{parent:t,zOrder:e}})}contains(t){for(;t&&this!==t;)t=t.parent;return!!t}deactivateAnimations(){this[Si].forEach(e=>e.cancel());const t=this.children;t&&t.forEach(e=>{e.deactivateAnimations&&e.deactivateAnimations()})}disconnect(){const{parent:t,zOrder:e}=this;delete this.parent,delete this.zOrder,this.deactivateAnimations(),this.dispatchEvent({type:"remove",detail:{parent:t,zOrder:e}}),t&&t.forceUpdate()}dispatchEvent(t){t instanceof ni||(t=new ni(t)),t.target=this;let e=t.type;e==="mousewheel"&&(e="wheel");const r=[this];let n=this.parent;for(;t.bubbles&&n;)r.push(n),n=n.parent;for(let i=r.length-1;i>=0;i--){const o=r[i],a=o[Bn]&&o[Bn][e];if(a&&a.length&&(t.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,t),l&&r.removeEventListener(c)}),delete t.currentTarget),!t.bubbles&&t.cancelBubble)break}if(!t.cancelBubble)for(let i=0;i<r.length;i++){const o=r[i],a=o[zn]&&o[zn][e];if(a&&a.length&&(t.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,t),l&&r.removeEventListener(c)}),delete t.currentTarget),!t.bubbles||t.cancelBubble)break}}dispatchPointerEvent(t){const{layerX:e,layerY:r}=t;return this.isPointCollision(e,r)?(this.dispatchEvent(t),!0):!1}draw(t=[]){const e=this.mesh;if(e){if(GI(e,this.filters),this._applyMask(e),t.push(e),this[Lo]){e.setProgram(this[Lo]);const r=this[ls];r&&Object.entries(r).forEach(([i,o])=>{e.setAttribute(i,o)});const n=this[Ti];if(this[Ti]){const i={};Object.entries(n).forEach(([o,a])=>{typeof a=="function"&&(a=a(this,o)),i[o]=a}),e.setUniforms(i)}}HI(this,e)}return t}forceUpdate(){this.parent&&this.parent.forceUpdate()}getAttribute(t){return this.attributes[t]}getListeners(t,{capture:e=!1}={}){return[...this[e?Bn:zn][t]||[]]}getNodeNearBy(t=1){if(!this.parent)return null;if(t===0)return this;const e=this.parent.children,r=e.indexOf(this);return e[r+t]}getWorldPosition(t,e){const r=this.renderMatrix,n=t*r[0]+e*r[2]+r[4],i=t*r[1]+e*r[3]+r[5];return[n,i]}getOffsetPosition(t,e){const r=ya(Array.of(0,0,0,0,0,0),this.renderMatrix),n=t*r[0]+e*r[2]+r[4],i=t*r[1]+e*r[3]+r[5];return[n,i]}getResolution(){return{...this[Do]}}isPointCollision(t,e){if(!this.mesh)return!1;const r=this.attributes.pointerEvents;if(r==="none"||r!=="all"&&!this.isVisible)return!1;let n="both";return r==="visibleFill"&&(n="fill"),r==="visibleStroke"&&(n="stroke"),this.mesh.isPointCollision(t,e,n)}onPropertyChange(t,e,r){t!=="id"&&t!=="name"&&t!=="className"&&t!=="pointerEvents"&&t!=="passEvents"&&this.forceUpdate(),t==="filter"&&(this[tg]=YI(e)),t==="zIndex"&&this.parent&&this.parent.reorder()}setAttribute(t,e){t==="attrs"&&this.attr(e),this.attributes[t]=e}setMouseCapture(){this.layer&&(this.layer.__mouseCapturedTarget=this)}setMask(t,e={}){return t?(this[No]={handle:t,rect:e.rect||t.rect},this.forceUpdate(),this):this.clearMask()}clearMask(){return this[No]=null,this.forceUpdate(),this}_applyMask(t){const e=this.mask,r=this.renderer;if(!e||!r||!r.glRenderer||this.attributes.clipPath){if(t.__spriteMaskApplied){t.setUniforms({u_clipSampler:null});const u=t.meshData;u.attributes&&delete u.attributes.a_clipUV,t.blend=t.__spriteMaskBlend,delete t.__spriteMaskBlend,t.__spriteMaskApplied=!1}return}const n=e.handle.getTexture(r),i=e.rect;if(!n||!i||i[2]<=0||i[3]<=0)return;const o=ya(Array.of(0,0,0,0,0,0),e.owner.renderMatrix);if(!o)return;const a=Lr(Array.of(0,0,0,0,0,0),o,this.renderMatrix);t.setUniforms({u_clipSampler:n});const c=t.meshData,l=c.position0||c.positions;c.attributes=c.attributes||{},c.attributes.a_clipUV=l.map(([u,h])=>{const d=u*a[0]+h*a[2]+a[4],f=u*a[1]+h*a[3]+a[5];return[(d-i[0])/i[2],1-(f-i[1])/i[3]]}),t.__spriteMaskApplied||(t.__spriteMaskBlend=t.blend),t.blend=!0,t.__spriteMaskApplied=!0}setProgram(t){this[Lo]=t,this.forceUpdate()}setShaderAttribute(t,e){this[ls]=this[ls]||{},this[ls][t]=e,this.forceUpdate()}setUniforms(t){this[Ti]=this[Ti]||{},Object.assign(this[Ti],t),this.forceUpdate()}setResolution({width:t,height:e}){const{width:r,height:n}=this[Do];(r!==t||n!==e)&&(this[Do]={width:t,height:e},this.forceUpdate(),this.dispatchEvent({type:"resolutionchange",detail:{width:t,height:e}}))}show(){this.attributes.display==="none"&&(this.attributes.display=this[rg]||"")}hide(){this.attributes.display!=="none"&&(this[rg]=this.attributes.display,this.attributes.display="none")}releaseMouseCapture(){this.layer&&this.layer.__mouseCapturedTarget===this&&(this.layer.__mouseCapturedTarget=null)}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}removeAllListeners(t,e={}){typeof e=="boolean"&&(e={capture:e});const n=e.capture?Bn:zn;return this[n][t]&&(this[n][t]=[]),this}removeAttribute(t){this.setAttribute(t,null)}removeEventListener(t,e,r={}){typeof r=="boolean"&&(r={capture:r});const i=r.capture?Bn:zn;if(this[i][t]){const o=this[i][t];if(o)for(let a=0;a<o.length;a++){const{listener:c}=o[a];if(c===e){this[i][t].splice(a,1);break}}}return this}transition(t,e="linear"){const r=this,n=Symbol("animation");e=e||"linear";let i=0;return typeof t=="object"&&(i=t.delay||0,t=t.duration),{[n]:null,cancel(o=!1){const a=this[n];a&&a.cancel(o)},end(){const o=this[n];o&&(o.playState==="running"||o.playState==="pending")&&o.finish()},reverse(){const o=this[n];if(o)if(o.playState==="running"||o.playState==="pending")o.playbackRate=-o.playbackRate;else{const a=o.timing.direction;o.timing.direction=a==="reverse"?"normal":"reverse",o.play()}return o.finished},attr(o,a){return this.end(),typeof o=="string"&&(o={[o]:a}),Object.entries(o).forEach(([c,l])=>{typeof l=="function"&&(o[c]=l(r.attr(c)))}),this[n]=r.animate([o],{duration:t*1e3,delay:i*1e3,fill:"forwards",easing:e}),this[n].finished}}}updateContours(){}},E(Zl,"Attr",rh),Zl);Gt.registerNode(uc,"node");Ze(Array);class ZI{constructor({vector:t,colors:e}){if(!Array.isArray(t)||t.length!==4&&t.length!==6&&t.length!==3)throw new TypeError("Invalid gradient");this.vector=t,this.colors=e.map(({offset:r,color:n})=>({offset:r,color:En(n)}))}toString(){return JSON.stringify({vector:this.vector,colors:this.colors})}}function En(s){if(s==null||(s||(s="transparent"),s instanceof ZI))return s;const t=Mu(s);if(!t||!t.length)throw new TypeError("Invalid color value.");return`rgba(${t.join()})`}function my(s,t,e){const r=s.boundingBox[0];if(e.vector){let{vector:n,colors:i}=e;n.length===4?(n=[n[0]+r[0],n[1]+r[1],n[2]+r[0],n[3]+r[1]],s.setLinearGradient({vector:n,colors:i,type:t})):n.length===3?(n=[n[0]+r[0],n[1]+r[1],n[2]],s.setCircularGradient({vector:n,colors:i,type:t})):(n=[n[0]+r[0],n[1]+r[1],n[2],n[3]+r[0],n[4]+r[1],n[5]],s.setRadialGradient({vector:n,colors:i,type:t}))}else s.gradient&&s.gradient[t]&&(delete s.gradient[t],delete s.uniforms.u_radialGradientVector)}function Sa(s,{color:t,rule:e="nonzero"}){return my(s,"fill",t),t.vector||s.setFill({color:t,rule:e}),s}function Ta(s,{color:t,lineWidth:e,lineCap:r,lineJoin:n,lineDash:i,lineDashOffset:o,miterLimit:a,roundSegments:c}){my(s,"stroke",t),t.vector&&(t=[0,0,0,1]),s.setStroke({color:t,thickness:e,cap:r,join:n,miterLimit:a,lineDash:i,lineDashOffset:o,roundSegments:c})}Ze(Array);const Tt=Symbol.for("spritejs_setAttribute"),Ct=Symbol.for("spritejs_getAttribute"),KI=Symbol.for("spritejs_setAttributeDefault"),XI=Symbol.for("spritejs_declareAlias");let hc=class extends rh{constructor(t){super(t),this[KI]({anchorX:0,anchorY:0,width:void 0,height:void 0,borderWidth:0,borderColor:"rgba(0,0,0,1)",borderDash:void 0,borderDashOffset:0,borderTopLeftRadius:[0,0],borderTopRightRadius:[0,0],borderBottomRightRadius:[0,0],borderBottomLeftRadius:[0,0],bgcolor:"rgba(0,0,0,0)",paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,boxSizing:"content-box",clipPath:void 0}),this[XI]("anchor","size","border","borderRadius","padding")}get anchorX(){return this[Ct]("anchorX")}set anchorX(t){this[Tt]("anchorX",qe(t))}get anchorY(){return this[Ct]("anchorY")}set anchorY(t){this[Tt]("anchorY",qe(t))}get anchor(){return[this.anchorX,this.anchorY]}set anchor(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.anchorX=t[0],this.anchorY=t[1]}get width(){return this[Ct]("width")}set width(t){this[Tt]("width",qe(t))}get height(){return this[Ct]("height")}set height(t){this[Tt]("height",qe(t))}get size(){return[this.width,this.height]}set size(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.width=t[0],this.height=t[1]}get borderWidth(){return this[Ct]("borderWidth")}set borderWidth(t){this[Tt]("borderWidth",qe(t))}get borderColor(){return this[Ct]("borderColor")}set borderColor(t){this[Tt]("borderColor",En(t))}get border(){return[this.borderWidth,this.borderColor]}set border(t){t=Mt(t),Array.isArray(t)||(t=[t]),this.borderWidth=t[0],t[1]!=null&&(this.borderColor=t[1])}get borderDash(){return this[Ct]("borderDash")}set borderDash(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t]),this[Tt]("borderDash",t?t.map(qe):null)}get borderDashOffset(){return this[Ct]("borderDashOffset")}set borderDashOffset(t){this[Tt]("borderDashOffset",qe(t))}get borderTopLeftRadius(){return this[Ct]("borderTopLeftRadius")}set borderTopLeftRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderTopLeftRadius",t.map(qe))}get borderTopRightRadius(){return this[Ct]("borderTopRightRadius")}set borderTopRightRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderTopRightRadius",t.map(qe))}get borderBottomRightRadius(){return this[Ct]("borderBottomRightRadius")}set borderBottomRightRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderBottomRightRadius",t.map(qe))}get borderBottomLeftRadius(){return this[Ct]("borderBottomLeftRadius")}set borderBottomLeftRadius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this[Tt]("borderBottomLeftRadius",t.map(qe))}get borderRadius(){return[...this.borderTopLeftRadius,...this.borderTopRightRadius,...this.borderBottomRightRadius,...this.borderBottomLeftRadius]}set borderRadius(t){if(t=Mt(t),!Array.isArray(t))t=Array(8).fill(t);else if(t.length===2)t=[t[0],t[1],t[0],t[1],t[0],t[1],t[0],t[1]];else if(t.length===4)t=[t[0],t[1],t[2],t[3],t[0],t[1],t[2],t[3]];else if(t.length===6)t=[t[0],t[1],t[2],t[3],t[4],t[5],t[2],t[3]];else if(t.length!==8)throw new TypeError("Invalid borderRadius value.");this.borderTopLeftRadius=[t[0],t[1]],this.borderTopRightRadius=[t[2],t[3]],this.borderBottomRightRadius=[t[4],t[5]],this.borderBottomLeftRadius=[t[6],t[7]]}get bgcolor(){return this[Ct]("bgcolor")}set bgcolor(t){this[Tt]("bgcolor",En(t))}get paddingTop(){return this[Ct]("paddingTop")}set paddingTop(t){this[Tt]("paddingTop",qe(t))}get paddingRight(){return this[Ct]("paddingRight")}set paddingRight(t){this[Tt]("paddingRight",qe(t))}get paddingBottom(){return this[Ct]("paddingBottom")}set paddingBottom(t){this[Tt]("paddingBottom",qe(t))}get paddingLeft(){return this[Ct]("paddingLeft")}set paddingLeft(t){this[Tt]("paddingLeft",qe(t))}get padding(){return[this.paddingTop,this.paddingRight,this.paddingBottom,this.paddingLeft]}set padding(t){t=Mt(t),Array.isArray(t)?t.length===2?t=[t[0],t[1],t[0],t[1]]:t.length===3&&(t=[t[0],t[1],t[2],t[1]]):t=[t,t,t,t],this.paddingTop=t[0],this.paddingRight=t[1],this.paddingBottom=t[2],this.paddingLeft=t[3]}get clipPath(){return this[Ct]("clipPath")}set clipPath(t){this[Tt]("clipPath",t)}get boxSizing(){return this[Ct]("boxSizing")}set boxSizing(t){if(t!=null&&t!=="border-box"&&t!=="content-box")throw new TypeError("Invalid boxSizing type.");this[Tt]("boxSizing",t)}};Ze(Array);function Oo(s,t,e,r,n,i="leftTop"){const o=.5522848,a=r/2*o,c=n/2*o,l=t+r,u=e+n,h=t+r/2,d=e+n/2;i==="leftTop"?(s.moveTo(t,d),s.bezierCurveTo(t,d-c,h-a,e,h,e)):i==="rightTop"?s.bezierCurveTo(h+a,e,l,d-c,l,d):i==="rightBottom"?s.bezierCurveTo(l,d+c,h+a,u,h,u):i==="leftBottom"&&s.bezierCurveTo(h-a,u,t,d+c,t,d)}function JI(s,[t,e,r,n],i){if(!i||Array.isArray(i)&&i.every(o=>o===0))s.beginPath(),s.rect(t,e,r,n);else{typeof i=="number"&&(i=Array(8).fill(i));const[o,a,c,l,u,h,d,f]=i.map((g,y)=>y%2?Math.min(g,n/2):Math.min(g,r/2));s.beginPath(),s.moveTo(t,e+a),Oo(s,t,e,o*2,a*2,"leftTop"),s.lineTo(t+r-c,e),Oo(s,t+r-c*2,e,c*2,l*2,"rightTop"),s.lineTo(t+r,e+n-h),Oo(s,t+r-u*2,e+n-h*2,u*2,h*2,"rightBottom"),s.lineTo(t+d,e+n),Oo(s,t,e+n-f*2,d*2,f*2,"leftBottom"),s.closePath()}return s}Ze(Array);function yy(s,t){if(!s)return{x:0,y:0,width:0,height:0,left:0,top:0,right:0,bottom:0};const[[e,r],[n,i]]=s,o=e*t[0]+r*t[2]+t[4],a=e*t[1]+r*t[3]+t[5],c=n*t[0]+r*t[2]+t[4],l=n*t[1]+r*t[3]+t[5],u=n*t[0]+i*t[2]+t[4],h=n*t[1]+i*t[3]+t[5],d=e*t[0]+i*t[2]+t[4],f=e*t[1]+i*t[3]+t[5],g=Math.min(o,c,u,d),y=Math.min(a,l,h,f),T=Math.max(o,c,u,d),x=Math.max(a,l,h,f);return{x:g,y,width:T-g,height:x-y,left:g,top:y,right:T,bottom:x}}Ze(Array);const $r=Symbol("mesh");class so extends uc{constructor(t={}){super(t)}get borderSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize;return[n+o+e+i,t+a+r+i]}get clientSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n}=this.attributes,[i,o]=this.contentSize;return[n+i+e,t+o+r]}get contentSize(){let{width:t,height:e,boxSizing:r,paddingTop:n,paddingRight:i,paddingBottom:o,paddingLeft:a}=this.attributes;if(t=t||0,e=e||0,r==="border-box"){const c=2*this.attributes.borderWidth;t-=c+i+a,e-=c+n+o,t=Math.max(0,t),e=Math.max(0,e)}return[t,e]}get hasBorder(){return this.attributes.borderWidth>0}get isVisible(){const[t,e]=this.borderSize;return t>0&&e>0}get mesh(){if(this.attributes.display==="none")return null;const t=this.clientBox;if(t){let e=this[$r];if(e)e.box!==t&&(e.contours=t.contours,e.box=t);else{e=new ft.Mesh2D(t),e.box=t;const n=this.attributes.bgcolor;if(Sa(e,{color:n}),this.hasBorder){const{borderColor:o,borderWidth:a,borderDash:c,borderDashOffset:l}=this.attributes;Ta(e,{color:o,lineWidth:a,lineDash:c,lineDashOffset:l})}this[$r]=e;const i=this.attributes.clipPath;i&&this[$r].setClipPath(i)}const r=this.opacity;return e.getOpacity()!==r&&e.setOpacity(r),e.setTransform(...this.renderMatrix),e}return null}get offsetSize(){const{paddingTop:t,paddingRight:e,paddingBottom:r,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize,c=2*i;return[n+o+e+c,t+a+r+c]}get originalClientRect(){if(this.mesh){const t=this.mesh.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalContentRect(){const[t,e,r,n]=this.originalClientRect,i=this.attributes.padding;return[t+i[0],e+i[1],r-i[0]-i[2],n-i[1]-i[3]]}getBoundingClientRect(){let t=this.renderMatrix;this.layer&&this.layer.layerTransformInvert&&(t=Lr(Array.of(0,0,0,0,0,0),this.layer.transformMatrix,t));let e=null;if(this.mesh){e=[...this.mesh.boundingBox];const r=this.attributes.borderWidth;r&&(e[0]=[e[0][0]-r,e[0][1]-r],e[1]=[e[1][0]+r,e[1][1]+r])}return yy(e,t)}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),(t==="anchorX"||t==="anchorY"||t==="boxSizing"||t==="width"||t==="height"||t==="borderWidth"||t==="paddingLeft"||t==="paddingRight"||t==="paddingTop"||t==="paddingBottom"||/^border(TopLeft|TopRight|BottomRight|BottomLeft)Radius$/.test(t))&&this.updateContours(),this[$r]&&t==="clipPath"&&this[$r].setClipPath(e),this[$r]&&t==="bgcolor"&&Sa(this[$r],{color:e}),this[$r]&&(t==="borderColor"||t==="borderWidth"||t==="borderDash"||t==="borderDashOffset")){const{borderColor:n,borderWidth:i,borderDash:o,borderDashOffset:a}=this.attributes;Ta(this[$r],{color:n,lineWidth:i,lineDash:i?o:0,lineDashOffset:a})}}updateContours(){const{anchorX:t,anchorY:e,borderWidth:r,borderRadius:n}=this.attributes,[i,o]=this.borderSize,a=this.offsetSize,c=.5*r,l=-t*a[0]+c,u=-e*a[1]+c;this.clientBox=new ft.Figure2D,JI(this.clientBox,[l,u,i,o],n)}}E(so,"Attr",hc);Gt.registerNode(so,"block");Ze(Array);let _I=class extends hc{};var vy={exports:{}},Dh={Text:"text",CDATA:"cdata",isTag:function(s){return s.type==="tag"||s.type==="script"||s.type==="style"}},My={exports:{}},wy={};(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.Doctype=s.CDATA=s.Tag=s.Style=s.Script=s.Comment=s.Directive=s.Text=s.Root=s.isTag=s.ElementType=void 0;var t;(function(r){r.Root="root",r.Text="text",r.Directive="directive",r.Comment="comment",r.Script="script",r.Style="style",r.Tag="tag",r.CDATA="cdata",r.Doctype="doctype"})(t=s.ElementType||(s.ElementType={}));function e(r){return r.type===t.Tag||r.type===t.Script||r.type===t.Style}s.isTag=e,s.Root=t.Root,s.Text=t.Text,s.Directive=t.Directive,s.Comment=t.Comment,s.Script=t.Script,s.Style=t.Style,s.Tag=t.Tag,s.CDATA=t.CDATA,s.Doctype=t.Doctype})(wy);var Sy={},sn={};const eb="Á",tb="á",rb="Ă",nb="ă",ib="∾",sb="∿",ob="∾̳",ab="Â",cb="â",lb="´",ub="А",hb="а",db="Æ",fb="æ",gb="⁡",pb="𝔄",mb="𝔞",yb="À",vb="à",Mb="ℵ",wb="ℵ",Sb="Α",Tb="α",Cb="Ā",Ib="ā",bb="⨿",Eb="&",xb="&",Rb="⩕",Ab="⩓",kb="∧",Pb="⩜",Db="⩘",Lb="⩚",Nb="∠",Ob="⦤",zb="∠",Bb="⦨",jb="⦩",Fb="⦪",Ub="⦫",Wb="⦬",Vb="⦭",$b="⦮",Yb="⦯",Gb="∡",Hb="∟",Qb="⊾",qb="⦝",Zb="∢",Kb="Å",Xb="⍼",Jb="Ą",_b="ą",eE="𝔸",tE="𝕒",rE="⩯",nE="≈",iE="⩰",sE="≊",oE="≋",aE="'",cE="⁡",lE="≈",uE="≊",hE="Å",dE="å",fE="𝒜",gE="𝒶",pE="≔",mE="*",yE="≈",vE="≍",ME="Ã",wE="ã",SE="Ä",TE="ä",CE="∳",IE="⨑",bE="≌",EE="϶",xE="‵",RE="∽",AE="⋍",kE="∖",PE="⫧",DE="⊽",LE="⌅",NE="⌆",OE="⌅",zE="⎵",BE="⎶",jE="≌",FE="Б",UE="б",WE="„",VE="∵",$E="∵",YE="∵",GE="⦰",HE="϶",QE="ℬ",qE="ℬ",ZE="Β",KE="β",XE="ℶ",JE="≬",_E="𝔅",e2="𝔟",t2="⋂",r2="◯",n2="⋃",i2="⨀",s2="⨁",o2="⨂",a2="⨆",c2="★",l2="▽",u2="△",h2="⨄",d2="⋁",f2="⋀",g2="⤍",p2="⧫",m2="▪",y2="▴",v2="▾",M2="◂",w2="▸",S2="␣",T2="▒",C2="░",I2="▓",b2="█",E2="=⃥",x2="≡⃥",R2="⫭",A2="⌐",k2="𝔹",P2="𝕓",D2="⊥",L2="⊥",N2="⋈",O2="⧉",z2="┐",B2="╕",j2="╖",F2="╗",U2="┌",W2="╒",V2="╓",$2="╔",Y2="─",G2="═",H2="┬",Q2="╤",q2="╥",Z2="╦",K2="┴",X2="╧",J2="╨",_2="╩",ex="⊟",tx="⊞",rx="⊠",nx="┘",ix="╛",sx="╜",ox="╝",ax="└",cx="╘",lx="╙",ux="╚",hx="│",dx="║",fx="┼",gx="╪",px="╫",mx="╬",yx="┤",vx="╡",Mx="╢",wx="╣",Sx="├",Tx="╞",Cx="╟",Ix="╠",bx="‵",Ex="˘",xx="˘",Rx="¦",Ax="𝒷",kx="ℬ",Px="⁏",Dx="∽",Lx="⋍",Nx="⧅",Ox="\\",zx="⟈",Bx="•",jx="•",Fx="≎",Ux="⪮",Wx="≏",Vx="≎",$x="≏",Yx="Ć",Gx="ć",Hx="⩄",Qx="⩉",qx="⩋",Zx="∩",Kx="⋒",Xx="⩇",Jx="⩀",_x="ⅅ",eR="∩︀",tR="⁁",rR="ˇ",nR="ℭ",iR="⩍",sR="Č",oR="č",aR="Ç",cR="ç",lR="Ĉ",uR="ĉ",hR="∰",dR="⩌",fR="⩐",gR="Ċ",pR="ċ",mR="¸",yR="¸",vR="⦲",MR="¢",wR="·",SR="·",TR="𝔠",CR="ℭ",IR="Ч",bR="ч",ER="✓",xR="✓",RR="Χ",AR="χ",kR="ˆ",PR="≗",DR="↺",LR="↻",NR="⊛",OR="⊚",zR="⊝",BR="⊙",jR="®",FR="Ⓢ",UR="⊖",WR="⊕",VR="⊗",$R="○",YR="⧃",GR="≗",HR="⨐",QR="⫯",qR="⧂",ZR="∲",KR="”",XR="’",JR="♣",_R="♣",eA=":",tA="∷",rA="⩴",nA="≔",iA="≔",sA=",",oA="@",aA="∁",cA="∘",lA="∁",uA="ℂ",hA="≅",dA="⩭",fA="≡",gA="∮",pA="∯",mA="∮",yA="𝕔",vA="ℂ",MA="∐",wA="∐",SA="©",TA="©",CA="℗",IA="∳",bA="↵",EA="✗",xA="⨯",RA="𝒞",AA="𝒸",kA="⫏",PA="⫑",DA="⫐",LA="⫒",NA="⋯",OA="⤸",zA="⤵",BA="⋞",jA="⋟",FA="↶",UA="⤽",WA="⩈",VA="⩆",$A="≍",YA="∪",GA="⋓",HA="⩊",QA="⊍",qA="⩅",ZA="∪︀",KA="↷",XA="⤼",JA="⋞",_A="⋟",ek="⋎",tk="⋏",rk="¤",nk="↶",ik="↷",sk="⋎",ok="⋏",ak="∲",ck="∱",lk="⌭",uk="†",hk="‡",dk="ℸ",fk="↓",gk="↡",pk="⇓",mk="‐",yk="⫤",vk="⊣",Mk="⤏",wk="˝",Sk="Ď",Tk="ď",Ck="Д",Ik="д",bk="‡",Ek="⇊",xk="ⅅ",Rk="ⅆ",Ak="⤑",kk="⩷",Pk="°",Dk="∇",Lk="Δ",Nk="δ",Ok="⦱",zk="⥿",Bk="𝔇",jk="𝔡",Fk="⥥",Uk="⇃",Wk="⇂",Vk="´",$k="˙",Yk="˝",Gk="`",Hk="˜",Qk="⋄",qk="⋄",Zk="⋄",Kk="♦",Xk="♦",Jk="¨",_k="ⅆ",eP="ϝ",tP="⋲",rP="÷",nP="÷",iP="⋇",sP="⋇",oP="Ђ",aP="ђ",cP="⌞",lP="⌍",uP="$",hP="𝔻",dP="𝕕",fP="¨",gP="˙",pP="⃜",mP="≐",yP="≑",vP="≐",MP="∸",wP="∔",SP="⊡",TP="⌆",CP="∯",IP="¨",bP="⇓",EP="⇐",xP="⇔",RP="⫤",AP="⟸",kP="⟺",PP="⟹",DP="⇒",LP="⊨",NP="⇑",OP="⇕",zP="∥",BP="⤓",jP="↓",FP="↓",UP="⇓",WP="⇵",VP="̑",$P="⇊",YP="⇃",GP="⇂",HP="⥐",QP="⥞",qP="⥖",ZP="↽",KP="⥟",XP="⥗",JP="⇁",_P="↧",eD="⊤",tD="⤐",rD="⌟",nD="⌌",iD="𝒟",sD="𝒹",oD="Ѕ",aD="ѕ",cD="⧶",lD="Đ",uD="đ",hD="⋱",dD="▿",fD="▾",gD="⇵",pD="⥯",mD="⦦",yD="Џ",vD="џ",MD="⟿",wD="É",SD="é",TD="⩮",CD="Ě",ID="ě",bD="Ê",ED="ê",xD="≖",RD="≕",AD="Э",kD="э",PD="⩷",DD="Ė",LD="ė",ND="≑",OD="ⅇ",zD="≒",BD="𝔈",jD="𝔢",FD="⪚",UD="È",WD="è",VD="⪖",$D="⪘",YD="⪙",GD="∈",HD="⏧",QD="ℓ",qD="⪕",ZD="⪗",KD="Ē",XD="ē",JD="∅",_D="∅",eL="◻",tL="∅",rL="▫",nL=" ",iL=" ",sL=" ",oL="Ŋ",aL="ŋ",cL=" ",lL="Ę",uL="ę",hL="𝔼",dL="𝕖",fL="⋕",gL="⧣",pL="⩱",mL="ε",yL="Ε",vL="ε",ML="ϵ",wL="≖",SL="≕",TL="≂",CL="⪖",IL="⪕",bL="⩵",EL="=",xL="≂",RL="≟",AL="⇌",kL="≡",PL="⩸",DL="⧥",LL="⥱",NL="≓",OL="ℯ",zL="ℰ",BL="≐",jL="⩳",FL="≂",UL="Η",WL="η",VL="Ð",$L="ð",YL="Ë",GL="ë",HL="€",QL="!",qL="∃",ZL="∃",KL="ℰ",XL="ⅇ",JL="ⅇ",_L="≒",eN="Ф",tN="ф",rN="♀",nN="ffi",iN="ff",sN="ffl",oN="𝔉",aN="𝔣",cN="fi",lN="◼",uN="▪",hN="fj",dN="♭",fN="fl",gN="▱",pN="ƒ",mN="𝔽",yN="𝕗",vN="∀",MN="∀",wN="⋔",SN="⫙",TN="ℱ",CN="⨍",IN="½",bN="⅓",EN="¼",xN="⅕",RN="⅙",AN="⅛",kN="⅔",PN="⅖",DN="¾",LN="⅗",NN="⅜",ON="⅘",zN="⅚",BN="⅝",jN="⅞",FN="⁄",UN="⌢",WN="𝒻",VN="ℱ",$N="ǵ",YN="Γ",GN="γ",HN="Ϝ",QN="ϝ",qN="⪆",ZN="Ğ",KN="ğ",XN="Ģ",JN="Ĝ",_N="ĝ",eO="Г",tO="г",rO="Ġ",nO="ġ",iO="≥",sO="≧",oO="⪌",aO="⋛",cO="≥",lO="≧",uO="⩾",hO="⪩",dO="⩾",fO="⪀",gO="⪂",pO="⪄",mO="⋛︀",yO="⪔",vO="𝔊",MO="𝔤",wO="≫",SO="⋙",TO="⋙",CO="ℷ",IO="Ѓ",bO="ѓ",EO="⪥",xO="≷",RO="⪒",AO="⪤",kO="⪊",PO="⪊",DO="⪈",LO="≩",NO="⪈",OO="≩",zO="⋧",BO="𝔾",jO="𝕘",FO="`",UO="≥",WO="⋛",VO="≧",$O="⪢",YO="≷",GO="⩾",HO="≳",QO="𝒢",qO="ℊ",ZO="≳",KO="⪎",XO="⪐",JO="⪧",_O="⩺",ez=">",tz=">",rz="≫",nz="⋗",iz="⦕",sz="⩼",oz="⪆",az="⥸",cz="⋗",lz="⋛",uz="⪌",hz="≷",dz="≳",fz="≩︀",gz="≩︀",pz="ˇ",mz=" ",yz="½",vz="ℋ",Mz="Ъ",wz="ъ",Sz="⥈",Tz="↔",Cz="⇔",Iz="↭",bz="^",Ez="ℏ",xz="Ĥ",Rz="ĥ",Az="♥",kz="♥",Pz="…",Dz="⊹",Lz="𝔥",Nz="ℌ",Oz="ℋ",zz="⤥",Bz="⤦",jz="⇿",Fz="∻",Uz="↩",Wz="↪",Vz="𝕙",$z="ℍ",Yz="―",Gz="─",Hz="𝒽",Qz="ℋ",qz="ℏ",Zz="Ħ",Kz="ħ",Xz="≎",Jz="≏",_z="⁃",eB="‐",tB="Í",rB="í",nB="⁣",iB="Î",sB="î",oB="И",aB="и",cB="İ",lB="Е",uB="е",hB="¡",dB="⇔",fB="𝔦",gB="ℑ",pB="Ì",mB="ì",yB="ⅈ",vB="⨌",MB="∭",wB="⧜",SB="℩",TB="IJ",CB="ij",IB="Ī",bB="ī",EB="ℑ",xB="ⅈ",RB="ℐ",AB="ℑ",kB="ı",PB="ℑ",DB="⊷",LB="Ƶ",NB="⇒",OB="℅",zB="∞",BB="⧝",jB="ı",FB="⊺",UB="∫",WB="∬",VB="ℤ",$B="∫",YB="⊺",GB="⋂",HB="⨗",QB="⨼",qB="⁣",ZB="⁢",KB="Ё",XB="ё",JB="Į",_B="į",ej="𝕀",tj="𝕚",rj="Ι",nj="ι",ij="⨼",sj="¿",oj="𝒾",aj="ℐ",cj="∈",lj="⋵",uj="⋹",hj="⋴",dj="⋳",fj="∈",gj="⁢",pj="Ĩ",mj="ĩ",yj="І",vj="і",Mj="Ï",wj="ï",Sj="Ĵ",Tj="ĵ",Cj="Й",Ij="й",bj="𝔍",Ej="𝔧",xj="ȷ",Rj="𝕁",Aj="𝕛",kj="𝒥",Pj="𝒿",Dj="Ј",Lj="ј",Nj="Є",Oj="є",zj="Κ",Bj="κ",jj="ϰ",Fj="Ķ",Uj="ķ",Wj="К",Vj="к",$j="𝔎",Yj="𝔨",Gj="ĸ",Hj="Х",Qj="х",qj="Ќ",Zj="ќ",Kj="𝕂",Xj="𝕜",Jj="𝒦",_j="𝓀",e3="⇚",t3="Ĺ",r3="ĺ",n3="⦴",i3="ℒ",s3="Λ",o3="λ",a3="⟨",c3="⟪",l3="⦑",u3="⟨",h3="⪅",d3="ℒ",f3="«",g3="⇤",p3="⤟",m3="←",y3="↞",v3="⇐",M3="⤝",w3="↩",S3="↫",T3="⤹",C3="⥳",I3="↢",b3="⤙",E3="⤛",x3="⪫",R3="⪭",A3="⪭︀",k3="⤌",P3="⤎",D3="❲",L3="{",N3="[",O3="⦋",z3="⦏",B3="⦍",j3="Ľ",F3="ľ",U3="Ļ",W3="ļ",V3="⌈",$3="{",Y3="Л",G3="л",H3="⤶",Q3="“",q3="„",Z3="⥧",K3="⥋",X3="↲",J3="≤",_3="≦",e4="⟨",t4="⇤",r4="←",n4="←",i4="⇐",s4="⇆",o4="↢",a4="⌈",c4="⟦",l4="⥡",u4="⥙",h4="⇃",d4="⌊",f4="↽",g4="↼",p4="⇇",m4="↔",y4="↔",v4="⇔",M4="⇆",w4="⇋",S4="↭",T4="⥎",C4="↤",I4="⊣",b4="⥚",E4="⋋",x4="⧏",R4="⊲",A4="⊴",k4="⥑",P4="⥠",D4="⥘",L4="↿",N4="⥒",O4="↼",z4="⪋",B4="⋚",j4="≤",F4="≦",U4="⩽",W4="⪨",V4="⩽",$4="⩿",Y4="⪁",G4="⪃",H4="⋚︀",Q4="⪓",q4="⪅",Z4="⋖",K4="⋚",X4="⪋",J4="⋚",_4="≦",eF="≶",tF="≶",rF="⪡",nF="≲",iF="⩽",sF="≲",oF="⥼",aF="⌊",cF="𝔏",lF="𝔩",uF="≶",hF="⪑",dF="⥢",fF="↽",gF="↼",pF="⥪",mF="▄",yF="Љ",vF="љ",MF="⇇",wF="≪",SF="⋘",TF="⌞",CF="⇚",IF="⥫",bF="◺",EF="Ŀ",xF="ŀ",RF="⎰",AF="⎰",kF="⪉",PF="⪉",DF="⪇",LF="≨",NF="⪇",OF="≨",zF="⋦",BF="⟬",jF="⇽",FF="⟦",UF="⟵",WF="⟵",VF="⟸",$F="⟷",YF="⟷",GF="⟺",HF="⟼",QF="⟶",qF="⟶",ZF="⟹",KF="↫",XF="↬",JF="⦅",_F="𝕃",eU="𝕝",tU="⨭",rU="⨴",nU="∗",iU="_",sU="↙",oU="↘",aU="◊",cU="◊",lU="⧫",uU="(",hU="⦓",dU="⇆",fU="⌟",gU="⇋",pU="⥭",mU="‎",yU="⊿",vU="‹",MU="𝓁",wU="ℒ",SU="↰",TU="↰",CU="≲",IU="⪍",bU="⪏",EU="[",xU="‘",RU="‚",AU="Ł",kU="ł",PU="⪦",DU="⩹",LU="<",NU="<",OU="≪",zU="⋖",BU="⋋",jU="⋉",FU="⥶",UU="⩻",WU="◃",VU="⊴",$U="◂",YU="⦖",GU="⥊",HU="⥦",QU="≨︀",qU="≨︀",ZU="¯",KU="♂",XU="✠",JU="✠",_U="↦",e5="↦",t5="↧",r5="↤",n5="↥",i5="▮",s5="⨩",o5="М",a5="м",c5="—",l5="∺",u5="∡",h5=" ",d5="ℳ",f5="𝔐",g5="𝔪",p5="℧",m5="µ",y5="*",v5="⫰",M5="∣",w5="·",S5="⊟",T5="−",C5="∸",I5="⨪",b5="∓",E5="⫛",x5="…",R5="∓",A5="⊧",k5="𝕄",P5="𝕞",D5="∓",L5="𝓂",N5="ℳ",O5="∾",z5="Μ",B5="μ",j5="⊸",F5="⊸",U5="∇",W5="Ń",V5="ń",$5="∠⃒",Y5="≉",G5="⩰̸",H5="≋̸",Q5="ʼn",q5="≉",Z5="♮",K5="ℕ",X5="♮",J5=" ",_5="≎̸",eW="≏̸",tW="⩃",rW="Ň",nW="ň",iW="Ņ",sW="ņ",oW="≇",aW="⩭̸",cW="⩂",lW="Н",uW="н",hW="–",dW="⤤",fW="↗",gW="⇗",pW="↗",mW="≠",yW="≐̸",vW="​",MW="​",wW="​",SW="​",TW="≢",CW="⤨",IW="≂̸",bW="≫",EW="≪",xW=`
568
+ `,RW="∄",AW="∄",kW="𝔑",PW="𝔫",DW="≧̸",LW="≱",NW="≱",OW="≧̸",zW="⩾̸",BW="⩾̸",jW="⋙̸",FW="≵",UW="≫⃒",WW="≯",VW="≯",$W="≫̸",YW="↮",GW="⇎",HW="⫲",QW="∋",qW="⋼",ZW="⋺",KW="∋",XW="Њ",JW="њ",_W="↚",eV="⇍",tV="‥",rV="≦̸",nV="≰",iV="↚",sV="⇍",oV="↮",aV="⇎",cV="≰",lV="≦̸",uV="⩽̸",hV="⩽̸",dV="≮",fV="⋘̸",gV="≴",pV="≪⃒",mV="≮",yV="⋪",vV="⋬",MV="≪̸",wV="∤",SV="⁠",TV=" ",CV="𝕟",IV="ℕ",bV="⫬",EV="¬",xV="≢",RV="≭",AV="∦",kV="∉",PV="≠",DV="≂̸",LV="∄",NV="≯",OV="≱",zV="≧̸",BV="≫̸",jV="≹",FV="⩾̸",UV="≵",WV="≎̸",VV="≏̸",$V="∉",YV="⋵̸",GV="⋹̸",HV="∉",QV="⋷",qV="⋶",ZV="⧏̸",KV="⋪",XV="⋬",JV="≮",_V="≰",e$="≸",t$="≪̸",r$="⩽̸",n$="≴",i$="⪢̸",s$="⪡̸",o$="∌",a$="∌",c$="⋾",l$="⋽",u$="⊀",h$="⪯̸",d$="⋠",f$="∌",g$="⧐̸",p$="⋫",m$="⋭",y$="⊏̸",v$="⋢",M$="⊐̸",w$="⋣",S$="⊂⃒",T$="⊈",C$="⊁",I$="⪰̸",b$="⋡",E$="≿̸",x$="⊃⃒",R$="⊉",A$="≁",k$="≄",P$="≇",D$="≉",L$="∤",N$="∦",O$="∦",z$="⫽⃥",B$="∂̸",j$="⨔",F$="⊀",U$="⋠",W$="⊀",V$="⪯̸",$$="⪯̸",Y$="⤳̸",G$="↛",H$="⇏",Q$="↝̸",q$="↛",Z$="⇏",K$="⋫",X$="⋭",J$="⊁",_$="⋡",eY="⪰̸",tY="𝒩",rY="𝓃",nY="∤",iY="∦",sY="≁",oY="≄",aY="≄",cY="∤",lY="∦",uY="⋢",hY="⋣",dY="⊄",fY="⫅̸",gY="⊈",pY="⊂⃒",mY="⊈",yY="⫅̸",vY="⊁",MY="⪰̸",wY="⊅",SY="⫆̸",TY="⊉",CY="⊃⃒",IY="⊉",bY="⫆̸",EY="≹",xY="Ñ",RY="ñ",AY="≸",kY="⋪",PY="⋬",DY="⋫",LY="⋭",NY="Ν",OY="ν",zY="#",BY="№",jY=" ",FY="≍⃒",UY="⊬",WY="⊭",VY="⊮",$Y="⊯",YY="≥⃒",GY=">⃒",HY="⤄",QY="⧞",qY="⤂",ZY="≤⃒",KY="<⃒",XY="⊴⃒",JY="⤃",_Y="⊵⃒",eG="∼⃒",tG="⤣",rG="↖",nG="⇖",iG="↖",sG="⤧",oG="Ó",aG="ó",cG="⊛",lG="Ô",uG="ô",hG="⊚",dG="О",fG="о",gG="⊝",pG="Ő",mG="ő",yG="⨸",vG="⊙",MG="⦼",wG="Œ",SG="œ",TG="⦿",CG="𝔒",IG="𝔬",bG="˛",EG="Ò",xG="ò",RG="⧁",AG="⦵",kG="Ω",PG="∮",DG="↺",LG="⦾",NG="⦻",OG="‾",zG="⧀",BG="Ō",jG="ō",FG="Ω",UG="ω",WG="Ο",VG="ο",$G="⦶",YG="⊖",GG="𝕆",HG="𝕠",QG="⦷",qG="“",ZG="‘",KG="⦹",XG="⊕",JG="↻",_G="⩔",e8="∨",t8="⩝",r8="ℴ",n8="ℴ",i8="ª",s8="º",o8="⊶",a8="⩖",c8="⩗",l8="⩛",u8="Ⓢ",h8="𝒪",d8="ℴ",f8="Ø",g8="ø",p8="⊘",m8="Õ",y8="õ",v8="⨶",M8="⨷",w8="⊗",S8="Ö",T8="ö",C8="⌽",I8="‾",b8="⏞",E8="⎴",x8="⏜",R8="¶",A8="∥",k8="∥",P8="⫳",D8="⫽",L8="∂",N8="∂",O8="П",z8="п",B8="%",j8=".",F8="‰",U8="⊥",W8="‱",V8="𝔓",$8="𝔭",Y8="Φ",G8="φ",H8="ϕ",Q8="ℳ",q8="☎",Z8="Π",K8="π",X8="⋔",J8="ϖ",_8="ℏ",e6="ℎ",t6="ℏ",r6="⨣",n6="⊞",i6="⨢",s6="+",o6="∔",a6="⨥",c6="⩲",l6="±",u6="±",h6="⨦",d6="⨧",f6="±",g6="ℌ",p6="⨕",m6="𝕡",y6="ℙ",v6="£",M6="⪷",w6="⪻",S6="≺",T6="≼",C6="⪷",I6="≺",b6="≼",E6="≺",x6="⪯",R6="≼",A6="≾",k6="⪯",P6="⪹",D6="⪵",L6="⋨",N6="⪯",O6="⪳",z6="≾",B6="′",j6="″",F6="ℙ",U6="⪹",W6="⪵",V6="⋨",$6="∏",Y6="∏",G6="⌮",H6="⌒",Q6="⌓",q6="∝",Z6="∝",K6="∷",X6="∝",J6="≾",_6="⊰",e9="𝒫",t9="𝓅",r9="Ψ",n9="ψ",i9=" ",s9="𝔔",o9="𝔮",a9="⨌",c9="𝕢",l9="ℚ",u9="⁗",h9="𝒬",d9="𝓆",f9="ℍ",g9="⨖",p9="?",m9="≟",y9='"',v9='"',M9="⇛",w9="∽̱",S9="Ŕ",T9="ŕ",C9="√",I9="⦳",b9="⟩",E9="⟫",x9="⦒",R9="⦥",A9="⟩",k9="»",P9="⥵",D9="⇥",L9="⤠",N9="⤳",O9="→",z9="↠",B9="⇒",j9="⤞",F9="↪",U9="↬",W9="⥅",V9="⥴",$9="⤖",Y9="↣",G9="↝",H9="⤚",Q9="⤜",q9="∶",Z9="ℚ",K9="⤍",X9="⤏",J9="⤐",_9="❳",eH="}",tH="]",rH="⦌",nH="⦎",iH="⦐",sH="Ř",oH="ř",aH="Ŗ",cH="ŗ",lH="⌉",uH="}",hH="Р",dH="р",fH="⤷",gH="⥩",pH="”",mH="”",yH="↳",vH="ℜ",MH="ℛ",wH="ℜ",SH="ℝ",TH="ℜ",CH="▭",IH="®",bH="®",EH="∋",xH="⇋",RH="⥯",AH="⥽",kH="⌋",PH="𝔯",DH="ℜ",LH="⥤",NH="⇁",OH="⇀",zH="⥬",BH="Ρ",jH="ρ",FH="ϱ",UH="⟩",WH="⇥",VH="→",$H="→",YH="⇒",GH="⇄",HH="↣",QH="⌉",qH="⟧",ZH="⥝",KH="⥕",XH="⇂",JH="⌋",_H="⇁",e7="⇀",t7="⇄",r7="⇌",n7="⇉",i7="↝",s7="↦",o7="⊢",a7="⥛",c7="⋌",l7="⧐",u7="⊳",h7="⊵",d7="⥏",f7="⥜",g7="⥔",p7="↾",m7="⥓",y7="⇀",v7="˚",M7="≓",w7="⇄",S7="⇌",T7="‏",C7="⎱",I7="⎱",b7="⫮",E7="⟭",x7="⇾",R7="⟧",A7="⦆",k7="𝕣",P7="ℝ",D7="⨮",L7="⨵",N7="⥰",O7=")",z7="⦔",B7="⨒",j7="⇉",F7="⇛",U7="›",W7="𝓇",V7="ℛ",$7="↱",Y7="↱",G7="]",H7="’",Q7="’",q7="⋌",Z7="⋊",K7="▹",X7="⊵",J7="▸",_7="⧎",eQ="⧴",tQ="⥨",rQ="℞",nQ="Ś",iQ="ś",sQ="‚",oQ="⪸",aQ="Š",cQ="š",lQ="⪼",uQ="≻",hQ="≽",dQ="⪰",fQ="⪴",gQ="Ş",pQ="ş",mQ="Ŝ",yQ="ŝ",vQ="⪺",MQ="⪶",wQ="⋩",SQ="⨓",TQ="≿",CQ="С",IQ="с",bQ="⊡",EQ="⋅",xQ="⩦",RQ="⤥",AQ="↘",kQ="⇘",PQ="↘",DQ="§",LQ=";",NQ="⤩",OQ="∖",zQ="∖",BQ="✶",jQ="𝔖",FQ="𝔰",UQ="⌢",WQ="♯",VQ="Щ",$Q="щ",YQ="Ш",GQ="ш",HQ="↓",QQ="←",qQ="∣",ZQ="∥",KQ="→",XQ="↑",JQ="­",_Q="Σ",eq="σ",tq="ς",rq="ς",nq="∼",iq="⩪",sq="≃",oq="≃",aq="⪞",cq="⪠",lq="⪝",uq="⪟",hq="≆",dq="⨤",fq="⥲",gq="←",pq="∘",mq="∖",yq="⨳",vq="⧤",Mq="∣",wq="⌣",Sq="⪪",Tq="⪬",Cq="⪬︀",Iq="Ь",bq="ь",Eq="⌿",xq="⧄",Rq="/",Aq="𝕊",kq="𝕤",Pq="♠",Dq="♠",Lq="∥",Nq="⊓",Oq="⊓︀",zq="⊔",Bq="⊔︀",jq="√",Fq="⊏",Uq="⊑",Wq="⊏",Vq="⊑",$q="⊐",Yq="⊒",Gq="⊐",Hq="⊒",Qq="□",qq="□",Zq="⊓",Kq="⊏",Xq="⊑",Jq="⊐",_q="⊒",eZ="⊔",tZ="▪",rZ="□",nZ="▪",iZ="→",sZ="𝒮",oZ="𝓈",aZ="∖",cZ="⌣",lZ="⋆",uZ="⋆",hZ="☆",dZ="★",fZ="ϵ",gZ="ϕ",pZ="¯",mZ="⊂",yZ="⋐",vZ="⪽",MZ="⫅",wZ="⊆",SZ="⫃",TZ="⫁",CZ="⫋",IZ="⊊",bZ="⪿",EZ="⥹",xZ="⊂",RZ="⋐",AZ="⊆",kZ="⫅",PZ="⊆",DZ="⊊",LZ="⫋",NZ="⫇",OZ="⫕",zZ="⫓",BZ="⪸",jZ="≻",FZ="≽",UZ="≻",WZ="⪰",VZ="≽",$Z="≿",YZ="⪰",GZ="⪺",HZ="⪶",QZ="⋩",qZ="≿",ZZ="∋",KZ="∑",XZ="∑",JZ="♪",_Z="¹",eK="²",tK="³",rK="⊃",nK="⋑",iK="⪾",sK="⫘",oK="⫆",aK="⊇",cK="⫄",lK="⊃",uK="⊇",hK="⟉",dK="⫗",fK="⥻",gK="⫂",pK="⫌",mK="⊋",yK="⫀",vK="⊃",MK="⋑",wK="⊇",SK="⫆",TK="⊋",CK="⫌",IK="⫈",bK="⫔",EK="⫖",xK="⤦",RK="↙",AK="⇙",kK="↙",PK="⤪",DK="ß",LK=" ",NK="⌖",OK="Τ",zK="τ",BK="⎴",jK="Ť",FK="ť",UK="Ţ",WK="ţ",VK="Т",$K="т",YK="⃛",GK="⌕",HK="𝔗",QK="𝔱",qK="∴",ZK="∴",KK="∴",XK="Θ",JK="θ",_K="ϑ",eX="ϑ",tX="≈",rX="∼",nX="  ",iX=" ",sX=" ",oX="≈",aX="∼",cX="Þ",lX="þ",uX="˜",hX="∼",dX="≃",fX="≅",gX="≈",pX="⨱",mX="⊠",yX="×",vX="⨰",MX="∭",wX="⤨",SX="⌶",TX="⫱",CX="⊤",IX="𝕋",bX="𝕥",EX="⫚",xX="⤩",RX="‴",AX="™",kX="™",PX="▵",DX="▿",LX="◃",NX="⊴",OX="≜",zX="▹",BX="⊵",jX="◬",FX="≜",UX="⨺",WX="⃛",VX="⨹",$X="⧍",YX="⨻",GX="⏢",HX="𝒯",QX="𝓉",qX="Ц",ZX="ц",KX="Ћ",XX="ћ",JX="Ŧ",_X="ŧ",eJ="≬",tJ="↞",rJ="↠",nJ="Ú",iJ="ú",sJ="↑",oJ="↟",aJ="⇑",cJ="⥉",lJ="Ў",uJ="ў",hJ="Ŭ",dJ="ŭ",fJ="Û",gJ="û",pJ="У",mJ="у",yJ="⇅",vJ="Ű",MJ="ű",wJ="⥮",SJ="⥾",TJ="𝔘",CJ="𝔲",IJ="Ù",bJ="ù",EJ="⥣",xJ="↿",RJ="↾",AJ="▀",kJ="⌜",PJ="⌜",DJ="⌏",LJ="◸",NJ="Ū",OJ="ū",zJ="¨",BJ="_",jJ="⏟",FJ="⎵",UJ="⏝",WJ="⋃",VJ="⊎",$J="Ų",YJ="ų",GJ="𝕌",HJ="𝕦",QJ="⤒",qJ="↑",ZJ="↑",KJ="⇑",XJ="⇅",JJ="↕",_J="↕",e_="⇕",t_="⥮",r_="↿",n_="↾",i_="⊎",s_="↖",o_="↗",a_="υ",c_="ϒ",l_="ϒ",u_="Υ",h_="υ",d_="↥",f_="⊥",g_="⇈",p_="⌝",m_="⌝",y_="⌎",v_="Ů",M_="ů",w_="◹",S_="𝒰",T_="𝓊",C_="⋰",I_="Ũ",b_="ũ",E_="▵",x_="▴",R_="⇈",A_="Ü",k_="ü",P_="⦧",D_="⦜",L_="ϵ",N_="ϰ",O_="∅",z_="ϕ",B_="ϖ",j_="∝",F_="↕",U_="⇕",W_="ϱ",V_="ς",$_="⊊︀",Y_="⫋︀",G_="⊋︀",H_="⫌︀",Q_="ϑ",q_="⊲",Z_="⊳",K_="⫨",X_="⫫",J_="⫩",__="В",eee="в",tee="⊢",ree="⊨",nee="⊩",iee="⊫",see="⫦",oee="⊻",aee="∨",cee="⋁",lee="≚",uee="⋮",hee="|",dee="‖",fee="|",gee="‖",pee="∣",mee="|",yee="❘",vee="≀",Mee=" ",wee="𝔙",See="𝔳",Tee="⊲",Cee="⊂⃒",Iee="⊃⃒",bee="𝕍",Eee="𝕧",xee="∝",Ree="⊳",Aee="𝒱",kee="𝓋",Pee="⫋︀",Dee="⊊︀",Lee="⫌︀",Nee="⊋︀",Oee="⊪",zee="⦚",Bee="Ŵ",jee="ŵ",Fee="⩟",Uee="∧",Wee="⋀",Vee="≙",$ee="℘",Yee="𝔚",Gee="𝔴",Hee="𝕎",Qee="𝕨",qee="℘",Zee="≀",Kee="≀",Xee="𝒲",Jee="𝓌",_ee="⋂",ete="◯",tte="⋃",rte="▽",nte="𝔛",ite="𝔵",ste="⟷",ote="⟺",ate="Ξ",cte="ξ",lte="⟵",ute="⟸",hte="⟼",dte="⋻",fte="⨀",gte="𝕏",pte="𝕩",mte="⨁",yte="⨂",vte="⟶",Mte="⟹",wte="𝒳",Ste="𝓍",Tte="⨆",Cte="⨄",Ite="△",bte="⋁",Ete="⋀",xte="Ý",Rte="ý",Ate="Я",kte="я",Pte="Ŷ",Dte="ŷ",Lte="Ы",Nte="ы",Ote="¥",zte="𝔜",Bte="𝔶",jte="Ї",Fte="ї",Ute="𝕐",Wte="𝕪",Vte="𝒴",$te="𝓎",Yte="Ю",Gte="ю",Hte="ÿ",Qte="Ÿ",qte="Ź",Zte="ź",Kte="Ž",Xte="ž",Jte="З",_te="з",ere="Ż",tre="ż",rre="ℨ",nre="​",ire="Ζ",sre="ζ",ore="𝔷",are="ℨ",cre="Ж",lre="ж",ure="⇝",hre="𝕫",dre="ℤ",fre="𝒵",gre="𝓏",pre="‍",mre="‌",Ty={Aacute:eb,aacute:tb,Abreve:rb,abreve:nb,ac:ib,acd:sb,acE:ob,Acirc:ab,acirc:cb,acute:lb,Acy:ub,acy:hb,AElig:db,aelig:fb,af:gb,Afr:pb,afr:mb,Agrave:yb,agrave:vb,alefsym:Mb,aleph:wb,Alpha:Sb,alpha:Tb,Amacr:Cb,amacr:Ib,amalg:bb,amp:Eb,AMP:xb,andand:Rb,And:Ab,and:kb,andd:Pb,andslope:Db,andv:Lb,ang:Nb,ange:Ob,angle:zb,angmsdaa:Bb,angmsdab:jb,angmsdac:Fb,angmsdad:Ub,angmsdae:Wb,angmsdaf:Vb,angmsdag:$b,angmsdah:Yb,angmsd:Gb,angrt:Hb,angrtvb:Qb,angrtvbd:qb,angsph:Zb,angst:Kb,angzarr:Xb,Aogon:Jb,aogon:_b,Aopf:eE,aopf:tE,apacir:rE,ap:nE,apE:iE,ape:sE,apid:oE,apos:aE,ApplyFunction:cE,approx:lE,approxeq:uE,Aring:hE,aring:dE,Ascr:fE,ascr:gE,Assign:pE,ast:mE,asymp:yE,asympeq:vE,Atilde:ME,atilde:wE,Auml:SE,auml:TE,awconint:CE,awint:IE,backcong:bE,backepsilon:EE,backprime:xE,backsim:RE,backsimeq:AE,Backslash:kE,Barv:PE,barvee:DE,barwed:LE,Barwed:NE,barwedge:OE,bbrk:zE,bbrktbrk:BE,bcong:jE,Bcy:FE,bcy:UE,bdquo:WE,becaus:VE,because:$E,Because:YE,bemptyv:GE,bepsi:HE,bernou:QE,Bernoullis:qE,Beta:ZE,beta:KE,beth:XE,between:JE,Bfr:_E,bfr:e2,bigcap:t2,bigcirc:r2,bigcup:n2,bigodot:i2,bigoplus:s2,bigotimes:o2,bigsqcup:a2,bigstar:c2,bigtriangledown:l2,bigtriangleup:u2,biguplus:h2,bigvee:d2,bigwedge:f2,bkarow:g2,blacklozenge:p2,blacksquare:m2,blacktriangle:y2,blacktriangledown:v2,blacktriangleleft:M2,blacktriangleright:w2,blank:S2,blk12:T2,blk14:C2,blk34:I2,block:b2,bne:E2,bnequiv:x2,bNot:R2,bnot:A2,Bopf:k2,bopf:P2,bot:D2,bottom:L2,bowtie:N2,boxbox:O2,boxdl:z2,boxdL:B2,boxDl:j2,boxDL:F2,boxdr:U2,boxdR:W2,boxDr:V2,boxDR:$2,boxh:Y2,boxH:G2,boxhd:H2,boxHd:Q2,boxhD:q2,boxHD:Z2,boxhu:K2,boxHu:X2,boxhU:J2,boxHU:_2,boxminus:ex,boxplus:tx,boxtimes:rx,boxul:nx,boxuL:ix,boxUl:sx,boxUL:ox,boxur:ax,boxuR:cx,boxUr:lx,boxUR:ux,boxv:hx,boxV:dx,boxvh:fx,boxvH:gx,boxVh:px,boxVH:mx,boxvl:yx,boxvL:vx,boxVl:Mx,boxVL:wx,boxvr:Sx,boxvR:Tx,boxVr:Cx,boxVR:Ix,bprime:bx,breve:Ex,Breve:xx,brvbar:Rx,bscr:Ax,Bscr:kx,bsemi:Px,bsim:Dx,bsime:Lx,bsolb:Nx,bsol:Ox,bsolhsub:zx,bull:Bx,bullet:jx,bump:Fx,bumpE:Ux,bumpe:Wx,Bumpeq:Vx,bumpeq:$x,Cacute:Yx,cacute:Gx,capand:Hx,capbrcup:Qx,capcap:qx,cap:Zx,Cap:Kx,capcup:Xx,capdot:Jx,CapitalDifferentialD:_x,caps:eR,caret:tR,caron:rR,Cayleys:nR,ccaps:iR,Ccaron:sR,ccaron:oR,Ccedil:aR,ccedil:cR,Ccirc:lR,ccirc:uR,Cconint:hR,ccups:dR,ccupssm:fR,Cdot:gR,cdot:pR,cedil:mR,Cedilla:yR,cemptyv:vR,cent:MR,centerdot:wR,CenterDot:SR,cfr:TR,Cfr:CR,CHcy:IR,chcy:bR,check:ER,checkmark:xR,Chi:RR,chi:AR,circ:kR,circeq:PR,circlearrowleft:DR,circlearrowright:LR,circledast:NR,circledcirc:OR,circleddash:zR,CircleDot:BR,circledR:jR,circledS:FR,CircleMinus:UR,CirclePlus:WR,CircleTimes:VR,cir:$R,cirE:YR,cire:GR,cirfnint:HR,cirmid:QR,cirscir:qR,ClockwiseContourIntegral:ZR,CloseCurlyDoubleQuote:KR,CloseCurlyQuote:XR,clubs:JR,clubsuit:_R,colon:eA,Colon:tA,Colone:rA,colone:nA,coloneq:iA,comma:sA,commat:oA,comp:aA,compfn:cA,complement:lA,complexes:uA,cong:hA,congdot:dA,Congruent:fA,conint:gA,Conint:pA,ContourIntegral:mA,copf:yA,Copf:vA,coprod:MA,Coproduct:wA,copy:SA,COPY:TA,copysr:CA,CounterClockwiseContourIntegral:IA,crarr:bA,cross:EA,Cross:xA,Cscr:RA,cscr:AA,csub:kA,csube:PA,csup:DA,csupe:LA,ctdot:NA,cudarrl:OA,cudarrr:zA,cuepr:BA,cuesc:jA,cularr:FA,cularrp:UA,cupbrcap:WA,cupcap:VA,CupCap:$A,cup:YA,Cup:GA,cupcup:HA,cupdot:QA,cupor:qA,cups:ZA,curarr:KA,curarrm:XA,curlyeqprec:JA,curlyeqsucc:_A,curlyvee:ek,curlywedge:tk,curren:rk,curvearrowleft:nk,curvearrowright:ik,cuvee:sk,cuwed:ok,cwconint:ak,cwint:ck,cylcty:lk,dagger:uk,Dagger:hk,daleth:dk,darr:fk,Darr:gk,dArr:pk,dash:mk,Dashv:yk,dashv:vk,dbkarow:Mk,dblac:wk,Dcaron:Sk,dcaron:Tk,Dcy:Ck,dcy:Ik,ddagger:bk,ddarr:Ek,DD:xk,dd:Rk,DDotrahd:Ak,ddotseq:kk,deg:Pk,Del:Dk,Delta:Lk,delta:Nk,demptyv:Ok,dfisht:zk,Dfr:Bk,dfr:jk,dHar:Fk,dharl:Uk,dharr:Wk,DiacriticalAcute:Vk,DiacriticalDot:$k,DiacriticalDoubleAcute:Yk,DiacriticalGrave:Gk,DiacriticalTilde:Hk,diam:Qk,diamond:qk,Diamond:Zk,diamondsuit:Kk,diams:Xk,die:Jk,DifferentialD:_k,digamma:eP,disin:tP,div:rP,divide:nP,divideontimes:iP,divonx:sP,DJcy:oP,djcy:aP,dlcorn:cP,dlcrop:lP,dollar:uP,Dopf:hP,dopf:dP,Dot:fP,dot:gP,DotDot:pP,doteq:mP,doteqdot:yP,DotEqual:vP,dotminus:MP,dotplus:wP,dotsquare:SP,doublebarwedge:TP,DoubleContourIntegral:CP,DoubleDot:IP,DoubleDownArrow:bP,DoubleLeftArrow:EP,DoubleLeftRightArrow:xP,DoubleLeftTee:RP,DoubleLongLeftArrow:AP,DoubleLongLeftRightArrow:kP,DoubleLongRightArrow:PP,DoubleRightArrow:DP,DoubleRightTee:LP,DoubleUpArrow:NP,DoubleUpDownArrow:OP,DoubleVerticalBar:zP,DownArrowBar:BP,downarrow:jP,DownArrow:FP,Downarrow:UP,DownArrowUpArrow:WP,DownBreve:VP,downdownarrows:$P,downharpoonleft:YP,downharpoonright:GP,DownLeftRightVector:HP,DownLeftTeeVector:QP,DownLeftVectorBar:qP,DownLeftVector:ZP,DownRightTeeVector:KP,DownRightVectorBar:XP,DownRightVector:JP,DownTeeArrow:_P,DownTee:eD,drbkarow:tD,drcorn:rD,drcrop:nD,Dscr:iD,dscr:sD,DScy:oD,dscy:aD,dsol:cD,Dstrok:lD,dstrok:uD,dtdot:hD,dtri:dD,dtrif:fD,duarr:gD,duhar:pD,dwangle:mD,DZcy:yD,dzcy:vD,dzigrarr:MD,Eacute:wD,eacute:SD,easter:TD,Ecaron:CD,ecaron:ID,Ecirc:bD,ecirc:ED,ecir:xD,ecolon:RD,Ecy:AD,ecy:kD,eDDot:PD,Edot:DD,edot:LD,eDot:ND,ee:OD,efDot:zD,Efr:BD,efr:jD,eg:FD,Egrave:UD,egrave:WD,egs:VD,egsdot:$D,el:YD,Element:GD,elinters:HD,ell:QD,els:qD,elsdot:ZD,Emacr:KD,emacr:XD,empty:JD,emptyset:_D,EmptySmallSquare:eL,emptyv:tL,EmptyVerySmallSquare:rL,emsp13:nL,emsp14:iL,emsp:sL,ENG:oL,eng:aL,ensp:cL,Eogon:lL,eogon:uL,Eopf:hL,eopf:dL,epar:fL,eparsl:gL,eplus:pL,epsi:mL,Epsilon:yL,epsilon:vL,epsiv:ML,eqcirc:wL,eqcolon:SL,eqsim:TL,eqslantgtr:CL,eqslantless:IL,Equal:bL,equals:EL,EqualTilde:xL,equest:RL,Equilibrium:AL,equiv:kL,equivDD:PL,eqvparsl:DL,erarr:LL,erDot:NL,escr:OL,Escr:zL,esdot:BL,Esim:jL,esim:FL,Eta:UL,eta:WL,ETH:VL,eth:$L,Euml:YL,euml:GL,euro:HL,excl:QL,exist:qL,Exists:ZL,expectation:KL,exponentiale:XL,ExponentialE:JL,fallingdotseq:_L,Fcy:eN,fcy:tN,female:rN,ffilig:nN,fflig:iN,ffllig:sN,Ffr:oN,ffr:aN,filig:cN,FilledSmallSquare:lN,FilledVerySmallSquare:uN,fjlig:hN,flat:dN,fllig:fN,fltns:gN,fnof:pN,Fopf:mN,fopf:yN,forall:vN,ForAll:MN,fork:wN,forkv:SN,Fouriertrf:TN,fpartint:CN,frac12:IN,frac13:bN,frac14:EN,frac15:xN,frac16:RN,frac18:AN,frac23:kN,frac25:PN,frac34:DN,frac35:LN,frac38:NN,frac45:ON,frac56:zN,frac58:BN,frac78:jN,frasl:FN,frown:UN,fscr:WN,Fscr:VN,gacute:$N,Gamma:YN,gamma:GN,Gammad:HN,gammad:QN,gap:qN,Gbreve:ZN,gbreve:KN,Gcedil:XN,Gcirc:JN,gcirc:_N,Gcy:eO,gcy:tO,Gdot:rO,gdot:nO,ge:iO,gE:sO,gEl:oO,gel:aO,geq:cO,geqq:lO,geqslant:uO,gescc:hO,ges:dO,gesdot:fO,gesdoto:gO,gesdotol:pO,gesl:mO,gesles:yO,Gfr:vO,gfr:MO,gg:wO,Gg:SO,ggg:TO,gimel:CO,GJcy:IO,gjcy:bO,gla:EO,gl:xO,glE:RO,glj:AO,gnap:kO,gnapprox:PO,gne:DO,gnE:LO,gneq:NO,gneqq:OO,gnsim:zO,Gopf:BO,gopf:jO,grave:FO,GreaterEqual:UO,GreaterEqualLess:WO,GreaterFullEqual:VO,GreaterGreater:$O,GreaterLess:YO,GreaterSlantEqual:GO,GreaterTilde:HO,Gscr:QO,gscr:qO,gsim:ZO,gsime:KO,gsiml:XO,gtcc:JO,gtcir:_O,gt:ez,GT:tz,Gt:rz,gtdot:nz,gtlPar:iz,gtquest:sz,gtrapprox:oz,gtrarr:az,gtrdot:cz,gtreqless:lz,gtreqqless:uz,gtrless:hz,gtrsim:dz,gvertneqq:fz,gvnE:gz,Hacek:pz,hairsp:mz,half:yz,hamilt:vz,HARDcy:Mz,hardcy:wz,harrcir:Sz,harr:Tz,hArr:Cz,harrw:Iz,Hat:bz,hbar:Ez,Hcirc:xz,hcirc:Rz,hearts:Az,heartsuit:kz,hellip:Pz,hercon:Dz,hfr:Lz,Hfr:Nz,HilbertSpace:Oz,hksearow:zz,hkswarow:Bz,hoarr:jz,homtht:Fz,hookleftarrow:Uz,hookrightarrow:Wz,hopf:Vz,Hopf:$z,horbar:Yz,HorizontalLine:Gz,hscr:Hz,Hscr:Qz,hslash:qz,Hstrok:Zz,hstrok:Kz,HumpDownHump:Xz,HumpEqual:Jz,hybull:_z,hyphen:eB,Iacute:tB,iacute:rB,ic:nB,Icirc:iB,icirc:sB,Icy:oB,icy:aB,Idot:cB,IEcy:lB,iecy:uB,iexcl:hB,iff:dB,ifr:fB,Ifr:gB,Igrave:pB,igrave:mB,ii:yB,iiiint:vB,iiint:MB,iinfin:wB,iiota:SB,IJlig:TB,ijlig:CB,Imacr:IB,imacr:bB,image:EB,ImaginaryI:xB,imagline:RB,imagpart:AB,imath:kB,Im:PB,imof:DB,imped:LB,Implies:NB,incare:OB,in:"∈",infin:zB,infintie:BB,inodot:jB,intcal:FB,int:UB,Int:WB,integers:VB,Integral:$B,intercal:YB,Intersection:GB,intlarhk:HB,intprod:QB,InvisibleComma:qB,InvisibleTimes:ZB,IOcy:KB,iocy:XB,Iogon:JB,iogon:_B,Iopf:ej,iopf:tj,Iota:rj,iota:nj,iprod:ij,iquest:sj,iscr:oj,Iscr:aj,isin:cj,isindot:lj,isinE:uj,isins:hj,isinsv:dj,isinv:fj,it:gj,Itilde:pj,itilde:mj,Iukcy:yj,iukcy:vj,Iuml:Mj,iuml:wj,Jcirc:Sj,jcirc:Tj,Jcy:Cj,jcy:Ij,Jfr:bj,jfr:Ej,jmath:xj,Jopf:Rj,jopf:Aj,Jscr:kj,jscr:Pj,Jsercy:Dj,jsercy:Lj,Jukcy:Nj,jukcy:Oj,Kappa:zj,kappa:Bj,kappav:jj,Kcedil:Fj,kcedil:Uj,Kcy:Wj,kcy:Vj,Kfr:$j,kfr:Yj,kgreen:Gj,KHcy:Hj,khcy:Qj,KJcy:qj,kjcy:Zj,Kopf:Kj,kopf:Xj,Kscr:Jj,kscr:_j,lAarr:e3,Lacute:t3,lacute:r3,laemptyv:n3,lagran:i3,Lambda:s3,lambda:o3,lang:a3,Lang:c3,langd:l3,langle:u3,lap:h3,Laplacetrf:d3,laquo:f3,larrb:g3,larrbfs:p3,larr:m3,Larr:y3,lArr:v3,larrfs:M3,larrhk:w3,larrlp:S3,larrpl:T3,larrsim:C3,larrtl:I3,latail:b3,lAtail:E3,lat:x3,late:R3,lates:A3,lbarr:k3,lBarr:P3,lbbrk:D3,lbrace:L3,lbrack:N3,lbrke:O3,lbrksld:z3,lbrkslu:B3,Lcaron:j3,lcaron:F3,Lcedil:U3,lcedil:W3,lceil:V3,lcub:$3,Lcy:Y3,lcy:G3,ldca:H3,ldquo:Q3,ldquor:q3,ldrdhar:Z3,ldrushar:K3,ldsh:X3,le:J3,lE:_3,LeftAngleBracket:e4,LeftArrowBar:t4,leftarrow:r4,LeftArrow:n4,Leftarrow:i4,LeftArrowRightArrow:s4,leftarrowtail:o4,LeftCeiling:a4,LeftDoubleBracket:c4,LeftDownTeeVector:l4,LeftDownVectorBar:u4,LeftDownVector:h4,LeftFloor:d4,leftharpoondown:f4,leftharpoonup:g4,leftleftarrows:p4,leftrightarrow:m4,LeftRightArrow:y4,Leftrightarrow:v4,leftrightarrows:M4,leftrightharpoons:w4,leftrightsquigarrow:S4,LeftRightVector:T4,LeftTeeArrow:C4,LeftTee:I4,LeftTeeVector:b4,leftthreetimes:E4,LeftTriangleBar:x4,LeftTriangle:R4,LeftTriangleEqual:A4,LeftUpDownVector:k4,LeftUpTeeVector:P4,LeftUpVectorBar:D4,LeftUpVector:L4,LeftVectorBar:N4,LeftVector:O4,lEg:z4,leg:B4,leq:j4,leqq:F4,leqslant:U4,lescc:W4,les:V4,lesdot:$4,lesdoto:Y4,lesdotor:G4,lesg:H4,lesges:Q4,lessapprox:q4,lessdot:Z4,lesseqgtr:K4,lesseqqgtr:X4,LessEqualGreater:J4,LessFullEqual:_4,LessGreater:eF,lessgtr:tF,LessLess:rF,lesssim:nF,LessSlantEqual:iF,LessTilde:sF,lfisht:oF,lfloor:aF,Lfr:cF,lfr:lF,lg:uF,lgE:hF,lHar:dF,lhard:fF,lharu:gF,lharul:pF,lhblk:mF,LJcy:yF,ljcy:vF,llarr:MF,ll:wF,Ll:SF,llcorner:TF,Lleftarrow:CF,llhard:IF,lltri:bF,Lmidot:EF,lmidot:xF,lmoustache:RF,lmoust:AF,lnap:kF,lnapprox:PF,lne:DF,lnE:LF,lneq:NF,lneqq:OF,lnsim:zF,loang:BF,loarr:jF,lobrk:FF,longleftarrow:UF,LongLeftArrow:WF,Longleftarrow:VF,longleftrightarrow:$F,LongLeftRightArrow:YF,Longleftrightarrow:GF,longmapsto:HF,longrightarrow:QF,LongRightArrow:qF,Longrightarrow:ZF,looparrowleft:KF,looparrowright:XF,lopar:JF,Lopf:_F,lopf:eU,loplus:tU,lotimes:rU,lowast:nU,lowbar:iU,LowerLeftArrow:sU,LowerRightArrow:oU,loz:aU,lozenge:cU,lozf:lU,lpar:uU,lparlt:hU,lrarr:dU,lrcorner:fU,lrhar:gU,lrhard:pU,lrm:mU,lrtri:yU,lsaquo:vU,lscr:MU,Lscr:wU,lsh:SU,Lsh:TU,lsim:CU,lsime:IU,lsimg:bU,lsqb:EU,lsquo:xU,lsquor:RU,Lstrok:AU,lstrok:kU,ltcc:PU,ltcir:DU,lt:LU,LT:NU,Lt:OU,ltdot:zU,lthree:BU,ltimes:jU,ltlarr:FU,ltquest:UU,ltri:WU,ltrie:VU,ltrif:$U,ltrPar:YU,lurdshar:GU,luruhar:HU,lvertneqq:QU,lvnE:qU,macr:ZU,male:KU,malt:XU,maltese:JU,Map:"⤅",map:_U,mapsto:e5,mapstodown:t5,mapstoleft:r5,mapstoup:n5,marker:i5,mcomma:s5,Mcy:o5,mcy:a5,mdash:c5,mDDot:l5,measuredangle:u5,MediumSpace:h5,Mellintrf:d5,Mfr:f5,mfr:g5,mho:p5,micro:m5,midast:y5,midcir:v5,mid:M5,middot:w5,minusb:S5,minus:T5,minusd:C5,minusdu:I5,MinusPlus:b5,mlcp:E5,mldr:x5,mnplus:R5,models:A5,Mopf:k5,mopf:P5,mp:D5,mscr:L5,Mscr:N5,mstpos:O5,Mu:z5,mu:B5,multimap:j5,mumap:F5,nabla:U5,Nacute:W5,nacute:V5,nang:$5,nap:Y5,napE:G5,napid:H5,napos:Q5,napprox:q5,natural:Z5,naturals:K5,natur:X5,nbsp:J5,nbump:_5,nbumpe:eW,ncap:tW,Ncaron:rW,ncaron:nW,Ncedil:iW,ncedil:sW,ncong:oW,ncongdot:aW,ncup:cW,Ncy:lW,ncy:uW,ndash:hW,nearhk:dW,nearr:fW,neArr:gW,nearrow:pW,ne:mW,nedot:yW,NegativeMediumSpace:vW,NegativeThickSpace:MW,NegativeThinSpace:wW,NegativeVeryThinSpace:SW,nequiv:TW,nesear:CW,nesim:IW,NestedGreaterGreater:bW,NestedLessLess:EW,NewLine:xW,nexist:RW,nexists:AW,Nfr:kW,nfr:PW,ngE:DW,nge:LW,ngeq:NW,ngeqq:OW,ngeqslant:zW,nges:BW,nGg:jW,ngsim:FW,nGt:UW,ngt:WW,ngtr:VW,nGtv:$W,nharr:YW,nhArr:GW,nhpar:HW,ni:QW,nis:qW,nisd:ZW,niv:KW,NJcy:XW,njcy:JW,nlarr:_W,nlArr:eV,nldr:tV,nlE:rV,nle:nV,nleftarrow:iV,nLeftarrow:sV,nleftrightarrow:oV,nLeftrightarrow:aV,nleq:cV,nleqq:lV,nleqslant:uV,nles:hV,nless:dV,nLl:fV,nlsim:gV,nLt:pV,nlt:mV,nltri:yV,nltrie:vV,nLtv:MV,nmid:wV,NoBreak:SV,NonBreakingSpace:TV,nopf:CV,Nopf:IV,Not:bV,not:EV,NotCongruent:xV,NotCupCap:RV,NotDoubleVerticalBar:AV,NotElement:kV,NotEqual:PV,NotEqualTilde:DV,NotExists:LV,NotGreater:NV,NotGreaterEqual:OV,NotGreaterFullEqual:zV,NotGreaterGreater:BV,NotGreaterLess:jV,NotGreaterSlantEqual:FV,NotGreaterTilde:UV,NotHumpDownHump:WV,NotHumpEqual:VV,notin:$V,notindot:YV,notinE:GV,notinva:HV,notinvb:QV,notinvc:qV,NotLeftTriangleBar:ZV,NotLeftTriangle:KV,NotLeftTriangleEqual:XV,NotLess:JV,NotLessEqual:_V,NotLessGreater:e$,NotLessLess:t$,NotLessSlantEqual:r$,NotLessTilde:n$,NotNestedGreaterGreater:i$,NotNestedLessLess:s$,notni:o$,notniva:a$,notnivb:c$,notnivc:l$,NotPrecedes:u$,NotPrecedesEqual:h$,NotPrecedesSlantEqual:d$,NotReverseElement:f$,NotRightTriangleBar:g$,NotRightTriangle:p$,NotRightTriangleEqual:m$,NotSquareSubset:y$,NotSquareSubsetEqual:v$,NotSquareSuperset:M$,NotSquareSupersetEqual:w$,NotSubset:S$,NotSubsetEqual:T$,NotSucceeds:C$,NotSucceedsEqual:I$,NotSucceedsSlantEqual:b$,NotSucceedsTilde:E$,NotSuperset:x$,NotSupersetEqual:R$,NotTilde:A$,NotTildeEqual:k$,NotTildeFullEqual:P$,NotTildeTilde:D$,NotVerticalBar:L$,nparallel:N$,npar:O$,nparsl:z$,npart:B$,npolint:j$,npr:F$,nprcue:U$,nprec:W$,npreceq:V$,npre:$$,nrarrc:Y$,nrarr:G$,nrArr:H$,nrarrw:Q$,nrightarrow:q$,nRightarrow:Z$,nrtri:K$,nrtrie:X$,nsc:J$,nsccue:_$,nsce:eY,Nscr:tY,nscr:rY,nshortmid:nY,nshortparallel:iY,nsim:sY,nsime:oY,nsimeq:aY,nsmid:cY,nspar:lY,nsqsube:uY,nsqsupe:hY,nsub:dY,nsubE:fY,nsube:gY,nsubset:pY,nsubseteq:mY,nsubseteqq:yY,nsucc:vY,nsucceq:MY,nsup:wY,nsupE:SY,nsupe:TY,nsupset:CY,nsupseteq:IY,nsupseteqq:bY,ntgl:EY,Ntilde:xY,ntilde:RY,ntlg:AY,ntriangleleft:kY,ntrianglelefteq:PY,ntriangleright:DY,ntrianglerighteq:LY,Nu:NY,nu:OY,num:zY,numero:BY,numsp:jY,nvap:FY,nvdash:UY,nvDash:WY,nVdash:VY,nVDash:$Y,nvge:YY,nvgt:GY,nvHarr:HY,nvinfin:QY,nvlArr:qY,nvle:ZY,nvlt:KY,nvltrie:XY,nvrArr:JY,nvrtrie:_Y,nvsim:eG,nwarhk:tG,nwarr:rG,nwArr:nG,nwarrow:iG,nwnear:sG,Oacute:oG,oacute:aG,oast:cG,Ocirc:lG,ocirc:uG,ocir:hG,Ocy:dG,ocy:fG,odash:gG,Odblac:pG,odblac:mG,odiv:yG,odot:vG,odsold:MG,OElig:wG,oelig:SG,ofcir:TG,Ofr:CG,ofr:IG,ogon:bG,Ograve:EG,ograve:xG,ogt:RG,ohbar:AG,ohm:kG,oint:PG,olarr:DG,olcir:LG,olcross:NG,oline:OG,olt:zG,Omacr:BG,omacr:jG,Omega:FG,omega:UG,Omicron:WG,omicron:VG,omid:$G,ominus:YG,Oopf:GG,oopf:HG,opar:QG,OpenCurlyDoubleQuote:qG,OpenCurlyQuote:ZG,operp:KG,oplus:XG,orarr:JG,Or:_G,or:e8,ord:t8,order:r8,orderof:n8,ordf:i8,ordm:s8,origof:o8,oror:a8,orslope:c8,orv:l8,oS:u8,Oscr:h8,oscr:d8,Oslash:f8,oslash:g8,osol:p8,Otilde:m8,otilde:y8,otimesas:v8,Otimes:M8,otimes:w8,Ouml:S8,ouml:T8,ovbar:C8,OverBar:I8,OverBrace:b8,OverBracket:E8,OverParenthesis:x8,para:R8,parallel:A8,par:k8,parsim:P8,parsl:D8,part:L8,PartialD:N8,Pcy:O8,pcy:z8,percnt:B8,period:j8,permil:F8,perp:U8,pertenk:W8,Pfr:V8,pfr:$8,Phi:Y8,phi:G8,phiv:H8,phmmat:Q8,phone:q8,Pi:Z8,pi:K8,pitchfork:X8,piv:J8,planck:_8,planckh:e6,plankv:t6,plusacir:r6,plusb:n6,pluscir:i6,plus:s6,plusdo:o6,plusdu:a6,pluse:c6,PlusMinus:l6,plusmn:u6,plussim:h6,plustwo:d6,pm:f6,Poincareplane:g6,pointint:p6,popf:m6,Popf:y6,pound:v6,prap:M6,Pr:w6,pr:S6,prcue:T6,precapprox:C6,prec:I6,preccurlyeq:b6,Precedes:E6,PrecedesEqual:x6,PrecedesSlantEqual:R6,PrecedesTilde:A6,preceq:k6,precnapprox:P6,precneqq:D6,precnsim:L6,pre:N6,prE:O6,precsim:z6,prime:B6,Prime:j6,primes:F6,prnap:U6,prnE:W6,prnsim:V6,prod:$6,Product:Y6,profalar:G6,profline:H6,profsurf:Q6,prop:q6,Proportional:Z6,Proportion:K6,propto:X6,prsim:J6,prurel:_6,Pscr:e9,pscr:t9,Psi:r9,psi:n9,puncsp:i9,Qfr:s9,qfr:o9,qint:a9,qopf:c9,Qopf:l9,qprime:u9,Qscr:h9,qscr:d9,quaternions:f9,quatint:g9,quest:p9,questeq:m9,quot:y9,QUOT:v9,rAarr:M9,race:w9,Racute:S9,racute:T9,radic:C9,raemptyv:I9,rang:b9,Rang:E9,rangd:x9,range:R9,rangle:A9,raquo:k9,rarrap:P9,rarrb:D9,rarrbfs:L9,rarrc:N9,rarr:O9,Rarr:z9,rArr:B9,rarrfs:j9,rarrhk:F9,rarrlp:U9,rarrpl:W9,rarrsim:V9,Rarrtl:$9,rarrtl:Y9,rarrw:G9,ratail:H9,rAtail:Q9,ratio:q9,rationals:Z9,rbarr:K9,rBarr:X9,RBarr:J9,rbbrk:_9,rbrace:eH,rbrack:tH,rbrke:rH,rbrksld:nH,rbrkslu:iH,Rcaron:sH,rcaron:oH,Rcedil:aH,rcedil:cH,rceil:lH,rcub:uH,Rcy:hH,rcy:dH,rdca:fH,rdldhar:gH,rdquo:pH,rdquor:mH,rdsh:yH,real:vH,realine:MH,realpart:wH,reals:SH,Re:TH,rect:CH,reg:IH,REG:bH,ReverseElement:EH,ReverseEquilibrium:xH,ReverseUpEquilibrium:RH,rfisht:AH,rfloor:kH,rfr:PH,Rfr:DH,rHar:LH,rhard:NH,rharu:OH,rharul:zH,Rho:BH,rho:jH,rhov:FH,RightAngleBracket:UH,RightArrowBar:WH,rightarrow:VH,RightArrow:$H,Rightarrow:YH,RightArrowLeftArrow:GH,rightarrowtail:HH,RightCeiling:QH,RightDoubleBracket:qH,RightDownTeeVector:ZH,RightDownVectorBar:KH,RightDownVector:XH,RightFloor:JH,rightharpoondown:_H,rightharpoonup:e7,rightleftarrows:t7,rightleftharpoons:r7,rightrightarrows:n7,rightsquigarrow:i7,RightTeeArrow:s7,RightTee:o7,RightTeeVector:a7,rightthreetimes:c7,RightTriangleBar:l7,RightTriangle:u7,RightTriangleEqual:h7,RightUpDownVector:d7,RightUpTeeVector:f7,RightUpVectorBar:g7,RightUpVector:p7,RightVectorBar:m7,RightVector:y7,ring:v7,risingdotseq:M7,rlarr:w7,rlhar:S7,rlm:T7,rmoustache:C7,rmoust:I7,rnmid:b7,roang:E7,roarr:x7,robrk:R7,ropar:A7,ropf:k7,Ropf:P7,roplus:D7,rotimes:L7,RoundImplies:N7,rpar:O7,rpargt:z7,rppolint:B7,rrarr:j7,Rrightarrow:F7,rsaquo:U7,rscr:W7,Rscr:V7,rsh:$7,Rsh:Y7,rsqb:G7,rsquo:H7,rsquor:Q7,rthree:q7,rtimes:Z7,rtri:K7,rtrie:X7,rtrif:J7,rtriltri:_7,RuleDelayed:eQ,ruluhar:tQ,rx:rQ,Sacute:nQ,sacute:iQ,sbquo:sQ,scap:oQ,Scaron:aQ,scaron:cQ,Sc:lQ,sc:uQ,sccue:hQ,sce:dQ,scE:fQ,Scedil:gQ,scedil:pQ,Scirc:mQ,scirc:yQ,scnap:vQ,scnE:MQ,scnsim:wQ,scpolint:SQ,scsim:TQ,Scy:CQ,scy:IQ,sdotb:bQ,sdot:EQ,sdote:xQ,searhk:RQ,searr:AQ,seArr:kQ,searrow:PQ,sect:DQ,semi:LQ,seswar:NQ,setminus:OQ,setmn:zQ,sext:BQ,Sfr:jQ,sfr:FQ,sfrown:UQ,sharp:WQ,SHCHcy:VQ,shchcy:$Q,SHcy:YQ,shcy:GQ,ShortDownArrow:HQ,ShortLeftArrow:QQ,shortmid:qQ,shortparallel:ZQ,ShortRightArrow:KQ,ShortUpArrow:XQ,shy:JQ,Sigma:_Q,sigma:eq,sigmaf:tq,sigmav:rq,sim:nq,simdot:iq,sime:sq,simeq:oq,simg:aq,simgE:cq,siml:lq,simlE:uq,simne:hq,simplus:dq,simrarr:fq,slarr:gq,SmallCircle:pq,smallsetminus:mq,smashp:yq,smeparsl:vq,smid:Mq,smile:wq,smt:Sq,smte:Tq,smtes:Cq,SOFTcy:Iq,softcy:bq,solbar:Eq,solb:xq,sol:Rq,Sopf:Aq,sopf:kq,spades:Pq,spadesuit:Dq,spar:Lq,sqcap:Nq,sqcaps:Oq,sqcup:zq,sqcups:Bq,Sqrt:jq,sqsub:Fq,sqsube:Uq,sqsubset:Wq,sqsubseteq:Vq,sqsup:$q,sqsupe:Yq,sqsupset:Gq,sqsupseteq:Hq,square:Qq,Square:qq,SquareIntersection:Zq,SquareSubset:Kq,SquareSubsetEqual:Xq,SquareSuperset:Jq,SquareSupersetEqual:_q,SquareUnion:eZ,squarf:tZ,squ:rZ,squf:nZ,srarr:iZ,Sscr:sZ,sscr:oZ,ssetmn:aZ,ssmile:cZ,sstarf:lZ,Star:uZ,star:hZ,starf:dZ,straightepsilon:fZ,straightphi:gZ,strns:pZ,sub:mZ,Sub:yZ,subdot:vZ,subE:MZ,sube:wZ,subedot:SZ,submult:TZ,subnE:CZ,subne:IZ,subplus:bZ,subrarr:EZ,subset:xZ,Subset:RZ,subseteq:AZ,subseteqq:kZ,SubsetEqual:PZ,subsetneq:DZ,subsetneqq:LZ,subsim:NZ,subsub:OZ,subsup:zZ,succapprox:BZ,succ:jZ,succcurlyeq:FZ,Succeeds:UZ,SucceedsEqual:WZ,SucceedsSlantEqual:VZ,SucceedsTilde:$Z,succeq:YZ,succnapprox:GZ,succneqq:HZ,succnsim:QZ,succsim:qZ,SuchThat:ZZ,sum:KZ,Sum:XZ,sung:JZ,sup1:_Z,sup2:eK,sup3:tK,sup:rK,Sup:nK,supdot:iK,supdsub:sK,supE:oK,supe:aK,supedot:cK,Superset:lK,SupersetEqual:uK,suphsol:hK,suphsub:dK,suplarr:fK,supmult:gK,supnE:pK,supne:mK,supplus:yK,supset:vK,Supset:MK,supseteq:wK,supseteqq:SK,supsetneq:TK,supsetneqq:CK,supsim:IK,supsub:bK,supsup:EK,swarhk:xK,swarr:RK,swArr:AK,swarrow:kK,swnwar:PK,szlig:DK,Tab:LK,target:NK,Tau:OK,tau:zK,tbrk:BK,Tcaron:jK,tcaron:FK,Tcedil:UK,tcedil:WK,Tcy:VK,tcy:$K,tdot:YK,telrec:GK,Tfr:HK,tfr:QK,there4:qK,therefore:ZK,Therefore:KK,Theta:XK,theta:JK,thetasym:_K,thetav:eX,thickapprox:tX,thicksim:rX,ThickSpace:nX,ThinSpace:iX,thinsp:sX,thkap:oX,thksim:aX,THORN:cX,thorn:lX,tilde:uX,Tilde:hX,TildeEqual:dX,TildeFullEqual:fX,TildeTilde:gX,timesbar:pX,timesb:mX,times:yX,timesd:vX,tint:MX,toea:wX,topbot:SX,topcir:TX,top:CX,Topf:IX,topf:bX,topfork:EX,tosa:xX,tprime:RX,trade:AX,TRADE:kX,triangle:PX,triangledown:DX,triangleleft:LX,trianglelefteq:NX,triangleq:OX,triangleright:zX,trianglerighteq:BX,tridot:jX,trie:FX,triminus:UX,TripleDot:WX,triplus:VX,trisb:$X,tritime:YX,trpezium:GX,Tscr:HX,tscr:QX,TScy:qX,tscy:ZX,TSHcy:KX,tshcy:XX,Tstrok:JX,tstrok:_X,twixt:eJ,twoheadleftarrow:tJ,twoheadrightarrow:rJ,Uacute:nJ,uacute:iJ,uarr:sJ,Uarr:oJ,uArr:aJ,Uarrocir:cJ,Ubrcy:lJ,ubrcy:uJ,Ubreve:hJ,ubreve:dJ,Ucirc:fJ,ucirc:gJ,Ucy:pJ,ucy:mJ,udarr:yJ,Udblac:vJ,udblac:MJ,udhar:wJ,ufisht:SJ,Ufr:TJ,ufr:CJ,Ugrave:IJ,ugrave:bJ,uHar:EJ,uharl:xJ,uharr:RJ,uhblk:AJ,ulcorn:kJ,ulcorner:PJ,ulcrop:DJ,ultri:LJ,Umacr:NJ,umacr:OJ,uml:zJ,UnderBar:BJ,UnderBrace:jJ,UnderBracket:FJ,UnderParenthesis:UJ,Union:WJ,UnionPlus:VJ,Uogon:$J,uogon:YJ,Uopf:GJ,uopf:HJ,UpArrowBar:QJ,uparrow:qJ,UpArrow:ZJ,Uparrow:KJ,UpArrowDownArrow:XJ,updownarrow:JJ,UpDownArrow:_J,Updownarrow:e_,UpEquilibrium:t_,upharpoonleft:r_,upharpoonright:n_,uplus:i_,UpperLeftArrow:s_,UpperRightArrow:o_,upsi:a_,Upsi:c_,upsih:l_,Upsilon:u_,upsilon:h_,UpTeeArrow:d_,UpTee:f_,upuparrows:g_,urcorn:p_,urcorner:m_,urcrop:y_,Uring:v_,uring:M_,urtri:w_,Uscr:S_,uscr:T_,utdot:C_,Utilde:I_,utilde:b_,utri:E_,utrif:x_,uuarr:R_,Uuml:A_,uuml:k_,uwangle:P_,vangrt:D_,varepsilon:L_,varkappa:N_,varnothing:O_,varphi:z_,varpi:B_,varpropto:j_,varr:F_,vArr:U_,varrho:W_,varsigma:V_,varsubsetneq:$_,varsubsetneqq:Y_,varsupsetneq:G_,varsupsetneqq:H_,vartheta:Q_,vartriangleleft:q_,vartriangleright:Z_,vBar:K_,Vbar:X_,vBarv:J_,Vcy:__,vcy:eee,vdash:tee,vDash:ree,Vdash:nee,VDash:iee,Vdashl:see,veebar:oee,vee:aee,Vee:cee,veeeq:lee,vellip:uee,verbar:hee,Verbar:dee,vert:fee,Vert:gee,VerticalBar:pee,VerticalLine:mee,VerticalSeparator:yee,VerticalTilde:vee,VeryThinSpace:Mee,Vfr:wee,vfr:See,vltri:Tee,vnsub:Cee,vnsup:Iee,Vopf:bee,vopf:Eee,vprop:xee,vrtri:Ree,Vscr:Aee,vscr:kee,vsubnE:Pee,vsubne:Dee,vsupnE:Lee,vsupne:Nee,Vvdash:Oee,vzigzag:zee,Wcirc:Bee,wcirc:jee,wedbar:Fee,wedge:Uee,Wedge:Wee,wedgeq:Vee,weierp:$ee,Wfr:Yee,wfr:Gee,Wopf:Hee,wopf:Qee,wp:qee,wr:Zee,wreath:Kee,Wscr:Xee,wscr:Jee,xcap:_ee,xcirc:ete,xcup:tte,xdtri:rte,Xfr:nte,xfr:ite,xharr:ste,xhArr:ote,Xi:ate,xi:cte,xlarr:lte,xlArr:ute,xmap:hte,xnis:dte,xodot:fte,Xopf:gte,xopf:pte,xoplus:mte,xotime:yte,xrarr:vte,xrArr:Mte,Xscr:wte,xscr:Ste,xsqcup:Tte,xuplus:Cte,xutri:Ite,xvee:bte,xwedge:Ete,Yacute:xte,yacute:Rte,YAcy:Ate,yacy:kte,Ycirc:Pte,ycirc:Dte,Ycy:Lte,ycy:Nte,yen:Ote,Yfr:zte,yfr:Bte,YIcy:jte,yicy:Fte,Yopf:Ute,yopf:Wte,Yscr:Vte,yscr:$te,YUcy:Yte,yucy:Gte,yuml:Hte,Yuml:Qte,Zacute:qte,zacute:Zte,Zcaron:Kte,zcaron:Xte,Zcy:Jte,zcy:_te,Zdot:ere,zdot:tre,zeetrf:rre,ZeroWidthSpace:nre,Zeta:ire,zeta:sre,zfr:ore,Zfr:are,ZHcy:cre,zhcy:lre,zigrarr:ure,zopf:hre,Zopf:dre,Zscr:fre,zscr:gre,zwj:pre,zwnj:mre},yre="Á",vre="á",Mre="Â",wre="â",Sre="´",Tre="Æ",Cre="æ",Ire="À",bre="à",Ere="&",xre="&",Rre="Å",Are="å",kre="Ã",Pre="ã",Dre="Ä",Lre="ä",Nre="¦",Ore="Ç",zre="ç",Bre="¸",jre="¢",Fre="©",Ure="©",Wre="¤",Vre="°",$re="÷",Yre="É",Gre="é",Hre="Ê",Qre="ê",qre="È",Zre="è",Kre="Ð",Xre="ð",Jre="Ë",_re="ë",ene="½",tne="¼",rne="¾",nne=">",ine=">",sne="Í",one="í",ane="Î",cne="î",lne="¡",une="Ì",hne="ì",dne="¿",fne="Ï",gne="ï",pne="«",mne="<",yne="<",vne="¯",Mne="µ",wne="·",Sne=" ",Tne="¬",Cne="Ñ",Ine="ñ",bne="Ó",Ene="ó",xne="Ô",Rne="ô",Ane="Ò",kne="ò",Pne="ª",Dne="º",Lne="Ø",Nne="ø",One="Õ",zne="õ",Bne="Ö",jne="ö",Fne="¶",Une="±",Wne="£",Vne='"',$ne='"',Yne="»",Gne="®",Hne="®",Qne="§",qne="­",Zne="¹",Kne="²",Xne="³",Jne="ß",_ne="Þ",eie="þ",tie="×",rie="Ú",nie="ú",iie="Û",sie="û",oie="Ù",aie="ù",cie="¨",lie="Ü",uie="ü",hie="Ý",die="ý",fie="¥",gie="ÿ",pie={Aacute:yre,aacute:vre,Acirc:Mre,acirc:wre,acute:Sre,AElig:Tre,aelig:Cre,Agrave:Ire,agrave:bre,amp:Ere,AMP:xre,Aring:Rre,aring:Are,Atilde:kre,atilde:Pre,Auml:Dre,auml:Lre,brvbar:Nre,Ccedil:Ore,ccedil:zre,cedil:Bre,cent:jre,copy:Fre,COPY:Ure,curren:Wre,deg:Vre,divide:$re,Eacute:Yre,eacute:Gre,Ecirc:Hre,ecirc:Qre,Egrave:qre,egrave:Zre,ETH:Kre,eth:Xre,Euml:Jre,euml:_re,frac12:ene,frac14:tne,frac34:rne,gt:nne,GT:ine,Iacute:sne,iacute:one,Icirc:ane,icirc:cne,iexcl:lne,Igrave:une,igrave:hne,iquest:dne,Iuml:fne,iuml:gne,laquo:pne,lt:mne,LT:yne,macr:vne,micro:Mne,middot:wne,nbsp:Sne,not:Tne,Ntilde:Cne,ntilde:Ine,Oacute:bne,oacute:Ene,Ocirc:xne,ocirc:Rne,Ograve:Ane,ograve:kne,ordf:Pne,ordm:Dne,Oslash:Lne,oslash:Nne,Otilde:One,otilde:zne,Ouml:Bne,ouml:jne,para:Fne,plusmn:Une,pound:Wne,quot:Vne,QUOT:$ne,raquo:Yne,reg:Gne,REG:Hne,sect:Qne,shy:qne,sup1:Zne,sup2:Kne,sup3:Xne,szlig:Jne,THORN:_ne,thorn:eie,times:tie,Uacute:rie,uacute:nie,Ucirc:iie,ucirc:sie,Ugrave:oie,ugrave:aie,uml:cie,Uuml:lie,uuml:uie,Yacute:hie,yacute:die,yen:fie,yuml:gie},mie="&",yie="'",vie=">",Mie="<",wie='"',Cy={amp:mie,apos:yie,gt:vie,lt:Mie,quot:wie};var Lh={};const Sie={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var Tie=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Lh,"__esModule",{value:!0});var ng=Tie(Sie),Cie=String.fromCodePoint||function(s){var t="";return s>65535&&(s-=65536,t+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),t+=String.fromCharCode(s),t};function Iie(s){return s>=55296&&s<=57343||s>1114111?"�":(s in ng.default&&(s=ng.default[s]),Cie(s))}Lh.default=Iie;var dc=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(sn,"__esModule",{value:!0});sn.decodeHTML=sn.decodeHTMLStrict=sn.decodeXML=void 0;var wu=dc(Ty),bie=dc(pie),Eie=dc(Cy),ig=dc(Lh),xie=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;sn.decodeXML=Iy(Eie.default);sn.decodeHTMLStrict=Iy(wu.default);function Iy(s){var t=by(s);return function(e){return String(e).replace(xie,t)}}var sg=function(s,t){return s<t?1:-1};sn.decodeHTML=function(){for(var s=Object.keys(bie.default).sort(sg),t=Object.keys(wu.default).sort(sg),e=0,r=0;e<t.length;e++)s[r]===t[e]?(t[e]+=";?",r++):t[e]+=";";var n=new RegExp("&(?:"+t.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),i=by(wu.default);function o(a){return a.substr(-1)!==";"&&(a+=";"),i(a)}return function(a){return String(a).replace(n,o)}}();function by(s){return function(e){if(e.charAt(1)==="#"){var r=e.charAt(2);return r==="X"||r==="x"?ig.default(parseInt(e.substr(3),16)):ig.default(parseInt(e.substr(2),10))}return s[e.slice(1,-1)]||e}}var sr={},Ey=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(sr,"__esModule",{value:!0});sr.escapeUTF8=sr.escape=sr.encodeNonAsciiHTML=sr.encodeHTML=sr.encodeXML=void 0;var Rie=Ey(Cy),xy=Ay(Rie.default),Ry=ky(xy);sr.encodeXML=Ly(xy);var Aie=Ey(Ty),Nh=Ay(Aie.default),kie=ky(Nh);sr.encodeHTML=Die(Nh,kie);sr.encodeNonAsciiHTML=Ly(Nh);function Ay(s){return Object.keys(s).sort().reduce(function(t,e){return t[s[e]]="&"+e+";",t},{})}function ky(s){for(var t=[],e=[],r=0,n=Object.keys(s);r<n.length;r++){var i=n[r];i.length===1?t.push("\\"+i):e.push(i)}t.sort();for(var o=0;o<t.length-1;o++){for(var a=o;a<t.length-1&&t[a].charCodeAt(1)+1===t[a+1].charCodeAt(1);)a+=1;var c=1+a-o;c<3||t.splice(o,c,t[o]+"-"+t[a])}return e.unshift("["+t.join("")+"]"),new RegExp(e.join("|"),"g")}var Py=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,Pie=String.prototype.codePointAt!=null?function(s){return s.codePointAt(0)}:function(s){return(s.charCodeAt(0)-55296)*1024+s.charCodeAt(1)-56320+65536};function fc(s){return"&#x"+(s.length>1?Pie(s):s.charCodeAt(0)).toString(16).toUpperCase()+";"}function Die(s,t){return function(e){return e.replace(t,function(r){return s[r]}).replace(Py,fc)}}var Dy=new RegExp(Ry.source+"|"+Py.source,"g");function Lie(s){return s.replace(Dy,fc)}sr.escape=Lie;function Nie(s){return s.replace(Ry,fc)}sr.escapeUTF8=Nie;function Ly(s){return function(t){return t.replace(Dy,function(e){return s[e]||fc(e)})}}(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.decodeXMLStrict=s.decodeHTML5Strict=s.decodeHTML4Strict=s.decodeHTML5=s.decodeHTML4=s.decodeHTMLStrict=s.decodeHTML=s.decodeXML=s.encodeHTML5=s.encodeHTML4=s.escapeUTF8=s.escape=s.encodeNonAsciiHTML=s.encodeHTML=s.encodeXML=s.encode=s.decodeStrict=s.decode=void 0;var t=sn,e=sr;function r(c,l){return(!l||l<=0?t.decodeXML:t.decodeHTML)(c)}s.decode=r;function n(c,l){return(!l||l<=0?t.decodeXML:t.decodeHTMLStrict)(c)}s.decodeStrict=n;function i(c,l){return(!l||l<=0?e.encodeXML:e.encodeHTML)(c)}s.encode=i;var o=sr;Object.defineProperty(s,"encodeXML",{enumerable:!0,get:function(){return o.encodeXML}}),Object.defineProperty(s,"encodeHTML",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return o.encodeNonAsciiHTML}}),Object.defineProperty(s,"escape",{enumerable:!0,get:function(){return o.escape}}),Object.defineProperty(s,"escapeUTF8",{enumerable:!0,get:function(){return o.escapeUTF8}}),Object.defineProperty(s,"encodeHTML4",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeHTML5",{enumerable:!0,get:function(){return o.encodeHTML}});var a=sn;Object.defineProperty(s,"decodeXML",{enumerable:!0,get:function(){return a.decodeXML}}),Object.defineProperty(s,"decodeHTML",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTMLStrict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML4",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML5",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML4Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML5Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeXMLStrict",{enumerable:!0,get:function(){return a.decodeXML}})})(Sy);const Oie={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",fedropshadow:"feDropShadow",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},zie={definitionurl:"definitionURL",attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},Bie={elementNames:Oie,attributeNames:zie};var zo=wy,Ny=Sy,gc=Bie;gc.elementNames.__proto__=null;gc.attributeNames.__proto__=null;var jie={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0};function Fie(s,t){if(s){var e="",r;for(var n in s)r=s[n],e&&(e+=" "),t.xmlMode==="foreign"&&(n=gc.attributeNames[n]||n),e+=n,(r!==null&&r!==""||t.xmlMode)&&(e+='="'+(t.decodeEntities?Ny.encodeXML(r):r.replace(/\"/g,"&quot;"))+'"');return e}}var Uie={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oy=My.exports=function(s,t){!Array.isArray(s)&&!s.cheerio&&(s=[s]),t=t||{};for(var e="",r=0;r<s.length;r++){var n=s[r];n.type==="root"?e+=Oy(n.children,t):zo.isTag(n)?e+=Vie(n,t):n.type===zo.Directive?e+=$ie(n):n.type===zo.Comment?e+=Hie(n):n.type===zo.CDATA?e+=Gie(n):e+=Yie(n,t)}return e},Wie=["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"];function Vie(s,t){t.xmlMode==="foreign"&&(s.name=gc.elementNames[s.name]||s.name,s.parent&&Wie.indexOf(s.parent.name)>=0&&(t=Object.assign({},t,{xmlMode:!1}))),!t.xmlMode&&["svg","math"].indexOf(s.name)>=0&&(t=Object.assign({},t,{xmlMode:"foreign"}));var e="<"+s.name,r=Fie(s.attribs,t);return r&&(e+=" "+r),t.xmlMode&&(!s.children||s.children.length===0)?e+="/>":(e+=">",s.children&&(e+=Oy(s.children,t)),(!Uie[s.name]||t.xmlMode)&&(e+="</"+s.name+">")),e}function $ie(s){return"<"+s.data+">"}function Yie(s,t){var e=s.data||"";return t.decodeEntities&&!(s.parent&&s.parent.name in jie)&&(e=Ny.encodeXML(e)),e}function Gie(s){return"<![CDATA["+s.children[0].data+"]]>"}function Hie(s){return"<!--"+s.data+"-->"}var Qie=My.exports,Su=Dh,zy=Qie,qie=Su.isTag,Zie={getInnerHTML:Kie,getOuterHTML:zy,getText:la};function Kie(s,t){return s.children?s.children.map(function(e){return zy(e,t)}).join(""):""}function la(s){return Array.isArray(s)?s.map(la).join(""):qie(s)?s.name==="br"?`
569
+ `:la(s.children):s.type===Su.CDATA?la(s.children):s.type===Su.Text?s.data:""}var fi={},Xie=fi.getChildren=function(s){return s.children},Jie=fi.getParent=function(s){return s.parent};fi.getSiblings=function(s){var t=Jie(s);return t?Xie(t):[s]};fi.getAttributeValue=function(s,t){return s.attribs&&s.attribs[t]};fi.hasAttrib=function(s,t){return!!s.attribs&&hasOwnProperty.call(s.attribs,t)};fi.getName=function(s){return s.name};var Xi={};Xi.removeElement=function(s){if(s.prev&&(s.prev.next=s.next),s.next&&(s.next.prev=s.prev),s.parent){var t=s.parent.children;t.splice(t.lastIndexOf(s),1)}};Xi.replaceElement=function(s,t){var e=t.prev=s.prev;e&&(e.next=t);var r=t.next=s.next;r&&(r.prev=t);var n=t.parent=s.parent;if(n){var i=n.children;i[i.lastIndexOf(s)]=t}};Xi.appendChild=function(s,t){if(t.parent=s,s.children.push(t)!==1){var e=s.children[s.children.length-2];e.next=t,t.prev=e,t.next=null}};Xi.append=function(s,t){var e=s.parent,r=s.next;if(t.next=r,t.prev=s,s.next=t,t.parent=e,r){if(r.prev=t,e){var n=e.children;n.splice(n.lastIndexOf(r),0,t)}}else e&&e.children.push(t)};Xi.prepend=function(s,t){var e=s.parent;if(e){var r=e.children;r.splice(r.lastIndexOf(s),0,t)}s.prev&&(s.prev.next=t),t.parent=e,t.prev=s.prev,t.next=s,s.prev=t};var Oh=Dh.isTag,_ie={filter:ese,find:zh,findOneChild:tse,findOne:By,existsOne:jy,findAll:rse};function ese(s,t,e,r){return Array.isArray(t)||(t=[t]),(typeof r!="number"||!isFinite(r))&&(r=1/0),zh(s,t,e!==!1,r)}function zh(s,t,e,r){for(var n=[],i,o=0,a=t.length;o<a&&!(s(t[o])&&(n.push(t[o]),--r<=0)||(i=t[o].children,e&&i&&i.length>0&&(i=zh(s,i,e,r),n=n.concat(i),r-=i.length,r<=0)));o++);return n}function tse(s,t){for(var e=0,r=t.length;e<r;e++)if(s(t[e]))return t[e];return null}function By(s,t){for(var e=null,r=0,n=t.length;r<n&&!e;r++)if(Oh(t[r]))s(t[r])?e=t[r]:t[r].children.length>0&&(e=By(s,t[r].children));else continue;return e}function jy(s,t){for(var e=0,r=t.length;e<r;e++)if(Oh(t[e])&&(s(t[e])||t[e].children.length>0&&jy(s,t[e].children)))return!0;return!1}function rse(s,t){for(var e=[],r=t.slice();r.length;){var n=r.shift();Oh(n)&&(n.children&&n.children.length>0&&r.unshift.apply(r,n.children),s(n)&&e.push(n))}return e}var gi={},nse=Dh,Qn=gi.isTag=nse.isTag;gi.testElement=function(s,t){for(var e in s)if(s.hasOwnProperty(e)){if(e==="tag_name"){if(!Qn(t)||!s.tag_name(t.name))return!1}else if(e==="tag_type"){if(!s.tag_type(t.type))return!1}else if(e==="tag_contains"){if(Qn(t)||!s.tag_contains(t.data))return!1}else if(!t.attribs||!s[e](t.attribs[e]))return!1}return!0};var Ca={tag_name:function(s){return typeof s=="function"?function(t){return Qn(t)&&s(t.name)}:s==="*"?Qn:function(t){return Qn(t)&&t.name===s}},tag_type:function(s){return typeof s=="function"?function(t){return s(t.type)}:function(t){return t.type===s}},tag_contains:function(s){return typeof s=="function"?function(t){return!Qn(t)&&s(t.data)}:function(t){return!Qn(t)&&t.data===s}}};function Fy(s,t){return typeof t=="function"?function(e){return e.attribs&&t(e.attribs[s])}:function(e){return e.attribs&&e.attribs[s]===t}}function ise(s,t){return function(e){return s(e)||t(e)}}gi.getElements=function(s,t,e,r){var n=Object.keys(s).map(function(i){var o=s[i];return i in Ca?Ca[i](o):Fy(i,o)});return n.length===0?[]:this.filter(n.reduce(ise),t,e,r)};gi.getElementById=function(s,t,e){return Array.isArray(t)||(t=[t]),this.findOne(Fy("id",s),t,e!==!1)};gi.getElementsByTagName=function(s,t,e,r){return this.filter(Ca.tag_name(s),t,e,r)};gi.getElementsByTagType=function(s,t,e,r){return this.filter(Ca.tag_type(s),t,e,r)};var pc={};pc.removeSubsets=function(s){for(var t=s.length,e,r,n;--t>-1;){for(e=r=s[t],s[t]=null,n=!0;r;){if(s.indexOf(r)>-1){n=!1,s.splice(t,1);break}r=r.parent}n&&(s[t]=e)}return s};var Zr={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16},sse=pc.compareDocumentPosition=function(s,t){var e=[],r=[],n,i,o,a,c,l;if(s===t)return 0;for(n=s;n;)e.unshift(n),n=n.parent;for(n=t;n;)r.unshift(n),n=n.parent;for(l=0;e[l]===r[l];)l++;return l===0?Zr.DISCONNECTED:(i=e[l-1],o=i.children,a=e[l],c=r[l],o.indexOf(a)>o.indexOf(c)?i===t?Zr.FOLLOWING|Zr.CONTAINED_BY:Zr.FOLLOWING:i===s?Zr.PRECEDING|Zr.CONTAINS:Zr.PRECEDING)};pc.uniqueSort=function(s){var t=s.length,e,r;for(s=s.slice();--t>-1;)e=s[t],r=s.indexOf(e),r>-1&&r<t&&s.splice(t,1);return s.sort(function(n,i){var o=sse(n,i);return o&Zr.PRECEDING?-1:o&Zr.FOLLOWING?1:0}),s};(function(s){var t=s.exports;[Zie,fi,Xi,_ie,gi,pc].forEach(function(e){Object.keys(e).forEach(function(r){t[r]=e[r].bind(t)})})})(vy);var ose=vy.exports,oo={trueFunc:function(){return!0},falseFunc:function(){return!1}},Uy={},Ia={};Object.defineProperty(Ia,"__esModule",{value:!0});Ia.default=fse;var og=/^[^\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,ase=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,cse=/^\s*((?:\\.|[\w\u00b0-\uFFFF-])+)\s*(?:(\S?)=\s*(?:(['"])((?:[^\\]|\\[^])*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF-])*)|)|)\s*(i)?\]/,lse={undefined:"exists","":"equals","~":"element","^":"start",$:"end","*":"any","!":"not","|":"hyphen"},ag={">":"child","<":"parent","~":"sibling","+":"adjacent"},cg={"#":["id","equals"],".":["class","element"]},use=new Set(["has","not","matches","is","host","host-context"]),hse=new Set(["contains","icontains"]),lg=new Set(['"',"'"]);function dse(s,t,e){var r=parseInt(t,16)-65536;return r!==r||e?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,r&1023|56320)}function Bo(s){return s.replace(ase,dse)}function ug(s){return s===" "||s===`
570
+ `||s===" "||s==="\f"||s==="\r"}function fse(s,t){var e=[];if(s=Wy(e,""+s,t),s!=="")throw new Error("Unmatched selector: "+s);return e}function Wy(s,t,e){var r,n;e===void 0&&(e={});var i=[],o=!1;function a(){var k=t.match(og);if(!k)throw new Error("Expected name, found "+t);var A=k[0];return t=t.substr(A.length),Bo(A)}function c(k){for(;ug(t.charAt(k));)k++;t=t.substr(k)}function l(k){for(var A=0;t.charAt(--k)==="\\";)A++;return(A&1)===1}for(c(0);t!=="";){var u=t.charAt(0);if(ug(u))o=!0,c(1);else if(u in ag)i.push({type:ag[u]}),o=!1,c(1);else if(u===","){if(i.length===0)throw new Error("Empty sub-selector");s.push(i),i=[],o=!1,c(1)}else if(o&&(i.length>0&&i.push({type:"descendant"}),o=!1),u==="*")t=t.substr(1),i.push({type:"universal"});else if(u in cg){var h=cg[u],d=h[0],f=h[1];t=t.substr(1),i.push({type:"attribute",name:d,action:f,value:a(),ignoreCase:!1})}else if(u==="["){t=t.substr(1);var g=t.match(cse);if(!g)throw new Error("Malformed attribute selector: "+t);var y=g[0],T=g[1],x=g[2],C=g[4],L=C===void 0?"":C,S=g[5],p=S===void 0?L:S,m=g[6];t=t.substr(y.length);var M=Bo(T);((r=e.lowerCaseAttributeNames)!==null&&r!==void 0?r:!e.xmlMode)&&(M=M.toLowerCase()),i.push({type:"attribute",name:M,action:lse[x],value:Bo(p),ignoreCase:!!m})}else if(u===":"){if(t.charAt(1)===":"){t=t.substr(2),i.push({type:"pseudo-element",name:a().toLowerCase()});continue}t=t.substr(1);var v=a().toLowerCase(),R=null;if(t.startsWith("("))if(use.has(v)){var b=t.charAt(1),P=lg.has(b);if(t=t.substr(P?2:1),R=[],t=Wy(R,t,e),P)if(t.startsWith(b))t=t.substr(1);else throw new Error("Unmatched quotes in :"+v);if(!t.startsWith(")"))throw new Error("Missing closing parenthesis in :"+v+" ("+t+")");t=t.substr(1)}else{for(var D=1,z=1;z>0&&D<t.length;D++)t.charAt(D)==="("&&!l(D)?z++:t.charAt(D)===")"&&!l(D)&&z--;if(z)throw new Error("Parenthesis not matched");if(R=t.substr(1,D-2),t=t.substr(D),hse.has(v)){var b=R.charAt(0);b===R.slice(-1)&&lg.has(b)&&(R=R.slice(1,-1)),R=Bo(R)}}i.push({type:"pseudo",name:v,data:R})}else if(og.test(t)){var j=a();((n=e.lowerCaseTags)!==null&&n!==void 0?n:!e.xmlMode)&&(j=j.toLowerCase()),i.push({type:"tag",name:j})}else return i.length&&i[i.length-1].type==="descendant"&&i.pop(),hg(s,i),t}return hg(s,i),t}function hg(s,t){if(s.length>0&&t.length===0)throw new Error("Empty sub-selector");s.push(t)}var Bh={},gse=St&&St.__spreadArrays||function(){for(var s=0,t=0,e=arguments.length;t<e;t++)s+=arguments[t].length;for(var r=Array(s),n=0,t=0;t<e;t++)for(var i=arguments[t],o=0,a=i.length;o<a;o++,n++)r[n]=i[o];return r};Object.defineProperty(Bh,"__esModule",{value:!0});var Tu={equals:"",element:"~",start:"^",end:"$",any:"*",not:"!",hyphen:"|"},pse=new Set(gse(Object.keys(Tu).map(function(s){return Tu[s]}).filter(Boolean),[":","[","]"," ","\\"]));function Vy(s){return s.map(mse).join(", ")}Bh.default=Vy;function mse(s){return s.map(yse).join("")}function yse(s){switch(s.type){case"child":return" > ";case"parent":return" < ";case"sibling":return" ~ ";case"adjacent":return" + ";case"descendant":return" ";case"universal":return"*";case"tag":return xr(s.name);case"pseudo-element":return"::"+xr(s.name);case"pseudo":return s.data===null?":"+xr(s.name):typeof s.data=="string"?":"+xr(s.name)+"("+s.data+")":":"+xr(s.name)+"("+Vy(s.data)+")";case"attribute":return s.action==="exists"?"["+xr(s.name)+"]":s.name==="id"&&s.action==="equals"&&!s.ignoreCase?"#"+xr(s.value):s.name==="class"&&s.action==="element"&&!s.ignoreCase?"."+xr(s.value):"["+xr(s.name)+Tu[s.action]+"='"+xr(s.value)+"'"+(s.ignoreCase?"i":"")+"]"}}function xr(s){return s.split("").map(function(t){return pse.has(t)?"\\"+t:t}).join("")}(function(s){var t=St&&St.__createBinding||(Object.create?function(o,a,c,l){l===void 0&&(l=c),Object.defineProperty(o,l,{enumerable:!0,get:function(){return a[c]}})}:function(o,a,c,l){l===void 0&&(l=c),o[l]=a[c]}),e=St&&St.__exportStar||function(o,a){for(var c in o)c!=="default"&&!Object.prototype.hasOwnProperty.call(a,c)&&t(a,o,c)},r=St&&St.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(s,"__esModule",{value:!0}),s.stringify=s.parse=void 0,e(Ia,s);var n=Ia;Object.defineProperty(s,"parse",{enumerable:!0,get:function(){return r(n).default}});var i=Bh;Object.defineProperty(s,"stringify",{enumerable:!0,get:function(){return r(i).default}})})(Uy);const vse=50,Mse=30,wse=1,Sse=0,Tse=-1,Cse=-1,Ise=-1,bse=-1,Ese=-1,$y={universal:vse,tag:Mse,attribute:wse,pseudo:Sse,descendant:Tse,child:Cse,parent:Ise,sibling:bse,adjacent:Ese};var xse=Rse,Cl=$y,dg={__proto__:null,exists:10,equals:8,not:7,start:6,end:6,any:5,hyphen:4,element:4};function Rse(s){for(var t=s.map(Yy),e=1;e<s.length;e++){var r=t[e];if(!(r<0))for(var n=e-1;n>=0&&r<t[n];n--){var i=s[n+1];s[n+1]=s[n],s[n]=i,t[n+1]=t[n],t[n]=r}}}function Yy(s){var t=Cl[s.type];if(t===Cl.attribute)t=dg[s.action],t===dg.equals&&s.name==="id"&&(t=9),s.ignoreCase&&(t>>=1);else if(t===Cl.pseudo)if(!s.data)t=3;else if(s.name==="has"||s.name==="contains")t=0;else if(s.name==="matches"||s.name==="not"){t=0;for(var e=0;e<s.data.length;e++)if(s.data[e].length===1){var r=Yy(s.data[e][0]);if(r===0){t=0;break}r>t&&(t=r)}s.data.length>1&&t>0&&(t-=1)}else t=1;return t}var jo=oo.falseFunc,fg=/[-[\]{}()*+?.,\\^$|#\s]/g,gg={__proto__:null,equals:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;return t.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,r);return c!=null&&c.toLowerCase()===n&&s(a)}):function(a){return i.getAttributeValue(a,r)===n&&s(a)}},hyphen:function(s,t,e){var r=t.name,n=t.value,i=n.length,o=e.adapter;return t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&(l.length===i||l.charAt(i)==="-")&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i)===n&&(l.length===i||l.charAt(i)==="-")&&s(c)}},element:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;if(/\s/.test(n))return jo;n=n.replace(fg,"\\$&");var o="(?:^|\\s)"+n+"(?:$|\\s)",a=t.ignoreCase?"i":"",c=new RegExp(o,a);return function(u){var h=i.getAttributeValue(u,r);return h!=null&&c.test(h)&&s(u)}},exists:function(s,t,e){var r=t.name,n=e.adapter;return function(o){return n.hasAttrib(o,r)&&s(o)}},start:function(s,t,e){var r=t.name,n=t.value,i=n.length,o=e.adapter;return i===0?jo:t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(0,i)===n&&s(c)}},end:function(s,t,e){var r=t.name,n=t.value,i=-n.length,o=e.adapter;return i===0?jo:t.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,r);return l!=null&&l.substr(i)===n&&s(c)}},any:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;if(n==="")return jo;if(t.ignoreCase){var o=new RegExp(n.replace(fg,"\\$&"),"i");return function(c){var l=i.getAttributeValue(c,r);return l!=null&&o.test(l)&&s(c)}}return function(c){var l=i.getAttributeValue(c,r);return l!=null&&l.indexOf(n)>=0&&s(c)}},not:function(s,t,e){var r=t.name,n=t.value,i=e.adapter;return n===""?function(a){return!!i.getAttributeValue(a,r)&&s(a)}:t.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,r);return c!=null&&c.toLowerCase()!==n&&s(a)}):function(a){return i.getAttributeValue(a,r)!==n&&s(a)}}},Gy={compile:function(s,t,e){if(e&&e.strict&&(t.ignoreCase||t.action==="not"))throw new Error("Unsupported attribute selector");return gg[t.action](s,t,e)},rules:gg},mc={exports:{}},Ase=Pse,kse=/^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;function Pse(s){if(s=s.trim().toLowerCase(),s==="even")return[2,0];if(s==="odd")return[2,1];var t=s.match(kse);if(!t)throw new SyntaxError("n-th rule couldn't be parsed ('"+s+"')");var e;return t[1]?(e=parseInt(t[1],10),isNaN(e)&&(t[1].charAt(0)==="-"?e=-1:e=1)):e=0,[e,t[3]?parseInt((t[2]||"")+t[3],10):0]}var Dse=Ose,Hy=oo,Lse=Hy.trueFunc,Nse=Hy.falseFunc;function Ose(s){var t=s[0],e=s[1]-1;if(e<0&&t<=0)return Nse;if(t===-1)return function(n){return n<=e};if(t===0)return function(n){return n===e};if(t===1)return e<0?Lse:function(n){return n>=e};var r=e%t;return r<0&&(r+=t),t>1?function(n){return n>=e&&n%t===r}:(t*=-1,function(n){return n<=e&&n%t===r})}var Qy=Ase,qy=Dse;mc.exports=function(t){return qy(Qy(t))};mc.exports.parse=Qy;mc.exports.compile=qy;var zse=mc.exports,Fo=zse,Zy=oo,Bse=Gy,Es=Zy.trueFunc,mn=Zy.falseFunc,jse=Bse.rules.equals;function jn(s,t){var e={name:s,value:t};return function(n,i,o){return jse(n,e,o)}}function Uo(s,t){return function(e){return!!t.getParent(e)&&s(e)}}var ua={contains:function(s,t,e){var r=e.adapter;return function(i){return s(i)&&r.getText(i).indexOf(t)>=0}},icontains:function(s,t,e){var r=t.toLowerCase(),n=e.adapter;return function(o){return s(o)&&n.getText(o).toLowerCase().indexOf(r)>=0}},"nth-child":function(s,t,e){var r=Fo(t),n=e.adapter;return r===mn?r:r===Es?Uo(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;c<a.length;c++)if(n.isTag(a[c])){if(a[c]===o)break;l++}return r(l)&&s(o)}},"nth-last-child":function(s,t,e){var r=Fo(t),n=e.adapter;return r===mn?r:r===Es?Uo(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;c++}return r(c)&&s(o)}},"nth-of-type":function(s,t,e){var r=Fo(t),n=e.adapter;return r===mn?r:r===Es?Uo(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;l<a.length;l++)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return r(c)&&s(o)}},"nth-last-of-type":function(s,t,e){var r=Fo(t),n=e.adapter;return r===mn?r:r===Es?Uo(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return r(c)&&s(o)}},root:function(s,t,e){var r=e.adapter;return function(n){return!r.getParent(n)&&s(n)}},scope:function(s,t,e,r){var n=e.adapter;if(!r||r.length===0)return ua.root(s,t,e);function i(o,a){return typeof n.equals=="function"?n.equals(o,a):o===a}return r.length===1?function(o){return i(r[0],o)&&s(o)}:function(o){return r.indexOf(o)>=0&&s(o)}},checkbox:jn("type","checkbox"),file:jn("type","file"),password:jn("type","password"),radio:jn("type","radio"),reset:jn("type","reset"),image:jn("type","image"),submit:jn("type","submit"),hover:function(s,t,e){var r=e.adapter;return typeof r.isHovered=="function"?function(i){return s(i)&&r.isHovered(i)}:mn},visited:function(s,t,e){var r=e.adapter;return typeof r.isVisited=="function"?function(i){return s(i)&&r.isVisited(i)}:mn},active:function(s,t,e){var r=e.adapter;return typeof r.isActive=="function"?function(i){return s(i)&&r.isActive(i)}:mn}};function Fse(s,t){for(var e=0;s&&e<s.length;e++)if(t.isTag(s[e]))return s[e]}var Ls={empty:function(s,t){return!t.getChildren(s).some(function(e){return t.isTag(e)||e.type==="text"})},"first-child":function(s,t){return Fse(t.getSiblings(s),t)===s},"last-child":function(s,t){for(var e=t.getSiblings(s),r=e.length-1;r>=0;r--){if(e[r]===s)return!0;if(t.isTag(e[r]))break}return!1},"first-of-type":function(s,t){for(var e=t.getSiblings(s),r=0;r<e.length;r++)if(t.isTag(e[r])){if(e[r]===s)return!0;if(t.getName(e[r])===t.getName(s))break}return!1},"last-of-type":function(s,t){for(var e=t.getSiblings(s),r=e.length-1;r>=0;r--)if(t.isTag(e[r])){if(e[r]===s)return!0;if(t.getName(e[r])===t.getName(s))break}return!1},"only-of-type":function(s,t){for(var e=t.getSiblings(s),r=0,n=e.length;r<n;r++)if(t.isTag(e[r])){if(e[r]===s)continue;if(t.getName(e[r])===t.getName(s))return!1}return!0},"only-child":function(s,t){for(var e=t.getSiblings(s),r=0;r<e.length;r++)if(t.isTag(e[r])&&e[r]!==s)return!1;return!0},link:function(s,t){return t.hasAttrib(s,"href")},selected:function(s,t){if(t.hasAttrib(s,"selected"))return!0;if(t.getName(s)!=="option")return!1;var e=t.getParent(s);if(!e||t.getName(e)!=="select"||t.hasAttrib(e,"multiple"))return!1;for(var r=t.getChildren(e),n=!1,i=0;i<r.length;i++)if(t.isTag(r[i]))if(r[i]===s)n=!0;else if(n){if(t.hasAttrib(r[i],"selected"))return!1}else return!1;return n},disabled:function(s,t){return t.hasAttrib(s,"disabled")},enabled:function(s,t){return!t.hasAttrib(s,"disabled")},checked:function(s,t){return t.hasAttrib(s,"checked")||Ls.selected(s,t)},required:function(s,t){return t.hasAttrib(s,"required")},optional:function(s,t){return!t.hasAttrib(s,"required")},parent:function(s,t){return!Ls.empty(s,t)},header:pg(["h1","h2","h3","h4","h5","h6"]),button:function(s,t){var e=t.getName(s);return e==="button"||e==="input"&&t.getAttributeValue(s,"type")==="button"},input:pg(["input","textarea","select","button"]),text:function(s,t){var e;return t.getName(s)==="input"&&(!(e=t.getAttributeValue(s,"type"))||e.toLowerCase()==="text")}};function pg(s){if(typeof Set<"u"){var t=new Set(s);return function(e,r){return t.has(r.getName(e))}}return function(e,r){return s.indexOf(r.getName(e))>=0}}function Use(s,t,e){if(e===null){if(s.length>2&&t!=="scope")throw new Error("pseudo-selector :"+t+" requires an argument")}else if(s.length===2)throw new Error("pseudo-selector :"+t+" doesn't have any arguments")}var Wse=/^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/,Ky={compile:function(s,t,e,r){var n=t.name,i=t.data,o=e.adapter;if(e&&e.strict&&!Wse.test(n))throw new Error(":"+n+" isn't part of CSS3");if(typeof ua[n]=="function")return ua[n](s,i,e,r);if(typeof Ls[n]=="function"){var a=Ls[n];return Use(a,n,i),a===mn?a:s===Es?function(l){return a(l,o,i)}:function(l){return a(l,o,i)&&s(l)}}else throw new Error("unmatched pseudo-class :"+n)},filters:ua,pseudos:Ls},Vse=Gy,$se=Ky,Yse={__proto__:null,attribute:Vse.compile,pseudo:$se.compile,tag:function(s,t,e){var r=t.name,n=e.adapter;return function(o){return n.getName(o)===r&&s(o)}},descendant:function(s,t,e){var r=typeof WeakSet<"u"?new WeakSet:null,n=e.adapter;return function(o){for(var a=!1;!a&&(o=n.getParent(o));)(!r||!r.has(o))&&(a=s(o),!a&&r&&r.add(o));return a}},_flexibleDescendant:function(s,t,e){var r=e.adapter;return function(i){for(var o=s(i);!o&&(i=r.getParent(i));)o=s(i);return o}},parent:function(s,t,e){if(e&&e.strict)throw new Error("Parent selector isn't part of CSS3");var r=e.adapter;return function(o){return r.getChildren(o).some(n)};function n(i){return r.isTag(i)&&s(i)}},child:function(s,t,e){var r=e.adapter;return function(i){var o=r.getParent(i);return!!o&&s(o)}},sibling:function(s,t,e){var r=e.adapter;return function(i){for(var o=r.getSiblings(i),a=0;a<o.length;a++)if(r.isTag(o[a])){if(o[a]===i)break;if(s(o[a]))return!0}return!1}},adjacent:function(s,t,e){var r=e.adapter;return function(i){for(var o=r.getSiblings(i),a,c=0;c<o.length;c++)if(r.isTag(o[c])){if(o[c]===i)break;a=o[c]}return!!a&&s(a)}},universal:function(s){return s}},Gse=yc,Hse=Uy.parse,Xy=oo,Qse=xse,qse=$y,mg=Yse,Jy=Ky,Ws=Xy.trueFunc,xn=Xy.falseFunc,jh=Jy.filters;function yc(s,t,e){var r=ev(s,t,e);return _y(r,t)}function _y(s,t){var e=t.adapter;return function(n){return e.isTag(n)&&s(n)}}function ev(s,t,e){var r=Hse(s,t);return ao(r,t,e)}function Cu(s){return s.type==="pseudo"&&(s.name==="scope"||Array.isArray(s.data)&&s.data.some(function(t){return t.some(Cu)}))}var Zse={type:"descendant"},Kse={type:"_flexibleDescendant"},Xse={type:"pseudo",name:"scope"},tv={};function Jse(s,t,e){var r=t.adapter,n=!!e&&!!e.length&&e.every(function(i){return i===tv||!!r.getParent(i)});s.forEach(function(i){if(!(i.length>0&&rv(i[0])&&i[0].type!=="descendant"))if(n&&!(Array.isArray(i)?i.some(Cu):Cu(i)))i.unshift(Zse);else return;i.unshift(Xse)})}function ao(s,t,e){s=s.filter(function(o){return o.length>0}),s.forEach(Qse);var r=Array.isArray(e);e=t&&t.context||e,e&&!r&&(e=[e]),Jse(s,t,e);var n=!1,i=s.map(function(o){if(o[0]&&o[1]&&o[0].name==="scope"){var a=o[1].type;r&&a==="descendant"?o[1]=Kse:(a==="adjacent"||a==="sibling")&&(n=!0)}return _se(o,t,e)}).reduce(eoe,xn);return i.shouldTestNextSiblings=n,i}function rv(s){return qse[s.type]<0}function _se(s,t,e){return s.reduce(function(r,n){if(r===xn)return r;if(!(n.type in mg))throw new Error("Rule type "+n.type+" is not supported by css-select");return mg[n.type](r,n,t,e)},t&&t.rootFunc||Ws)}function eoe(s,t){return t===xn||s===Ws?s:s===xn||t===Ws?t:function(r){return s(r)||t(r)}}function nv(s){return s.some(rv)}jh.not=function(s,t,e,r){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:e.adapter};if(n.strict&&(t.length>1||t.some(nv)))throw new Error("complex selectors in :not aren't allowed in strict mode");var i=ao(t,n,r);return i===xn?s:i===Ws?xn:function(a){return!i(a)&&s(a)}};jh.has=function(s,t,e){var r=e.adapter,n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:r},i=t.some(nv)?[tv]:null,o=ao(t,n,i);return o===xn?xn:o===Ws?function(c){return r.getChildren(c).some(r.isTag)&&s(c)}:(o=_y(o,e),i?function(c){return s(c)&&(i[0]=c,r.existsOne(o,r.getChildren(c)))}:function(c){return s(c)&&r.existsOne(o,r.getChildren(c))})};jh.matches=function(s,t,e,r){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),rootFunc:s,adapter:e.adapter};return ao(t,n,r)};yc.compileToken=ao;yc.compileUnsafe=ev;yc.Pseudos=Jy;var toe=br,Fh=ose,iv=oo.falseFunc,co=Gse;function sv(s){return function(e,r,n){return r=r||{},r.adapter=r.adapter||Fh,s(e,r,n)}}var Uh=sv(co),ov=sv(co.compileUnsafe);function av(s){return function(e,r,n){return n=n||{},n.adapter=n.adapter||Fh,typeof e!="function"&&(e=ov(e,n,r)),e.shouldTestNextSiblings&&(r=noe(n&&n.context||r,n.adapter)),Array.isArray(r)?r=n.adapter.removeSubsets(r):r=n.adapter.getChildren(r),s(e,r,n)}}function roe(s,t){var e=t.getSiblings(s);if(!Array.isArray(e))return[];for(e=e.slice(0);e.shift()!==s;);return e}function noe(s,t){Array.isArray(s)||(s=[s]);for(var e=s.slice(0),r=0,n=s.length;r<n;r++){var i=roe(e[r],t);e.push.apply(e,i)}return e}var Wh=av(function(t,e,r){return t===iv||!e||e.length===0?[]:r.adapter.findAll(t,e)}),ioe=av(function(t,e,r){return t===iv||!e||e.length===0?null:r.adapter.findOne(t,e)});function soe(s,t,e){return e=e||{},e.adapter=e.adapter||Fh,(typeof t=="function"?t:Uh(t,e))(s)}function br(s,t,e){return Wh(s,t,e)}br.compile=Uh;br.filters=co.Pseudos.filters;br.pseudos=co.Pseudos.pseudos;br.selectAll=Wh;br.selectOne=ioe;br.is=soe;br.parse=Uh;br.iterate=Wh;br._compileUnsafe=ov;br._compileToken=co.compileToken;const cv=an(toe);Ze(Array);function Wo(s){return s.nodeType===1||Gt.isSpriteNode(s.nodeName)}function Ci(s){return Array.from(s.childNodes||[])}function Iu(s){return Gt.isSpriteNode(s.nodeName)?s.parent||s.canvas||s.container:s.parentElement}function ooe(s){let t=s.length,e,r,n;for(;--t>-1;){for(e=r=s[t],s[t]=null,n=!0;r;){if(s.indexOf(r)>-1){n=!1,s.splice(t,1);break}r=Iu(r)}n&&(s[t]=e)}return s}const Vh={isTag:Wo,existsOne(s,t){return t.some(e=>Wo(e)?s(e)||Vh.existsOne(s,Ci(e)):!1)},getSiblings(s){const t=Iu(s);return t&&Ci(t)},getChildren:Ci,getParent:Iu,getAttributeValue(s,t){if(s.nodeType===1&&t==="class"||t==="id")return s[t];if(this.hasAttrib(s,t)){let e=s.attributes[t];return Array.isArray(e)&&(e=`[${e.join()}]`),String(e)}},hasAttrib(s,t){return s.attributes[t]!=null},removeSubsets:ooe,getName(s){return s.tagName?s.tagName.toLowerCase():null},findOne:function s(t,e){let r=null;for(let n=0,i=e.length;n<i&&!r;n++)if(t(e[n]))r=e[n];else{const o=Ci(e[n]);o&&o.length>0&&(r=s(t,o))}return r},findAll:function s(t,e){let r=[];for(let n=0,i=e.length;n<i;n++){if(!Wo(e[n]))continue;t(e[n])&&r.push(e[n]);const o=Ci(e[n]);o&&(r=r.concat(s(t,o)))}return r},getText:function s(t){return Array.isArray(t)?t.map(s).join(""):Wo(t)?s(Ci(t)):t.nodeType===3?t.nodeValue:Gt.isSpriteNode(t.nodeName)?t.text:""}};function lv(s){if(typeof s!="string")return s;let t=s.match(/\[(bgcolor|fillColor|strokeColor|color)\s*=\s*['"]?\w+['"]?\]/g);return t&&(t=t.map(e=>{const r=e.slice(1,-1).split("="),n=En(r[1].replace(/['"]/g,""));return[e,`[${r[0]}="${n}"]`]}),t.forEach(([e,r])=>{s=s.replace(e,r)})),t=s.match(/\[\w+\s*=\s*['"]\[.+?\]['"]\]/g),t&&(t=t.map(e=>{const r=e.slice(1,-1).split("="),n=r[1].slice(2,-2).split(/,/g).map(i=>i.trim());return[e,`[${r[0]}="[${n}]"]`]}),t.forEach(([e,r])=>{s=s.replace(e,r)})),s}function Vo(s,t){return cv.selectAll(lv(s),t,{adapter:Vh})}function yg(s,t){return cv.selectOne(lv(s),t,{adapter:Vh})}Ze(Array);const vg=Symbol("zOrder"),vt=Symbol("ordered"),Lt=Symbol("children"),Il=Symbol("sealed"),Ua=class Ua extends so{constructor(t={}){super(t),this[Lt]=[],this[vt]=null,this[vg]=0}get childNodes(){return this[Lt]}get children(){return this[Lt]}get orderedChildren(){return this[vt]||(this[vt]=[...this[Lt]],this[vt].sort((t,e)=>t.zIndex-e.zIndex||t.zOrder-e.zOrder)),this[vt]}append(...t){return t.map(e=>this.appendChild(e))}appendChild(t){return t.remove(),this[Lt].push(t),t.connect(this,this[vg]++),this[vt]&&(this[vt].length&&t.zIndex<this[vt][this[vt].length-1].zIndex?this.reorder():this[vt].push(t)),t}cloneNode(t=!1){const e=super.cloneNode();return t&&this[Lt].forEach(r=>{const n=r.cloneNode(t);e.appendChild(n)}),e}dispatchPointerEvent(t){const e=this.orderedChildren;for(let r=e.length-1;r>=0;r--)if(e[r].dispatchPointerEvent(t))return!0;return super.dispatchPointerEvent(t)}draw(t=[]){if(this.__cacheRenderMatrix=this.renderMatrix,super.draw(t),!this[Il]&&this.attributes.display!=="none"){const e=this.orderedChildren;for(let r=0;r<e.length;r++)e[r].draw(t)}return this.__cacheRenderMatrix=null,t}getElementById(t){return yg(`#${t}`,this)}getElementsByClassName(t){return Vo(`.${t}`,this)}getElementsByName(t){return Vo(`[name="${t}"]`,this)}getElementsByTagName(t){return Vo(t,this)}insertBefore(t,e){if(e==null)return this.appendChild(t);t.remove();const r=this[Lt].indexOf(e);if(r<0)throw new Error("Invalid reference node.");const n=e.zOrder;for(let i=r;i<this[Lt].length;i++){const o=this[Lt][i].zOrder,a=this[Lt][i];delete a.zOrder,Object.defineProperty(a,"zOrder",{value:o+1,writable:!1,configurable:!0})}if(this[Lt].splice(r,0,t),t.connect(this,n),this[vt])if(t.zIndex!==e.zIndex)this.reorder();else{const i=this[vt].indexOf(e);this[vt].splice(i,0,t)}return t}querySelector(t){return yg(t,this)}querySelectorAll(t){return Vo(t,this)}replaceChild(t,e){t.remove();const r=this[Lt].indexOf(e);if(r<0)throw new Error("Invalid reference node.");if(this[Lt][r]=t,t.connect(this,e.zOrder),this[vt])if(t.zIndex!==e.zIndex)this.reorder();else{const n=this[vt].indexOf(e);this[vt][n]=t}return e.disconnect(this),t}removeAllChildren(){const t=this[Lt];for(let e=t.length-1;e>=0;e--)t[e].remove()}removeChild(t){const e=this[Lt].indexOf(t);if(e>=0){if(this[Lt].splice(e,1),this[vt]){const r=this[vt].indexOf(t);this[vt].splice(r,1)}return t.disconnect(this),t}return null}reorder(){this[vt]=null}seal(){function t(i,o){const a=[];for(let c=0;c<i.length;c++){const l=[...i[c]];for(let u=1;u<l.length;u+=2){const h=l[u],d=l[u+1];l[u]=h*o[0]+d*o[2]+o[4],l[u+1]=h*o[1]+d*o[3]+o[5]}a.push(l)}return a}const e=this.orderedChildren,r=new ft.Figure2D,n=this.localMatrix;for(let i=0;i<e.length;i++){let o=e[i];if(o instanceof Ua&&(o=o.seal()),o.clientBox){let a=o.clientBox.contours.path;a=t(a,o.localMatrix),r.addPath(a)}if(o.path){let a=o.path.contours.path;a=t(a,o.localMatrix),r.addPath(a)}}return this[Il]=!0,this.clientBox=r,{clientBox:r,localMatrix:n}}setResolution({width:t,height:e}){super.setResolution({width:t,height:e}),this[Lt].forEach(r=>{r.setResolution({width:t,height:e})})}updateContours(){this[Il]||super.updateContours()}};E(Ua,"Attr",_I);let ht=Ua;Gt.registerNode(ht,"group");Ze(Array);const bu={};function ba(s,t){if(bu[s])return bu[s];const e=ft.ENV.loadImage(s,{alias:t,useImageBitmap:!1});return e??s}async function uv(s,t,e){let r=t;if(typeof t=="string"&&(r=ba(t)),r&&typeof r.then=="function"&&(r=await r),t===s.attributes.texture){r&&r.image&&(r.sourceRect&&(s.attributes.sourceRect=r.sourceRect),s.textureImageRotated=!!r.rotated,r=r.image);const{width:n,height:i,textureRect:o}=s.attributes,a=s.textureImage;s.textureImage=r,e&&a!==r&&!o&&(n==null||i==null)&&s.updateContours(),s.forceUpdate()}return r}const wr=Symbol("textureMap");function hv(s,t){if(t[wr]=t[wr]||new Map,t[wr].has(s))return t[wr].get(s);const e=t.createTexture(s);return!/^blob:/.test(s.src)&&typeof s.getContext!="function"&&t[wr].set(s,e),e}function dv(s,t){if(t[wr]&&t[wr].has(s)){const e=t[wr].get(s);return t.deleteTexture(e),t[wr].delete(s),!0}return!1}const bl=Symbol("textureContext");function fv(s,t){const e=s.textureImage instanceof String?String(s.textureImage):s.textureImage,r=s.textureImageRotated,n=t.texture,i=s.renderer;if(e){const o=s.originalContentRect;let a=s.attributes.textureRect;const c=s.attributes.textureRepeat,l=s.attributes.sourceRect;if(!n||s[bl]&&s[bl]!==i||n.image!==e||n.options.repeat!==c||!eu(n.options.rect,a)||!eu(n.options.srcRect,l)){const u=hv(e,i);a?(a[0]+=o[0],a[1]+=o[1]):a=o;let h=null;n&&!i[wr].has(n.image)&&(!n.options||!n.options.hidden)&&(h=t.uniforms.u_texSampler),t.setTexture(u,{rect:a,repeat:c,srcRect:l,rotated:r}),h&&h.delete&&h.delete(),s[bl]=i}}else if(n){let o=null;!i[wr].has(n.image)&&(!n.options||!n.options.hidden)&&(o=t.uniforms.u_texSampler),t.setTexture(null),o&&o.delete&&o.delete()}}async function aoe(s,t){typeof t=="string"&&(t=await(await fetch(t,{method:"GET",mode:"cors",cache:"default"})).json());const e=await ba(s),r=t.frames;return Object.entries(r).forEach(([n,i])=>{const{x:o,y:a,w:c,h:l}=i.frame;let u=[o,a,c,l];const h=i.rotated;h&&(u=[u[0],u[1],u[3],u[2]]),bu[n]={image:e,sourceRect:u,rotated:h}}),e}Ze(Array);const coe={antialias:!0,autoRender:!0,alpha:!0},us=Symbol("autoRender"),hs=Symbol("renderer"),Mg=Symbol("timeline"),Nt=Symbol("prepareRender"),El=Symbol("tickRender"),Yr=Symbol("pass"),hn=Symbol("fbo"),Fn=Symbol("tickers"),Un=Symbol("destroyed"),dn=Symbol("layerTransformInvert");function loe(s){if(!s||!s.options)return null;let t="2d";return s.glRenderer&&(t=s.isWebGL2?"webgl2":"webgl"),s.options.contextType=t,s.options.webgl2=t==="webgl2",t}let Jn=class extends ht{constructor(t={}){if(super(),!t.canvas){const{width:i,height:o}=this.getResolution(),a=ft.ENV.createCanvas(i,o,{offscreen:!!t.offscreen,id:t.id,extra:t.extra});a.style&&(a.style.position="absolute"),a.dataset&&(a.dataset.layerId=t.id),a.contextType&&(t.contextType=a.contextType),t.canvas=a}const e=t.canvas,r=Object.assign({},coe,t);this[us]=r.autoRender,delete t.autoRender;const n=r.Renderer||ft.Renderer;this[hs]=new n(e,r),loe(this[hs]),this.options=t,this.id=t.id,this[Yr]=[],this.setResolution(e),this.canvas=e,this[Mg]=new gy,this[Un]=!1,this.__mouseCapturedTarget=null,this[dn]=null}get autoRender(){return this[us]}get displayRatio(){return this.parent&&this.parent.options?this.parent.options.displayRatio:1}get height(){const{height:t}=this.getResolution();return t/this.displayRatio}get gl(){return this.renderer.glRenderer?this.renderer.glRenderer.gl:null}get layer(){return this}get offscreen(){return!!this.options.offscreen||this.canvas._offscreen}get pass(){return this[Yr]}get prepareRender(){return this[Nt]?this[Nt]:Promise.resolve()}get renderer(){return this[hs]}transferToImageBitmap(){const t=this.canvas;if(!t||typeof t.transferToImageBitmap!="function")throw new Error("transfer-to-image-bitmap-unavailable");const e=t.transferToImageBitmap();if(!e)throw new Error("transfer-to-image-bitmap-empty");return e}get renderOffset(){if(this.parent&&this.parent.options){const{left:t,top:e}=this.parent.options;return[t,e]}return[this.options.left|0,this.options.top|0]}get timeline(){return this[Mg]}get width(){const{width:t}=this.getResolution();return t/this.displayRatio}get localMatrix(){const{x:t,y:e}=this.attributes;return[1,0,0,1,t,e]}get layerTransformInvert(){if(this[dn])return this[dn];const t=this.transformMatrix;return t[0]===1&&t[1]===0&&t[2]===0&&t[3]===1&&t[4]===0&&t[5]===0?null:(this[dn]=ya(Array.of(0,0,0,0,0,0),t),this[dn])}forceContextLoss(){const t=this.renderer.glRenderer&&this.renderer.glRenderer.gl;if(t&&typeof t.getExtension=="function"){const e=t.getExtension("WEBGL_lose_context");if(e)return e.loseContext(),!0}return!1}destroy(){if(this[Un])return!1;this[Un]=!0,this[us]=!1;let t;const e=i=>{try{i()}catch(o){t=t||o}};this[Fn]=[],this.__mouseCapturedTarget=null,e(()=>this.cancelPendingRender()),e(()=>this.removeAllChildren()),e(()=>this.deactivateAnimations()),this[Yr]=[],this[hn]=null;const r=this.renderer.glRenderer;let n=[];if(r&&r.programs&&(e(()=>{n=[...r.programs]}),n.forEach(i=>e(()=>r.deleteProgram(i)))),e(()=>this.forceContextLoss()),e(()=>this.remove()),t)throw t;return!0}addPass({vertex:t,fragment:e,options:r,uniforms:n}={}){if(this.renderer.glRenderer){const{width:i,height:o}=this.getResolution(),a=this.renderer.createPassProgram({vertex:t,fragment:e,options:r}),c=new ft.Figure2D;c.rect(0,0,i/this.displayRatio,o/this.displayRatio);const l=new ft.Mesh2D(c);return l.setUniforms(n),l.setProgram(a),this[Yr].push(l),this.forceUpdate(),l}return null}deleteTexture(t){return dv(t,this.renderer)}dispatchPointerEvent(t){const e=t.type;if(e==="mousedown"||e==="mouseup"||e==="mousemove"){const a=this.__mouseCapturedTarget;if(a){if(a.layer===this)return a.dispatchEvent(t),!0;this.__mouseCapturedTarget=null}}let r,n;const i=this.layerTransformInvert;if(i){r=t.x,n=t.y;const a=i,c=a[0]*r+a[2]*n+a[4],l=a[1]*r+a[3]*n+a[5];delete t.x,delete t.y,delete t.layerX,delete t.layerY,Object.defineProperties(t,{layerX:{value:c,configurable:!0},layerY:{value:l,configurable:!0},x:{value:c,configurable:!0},y:{value:l,configurable:!0}})}const o=super.dispatchPointerEvent(t);return i&&Object.defineProperties(t,{layerX:{value:r,configurable:!0},layerY:{value:n,configurable:!0},x:{value:r,configurable:!0},y:{value:n,configurable:!0}}),o}forceUpdate(){if(!this[Un]&&!this[Nt])if(this.parent&&this.parent.hasOffscreenCanvas){this.parent.forceUpdate();let t=null;const e=new Promise(r=>{t=r});e._resolve=t,this[Nt]=e}else{let t=null,e=null;const r=new Promise(n=>{t=n,this[us]&&(e=rn(()=>{delete r._requestID,this.render()}))});r._resolve=t,r._requestID=e,this[Nt]=r}}getFBO(){const t=this.renderer.glRenderer,{width:e,height:r}=this.getResolution();return t&&(!this[hn]||this[hn].width!==e||this[hn].height!==r)?(this[hn]={width:e,height:r,target:t.createFBO(),buffer:t.createFBO(),swap(){[this.target,this.buffer]=[this.buffer,this.target]}},this[hn]):this[hn]?this[hn]:null}updateGlobalTransform(){if(this.layerTransformInvert){const t=this.renderer,e=t.__globalTransformMatrix||t.globalTransformMatrix;t.__globalTransformMatrix=e;const r=ei(1,0,0,1,0,0);t.setGlobalTransform(...Lr(r,e,this.transformMatrix))}}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),t==="zIndex"&&(this.canvas.style.zIndex=e),t==="transform"||t==="translate"||t==="rotate"||t==="scale"||t==="skew"){const n=this[dn];if(this[dn]=null,this.updateGlobalTransform(),n&&!this.layerTransformInvert){const i=this.renderer,o=i.__globalTransformMatrix||i.globalTransformMatrix;i.setGlobalTransform(...o)}}}_prepareRenderFinished(){this[Nt]&&(this[Nt]._requestID!=null&&ri(this[Nt]._requestID),this[Nt]._resolve(),delete this[Nt])}cancelPendingRender(){const t=!!this[Nt];return this._prepareRenderFinished(),t}render({clear:t=!0}={}){if(!this[Un])try{const e=this[Yr].length?this.getFBO():null;e&&this.renderer.glRenderer.bindFBO(e.target),t&&this[hs].clear();const r=this.draw();if(r&&r.length&&(this.renderer.drawMeshes(r),this.canvas.draw&&this.canvas.draw()),e){const n=this.renderer.glRenderer,i=this[Yr].length,{width:o,height:a}=this.getResolution(),c=[0,0,o/this.displayRatio,a/this.displayRatio];this[Yr].forEach((l,u)=>{l.blend=!0,l.setTexture(e.target.texture,{rect:c}),u===i-1?n.bindFBO(null):(e.swap(),n.bindFBO(e.target)),this[hs].clear(),this.renderer.drawMeshes([l])})}}finally{this._prepareRenderFinished()}}setResolution({width:t,height:e}){const r=this.renderer,n=r.__globalTransformMatrix||r.globalTransformMatrix,i=n[4],o=n[5],a=n[0],{width:c,height:l}=this.getResolution();(c!==t||l!==e)&&(super.setResolution({width:t,height:e}),this.canvas&&(this.canvas.width=t,this.canvas.height=e,r.updateResolution&&r.updateResolution()),this.attributes.size=[t,e],this[Yr].length&&this[Yr].forEach(f=>{const g=new ft.Figure2D;g.rect(0,0,t/this.displayRatio,e/this.displayRatio),f.contours=g.contours}));const[u,h]=this.renderOffset,d=this.displayRatio;(i!==u||o!==h||a!==d)&&(r.setGlobalTransform(d,0,0,d,u,h),r.__globalTransformMatrix=null,this[dn]=null,this.updateGlobalTransform(),this.forceUpdate())}tick(t=null,{duration:e=1/0,...r}={}){if(this[Un])return;const n=this.timeline.fork(r),i=this;this[Fn]=this[Fn]||[],this[Fn].push({handler:t,duration:e});const o=()=>{let a=null,c=null;const l=()=>{const u=this[Fn].map(({handler:h,duration:d})=>{const f=Math.min(1,n.currentTime/d);return{value:h?h(n.currentTime,f):null,p:f}});i[El]||(i[El]=Promise.resolve().then(()=>{if(delete i[El],!i[Un]){i[us]&&i.render();for(let h=u.length-1;h>=0;h--){const{value:d,p:f}=u[h];(d===!1||f>=1)&&this[Fn].splice(h,1)}this[Fn].length>0&&o()}}))};if(this[Nt]&&this[Nt]._type!=="ticker"&&(ri(this[Nt]._requestID),delete this[Nt]),!this[Nt]){const u=new Promise(h=>{a=h,c=rn(l)});u._resolve=a,u._requestID=c,u._type="ticker",this[Nt]=u}};o()}toGlobalPos(t,e){if(this.layerTransformInvert){const c=this.transformMatrix;t=c[0]*t+c[2]*e+c[4],e=c[1]*t+c[3]*e+c[5]}const{width:r,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];t=t*o[0]/r+i[0],e=e*o[1]/n+i[1];const a=this.displayRatio;return t*=a,e*=a,[t,e]}toLocalPos(t,e){const{width:r,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];t=t*r/o[0]-i[0],e=e*n/o[1]-i[1];const a=this.displayRatio;t/=a,e/=a;const c=this.layerTransformInvert;return c&&(t=c[0]*t+c[2]*e+c[4],e=c[1]*t+c[3]*e+c[5]),[t,e]}};Gt.registerNode(Jn,"layer");Ze(Array);const wg=Symbol("inited");let gv=null;typeof Worker=="function"&&(gv=class extends Worker{constructor(s){if(s.worker===!0&&(s.worker=`./${s.id}.worker.js`),super(s.worker),this.options=s,!s.canvas){const{width:t,height:e}=this.getResolution(),r=ft.ENV.createCanvas(t,e,{offscreen:!1});r.style&&(r.style.position="absolute"),r.dataset&&(r.dataset.layerId=s.id),s.canvas=r}this.canvas=s.canvas}get id(){return this.options.id}setResolution({width:s,height:t}){if(this[wg])this.postMessage({type:"resolution_change",width:s,height:t});else{this.canvas.width=s,this.canvas.height=t;const e=this.options,r=e.canvas.transferControlToOffscreen(),n={...e};delete n.container,n.canvas=r,this.postMessage({type:"create",options:n},[r]),this[wg]=!0}}getResolution(){if(this.canvas){const{width:s,height:t}=this.canvas;return{width:s,height:t}}return{width:300,height:150}}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}connect(s,t){Object.defineProperty(this,"parent",{value:s,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:t,writable:!1,configurable:!0})}disconnect(){delete this.parent,delete this.zOrder}dispatchPointerEvent(s){this.postMessage({type:"event",event:{cancelBubble:s.cancelBubble,bubbles:s.bubbles,detail:s.detail,identifier:s.identifier,layerX:s.layerX,layerY:s.layerY,originalX:s.originalX,originalY:s.originalY,type:s.type,x:s.x,y:s.y}})}});const $o=gv;Ze(Array);function uoe(s,{offsetTop:t=0,offsetLeft:e=0,displayRatio:r=1}={}){let n,i;const o=[],{left:a,top:c,width:l,height:u}=s.target.getBoundingClientRect(),h=s.target.width,d=s.target.height,f=s.changedTouches||[s];for(let y=0;y<f.length;y++){const T=f[y],x=T.identifier,{clientX:C,clientY:L}=T;C!=null&&L!=null&&o.push({x:Math.round((C|0)-a),y:Math.round((L|0)-c),identifier:x})}o.length<=0&&o.push({x:n,y:i});const g=[];return o.forEach(y=>{y.x!=null&&y.y!=null&&(n=(y.x*h/l-e)/r,i=(y.y*d/u-t)/r);const T=new ni(s);Object.defineProperties(T,{layerX:{value:n,configurable:!0},layerY:{value:i,configurable:!0},originalX:{value:y.x},originalY:{value:y.y},x:{value:n,configurable:!0},y:{value:i,configurable:!0},identifier:{value:y.identifier}}),g.push(T)}),g}Ze(Array);const ha=Symbol("enteredTargets");function Sg(s){return s.id=s.id||`_layer${Math.random().toString(36).slice(2,12)}`,s.dataset||(s.dataset={}),s.dataset.layerId=s.id,s.connect=(t,e)=>{s.parent=t,Object.defineProperty(s,"zOrder",{value:e,writable:!1,configurable:!0})},s.disconnect=t=>{delete s.zOrder},s.canvas=s,s.getResolution=()=>({width:0,height:0}),s.setResolution=()=>!1,s.options={handleEvent:!1},s}function Tg(s,t){const e=s.children;let r=null;for(let n=0;n<e.length;n++){const i=e[n];if((t===i||r!=null)&&(r=i),r&&r!==t&&!r.offscreen)return r.canvas}return null}function Cg(s,t){const[e,r]=s.renderOffset,{width:n,height:i}=s.getResolution(),o=s.displayRatio;s.renderer.drawImage(t.canvas,-e/o,-r/o,n/o,i/o)}const xl={};function hoe(s){const t=["mousedown","mouseup","mousemove","mousewheel","wheel","touchstart","touchend","touchmove","touchcancel","click","dblclick","longpress","tap","contextmenu"],e=s.container;e.addEventListener("mouseleave",r=>{const n=s[ha];if(n.size){const i=new ni("mouseleave");i.setOriginalEvent(r),[...n].forEach(o=>{o.dispatchEvent(i)}),s[ha].clear()}},{passive:!0}),t.forEach(r=>{e.addEventListener(r,n=>{const{left:i,top:o,displayRatio:a}=s.options,c=s.orderedChildren;uoe(n,{offsetLeft:i,offsetTop:o,displayRatio:a}).forEach(u=>{const h=u.identifier;if(u.type==="touchmove"||u.type==="touchend"){const f=xl[h];f&&f.dispatchEvent(u),u.type==="touchend"&&delete xl[h]}else{for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){if(g.dispatchPointerEvent(u)&&u.target!==g)break;u.cancelBubble=!1}}if(u.target===c[0])for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){u.target=g;break}}}const d=u.target;if(u.type==="touchstart"&&(xl[h]=u.target),u.type==="mousemove"){const f=s[ha];let g;if(d){const x=d.ancestors||[];g=new Set([d,...x])}else g=new Set;const y=Object.entries(n);if(!f.has(d)&&d){const x=new ni("mouseenter");x.setOriginalEvent(n),y.forEach(([L,S])=>{x[L]=S}),f.add(d),d.dispatchEvent(x);const C=d.ancestors;C&&C.forEach(L=>{L instanceof uc&&!f.has(L)&&(f.add(L),L.dispatchEvent(x))})}const T=new ni("mouseleave");T.setOriginalEvent(n),y.forEach(([x,C])=>{T[x]=C}),[...f].forEach(x=>{g.has(x)||(f.delete(x),x.dispatchEvent(T))})}})},{passive:r!=="contextmenu"})})}function Yo(s,t){if(t&&t.style){let{width:e,height:r,mode:n,container:i}=s;const{clientWidth:o,clientHeight:a}=i;e=e||o,r=r||a,n==="static"?(t.style.width=`${e}px`,t.style.height=`${r}px`):(t.style.top="0",t.style.left="0",t.style.width=`${o}px`,t.style.height=`${a}px`,t.style.transform="",t.style.webkitTransform="")}}const ds=Symbol("offscreenLayerCount");class vc extends ht{constructor(t={}){if(super(),!t.container)if(typeof ft.ENV.Container=="function")t.container=new ft.ENV.Container(t.width||300,t.height||150);else throw new Error("No container specified.");if(this.container=t.container,this.container.style&&(this.container.style.overflow||(this.container.style.overflow="hidden"),this.container.style.position||(this.container.style.position="relative")),this.options=t,t.displayRatio=t.displayRatio||1,t.mode=t.mode||"scale",t.left=0,t.top=0,t.autoResize=t.autoResize!==!1,t.autoResize){let e;if(typeof globalThis<"u"?e=globalThis:e=typeof window<"u"?window:global,e.addEventListener){const r=this;e.addEventListener("resize",function n(){typeof document<"u"&&document.contains(r.container)?r.resize():e.removeEventListener("resize",n)})}}this[ha]=new Set,this.setResolution(t),hoe(this),this[ds]=0}get hasOffscreenCanvas(){return this[ds]>0}set displayRatio(t){this.options.displayRatio!==t&&(this.options.displayRatio=t,this.resize())}get displayRatio(){return this.options.displayRatio}set height(t){this.options.height!==t&&(this.options.height=t,this.resize())}get height(){return this.options.height}set mode(t){this.options.mode!==t&&(this.options.mode=t,this.resize())}get mode(){return this.options.mode}set width(t){this.options.width!==t&&(this.options.width=t,this.resize())}get width(){return this.options.width}appendChild(t){!(t instanceof Jn)&&!(t instanceof $o)&&Sg(t);const e=super.appendChild(t),r=t.canvas;return t.offscreen?this[ds]++:this.container.appendChild(r),Yo(this.options,r),t.setResolution(this.getResolution()),e}forceUpdate(){this.hasOffscreenCanvas&&!this._requestID&&(this._requestID=rn(()=>{delete this._requestID,this.render()}))}insertBefore(t,e){!(t instanceof Jn)&&!(t instanceof $o)&&Sg(t);const r=super.insertBefore(t,e),n=t.canvas;if(!t.offscreen){const i=Tg(this,t);this.container.insertBefore(n,i)}return Yo(this.options,n),t.setResolution(this.getResolution()),r}layer(t="default",e={}){e=Object.assign({},this.options,e),e.id=t;const r=this.orderedChildren;for(let o=0;o<r.length;o++)if(r[o].id===t)return r[o];const n=e.worker;let i;return n?i=new $o(e):i=new Jn(e),this.appendChild(i),i}async preload(...t){const e=[],r=[],n=[];for(let i=0;i<t.length;i++){const o=t[i];let a;if(typeof o=="string")a=ba(o);else if(Array.isArray(o))a=aoe(...o);else{const{id:c,src:l}=o;a=ba(l,c)}a instanceof Promise||(a=Promise.resolve(a)),r.push(a.then(c=>{e.push(c),n[i]=c;const l=new ni({type:"preload",detail:{current:c,loaded:e,resources:t}});this.dispatchEvent(l)}))}return await Promise.all(r),n}removeChild(t){const e=super.removeChild(t);if(e){t._prepareRenderFinished&&t._prepareRenderFinished();const r=t.canvas;r&&r.remove&&r.remove(),t.offscreen&&this[ds]--}return e}render(){const t=this.orderedChildren;let e=null;const r=[];for(let n=0;n<t.length;n++){const i=t[n],o=r.length>0;if(i instanceof Jn&&!i.offscreen)if(!i.autoRender)o&&(console.warn("Some offscreen canvas will not be rendered."),r.length=0);else if(e=i,o){i.renderer.clear();for(let a=0;a<r.length;a++){const c=r[a];c.render(),Cg(i,c)}r.length=0,i.render({clear:!1})}else i.prepareRender&&i.render();else i.offscreen?e?(i.prepareRender&&i.render(),Cg(e,i)):r.push(i):i instanceof $o&&o&&(console.warn("Some offscreen canvas will not be rendered."),r.length=0)}}replaceChild(t,e){const r=super.replaceChild(t,e);e.canvas.remove&&e.canvas.remove(),e.offscreen&&this[ds]--;const n=t.canvas;if(!t.offscreen){const i=Tg(this,t);this.container.insertBefore(n,i)}return Yo(this.options,n),t.setResolution(this.getResolution()),r}resize(){const t=this.options;this.children.forEach(e=>{Yo(t,e.canvas)}),this.setResolution(t),this.dispatchEvent({type:"resize"})}setResolution({width:t,height:e}={}){const r=this.container,{clientWidth:n,clientHeight:i}=r;(t==null||e==null)&&(t=t??n,e=e??i);const{mode:o,displayRatio:a}=this.options;if(t*=a,e*=a,this.options.left=0,this.options.top=0,o==="stickyHeight"||o==="stickyLeft"||o==="stickyRight"){const c=t;t=n*e/i,o==="stickyHeight"&&(this.options.left=.5*(t-c)),o==="stickyRight"&&(this.options.left=t-c)}else if(o==="stickyWidth"||o==="stickyTop"||o==="stickyBottom"){const c=e;e=i*t/n,o==="stickyWidth"&&(this.options.top=.5*(e-c)),o==="stickyBottom"&&(this.options.top=e-c)}super.setResolution({width:t,height:e})}snapshot({offscreen:t=!1,layers:e}={}){const r=t?"snapshotOffScreenCanvas":"snapshotCanvas",{width:n,height:i}=this.getResolution();this[r]=this[r]||ft.ENV.createCanvas(n,i,{offscreen:t});const o=this[r].getContext("2d");e=e||this.orderedChildren,this[r].width=n,this[r].height=i;for(let a=0;a<e.length;a++){const c=e[a];if(!c.options.ignoreSnapshot){c.render&&c.render();const l=c.canvas;l&&l!==c&&o.drawImage(l,0,0,n,i)}}return this[r]}}typeof document<"u"&&(vc.prototype.layer3d=function(s,t={}){const e=t.url||"https://unpkg.com/sprite-extend-3d/dist/sprite-extend-3d.min.js";return new Promise((r,n)=>{const i=document.createElement("script");i.async=!1,i.src=e,i.onload=()=>{try{r(this.layer3d(s,t))}catch(o){n(o)}},document.documentElement.appendChild(i)})});Gt.registerNode(vc,"scene");var pv={exports:{}};(function(s,t){(function(e,r){s.exports=r()})(St,function(){var e=function(){function b(P,D){var z=[],j=!0,k=!1,A=void 0;try{for(var N=P[Symbol.iterator](),W;!(j=(W=N.next()).done)&&(z.push(W.value),!(D&&z.length===D));j=!0);}catch(Y){k=!0,A=Y}finally{try{!j&&N.return&&N.return()}finally{if(k)throw A}}return z}return function(P,D){if(Array.isArray(P))return P;if(Symbol.iterator in Object(P))return b(P,D);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Math.PI*2,n=function(P,D,z,j,k,A,N){var W=P.x,Y=P.y;W*=D,Y*=z;var Q=j*W-k*Y,ie=k*W+j*Y;return{x:Q+A,y:ie+N}},i=function(P,D){var z=1.3333333333333333*Math.tan(D/4),j=Math.cos(P),k=Math.sin(P),A=Math.cos(P+D),N=Math.sin(P+D);return[{x:j-k*z,y:k+j*z},{x:A+N*z,y:N-A*z},{x:A,y:N}]},o=function(P,D,z,j){var k=P*j-D*z<0?-1:1,A=Math.sqrt(P*P+D*D),N=Math.sqrt(P*P+D*D),W=P*z+D*j,Y=W/(A*N);return Y>1&&(Y=1),Y<-1&&(Y=-1),k*Math.acos(Y)},a=function(P,D,z,j,k,A,N,W,Y,Q,ie,O){var V=Math.pow(k,2),Z=Math.pow(A,2),$=Math.pow(ie,2),ee=Math.pow(O,2),se=V*Z-V*ee-Z*$;se<0&&(se=0),se/=V*ee+Z*$,se=Math.sqrt(se)*(N===W?-1:1);var ce=se*k/A*O,me=se*-A/k*ie,pe=Q*ce-Y*me+(P+z)/2,B=Y*ce+Q*me+(D+j)/2,F=(ie-ce)/k,J=(O-me)/A,oe=(-ie-ce)/k,K=(-O-me)/A,te=o(1,0,F,J),w=o(F,J,oe,K);return W===0&&w>0&&(w-=r),W===1&&w<0&&(w+=r),[pe,B,te,w]},c=function(P){var D=P.px,z=P.py,j=P.cx,k=P.cy,A=P.rx,N=P.ry,W=P.xAxisRotation,Y=W===void 0?0:W,Q=P.largeArcFlag,ie=Q===void 0?0:Q,O=P.sweepFlag,V=O===void 0?0:O,Z=[];if(A===0||N===0)return[];var $=Math.sin(Y*r/360),ee=Math.cos(Y*r/360),se=ee*(D-j)/2+$*(z-k)/2,ce=-$*(D-j)/2+ee*(z-k)/2;if(se===0&&ce===0)return[];A=Math.abs(A),N=Math.abs(N);var me=Math.pow(se,2)/Math.pow(A,2)+Math.pow(ce,2)/Math.pow(N,2);me>1&&(A*=Math.sqrt(me),N*=Math.sqrt(me));var pe=a(D,z,j,k,A,N,ie,V,$,ee,se,ce),B=e(pe,4),F=B[0],J=B[1],oe=B[2],K=B[3],te=Math.max(Math.ceil(Math.abs(K)/(r/4)),1);K/=te;for(var w=0;w<te;w++)Z.push(i(oe,K)),oe+=K;return Z.map(function(I){var U=n(I[0],A,N,ee,$,F,J),G=U.x,_=U.y,re=n(I[1],A,N,ee,$,F,J),ne=re.x,X=re.y,ae=n(I[2],A,N,ee,$,F,J),ue=ae.x,he=ae.y;return{x1:G,y1:_,x2:ne,y2:X,x:ue,y:he}})},l={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},u=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function h(b){var P=[];return b.replace(u,function(D,z,j){var k=z.toLowerCase();for(j=f(j),k=="m"&&j.length>2&&(P.push([z].concat(j.splice(0,2))),k="l",z=z=="m"?"l":"L");;){if(j.length==l[k])return j.unshift(z),P.push(j);if(j.length<l[k])throw new Error("malformed path data");P.push([z].concat(j.splice(0,l[k])))}}),P}var d=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function f(b){var P=b.match(d);return P?P.map(Number):[]}function g(b){var P=b[0][0],D=b[0][1],z=P,j=D;return b.forEach(function(k){var A=k[0],N=k[2],W=k[4],Y=k[6],Q=k[1],ie=k[3],O=k[5],V=k[7];P=Math.min(P,A,N,W,Y),D=Math.min(D,Q,ie,O,V),z=Math.max(z,A,N,W,Y),j=Math.max(j,Q,ie,O,V)}),[P,D,z,j]}function y(b,P){return Math.sqrt(Math.pow(b[0]-P[0],2)+Math.pow(b[1]-P[1],2))+Math.sqrt(Math.pow(b[2]-P[2],2)+Math.pow(b[3]-P[3],2))}function T(b,P){var D=b[0],z=b[2],j=b[4],k=b[6],A=b[1],N=b[3],W=b[5],Y=b[7],Q=P[0],ie=P[2],O=P[4],V=P[6],Z=P[1],$=P[3],ee=P[5],se=P[7];return Math.sqrt(Math.pow(Q-D,2)+Math.pow(Z-A,2))+Math.sqrt(Math.pow(ie-z,2)+Math.pow($-N,2))+Math.sqrt(Math.pow(O-j,2)+Math.pow(ee-W,2))+Math.sqrt(Math.pow(V-k,2)+Math.pow(se-Y,2))}function x(b,P){var D=L(b.length),z=[];D.forEach(function(k){var A=0,N=0;k.forEach(function(W){A+=T(b[W],P[N++])}),z.push({index:k,distance:A})}),z.sort(function(k,A){return k.distance-A.distance});var j=[];return z[0].index.forEach(function(k){j.push(b[k])}),j}function C(b,P){var D=S(b.length),z=[];D.forEach(function(k){var A=0;k.forEach(function(N){A+=y(g(b[N]),g(P[N]))}),z.push({index:k,distance:A})}),z.sort(function(k,A){return k.distance-A.distance});var j=[];return z[0].index.forEach(function(k){j.push(b[k])}),j}function L(b){for(var P=[],D=0;D<b;D++){for(var z=[],j=0;j<b;j++){var k=j+D;k>b-1&&(k-=b),z[k]=j}P.push(z)}return P}function S(b){for(var P=[],D=0;D<b;D++)P.push(D);return p(P)}function p(b){var P=[],D=[];function z(j){var k,A;for(k=0;k<j.length;k++)A=j.splice(k,1)[0],D.push(A),j.length==0&&P.push(D.slice()),z(j),j.splice(k,0,A),D.pop();return P}return z(b)}var m={};m.parser=h,m.lerpCurve=function(b,P,D){return m.lerpPoints(b[0],b[1],P[0],P[1],D).concat(m.lerpPoints(b[2],b[3],P[2],P[3],D)).concat(m.lerpPoints(b[4],b[5],P[4],P[5],D)).concat(m.lerpPoints(b[6],b[7],P[6],P[7],D))},m.lerpPoints=function(b,P,D,z,j){return[b+(D-b)*j,P+(z-P)*j]},m.q2b=function(b,P,D,z,j,k){return[b,P,(b+2*D)/3,(P+2*z)/3,(j+2*D)/3,(k+2*z)/3,j,k]},m.path2shapes=function(b){for(var P=m.parser(b),D=0,z=0,j=0,k=P.length,A=[],N=null,W=void 0,Y=void 0,Q=void 0,ie=void 0,O=void 0,V=void 0,Z=void 0;j<k;j++){var $=P[j],ee=$[0],se=P[j-1];switch(ee){case"m":O=A.length,A[O]=[],N=A[O],D=D+$[1],z=z+$[2];break;case"M":O=A.length,A[O]=[],N=A[O],D=$[1],z=$[2];break;case"l":N.push([D,z,D,z,D,z,D+$[1],z+$[2]]),D+=$[1],z+=$[2];break;case"L":N.push([D,z,$[1],$[2],$[1],$[2],$[1],$[2]]),D=$[1],z=$[2];break;case"h":N.push([D,z,D,z,D,z,D+$[1],z]),D+=$[1];break;case"H":N.push([D,z,$[1],z,$[1],z,$[1],z]),D=$[1];break;case"v":N.push([D,z,D,z,D,z,D,z+$[1]]),z+=$[1];break;case"V":N.push([D,z,D,$[1],D,$[1],D,$[1]]),z=$[1];break;case"C":N.push([D,z,$[1],$[2],$[3],$[4],$[5],$[6]]),D=$[5],z=$[6];break;case"S":se[0]==="C"||se[0]==="c"?N.push([D,z,D+se[5]-se[3],z+se[6]-se[4],$[1],$[2],$[3],$[4]]):(se[0]==="S"||se[0]==="s")&&N.push([D,z,D+se[3]-se[1],z+se[4]-se[2],$[1],$[2],$[3],$[4]]),D=$[3],z=$[4];break;case"c":N.push([D,z,D+$[1],z+$[2],D+$[3],z+$[4],D+$[5],z+$[6]]),D=D+$[5],z=z+$[6];break;case"s":se[0]==="C"||se[0]==="c"?N.push([D,z,D+se[5]-se[3],z+se[6]-se[4],D+$[1],z+$[2],D+$[3],z+$[4]]):(se[0]==="S"||se[0]==="s")&&N.push([D,z,D+se[3]-se[1],z+se[4]-se[2],D+$[1],z+$[2],D+$[3],z+$[4]]),D=D+$[3],z=z+$[4];break;case"a":V=c({rx:$[1],ry:$[2],px:D,py:z,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:D+$[6],cy:z+$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?N.push([D,z,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):N.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),D=Z.x,z=Z.y;break;case"A":V=c({rx:$[1],ry:$[2],px:D,py:z,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:$[6],cy:$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?N.push([D,z,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):N.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),D=Z.x,z=Z.y;break;case"Q":N.push(m.q2b(D,z,$[1],$[2],$[3],$[4])),D=$[3],z=$[4];break;case"q":N.push(m.q2b(D,z,D+$[1],z+$[2],$[3]+D,$[4]+z)),D+=$[3],z+=$[4];break;case"T":se[0]==="Q"||se[0]==="q"?(Q=D+se[3]-se[1],ie=z+se[4]-se[2],N.push(m.q2b(D,z,Q,ie,$[1],$[2]))):(se[0]==="T"||se[0]==="t")&&(N.push(m.q2b(D,z,D+D-Q,z+z-ie,$[1],$[2])),Q=D+D-Q,ie=z+z-ie),D=$[1],z=$[2];break;case"t":se[0]==="Q"||se[0]==="q"?(Q=D+se[3]-se[1],ie=z+se[4]-se[2],N.push(m.q2b(D,z,Q,ie,D+$[1],z+$[2]))):(se[0]==="T"||se[0]==="t")&&(N.push(m.q2b(D,z,D+D-Q,z+z-ie,D+$[1],z+$[2])),Q=D+D-Q,ie=z+z-ie),D+=$[1],z+=$[2];break;case"Z":W=N[0][0],Y=N[0][1],N.push([D,z,W,Y,W,Y,W,Y]);break;case"z":W=N[0][0],Y=N[0][1],N.push([D,z,W,Y,W,Y,W,Y]);break}}return A},m._upCurves=function(b,P){for(var D=0,z=0,j=b.length;D<P;D++)b.push(b[z].slice(0)),z++,z>j-1&&(z-=j)};function M(b,P,D,z,j,k,A,N,W){return{left:v(b,P,D,z,j,k,A,N,W),right:v(A,N,j,k,D,z,b,P,1-W,!0)}}function v(b,P,D,z,j,k,A,N,W,Y){var Q=(D-b)*W+b,ie=(z-P)*W+P,O=(j-D)*W+D,V=(k-z)*W+z,Z=(A-j)*W+j,$=(N-k)*W+k,ee=(O-Q)*W+Q,se=(V-ie)*W+ie,ce=(Z-O)*W+O,me=($-V)*W+V,pe=(ce-ee)*W+ee,B=(me-se)*W+se;return Y?[pe,B,ee,se,Q,ie,b,P]:[b,P,Q,ie,ee,se,pe,B]}m._splitCurves=function(b,P){for(var D=0,z=0;D<P;D++){var j=b[z],k=M(j[0],j[1],j[2],j[3],j[4],j[5],j[6],j[7],.5);b.splice(z,1),b.splice(z,0,k.left,k.right),z+=2,z>=b.length-1&&(z=0)}};function R(b,P){for(var D=function(k){var A=b[b.length-1],N=[];A.forEach(function(W){N.push(W.slice(0))}),b.push(N)},z=0;z<P;z++)D()}return m.lerp=function(b,P,D){return m._lerp(m.path2shapes(b),m.path2shapes(P),D)},m.MIM_CURVES_COUNT=100,m._preprocessing=function(b,P){var D=b.length,z=P.length,j=JSON.parse(JSON.stringify(b)),k=JSON.parse(JSON.stringify(P));return D>z?R(k,D-z):D<z&&R(j,z-D),j=C(j,k),j.forEach(function(A,N){var W=A.length,Y=k[N].length;W>Y?W<m.MIM_CURVES_COUNT?(m._splitCurves(A,m.MIM_CURVES_COUNT-W),m._splitCurves(k[N],m.MIM_CURVES_COUNT-Y)):m._splitCurves(k[N],W-Y):W<Y&&(Y<m.MIM_CURVES_COUNT?(m._splitCurves(A,m.MIM_CURVES_COUNT-W),m._splitCurves(k[N],m.MIM_CURVES_COUNT-Y)):m._splitCurves(A,Y-W))}),j.forEach(function(A,N){j[N]=x(A,k[N])}),[j,k]},m._lerp=function(b,P,D){var z=[];return b.forEach(function(j,k){var A=[];j.forEach(function(N,W){A.push(m.lerpCurve(N,P[k][W],D))}),z.push(A)}),z},m.animate=function(b){var P=m.path2shapes(b.from),D=m.path2shapes(b.to),z=m._preprocessing(P,D),j=new Date,k=b.end||function(){},A=b.progress||function(){},N=b.begin||function(){},W=b.easing||function(V){return V},Y=null,Q=null,ie=b.time;N(P);var O=function V(){var Z=new Date-j;if(Z>=ie){Q=D,A(Q,1),k(Q),cancelAnimationFrame(Y);return}var $=W(Z/ie);Q=m._lerp(z[0],z[1],$),A(Q,$),Y=requestAnimationFrame(V)};O()},m})})(pv);var doe=pv.exports;const Go=an(doe);Ze(Array);const foe=Symbol.for("spritejs_setAttributeDefault"),Ot=Symbol.for("spritejs_setAttribute"),zt=Symbol.for("spritejs_getAttribute");let Mc=class extends rh{constructor(t){super(t),this[foe]({d:"",normalize:!1,fillColor:void 0,fillRule:"nonzero",strokeColor:void 0,lineWidth:1,lineJoin:"miter",lineCap:"butt",roundSegments:20,lineDash:void 0,lineDashOffset:0,miterLimit:10,texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0,clipPath:void 0})}get d(){return this[zt]("d")}set d(t){this[Ot]("d",t)}get normalize(){return this[zt]("normalize")}set normalize(t){this[Ot]("normalize",!!t)}get fillColor(){return this[zt]("fillColor")}set fillColor(t){this[Ot]("fillColor",En(t))}get fillRule(){return this[zt]("fillRule")}set fillRule(t){if(t!=null&&t!=="nonzero"&&t!=="evenodd")throw new TypeError("Invalid fill rule.");this[Ot]("fillRule",t)}get strokeColor(){return this[zt]("strokeColor")}set strokeColor(t){this[Ot]("strokeColor",En(t))}get lineWidth(){return this[zt]("lineWidth")}set lineWidth(t){this[Ot]("lineWidth",qe(t))}get lineJoin(){return this[zt]("lineJoin")}set lineJoin(t){if(t!=null&&t!=="miter"&&t!=="bevel"&&t!=="round")throw new TypeError("Invalid lineJoin type.");this[Ot]("lineJoin",t)}get lineCap(){return this[zt]("lineCap")}set lineCap(t){if(t!=null&&t!=="butt"&&t!=="square"&&t!=="round")throw new TypeError("Invalid lineCap type.");this[Ot]("lineCap",t)}get lineDash(){return this[zt]("lineDash")}set lineDash(t){t=Mt(t,!0),t!=null&&!Array.isArray(t)&&(t=[t]),this[Ot]("lineDash",t?t.map(qe):null)}get lineDashOffset(){return this[zt]("lineDashOffset")}set lineDashOffset(t){this[Ot]("lineDashOffset",qe(t))}get miterLimit(){return this[zt]("miterLimit")}set miterLimit(t){this[Ot]("miterLimit",qe(t))}get roundSegments(){return this[zt]("roundSegments")}set roundSegments(t){this[Ot]("roundSegments",t)}get texture(){return this[zt]("texture")}set texture(t){this[Ot]("texture",t)}get textureRect(){return this[zt]("textureRect")}set textureRect(t){this[Ot]("textureRect",t)}get sourceRect(){return this[zt]("sourceRect")}set sourceRect(t){this[Ot]("sourceRect",t)}get textureRepeat(){return this[zt]("textureRepeat")}set textureRepeat(t){this[Ot]("textureRepeat",!!t)}get clipPath(){return this[zt]("clipPath")}set clipPath(t){this[Ot]("clipPath",t)}};Ze(Array);const Gr=Symbol("mesh");class $t extends uc{constructor(t={}){typeof t=="string"&&(t={d:t}),super(t),this.effects={d(e,r,n,i,o){const a=(n-i)/(o-i);if(a<=0)return e;if(a>=1)return r;const c=Go._preprocessing(Go.path2shapes(e),Go.path2shapes(r)),l=Go._lerp(...c,a)[0];return l.reduce((h,d)=>`${h}${d.slice(2).join(" ")} `,`M${l[0][0]} ${l[0][1]}C`).trim()}}}get isVisible(){return!!this.d}get mesh(){if(this.attributes.display==="none")return null;const t=this.path;if(t){let e=this[Gr];if(e)e.path!==t&&(e.contours=t.contours,e.path=t);else{e=new ft.Mesh2D(this.path),e.path=t;const n=this.attributes.fillColor,i=this.attributes.fillRule;n&&Sa(e,{color:n,rule:i});const o=this.attributes.lineWidth,a=this.attributes.strokeColor;if(a&&o>0){const{lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g}=this.attributes;Ta(e,{color:a,lineWidth:o,lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g})}this[Gr]=e;const c=this.attributes.clipPath;c&&this[Gr].setClipPath(c)}const r=this.opacity;return e.getOpacity()!==r&&e.setOpacity(r),e.setTransform(...this.renderMatrix),e}return null}get originalContentRect(){if(this.path){const t=this.path.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalClientRect(){if(this.mesh){const t=this.mesh.boundingBox;return[t[0][0],t[0][1],t[1][0]-t[0][0],t[1][1]-t[0][1]]}return[0,0,0,0]}get originalClientCenter(){return this.mesh?this.mesh.boundingCenter:[0,0]}set d(t){this.attributes.d=t}get d(){return this.attributes.d}draw(t=[]){super.draw(t);const e=this.mesh;return e&&fv(this,e),t}getBoundingClientRect(){let t=null;return this.mesh&&(t=this.mesh.boundingBox),yy(t,this.renderMatrix)}getPathLength(){return this.mesh?this.mesh.getTotalLength():0}getPointAtLength(t){if(this.mesh){const e=this.mesh.getPointAtLength(t);if(e)return[e.x,e.y]}return[0,0]}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),(t==="d"||t==="normalize")&&this.updateContours(),this[Gr]&&(t==="fillColor"||t==="fillRule")){const{fillColor:n,fillRule:i}=this.attributes;Sa(this[Gr],{color:n,rule:i})}if(this[Gr]&&(t==="strokeColor"||t==="lineWidth"||t==="lineCap"||t==="lineJoin"||t==="lineDash"||t==="lineDashOffset"||t==="roundSegments")){const{strokeColor:n,lineWidth:i}=this.attributes;if(n&&i>0){const{lineCap:o,lineJoin:a,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h}=this.attributes;Ta(this[Gr],{color:n,lineCap:o,lineJoin:a,lineWidth:i,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h})}}this[Gr]&&t==="clipPath"&&this[Gr].setClipPath(e),t==="texture"&&uv(this,e)}updateContours(){this.path=new ft.Figure2D,this.path.addPath(this.attributes.d),this.attributes.normalize&&this.path.normalize(...this.path.boundingCenter)}}E($t,"Attr",Mc);Gt.registerNode($t,"path");Ze(Array);function goe(s,t=[0]){function e(i,o=.168,a=.168){let c,l,u,h;if((s[i].x===s[i+1].x||s[i].y===s[i+1].y)&&(o=0,a=0),i<1?(c=s[0].x+(s[1].x-s[0].x)*o,l=s[0].y+(s[1].y-s[0].y)*o):(c=s[i].x+(s[i+1].x-s[i-1].x)*o,l=s[i].y+(s[i+1].y-s[i-1].y)*o),i>s.length-3){const d=s.length-1;u=s[d].x-(s[d].x-s[d-1].x)*a,h=s[d].y-(s[d].y-s[d-1].y)*a}else u=s[i+1].x-(s[i+2].x-s[i].x)*a,h=s[i+1].y-(s[i+2].y-s[i].y)*a;return[{x:c,y:l},{x:u,y:h}]}s=s.map(([i,o])=>({x:i,y:o}));let r="",n=0;return s.forEach((i,o)=>{if(o===0)r+=`M${i.x} ${i.y}`;else{for(;o>t[n];)n++;if(n%2){const[a,c]=e(o-1);r+=`C${[a.x,a.y,c.x,c.y,i.x,i.y].join(" ")}`}else r+=`L${i.x} ${i.y}`}}),r}Ze(Array);const poe=Symbol.for("spritejs_setAttributeDefault"),fn=Symbol.for("spritejs_setAttribute"),fs=Symbol.for("spritejs_getAttribute"),moe=Symbol.for("spritejs_declareAlias");function Ho(s){const{points:t,smooth:e,smoothRange:r,close:n}=s,i=[];for(let a=0;a<t.length;a+=2)i.push([t[a],t[a+1]]);let o="";return e?o=goe(i,r):i.length&&(o=`M${i.map(a=>a.join(" ")).join("L")}`),o&&n&&(o+="Z"),o}let yoe=class extends Mc{constructor(t){super(t),this[poe]({points:[],smooth:!1,smoothRange:[0],closeType:"none"}),this[moe]("close")}get d(){return this[fs]("d")}set d(t){}get close(){return this.closeType!=="none"}set close(t){t=t?"normal":"none",this.closeType=t}get closeType(){return this[fs]("closeType")}set closeType(t){if(t!=null&&t!=="none"&&t!=="normal")throw new TypeError("Invalid closeType type.");if(this[fn]("closeType",t)){const e=Ho(this);this[fn]("d",e)}}get smooth(){return this[fs]("smooth")}set smooth(t){if(this[fn]("smooth",t)){const e=Ho(this);this[fn]("d",e)}}get smoothRange(){return this[fs]("smoothRange")}set smoothRange(t){if(t&&!Array.isArray(t)&&(t=[t]),this[fn]("smoothRange",t)&&this.smooth){const e=Ho(this);this[fn]("d",e)}}get points(){return this[fs]("points")}set points(t){if(t=Mt(t),Array.isArray(t)&&(t=t.reduce((e,r)=>Array.isArray(r)?[...e,...r.map(n=>qe(n))]:[...e,qe(r)],[])),this[fn]("points",t)){const e=Ho(this);this[fn]("d",e)}}};Ze(Array);class Ir extends $t{get isVisible(){const{points:t}=this.attributes;return t.length>0&&super.isVisible}}E(Ir,"Attr",yoe);Gt.registerNode(Ir,"polyline");Ze(Array);const voe=Symbol.for("spritejs_setAttributeDefault"),Qo=Symbol.for("spritejs_setAttribute"),Rl=Symbol.for("spritejs_getAttribute"),Moe=Symbol.for("spritejs_declareAlias");function Ig(s){const{width:t,height:e}=s;return`M0 0L${t} 0L${t} ${e}L0 ${e}Z`}let woe=class extends Mc{constructor(t){super(t),this[voe]({width:0,height:0}),this[Moe]("size")}get d(){return this[Rl]("d")}set d(t){}get width(){return this[Rl]("width")}set width(t){if(t=qe(t),this[Qo]("width",t)){const e=Ig(this);this[Qo]("d",e)}}get height(){return this[Rl]("height")}set height(t){if(t=qe(t),this[Qo]("height",t)){const e=Ig(this);this[Qo]("d",e)}}get size(){return[this.width,this.height]}set size(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.width=t[0],this.height=t[1]}};Ze(Array);class Vs extends $t{get isVisible(){const{width:t,height:e}=this.attributes;return t>0&&e>0&&super.isVisible}}E(Vs,"Attr",woe);Gt.registerNode(Vs,"rect");Ze(Array);const Soe=Symbol.for("spritejs_setAttributeDefault"),pr=Symbol.for("spritejs_setAttribute"),Wn=Symbol.for("spritejs_getAttribute"),Toe=Symbol.for("spritejs_declareAlias");function gs(s){const{radiusX:t,radiusY:e,startAngle:r,endAngle:n,direction:i,closeType:o}=s,a=i==="anitclockwise",c=new ft.Figure2D;return o==="sector"&&c.moveTo(0,0),c.ellipse(0,0,t,e,0,Math.PI*r/180,Math.PI*n/180,a),o!=="none"&&c.closePath(),c.path.reduce((h,d)=>h+d.join(" "),"")}let Coe=class extends Mc{constructor(t){super(t),this[Soe]({radiusX:0,radiusY:0,startAngle:0,endAngle:360,direction:"clockwise",closeType:"none"}),this[Toe]("radius","angle")}get d(){return this[Wn]("d")}set d(t){}get radiusX(){return this[Wn]("radiusX")}set radiusX(t){if(t=qe(t),this[pr]("radiusX",t)){const e=gs(this);this[pr]("d",e)}}get radiusY(){return this[Wn]("radiusY")}set radiusY(t){if(t=qe(t),this[pr]("radiusY",t)){const e=gs(this);this[pr]("d",e)}}get radius(){return[this.radiusX,this.radiusY]}set radius(t){t=Mt(t,!0),Array.isArray(t)||(t=[t,t]),this.radiusX=t[0],this.radiusY=t[1]}get angle(){return[this.startAngle,this.endAngle]}set angle(t){t=Mt(t),Array.isArray(t)||(t=[t,t]),this.startAngle=t[0],this.endAngle=t[1]}get direction(){return this[Wn]("direction")}set direction(t){if(t!=null&&t!=="clockwise"&&t!=="anticlockwise")throw new TypeError("Invalid direction type.");this[pr]("direction",t)}get startAngle(){return this[Wn]("startAngle")}set startAngle(t){if(t=qe(t),this[pr]("startAngle",t)){const e=gs(this);this[pr]("d",e)}}get endAngle(){return this[Wn]("endAngle")}set endAngle(t){if(t=qe(t),this[pr]("endAngle",t)){const e=gs(this);this[pr]("d",e)}}get closeType(){return this[Wn]("closeType")}set closeType(t){if(t!=null&&t!=="none"&&t!=="sector"&&t!=="normal")throw new TypeError("Invalid closeType type.");if(this[pr]("closeType",t)){const e=gs(this);this[pr]("d",e)}}};Ze(Array);class $h extends $t{get isVisible(){const{radiusX:t,radiusY:e,startAngle:r,endAngle:n}=this.attributes;return t>0&&e>0&&r!==n&&super.isVisible}}E($h,"Attr",Coe);Gt.registerNode($h,"ellipse");Ze(Array);const Ioe=Symbol.for("spritejs_setAttributeDefault"),qo=Symbol.for("spritejs_setAttribute"),Zo=Symbol.for("spritejs_getAttribute");let boe=class extends hc{constructor(t){super(t),this[Ioe]({texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0})}get texture(){return this[Zo]("texture")}set texture(t){this[qo]("texture",t)}get textureRect(){return this[Zo]("textureRect")}set textureRect(t){this[qo]("textureRect",t)}get sourceRect(){return this[Zo]("sourceRect")}set sourceRect(t){this[qo]("sourceRect",t)}get textureRepeat(){return this[Zo]("textureRepeat")}set textureRepeat(t){this[qo]("textureRepeat",!!t)}};Ze(Array);const bg=Symbol("textureTask");class wc extends so{constructor(t={}){typeof t=="string"&&(t={texture:t}),super(t)}get contentSize(){let[t,e]=super.contentSize;const{width:r,height:n}=this.attributes;if(r==null||n==null){const i=this.textureImage,o=this.attributes.textureRect,a=this.attributes.sourceRect;if(o)r==null&&(t=o[0]+o[2]),n==null&&(e=o[1]+o[3]);else if(a){const c=this.layer?this.layer.displayRatio:1;r==null&&(t=a[2]/c),n==null&&(e=a[3]/c)}else if(i){const c=this.layer?this.layer.displayRatio:1;r==null&&(t=i.width/c),n==null&&(e=i.height/c)}}return[t,e]}get textureImageReady(){return this[bg]||Promise.resolve()}draw(t=[]){super.draw(t);const e=this.mesh;return e&&fv(this,e),t}onPropertyChange(t,e,r){if(super.onPropertyChange(t,e,r),t==="texture"&&(this[bg]=uv(this,e,!0)),t==="textureRect"){const{width:n,height:i}=this.attributes;(n==null||i==null)&&this.updateContours()}}}E(wc,"Attr",boe);Gt.registerNode(wc,"sprite");Ze(Array);const Eoe=Symbol.for("spritejs_setAttributeDefault"),tr=Symbol.for("spritejs_setAttribute"),rr=Symbol.for("spritejs_getAttribute"),xoe=Symbol.for("spritejs_declareAlias");let Roe=class extends hc{constructor(t){super(t),this[Eoe]({text:"",fontSize:16,fontFamily:"Helvetica,Arial,sans-serif",fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",fontStretch:"normal",lineHeight:"",textAlign:"left",strokeColor:void 0,strokeWidth:1,fillColor:void 0,verticalAlign:"middle"}),this[xoe]("font")}get text(){return this[rr]("text")||" "}set text(t){this[tr]("text",t)}get fontSize(){return this[rr]("fontSize")}set fontSize(t){this[tr]("fontSize",qe(t))}get fontFamily(){return this[rr]("fontFamily")}set fontFamily(t){this[tr]("fontFamily",t)}get fontStyle(){return this[rr]("fontStyle")}set fontStyle(t){this[tr]("fontStyle",t)}get fontVariant(){return this[rr]("fontVariant")}set fontVariant(t){this[tr]("fontVariant",t)}get fontWeight(){return this[rr]("fontWeight")}set fontWeight(t){this[tr]("fontWeight",t)}get fontStretch(){return this[rr]("fontStretch")}set fontStretch(t){this[tr]("fontStretch",t)}get lineHeight(){return this[rr]("lineHeight")||this.fontSize}set lineHeight(t){this[tr]("lineHeight",qe(t))}get textAlign(){return this[rr]("textAlign")}set textAlign(t){this[tr]("textAlign",t)}get strokeColor(){return this[rr]("strokeColor")}set strokeColor(t){this[tr]("strokeColor",En(t))}get strokeWidth(){return this[rr]("strokeWidth")}set strokeWidth(t){this[tr]("strokeWidth",qe(t))}get verticalAlign(){return this[rr]("verticalAlign")}set verticalAlign(t){this[tr]("verticalAlign",t)}get fillColor(){return this[rr]("fillColor")}set fillColor(t){this[tr]("fillColor",En(t))}get font(){const{fontStyle:t,fontVariant:e,fontWeight:r,fontStretch:n,fontSize:i,lineHeight:o,fontFamily:a}=this;return`${t} ${e} ${r} ${n} ${i}px/${o}px ${a}`}set font(t){if(t==null)this.fontStyle=null,this.fontVariant=null,this.fontWeight=null,this.fontStretch=null,this.fontSize=null,this.lineHeight=null,this.fontFamily=null;else{const e=ft.parseFont(t);this.fontStyle=e.style,this.fontVariant=e.variant,this.fontWeight=e.weight,this.fontStretch=e.stretch,this.fontSize=qe(`${e.size}${e.unit}`),e.lineHeight&&(this.lineHeight=e.pxLineHeight),this.fontFamily=e.family}}};Ze(Array);const Ii=Symbol("textImage"),Ko=Symbol("textImageTask"),Al=Symbol("textureContext"),ps=Symbol("updateTextureRect"),kl=Symbol("textCanvas");class Yh extends so{constructor(t={}){typeof t=="string"&&(t={text:t}),super(t)}get contentSize(){let[t,e]=super.contentSize;const{width:r,height:n}=this.attributes;if(r==null||n==null){const i=this[Ii];i&&(r==null&&(t=i.rect[2]),n==null&&(e=i.rect[3]))}return[t,e]}get text(){return this.attributes.text}set text(t){this.attributes.text=t}get textContent(){return this.attributes.text}set textContent(t){this.attributes.text=t}get textImage(){return this[Ii]||{}}get textImageReady(){return this[Ko]||Promise.resolve()}draw(t){super.draw(t);const e=this.mesh;if(e){const r=this[Ii];if(r){let n=e.texture;if(!n||this[Al]&&this[Al]!==this.renderer||r.needsUpdate?(r.needsUpdate=!1,dv(r.image,this.renderer),n=hv(r.image,this.renderer),this[ps]=!0):n=e.uniforms.u_texSampler,this[ps]){const[i,o]=r.rect.slice(2),[a,c]=this.contentSize,l=this.attributes.textAlign,u=this.attributes.verticalAlign;let h=0;l==="center"?h=(a-i)/2:(l==="right"||l==="end")&&(h=a-i);const d=this.attributes.fontSize,f=this.attributes.lineHeight;let g=0;u==="top"?g=(d-f)/2:u==="bottom"&&(g=(f-d)/2);const{paddingLeft:y,paddingTop:T}=this.attributes,{borderWidth:x}=this.attributes;h+=y+x,g+=T+x;const{anchorX:C,anchorY:L}=this.attributes;h-=this.offsetSize[0]*C,g-=this.offsetSize[1]*L,e.setTexture(n,{rect:[h,g,i,o]}),this[ps]=!1,this[Al]=this.renderer}}}return t}onPropertyChange(t,e,r){t==="text"||t==="fontSize"||t==="fontFamily"||t==="fontStyle"||t==="fontVariant"||t==="fontWeight"||t==="fontStretch"||t==="lineHeight"||t==="strokeColor"||t==="fillColor"||t==="strokeWidth"?this.updateText():((t==="textAlign"||t==="verticalAlign")&&(this[ps]=!0),super.onPropertyChange(t,e,r))}updateContours(){super.updateContours(),this[ps]=!0}updateText(){this[Ko]||(this[Ko]=Promise.resolve().then(()=>{this[Ko]=null;const{text:t,font:e,fillColor:r,strokeColor:n,strokeWidth:i}=this.attributes,o=this.layer?this.layer.displayRatio:1;return this[kl]=this[kl]||ft.ENV.createCanvas(1,1),this[Ii]=ft.ENV.createText(t,{font:e,fillColor:r,strokeColor:n,strokeWidth:i,parseFont:ft.parseFont,ratio:o,textCanvas:this[kl]}),this[Ii].needsUpdate=!0,this.updateContours(),this.forceUpdate(),this[Ii]}))}}E(Yh,"Attr",Roe);Gt.registerNode(Yh,"label");Ze(Array);function Aoe(s,t){if(!s)return t&&[...t];if(!t)return s;const e=Math.min(s[0],t[0]),r=Math.min(s[1],t[1]);return[e,r,Math.max(s[0]+s[2],t[0]+t[2])-e,Math.max(s[1]+s[3],t[1]+t[3])-r]}class koe{constructor(t,{rect:e,revision:r=0,singleChannelTexture:n=!0,textureSubImage2D:i=!0}={}){if(!t||!e||e.length!==4)throw new TypeError("MaskHandle requires a source and [x, y, width, height] rect.");this.source=t,this.rect=[...e],this.revision=r,this.textureSubImage2D=i,this.singleChannelTexture=n,this._textures=new Map,this._dirtyRect=null,this._stagingCanvas=null}update({rect:t,dirtyRect:e}={}){return t&&(this.rect=[...t]),this._dirtyRect=Aoe(this._dirtyRect,e),this.revision++,this}getTexture(t){if(!t||!t.glRenderer)return null;let e=this._textures.get(t);return e?e.revision!==this.revision&&(this._upload(t.glRenderer.gl,e,this._dirtyRect),e.revision=this.revision):(e={revision:this.revision,...this._createTexture(t)},this._textures.set(t,e)),[...this._textures.values()].every(r=>r.revision===this.revision)&&(this._dirtyRect=null),e.texture}destroy(t){if(t){const e=this._textures.get(t);e&&(t.deleteTexture(e.texture),this._textures.delete(t));return}this._textures.forEach((e,r)=>{r.deleteTexture(e.texture)}),this._textures.clear()}_createTexture(t){const e=t.glRenderer.gl;if(!(this.singleChannelTexture&&t.isWebGL2&&e.R8!=null))return{texture:t.createTexture(this.source),singleChannel:!1};const n=e.createTexture();try{if(e.bindTexture(e.TEXTURE_2D,n),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.R8,e.RED,e.UNSIGNED_BYTE,this.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.getError()!==e.NO_ERROR)throw new Error("R8 texture upload failed.");return n._img=this.source,n.delete=()=>e.deleteTexture(n),{texture:n,singleChannel:!0}}catch{return e.deleteTexture(n),this.singleChannelTexture=!1,{texture:t.createTexture(this.source),singleChannel:!1}}finally{e.bindTexture(e.TEXTURE_2D,null)}}_upload(t,e,r){const{texture:n,singleChannel:i}=e,o=t.getParameter(t.ACTIVE_TEXTURE),a=t.getParameter(t.TEXTURE_BINDING_2D),c=t.getParameter(t.UNPACK_FLIP_Y_WEBGL);t.bindTexture(t.TEXTURE_2D,n),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!0),this._uploadDirtyRect(t,r,i)||(i?t.texImage2D(t.TEXTURE_2D,0,t.R8,t.RED,t.UNSIGNED_BYTE,this.source):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,this.source)),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,c),t.bindTexture(t.TEXTURE_2D,a),t.activeTexture(o)}_uploadDirtyRect(t,e,r){if(!this.textureSubImage2D||!e)return!1;const[n,i,o,a]=this.rect,c=Math.max(0,Math.floor((e[0]-n)/o*this.source.width)),l=Math.max(0,Math.floor((e[1]-i)/a*this.source.height)),u=Math.min(this.source.width,Math.ceil((e[0]+e[2]-n)/o*this.source.width)),h=Math.min(this.source.height,Math.ceil((e[1]+e[3]-i)/a*this.source.height)),d=u-c,f=h-l;if(d<=0||f<=0)return!0;let g=this._stagingCanvas;(!g||g.width!==d||g.height!==f)&&(g=ft.ENV.createCanvas(d,f,{offscreen:!0}),this._stagingCanvas=g);const y=g&&g.getContext("2d");if(!y)return!1;y.clearRect(0,0,d,f),y.drawImage(this.source,c,l,d,f,0,0,d,f);try{return t.texSubImage2D(t.TEXTURE_2D,0,c,this.source.height-h,r?t.RED:t.RGBA,t.UNSIGNED_BYTE,g),!0}catch{return this.textureSubImage2D=!1,!1}}}Ze(Array);Ze(Array);var Poe=typeof St=="object"&&St&&St.Object===Object&&St,mv=Poe,Doe=mv,Loe=typeof self=="object"&&self&&self.Object===Object&&self,Noe=Doe||Loe||Function("return this")(),Er=Noe,Ooe=Er,zoe=Ooe.Symbol,lo=zoe,Eg=lo,yv=Object.prototype,Boe=yv.hasOwnProperty,joe=yv.toString,ms=Eg?Eg.toStringTag:void 0;function Foe(s){var t=Boe.call(s,ms),e=s[ms];try{s[ms]=void 0;var r=!0}catch{}var n=joe.call(s);return r&&(t?s[ms]=e:delete s[ms]),n}var Uoe=Foe,Woe=Object.prototype,Voe=Woe.toString;function $oe(s){return Voe.call(s)}var Yoe=$oe,xg=lo,Goe=Uoe,Hoe=Yoe,Qoe="[object Null]",qoe="[object Undefined]",Rg=xg?xg.toStringTag:void 0;function Zoe(s){return s==null?s===void 0?qoe:Qoe:Rg&&Rg in Object(s)?Goe(s):Hoe(s)}var pi=Zoe;function Koe(s){return s!=null&&typeof s=="object"}var Or=Koe,Xoe=pi,Joe=Or,_oe="[object Number]";function eae(s){return typeof s=="number"||Joe(s)&&Xoe(s)==_oe}var tae=eae;const yt=an(tae);function rae(){this.__data__=[],this.size=0}var nae=rae;function iae(s,t){return s===t||s!==s&&t!==t}var Gh=iae,sae=Gh;function oae(s,t){for(var e=s.length;e--;)if(sae(s[e][0],t))return e;return-1}var Sc=oae,aae=Sc,cae=Array.prototype,lae=cae.splice;function uae(s){var t=this.__data__,e=aae(t,s);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():lae.call(t,e,1),--this.size,!0}var hae=uae,dae=Sc;function fae(s){var t=this.__data__,e=dae(t,s);return e<0?void 0:t[e][1]}var gae=fae,pae=Sc;function mae(s){return pae(this.__data__,s)>-1}var yae=mae,vae=Sc;function Mae(s,t){var e=this.__data__,r=vae(e,s);return r<0?(++this.size,e.push([s,t])):e[r][1]=t,this}var wae=Mae,Sae=nae,Tae=hae,Cae=gae,Iae=yae,bae=wae;function Ji(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}Ji.prototype.clear=Sae;Ji.prototype.delete=Tae;Ji.prototype.get=Cae;Ji.prototype.has=Iae;Ji.prototype.set=bae;var Tc=Ji,Eae=Tc;function xae(){this.__data__=new Eae,this.size=0}var Rae=xae;function Aae(s){var t=this.__data__,e=t.delete(s);return this.size=t.size,e}var kae=Aae;function Pae(s){return this.__data__.get(s)}var Dae=Pae;function Lae(s){return this.__data__.has(s)}var Nae=Lae;function Oae(s){var t=typeof s;return s!=null&&(t=="object"||t=="function")}var Dn=Oae,zae=pi,Bae=Dn,jae="[object AsyncFunction]",Fae="[object Function]",Uae="[object GeneratorFunction]",Wae="[object Proxy]";function Vae(s){if(!Bae(s))return!1;var t=zae(s);return t==Fae||t==Uae||t==jae||t==Wae}var vv=Vae,$ae=Er,Yae=$ae["__core-js_shared__"],Gae=Yae,Pl=Gae,Ag=function(){var s=/[^.]+$/.exec(Pl&&Pl.keys&&Pl.keys.IE_PROTO||"");return s?"Symbol(src)_1."+s:""}();function Hae(s){return!!Ag&&Ag in s}var Qae=Hae,qae=Function.prototype,Zae=qae.toString;function Kae(s){if(s!=null){try{return Zae.call(s)}catch{}try{return s+""}catch{}}return""}var Mv=Kae,Xae=vv,Jae=Qae,_ae=Dn,ece=Mv,tce=/[\\^$.*+?()[\]{}|]/g,rce=/^\[object .+?Constructor\]$/,nce=Function.prototype,ice=Object.prototype,sce=nce.toString,oce=ice.hasOwnProperty,ace=RegExp("^"+sce.call(oce).replace(tce,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function cce(s){if(!_ae(s)||Jae(s))return!1;var t=Xae(s)?ace:rce;return t.test(ece(s))}var lce=cce;function uce(s,t){return s==null?void 0:s[t]}var hce=uce,dce=lce,fce=hce;function gce(s,t){var e=fce(s,t);return dce(e)?e:void 0}var mi=gce,pce=mi,mce=Er,yce=pce(mce,"Map"),Hh=yce,vce=mi,Mce=vce(Object,"create"),Cc=Mce,kg=Cc;function wce(){this.__data__=kg?kg(null):{},this.size=0}var Sce=wce;function Tce(s){var t=this.has(s)&&delete this.__data__[s];return this.size-=t?1:0,t}var Cce=Tce,Ice=Cc,bce="__lodash_hash_undefined__",Ece=Object.prototype,xce=Ece.hasOwnProperty;function Rce(s){var t=this.__data__;if(Ice){var e=t[s];return e===bce?void 0:e}return xce.call(t,s)?t[s]:void 0}var Ace=Rce,kce=Cc,Pce=Object.prototype,Dce=Pce.hasOwnProperty;function Lce(s){var t=this.__data__;return kce?t[s]!==void 0:Dce.call(t,s)}var Nce=Lce,Oce=Cc,zce="__lodash_hash_undefined__";function Bce(s,t){var e=this.__data__;return this.size+=this.has(s)?0:1,e[s]=Oce&&t===void 0?zce:t,this}var jce=Bce,Fce=Sce,Uce=Cce,Wce=Ace,Vce=Nce,$ce=jce;function _i(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}_i.prototype.clear=Fce;_i.prototype.delete=Uce;_i.prototype.get=Wce;_i.prototype.has=Vce;_i.prototype.set=$ce;var Yce=_i,Pg=Yce,Gce=Tc,Hce=Hh;function Qce(){this.size=0,this.__data__={hash:new Pg,map:new(Hce||Gce),string:new Pg}}var qce=Qce;function Zce(s){var t=typeof s;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?s!=="__proto__":s===null}var Kce=Zce,Xce=Kce;function Jce(s,t){var e=s.__data__;return Xce(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Ic=Jce,_ce=Ic;function ele(s){var t=_ce(this,s).delete(s);return this.size-=t?1:0,t}var tle=ele,rle=Ic;function nle(s){return rle(this,s).get(s)}var ile=nle,sle=Ic;function ole(s){return sle(this,s).has(s)}var ale=ole,cle=Ic;function lle(s,t){var e=cle(this,s),r=e.size;return e.set(s,t),this.size+=e.size==r?0:1,this}var ule=lle,hle=qce,dle=tle,fle=ile,gle=ale,ple=ule;function es(s){var t=-1,e=s==null?0:s.length;for(this.clear();++t<e;){var r=s[t];this.set(r[0],r[1])}}es.prototype.clear=hle;es.prototype.delete=dle;es.prototype.get=fle;es.prototype.has=gle;es.prototype.set=ple;var wv=es,mle=Tc,yle=Hh,vle=wv,Mle=200;function wle(s,t){var e=this.__data__;if(e instanceof mle){var r=e.__data__;if(!yle||r.length<Mle-1)return r.push([s,t]),this.size=++e.size,this;e=this.__data__=new vle(r)}return e.set(s,t),this.size=e.size,this}var Sle=wle,Tle=Tc,Cle=Rae,Ile=kae,ble=Dae,Ele=Nae,xle=Sle;function ts(s){var t=this.__data__=new Tle(s);this.size=t.size}ts.prototype.clear=Cle;ts.prototype.delete=Ile;ts.prototype.get=ble;ts.prototype.has=Ele;ts.prototype.set=xle;var Sv=ts;function Rle(s,t){for(var e=-1,r=s==null?0:s.length;++e<r&&t(s[e],e,s)!==!1;);return s}var Ale=Rle,kle=mi,Ple=function(){try{var s=kle(Object,"defineProperty");return s({},"",{}),s}catch{}}(),Tv=Ple,Dg=Tv;function Dle(s,t,e){t=="__proto__"&&Dg?Dg(s,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):s[t]=e}var Cv=Dle,Lle=Cv,Nle=Gh,Ole=Object.prototype,zle=Ole.hasOwnProperty;function Ble(s,t,e){var r=s[t];(!(zle.call(s,t)&&Nle(r,e))||e===void 0&&!(t in s))&&Lle(s,t,e)}var Iv=Ble,jle=Iv,Fle=Cv;function Ule(s,t,e,r){var n=!e;e||(e={});for(var i=-1,o=t.length;++i<o;){var a=t[i],c=r?r(e[a],s[a],a,e,s):void 0;c===void 0&&(c=s[a]),n?Fle(e,a,c):jle(e,a,c)}return e}var bc=Ule;function Wle(s,t){for(var e=-1,r=Array(s);++e<s;)r[e]=t(e);return r}var Vle=Wle,$le=pi,Yle=Or,Gle="[object Arguments]";function Hle(s){return Yle(s)&&$le(s)==Gle}var Qle=Hle,Lg=Qle,qle=Or,bv=Object.prototype,Zle=bv.hasOwnProperty,Kle=bv.propertyIsEnumerable,Xle=Lg(function(){return arguments}())?Lg:function(s){return qle(s)&&Zle.call(s,"callee")&&!Kle.call(s,"callee")},Ev=Xle,Jle=Array.isArray,uo=Jle,Ea={exports:{}};function _le(){return!1}var eue=_le;Ea.exports;(function(s,t){var e=Er,r=eue,n=t&&!t.nodeType&&t,i=n&&!0&&s&&!s.nodeType&&s,o=i&&i.exports===n,a=o?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||r;s.exports=l})(Ea,Ea.exports);var Qh=Ea.exports,tue=9007199254740991,rue=/^(?:0|[1-9]\d*)$/;function nue(s,t){var e=typeof s;return t=t??tue,!!t&&(e=="number"||e!="symbol"&&rue.test(s))&&s>-1&&s%1==0&&s<t}var iue=nue,sue=9007199254740991;function oue(s){return typeof s=="number"&&s>-1&&s%1==0&&s<=sue}var xv=oue,aue=pi,cue=xv,lue=Or,uue="[object Arguments]",hue="[object Array]",due="[object Boolean]",fue="[object Date]",gue="[object Error]",pue="[object Function]",mue="[object Map]",yue="[object Number]",vue="[object Object]",Mue="[object RegExp]",wue="[object Set]",Sue="[object String]",Tue="[object WeakMap]",Cue="[object ArrayBuffer]",Iue="[object DataView]",bue="[object Float32Array]",Eue="[object Float64Array]",xue="[object Int8Array]",Rue="[object Int16Array]",Aue="[object Int32Array]",kue="[object Uint8Array]",Pue="[object Uint8ClampedArray]",Due="[object Uint16Array]",Lue="[object Uint32Array]",ct={};ct[bue]=ct[Eue]=ct[xue]=ct[Rue]=ct[Aue]=ct[kue]=ct[Pue]=ct[Due]=ct[Lue]=!0;ct[uue]=ct[hue]=ct[Cue]=ct[due]=ct[Iue]=ct[fue]=ct[gue]=ct[pue]=ct[mue]=ct[yue]=ct[vue]=ct[Mue]=ct[wue]=ct[Sue]=ct[Tue]=!1;function Nue(s){return lue(s)&&cue(s.length)&&!!ct[aue(s)]}var Oue=Nue;function zue(s){return function(t){return s(t)}}var Ec=zue,xa={exports:{}};xa.exports;(function(s,t){var e=mv,r=t&&!t.nodeType&&t,n=r&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===r,o=i&&e.process,a=function(){try{var c=n&&n.require&&n.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}}();s.exports=a})(xa,xa.exports);var qh=xa.exports,Bue=Oue,jue=Ec,Ng=qh,Og=Ng&&Ng.isTypedArray,Fue=Og?jue(Og):Bue,Rv=Fue,Uue=Vle,Wue=Ev,Vue=uo,$ue=Qh,Yue=iue,Gue=Rv,Hue=Object.prototype,Que=Hue.hasOwnProperty;function que(s,t){var e=Vue(s),r=!e&&Wue(s),n=!e&&!r&&$ue(s),i=!e&&!r&&!n&&Gue(s),o=e||r||n||i,a=o?Uue(s.length,String):[],c=a.length;for(var l in s)(t||Que.call(s,l))&&!(o&&(l=="length"||n&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Yue(l,c)))&&a.push(l);return a}var Av=que,Zue=Object.prototype;function Kue(s){var t=s&&s.constructor,e=typeof t=="function"&&t.prototype||Zue;return s===e}var Zh=Kue;function Xue(s,t){return function(e){return s(t(e))}}var kv=Xue,Jue=kv,_ue=Jue(Object.keys,Object),ehe=_ue,the=Zh,rhe=ehe,nhe=Object.prototype,ihe=nhe.hasOwnProperty;function she(s){if(!the(s))return rhe(s);var t=[];for(var e in Object(s))ihe.call(s,e)&&e!="constructor"&&t.push(e);return t}var ohe=she,ahe=vv,che=xv;function lhe(s){return s!=null&&che(s.length)&&!ahe(s)}var Kh=lhe,uhe=Av,hhe=ohe,dhe=Kh;function fhe(s){return dhe(s)?uhe(s):hhe(s)}var Xh=fhe,ghe=bc,phe=Xh;function mhe(s,t){return s&&ghe(t,phe(t),s)}var yhe=mhe;function vhe(s){var t=[];if(s!=null)for(var e in Object(s))t.push(e);return t}var Mhe=vhe,whe=Dn,She=Zh,The=Mhe,Che=Object.prototype,Ihe=Che.hasOwnProperty;function bhe(s){if(!whe(s))return The(s);var t=She(s),e=[];for(var r in s)r=="constructor"&&(t||!Ihe.call(s,r))||e.push(r);return e}var Ehe=bhe,xhe=Av,Rhe=Ehe,Ahe=Kh;function khe(s){return Ahe(s)?xhe(s,!0):Rhe(s)}var Jh=khe,Phe=bc,Dhe=Jh;function Lhe(s,t){return s&&Phe(t,Dhe(t),s)}var Nhe=Lhe,Ra={exports:{}};Ra.exports;(function(s,t){var e=Er,r=t&&!t.nodeType&&t,n=r&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===r,o=i?e.Buffer:void 0,a=o?o.allocUnsafe:void 0;function c(l,u){if(u)return l.slice();var h=l.length,d=a?a(h):new l.constructor(h);return l.copy(d),d}s.exports=c})(Ra,Ra.exports);var Ohe=Ra.exports;function zhe(s,t){var e=-1,r=s.length;for(t||(t=Array(r));++e<r;)t[e]=s[e];return t}var Bhe=zhe;function jhe(s,t){for(var e=-1,r=s==null?0:s.length,n=0,i=[];++e<r;){var o=s[e];t(o,e,s)&&(i[n++]=o)}return i}var Pv=jhe;function Fhe(){return[]}var Dv=Fhe,Uhe=Pv,Whe=Dv,Vhe=Object.prototype,$he=Vhe.propertyIsEnumerable,zg=Object.getOwnPropertySymbols,Yhe=zg?function(s){return s==null?[]:(s=Object(s),Uhe(zg(s),function(t){return $he.call(s,t)}))}:Whe,_h=Yhe,Ghe=bc,Hhe=_h;function Qhe(s,t){return Ghe(s,Hhe(s),t)}var qhe=Qhe;function Zhe(s,t){for(var e=-1,r=t.length,n=s.length;++e<r;)s[n+e]=t[e];return s}var ed=Zhe,Khe=kv,Xhe=Khe(Object.getPrototypeOf,Object),Lv=Xhe,Jhe=ed,_he=Lv,ede=_h,tde=Dv,rde=Object.getOwnPropertySymbols,nde=rde?function(s){for(var t=[];s;)Jhe(t,ede(s)),s=_he(s);return t}:tde,Nv=nde,ide=bc,sde=Nv;function ode(s,t){return ide(s,sde(s),t)}var ade=ode,cde=ed,lde=uo;function ude(s,t,e){var r=t(s);return lde(s)?r:cde(r,e(s))}var Ov=ude,hde=Ov,dde=_h,fde=Xh;function gde(s){return hde(s,fde,dde)}var zv=gde,pde=Ov,mde=Nv,yde=Jh;function vde(s){return pde(s,yde,mde)}var Mde=vde,wde=mi,Sde=Er,Tde=wde(Sde,"DataView"),Cde=Tde,Ide=mi,bde=Er,Ede=Ide(bde,"Promise"),xde=Ede,Rde=mi,Ade=Er,kde=Rde(Ade,"Set"),Bv=kde,Pde=mi,Dde=Er,Lde=Pde(Dde,"WeakMap"),Nde=Lde,Eu=Cde,xu=Hh,Ru=xde,Au=Bv,ku=Nde,jv=pi,rs=Mv,Bg="[object Map]",Ode="[object Object]",jg="[object Promise]",Fg="[object Set]",Ug="[object WeakMap]",Wg="[object DataView]",zde=rs(Eu),Bde=rs(xu),jde=rs(Ru),Fde=rs(Au),Ude=rs(ku),Gn=jv;(Eu&&Gn(new Eu(new ArrayBuffer(1)))!=Wg||xu&&Gn(new xu)!=Bg||Ru&&Gn(Ru.resolve())!=jg||Au&&Gn(new Au)!=Fg||ku&&Gn(new ku)!=Ug)&&(Gn=function(s){var t=jv(s),e=t==Ode?s.constructor:void 0,r=e?rs(e):"";if(r)switch(r){case zde:return Wg;case Bde:return Bg;case jde:return jg;case Fde:return Fg;case Ude:return Ug}return t});var xc=Gn,Wde=Object.prototype,Vde=Wde.hasOwnProperty;function $de(s){var t=s.length,e=new s.constructor(t);return t&&typeof s[0]=="string"&&Vde.call(s,"index")&&(e.index=s.index,e.input=s.input),e}var Yde=$de,Gde=Er,Hde=Gde.Uint8Array,Fv=Hde,Vg=Fv;function Qde(s){var t=new s.constructor(s.byteLength);return new Vg(t).set(new Vg(s)),t}var td=Qde,qde=td;function Zde(s,t){var e=t?qde(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.byteLength)}var Kde=Zde,Xde=/\w*$/;function Jde(s){var t=new s.constructor(s.source,Xde.exec(s));return t.lastIndex=s.lastIndex,t}var _de=Jde,$g=lo,Yg=$g?$g.prototype:void 0,Gg=Yg?Yg.valueOf:void 0;function efe(s){return Gg?Object(Gg.call(s)):{}}var tfe=efe,rfe=td;function nfe(s,t){var e=t?rfe(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.length)}var ife=nfe,sfe=td,ofe=Kde,afe=_de,cfe=tfe,lfe=ife,ufe="[object Boolean]",hfe="[object Date]",dfe="[object Map]",ffe="[object Number]",gfe="[object RegExp]",pfe="[object Set]",mfe="[object String]",yfe="[object Symbol]",vfe="[object ArrayBuffer]",Mfe="[object DataView]",wfe="[object Float32Array]",Sfe="[object Float64Array]",Tfe="[object Int8Array]",Cfe="[object Int16Array]",Ife="[object Int32Array]",bfe="[object Uint8Array]",Efe="[object Uint8ClampedArray]",xfe="[object Uint16Array]",Rfe="[object Uint32Array]";function Afe(s,t,e){var r=s.constructor;switch(t){case vfe:return sfe(s);case ufe:case hfe:return new r(+s);case Mfe:return ofe(s,e);case wfe:case Sfe:case Tfe:case Cfe:case Ife:case bfe:case Efe:case xfe:case Rfe:return lfe(s,e);case dfe:return new r;case ffe:case mfe:return new r(s);case gfe:return afe(s);case pfe:return new r;case yfe:return cfe(s)}}var kfe=Afe,Pfe=Dn,Hg=Object.create,Dfe=function(){function s(){}return function(t){if(!Pfe(t))return{};if(Hg)return Hg(t);s.prototype=t;var e=new s;return s.prototype=void 0,e}}(),Lfe=Dfe,Nfe=Lfe,Ofe=Lv,zfe=Zh;function Bfe(s){return typeof s.constructor=="function"&&!zfe(s)?Nfe(Ofe(s)):{}}var jfe=Bfe,Ffe=xc,Ufe=Or,Wfe="[object Map]";function Vfe(s){return Ufe(s)&&Ffe(s)==Wfe}var $fe=Vfe,Yfe=$fe,Gfe=Ec,Qg=qh,qg=Qg&&Qg.isMap,Hfe=qg?Gfe(qg):Yfe,Qfe=Hfe,qfe=xc,Zfe=Or,Kfe="[object Set]";function Xfe(s){return Zfe(s)&&qfe(s)==Kfe}var Jfe=Xfe,_fe=Jfe,ege=Ec,Zg=qh,Kg=Zg&&Zg.isSet,tge=Kg?ege(Kg):_fe,Uv=tge;const rge=an(Uv);var nge=Sv,ige=Ale,sge=Iv,oge=yhe,age=Nhe,cge=Ohe,lge=Bhe,uge=qhe,hge=ade,dge=zv,fge=Mde,gge=xc,pge=Yde,mge=kfe,yge=jfe,vge=uo,Mge=Qh,wge=Qfe,Sge=Dn,Tge=Uv,Cge=Xh,Ige=Jh,bge=1,Ege=2,xge=4,Wv="[object Arguments]",Rge="[object Array]",Age="[object Boolean]",kge="[object Date]",Pge="[object Error]",Vv="[object Function]",Dge="[object GeneratorFunction]",Lge="[object Map]",Nge="[object Number]",$v="[object Object]",Oge="[object RegExp]",zge="[object Set]",Bge="[object String]",jge="[object Symbol]",Fge="[object WeakMap]",Uge="[object ArrayBuffer]",Wge="[object DataView]",Vge="[object Float32Array]",$ge="[object Float64Array]",Yge="[object Int8Array]",Gge="[object Int16Array]",Hge="[object Int32Array]",Qge="[object Uint8Array]",qge="[object Uint8ClampedArray]",Zge="[object Uint16Array]",Kge="[object Uint32Array]",ot={};ot[Wv]=ot[Rge]=ot[Uge]=ot[Wge]=ot[Age]=ot[kge]=ot[Vge]=ot[$ge]=ot[Yge]=ot[Gge]=ot[Hge]=ot[Lge]=ot[Nge]=ot[$v]=ot[Oge]=ot[zge]=ot[Bge]=ot[jge]=ot[Qge]=ot[qge]=ot[Zge]=ot[Kge]=!0;ot[Pge]=ot[Vv]=ot[Fge]=!1;function da(s,t,e,r,n,i){var o,a=t&bge,c=t&Ege,l=t&xge;if(e&&(o=n?e(s,r,n,i):e(s)),o!==void 0)return o;if(!Sge(s))return s;var u=vge(s);if(u){if(o=pge(s),!a)return lge(s,o)}else{var h=gge(s),d=h==Vv||h==Dge;if(Mge(s))return cge(s,a);if(h==$v||h==Wv||d&&!n){if(o=c||d?{}:yge(s),!a)return c?hge(s,age(o,s)):uge(s,oge(o,s))}else{if(!ot[h])return n?s:{};o=mge(s,h,a)}}i||(i=new nge);var f=i.get(s);if(f)return f;i.set(s,o),Tge(s)?s.forEach(function(T){o.add(da(T,t,e,T,s,i))}):wge(s)&&s.forEach(function(T,x){o.set(x,da(T,t,e,x,s,i))});var g=l?c?fge:dge:c?Ige:Cge,y=u?void 0:g(s);return ige(y||s,function(T,x){y&&(x=T,T=s[x]),sge(o,x,da(T,t,e,x,s,i))}),o}var Xge=da,Jge=Xge,_ge=1,epe=4;function tpe(s){return Jge(s,_ge|epe)}var rpe=tpe;const dt=an(rpe),npe={maxRetries:3,timeoutMs:15e3,retryIntervalMs:1e3};function rd(s){const t={...npe,...s};if(t.maxRetries!==-1&&(!Number.isInteger(t.maxRetries)||t.maxRetries<0||t.maxRetries>10))throw new RangeError("backgroundImageLoadOptions.maxRetries must be -1 (infinite retry) or an integer from 0 to 10");if(t.maxRetries===-1&&(t.maxRetries=Number.POSITIVE_INFINITY),!Number.isFinite(t.timeoutMs)||t.timeoutMs<1e3||t.timeoutMs>12e4)throw new RangeError("backgroundImageLoadOptions.timeoutMs must be from 1000 to 120000");if(!Number.isFinite(t.retryIntervalMs)||t.retryIntervalMs<0||t.retryIntervalMs>3e4)throw new RangeError("backgroundImageLoadOptions.retryIntervalMs must be from 0 to 30000");return t}class ipe{constructor(t,e){E(this,"tasks",new Map);E(this,"failedTasks",new Map);E(this,"options");E(this,"queue",[]);E(this,"activeAttempts",0);E(this,"maxActiveAttempts",4);this.onEvent=e,this.options=rd(t)}load(t){const e=this.keyOf(t);if(this.cancel(e),this.failedTasks.delete(e),!t.isActive())return Promise.resolve();const r={...t,key:e,attempt:0,generation:0,settled:!1};return this.tasks.set(e,r),this.enqueue(r),Promise.resolve()}cancelByViewScene(t,e){for(const r of this.tasks.values())r.viewId===t&&(!e||r.scenePath===e)&&this.cancel(r.key);for(const[r,n]of this.failedTasks)n.viewId===t&&(!e||n.scenePath===e)&&this.failedTasks.delete(r)}cancelResource(t,e,r){const n=this.keyOf({viewId:t,scenePath:e,resourceId:r});this.cancel(n),this.failedTasks.delete(n)}cancelAll(){for(const t of[...this.tasks.keys()])this.cancel(t);this.failedTasks.clear()}reload(t){var i;if(t.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=[...this.failedTasks.values()].filter(o=>o.viewId===t.viewId&&o.scenePath===t.scenePath);if(!e.length)return{accepted:!1,reloadedCount:0,reason:[...this.tasks.values()].some(a=>a.viewId===t.viewId&&a.scenePath===t.scenePath)?"alreadyLoading":"resourceNotFound"};const r=e.filter(o=>o.isActive());if(!r.length)return{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"};let n=0;for(const o of r)this.failedTasks.delete(this.keyOf(o)),t.url&&((i=o.onReloadUrl)==null||i.call(o,t.url)),this.load(t.url?{...o,src:t.url}:o),n+=1;return{accepted:!0,reloadedCount:n}}keyOf(t){return`${t.viewId}\0${t.scenePath}\0${t.resourceId}`}async attempt(t){if(!this.canRun(t)){this.cancel(t.key);return}t.attempt+=1;const e=++t.generation;try{if(await this.loadImage(t,e),!this.canRun(t)||t.generation!==e)return;t.settled=!0,this.tasks.delete(t.key),this.emit(t,"success")}catch{if(!this.canRun(t)||t.generation!==e)return;if(this.options.maxRetries===-1||this.options.maxRetries===Number.POSITIVE_INFINITY||t.attempt<=this.options.maxRetries){const r=Math.floor(Math.random()*Math.min(100,this.options.retryIntervalMs));t.timer=setTimeout(()=>{t.timer=void 0,this.enqueue(t)},this.options.retryIntervalMs+r)}else t.settled=!0,this.tasks.delete(t.key),this.failedTasks.set(t.key,{viewId:t.viewId,scenePath:t.scenePath,resourceId:t.resourceId,src:t.src,image:t.image,isActive:t.isActive,onReloadUrl:t.onReloadUrl}),this.emit(t,"failed")}}enqueue(t){!this.canRun(t)||this.queue.includes(t)||(this.queue.push(t),this.drain())}drain(){for(;this.activeAttempts<this.maxActiveAttempts&&this.queue.length;){const t=this.queue.shift();this.canRun(t)&&(this.activeAttempts+=1,this.attempt(t).finally(()=>{this.activeAttempts-=1,this.drain()}))}}loadImage(t,e){return new Promise((r,n)=>{const i=t.image,o=()=>{t.timer&&(clearTimeout(t.timer),t.timer=void 0),i.onload=null,i.onerror=null,t.cancelAttempt=void 0};i.dataset.netlessBackgroundImageManaged="true",i.onload=()=>{o(),r()},i.onerror=()=>{o(),n(new Error("background image load failed"))},t.timer=setTimeout(()=>{o(),i.removeAttribute("src");const a=new Error("background image load timed out");a.name="TimeoutError",n(a)},this.options.timeoutMs),t.cancelAttempt=()=>{o(),n(new Error("background image load cancelled"))},t.generation===e&&(i.src=t.src)})}canRun(t){return!t.settled&&this.tasks.get(t.key)===t&&t.isActive()}cancel(t){var r;const e=this.tasks.get(t);!e||e.settled||(e.settled=!0,e.generation+=1,(r=e.cancelAttempt)==null||r.call(e),e.timer&&(clearTimeout(e.timer),e.timer=void 0),e.image.onload=null,e.image.onerror=null,e.image.removeAttribute("src"),this.tasks.delete(t),this.emit(e,"cancelled"))}emit(t,e){var r;try{(r=this.onEvent)==null||r.call(this,{name:"backgroundImageLoad",state:e,source:"appliance",resourceId:t.resourceId,resourceUrl:t.src,viewId:t.viewId,scenePath:t.scenePath})}catch(n){console.error("[backgroundImage] onBackgroundImageLoadEvent callback failed",n)}}}const spe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",ope="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgrSURBVHgB7ZprTBRXFIDP7gIt8lQppTwE5V0KaAn6o1pqNGkDDTEmTUhsgKRp+gNJw68CFkLbVC2QkDS+gD8KJdWmARvbFBNNWpuIRGPFWBXQRMPDqIki+KLATs+ZnTvcvXtnX8w2beJJToaduTP3fHPOPffcOwC8kP+2WCDwIvahGFxTuN8KmNSZmULPNjLeqF9F8rdPkIEGEn+r+vjx46LQ0NA8/Dsader58+e/h4WFDWntFO7ot6fMFAt3JLWi2lCDpqamCux2+2+KROj82NhYGrXT2lu5Z/DP/deFByElA4Pv3LlTiHY/nJ6eVnbv3q1s2bJFyc7OVrZu3arU1dUp4+PjxPUQoT+g9tp9PkMFgpo9kxljHRoaWp2Xl3duYmIiurKyEvDoclNCQgIcPnxYPc7MzHwcGRnZhaft4Ag7O9fUbRhaITCie4lgcnNzT7qDIaHz27dvh+vXr0NEREQneqoCHKFnAR+8ZCaQGGq2CxcurCGYycnJZHcwTNAzUFFRoUJFRUV1IFQ5OKBsXB9uxSwgl0TQ3d29Yt26dccwoyVXV1d7hGEiQmGi2AzOUHx/hob4K2yuYS9G987s7OwPISEh7xPM6dOnwVfBsIMjR45AZmbmo5s3b76Xnp7+J55egMVxBSAZT0v1ED+76yn66dOnLQSzd+9ev2BIyFP0MjBco1JTU/sxfFeDazp3cYgZHmKqdoaGNISHh9fv378fSJcqlPV6e3sBJ+I/goOD34VFL0k95Y+HxPHCYGxmw5DQ2NuzZw8EBQVtunXr1jvgwUP+hhz/QDXMMCNVE8zx48dNg2FCz6QQjI2N/RA8VBFmANnu3btXihnpG8pM9fX1EAi5du0aeWkVOAMBCF7yN+R0z4yOjq6NiYlpp9CgdBtIwXpPH6vgDKWLt0CygtM6MDCwBuUYZSKaOCksAiVY9wFOBePgDOOytPAGSKzNVCCC2bBhw69YdK7ypgpYimzbtk2dl7CM+hFcveOUHDylbTFO1YdhFbByx44dA1QFUP0VSJj4+Hjo6+sDq9U6iEmHKvFZTedQ50GYbN15SITVlwNlZWUnLRZL8s6dOwMOQ9UCTtKTra2ttdppt9V2kMF5cbmsjxuM43bMNrmUzc6fP6+GQiDGDoOJi4ubwb4qm5ubafyIE6nLxGqTPEsGo1cBOGNX0TyDYafC0CyOaxcVziyh53Z2dkJycvLMvn37PmpoaBgFR4jxYSbWdVIgI89Iq4CjR48CZjlYv369+tssqI6ODsjPz4f+/v668vLycxrEHHfkYdwC8SB6mGEV8Cl64cuuri5oa2tTG+EyGjZu3AiXLl1qefDgwV8lJSUFZkDV1tZCcXExXLx4sbWoqKgPFj0zx8GI9ZwO5W4M6ekZYeqpaqbqmaSqqkpNpcPDw4dwzfM9nrLduHEjEs+X0XV/Sx96LnqE1kLtBQUF3eDwCO8dGQyzV5rl+JyuegfXI29jRotiRlKnpFghHMzKyjqotVXS0tLacKPjF3bdHxjSq1evduAkepAD+ZsDYlC8V5w8ZBVg+PPq2MGMlkInqE4joTf45MmT4YyMjAPcA+ltLSQlJX2BafxnX6HI29QeK44TOTk57mCYZ0QoJ8OBM4yB6dkNkwGlSygsLFQvYtYB3BTMxFL+M+0eFgZqp4mJiU2+QKGX1fGIk/QIrn0aYXGsyDxjmAyMhO2jhaCGoUbX1NSkLSwsPMJqV8Fspu6lIZS6OYhjiOLwdU7fQM1HfRPD7wS1obZ0j0xpb4726Z49ezaJf2/S7s9ATUGNR41BjdJseRnke3WGwhrRTS9pD1mOGoeG15BxOOfoxuCkp0Ih6NeaEaSZGlieJyiCoc1FgsGldokGk8nBvAKOrWIGQ5uPsm0tt0BWDiicAaGuGhkZ+YqMw9StGzU4OKhCnT179hNsswY1FTXdE5QEJhc1S3tGogazXLOBwQSBl3tzIhQPtAL1VQJCTcNx8y1vHIUghSKFZE9PT7H2dlM1b+Wgrr1y5Uq77J75+fnplpaWMg2ch4nlYEI5z7hdensDpI4hrYNErcMMXJ32koG4ztf3pultz83NjWG99Ra2WQ0OL2VjZjwgeufUqVOqV8+cOdPIwdBLSNJeHg8TAh5WqJ6EfSmgt7IMNRJ1JThiOlnrOAMHshprmMKdoGSCpb9s3B3SYLIFGIqICJB7xisYi+RvfiypXw40DWGdlJaWRmMd141hk8V2OWm7ieYTXhBc3+BgaZyqAISjOYxSMVvXsBTNlzdiNQDgRao2AtK3pjggpmrqbGpqSsLPIN/dv38/gaBwUjTshMHcvn27JyUlpRmc5xpPMD599LIYnLNyUKKndKjGxsakXbt2deMCLIE8IVvs0YRM1fjdu3d/wrXN5+BcnzEgvor2uN3rjzAYMp5lPEoQlE5fA0fWo8GfhlCbKVFQ1pKNIfzcOHH58mWqaimVUwJI0+6n59D4pIlzmdZPMPiZzXjDjX47Le5g0Uu8x2zgPqWyKpjVe7x3+AUbq9NYjQbgp2dsBud5o8TP7d5kHAWcQchQfoEmLgn8HjOiBIF7o5hI1x6CEbLNP3bdqYAF44JzyWLzcN1i8DcT/o3awbm8Fz3DAy2A62INwPV/E3wWdx5inmBHuwChCBD6R2JwHge80TIQRQLjt7e8DTkGZgfX8cUMZTDAteFDkveaIlzjX9ySQs8X18r2t2VHUURPKoICmDR+eCO9aSdmOIub3/w9RgpgUpiJhvraXpa6jZKHGEqyusw0GLFzX+5RhN/8kYnMSNMMfyH/V/kHST6OYVElTPAAAAAASUVORK5CYII=",ape="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAYAAABznEEcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAZoSURBVHgB7VlLSCRXFL3ljNEhEXTGhMQJmOjCz8ZNVLKICz9xIYhCNi7UgINkGEk2En8hW5cBUQNxo05GAoKikuCAmvGzGMdPcCUGjDPxD/4Vv/3JvWW97luvq7ur+hMZ8MKlqrteNfe8e965970GuLVbC5kpJr53+hjHx9yY3TUxJgLMAQG4ITARfp5T4Mri4uL9q6urnxwOxz/oY5eXl1/Pzs7e195X2FX4jZsIhAK7gx5ps9m6nGj9/f3OtbU1pzAE0318fPwVjYHrrN7R3AjU/wpOBwA9Cmf/9ejoqDMtLU31iooKGdA+ATo4OMiXAEWAHhBAGEApXj4rPAik0vPt7e0vCgoKPH4gMzMTSktLIS8vD2JiYgABvcHMTZyennbHxsaOg3udOJmLzwqEYB0ZgRCZENm4u7e39yQuLq65srISZmZmvP5Ybm4u5OfnQ0lJyXWUCAgzNLS+vt6SnJz8WgvYwV5xSlcRgyVg3ha2Dkxzc3MvfZmVlQW+bGxsDBobGyE7O1u94uJPjIqKqklKSvrbbrfPnp+ff7e8vJwMnlSTKWfJjDKhywJo6wLp0YcZ+dyIUr7s4cOHLsrRlQwBTSBFuzc2NiZYhjjVAIyzZBqEwgCQv0OOM/gNzuiP/ijlDxBRjgClpqa6AF1cXDydmpoaLCws3JcAGYHyC4JMzoKaibKysvienp6FtrY2IA/WCFB5ebkqCHSvARo8Ozt7igIxwIJ2gJ+seFMnDoIyEUV+dHT0G3qWVUr5M043DdAB0m2IKZwAYpgZX+qkywR6NFbuR0iDxmAoZRUQKRxSLTMnJ8eIaqqSeVMnIYUOdu+sq6vrp4f+VCoYo8khZaNs01VRlERUu2/BrWAA7sl2Anink1Ao18JGjyY/PDx8hq1GZqgp5c2mp6chMjLy2b179x7hRzvoqeUUwXIzqq4O5nZsNUaEbIbLqPLTou/s7FTvT05OpsA9sXJG1AVsZDwjutqBIN6gUlWjxod8XRBNKXgsrqpqYZfwEqX9h8TExD7wbFm8LmzxHQ0QHSlXKZVSqFC/hkqlaKapTaGgCQTK7PHW1lb/wsLC86KiokkccoV+qV1tcE0pO7AWxmhTxBszDzqRr66ujqanp2cRpQLNBgUsCh8BwQ54bn5+/s+mpqa+4eHhfS1gb52vwuP0trPjhSZCBtLQ0NA3MDDQQIFYAUHBYhuvzjpVbJr1lZWVP3p7e19UVVXNgHumXYrI4uBx6Yqevz02b0FcRQ8CoBQF3dXVpQLZ3d39C7n+ora29vfJyclDYFnWgFyxK3cxhss/+KoT/N6DVkQpKypFGUCp3Ozo6HgSHx//GLW/BwHsg57zl5pzADajwLn52mPL1ZHPloMoRYPMFL6EhAR18e7s7MxVV1fPsAAp4Avteq7dC/c1+wKI4g+EfGzDM+EYHBw8RDrNiA2QL6upqVGvKJ2/gHu2L1nA5wwEB2YDfSYMO1x/px0cgEc2zBY+eo67u6H29vZ/wU2VC8l58JxKNjDOgojNEp08aFVfX++3l6JMEdDx8fEB0FNIBsDXBc8ArwuW1EkeI1RKdLWmCx+1DhkZGRvR0dFfSsHKxYtnW0iqvJAN9xNm6MR/QO5sfapUSkqKmqW5ubmfwVgyZdpw/vPZl2kUEAinBMSUStG+gwra0NDQSynQKyloIxnlewafjDFLJzLRBJqiFMnqyMgIbG5uDuD996Dnv8iAPOMAPmbcm5lVJwA/vZRMKZGZlpaWVtAvUL4GZMqE1fjRJrUd76LHoX+InlhcXPwZnWW2tra6jjrpiBM3UK/weQr6J+gfodMh9HtwncG7YLA3CMSsLmxx5WuDCt8B7vZeicInTjCWlpb6wc15mfey7oc9E8LElpVmMgb9AXoC+qcTExOPKRu4NlTHs6Q10GfhgfYOvRsJQZ76BWMKuDtaolQs+gfoH6Mn436gDg+e+5BKXUQx/C5Je/a+NpbeiQJPKgUdlNXx/BCBKxVdxW5Q0I3XBqFKRhU4KLtjYawi3csuTKdc4FnIXNvKUJkVEGRG20QZAAUpA5DbaYAQLmQzfzxyk/ffdnCD4NWVnGdE7kQBQvQHC5lVEDxgMaM29lkxGCNLKrDnIbFAMkFmBIaDkHstU41coGZ1TZD5UjReCGUAYbNgdNqoXZB/T67yYbFAMiGML3BhYeH8rb0t9h/zgcTBcTNGiQAAAABJRU5ErkJggg==",cpe="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M4%202.5V19L8.5%2014.5L11.5%2021L14.5%2019.5L11.5%2013H18L4%202.5Z'%20fill='%23212324'%20stroke='white'%20stroke-width='1.5'%20stroke-linejoin='round'/%3e%3c/svg%3e",lpe="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",upe="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",Ar=Object.freeze([12,14,18,24,36,48,64,80,144,288]),bi=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],ys=new Map([["selector","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKeSURBVHgB3VTLi1JhFD86zlQ4ysxSXAy1GWYZzMxmYAhHagRB/QN8FLqPFq4FIQhXkS6kTQ4t2ilIKEWgSS0SmVpIm0BdaBJSaOP78XU+PXey6+saburAD+73uL/feX0H4H81GQdj7D7ilrCGFRonk3c6nXvhcJiFQiGWy+Xy/X7/WbPZ1K1KkBOsl0qlO36/n+3t7Q1hs9kYF+WC3W73MTpxc1lBmej7KuJaoVDInZ6eqsWXDw4OwGKxwPHx8Se1Wn1Wr9cjW1tbOTxi9D9bJCJHXEFslsvlR263+246nYZZptPpQK/Xg8lkSvZ6vbNGo5EgQRCLiSPhIqpoNHobo3keCARgkalUKjg5ORlGuL+/n8T6PVAqlefjYmKRdYQSsZ3P5z8aDAYVLGFarRbi8fhbhUKhx2VPEJGP3eEbfTrs4MUwr4EU49FYrVbweDy1SqXyipy95FaI7g8QXS6SyWReHx4e2ubVBc+HtTk6OjqvVqtvvF7vi0gkUiSByyyJ21BGwpswJ2Vmsxlw/0Kj0bxMJBJJl8vFPWkhGogLQoeyMhEJo2jGUzYRjcPh+Op0Oq2pVOoHkXE0SahF/w+E+3KYNEaX2pSyiSiKxeJTFPiGyyriO6FKEUgSESLp4ht4bzQaf4pFYrHYO/ysEXGNyJtjKRqM/zNNhFuf0B7vst3dXdjZ2Yn4fL4vRFwn8jaMGqYPU179LBEGf3bZcNNutwPOtScwKnCLPJ9KLMWEh7mNuIFdVsNXzbBNP+D6Ou1vwAqm8hqMWlmbzWYf4mz6HAwGzbjWwGgqrEklmucJT+UGCfG3wiPjueeNwGvB0zkAid7OMmF8CyOck/I6NJcR4KZYcM6J2vCbUGhvyQIA0gonzCEZkQud9Fcd9W/bL57cJu3lkjuNAAAAAElFTkSuQmCC"],["pencil","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgB7ZXPqxJRFMfvjI4F+cqkTcrjge9B+B+0LJQ27lq4ijZprly6DaF1COKPjYRrVy0CF/aof6Baa6ChOPkLFcdMm1+dM93RafzxZuptgnfgC3ecO+dzz497JOTKNsZMp9OAoihvZFku4xp/I5dsbL/fP221Wl/D4bCKwnWn0znDd+SSDE/N6ZBgMKjJBNuKzC4dHTgQ5PF4bququn7R7XZJPB4/kSTpHcBOiQlmJ6cMpCvAcdz5ZDJhF4tF1u12v4jFYkc8z683+f1+Uq1W38K+x/AogVQ7ETF4SnB+Ho1GTxKJxDFC2u32q1KpJPh8vvVGjHK5XM4xahv+tYgRcranJrNarfay2WwKoVBIRTUajW42m70P390EOYmFrOEGdhfECEMIwur1Og+p5VOp1CP47piCOB3EXBBJAIuLRcZi7zKsSaVSEbxe70N4FEEL0AyE6VuBZEJD2wmyAkHDmoxGIwGW36ljBP2gUEXf5/wXCDZBsVjky+XyUwpCyBL0k0ai7gNp3WUVUigUvgHoWSaTaRoi2YJojk1r52q1eh2JRJ5YgUB3Pc/n83WyXRPV/A1rWrtgSAZsQL6Q3ynTI1F2QdCMqXNQEGsDMqMgrMt6ChwCaXcGYdBFjA3InELkQxBCtkcEI4riHyPFCMnlcnEKMbYzQhRi0TCKa6A76XT6wWAweD8ejz8Oh8PPcEc+9Xq9D8lkMgLv74Hugo5ALmJzlumG4+IG6BZ1dJ06wtPqN14gmza2FYljD1SljrCTsAaYpjnZFP7CmpADEel/ai4qffLiqSUKFSlEP8xfgYwwlmzyr1KYHoUtgBU4Y9D/Y78AxCeE/aWoyrkAAAAASUVORK5CYII="],["eraser","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANKSURBVHgB1VTdS5NhFD/7iuXa8KNw7SK/IjBYo13soqvEITENtj9AwZiCOCTvQrNWF9rFFPGLrC1iF10Oiy68mBSUF2KB4YabhKKyTfFCc+3Lzb2ds72LsfbxCkZ04Mf7Puc5z/k95+M5AP+R8OAvCW9nZ6cyHo8/SSaTc4RQKKQ+S0JyxFtbW6va39//ZjKZmMbGRkar1TJOp5MhYtwXwBkQkgMROnyXIcmGw+FgYrHY00JkQm4cqYPCaDQ6ZrFY7i4sLPxhMDg4SJ8hTOOWRCJ5jf8npyUiEgE6eGy1Wk12u72gIZHJZDLr4eHhVnl5+YdsslL5pH1+JBIx22y2h9PT01BKpFIpLC4ufhKJRFpcxhEM6fmlSMLh8P35+XlOJCTBYBC2t7dr8fdctv+iRHjI4HK5LAMDA8BVFAoFyOVyH/6KIKsxCtVIgC188+Dg4CV2GJxGpqamYHR09AHklEWQY5d6K/gg67HD3huNRrlKpYLNzU3gIsPDw8Dn84fa29s/4zIK6Rol8xIhSUMikXB2dXXV4AHo6en5KhaLFcvLy0VJent7QaPRzKrV6le4DCEi2UTCnGgE1dXVj3Q6XY1er08drKiosK2urnbjnrFQQxBJU1PTC3y4kyxJGHEMWe2dTUSNIcLZVXl0dAStra3BiYmJOTqgVCqfu91uull3LhlFjbZv6urqiCTIElHaEsC2dq4QqXRlZeUePsrUDFtfX/eZzebbqL+GuIFks1js32OHRtHu7u5H3FMiahFViPNQYuZRO8oQVzY2NibJocFgYAKBgLuzs/M66hsQKuzELx0dHak9rKe3paXlFurrERdZEiGUGARkcAFxmSJAJ/aRkRGGnOKwdPn9/rG9vT0HXaC5uZnxer3+vr4+HdpeRVxClBWLJFuZqhF7gAjL0PGz8fFxvcfjSY0WevVUv5mZmQDWyog1/I52PyBdlxgUqUu+qMSQznVtW1ubBlP3dmlpicnA5/N5+vv770C6bhS9lEu6eHnWFP45NioJS5xxRLdNsrenKH5CusNOWH1BEeTRMTnI6MgZpYYeYhhOmS5eEX0mMhELPktGoBd/zCWSUkTAOs4QZqZ8JsokS8Kp8KWICtlwdv5P5BchBHaEIRURoQAAAABJRU5ErkJggg=="],["text","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4="],["shape","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"]]),nd=new Map([["selector",{key:"selector",standardResolution:ys.get("selector"),highResolution:ape}],["shapeSynced",{key:"shape",standardResolution:lpe}],["textSynced",{key:"text",standardResolution:upe}],["pencil",{key:"pencil",standardResolution:ys.get("pencil"),highResolution:spe}],["eraser",{key:"eraser",standardResolution:ys.get("eraser"),highResolution:ope}],["text",{key:"text",standardResolution:ys.get("text")}],["shape",{key:"shape",standardResolution:ys.get("shape")}],["clicker",{key:"clicker",standardResolution:cpe}]]),qr={enable:!0,expirationTime:5e3,moveDelayTime:40,preloadTimeout:5e3,appearance:{},syncedLabel:{enableShowName:!0,placement:"top",gap:2,maxWidth:88}};function id(s){var e,r,n,i;const t={...s==null?void 0:s.appearance};return delete t[Le.hand],delete t[Le.laserPointer],{enable:(s==null?void 0:s.enable)??qr.enable,expirationTime:(s==null?void 0:s.expirationTime)??qr.expirationTime,moveDelayTime:(s==null?void 0:s.moveDelayTime)??qr.moveDelayTime,preloadTimeout:typeof(s==null?void 0:s.preloadTimeout)=="number"&&Number.isFinite(s.preloadTimeout)&&s.preloadTimeout>0?s.preloadTimeout:qr.preloadTimeout,appearance:t,syncedLabel:{enableShowName:((e=s==null?void 0:s.syncedLabel)==null?void 0:e.enableShowName)??qr.syncedLabel.enableShowName,placement:((r=s==null?void 0:s.syncedLabel)==null?void 0:r.placement)??qr.syncedLabel.placement,gap:((n=s==null?void 0:s.syncedLabel)==null?void 0:n.gap)??qr.syncedLabel.gap,maxWidth:((i=s==null?void 0:s.syncedLabel)==null?void 0:i.maxWidth)??qr.syncedLabel.maxWidth}}}function hpe(s,t){var e,r;return((r=(e=s.appearance[t])==null?void 0:e.synced)==null?void 0:r.enableShowName)??s.syncedLabel.enableShowName}function dpe(s,t){return{...s,...t,cursor:id(t==null?void 0:t.cursor)}}const fpe=!0,Yv=500;function Rc(s){return typeof s!="number"||!Number.isFinite(s)||s<=0?Yv:Math.max(1,Math.floor(s))}function gpe(s){return!0}const Ac="1.1.43-beta.0",ppe="@netless/appliance-plugin",mpe="2490007de495c1c4",Pu=5e3,ype=1e4,vpe=1e4;if(typeof window<"u"){let s=window.__netlessUA||"";s+=` ${ppe}@${Ac}`,window.__netlessUA=s}const He={useWorker:"auto",useSimple:!0,workerRenderModeBlacklist:{androidWebView:{67:vr.MainThread}},workerCanvasContextBlacklist:{},workerMaskTextureFormatBlacklist:{},workerMaskTextureUploadBlacklist:{},fontFaceFallbackBlacklist:{iosWebView:{12:Zs.RefreshTextRender}},useBackgroundThread:!1,syncOpt:{interval:300,smoothSync:!0},syncLogger:{batchWindowMs:4e3},cursor:{...qr},bufferSize:{full:4e3,sub:600},bezier:{enable:!1,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,fullLayerDoingMask:fpe,fullLayerDoingMaskMaxInputPoints:Yv,removeOnDone:!0,maxImageWidth:1920,maxImageHeight:1920,maxCombineTime:500},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!0,extendFontFaces:[],loadFontFacesTimeout:2e4},longDottedStroke:{lineCap:"round",segment:1,gap:2},dottedStroke:{lineCap:"round",segment:1,gap:2},normalStroke:{lineCap:"round"},undoRedo:{enableGlobal:!1,maxStackLength:20,timingFix:!0,ackTimeout:Pu},markmap:{enable:!0,timeout:1e4,options:{autoFit:!0,duration:0,zoom:!1,pan:!1,maxInitialScale:10}},overwriteSelectorStyles:{},backgroundImageLoadOptions:rd()},Ln=(s,t,e)=>({images:nd.get(s),size:{width:26,height:26},offset:{x:0,y:0},local:{size:t,offset:e},synced:{}}),Xg={...Ln("pencil",{width:26,height:26},{x:-2,y:4}),synced:{offset:{x:0,y:9}}},Mpe={...Ln("selector",{width:25,height:25},{x:-5,y:21}),synced:{offset:{x:0,y:26}}},wpe={...Ln("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},Spe={...Ln("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},Tpe=Ln("eraser",{width:26,height:26},{x:-8,y:8}),Cpe={...Ln("text",{width:47,height:40},{x:-20,y:20}),synced:{images:nd.get("textSynced"),offset:{x:-13,y:16}}},gn={...Ln("shape",{width:40,height:40},{x:-20,y:20}),synced:{images:nd.get("shapeSynced"),offset:{x:-9,y:16}}},Ipe={...Ln("clicker",{width:24,height:24},{x:-4,y:21}),synced:{offset:{x:0,y:26}}},fa=Object.freeze({[Le.selector]:Mpe,[Le.clicker]:Ipe,[Le.pencil]:Xg,[Le.rectangle]:gn,[Le.ellipse]:gn,[Le.shape]:gn,[Le.eraser]:wpe,[Le.pencilEraser]:Spe,[Le.text]:Cpe,[Le.straight]:gn,[Le.arrow]:gn,[Le.laserPen]:Xg,[or.star]:gn,[or.polygon]:gn,[or.speechBalloon]:gn,[or.bitMapEraser]:Tpe});function Gv(s){var e;return{...dpe(He,s),pencilEraser:{...He.pencilEraser,...s==null?void 0:s.pencilEraser,fullLayerDoingMask:!0,fullLayerDoingMaskMaxInputPoints:Rc((e=s==null?void 0:s.pencilEraser)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)},syncLogger:{...He.syncLogger,...s==null?void 0:s.syncLogger},backgroundImageLoadOptions:rd(s==null?void 0:s.backgroundImageLoadOptions)}}const Hv=new WeakMap,bpe=new WeakMap,Aa=new WeakMap,Jg=new WeakMap,_g=new WeakMap;function Epe(s,t,e,r){let n=Aa.get(s);n||(n=new Map,Aa.set(s,n)),n.set(t,{...e,gestureOwner:r})}function xpe(s,t){if(!s)return;const e=Aa.get(s),r=e==null?void 0:e.get(t);if(!r)return;if(e==null||e.delete(t),e!=null&&e.size||Aa.delete(s),!r.gestureOwner)return r;const n=Jg.get(r.gestureOwner),i=Qv(r.matrix,n==null?void 0:n.matrix);if(Jg.set(r.gestureOwner,{matrix:r.matrix,toDigest:r.toDigest}),!!i)return{matrix:i,fromDigest:(n==null?void 0:n.toDigest)||r.fromDigest,toDigest:r.toDigest}}function Rpe(s,t,e,r){const n=e?Qv(r,_g.get(e)):r;return e&&_g.set(e,r),n?(sd(s,t,n),!0):(qv(s,t),!1)}function Qv(s,t){if(!t)return[...s];const e=kpe(t);return e?Ape(s,e):void 0}function Ape(s,t){return[s[0]*t[0]+s[2]*t[1],s[1]*t[0]+s[3]*t[1],s[0]*t[2]+s[2]*t[3],s[1]*t[2]+s[3]*t[3],s[0]*t[4]+s[2]*t[5]+s[4],s[1]*t[4]+s[3]*t[5]+s[5]]}function kpe(s){const[t,e,r,n,i,o]=s,a=t*n-e*r;if(!(!Number.isFinite(a)||Math.abs(a)<=Number.EPSILON))return[n/a,-e/a,-r/a,t/a,(r*o-n*i)/a,(e*i-t*o)/a]}function sd(s,t,e){var r;for(const n of((r=Hv.get(s))==null?void 0:r.get(t))||[])n(e)}function Ppe(s,t){var e,r;return!!((r=(e=Hv.get(s))==null?void 0:e.get(t))!=null&&r.size)}function qv(s,t){var e;for(const r of((e=bpe.get(s))==null?void 0:e.get(t))||[])r()}const od=16,Dpe=1;function Wi(s){return Object.prototype.hasOwnProperty.call(s,"eraserFaces")}function Du(s,t){const e={...t};return Wi(t)?delete e.eraserlines:s&&Wi(s)&&(e.eraserFaces=s.eraserFaces??null,delete e.eraserlines),e}function ka(s){const t={...s};return delete t.doingLines,t}function Lpe(s,t,e){const r=Wi(s)?s.eraserFaces?Pa(s.eraserFaces):[]:ep(s.eraserlines||[]);return{eraserFaces:Zv(tp(r,tp([],ep(t))))}}function Zv(s,t=od){if(!Number.isSafeInteger(t)||t<=0)throw new Error("eraserFaces scale must be a positive safe integer");const e=[];Ns(e,s.length);for(const r of s){Ns(e,r.rings.length);for(const n of r.rings){Ns(e,n.length);let i=0,o=0;n.forEach(([a,c],l)=>{const u=np(a,t),h=np(c,t);ip(e,l===0?u:u-i),ip(e,l===0?h:h-o),i=u,o=h})}}return{v:1,s:t,e:1,d:Jv(e)}}function Pa(s){if(s.v!==1||s.e!==1||s.s<=0)throw new Error("unsupported eraserFaces payload");const t=new zpe(Bpe(s.d)),e=[],r=t.readUVarint();for(let n=0;n<r;n++){const i=[],o=t.readUVarint();for(let a=0;a<o;a++){const c=[],l=t.readUVarint();let u=0,h=0;for(let d=0;d<l;d++){const f=t.readSVarint(),g=t.readSVarint();u=d===0?f:u+f,h=d===0?g:h+g,c.push([u/s.s,h/s.s])}i.push(c)}e.push({rings:i})}if(!t.done)throw new Error("trailing eraserFaces bytes");return e}function ep(s,t=od){const e=[];for(const r of s){const n=new It.ClipperOffset;n.ArcTolerance=Math.max(.25,t*.05);for(const i of r.op){const o=[];for(let a=0;a<i.length;a+=2)o.push({X:Math.round(i[a]*t),Y:Math.round(i[a+1]*t)});o.length===1&&o.push({...o[0]}),o.length>=2&&n.AddPath(o,It.JoinType.jtRound,It.EndType.etOpenRound)}n.Execute(e,r.thickness*t/2)}return Xv(e,t)}function tp(s,t,e=od){const r=[...s,...t].flatMap(n=>n.rings.map(i=>i.map(([o,a])=>({X:Math.round(o*e),Y:Math.round(a*e)}))));return Xv(r,e)}function $s(s,t){const e=[Dpe];return sp(e,s),sp(e,t),Jv(Array.from(Ope(Uint8Array.from(e)).slice(0,16)))}function Kv(s,t,e){return s.matrix.length===6&&s.matrix.every(Number.isFinite)&&s.fromDigest===$s(t,e)&&/^[A-Za-z0-9_-]{22}$/.test(s.toDigest)}function Npe(s,t,e,r,n){return!Kv(e,r.op,r.centerPos)||e.toDigest!==$s(n.op,n.centerPos)?!1:(sd(s,t,e.matrix),!0)}function Dl(s,t){if(!s)return null;const e=Pa(s);for(const r of e)for(const n of r.rings){const i=n.flat();t(i),r.rings[r.rings.indexOf(n)]=Array.from({length:i.length/2},(o,a)=>[i[a*2],i[a*2+1]])}return Zv(e,s.s)}function Xv(s,t){if(!s.length)return[];const e=new It.Clipper;e.AddPaths(s,It.PolyType.ptSubject,!0);const r=new It.PolyTree;e.Execute(It.ClipType.ctUnion,r,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const n=[],i=o=>{for(const a of o.Childs()){if(!a.IsHole()){const c=[rp(a.Contour(),t)];for(const l of a.Childs())l.IsHole()&&c.push(rp(l.Contour(),t));n.push({rings:c})}i(a)}};return i(r),n}function rp(s,t){return s.map(({X:e,Y:r})=>[e/t,r/t])}function np(s,t){if(!Number.isFinite(s))throw new Error("eraserFaces coordinate must be finite");const e=Math.round(s*t);if(!Number.isSafeInteger(e))throw new Error("eraserFaces coordinate is out of range");return Object.is(e,-0)?0:e}function Ns(s,t){if(!Number.isSafeInteger(t)||t<0)throw new Error("invalid unsigned varint");do{let e=t%128;t=Math.floor(t/128),t&&(e|=128),s.push(e)}while(t)}function ip(s,t){const e=t>=0?t*2:-t*2-1;Ns(s,e)}function sp(s,t){Ns(s,t.length);const e=new ArrayBuffer(8),r=new DataView(e);for(const n of t){if(!Number.isFinite(n))throw new Error("geometry digest values must be finite");const i=Object.is(n,-0)?0:n;r.setFloat64(0,i,!0);for(let o=0;o<8;o++)s.push(r.getUint8(o))}}function Ope(s){const t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),e=s.length*8,r=Math.ceil((s.length+9)/64)*64,n=new Uint8Array(r);n.set(s),n[s.length]=128;const i=new DataView(n.buffer);i.setUint32(r-8,Math.floor(e/4294967296),!1),i.setUint32(r-4,e>>>0,!1);const o=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),a=new Uint32Array(64),c=(h,d)=>h>>>d|h<<32-d;for(let h=0;h<r;h+=64){for(let S=0;S<16;S++)a[S]=i.getUint32(h+S*4,!1);for(let S=16;S<64;S++){const p=a[S-15],m=a[S-2],M=c(p,7)^c(p,18)^p>>>3,v=c(m,17)^c(m,19)^m>>>10;a[S]=a[S-16]+M+a[S-7]+v>>>0}let[d,f,g,y,T,x,C,L]=o;for(let S=0;S<64;S++){const p=c(T,6)^c(T,11)^c(T,25),m=T&x^~T&C,M=L+p+m+t[S]+a[S]>>>0,v=c(d,2)^c(d,13)^c(d,22),R=d&f^d&g^f&g,b=v+R>>>0;L=C,C=x,x=T,T=y+M>>>0,y=g,g=f,f=d,d=M+b>>>0}o[0]=o[0]+d>>>0,o[1]=o[1]+f>>>0,o[2]=o[2]+g>>>0,o[3]=o[3]+y>>>0,o[4]=o[4]+T>>>0,o[5]=o[5]+x>>>0,o[6]=o[6]+C>>>0,o[7]=o[7]+L>>>0}const l=new Uint8Array(32),u=new DataView(l.buffer);return o.forEach((h,d)=>u.setUint32(d*4,h,!1)),l}class zpe{constructor(t){E(this,"index",0);this.bytes=t}get done(){return this.index===this.bytes.length}readUVarint(){let t=0,e=1;for(let r=0;r<8;r++){const n=this.bytes[this.index++];if(n===void 0)throw new Error("truncated eraserFaces payload");if(t+=(n&127)*e,!(n&128))return t;e*=128}throw new Error("eraserFaces varint is too long")}readSVarint(){const t=this.readUVarint();return t%2===0?t/2:-(t+1)/2}}function Jv(s){let t="";for(let e=0;e<s.length;e+=32768)t+=String.fromCharCode(...s.slice(e,e+32768));return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Bpe(s){const t=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(s.length/4)*4,"="),e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function Dr(s,t=!0){const e=s.length;if(e<2)return"";let r=s[0],n=s[1];if(e===2)return`M${Ei(r)}L${Ei(n)}`;let i="";for(let o=2,a=e-1;o<a;o++)r=s[o],n=s[o+1],i+=xi(r,n);return t?`M${xi(s[0],s[1])}Q${Ei(s[1])}${xi(s[1],s[2])}T${i}${xi(s[e-1],s[0])}${xi(s[0],s[1])}Z`:`M${Ei(s[0])}Q${Ei(s[1])}${xi(s[1],s[2])}${s.length>3?"T":""}${i}L${Ei(s[e-1])}`}function jpe(s,t){const e=t>0?t:1,r=Math.floor(s.x*e),n=Math.floor(s.y*e),i=Math.ceil((s.x+s.w)*e),o=Math.ceil((s.y+s.h)*e);return{x:r,y:n,w:Math.max(1,i-r),h:Math.max(1,o-n)}}function Fpe(s,t){const r=1/(t>0?t:1);return{x:s.x-r,y:s.y-r,w:s.w+r*2,h:s.h+r*2}}function Upe(s,t,e){const r=Math.abs(e[0])||1,n=Math.abs(e[1])||1;return{size:[t.w/r,t.h/n],textureRect:[(s.x-t.x)/r,(s.y-t.y)/n,s.w/r,s.h/n]}}function Nn(s){return JSON.parse(nm.decompress(s))}function At(s){return nm.compress(JSON.stringify(s))}const at=Object.keys,op=new WeakMap,Qt=class Qt{constructor(t){E(this,"maxImageWidth",He.pencilEraser.maxImageWidth);E(this,"maxImageHeight",He.pencilEraser.maxImageHeight);E(this,"syncUnitTime",He.syncOpt.interval);E(this,"vNodes");E(this,"drawLayer");E(this,"fullLayer");E(this,"workId");E(this,"confirmEraserDeletion",!1);E(this,"isDelete",!1);const{vNodes:e,fullLayer:r,drawLayer:n,workId:i,toolsOpt:o}=t;this.vNodes=e,this.fullLayer=r,this.drawLayer=n,this.workId=i,this.syncUnitTime=o.syncUnitTime||this.syncUnitTime}static async normalizeStorageData(t){return this.normalizeStorageDataSync(t)}static normalizeStorageDataSync(t){const e=dt(t),r=JSON.stringify(t);if(e.opt){const n=ka(e.opt);e.opt=Du(void 0,n)}return e.updateNodeOpt={...e.updateNodeOpt,useAnimation:!1},{status:JSON.stringify(e)===r?"already-stable":"stable",value:e}}static async normalizeDrawableStorageData(t){return this.normalizeDrawableStorageDataSync(t)}static normalizeDrawableStorageDataSync(t){const e=Qt.normalizeStorageDataSync(t);if(e.status==="unrecoverable")return e;const r=e.value;return r.type===le.DrawWork&&!r.ops&&Array.isArray(r.op)&&r.op.length?(r.type=le.FullWork,r.ops=At(r.op),{status:"stable",value:r}):e}get baseConsumeResult(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions}}filterSamePoints(t,e=.01){return t.reduce((r,n)=>{const i=r[r.length-1];return(n&&!i||n&&i&&!n.isNear(i,e))&&r.push(n),r},[])}setWorkId(t){this.workId=t}getWorkId(){return this.workId}setEraserDeleteConfirmation(t){this.confirmEraserDeletion=t}getWorkOptions(){return this.workOptions}setWorkOptions(t){var i,o,a;const e=Du(this.workOptions,t);this.workOptions=e,this.syncUnitTime=t.syncUnitTime||this.syncUnitTime;const r=(i=this.workId)==null?void 0:i.toString(),n=r&&((o=this.vNodes)==null?void 0:o.get(r))||void 0;r&&n&&(n.opt=ka(e),(a=this.vNodes)==null||a.setInfo(r,n))}getRenderableEraserLines(t){return[...t.eraserlines||[],...t.doingLines||[]]}updataOptService(t){var n,i;let e;const r=(n=this.workId)==null?void 0:n.toString();if(r&&t){const o=this.fullLayer.getElementsByName(r)||this.drawLayer&&this.drawLayer.getElementsByName(r)||[];if(o.length!==1)return;const a=o[0],{pos:c,zIndex:l,scale:u,angle:h,translate:d}=t,f={};yt(l)&&(f.zIndex=l),c&&(f.pos=[c[0],c[1]]),u&&(f.scale=u),h&&(f.rotate=h),d&&(f.translate=d),a.attr(f);const g=a==null?void 0:a.getBoundingClientRect();return g&&(e=Ue(e,{x:Math.floor(g.x-Qt.SafeBorderPadding),y:Math.floor(g.y-Qt.SafeBorderPadding),w:Math.floor(g.width+Qt.SafeBorderPadding*2),h:Math.floor(g.height+Qt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(r,{rect:e,centerPos:c}),e}}drawEraserlines(t,e){const{group:r,eraserlines:n=[],eraserFaces:i,pos:o,layer:a}=t,c=a.parent;if(e)try{const u=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,h=r.getBoundingClientRect(),d=h.width*u*a.worldScaling[0],f=h.height*u*a.worldScaling[1];let g=1;if((d>this.maxImageWidth||f>this.maxImageHeight)&&(g=Math.min(this.maxImageWidth/d,this.maxImageHeight/f)),c.renderer.glRenderer&&!this.confirmEraserDeletion&&this.drawEraserMask({group:r,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g}))return;let y=a.getAttribute("scale");y=[y[0]*g,y[1]*g];const T=a.parent.parent,x=a.getAttribute("translate"),C=this.createVmRenderNode(`${this.workId}_bitMapLayer`,T,{offscreen:c.offscreen,width:c.width,height:c.height,contextType:"2d",autoRender:!1,bufferSize:500},y,x),L=r.cloneNode(!0);if(!n.length&&!i)return;i&&this.addEraserFaces(L,i,o,!1),this.addEraserlines(L,n,o,!1),C.appendChild(L);const S=C.parent;S.render();const p=C.renderer.canvasRenderer,m=p.context;if(!m)return;const M=p.options.displayRatio,v=L.getBoundingClientRect(),R={x:v.x,y:v.y,w:v.width,h:v.height},b={x:0,y:0,w:T.width,h:T.height};if(Nc(R,b)===wn.outside){ur(L,S),T.removeChild(S),this.isDelete=!0;return}const D=Fpe(R,M),z=dt(D);z.x=Math.floor(Math.max(D.x,0)),z.y=Math.floor(Math.max(D.y,0)),z.w=Math.min(D.x+D.w,T.width)-z.x,z.h=Math.min(D.y+D.h,T.height)-z.y;const j=this.getGroupRect(z,M),k=j.x,A=j.y,N=j.w,W=j.h;let Y=m.getImageData(k,A,N,W);if(this.confirmEraserDeletion&&this.isTransparentRectByCanvas(Y)){ur(L,S),T.removeChild(S),this.isDelete=!0,Y=null;return}if(this.confirmEraserDeletion&&c.renderer.glRenderer&&this.drawEraserMask({group:r,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g})){ur(L,S),T.removeChild(S),Y=null;return}ur(r,c);const Q=this.createSpriteNode({imageData:Y,safariRect:z,originRect:D,worldScaling:C.worldScaling});Q&&r.append(Q),ur(L,S),T.removeChild(S),c.deleteTexture(Y),Y=null}catch(l){console.error("[BaseShapeTool] drawEraserlines error:",l);return}}drawEraserMask(t){var m,M;const{group:e,eraserlines:r,eraserFaces:n,pos:i,layer:o,targetScale:a}=t;if(!r.length&&!n||e.getAttribute("clipPath"))return!1;const c=Number(e.getAttribute("width")),l=Number(e.getAttribute("height"));if(!(c>0)||!(l>0))return!1;const u=o.parent.renderer;if(!u.glRenderer)return!1;const h=u.options.displayRatio||1,d=Math.max(1,Math.ceil(c*h*o.worldScaling[0]*a)),f=Math.max(1,Math.ceil(l*h*o.worldScaling[1]*a)),g=[-c/2,-l/2,c,l];let y=op.get(o);y||(y=new Map,op.set(o,y)),this.pruneEraserMaskCaches(o,y,u);let T=y.get(this.workId),x=!T||T.pixelWidth!==d||T.pixelHeight!==f||T.facesKey!==(n==null?void 0:n.d);if(T&&!x&&(x=this.isEraserMaskPrefixChanged(T,r)),x){if(T==null||T.handle.destroy(u),T=this.createEraserMaskCache(d,f,g),!T)return!1;y.set(this.workId,T)}if(!T)return!1;const C=d/c,L=f/l;T.context.setTransform(C,0,0,L,d/2,f/2),x&&n&&(this.appendEraserMaskFaces(T.context,n,i),T.facesKey=n.d);let S=x,p;for(const v of r){const R=T.commands.get(v.workId),b=x?0:(R==null?void 0:R.count)||0;for(let P=b;P<v.op.length;P++)S=!0,p=Ue(p,this.appendEraserMaskStroke(T.context,v.op[P],v.thickness,i));T.commands.set(v.workId,{count:v.op.length,thickness:v.thickness,first:(m=v.op[0])==null?void 0:m.slice(0,2),last:(M=v.op[v.op.length-1])==null?void 0:M.slice(-2)})}return S&&T.handle.update({rect:g,dirtyRect:x||!p?void 0:[p.x,p.y,p.w,p.h]}),e.setMask(T.handle,{rect:g}),!0}pruneEraserMaskCaches(t,e,r){for(const[n,i]of e)n!==this.workId&&t.getElementsByName(n).length===0&&(i.handle.destroy(r),e.delete(n))}createEraserMaskCache(t,e,r){var o,a;let n;typeof OffscreenCanvas=="function"?n=new OffscreenCanvas(t,e):typeof document<"u"&&(n=document.createElement("canvas"),n.width=t,n.height=e);const i=n==null?void 0:n.getContext("2d");if(!(!n||!i))return i.save(),i.setTransform(1,0,0,1,0,0),i.fillStyle="#fff",i.fillRect(0,0,t,e),i.restore(),{canvas:n,context:i,handle:new koe(n,{rect:r,singleChannelTexture:((o=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:o.singleChannelTexture)!==!1,textureSubImage2D:((a=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:a.textureSubImage2D)!==!1}),rect:r,pixelWidth:t,pixelHeight:e,commands:new Map}}appendEraserMaskStroke(t,e,r,n){if(e.length<2)return;t.save(),t.fillStyle="#000",t.strokeStyle="#000",t.lineCap="round",t.lineJoin="round",t.lineWidth=r;const i=e[0]-n[0],o=e[1]-n[1];if(e.length===2)t.beginPath(),t.arc(i,o,r/2,0,Math.PI*2),t.fill();else{t.beginPath(),t.moveTo(i,o);for(let g=2;g<e.length;g+=2)t.lineTo(e[g]-n[0],e[g+1]-n[1]);t.stroke()}t.restore();const a=[],c=[];for(let g=0;g<e.length;g+=2)a.push(e[g]-n[0]),c.push(e[g+1]-n[1]);const l=r/2+1,u=Math.min(...a),h=Math.min(...c),d=Math.max(...a),f=Math.max(...c);return{x:u-l,y:h-l,w:d-u+l*2,h:f-h+l*2}}appendEraserMaskFaces(t,e,r){t.save(),t.fillStyle="#000",t.beginPath();for(const n of Pa(e))for(const i of n.rings)i.forEach(([o,a],c)=>{const l=o-r[0],u=a-r[1];c===0?t.moveTo(l,u):t.lineTo(l,u)}),t.closePath();t.fill("evenodd"),t.restore()}isEraserMaskPrefixChanged(t,e){var r,n;if(t.commands.size>e.length)return!0;for(const i of e){const o=t.commands.get(i.workId);if(o&&(i.op.length<o.count||i.thickness!==o.thickness||!this.isSamePoint(o.first,(r=i.op[0])==null?void 0:r.slice(0,2))||!this.isSamePoint(o.last,(n=i.op[o.count-1])==null?void 0:n.slice(-2))))return!0}return!1}isSamePoint(t,e){return!t||!e?t===e:t[0]===e[0]&&t[1]===e[1]}createVmRenderNode(t,e,r,n,i){const{width:o,height:a}=r,c=`bitMap-${t}`,l=e.layer(c,r),u=new ht({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:t});return u.setAttribute("scale",n),u.setAttribute("translate",i),l.append(u),u}getGroupRect(t,e){return jpe(t,e)}addEraserlines(t,e,r,n=!0){for(const i of e){const{thickness:o,op:a}=i;for(const c of a){const l=c.map((g,y)=>y%2?g-r[1]:g-r[0]),u=this.computEraserPoints(l,o),h=Dr(u,!0),d={pos:[0,0],d:h,fillColor:"rgba(0,0,0,1)"},f=new $t(d);f.addEventListener("beforerender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.ZERO,y.ZERO,y.ZERO,y.ZERO):y.globalCompositeOperation="destination-out"}),f.addEventListener("afterrender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.SRC_ALPHA,y.ONE_MINUS_SRC_ALPHA,y.ONE,y.ONE_MINUS_SRC_ALPHA):y.globalCompositeOperation="source-over"}),t.append(f)}}}addEraserFaces(t,e,r,n=!0){const i=Pa(e).flatMap(a=>a.rings.map(c=>Dr(c.map(([l,u])=>new Pe(l-r[0],u-r[1])),!0))).join(" ");if(!i)return;const o=new $t({pos:[0,0],d:i,fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});o.addEventListener("beforerender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.ZERO,c.ZERO,c.ZERO,c.ZERO):c.globalCompositeOperation="destination-out"}),o.addEventListener("afterrender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA):c.globalCompositeOperation="source-over"}),t.append(o)}isTransparentRectByCanvas(t){let e=!0;for(let r=0;r<t.data.length;r+=4)if(t.data[r+3]!==0){e=!1;break}return e}createSpriteNode(t){const{imageData:e,worldScaling:r,safariRect:n,originRect:i}=t;let o;if(typeof OffscreenCanvas=="function"){o=new OffscreenCanvas(e.width,e.height);const d=o.getContext("2d");d&&d.putImageData(e,0,0)}else if(typeof document<"u"){o=document.createElement("canvas"),o.width=e.width,o.height=e.height;const d=o.getContext("2d");d&&d.putImageData(e,0,0)}if(!o)return console.warn("Failed to create imageEraserBitmap Sprite"),null;const{size:a,textureRect:c}=Upe(n,i,r),l={name:"eraserTexture",anchor:[.5,.5],pos:[0,0],size:a,texture:o,textureRect:c},u=new wc(l);let h=!0;return u.addEventListener("beforerender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(h=f.imageSmoothingEnabled,f.imageSmoothingEnabled=!1)}),u.addEventListener("afterrender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(f.imageSmoothingEnabled=h)}),u}computEraserPoints(t,e){const r=Math.ceil(e/2);return t.length===2?this.computDot(t,r):this.computLine(t,r)}computDot(t,e){const r=new Pe(t[0],t[1]);return Pe.GetDotStroke(r,e,8)}computLine(t,e){const r=[],n=[];let i,o;for(let a=0;a<t.length;a+=2){const c=new Pe(t[a],t[a+1]);let l;if(a==t.length-2){const u=new Pe(t[a-2],t[a-1]);l=fe.Sub(c,u).uni(),i=c}else{a===0&&(o=c);const u=new Pe(t[a+2],t[a+3]);l=fe.Sub(u,c).uni()}if(l){const u=fe.Per(l).mul(e);r.push(Pe.Sub(c,u)),n.push(Pe.Add(c,u))}}if(i&&o){const a=Pe.GetSemicircleStroke(i,r[r.length-1],-1,8),c=Pe.GetSemicircleStroke(o,n[0],-1,8);return r.concat(a,n.reverse(),c)}return[]}replace(t,e,r){var i;if(!e){r&&t.append(r);return}const n=t.getElementsByName(e);if(n.length)for(const o of n)r?U0e(r,o,t):(o.remove(),hr(o,t.parent));else r&&t.append(r);this.fullLayer!==this.drawLayer&&(this.fullLayer===t?(i=this.drawLayer)==null||i.getElementsByName(e).forEach(a=>{var c;a.remove(),hr(a,(c=this.drawLayer)==null?void 0:c.parent)}):this.fullLayer.getElementsByName(e).forEach(a=>{a.remove(),hr(a,this.fullLayer.parent)}))}removeDrawCountNodes(t,e){const r=[];t.getElementsByName(this.workId).forEach(n=>{n.id&&e&&Number(n.id)<e&&r.push(n)});for(const n of r)n.remove(),hr(n,t.parent)}static updateNodeOpt(t){var m;const{node:e,opt:r,vNodes:n,willSerializeData:i,targetNode:o}=t,{zIndex:a,translate:c,angle:l,originPoint:u,scenePoint:h,scale:d,pointMap:f,thickness:g}=r;let y;const T=o&&dt(o)||n.get(e.name);if(!T)return;const x=r.eraserGeometryDelta,L=!!x||!!u&&!!d&&!!o||!!i&&(!!c||yt(l))?$s(T.op,T.centerPos):void 0;if(x&&(!L||!Kv(x,T.op,T.centerPos)))return;x&&sd(n,e.name,x.matrix);let S;yt(a)&&(e.setAttribute("zIndex",a),T.opt.zIndex=a);const p=e.parent;if(p){if(u&&d&&o){if(S=[d[0],0,0,d[1],h[0]*(1-d[0])+((c==null?void 0:c[0])||0),h[1]*(1-d[1])+((c==null?void 0:c[1])||0)],Lc(T.op,h,d,c),zs(T.centerPos,h,d,c),T.opt.translate=void 0,T.opt.scale=void 0,T.opt.eraserlines)for(let M=0;M<T.opt.eraserlines.length;M++){const{op:v,thickness:R}=T.opt.eraserlines[M];T.opt.eraserlines[M].thickness=Math.round(R*Math.max(Math.abs(d[0]),Math.abs(d[1])));for(let b=0;b<v.length;b++)zs(v[b],h,d,c)}Wi(T.opt)&&(T.opt.eraserFaces=Dl(T.opt.eraserFaces??null,M=>zs(M,h,d,c)),delete T.opt.eraserlines)}else if(c)if(e.setAttribute("translate",c),T.opt.translate=c,o){const M=[c[0]*p.worldScaling[0],c[1]*p.worldScaling[1]];y=Qs(T.rect,M),T.rect=y}else{const M=Qt.getRectFromLayer(p,e.name);T.rect=M||T.rect}else if(yt(l))if(e.setAttribute("rotate",l),T.opt.rotate=l,o)y=gd(T.rect,l),T.rect=y;else{const M=Qt.getRectFromLayer(p,e.name);T.rect=M||T.rect}if(f){const M=f.get(e.name);if(M)for(let v=0,R=0;v<T.op.length;v+=3,R++)T.op[v]=M[R][0],T.op[v+1]=M[R][1]}if(g&&((m=T==null?void 0:T.opt)!=null&&m.thickness)&&(T.opt.thickness=g),i&&!(u&&d&&o)){if(c){S=[1,0,0,1,c[0],c[1]];const M=T.op.map((v,R)=>{const b=R%3;return b===0?v+c[0]:b===1?v+c[1]:v});if(T.op=M,T.centerPos=[T.centerPos[0]+c[0],T.centerPos[1]+c[1]],T!=null&&T.opt&&(T.opt.translate=void 0),T.opt.eraserlines)for(let v=0;v<T.opt.eraserlines.length;v++){const{op:R}=T.opt.eraserlines[v];for(let b=0;b<R.length;b++){const P=R[b].map((D,z)=>z%2?D+c[1]:D+c[0]);T.opt.eraserlines[v].op[b]=P}}Wi(T.opt)&&(T.opt.eraserFaces=Dl(T.opt.eraserFaces??null,v=>{for(let R=0;R<v.length;R+=2)v[R]+=c[0],v[R+1]+=c[1]}),delete T.opt.eraserlines)}else if(yt(l)){const M=Math.PI*l/180,v=Math.cos(M),R=Math.sin(M),[b,P]=T.centerPos;S=[v,R,-R,v,b-v*b+R*P,P-R*b-v*P];const D=T.op;if(N0e(D,T.centerPos,l),T.op=D,T!=null&&T.opt&&(T.opt.rotate=void 0),T.opt.eraserlines)for(let z=0;z<T.opt.eraserlines.length;z++){const{op:j}=T.opt.eraserlines[z];for(let k=0;k<j.length;k++)Dp(j[k],T.centerPos,l)}Wi(T.opt)&&(T.opt.eraserFaces=Dl(T.opt.eraserFaces??null,z=>Dp(z,T.centerPos,l)),delete T.opt.eraserlines)}}if(L&&S){const M=$s(T.op,T.centerPos);if(x&&x.toDigest!==M)return;x||(Rpe(n,e.name,o,S),Epe(n,e.name,{matrix:S,fromDigest:L,toDigest:M},o))}T&&n.setInfo(e.name,T)}}static getCenterPos(t,e){const{worldPosition:r,worldScaling:n}=e;return[(t.x+t.w/2-r[0])/n[0],(t.y+t.h/2-r[1])/n[1]]}static getRectFromLayer(t,e){const r=t.getElementsByName(e)[0];if(r){const n=r.getBoundingClientRect();return{x:Math.floor(n.x-Qt.SafeBorderPadding),y:Math.floor(n.y-Qt.SafeBorderPadding),w:Math.floor(n.width+Qt.SafeBorderPadding*2),h:Math.floor(n.height+Qt.SafeBorderPadding*2)}}}static isWillRefresh(t){const{toolsType:e,opt:r,node:n,updateOpt:i,willSerializeData:o}=t;return!!(o&&(i.angle||i.translate)||i.thickness&&r.thickness&&r.thickness!==i.thickness||i.strokeType&&r.strokeType&&r.strokeType!==i.strokeType||i.originPoint&&i.scenePoint&&i.scale||i.pointMap&&i.pointMap.has(n.name)||e===q.Text&&(i.fontSize||i.translate||i.textInfos&&i.textInfos.get(n.name))||e===q.BackgroundSVG&&(i.translate||i.scale)||e===q.Image&&(i.angle||i.translate||i.scale||i.strokeColor&&r.type===Sn.Iconify)||e===i.toolsType&&i.willRefresh||r.eraserlines&&r.eraserlines.length&&(i.strokeColor||i.fillColor))}};E(Qt,"SafeBorderPadding",10);let xe=Qt;const ad=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);function _v(s,t,e=.01){return Math.abs(s[0]-t[0])<e&&Math.abs(s[1]-t[1])<e}function Wpe(s,t=.01){if(s.length===0)return[];const e=[[s[0][0],s[0][1]]];for(let r=1;r<s.length;r++)_v([s[r][0],s[r][1]],e[e.length-1],t)||e.push([s[r][0],s[r][1]]);return e}function Vpe(s,t=.01){if(s.length<=2)return s;const e=s[0],r=s[s.length-1];return _v(e,r,t)?s.slice(0,-1):s}function $pe(s){const t=s.reduce((r,n)=>r+n[0],0)/s.length,e=s.reduce((r,n)=>r+n[1],0)/s.length;return[t,e]}function ap(s,t){return Math.atan2(t[1]-s[1],t[0]-s[0])}function Ype(s,t=.01){if(s.length<=2)return s;const e=[];for(const n of s)e.some(o=>Math.abs(o[0]-n[0])<t&&Math.abs(o[1]-n[1])<t)||e.push([n[0],n[1]]);const r=$pe(e);return e.sort((n,i)=>{const o=ap(r,n),a=ap(r,i);return o-a})}function Gpe(s,t){const e=t[0].x<t[t.length-1].x;return s.map(n=>{const o=n.map(a=>{let c=-1,l=1/0,u=0;for(let h=0;h<t.length;h++){const d=t[h],f=Math.sqrt(Math.pow(d.x-a[0],2)+Math.pow(d.y-a[1],2));f<l&&(l=f,c=h,u=d.z)}return{point:a,index:c,bestZ:u}}).sort((a,c)=>a.index-c.index).map(a=>[...a.point,a.bestZ]);return e&&o[0][0]>o[o.length-1][0]||!e&&o[0][0]<o[o.length-1][0]?o.reverse():o}).sort((n,i)=>{const o=n[0][0],a=i[0][0];return e?o-a:a-o})}function Hpe(s,t,e=.01){const n=s.map(h=>[h.x,h.y]),i=(h,d)=>h.map(([f,g])=>({X:Math.round(f*d),Y:Math.round(g*d)})),o=new It.ClipperOffset;o.AddPath(i(n,1e3),It.JoinType.jtRound,It.EndType.etOpenButt);const a=[];o.Execute(a,1);const c=new It.Clipper;c.AddPaths(a,It.PolyType.ptSubject,!0),t.forEach(h=>{c.AddPath(i(h,1e3),It.PolyType.ptClip,!0)});const l=new It.Paths;c.Execute(It.ClipType.ctDifference,l,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const u=l.map(h=>Vpe(Ype(Wpe(h.map(d=>[d.X/1e3,d.Y/1e3]),e),e),e)).filter(h=>h.length>=2);return Gpe(u,s)}class e0 extends xe{constructor(e){super(e);E(this,"canRotate",!0);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Pencil);E(this,"syncTimestamp");E(this,"syncIndex",0);E(this,"tmpPoints",[]);E(this,"MAX_REPEAR",10);E(this,"uniThickness");E(this,"workOptions");E(this,"centerPos",[0,0]);this.workOptions=e.toolsOpt,this.uniThickness=this.MAX_REPEAR/this.workOptions.thickness/10,this.syncTimestamp=0}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}setPointVector(e,r){if(!r)return!1;const n=e.x-r.x,i=e.y-r.y;if(n===0&&i===0)return!1;const o=fe.Sub(e,r).uni();return!Number.isFinite(o.x)||!Number.isFinite(o.y)?!1:(e.setv(o),!0)}combineConsume(){var a;const e=(a=this.workId)==null?void 0:a.toString();if(this.tmpPoints.length<2)return{type:le.None};const r=this.transformDataAll(!0),n={name:e};let i;const o=this.drawLayer||this.fullLayer;return r.length&&(i=this.draw({attrs:n,tasks:r,replaceId:e,layer:o})),{rect:i,type:le.DrawWork,dataType:Re.Local}}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,drawCount:a,removeDrawCount:c,isSimpleWorker:l}=e,{workId:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const{tasks:d,effects:f,consumeIndex:g}=this.transformData(r,!1);this.syncIndex=Math.min(this.syncIndex,g,Math.max(0,this.tmpPoints.length-2));const y={name:u,id:yt(a)&&a.toString()||void 0};let T,x=!1;const C=this.syncIndex;if(this.syncTimestamp===0&&(this.syncTimestamp=Date.now()),d.length&&(d[0].taskId-this.syncTimestamp>this.syncUnitTime&&(x=!0,this.syncTimestamp=d[0].taskId,this.syncIndex=this.tmpPoints.length),i||o||l)){const p=n?this.fullLayer:this.drawLayer||this.fullLayer;T=this.draw({attrs:y,tasks:d,effects:f,layer:p,removeDrawCount:c})}if(l){const p=[];this.tmpPoints.slice(C).forEach(M=>{p.push(M.x,M.y,this.computRadius(M.z,this.workOptions.thickness))});const m=!this.workOptions.previewLocalOnly&&x;return{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,op:m?p:void 0,index:m?C*3:void 0,rect:T,updateNodeOpt:{useAnimation:!0}}}if(i)return g>10&&this.tmpPoints.splice(0,g-10),{rect:T,type:le.DrawWork,dataType:Re.Local};const L=[];this.tmpPoints.slice(C).forEach(p=>{L.push(p.x,p.y,this.computRadius(p.z,this.workOptions.thickness))});const S=!this.workOptions.previewLocalOnly&&x;return{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,rect:T,op:S?L:void 0,index:S?C*3:void 0,updateNodeOpt:{useAnimation:!0}}}consumeAll(e){var u;const r=this.workId;if(e.data){const{op:h,workState:d}=e.data;h!=null&&h.length&&d===de.Done&&this.workOptions.strokeType===Be.Stroke&&this.updateTempPointsWithPressureWhenDone(h)}const n=this.fullLayer;if(this.tmpPoints.length<2)return this.replace(n,r),{type:le.RemoveNode,removeIds:[r]};const i=this.transformDataAll(!0),o={name:r};let a;i.length&&(a=this.draw({attrs:o,tasks:i,replaceId:r,layer:n}));const c=[];this.tmpPoints.map(h=>{c.push(h.x,h.y,h.z)}),this.syncTimestamp=0,delete this.workOptions.syncUnitTime;const l=At(c);return(u=this.vNodes)==null||u.setInfo(r,{rect:a,op:c,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:a&&xe.getCenterPos(a,n)}),{...this.baseConsumeResult,rect:a,type:le.FullWork,dataType:Re.Local,ops:l,updateNodeOpt:{pos:this.centerPos,useAnimation:!0}}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var h,d;const{op:r,isFullWork:n,replaceId:i,workState:o=de.Done}=e;this.tmpPoints.length=0;for(let f=0;f<r.length;f+=3){const g=new Pe(r[f],r[f+1],r[f+2]);if(this.tmpPoints.length>0){const y=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(g,y))continue}this.tmpPoints.push(g)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0),c=(h=this.workId)==null?void 0:h.toString(),l={name:c};let u;if(c&&a.length){const f=n?this.fullLayer:this.drawLayer||this.fullLayer;u=this.draw({attrs:l,tasks:a,replaceId:i,layer:f,isDrawEraserlines:o===de.Done}),(d=this.vNodes)==null||d.setInfo(c,{rect:u,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&xe.getCenterPos(u,f)})}return u}computPencilPoints(e){const r=[],{op:n,eraserPolylines:i,eraserThickness:o}=e;this.tmpPoints.length=0;for(let c=0;c<n.length;c+=3){const l=new Pe(n[c],n[c+1],n[c+2]);if(this.tmpPoints.length>0){const u=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(l,u))continue}this.tmpPoints.push(l)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0);if(a.length)for(let c=0;c<a.length;c++){const{pos:l,points:u}=a[c],h=u.map(g=>g.point.addXY(l[0],l[1])),d=[];for(const g of i){const y=[];for(let x=0;x<g.length;x+=2){const C=new Pe(g[x],g[x+1]);if(y.length>0){const L=y[y.length-1].point;if(!this.setPointVector(C,L))continue}y.push({point:C,radius:o})}const{ps:T}=this.computStroke(y,!1);d.push(T.map(x=>x.XY))}Hpe(h,d,.01).forEach(g=>{r.push(g.map(y=>[y[0],y[1],y[2]]).flat(1))})}return r}transformDataAll(e=!0){return this.getTaskPoints(this.tmpPoints,e&&this.workOptions.thickness||void 0)}draw(e){const{attrs:r,tasks:n,replaceId:i,effects:o,layer:a,removeDrawCount:c,isDrawEraserlines:l=!0}=e,{strokeColor:u,strokeType:h,thickness:d,zIndex:f,scale:g,rotate:y,translate:T,eraserlines:x,eraserFaces:C,doingLines:L,lineCap:S,lineDash:p}=this.workOptions;o!=null&&o.size&&(o.forEach(P=>{var D;(D=a.getElementById(P+""))==null||D.remove()}),o.clear()),c&&this.removeDrawCountNodes(a,c);let m;const M=[],v=a.worldPosition,R=a.worldScaling;for(let P=0;P<n.length;P++){const{pos:D,points:z}=n[P],{ps:j,rect:k}=this.computDrawPoints(z);let A;const N=z.length===1;h===Be.Stroke||N?A=Dr(j,!0):A=Dr(j,!1);const W={pos:D,d:A,fillColor:h===Be.Stroke||N?u:void 0,lineDash:N?void 0:h===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*d]:h===Be.LongDotted?[(p&&p[0]||1)*d,(p&&p[1]||2)*d]:void 0,strokeColor:u,lineCap:N?void 0:S,lineWidth:h===Be.Stroke||N?0:d};m=Ue(m,{x:Math.floor((k.x+D[0])*R[0]+v[0]-xe.SafeBorderPadding),y:Math.floor((k.y+D[1])*R[1]+v[1]-xe.SafeBorderPadding),w:Math.floor(k.w*R[0]+2*xe.SafeBorderPadding),h:Math.floor(k.h*R[1]+2*xe.SafeBorderPadding)}),M.push(W)}g&&(r.scale=g),y&&(r.rotate=y),T&&(r.translate=T);const b=new ht;if(m){this.centerPos=xe.getCenterPos(m,a);const P=h===Be.Stroke&&!x&&!C&&!L;b.attr({...r,normalize:!0,anchor:[.5,.5],bgcolor:P?u:void 0,pos:this.centerPos,size:[(m.w-2*xe.SafeBorderPadding)/R[0],(m.h-2*xe.SafeBorderPadding)/R[1]],zIndex:f});const D=M.map(z=>(z.pos=[z.pos[0]-this.centerPos[0],z.pos[1]-this.centerPos[1]],new $t(z)));b.append(...D),P&&b.seal(),(x||C||L)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:b,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:this.centerPos,layer:a},l)),this.replace(a,i,b)}if(g||y||T){const P=b==null?void 0:b.getBoundingClientRect();P&&(m={x:Math.floor(P.x-xe.SafeBorderPadding),y:Math.floor(P.y-xe.SafeBorderPadding),w:Math.floor(P.width+xe.SafeBorderPadding*2),h:Math.floor(P.height+xe.SafeBorderPadding*2)})}return this.isDelete&&b.setAttribute("opacity",0),m}computDrawPoints(e){return this.workOptions.strokeType===Be.Stroke||e.length===1?this.computStroke(e):this.computNomal(e)}computNomal(e){let r=this.workOptions.thickness;const n=e.map(i=>(r=Math.max(r,i.radius),i.point));return{ps:n,rect:it(n,r)}}computStroke(e,r=!0){return e.length===1?this.computDotStroke(e[0]):this.computLineStroke(e,r)}computLineStroke(e,r=!0){const n=[],i=[];for(let c=0;c<e.length;c++){const{point:l,radius:u}=e[c];let h=l.v;c===0&&e.length>1&&(h=e[c+1].point.v);const d=fe.Per(h).mul(u);n.push(Pe.Sub(l,d)),i.push(Pe.Add(l,d))}const o=e[e.length-1];if(r){const c=Pe.GetSemicircleStroke(o.point,n[n.length-1],-1,8),l=Pe.GetSemicircleStroke(e[0].point,i[0],-1,8),u=n.concat(c,i.reverse(),l);return{ps:u,rect:it(u)}}const a=n.concat(i.reverse());return{ps:a,rect:it(a)}}computDotStroke(e){const{point:r,radius:n}=e,i={x:r.x-n,y:r.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(r,n,8),rect:i}}transformData(e,r){const{op:n,workState:i}=e;let o=this.tmpPoints.length-1,a=[];if(n!=null&&n.length&&i){const{strokeType:c,thickness:l}=this.workOptions,u=new Set,h=Math.max(0,this.tmpPoints.length-1);c===Be.Stroke?this.updateTempPointsWithPressure(n,l,u):this.updateTempPoints(n,l,u),o=h;const d=r?this.tmpPoints:this.tmpPoints.slice(o);return a=this.getTaskPoints(d,l),{tasks:a,effects:u,consumeIndex:o}}return{tasks:a,consumeIndex:o}}computRadius(e,r){return e*.03*r+r*.5}getMinZ(e,r){return((r||Math.max(1,Math.floor(e*.3)))-e*.5)*100/e/3}getTaskPoints(e,r){var h;const n=[];if(e.length===0)return[];let i=0,o=e[0].x,a=e[0].y,c=[o,a],l=[],u=e[0].t;for(;i<e.length;){const d=e[i],f=d.x-o,g=d.y-a,y=d.z,T=r?this.computRadius(y,r):y;if(l.push({point:new Pe(f,g,y,e[i].v),radius:T}),i>0&&i<e.length-1){const x=e[i].getAngleByPoints(e[i-1],e[i+1]);if(x<60||x>300){const C=(h=l.pop())==null?void 0:h.point.clone();C&&n.push({taskId:u,pos:c,points:[...l,{point:C,radius:T}]}),o=e[i].x,a=e[i].y,c=[o,a];const L=d.x-o,S=d.y-a;l=[{point:new Pe(L,S,y),radius:T}],u=Date.now()}}i++}return n.push({taskId:u,pos:c,points:l}),n}updateTempPointsWithPressure(e,r,n){const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let l=0;l<e.length;l+=2){a=Math.min(a,o);const u=this.tmpPoints.length,h=new Pe(e[l],e[l+1]);if(u===0){this.tmpPoints.push(h);continue}const d=u-1,f=this.tmpPoints[d];if(h.x===f.x&&h.y===f.y){f.z<this.MAX_REPEAR&&f.setz(Math.min(f.z+1,this.MAX_REPEAR));continue}const g=fe.Sub(h,f).uni();if(h.isNear(f,r)){let x=f.z;if(f.z<this.MAX_REPEAR&&(x=Math.min(f.z+1,this.MAX_REPEAR),u>1)){let S=u-1;for(;S>0;){const p=this.tmpPoints[S].distance(this.tmpPoints[S-1]),m=Math.max(this.tmpPoints[S].z-this.uniThickness*p,0);if(this.tmpPoints[S-1].z>=m)break;this.tmpPoints[S-1].setz(m),a=Math.min(a,S-1),S--}}if(a=Math.min(a,d),f.t){h.setz(x),h.setv(g),this.tmpPoints.push(h);continue}const C=this.tmpPoints[d-1],L=C?fe.Sub(h,C).uni():f.v;f.set(h.x,h.y,x,L);continue}h.setv(g);const y=h.distance(f),T=Math.max(f.z-this.uniThickness*y,0);u>1&&fe.Equals(g,f.v,.01)&&(T>0||f.z<=0)&&(f.t||this.tmpPoints.pop(),a=Math.min(d,a)),h.setz(T),this.tmpPoints.push(h)}if(a===1/0)return this.tmpPoints.length;let c=o;if(a===o){c=Math.max(c-1,0);const l=this.tmpPoints[c].t;l&&(n==null||n.add(l))}else{let l=o-1;for(c=a;l>=0;){const u=this.tmpPoints[l].t;if(u&&(n==null||n.add(u),l<=a)){c=l,l=-1;break}l--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPoints(e,r,n){var l;const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let u=0;u<e.length;u+=2){const h=this.tmpPoints.length,d=new Pe(e[u],e[u+1]);if(h===0){this.tmpPoints.push(d);continue}const f=h-1,g=this.tmpPoints[f];if(d.x===g.x&&d.y===g.y)continue;const y=fe.Sub(d,g).uni();if(d.isNear(g,r/2)){if(g.t){d.setz(g.z),d.setv(y),this.tmpPoints.push(d),a=Math.min(f,a);continue}const T=this.tmpPoints[f-1],x=T?fe.Sub(d,T).uni():g.v;g.set(d.x,d.y,g.z,x),a=Math.min(f,a);continue}fe.Equals(y,g.v,.01)&&(g.t||this.tmpPoints.pop(),a=Math.min(f,a)),d.setv(y),this.tmpPoints.push(d)}let c=o;if(a===o){c=Math.max(c-1,0);const u=this.tmpPoints[c].t;u&&(n==null||n.add(u))}else{let u=Math.min(o-1,a);for(c=a;u>=0;){const h=(l=this.tmpPoints[u])==null?void 0:l.t;if(h&&(n==null||n.add(h),u<=a)){c=u,u=-1;break}u--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPointsWithPressureWhenDone(e){const{thickness:r}=this.workOptions,n=e.length,i=this.getMinZ(r);for(let o=0;o<n;o+=2){const a=this.tmpPoints.length,c=new Pe(e[o],e[o+1]);if(a===0){this.tmpPoints.push(c);continue}const l=a-1,u=this.tmpPoints[l];if(c.x===u.x&&c.y===u.y){u.z<this.MAX_REPEAR&&u.setz(Math.min(u.z+1,this.MAX_REPEAR));continue}const h=fe.Sub(c,u).uni(),d=c.distance(u);if(a>1&&u.z===i)break;if(c.isNear(u,r/2)){let g=u.z;if(n<3&&u.z<this.MAX_REPEAR&&(g=Math.min(u.z+1,this.MAX_REPEAR),a>1)){let x=a-1;for(;x>0;){const C=this.tmpPoints[x].distance(this.tmpPoints[x-1]),L=Math.max(this.tmpPoints[x].z-this.uniThickness*C,-r/4);if(this.tmpPoints[x-1].z>=L)break;this.tmpPoints[x-1].setz(L),x--}}if(u.t){c.setz(g),c.setv(h),this.tmpPoints.push(c);continue}const y=this.tmpPoints[l-1],T=y?fe.Sub(c,y).uni():u.v;u.set(c.x,c.y,g,T);continue}c.setv(h);const f=Math.max(u.z-this.uniThickness*d,i);a>1&&fe.Equals(h,u.v,.01)&&u.z<=0&&(u.t||this.tmpPoints.pop()),c.setz(f),this.tmpPoints.push(c)}}static updateNodeOpt(e){var h,d;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a,lineCap:c,lineDash:l}=n,u=i.get(r.name);return o&&(r.tagName==="GROUP"?F0e(r)?r.setAttribute("bgcolor",o):r.children.forEach(f=>{f.setAttribute("strokeColor",o),f.getAttribute("fillColor")&&f.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(h=u==null?void 0:u.opt)!=null&&h.strokeColor&&(u.opt.strokeColor=o)),a&&(u!=null&&u.opt)&&((d=u.opt)!=null&&d.strokeType)&&(u.opt.strokeType=a),c&&(u!=null&&u.opt)&&(u.opt.lineCap=c),l&&(u!=null&&u.opt)&&(u.opt.lineDash=l),u&&i.setInfo(r.name,u),xe.updateNodeOpt(e)}}class t0 extends xe{constructor(e){super(e);E(this,"toolsType",q.LaserPen);E(this,"canRotate",!1);E(this,"scaleType",Ye.none);E(this,"syncTimestamp");E(this,"syncIndex",0);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"consumeIndex",0);this.workOptions=e.toolsOpt,this.syncTimestamp=0}combineConsume(){}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:r,isSubWorker:n}=e,{workId:i,op:o,syncUnitTime:a}=r;if((o==null?void 0:o.length)===0)return{type:le.None};if(a&&(this.syncUnitTime=a),this.updateTempPoints(o||[]),this.consumeIndex>this.tmpPoints.length-4)return{type:le.None};const{strokeColor:c,thickness:l,strokeType:u,lineDash:h,lineCap:d}=this.workOptions,f=it(this.tmpPoints,l);let g=!1;const y=this.syncIndex,T=this.tmpPoints.slice(this.consumeIndex);this.consumeIndex=this.tmpPoints.length-1,this.syncTimestamp===0&&(this.syncTimestamp=Date.now());const x={name:i==null?void 0:i.toString(),opacity:1,lineDash:u===Be.Dotted?[h&&h[0]||1,(h&&h[1]||2)*l]:u===Be.LongDotted?[(h&&h[0]||1)*l,(h&&h[1]||2)*l]:void 0,strokeColor:c,lineCap:d,lineWidth:l,anchor:[.5,.5]},C=this.getTaskPoints(T);if(C.length){const S=Date.now();S-this.syncTimestamp>this.syncUnitTime&&(g=!0,this.syncTimestamp=S,this.syncIndex=this.tmpPoints.length),n&&this.draw({attrs:x,tasks:C,isDot:!1,layer:this.drawLayer||this.fullLayer})}const L=[];return this.tmpPoints.slice(y).forEach(S=>{L.push(S.x,S.y)}),{rect:{x:f.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:f.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:f.w*this.fullLayer.worldScaling[0],h:f.h*this.fullLayer.worldScaling[1]},type:le.DrawWork,dataType:Re.Local,op:g?L:void 0,index:g?y*2:void 0,...this.baseConsumeResult}}consumeAll(){var o;const e=(o=this.workId)==null?void 0:o.toString();let r;if(this.tmpPoints.length-1>this.consumeIndex){let a=this.tmpPoints.slice(this.consumeIndex);const c=a.length===1,{strokeColor:l,thickness:u,strokeType:h}=this.workOptions;if(c){const g=this.computDotStroke({point:a[0],radius:u/2});a=g.ps,r=g.rect}else r=it(this.tmpPoints,u);const d={name:e==null?void 0:e.toString(),fillColor:c?l:void 0,opacity:1,lineDash:h===Be.Dotted&&!c?[1,u*2]:h===Be.LongDotted&&!c?[u,u*2]:void 0,strokeColor:l,lineCap:c?void 0:"round",lineWidth:c?0:u,anchor:[.5,.5]},f=this.getTaskPoints(a);f.length&&this.draw({attrs:d,tasks:f,isDot:c,layer:this.drawLayer||this.fullLayer})}const n=[];this.tmpPoints.forEach(a=>{n.push(a.x,a.y)});const i=At(n);return{rect:r&&{x:r.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:r.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:r.w*this.fullLayer.worldScaling[0],h:r.h*this.fullLayer.worldScaling[1]},type:le.FullWork,dataType:Re.Local,ops:i,index:this.syncIndex*2,...this.baseConsumeResult}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var y;const{op:r,replaceId:n,isFullWork:i}=e,{strokeColor:o,thickness:a,strokeType:c}=this.workOptions;if(!r.length){const T=it(this.tmpPoints,a);return{x:T.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:T.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:T.w*this.fullLayer.worldScaling[0],h:T.h*this.fullLayer.worldScaling[1]}}const l=Math.max(0,this.tmpPoints.length-1);this.updateTempPoints(r||[]);let u,h=this.tmpPoints.slice(l);const d=h.length===1;if(d){const T=this.computDotStroke({point:h[0],radius:a/2});h=T.ps,u=T.rect}else u=it(this.tmpPoints,a);const f={name:(y=this.workId)==null?void 0:y.toString(),fillColor:d?o:void 0,opacity:1,lineDash:c===Be.Dotted&&!d?[1,a*2]:c===Be.LongDotted&&!d?[a,a*2]:void 0,strokeColor:o,lineCap:d?void 0:"round",lineWidth:d?0:a,anchor:[.5,.5]},g=this.getTaskPoints(h);if(g.length){const T=i?this.fullLayer:this.drawLayer||this.fullLayer;this.draw({attrs:f,tasks:g,isDot:d,replaceId:n,layer:T})}return{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]}}computDotStroke(e){const{point:r,radius:n}=e,i={x:r.x-n,y:r.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(r,n,8),rect:i}}updateTempPoints(e){const r=this.tmpPoints.length;for(let n=0;n<e.length;n+=2){if(r){const i=this.tmpPoints.slice(-1)[0];i&&i.x===e[n]&&i.y===e[n+1]&&this.tmpPoints.pop()}this.tmpPoints.push(new Pe(e[n],e[n+1]))}}async draw(e){const{attrs:r,tasks:n,isDot:i,layer:o}=e,{duration:a}=this.workOptions;for(const c of n){const l=new $t,{pos:u,points:h}=c;let d;i?d=Dr(h,!0):d=Dr(h,!1),l.attr({...r,pos:u,d}),o.appendChild(l),l.transition(a).attr({scale:i?[.1,.1]:[1,1],lineWidth:i?0:1}).then(()=>{l.remove()})}}getTaskPoints(e){var l;const r=[];if(e.length===0)return[];let n=0,i=e[0].x,o=e[0].y,a=[i,o],c=[];for(;n<e.length;){const u=e[n],h=u.x-i,d=u.y-o;if(c.push(new Pe(h,d)),n>0&&n<e.length-1){const f=e[n].getAngleByPoints(e[n-1],e[n+1]);if(f<60||f>300){const g=(l=c.pop())==null?void 0:l.clone();g&&r.push({pos:a,points:[...c,g]}),i=e[n].x,o=e[n].y,a=[i,o];const y=u.x-i,T=u.y-o;c=[new Pe(y,T)]}}n++}return r.push({pos:a,points:c}),r}removeLocal(){}removeService(e){let r;const n=[];return this.fullLayer.getElementsByName(e).forEach(i=>{if(i.name===e){const o=i.getBoundingClientRect();r=Ue(r,{x:o.x,y:o.y,w:o.width,h:o.height}),n.push(i)}}),n.length&&n.forEach(i=>i.remove()),r}}const Bi=class Bi extends xe{constructor(e,r){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.none);E(this,"toolsType",q.Eraser);E(this,"serviceWork");E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"worldPosition");E(this,"worldScaling");E(this,"eraserRect");E(this,"eraserPolyline");this.serviceWork=r,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(){}consumeService(){}setWorkOptions(e){super.setWorkOptions(e)}createEraserRect(e){const r=e[0]*this.worldScaling[0]+this.worldPosition[0],n=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:i,height:o}=Bi.eraserSizes[this.workOptions.thickness];this.eraserRect={x:r-i*.5,y:n-o*.5,w:i,h:o},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const r=new fe(this.tmpPoints[0],this.tmpPoints[1]),n=new fe(this.tmpPoints[2],this.tmpPoints[3]),i=fe.Sub(n,r).uni(),o=fe.Dist(r,n),{width:a,height:c}=Bi.eraserSizes[this.workOptions.thickness],l=Math.min(a,c),u=Math.round(o/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=fe.Mul(i,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,r){const n=new fe(e[0],e[1]),i=new fe(r[0],r[1]),{width:o,height:a}=Bi.eraserSizes[this.workOptions.thickness];return fe.Dist(n,i)<Math.hypot(o,a)*.5}remove(e){const{curNodeMap:r,removeIds:n}=e;let i;for(const o of r.values())if(o.rect&&this.eraserRect&&this.eraserPolyline&&ja(this.eraserRect,o.rect)){const{op:a}=o,c=[],l=[];for(let h=0;h<a.length;h+=3){const d=new fe(a[h]*this.worldScaling[0]+this.worldPosition[0],a[h+1]*this.worldScaling[1]+this.worldPosition[1],a[h+2]);l.push(d),c.push(new Pe(d.x,d.y))}const u=c.length&&it(c)||o.rect;ja(u,this.eraserRect)&&(l.length>1?Xu.polyline(l.map(d=>d.XY),this.eraserPolyline).length&&n.add(o.name):n.add(o.name),i=Ue(i,o.rect||u))}return n.forEach(o=>{var c;const a=this.fullLayer.getElementsByName(o);a[0]&&(a[0].remove(),hr(a[0],this.fullLayer.parent),(c=this.vNodes)==null||c.delete(o))}),i&&(i.x-=xe.SafeBorderPadding,i.y-=xe.SafeBorderPadding,i.w+=xe.SafeBorderPadding*2,i.h+=xe.SafeBorderPadding*2),i}consume(e){const{op:r,disableEraseImage:n,disableEraseText:i}=e.data;if(!r||r.length===0)return{type:le.None,...this.baseConsumeResult};const o=this.tmpPoints.length;if(o>1&&this.isNear([r[0],r[1]],[this.tmpPoints[o-2],this.tmpPoints[o-1]]))return{type:le.None,...this.baseConsumeResult};o<3?this.tmpPoints.push(r[0],r[1]):this.tmpPoints.splice(2,2,r[0],r[1]);const a=this.computRectCenterPoints();let c;const l=new Set;if(!this.vNodes)return{type:le.None,...this.baseConsumeResult};const u=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap,{disableEraseImage:n,disableEraseText:i}));for(let h=0;h<a.length-1;h+=2){this.createEraserRect(a.slice(h,h+2));const d=this.remove({curNodeMap:u,removeIds:l});c=Ue(c,d)}return c&&l.size?{type:le.RemoveNode,rect:c,removeIds:[...l]}:{type:le.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var r;if(this.serviceWork){const n=new Map(e),i=this.serviceWork.selectorWorkShapes,o=this.serviceWork.workShapes;for(const a of i.values())if((r=a.selectIds)!=null&&r.length)for(const c of a.selectIds)n.delete(c);for(const a of o.keys())n.delete(a);return n}return e}};E(Bi,"eraserSizes",ad);let Da=Bi;const Bt="++",Ne="selector",Lu="all";var Qpe="__lodash_hash_undefined__";function qpe(s){return this.__data__.set(s,Qpe),this}var Zpe=qpe;function Kpe(s){return this.__data__.has(s)}var Xpe=Kpe,Jpe=wv,_pe=Zpe,eme=Xpe;function La(s){var t=-1,e=s==null?0:s.length;for(this.__data__=new Jpe;++t<e;)this.add(s[t])}La.prototype.add=La.prototype.push=_pe;La.prototype.has=eme;var cd=La;function tme(s,t){for(var e=-1,r=s==null?0:s.length;++e<r;)if(t(s[e],e,s))return!0;return!1}var rme=tme;function nme(s,t){return s.has(t)}var ld=nme,ime=cd,sme=rme,ome=ld,ame=1,cme=2;function lme(s,t,e,r,n,i){var o=e&ame,a=s.length,c=t.length;if(a!=c&&!(o&&c>a))return!1;var l=i.get(s),u=i.get(t);if(l&&u)return l==t&&u==s;var h=-1,d=!0,f=e&cme?new ime:void 0;for(i.set(s,t),i.set(t,s);++h<a;){var g=s[h],y=t[h];if(r)var T=o?r(y,g,h,t,s,i):r(g,y,h,s,t,i);if(T!==void 0){if(T)continue;d=!1;break}if(f){if(!sme(t,function(x,C){if(!ome(f,C)&&(g===x||n(g,x,e,r,i)))return f.push(C)})){d=!1;break}}else if(!(g===y||n(g,y,e,r,i))){d=!1;break}}return i.delete(s),i.delete(t),d}var r0=lme;function ume(s){var t=-1,e=Array(s.size);return s.forEach(function(r,n){e[++t]=[n,r]}),e}var hme=ume;function dme(s){var t=-1,e=Array(s.size);return s.forEach(function(r){e[++t]=r}),e}var ud=dme,cp=lo,lp=Fv,fme=Gh,gme=r0,pme=hme,mme=ud,yme=1,vme=2,Mme="[object Boolean]",wme="[object Date]",Sme="[object Error]",Tme="[object Map]",Cme="[object Number]",Ime="[object RegExp]",bme="[object Set]",Eme="[object String]",xme="[object Symbol]",Rme="[object ArrayBuffer]",Ame="[object DataView]",up=cp?cp.prototype:void 0,Ll=up?up.valueOf:void 0;function kme(s,t,e,r,n,i,o){switch(e){case Ame:if(s.byteLength!=t.byteLength||s.byteOffset!=t.byteOffset)return!1;s=s.buffer,t=t.buffer;case Rme:return!(s.byteLength!=t.byteLength||!i(new lp(s),new lp(t)));case Mme:case wme:case Cme:return fme(+s,+t);case Sme:return s.name==t.name&&s.message==t.message;case Ime:case Eme:return s==t+"";case Tme:var a=pme;case bme:var c=r&yme;if(a||(a=mme),s.size!=t.size&&!c)return!1;var l=o.get(s);if(l)return l==t;r|=vme,o.set(s,t);var u=gme(a(s),a(t),r,n,i,o);return o.delete(s),u;case xme:if(Ll)return Ll.call(s)==Ll.call(t)}return!1}var Pme=kme,hp=zv,Dme=1,Lme=Object.prototype,Nme=Lme.hasOwnProperty;function Ome(s,t,e,r,n,i){var o=e&Dme,a=hp(s),c=a.length,l=hp(t),u=l.length;if(c!=u&&!o)return!1;for(var h=c;h--;){var d=a[h];if(!(o?d in t:Nme.call(t,d)))return!1}var f=i.get(s),g=i.get(t);if(f&&g)return f==t&&g==s;var y=!0;i.set(s,t),i.set(t,s);for(var T=o;++h<c;){d=a[h];var x=s[d],C=t[d];if(r)var L=o?r(C,x,d,t,s,i):r(x,C,d,s,t,i);if(!(L===void 0?x===C||n(x,C,e,r,i):L)){y=!1;break}T||(T=d=="constructor")}if(y&&!T){var S=s.constructor,p=t.constructor;S!=p&&"constructor"in s&&"constructor"in t&&!(typeof S=="function"&&S instanceof S&&typeof p=="function"&&p instanceof p)&&(y=!1)}return i.delete(s),i.delete(t),y}var zme=Ome,Nl=Sv,Bme=r0,jme=Pme,Fme=zme,dp=xc,fp=uo,gp=Qh,Ume=Rv,Wme=1,pp="[object Arguments]",mp="[object Array]",Xo="[object Object]",Vme=Object.prototype,yp=Vme.hasOwnProperty;function $me(s,t,e,r,n,i){var o=fp(s),a=fp(t),c=o?mp:dp(s),l=a?mp:dp(t);c=c==pp?Xo:c,l=l==pp?Xo:l;var u=c==Xo,h=l==Xo,d=c==l;if(d&&gp(s)){if(!gp(t))return!1;o=!0,u=!1}if(d&&!u)return i||(i=new Nl),o||Ume(s)?Bme(s,t,e,r,n,i):jme(s,t,c,e,r,n,i);if(!(e&Wme)){var f=u&&yp.call(s,"__wrapped__"),g=h&&yp.call(t,"__wrapped__");if(f||g){var y=f?s.value():s,T=g?t.value():t;return i||(i=new Nl),n(y,T,e,r,i)}}return d?(i||(i=new Nl),Fme(s,t,e,r,n,i)):!1}var Yme=$me,Gme=Yme,vp=Or;function n0(s,t,e,r,n){return s===t?!0:s==null||t==null||!vp(s)&&!vp(t)?s!==s&&t!==t:Gme(s,t,e,r,n0,n)}var Hme=n0,Qme=Hme;function qme(s,t){return Qme(s,t)}var Zme=qme;const nn=an(Zme);function ho(s,t,e){return"#"+((s<<16)+(t<<8)+e).toString(16).padStart(6,"0")}function Et(s,t=1){return"rgba("+parseInt("0x"+s.slice(1,3))+","+parseInt("0x"+s.slice(3,5))+","+parseInt("0x"+s.slice(5,7))+","+t+")"}function qn(s,t,e,r=1){return`rgba(${s},${t},${e},${r})`}function kc(s){const t=s.split(","),e=parseInt(t[0].split("(")[1]),r=parseInt(t[1]),n=parseInt(t[2]),i=Number(t[3].split(")")[0]);return[ho(e,r,n),i]}function xs(s){const t=s.split(","),e=parseInt(t[0].split("(")[1]),r=parseInt(t[1]),n=parseInt(t[2]),i=Number(t[3].split(")")[0]);return[e,r,n,i]}function Jo(s){return s==="transparent"}const Ol="rgb(177,177,177)",Wa=class Wa extends xe{constructor(e){var r;super(e);E(this,"toolsType",q.Selector);E(this,"tmpPoints",[]);E(this,"subTmpPoints",[]);E(this,"workOptions");E(this,"vNodes");E(this,"selectIds");E(this,"selectorColor");E(this,"strokeColor");E(this,"fillColor");E(this,"oldSelectRect");E(this,"oldSubSelectRect");E(this,"canRotate",!1);E(this,"canTextEdit",!1);E(this,"canLock",!1);E(this,"scaleType",Ye.all);E(this,"toolsTypes");E(this,"shapeOpt");E(this,"textOpt");E(this,"isLocked");E(this,"thickness");E(this,"strokeType");E(this,"useStroke");this.workOptions={...e.toolsOpt,strokeColor:((r=e.toolsOpt)==null?void 0:r.strokeColor)||Ol},this.vNodes=e.vNodes}computSelector(e=!0){const r=it(this.tmpPoints);if(r.w===0||r.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:new Map};const{rectRange:n,nodeRange:i}=this.vNodes.getRectIntersectRange(r,e);return{selectIds:[...i.keys()],intersectRect:n,subNodeMap:i}}updateTempPoints(e){const r=this.tmpPoints.length,n=e.length;if(n>1){const i=new Pe(e[n-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[n-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);r===2?this.tmpPoints.splice(1,1,i):this.tmpPoints.push(i)}}drawSelector(e){const{drawRect:r,subNodeMap:n,selectorId:i,layer:o,isService:a}=e,c=new ht({pos:[r.x,r.y],anchor:[0,0],size:[r.w,r.h],id:i,name:i,zIndex:9999}),l=[];if(a){const u=new Vs({normalize:!0,pos:[r.w/2,r.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor||Ol,width:r.w,height:r.h,name:Wa.selectorBorderId});l.push(u)}n.forEach((u,h)=>{const d=[u.rect.x+u.rect.w/2-r.x,u.rect.y+u.rect.h/2-r.y],f=new Vs({normalize:!0,pos:d,lineWidth:1,strokeColor:n.size>1?this.selectorColor||this.workOptions.strokeColor||Ol:void 0,width:u.rect.w,height:u.rect.h,id:`selector-${h}`,name:`selector-${h}`});l.push(f)}),l&&c.append(...l),(o==null?void 0:o.parent).appendChild(c)}draw(e,r,n,i=!1){var c,l;const{intersectRect:o,subNodeMap:a}=n;(l=(c=r.parent)==null?void 0:c.getElementById(e))==null||l.remove(),o&&this.drawSelector({drawRect:o,subNodeMap:a,selectorId:e,layer:r,isService:i})}getSelecteorInfo(e){this.scaleType=Ye.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;const r=new Set;let n,i=!0;for(const o of e.values()){const{opt:a,canRotate:c,scaleType:l,toolsType:u}=o;this.selectorColor=this.workOptions.strokeColor,a.strokeColor&&(this.strokeColor=a.strokeColor),a.fillColor&&(this.fillColor=a.fillColor),a.textOpt&&(this.textOpt=a.textOpt),a.thickness&&(this.thickness=a.thickness),u!==q.Pencil&&(i=!1),a.strokeType&&(this.strokeType=a.strokeType),u===q.SpeechBalloon&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=a.placement),u===q.Polygon&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices),u===q.Star&&(r.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices,this.shapeOpt.innerRatio=a.innerRatio,this.shapeOpt.innerVerticeStep=a.innerVerticeStep),u===q.Text&&(this.textOpt=a),e.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=c,this.scaleType=l),(u===q.Image||u===q.BackgroundSVG)&&(n=o),(l===Ye.proportional&&this.scaleType!==Ye.none||l===Ye.none)&&(this.scaleType=l)}i&&(this.useStroke=!0),r.size&&(this.toolsTypes=[...r]),n&&(e.size===1?(this.canLock=!0,(n.toolsType===q.BackgroundSVG?n.opt.locked!==!1:n.opt.locked)&&(this.isLocked=!0,this.scaleType=Ye.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):e.size>1&&!n.opt.locked&&(this.canLock=!1,this.canRotate=!1))}getChildrenPoints(){var e,r;if(this.scaleType===Ye.both&&((e=this.selectIds)==null?void 0:e.length)===1){const n=this.selectIds[0],i=(r=this.vNodes.get(n))==null?void 0:r.op;if(i){const o=[];for(let a=0;a<i.length;a+=3)o.push([i[a],i[a+1]]);return o}}}consume(e){if(e.isSubWorker)return this.subWorkerConsume(e);let r={type:le.Select,dataType:Re.Local,...this.baseConsumeResult};if(e.isSimpleWorker){const u=this.subWorkerConsume(e);r.subRect=u.rect}const{op:n,workState:i}=e.data;let o=this.oldSelectRect;if(i===de.Start&&(o=this.unSelectedAllIds()),!(n!=null&&n.length)||!this.vNodes.curNodeMap.size)return e.isSimpleWorker?r:{type:le.None};this.updateTempPoints(n);const a=this.computSelector();if(this.selectIds&&nn(this.selectIds,a.selectIds))return e.isSimpleWorker?r:{type:le.None};this.selectIds=a.selectIds;const c=a.intersectRect;this.getSelecteorInfo(a.subNodeMap),this.draw(Ne,this.fullLayer,a),this.oldSelectRect=c;const l=this.getChildrenPoints();return r={...r,rect:Ue(c,o),selectIds:a.selectIds,selectRect:c,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:l,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType},r}consumeAll(){var o,a;let e=this.oldSelectRect;const r=this.tmpPoints[0],n=this.tmpPoints[this.tmpPoints.length-1],i=r&&(!n||r.isNear(n,1));if(!((o=this.selectIds)!=null&&o.length)&&r&&i&&this.selectSingleTool(this.tmpPoints[0].XY,Ne,!1),(a=this.selectIds)!=null&&a.length&&(e=this.selectedByIds(this.selectIds)),e){const c=this.getChildrenPoints();return{type:le.Select,dataType:Re.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:c,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}return{type:le.Select,dataType:Re.Local,...this.baseConsumeResult}}consumeService(){}updateTempPointsForSubWorker(e){const r=e.slice(-2),n=new Pe(r[0],r[1]);if(this.subTmpPoints[0].isNear(n,1))return!1;if(this.subTmpPoints.length===2){if(n.isNear(this.subTmpPoints[1],1))return!1;this.subTmpPoints[1]=n}else this.subTmpPoints.push(n);return!0}computDrawPoints(e){const{thickness:r}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,r),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}drawForSubWorker(e){const{workId:r,layer:n,ps:i}=e,{strokeColor:o,scale:a,rotate:c,translate:l}=this.workOptions,u=n.worldPosition,h=n.worldScaling,{points:d,rect:f,pos:g}=this.computDrawPoints(i),y=1/n.worldScaling[0],T=o&&xs(o)||[0,0,0,0],x={close:!0,normalize:!0,points:d,lineWidth:y,fillColor:qn(T[0],T[1],T[2],.1),strokeColor:qn(T[0],T[1],T[2],1),lineJoin:"round",lineCap:"round"};let C={x:Math.floor(f.x*h[0]+u[0]-xe.SafeBorderPadding),y:Math.floor(f.y*h[1]+u[1]-xe.SafeBorderPadding),w:Math.floor(f.w*h[0]+2*xe.SafeBorderPadding),h:Math.floor(f.h*h[0]+2*xe.SafeBorderPadding)};const L=new ht({name:r,id:r,pos:g,anchor:[.5,.5],size:[f.w,f.h],scale:a,rotate:c,translate:l}),S=new Ir({...x,pos:[0,0]});if(L.appendChild(S),this.replace(n,r,L),a||c||l){const p=L.getBoundingClientRect();C={x:Math.floor(p.x-xe.SafeBorderPadding),y:Math.floor(p.y-xe.SafeBorderPadding),w:Math.floor(p.width+2*xe.SafeBorderPadding),h:Math.floor(p.height+2*xe.SafeBorderPadding)}}return C}transformData(e){const r=it(e);return[[r.x,r.y,0],[r.x+r.w,r.y,0],[r.x+r.w,r.y+r.h,0],[r.x,r.y+r.h,0]]}subWorkerConsume(e){const{data:r,isFullWork:n}=e,{op:i,syncUnitTime:o}=r;o&&(this.syncUnitTime=o);const a=i==null?void 0:i.length;if(!a||a<2)return{type:le.None,rect:void 0};let c;if(this.subTmpPoints.length===0?(this.subTmpPoints=[new Pe(i[0],i[1])],c=!1):c=this.updateTempPointsForSubWorker(i),!c)return{type:le.None,rect:void 0};const l=this.transformData(this.subTmpPoints),u=n?this.fullLayer:this.drawLayer||this.fullLayer,h=this.drawForSubWorker({ps:l,workId:this.workId,layer:u}),d=Ue(h,this.oldSubSelectRect);return this.oldSubSelectRect=h,{rect:d,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}subWorkerConsumeAll(e){const{isFullWork:r}=e,n=r?this.fullLayer:this.drawLayer||this.fullLayer;return this.replace(n,this.workId),{rect:this.oldSelectRect,type:le.FullWork,dataType:Re.Local,...this.baseConsumeResult}}clearSubTmpPoints(){this.subTmpPoints.length=0}clearTmpPoints(){this.tmpPoints.length=0,this.clearSubTmpPoints()}clearSubSelectData(){this.oldSubSelectRect=void 0}clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0,this.clearSubSelectData()}selectSingleTool(e,r=Ne,n=!1){if(e.length===2){const i=e[0],o=e[1];let a;const{nodeRange:c}=this.vNodes.getRectIntersectRange({x:i,y:o,w:0,h:0},!1),l=[...c.values()].sort((u,h)=>(h.opt.zIndex||0)-(u.opt.zIndex||0));for(const u of l){const h=this.fullLayer.getElementsByName(u.name);if(v0(h).find(f=>f.isPointCollision(i,o))){a=u;break}}if(a){const u=a.name;if(!nn(this.oldSelectRect,a.rect)){const h=new Map([[u,a]]);this.getSelecteorInfo(h),this.draw(r,this.fullLayer,{intersectRect:a.rect,subNodeMap:h,selectIds:this.selectIds||[]},n)}this.selectIds=[u],this.oldSelectRect=a.rect}}}unSelectedAllIds(){let e;for(const[r,n]of this.vNodes.curNodeMap.entries())n.isSelected&&(e=Ue(e,n.rect),this.vNodes.unSelected(r));return e}unSelectedByIds(e){let r;for(const n of e){const i=this.vNodes.get(n);i&&i.isSelected&&(r=Ue(r,i.rect),this.vNodes.unSelected(n))}return r}selectedByIds(e){let r;for(const n of e){const i=this.vNodes.get(n);i&&(r=Ue(r,i.rect),this.vNodes.selected(n))}return r}getSelectorRect(e,r){var a;let n;const i=(a=e.parent)==null?void 0:a.getElementById(r),o=i==null?void 0:i.getBoundingClientRect();return o&&(n=Ue(n,{x:Math.floor(o.x),y:Math.floor(o.y),w:Math.floor(o.width+1),h:Math.floor(o.height+1)})),n}isCanFillColor(e){return e===q.Ellipse||e===q.Triangle||e===q.Rectangle||e===q.Polygon||e===q.Star||e===q.SpeechBalloon}async updateSelector(e){const{updateSelectorOpt:r,selectIds:n,vNodes:i,willSerializeData:o,worker:a,offset:c}=e,l=this.fullLayer;if(!l)return;let u;const h=new Map,{originPoint:d,workState:f,angle:g,translate:y,dir:T,scale:x}=r;c&&(y?r.translate=[y[0]+c[0],y[1]+c[1]]:r.translate=c);let C;if(d||y||yt(g)){if(f===de.Start&&n)return i.setTargetAssignKeys(n),{type:le.Select,dataType:Re.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect};if(C=i.getLastTarget(),!C)return}if(n)for(const p of n){const m=i.get(p);if(m){const{toolsType:M,opt:v}=m,R=(l==null?void 0:l.getElementsByName(p))[0];if(R){const b={...r};let P;const D=xe.isWillRefresh({toolsType:M,opt:v,updateOpt:b,vNodes:i,node:R,willSerializeData:o});if(M){P=C==null?void 0:C.get(p);const z=Dc(M);z==null||z.updateNodeOpt({node:R,opt:b,vNodes:i,willSerializeData:o,targetNode:P});const j=i.get(p)||m;if(j&&a&&D){const k=a.createWorkShapeNode({workId:p,toolsType:M,toolsOpt:j.opt});k==null||k.setWorkId(p);let A;if(M===q.BackgroundSVG)A=k.consumeService({isFullWork:!0,replaceId:p});else if(M===q.Image)A=await k.consumeServiceAsync({isFullWork:!0,replaceId:p,worker:a});else if(M===q.Text)A=await k.consumeServiceAsync({isFullWork:!0,replaceId:p,isDrawLabel:!0});else try{A=k==null?void 0:k.consumeService({op:j.op,isFullWork:!0,replaceId:p,workState:f})}catch(N){console.error("consumeService error",N);continue}A&&(j.rect=A)}j&&(h.set(p,j),u=Ue(u,j.rect))}}}}C&&f===de.Done&&(i.deleteLastTarget(),C=void 0);const L=u;if(d&&y&&x&&T&&L&&!c){const p=[[L.x,L.y],[L.x+L.w,L.y],[L.x+L.w,L.y+L.h],[L.x,L.y+L.h]];let m;switch(T){case"top":case"topLeft":case"left":y[0]>0&&y[1]>0?m=p[0]:y[0]>0?m=p[3]:y[1]>0?m=p[1]:m=p[2];break;case"topRight":y[0]<0&&y[1]>0?m=p[1]:y[0]<0?m=p[2]:y[1]>0?m=p[0]:m=p[3];break;case"right":case"bottomRight":case"bottom":y[0]<0&&y[1]<0?m=p[2]:y[0]<0?m=p[1]:y[1]<0?m=p[3]:m=p[0];break;case"bottomLeft":y[0]>0&&y[1]<0?m=p[3]:y[0]>0?m=p[0]:y[1]<0?m=p[2]:m=p[1];break}const M=m&&[d[0]-m[0],d[1]-m[1]]||[0,0];if(!nn(M,[0,0]))return await this.updateSelector({...e,updateSelectorOpt:{workState:f},offset:M})}this.getSelecteorInfo(h),this.draw(Ne,l,{selectIds:n||[],subNodeMap:h,intersectRect:L});const S=Ue(this.oldSelectRect,L);return this.oldSelectRect=L,{type:le.Select,dataType:Re.Local,selectRect:L,renderRect:u,rect:Ue(S,L),selectIds:n}}blurSelector(){const e=this.unSelectedAllIds();return{type:le.Select,dataType:Re.Local,rect:e,selectIds:[],willSyncService:!0}}getRightServiceId(e){return e.replace(Bt,"-")}selectServiceNode(e,r,n){const{selectIds:i}=r,o=this.getRightServiceId(e),a=this.getSelectorRect(this.fullLayer,o);let c;const l=new Map;return i==null||i.forEach(u=>{const h=this.vNodes.get(u);h&&(c=Ue(c,h.rect),l.set(u,h))}),this.getSelecteorInfo(l),this.draw(o,this.fullLayer,{intersectRect:c,selectIds:i||[],subNodeMap:l},n),Ue(c,a)}reRenderSelector(){var n;let e;const r=new Map;return(n=this.selectIds)==null||n.forEach(i=>{const o=this.vNodes.get(i);o&&(e=Ue(e,o.rect),r.set(i,o))},this),this.getSelecteorInfo(r),this.draw(Ne,this.fullLayer,{intersectRect:e,subNodeMap:r,selectIds:this.selectIds||[]}),this.oldSelectRect=e,e}updateSelectIds(e){var o;let r;const n=(o=this.selectIds)==null?void 0:o.filter(a=>!e.includes(a));if(n!=null&&n.length&&(r=this.unSelectedByIds(n)),e.length){const a=this.selectedByIds(e);r=Ue(r,a)}this.selectIds=e;const i=this.reRenderSelector();return{bgRect:r,selectRect:i}}cursorHover(e){var o,a;const r=this.oldSelectRect;this.selectIds=[];const n=(o=this.workId)==null?void 0:o.toString(),i=[e[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(i,n,!0),this.oldSelectRect&&!nn(r,this.oldSelectRect))return{type:le.CursorHover,dataType:Re.Local,rect:Ue(r,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((a=this.selectIds)!=null&&a.length||(this.oldSelectRect=void 0),r&&!this.oldSelectRect)return this.cursorBlur(),{type:le.CursorHover,dataType:Re.Local,rect:r,selectorColor:this.selectorColor,willSyncService:!1}}cursorBlur(){var r,n;this.selectIds=[];const e=(r=this.workId)==null?void 0:r.toString();((n=this.fullLayer)==null?void 0:n.parent).children.forEach(i=>{i.name===e&&i.remove()})}};E(Wa,"selectorBorderId","selector-border");let Na=Wa;class i0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.both);E(this,"toolsType",q.Arrow);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"arrowTipWidth");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.arrowTipWidth=this.workOptions.thickness*4,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:T})}if(c){const T=Ue(g,this.oldRect);this.oldRect=g;const x={rect:T,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(x=>[...x.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,...this.baseConsumeResult,type:le.DrawWork,dataType:Re.Local}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(n,r)}),{rect:n,...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineDash:T,lineCap:x}=this.workOptions,C=n.worldPosition,L=n.worldScaling,{points:S,pos:p,rect:m,isTriangle:M,trianglePoints:v,trianglePos:R}=this.computDrawPoints(a),b=[m.x+m.w/2,m.y+m.h/2],P={pos:b,name:r,id:r,zIndex:c,anchor:[.5,.5],size:[m.w,m.h]};l&&(P.scale=l),u&&(P.rotate=u),h&&(P.translate=h);const D=new ht(P),z={points:v,pos:[R[0]-b[0],R[1]-b[1]],fillColor:o,strokeColor:o,lineWidth:0,normalize:!1},j=new Ir(z);if(D.append(j),!M&&S&&p){const A={points:S,pos:[p[0]-b[0],p[1]-b[1]],fillColor:o,strokeColor:o,lineDash:d===Be.Dotted?[T&&T[0]||1,(T&&T[1]||2)*a]:d===Be.LongDotted?[(T&&T[0]||1)*a,(T&&T[1]||2)*a]:void 0,lineCap:d===Be.Normal?void 0:x,lineWidth:a,normalize:!1},N=new Ir(A);D.append(N)}(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:D,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:b,layer:n},i)),this.replace(n,r,D);let k={x:Math.floor(m.x*L[0]+C[0]-xe.SafeBorderPadding),y:Math.floor(m.y*L[1]+C[1]-xe.SafeBorderPadding),w:Math.floor(m.w*L[0]+2*xe.SafeBorderPadding),h:Math.floor(m.h*L[1]+2*xe.SafeBorderPadding)};if(l||u||h){const A=D.getBoundingClientRect();k={x:Math.floor(A.x-xe.SafeBorderPadding),y:Math.floor(A.y-xe.SafeBorderPadding),w:Math.floor(A.width+xe.SafeBorderPadding*2),h:Math.floor(A.height+xe.SafeBorderPadding*2)}}return this.isDelete&&D.setAttribute("opacity",0),k}computDrawPoints(e){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(e):this.computTrianglePoints()}computFullArrowPoints(e){const r=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),n=fe.Per(r).mul(e/2),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=fe.Mul(r,this.arrowTipWidth),c=fe.Sub(this.tmpPoints[1],a),l=Pe.Sub(c,n),u=Pe.Add(c,n),h=fe.Per(r).mul(e*1.5),d=Pe.Sub(c,h),f=Pe.Add(c,h),g=[this.tmpPoints[0],c],y=[d,this.tmpPoints[1],f],T=[i,o,...y,l,u];return{trianglePoints:y.map(x=>Pe.Sub(x,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,points:g.map(x=>Pe.Sub(x,this.tmpPoints[0]).XY).flat(1),rect:it(T),isTriangle:!1,pos:this.tmpPoints[0].XY}}computTrianglePoints(){const e=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),r=this.tmpPoints[1].distance(this.tmpPoints[0]),n=fe.Per(e).mul(Math.floor(r*3/8)),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=[i,this.tmpPoints[1],o];return{trianglePoints:a.map(c=>Pe.Sub(c,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,rect:it(a),isTriangle:!0}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(r.name);return o&&(r.tagName==="GROUP"?r.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(r.name,c),xe.updateNodeOpt(e)}}class s0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Ellipse);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const y=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:y,isDrawing:!0});const T=y.parent.parent,x={x:0,y:0,w:Math.floor(T.width),h:Math.floor(T.height)},C={type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(Nc(g,x)!==wn.outside){const S=Ue(g,this.oldRect);if(this.oldRect=g,C.rect=S,!c)return C}if(c){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=S,C.op=this.tmpPoints.map(p=>[...p.XY,0]).flat(1),C.index=0,C.isSync=!0),C}return{type:le.None}}if(!i&&!o&&!c&&a){const y=Date.now();return y-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=y,{type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult,op:this.tmpPoints.map(T=>[...T.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}return{type:le.None}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,...this.baseConsumeResult,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:T,doingLines:x,lineDash:C,lineCap:L}=this.workOptions,S=n.worldScaling,{radius:p,rect:m,pos:M}=this.computDrawPoints(l),v={closeType:"normal",radius:p,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:L,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*l]:g===Be.LongDotted?[(C&&C[0]||1)*l,(C&&C[1]||2)*l]:void 0},R={name:r,id:r,zIndex:u,pos:M,anchor:[.5,.5],size:[m.w,m.h]};h&&(R.scale=h),d&&(R.rotate=d),f&&(R.translate=f);const b=new ht(R);if(i){const z=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/S[0],1/S[1]]});b.append(z)}const P=new $h({...v,pos:[0,0]});b.append(P),(y||T||x)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:b,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:T,pos:M,layer:n},o)),this.replace(n,r,b);const D=b.getBoundingClientRect();return this.isDelete&&b.setAttribute("opacity",0),{x:Math.floor(D.x-xe.SafeBorderPadding),y:Math.floor(D.y-xe.SafeBorderPadding),w:Math.floor(D.width+xe.SafeBorderPadding*2),h:Math.floor(D.height+xe.SafeBorderPadding*2)}}computDrawPoints(e){const r=it(this.tmpPoints),n=it(this.tmpPoints,e),i=[Math.floor(r.x+r.w/2),Math.floor(r.y+r.h/2)];return{rect:n,pos:i,radius:[Math.floor(r.w/2),Math.floor(r.h/2)]}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(r.name);let u=r;return r.tagName==="GROUP"&&(u=r.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(r.name,l),xe.updateNodeOpt(e)}}class o0 extends xe{constructor(e){super(e);E(this,"canRotate",!0);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Rectangle);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}transformData(){const e=it(this.tmpPoints);return[[e.x,e.y,0],[e.x+e.w,e.y,0],[e.x+e.w,e.y+e.h,0],[e.x,e.y+e.h,0]]}computDrawPoints(e){const{thickness:r}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,r),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u}=r,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};const f=this.transformData();let g;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({ps:f,workId:l,layer:T,isDrawing:!0})}if(c){const T=Ue(g,this.oldRect);this.oldRect=g;const x={rect:T,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=f.flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{type:le.DrawWork,dataType:Re.Local,op:f.flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var c;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.transformData(),n=this.fullLayer,i=this.draw({ps:r,workId:e,layer:n,isDrawing:!1});this.oldRect=i;const o=r.flat(1),a=At(o);return(c=this.vNodes)==null||c.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&xe.getCenterPos(i,n)}),{rect:i,type:le.FullWork,dataType:Re.Local,ops:a,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,ps:o,replaceId:a,isDrawEraserlines:c=!0}=e,{strokeColor:l,fillColor:u,thickness:h,zIndex:d,scale:f,rotate:g,translate:y,strokeType:T,eraserlines:x,eraserFaces:C,doingLines:L,lineCap:S,lineDash:p}=this.workOptions,m=n.worldPosition,M=n.worldScaling,{points:v,rect:R,pos:b}=this.computDrawPoints(o),P={close:!0,normalize:!0,points:v,lineWidth:h,fillColor:u!=="transparent"&&u||void 0,strokeColor:l,lineCap:S,lineDash:T===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*h]:T===Be.LongDotted?[(p&&p[0]||1)*h,(p&&p[1]||2)*h]:void 0};let D={x:Math.floor(R.x*M[0]+m[0]-xe.SafeBorderPadding),y:Math.floor(R.y*M[1]+m[1]-xe.SafeBorderPadding),w:Math.floor(R.w*M[0]+2*xe.SafeBorderPadding),h:Math.floor(R.h*M[0]+2*xe.SafeBorderPadding)};const z=new ht({name:r,id:r,zIndex:d,pos:b,anchor:[.5,.5],size:[R.w,R.h],scale:f,rotate:g,translate:y}),j=new Ir({...P,pos:[0,0]});if(z.appendChild(j),i){const k=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:l,lineWidth:1,scale:[1/M[0],1/M[1]]});z.appendChild(k)}if((x||C||L)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:z,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:b,layer:n},c)),this.replace(n,a||r,z),f||g||y){const k=z.getBoundingClientRect();D={x:Math.floor(k.x-xe.SafeBorderPadding),y:Math.floor(k.y-xe.SafeBorderPadding),w:Math.floor(k.width+2*xe.SafeBorderPadding),h:Math.floor(k.height+2*xe.SafeBorderPadding)}}return this.isDelete&&z.setAttribute("opacity",0),D}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var h,d;const{op:r,isFullWork:n,replaceId:i,workState:o=de.Done}=e,a=(h=this.workId)==null?void 0:h.toString();if(!a)return;const c=[];for(let f=0;f<r.length;f+=3)c.push([r[f],r[f+1],r[f+2]]);const l=n?this.fullLayer:this.drawLayer||this.fullLayer,u=this.draw({ps:c,workId:a,layer:l,isDrawing:!1,replaceId:i,isDrawEraserlines:o===de.Done});return this.oldRect=u,(d=this.vNodes)==null||d.setInfo(a,{rect:u,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&xe.getCenterPos(u,l)}),u}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(r.name);let u=r;return r.tagName==="GROUP"&&(u=r.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(r.name,l),xe.updateNodeOpt(e)}}class a0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Star);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:T,isDrawing:!0})}if(c){const T=Ue(g,this.oldRect);this.oldRect=g;const x={rect:T,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(x=>[...x.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,innerVerticeStep:d,innerRatio:f,scale:g,rotate:y,translate:T,strokeType:x,eraserlines:C,eraserFaces:L,doingLines:S,lineDash:p,lineCap:m}=this.workOptions,M=n.worldScaling,{rect:v,pos:R,points:b}=this.computDrawPoints(l,h,d,f),P={close:!0,points:b,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:m,lineDash:x===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*l]:x===Be.LongDotted?[(p&&p[0]||1)*l,(p&&p[1]||2)*l]:void 0},D={name:r,id:r,zIndex:u,pos:R,anchor:[.5,.5],size:[v.w,v.h]};g&&(D.scale=g),y&&(D.rotate=y),T&&(D.translate=T);const z=new ht(D);if(i){const A=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/M[0],1/M[1]]});z.append(A)}const j=new Ir({...P,pos:[0,0]});z.append(j),(C||L||S)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:z,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:L,pos:R,layer:n},o)),this.replace(n,r,z);const k=z.getBoundingClientRect();return this.isDelete&&z.setAttribute("opacity",0),{x:Math.floor(k.x-xe.SafeBorderPadding),y:Math.floor(k.y-xe.SafeBorderPadding),w:Math.floor(k.width+xe.SafeBorderPadding*2),h:Math.floor(k.height+xe.SafeBorderPadding*2)}}computDrawPoints(e,r,n,i){const o=it(this.tmpPoints),a=[Math.floor(o.x+o.w/2),Math.floor(o.y+o.h/2)],c=j0(o.w,o.h),l=Math.floor(Math.min(o.w,o.h)/2),u=i*l,h=[],d=2*Math.PI/r;for(let g=0;g<r;g++){const y=g*d-.5*Math.PI;let T,x;g%n===1?(T=u*c[0]*Math.cos(y),x=u*c[1]*Math.sin(y)):(T=l*c[0]*Math.cos(y),x=l*c[1]*Math.sin(y),h.push(T,x)),h.push(T,x)}return{rect:it(this.tmpPoints,e),pos:a,points:h}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var T;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,innerVerticeStep:u,innerRatio:h,strokeType:d}=n,f=i.get(r.name),g=f==null?void 0:f.opt;let y=r;return r.tagName==="GROUP"&&(y=r.children[0]),o&&(y.setAttribute("strokeColor",o),g!=null&&g.strokeColor&&(g.strokeColor=o)),a&&(a==="transparent"?y.setAttribute("fillColor","rgba(0,0,0,0)"):y.setAttribute("fillColor",a),g!=null&&g.fillColor&&(g.fillColor=a)),c===q.Star&&(l&&(g.vertices=l),u&&(g.innerVerticeStep=u),h&&(g.innerRatio=h)),d&&(f!=null&&f.opt)&&((T=f.opt)!=null&&T.strokeType)&&(f.opt.strokeType=d),f&&i.setInfo(r.name,{...f,opt:g}),xe.updateNodeOpt(e)}}class c0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Polygon);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,{op:l,syncUnitTime:u}=r;u&&(this.syncUnitTime=u);const h=this.workId,d=l==null?void 0:l.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(l[0],l[1])],f=!1):f=this.updateTempPoints(l),!f)return{type:le.None};let g;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:h,layer:T,isDrawing:!0})}if(c){const T=Ue(g,this.oldRect);this.oldRect=g;const x={type:le.DrawWork,rect:T,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(x=>[...x.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,scale:d,rotate:f,translate:g,strokeType:y,eraserlines:T,eraserFaces:x,doingLines:C,lineCap:L,lineDash:S}=this.workOptions,p=n.worldScaling,{rect:m,pos:M,points:v}=this.computDrawPoints(l,h),R={close:!0,points:v,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:L,lineDash:y===Be.Dotted?[S&&S[0]||1,(S&&S[1]||2)*l]:y===Be.LongDotted?[(S&&S[0]||1)*l,(S&&S[1]||2)*l]:void 0},b={name:r,id:r,zIndex:u,pos:M,anchor:[.5,.5],size:[m.w,m.h]};d&&(b.scale=d),f&&(b.rotate=f),g&&(b.translate=g);const P=new ht(b);if(i){const j=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/p[0],1/p[1]]});P.append(j)}const D=new Ir({...R,pos:[0,0]});P.append(D),(T||x||C)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:P,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:x,pos:M,layer:n},o)),this.replace(n,r,P);const z=P.getBoundingClientRect();return this.isDelete&&P.setAttribute("opacity",0),{x:Math.floor(z.x-xe.SafeBorderPadding),y:Math.floor(z.y-xe.SafeBorderPadding),w:Math.floor(z.width+xe.SafeBorderPadding*2),h:Math.floor(z.height+xe.SafeBorderPadding*2)}}computDrawPoints(e,r){const n=it(this.tmpPoints),i=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],o=j0(n.w,n.h),a=Math.floor(Math.min(n.w,n.h)/2),c=[],l=2*Math.PI/r;for(let h=0;h<r;h++){const d=h*l-.5*Math.PI,f=a*o[0]*Math.cos(d),g=a*o[1]*Math.sin(d);c.push(f,g)}return{rect:it(this.tmpPoints,e),pos:i,points:c}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,strokeType:u}=n,h=i.get(r.name),d=h==null?void 0:h.opt;let f=r;return r.tagName==="GROUP"&&(f=r.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===q.Polygon&&l&&(d.vertices=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(r.name,{...h,opt:d}),xe.updateNodeOpt(e)}}class yr{static bezier(t,e){const r=[];for(let n=0;n<e.length;n+=4){const i=e[n],o=e[n+1],a=e[n+2],c=e[n+3];i&&o&&a&&c?r.push(...yr.getBezierPoints(t,i,o,a,c)):i&&o&&a?r.push(...yr.getBezierPoints(t,i,o,a)):i&&o?r.push(...yr.getBezierPoints(t,i,o)):i&&r.push(i)}return r}static getBezierPoints(t=10,e,r,n,i){let o=null;const a=[];!n&&!i?o=yr.oneBezier:n&&!i?o=yr.twoBezier:n&&i&&(o=yr.threeBezier);for(let c=0;c<t;c++)o&&a.push(o(c/t,e,r,n,i));return i?a.push(i):n&&a.push(n),a}static oneBezier(t,e,r){const n=e.x+(r.x-e.x)*t,i=e.y+(r.y-e.y)*t;return new fe(n,i)}static twoBezier(t,e,r,n){const i=(1-t)*(1-t)*e.x+2*t*(1-t)*r.x+t*t*n.x,o=(1-t)*(1-t)*e.y+2*t*(1-t)*r.y+t*t*n.y;return new fe(i,o)}static threeBezier(t,e,r,n,i){const o=e.x*(1-t)*(1-t)*(1-t)+3*r.x*t*(1-t)*(1-t)+3*n.x*t*t*(1-t)+i.x*t*t*t,a=e.y*(1-t)*(1-t)*(1-t)+3*r.y*t*(1-t)*(1-t)+3*n.y*t*t*(1-t)+i.y*t*t*t;return new fe(o,a)}}class l0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.all);E(this,"toolsType",q.SpeechBalloon);E(this,"ratio",.8);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){var y;const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=(y=r==null?void 0:r.workId)==null?void 0:y.toString();if(!l)return{type:le.None};const{op:u}=r,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};let f;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;f=this.draw({workId:l,layer:T,isDrawing:!0})}if(c){const T=Ue(f,this.oldRect);this.oldRect=f;const x={rect:T,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(x=>[...x.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const g=Ue(f,this.oldRect);return this.oldRect=f,{rect:g,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,fillColor:a,thickness:c,zIndex:l,placement:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:T,doingLines:x,lineDash:C,lineCap:L}=this.workOptions,{rect:S,pos:p,points:m}=this.computDrawPoints(c,u),M={points:m.map(D=>D.XY),lineWidth:c,fillColor:a!=="transparent"&&a||void 0,strokeColor:o,normalize:!0,className:`${p[0]},${p[1]}`,close:!0,lineCap:L,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*c]:g===Be.LongDotted?[(C&&C[0]||1)*c,(C&&C[1]||2)*c]:void 0},v={name:r,id:r,zIndex:l,pos:p,anchor:[.5,.5],size:[S.w,S.h]};h&&(v.scale=h),d&&(v.rotate=d),f&&(v.translate=f);const R=new ht(v),b=new Ir({...M,pos:[0,0]});R.append(b),(y||T||x)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:R,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:T,pos:p,layer:n},i)),this.replace(n,r,R);const P=R.getBoundingClientRect();return this.isDelete&&R.setAttribute("opacity",0),{x:Math.floor(P.x-xe.SafeBorderPadding),y:Math.floor(P.y-xe.SafeBorderPadding),w:Math.floor(P.width+xe.SafeBorderPadding*2),h:Math.floor(P.height+xe.SafeBorderPadding*2)}}transformControlPoints(e){const r=it(this.tmpPoints);switch(e){case"bottom":case"bottomLeft":case"bottomRight":{const n=r.y+r.h*this.ratio;return[new fe(r.x,r.y,0),new fe(r.x+r.w,r.y,0),new fe(r.x+r.w,n,0),new fe(r.x,n,0)]}case"top":case"topLeft":case"topRight":{const n=r.y+r.h*(1-this.ratio);return[new fe(r.x,n,0),new fe(r.x+r.w,n,0),new fe(r.x+r.w,r.y+r.h,0),new fe(r.x,r.y+r.h,0)]}case"left":case"leftBottom":case"leftTop":{const n=r.x+r.w*(1-this.ratio);return[new fe(n,r.y,0),new fe(r.x+r.w,r.y,0),new fe(r.x+r.w,r.y+r.h,0),new fe(n,r.y+r.h,0)]}case"right":case"rightBottom":case"rightTop":{const n=r.x+r.w*this.ratio;return[new fe(r.x,r.y,0),new fe(n,r.y,0),new fe(n,r.y+r.h,0),new fe(r.x,r.y+r.h,0)]}}}computDrawPoints(e,r){const n=it(this.tmpPoints),i=this.transformControlPoints(r),o=Math.floor(n.w*.1),a=Math.floor(n.h*.1),c=[],l=fe.Add(i[0],new fe(0,a,0)),u=fe.Add(i[0],new fe(o,0,0)),h=yr.getBezierPoints(10,l,i[0],u),d=fe.Sub(i[1],new fe(o,0,0)),f=fe.Add(i[1],new fe(0,a,0)),g=yr.getBezierPoints(10,d,i[1],f),y=fe.Sub(i[2],new fe(0,a,0)),T=fe.Sub(i[2],new fe(o,0,0)),x=yr.getBezierPoints(10,y,i[2],T),C=fe.Add(i[3],new fe(o,0,0)),L=fe.Sub(i[3],new fe(0,a,0)),S=yr.getBezierPoints(10,C,i[3],L),p=o*(1-this.ratio)*10,m=a*(1-this.ratio)*10;switch(r){case"bottom":{const R=fe.Sub(i[2],new fe(o*5-p/2,0,0)),b=fe.Sub(i[2],new fe(o*5,-m,0)),P=fe.Sub(i[2],new fe(o*5+p/2,0,0));c.push(b,P,...S,...h,...g,...x,R);break}case"bottomRight":{const R=fe.Sub(i[2],new fe(o*1.1,0,0)),b=fe.Sub(i[2],new fe(o*1.1+p/2,-m,0)),P=fe.Sub(i[2],new fe(o*1.1+p,0,0));c.push(b,P,...S,...h,...g,...x,R);break}case"bottomLeft":{const R=fe.Add(i[3],new fe(o*1.1+p,0,0)),b=fe.Add(i[3],new fe(o*1.1+p/2,m,0)),P=fe.Add(i[3],new fe(o*1.1,0,0));c.push(b,P,...S,...h,...g,...x,R);break}case"top":{const R=fe.Sub(i[1],new fe(o*5-p/2,0,0)),b=fe.Sub(i[1],new fe(o*5,m,0)),P=fe.Sub(i[1],new fe(o*5+p/2,0,0));c.push(b,R,...g,...x,...S,...h,P);break}case"topRight":{const R=fe.Sub(i[1],new fe(o*1.1,0,0)),b=fe.Sub(i[1],new fe(o*1.1+p/2,m,0)),P=fe.Sub(i[1],new fe(o*1.1+p,0,0));c.push(b,R,...g,...x,...S,...h,P);break}case"topLeft":{const R=fe.Add(i[0],new fe(o*1.1+p,0,0)),b=fe.Add(i[0],new fe(o*1.1+p/2,-m,0)),P=fe.Add(i[0],new fe(o*1.1,0,0));c.push(b,R,...g,...x,...S,...h,P);break}case"left":{const R=fe.Add(i[0],new fe(0,a*5-m/2,0)),b=fe.Add(i[0],new fe(-p,a*5,0)),P=fe.Add(i[0],new fe(0,a*5+m/2,0));c.push(b,R,...h,...g,...x,...S,P);break}case"leftTop":{const R=fe.Add(i[0],new fe(0,a*1.1,0)),b=fe.Add(i[0],new fe(-p,a*1.1+m/2,0)),P=fe.Add(i[0],new fe(0,a*1.1+m,0));c.push(b,R,...h,...g,...x,...S,P);break}case"leftBottom":{const R=fe.Sub(i[3],new fe(0,a*1.1+m,0)),b=fe.Sub(i[3],new fe(p,a*1.1+m/2,0)),P=fe.Sub(i[3],new fe(0,a*1.1,0));c.push(b,R,...h,...g,...x,...S,P);break}case"right":{const R=fe.Add(i[1],new fe(0,a*5-m/2,0)),b=fe.Add(i[1],new fe(p,a*5,0)),P=fe.Add(i[1],new fe(0,a*5+m/2,0));c.push(b,P,...x,...S,...h,...g,R);break}case"rightTop":{const R=fe.Add(i[1],new fe(0,a*1.1,0)),b=fe.Add(i[1],new fe(p,a*1.1+m/2,0)),P=fe.Add(i[1],new fe(0,a*1.1+m,0));c.push(b,P,...x,...S,...h,...g,R);break}case"rightBottom":{const R=fe.Sub(i[2],new fe(0,a*1.1+m,0)),b=fe.Sub(i[2],new fe(-p,a*1.1+m/2,0)),P=fe.Sub(i[2],new fe(0,a*1.1,0));c.push(b,P,...x,...S,...h,...g,R);break}}const M=it(this.tmpPoints,e),v=[Math.floor(M.x+M.w/2),Math.floor(M.y+M.h/2)];return{rect:M,pos:v,points:c}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,placement:l,strokeType:u}=n,h=i.get(r.name),d=h==null?void 0:h.opt;let f=r;return r.tagName==="GROUP"&&(f=r.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===q.SpeechBalloon&&l&&(d.placement=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(r.name,{...h,opt:d}),xe.updateNodeOpt(e)}}var Kme=pi,Xme=Or,Jme="[object Boolean]";function _me(s){return s===!0||s===!1||Xme(s)&&Kme(s)==Jme}var eye=_me;const _n=an(eye);class u0 extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.both);E(this,"toolsType",q.Straight);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");E(this,"straightTipWidth");E(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.straightTipWidth=this.workOptions.thickness/2,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:r,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=r,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const T=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:T})}if(c){const T=Ue(g,this.oldRect);this.oldRect=g;const x={rect:T,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,x.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),x.index=0,x.isSync=!0)}return x}if(!i&&a){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=T,{type:le.DrawWork,dataType:Re.Local,op:this.tmpPoints.map(x=>[...x.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:Re.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const r=this.fullLayer,n=this.draw({workId:e,layer:r});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=At(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&xe.getCenterPos(n,r)}),{rect:n,type:le.FullWork,dataType:Re.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:r,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineCap:T,lineDash:x}=this.workOptions,C=n.worldPosition,L=n.worldScaling,{d:S,rect:p,isDot:m}=this.computDrawPoints(a,d),M=[p.x+p.w/2,p.y+p.h/2],v=new ht({pos:M,anchor:[.5,.5],size:[p.w,p.h],name:r,id:r,normalize:!0,zIndex:c}),R={pos:[0,0],normalize:!0,d:S,fillColor:o,strokeColor:o,lineDash:m?void 0:d===Be.Dotted?[x&&x[0]||1,(x&&x[1]||2)*a]:d===Be.LongDotted?[(x&&x[0]||1)*a,(x&&x[1]||2)*a]:void 0,lineCap:m?void 0:T,lineWidth:d===Be.Normal||m?0:a};l&&(R.scale=l),u&&(R.rotate=u),h&&(R.translate=h);const b=new $t(R);v.append(b),(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:v,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:M,layer:n},i)),this.replace(n,r,v);let P={x:Math.floor(p.x*L[0]+C[0]-xe.SafeBorderPadding),y:Math.floor(p.y*L[1]+C[1]-xe.SafeBorderPadding),w:Math.floor(p.w*L[0]+2*xe.SafeBorderPadding),h:Math.floor(p.h*L[1]+2*xe.SafeBorderPadding)};if(u||l||h){const D=b.getBoundingClientRect();P={x:Math.floor(D.x-xe.SafeBorderPadding),y:Math.floor(D.y-xe.SafeBorderPadding),w:Math.floor(D.width+xe.SafeBorderPadding*2),h:Math.floor(D.height+xe.SafeBorderPadding*2)}}return this.isDelete&&v.setAttribute("opacity",0),P}computDrawPoints(e,r){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.straightTipWidth?this.computFullPoints(e,r):this.computDotPoints(e)}computFullPoints(e,r){const n=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),i=fe.Per(n).mul(e/2),o=Pe.Sub(this.tmpPoints[0],i),a=Pe.Add(this.tmpPoints[0],i),c=Pe.Sub(this.tmpPoints[1],i),l=Pe.Add(this.tmpPoints[1],i),u=Pe.GetSemicircleStroke(this.tmpPoints[1],c,-1,8),h=Pe.GetSemicircleStroke(this.tmpPoints[0],a,-1,8),d=[o,c,...u,l,a,...h];let f;return r!==Be.Normal?f=Dr(this.tmpPoints,!1):f=Dr(d,!0),{d:f,rect:it(d),isDot:!1,pos:this.tmpPoints[0].XY}}computDotPoints(e){const r=Pe.GetDotStroke(this.tmpPoints[0],e/2,8);return{d:Dr(r,!0),rect:it(r),isDot:!0,pos:this.tmpPoints[0].XY}}updateTempPoints(e){const r=e.slice(-2),n=new Pe(r[0],r[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:r,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<r.length;h+=3)this.tmpPoints.push(new Pe(r[h],r[h+1],r[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:r,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&xe.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:r,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(r.name);return o&&(r.tagName==="GROUP"?r.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(r.setAttribute("strokeColor",o),r.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(r.name,c),xe.updateNodeOpt(e)}}var Tr=(s=>(s[s.Text=1]="Text",s[s.Shape=2]="Shape",s))(Tr||{});const qt=class qt{createProxy(t){const e=new Proxy(t,{get(r,n,i){const o=qt.interceptors.hasOwnProperty(n)?qt.interceptors:r;return Reflect.get(o,n,i)}});return qt.proxyToRaw.set(e,t),e}};E(qt,"proxyToRaw",new WeakMap),E(qt,"interceptors",{entries(...t){return qt.proxyToRaw.get(this).entries(...t)},forEach(...t){return qt.proxyToRaw.get(this).forEach(...t)},size(){return qt.proxyToRaw.get(this).size},get(t){return qt.proxyToRaw.get(this).get(t)},set(t,e){return qt.proxyToRaw.get(this).set(t,e)},delete(t){return qt.proxyToRaw.get(this).delete(t)},clear(){return qt.proxyToRaw.get(this).clear()}});let Zn=qt;const si="__undo_scope_clear_all__",Mp=s=>Math.max(s,1e3),tye=s=>Math.max(s+1e3,6e3);var $e=(s=>(s.DrawingPencil="drawing:pencil",s.DrawingArrow="drawing:arrow",s.DrawingShape="drawing:shape",s.DrawingEraser="drawing:eraser",s.DrawingPencilEraser="drawing:pencil-eraser",s.DrawingBitMapEraser="drawing:bitmap-eraser",s.MethodTranslateNode="method:translate-node",s.MethodScaleNode="method:scale-node",s.MethodRotateNode="method:rotate-node",s.MethodSetPoint="method:set-point",s.MethodSetColorNode="method:set-color-node",s.AsyncCopyNode="async:copy-node",s.AsyncPasteNode="async:paste-node",s.AsyncDeleteNode="async:delete-node",s.AsyncSetFontStyle="async:set-font-style",s.AsyncSetShapeOpt="async:set-shape-opt",s.AsyncZIndexNode="async:z-index-node",s.AsyncSetLock="async:set-lock",s.AsyncUpdateElement="async:update-element",s.AsyncImage="async:image",s.AsyncIcon="async:icon",s.AsyncMarkmap="async:markmap",s.Text="text",s.Clear="command:clear",s))($e||{});function rye(s){const{tickerId:t,viewId:e,scenePath:r,expectedAcks:n}=s;return{viewId:e,scenePath:r,expectedRender:n.render,expectedStorage:n.storage,gotRender:!n.render,gotStorage:!n.storage,scopeMode:n.scopeMode||"static",source:n.source,transactionId:n.transactionId||`${e}:${t}`,barrierEpoch:n.barrierEpoch||0,startedAt:Date.now(),phase:"doing",ownerPromiseActive:n.ownerPromiseActive??!0,finalizeRequested:!1,collectedScopeKeys:new Set,scopeKeys:new Set,ackedStorageKeys:new Set,meta:{copyAck:n.copyAck,isWritable:n.isWritable}}}function nye(s,t){t&&(s.meta={...s.meta,...t})}function iye(s){return(!s.expectedRender||s.gotRender)&&(!s.expectedStorage||s.gotStorage)}function sye(s){return!s.ackTimer&&s.finalizeRequested}function oye(s){return s.expectedStorage?s.finalizeRequested?s.scopeKeys.size?[...s.scopeKeys].every(t=>s.ackedStorageKeys.has(t)):!0:!1:!0}function aye(s,t){return s.size>0?s.has(si)?t===si:!!t&&s.has(t):!t||s.has(t)}function zl(s,t){const e=t.toString();return s.isLocalId(e)?s.transformKey(e):e}function Bl(s,t,e,r){var o,a;const n=new Set;if(!s)return n;const i=s.getStorageData(t,e);for(const c of r){if(c==null)continue;if(c===si){n.add(si);continue}const l=zl(s,c),u=i==null?void 0:i[l];if(s.getLocalId(l)===Ne){(o=u==null?void 0:u.selectIds)==null||o.forEach(h=>{n.add(zl(s,h))});continue}n.add(l),(a=u==null?void 0:u.selectIds)==null||a.forEach(h=>{n.add(zl(s,h))})}return n}function wp(s,t,e){return e!=null&&e.has(si)?!t.has(s):e!=null&&e.size?e.has(s):!t.has(s)}const cye={[q.Selector]:Le.selector,[q.Clicker]:Le.clicker,[q.Text]:Le.text,[q.Pencil]:Le.pencil,[q.LaserPen]:Le.laserPen,[q.Arrow]:Le.arrow,[q.Straight]:Le.straight,[q.Rectangle]:Le.rectangle,[q.Ellipse]:Le.ellipse,[q.Star]:or.star,[q.Polygon]:or.polygon,[q.SpeechBalloon]:or.speechBalloon,[q.Eraser]:Le.eraser,[q.PencilEraser]:Le.pencilEraser,[q.BitMapEraser]:or.bitMapEraser};function Pc(s){return s===void 0?void 0:cye[s]}function lye(s,t){return s||t}function uye(s){return Pc(s)}function hye(s){switch(s){case q.Text:return Tr.Text;case q.SpeechBalloon:case q.Star:case q.Ellipse:case q.Rectangle:case q.Triangle:case q.Rhombus:case q.Polygon:return Tr.Shape}}function Os(s){if(!s)return!1;try{const t=Nn(s);if(Array.isArray(t))return t.some(e=>String(e??"").trim().length>0);if(typeof t=="string")return t.trim().length>0}catch{}return s.split(",").some(t=>t.trim().length>0)}function h0(s){const t=s.lastChild;if(!t){const n=document.createElement("div"),i=document.createTextNode("");return n.appendChild(i),s.appendChild(n),i}if(t.nodeType===Node.TEXT_NODE)return t;const e=t;if(!e.lastChild){const n=document.createTextNode("");return e.appendChild(n),n}if(e.lastChild.nodeType===Node.TEXT_NODE)return e.lastChild;const r=document.createTextNode("");return e.appendChild(r),r}function dye(s,t){var n;const e=document.createRange(),r=h0(t);r.nodeType===Node.TEXT_NODE?e.setStart(r,((n=r.textContent)==null?void 0:n.length)||0):e.setStart(r,0),e.collapse(!0),s.removeAllRanges(),s.addRange(e)}function d0(s){const t=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null),e=[];let r;for(;(r=t.nextNode())!==null;)e.push(r);return e}function fye(s,t,e){var a;const r=document.createRange();r.setStart(s,t),r.collapse(!0);const n=r.getBoundingClientRect();if(!n.width&&!n.height){const c=(a=s.parentElement)==null?void 0:a.getBoundingClientRect();if(c){const l=e.y<c.top?c.top-e.y:e.y>c.bottom?e.y-c.bottom:0,u=t===0?c.left:c.right;return Math.abs(e.x-u)+l*4}}const i=n.left+n.width/2,o=n.top+n.height/2;return Math.abs(e.x-i)+Math.abs(e.y-o)*4}function gye(s,t){var n;const e=d0(s);if(!e.length){const i=h0(s);return i.nodeType===Node.TEXT_NODE?{node:i,offset:0}:void 0}let r;for(const i of e){const o=((n=i.textContent)==null?void 0:n.length)||0;for(let a=0;a<=o;a++){const c=fye(i,a,t);(!r||c<r.distance)&&(r={node:i,offset:a,distance:c})}}return r?{node:r.node,offset:r.offset}:void 0}function pye(s,t,e){const r=gye(t,e);if(!r)return!1;const n=document.createRange();return n.setStart(r.node,r.offset),n.collapse(!0),s.removeAllRanges(),s.addRange(n),!0}function Sp(s,t){return!!(s!=null&&s.anchorNode)&&t.contains(s.anchorNode)}function Tp(s){let t=null,e=!1;for(const n of Array.from(s.childNodes)){if(n instanceof HTMLDivElement){t=n;continue}n.nodeType===Node.TEXT_NODE&&(t||(t=document.createElement("div"),s.insertBefore(t,n),e=!0),t.appendChild(n),e=!0)}const r=Array.from(s.childNodes).reverse().find(n=>n instanceof HTMLDivElement);return{changed:e,lastLine:r||null}}function mye(s){const t=d0(s);return{textContent:t.map(e=>e.textContent||"").join(""),textNodes:t}}function f0(s){const t=[];for(let e=0;e<s.childNodes.length;e++){const r=s.childNodes[e];if(r.nodeName==="#text"&&e===0){const n=r.textContent.split(/\n/),i=n.pop();t.push(...n),i&&t.push(i)}else if(r.nodeName==="DIV"){const i=(r.innerText??r.textContent??"").split(/\n/);if(i.length===2&&i[0]===""&&i[1]==="")t.push("");else{const o=i.shift();(o||o==="")&&t.push(o);const a=i.pop();t.push(...i),a&&t.push(a)}}}return t}function g0(s){return At(f0(s))}function vs(s,t){var n,i;if(!s.length)return;let e=Math.max(0,t);for(const o of s){const a=((n=o.textContent)==null?void 0:n.length)||0;if(e<=a)return{node:o,offset:e};e-=a}const r=s[s.length-1];return{node:r,offset:((i=r.textContent)==null?void 0:i.length)||0}}function yye(s){const{hasPoint:t,previousByPoint:e,hasSelectionInEditor:r,rangeCount:n,isCollapsed:i}=s;return!t&&e&&r&&n>0&&i}const Li=5;class vye{constructor(t){E(this,"internalMsgEmitter");E(this,"publicMsgEmitter");E(this,"control");E(this,"editors");E(this,"activeId");E(this,"proxyMap");E(this,"taskqueue",new Map);E(this,"undoTickerId");E(this,"checkLocalTextBlur",ve.debounce(()=>{if(this.collector)for(const[t,e]of this.editors.entries())e.opt.workState!==de.Done&&this.collector.isLocalId(t)&&this.activeId!==t&&(Os(e.opt.text)?this.unActive(t):this.delete(t,!0,!0))},100));const{control:e,internalMsgEmitter:r,publicMsgEmitter:n}=t;this.control=e,this.internalMsgEmitter=r,this.publicMsgEmitter=n;const i=new Map;this.proxyMap=new Zn;const o=this,a=Zn.interceptors.set;Zn.interceptors.set=function(l,u){return o.interceptors.set(l,u),a.call(this,l,u)};const c=Zn.interceptors.delete;Zn.interceptors.delete=function(l){return o.interceptors.delete(l),c.call(this,l)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}set UndoTickerId(t){this.undoTickerId=t}get UndoTickerId(){return this.undoTickerId}getDoneUndoTicker(t,e,r){const n=r??e,i=this.control.viewContainerManager.getUndoTickerId(t);if(n===de.Done)return this.undoTickerId&&i===this.undoTickerId?this.undoTickerId:i}ackDoneRender(t,e,r,n,i){t&&(this.internalMsgEmitter.emit("ackRenderUndoTicker",t,e,r,{requestId:n,emitEventType:i}),this.undoTickerId=void 0)}filterEditor(t){const e=new Map;return this.editors.forEach((r,n)=>{r.viewId===t&&e.set(n,r)}),e}get interceptors(){return{set:(t,e)=>{var C,L,S,p,m,M,v,R,b;if(!this.collector)return!0;const{viewId:r,scenePath:n,canSync:i,canWorker:o,type:a,opt:c,dataType:l,updateNodeOpt:u,requestId:h,emitEventType:d,skipStorageDispatch:f}=e,g=e.needUndoTicker??this.getDoneUndoTicker(r,c==null?void 0:c.workState,u==null?void 0:u.workState);if(!o&&!i)return!0;const T=((C=this.collector)==null?void 0:C.isLocalId(t))?(L=this.collector)==null?void 0:L.transformKey(t):t,x=((S=this.collector)==null?void 0:S.storage[r])&&this.collector.storage[r][n]&&this.collector.storage[r][n][T]||void 0;x?x.toolsType===q.Text&&(o&&(this.control.worker.queryTaskBatchData({workId:t,msgType:le.UpdateNode}).forEach(P=>{var D;(D=this.control.worker)==null||D.taskBatchData.delete(P)}),(v=this.control.worker)==null||v.taskBatchData.add({workId:t,msgType:le.UpdateNode,dataType:l||Re.Local,toolsType:q.Text,opt:c,viewId:r,scenePath:n,willRefresh:!0}),(R=this.control.worker)==null||R.runAnimation()),i&&!f&&((b=this.collector)==null||b.dispatch({type:le.UpdateNode,workId:t,toolsType:q.Text,opt:c,viewId:r,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,r,n,h,d),delete e.needUndoTicker,c.workState===de.Done&&this.control.runEffectWork(()=>{this.control.worker.setShapeSelectorByWorkId(t,r)}))):a===Tr.Text&&(i&&!f&&((p=this.collector)==null||p.dispatch({type:c.text&&le.FullWork||le.CreateWork,workId:t,toolsType:q.Text,opt:c,isSync:!0,viewId:r,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,r,n,h,d),delete e.needUndoTicker),o&&((m=this.control.worker)==null||m.taskBatchData.add({workId:t,msgType:c.text&&le.FullWork||le.CreateWork,dataType:l||Re.Local,toolsType:q.Text,opt:c,viewId:r,scenePath:n,willRefresh:!0}),(M=this.control.worker)==null||M.runAnimation()))},delete:t=>{var c,l,u;if(!this.collector)return!0;const e=this.editors.get(t);if(!e)return!0;const{viewId:r,scenePath:n,canSync:i,canWorker:o}=e,a=this.getDoneUndoTicker(r,de.Done);if(!o&&!i)return!0;o&&((c=this.control.worker)==null||c.taskBatchData.add({workId:t,toolsType:q.Text,msgType:le.RemoveNode,dataType:Re.Local,viewId:r,scenePath:n,willRefresh:!0}),(l=this.control.worker)==null||l.runAnimation()),i&&((u=this.collector)==null||u.dispatch({type:le.RemoveNode,removeIds:[t],toolsType:q.Text,viewId:r,scenePath:n,needUndoTicker:a}),this.ackDoneRender(a,r,n))},clear(){return!0}}}computeTextActive(t,e){var i,o,a,c;const r=(i=this.control.viewContainerManager)==null?void 0:i.transformToScenePoint(t,e),n=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:le.GetTextActive,dataType:Re.Local,op:r,viewId:e,scenePath:n}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let t=this.activeId;for(const[r,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){t=r;break}if(t){const r=this.editors.get(t);Os(r==null?void 0:r.opt.text)?this.unActive(t):this.delete(t,!0,!0)}this.checkLocalTextBlur()}forceDoneLocalText(t){const e=t?new Set(t):void 0;[...this.editors.entries()].filter(([n,i])=>{var o,a;return i.opt.workState!==de.Done&&(!e||e.has(i.viewId))&&(i.opt.uid===((o=this.collector)==null?void 0:o.uid)||((a=this.collector)==null?void 0:a.isLocalId(n)))}).map(([n])=>n).forEach(n=>{const i=this.editors.get(n);Os(i==null?void 0:i.opt.text)?this.unActive(n):this.delete(n,!0,!0)})}onCameraChange(t,e){var r,n;for(const[i,o]of this.editors.entries())if(o.viewId===e){const{boxPoint:a,boxSize:c}=o.opt,l=a&&((r=this.control.viewContainerManager)==null?void 0:r.transformToOriginPoint(a,o.viewId)),u=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(u&&e){const h={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:o.opt,scale:t.scale,type:Tr.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1};this.editors.set(i,h),this.control.viewContainerManager.updateTextEditorInfo(e,this.activeId)}}}deriveTextEditorInfoFromServiceData(t,e={}){var L,S,p;const{workId:r,opt:n,msgType:i,viewId:o,scenePath:a,dataType:c,updateNodeOpt:l,lastOperator:u}=t;if(!r||!o||!a)return;const h=r.toString();if(i===le.RemoveNode){this.delete(h,!0,!0);return}const d=n,f=d.workState!==de.Done&&!d.uid&&u?{...d,uid:u}:d,{boxPoint:g,boxSize:y}=f,T=g&&((L=this.control.viewContainerManager)==null?void 0:L.transformToOriginPoint(g,o)),x=this.control.viewContainerManager.getView(o),C={x:T&&T[0]||0,y:T&&T[1]||0,w:y&&y[0]||0,h:y&&y[1]||0,opt:f,type:Tr.Text,canWorker:e.canWorker??!0,canSync:e.canSync??!1,dataType:c,scale:((S=x==null?void 0:x.cameraOpt)==null?void 0:S.scale)||1,viewId:o,scenePath:a};if(f.workState===de.Done&&!this.control.cursor.isEnableCursor&&g&&y){let M=l==null?void 0:l.uid;if(!M){const v=this.editors.get(h);M=v&&((p=v.opt)==null?void 0:p.uid)}M&&this.control.cursor.collectServiceCursor({op:g&&[g[0]+y[0],g[1]+y[1]],uid:M,workState:de.Done,cursorTool:Pc(q.Text),viewId:o,type:le.Cursor})}return this.editors.set(h,C),c===Re.Service&&f.workState===de.Done&&this.activeId===h&&(this.activeId=void 0),(e.updateView??!0)&&this.control.viewContainerManager.updateTextEditorInfo(o,this.activeId),C}onServiceDerive(t){this.deriveTextEditorInfoFromServiceData(t)}updateForViewEdited(t,e){var n;this.editors.set(t,e);const r=(n=this.taskqueue.get(t))==null?void 0:n.resolve;r&&r(e)}active(t,e){var n;const r=this.editors.get(t);r&&r.viewId&&(r.opt.workState=de.Start,r.opt.uid=(n=this.collector)==null?void 0:n.uid,this.activeId=t,r.canWorker=!0,r.canSync=!0,e&&r.viewId&&this.addUndoTicker(e,r.viewId),r.undoTickerId=e||r.undoTickerId||this.undoTickerId,this.editors.set(t,r),this.control.viewContainerManager.updateTextEditorInfo(r.viewId,this.activeId))}unActive(t){var r;const e=this.editors.get(t);if(e&&e.viewId){const n=e.undoTickerId||this.control.viewContainerManager.getUndoTickerId(e.viewId)||this.undoTickerId;n&&this.internalMsgEmitter.emit("finalizeRequested",n,e.viewId,[t],e.scenePath),e.opt.workState=de.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(t,e),this.activeId=void 0;const i=(r=this.control.viewContainerManager.getView(e.viewId))==null?void 0:r.container;if(i){const o=CSS.escape(t),a=i.querySelector(`.editor-box #${o}`);a&&a.blur()}this.control.viewContainerManager.updateTextEditorInfo(e.viewId,this.activeId)}}addUndoTicker(t,e){this.internalMsgEmitter.emit("addUndoTicker",t,e,{render:!0,storage:!0,source:$e.Text}),this.undoTickerId=t}createTextForMasterController(t,e){var o;const{workId:r,isActive:n,...i}=t;e&&this.addUndoTicker(e,i.viewId),i.opt.uid=(o=this.collector)==null?void 0:o.uid,i.undoTickerId=e||i.undoTickerId||this.undoTickerId,n&&(this.activeId=r),i.dataType=Re.Local,i.canWorker=!0,i.canSync=!0,this.editors.set(r,i),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}updateTextForMasterController(t,e){var o;const{workId:r,...n}=t;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(r)||{};n.opt&&(n.opt.uid=(o=this.collector)==null?void 0:o.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=Re.Local,this.editors.set(r,{...i,...n}),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(t,e){var u;const{workId:r,...n}=t;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(r)||{};n.opt&&(n.opt.uid=(u=this.collector)==null?void 0:u.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=Re.Local;const o={...i,...n};if(this.editors.set(r,o),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId),this.taskqueue.has(r)){const h=this.taskqueue.get(r);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(r)),await this.updateTextControllerWithEffectAsync(t)}const a=setTimeout(()=>{var d;const h=(d=this.taskqueue.get(r))==null?void 0:d.resolve;h&&h(o)},50),c=await new Promise(h=>{this.taskqueue.set(r,{resolve:h,clocker:a})}),l=this.taskqueue.get(r);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(r)),c}updateTextForWorker(t,e){const{workId:r,isActive:n,...i}=t,o=this.editors.get(r)||{},a={...o,...i};if(e&&this.addUndoTicker(e,i.viewId),a.undoTickerId=e||o.undoTickerId||this.undoTickerId,n){a.canWorker=!1,a.canSync=!1,this.editors.set(r,a),this.active(r);return}this.editors.set(r,a),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}get(t){return this.editors.get(t)}delete(t,e,r){const n=this.editors.get(t);if(n){const i=n.viewId;n.canSync=e,n.canWorker=r,this.editors.delete(t),this.activeId===t&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}}deleteBatch(t,e,r){const n=new Set;for(const i of t){const o=this.editors.get(i);if(o){const a=o.viewId;o.canSync=e,o.canWorker=r,this.editors.delete(i),this.activeId===i&&(this.activeId=void 0),n.add(a)}}for(const i of n)this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}clear(t,e){this.editors.forEach((r,n)=>{r.viewId===t&&(e&&(r.canSync=!1),r.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.updateTextEditorInfo(t,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}insertText(t,e,r,n){var g,y;if(!this.control.canAcceptLocalMutation(t))return;const i=(g=this.control.room)==null?void 0:g.state.memberState;if(!i)return;const o=this.control.viewContainerManager.getView(t);if(!(o!=null&&o.focusScenePath))return;const a=o==null?void 0:o.cameraOpt,c=this.control.getToolsOpt(q.Text,i);if(!c)return;const l=(y=this.control.viewContainerManager)==null?void 0:y.transformToOriginPoint([e,r],t),h=Kl(n,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/),d=c.toolsOpt;d.text=At(h),d.workState=de.Doing,d.boxPoint=[Math.round(e),Math.round(r)],d.boxSize=[d.fontSize,d.fontSize];const f=this.control.worker.now;return this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:f.toString(),x:l&&l[0]||0,y:l&&l[1]||0,scale:(a==null?void 0:a.scale)||1,opt:d,type:Tr.Text,isActive:!0,viewId:t,scenePath:o.focusScenePath},f),f.toString()}updateText(t,e){const r=this.editors.get(t.toString());if(!r||!this.control.canAcceptLocalMutation(r.viewId))return;const i=Kl(e,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/);r.opt.text=At(i),this.control.textEditorManager.updateTextForMasterController({workId:t,opt:r.opt,viewId:r.viewId,canSync:!0,canWorker:!0},this.control.worker.now)}}const Mn=class Mn extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.proportional);E(this,"toolsType",q.Text);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");this.workOptions=e.toolsOpt}static async normalizeStorageData(e){return this.normalizeStorageDataSync(e)}static normalizeStorageDataSync(e){const r=xe.normalizeStorageDataSync(e);if(r.status==="unrecoverable")return r;const n=r.value,i=n.opt;return i&&i.workState!==de.Done?(n.type=le.FullWork,n.opt={...i,workState:de.Done},{status:"stable",value:n}):r}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}consumeService(){}async draw(e){const{workId:r,layer:n,isDrawLabel:i,boxRect:o,isActive:a}=e;if(a&&!a())return;const{boxSize:c,boxPoint:l,zIndex:u}=this.workOptions,h=n.worldPosition,d=n.worldScaling;if(!l||!c)return;const f={name:r,id:r,pos:[l[0]-Li,l[1]-Li],anchor:[0,0],size:c,zIndex:u},g=new ht(f),y={x:l[0]-Li,y:l[1]-Li,w:c[0],h:c[1]},T={x:Math.floor(y.x*d[0]+h[0]),y:Math.floor(y.y*d[1]+h[1]),w:Math.floor(y.w*d[0])+2,h:Math.floor(y.h*d[1])+2};let x;if(o&&(x=Nc(T,o)),(i||o&&x!==wn.outside)&&n&&this.workOptions.text){const C=await Mn.createLabels(this.workOptions,n,T,a),{labels:L,maxWidth:S}=C;if(a&&!a())return L.forEach(p=>p.disconnect()),T;g.append(...L),T.w=Math.ceil(Math.max(S*n.worldScaling[0],T.w))}return a&&!a()?(g.removeAllChildren(),g.disconnect(),T):(this.replace(n,r,g),T)}async consumeServiceAsync(e){var h,d,f,g;const r=(h=this.workId)==null?void 0:h.toString();if(!r)return;const{isFullWork:n,replaceId:i,isDrawLabel:o,boxRect:a,isActive:c}=e;this.oldRect=i&&((f=(d=this.vNodes)==null?void 0:d.get(i))==null?void 0:f.rect)||void 0;const l=n?this.fullLayer:this.drawLayer||this.fullLayer,u=await this.draw({workId:r,layer:l,isDrawLabel:typeof o>"u"&&this.workOptions.workState===de.Done||o,boxRect:a,isActive:c});return c&&!c()||(g=this.vNodes)==null||g.setInfo(r,{rect:u,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&xe.getCenterPos(u,l)}),u}updataOptService(){}async updataOptServiceAsync(e,r,n){var y,T;if(!this.workId)return;const i=this.workId.toString(),{fontColor:o,fontBgColor:a,bold:c,italic:l,lineThrough:u,underline:h,zIndex:d}=e,f=(y=this.vNodes)==null?void 0:y.get(i);if(!f)return;o&&(f.opt.fontColor=o),a&&(f.opt.fontBgColor=a),c&&(f.opt.bold=c),l&&(f.opt.italic=l),_n(u)&&(f.opt.lineThrough=u),_n(h)&&(f.opt.underline=h),yt(d)&&(f.opt.zIndex=d),this.oldRect=f.rect;const g=await this.draw({workId:i,layer:this.fullLayer,isDrawLabel:typeof r>"u"&&this.workOptions.workState===de.Done||r,boxRect:n});return(T=this.vNodes)==null||T.setInfo(i,{rect:g,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:g&&xe.getCenterPos(g,this.fullLayer)}),g}clearTmpPoints(){this.tmpPoints.length=0}static getSafetySnippetRatio(e){const r=(e==null?void 0:e.parent).displayRatio||1,n=Math.ceil(e.worldScaling[0]*10)/10;let i=n;return n<=2?i=n*r*2:n>2&&n<=3?i=n*r*1.6:n>3&&n<=4?i=n*r*1.2:n>4&&(i=n*r),Math.floor(i*1e3)/1e3}static getSafetySnippetFontLength(e){return Math.floor(Mn.textImageSnippetSize*3/4/e)||1}static async createLabels(e,r,n,i){var D;const o=[],{x:a,y:c}=n,{width:l,height:u}=(D=r.parent)==null?void 0:D.parent,h=Nn(e.text),d=h.length,{fontSize:f,lineHeight:g,bold:y,textAlign:T,italic:x,fontFamily:C,verticalAlign:L,fontColor:S,fontBgColor:p,underline:m,lineThrough:M}=e,v=Mn.getSafetySnippetRatio(r)||1,R=Math.floor(f*v),b=Mn.getSafetySnippetFontLength(R);let P=0;for(let z=0;z<d;z++){const j=h[z],k=g||R*1.5;if(j){const A=V0e(j),N=[0,0],W=[0,f*1.2];L==="middle"&&(N[1]=Math.floor(z*f*1.2+6+f*(1.1-1)));const Y=[0,Math.floor(-f*.15)];N[0]=6;const Q=Math.sin(Math.PI/180*20);let ie=0;const O=[];let V=0;for(;V<A;){if(i&&!i())return O.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[],maxWidth:P};T==="left"&&(Y[0]=ie),V===0&&x==="italic"&&(Y[0]=Y[0]-Q/2*f);const $=j.slice(V,V+b),ee={anchor:[0,0],pos:Y,text:$,fontFamily:C,fontSize:R,lineHeight:k,strokeColor:S,fontWeight:y,fillColor:S,textAlign:T,fontStyle:x,scale:[1/v,1/v]},se=new Yh(ee),ce=await se.textImageReady;if(i&&!i())return se.disconnect(),O.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[],maxWidth:P};let me=!0;if(ce){const pe=ce.rect&&ce.rect[2],B=ce.rect&&ce.rect[3];if(pe&&B){const F=pe/v,J=B/v;ie=F+ie,x==="italic"&&(y==="bold"?ie=ie-Q*f*1.2:ie=ie-Q*f),((Y[0]+N[0]+F)*r.worldScaling[0]+a<=0||(Y[0]+N[0])*r.worldScaling[0]+a>=l||(Y[1]+N[1]+J)*r.worldScaling[1]+c<=0||(Y[1]+N[1])*r.worldScaling[1]+c>=u)&&(se.disconnect(),me=!1),me&&O.push(se)}}V+=b}W[0]=ie,x==="italic"&&(W[0]=W[0]+Q*f),P=Math.max(P,W[0]);let Z=!0;if(((N[0]+W[0])*r.worldScaling[0]+a<=0||N[0]*r.worldScaling[0]+a>=l||(N[1]+W[1])*r.worldScaling[0]+c<=0||N[1]*r.worldScaling[1]+c>=u)&&(Z=!1),Z){if(m){const se=Math.floor(f/10),ce={normalize:!1,pos:[0,f*1.1+se/2],lineWidth:se,points:[0,0,Math.ceil(W[0]),0],strokeColor:S,className:"underline"},me=new Ir(ce);O.push(me)}if(M){const se={normalize:!1,pos:[0,f*1.2/2],lineWidth:Math.floor(f/10),points:[0,0,Math.ceil(W[0]),0],strokeColor:S,className:"lineThrough"},ce=new Ir(se);O.push(ce)}const $={pos:N,anchor:[0,0],size:W,bgcolor:p},ee=new ht($);ee.append(...O),o.push(ee)}}}return{labels:o,maxWidth:P}}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{fontBgColor:a,fontColor:c,translate:l,originPoint:u,scenePoint:h,scale:d,bold:f,italic:g,lineThrough:y,underline:T,fontSize:x,textInfos:C,zIndex:L}=n,S=o&&dt(o)||i.get(r.name);if(!S||!r.parent)return;const m=S.opt;if(yt(L)&&(r.setAttribute("zIndex",L),S.opt.zIndex=L),c&&m.fontColor&&(m.fontColor=c,r.children.forEach(M=>{M.tagName==="GROUP"&&M.children.forEach(v=>{v.tagName==="LABEL"?(v.setAttribute("fillColor",c),v.setAttribute("strokeColor",c)):v.tagName==="POLYLINE"&&v.setAttribute("strokeColor",c)})})),a&&m.fontBgColor&&(m.fontBgColor=a,r.children.forEach(M=>{M.tagName==="GROUP"&&M.setAttribute("bgcolor",a)})),f&&(m.bold=f),g&&(m.italic=g),_n(y)&&(m.lineThrough=y),_n(T)&&(m.underline=T),x&&(m.fontSize=x),u&&h&&d&&o&&m.boxPoint){const M=C==null?void 0:C.get(r.name);if(M){const{fontSize:P,boxSize:D}=M;m.boxSize=D||m.boxSize,m.fontSize=P||m.fontSize}const v=[m.boxPoint[0],m.boxPoint[1]];Lc(m.boxPoint,h,d,l);const R=[S.op[0],S.op[1]],b=[R[0]-v[0],R[1]-v[1]];if(S.centerPos=[S.centerPos[0]+b[0],S.centerPos[1]+b[1]],S.opt.eraserlines)for(const P of S.opt.eraserlines){const{op:D,thickness:z}=P;P.thickness=Math.round(z*Math.max(d[0],d[1]));for(let j=0;j<D.length;j++)zs(D[j],h,d,l)}}else if(l&&m.boxPoint&&(m.boxPoint=[Math.round(m.boxPoint[0]+l[0]),Math.round(m.boxPoint[1]+l[1])],S.centerPos=[S.centerPos[0]+l[0],S.centerPos[1]+l[1]],S.opt.eraserlines))for(const M of S.opt.eraserlines){const{op:v}=M;for(let R=0;R<v.length;R++){const b=v[R].map((P,D)=>D%2?P+l[1]:P+l[0]);M.op[R]=b}}return S&&i.setInfo(r.name,S),S==null?void 0:S.rect}static getRectFromLayer(e,r){const n=e.getElementsByName(r)[0];if(n){const i=n.getBoundingClientRect();let o={x:Math.floor(i.x),y:Math.floor(i.y),w:Math.floor(i.width+2),h:Math.floor(i.height+2)};return n.children.forEach(a=>{if(a.tagName==="GROUP"){const c=n.getBoundingClientRect();o=Ue(o,{x:Math.floor(c.x),y:Math.floor(c.y),w:Math.floor(c.width+2),h:Math.floor(c.height+2)})}}),o}}};E(Mn,"textImageSnippetSize",1024*4),E(Mn,"SafeBorderPadding",30);let Ys=Mn;const Mye=.01;function p0(s,t,e={}){let r=s.length-1;const n=e.protectedIndex??-1,i=e.timestamp??Date.now();for(let o=0;o<t.length;o+=2){const a=new Pe(t[o],t[o+1]),c=s[s.length-1];if(!c){a.setT(i),s.push(a);continue}if(a.x===c.x&&a.y===c.y){c.setT(i);continue}const l=s.length-1;if(s.length>1&&l>n){const h=s[l-1],d=fe.Sub(c,h).uni(),f=fe.Sub(a,c).uni();Number.isFinite(d.x)&&Number.isFinite(d.y)&&Number.isFinite(f.x)&&Number.isFinite(f.y)&&fe.Equals(d,f,Mye)&&(s.pop(),r--)}const u=s[s.length-1];a.setv(fe.Sub(a,u).uni()),a.setT(i),s.push(a)}return Math.max(r,0)}const ji=class ji extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.none);E(this,"toolsType",q.PencilEraser);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"worldPosition");E(this,"worldScaling");E(this,"eraserRect");E(this,"eraserPolyline");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(e){const{workerEngine:r}=e;if(this.tmpPoints.length===0)return{type:le.None};const{thickness:n}=this.workOptions,{width:i,height:o}=ji.eraserSizes[n],a=Math.round(Math.max(i,o)/this.worldScaling[0]),{rect:c,willNewNodes:l,willDeleteNodes:u}=this.getChangeNodes(a,r);return{...this.baseConsumeResult,type:le.DrawWork,rect:c,willNewNodes:l,willDeleteNodes:u}}consumeService(){}updateTempPoints(e,r){return p0(this.tmpPoints,e)}getChangeNodes(e,r){const n=new Map,i=new Set;let o;if(!this.vNodes)return{willDeleteNodes:i,willNewNodes:n,rect:o};const a=this.worldPosition;let c=it(this.tmpPoints,e);c=Qs(c,a),c=z0(c,this.worldScaling,a);const{nodeRange:l}=this.vNodes.getRectIntersectRange(c);if(!l.size)return{willDeleteNodes:i,willNewNodes:n,rect:o};const u=this.computEraserPointLines(this.tmpPoints,90);for(const[h,d]of l.entries()){if(d.toolsType!==q.Pencil)continue;let f=Qs(d.rect,[-a[0],-a[1]]);f={x:f.x/this.worldScaling[0],y:f.y/this.worldScaling[1],w:f.w/this.worldScaling[0],h:f.h/this.worldScaling[1]};const g=[f.x,f.y,f.x+f.w,f.y+f.h],y=[],T=[];for(const x of u)Xu.polyline(x,g,y);if(y.length&&d.opt)for(const x of y){const C=[];for(let L=0;L<x.length;L++)L!==0&&nn(x[L],x[L-1])||C.push(...x[L]);T.push(C)}if(T.length&&r){const x=r.createWorkShapeNode({workId:h,toolsType:q.Pencil,toolsOpt:d.opt});x.setWorkId(h);const C=x==null?void 0:x.computPencilPoints({op:d.op,eraserPolylines:T,eraserThickness:e});if(o=Ue(o,d.rect),i.add(h),r.removeNode(h),C.length)for(let L=0;L<C.length;L++){const S=`${h}_${Date.now()}_${L}`,p=S,M=r.setFullWork({workId:p,opt:d.opt,toolsType:q.Pencil}).consumeService({op:C[L],isFullWork:!0,replaceId:p});r.clearWorkShapeNodeCache(p),o=Ue(o,M),n.set(S,{...d,toolsType:q.Pencil,rect:M??d.rect,name:S,op:C[L]})}}}return{willNewNodes:n,willDeleteNodes:i,rect:o}}consume(e){const{data:r}=e,{op:n}=r;if(!n||n.length===0)return{type:le.None,...this.baseConsumeResult};const{thickness:i}=this.workOptions,{width:o,height:a}=ji.eraserSizes[i],c=Math.max(o,a)/this.worldScaling[0];return this.updateTempPoints(n,c),{type:le.None,...this.baseConsumeResult}}computEraserPointLines(e,r=60){const n=[];let i=0;const o=360-r;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<r||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.length===0&&n.push([e[0].XY,e[0].XY]),n}consumeAll(e){const{workerEngine:r}=e;if(this.replace(this.fullLayer,this.workId),!this.tmpPoints.length)return{type:le.None,...this.baseConsumeResult};const{thickness:n}=this.workOptions,{width:i,height:o}=ji.eraserSizes[n],a=Math.max(i,o)/this.worldScaling[0],{willDeleteNodes:c,willNewNodes:l,rect:u}=this.getChangeNodes(a,r);if(c.size===0&&l.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:u};const h=[];this.tmpPoints.map(f=>{h.push(f.x,f.y,a/2)});const d=At(h);return{...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,rect:u,ops:d,willNewNodes:l,willDeleteNodes:c}}clearTmpPoints(){this.tmpPoints.length=0}};E(ji,"eraserSizes",ad);let Oa=ji;const wye=new Set([q.Image,q.BackgroundSVG]),Cp={"shape.vertices":new Set([q.Polygon,q.Star]),"shape.innerVerticeStep":new Set([q.Star]),"shape.innerRatio":new Set([q.Star]),"shape.placement":new Set([q.SpeechBalloon])},Sye=new Set(["fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough"]),Tye=new Set(["strokeColor","thickness","strokeType"]),Cye=new Set(["fillColor"]),Iye=new Set(["zIndexLayer"]),bye=new Set([q.Pencil,q.LaserPen,q.Arrow,q.Straight]),Ip=new Set([q.Rectangle,q.Ellipse,q.Triangle,q.Rhombus,q.Polygon,q.Star,q.SpeechBalloon]),Eye=new Set([q.Pencil,q.Arrow,q.Straight,q.Rectangle,q.Ellipse,q.Star,q.Triangle,q.Rhombus,q.Polygon,q.SpeechBalloon]);function m0(s){return s!==void 0&&Eye.has(s)}const xye=new Set([q.Pencil]),Rye=new Set([q.LaserPen,q.Arrow,q.Straight,q.Rectangle,q.Ellipse,q.Star,q.Polygon,q.SpeechBalloon]);function y0(s){return s===Be.Normal||s===Be.Stroke||s===Be.Dotted||s===Be.LongDotted}function Ni(s,t){return s?Iye.has(t)?!0:t==="isLocked"?wye.has(s):Sye.has(t)?s===q.Text:t in Cp?Cp[t].has(s):Cye.has(t)?Ip.has(s):Tye.has(t)?bye.has(s)||Ip.has(s):!1:!1}function Aye(s){return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer","shape.vertices","shape.innerVerticeStep","shape.innerRatio","shape.placement"].filter(e=>Ni(s,e))}function Ms(s){var e,r,n,i;const t=[];return s.strokeColor!==void 0&&t.push("strokeColor"),s.fillColor!==void 0&&t.push("fillColor"),s.thickness!==void 0&&t.push("thickness"),s.strokeType!==void 0&&t.push("strokeType"),s.fontColor!==void 0&&t.push("fontColor"),s.fontBgColor!==void 0&&t.push("fontBgColor"),s.fontSize!==void 0&&t.push("fontSize"),s.bold!==void 0&&t.push("bold"),s.italic!==void 0&&t.push("italic"),s.underline!==void 0&&t.push("underline"),s.lineThrough!==void 0&&t.push("lineThrough"),s.isLocked!==void 0&&t.push("isLocked"),s.zIndexLayer!==void 0&&t.push("zIndexLayer"),((e=s.shape)==null?void 0:e.vertices)!==void 0&&t.push("shape.vertices"),((r=s.shape)==null?void 0:r.innerVerticeStep)!==void 0&&t.push("shape.innerVerticeStep"),((n=s.shape)==null?void 0:n.innerRatio)!==void 0&&t.push("shape.innerRatio"),((i=s.shape)==null?void 0:i.placement)!==void 0&&t.push("shape.placement"),t}function bp(s,t){return!s||t===void 0||!Ni(s,"strokeType")?!1:xye.has(s)?y0(t):Rye.has(s)?t===Be.Normal||t===Be.Dotted||t===Be.LongDotted:!1}function kye(s,t,e){const r=s-(e?1:2);if(!(r<1||r<=t))return{start:Math.max(t,0),end:r,committedIndex:r}}function jl(s){return s.toolsType===q.Image||s.toolsType===q.Text?"delete-on-done":s.isSelected?"blocked":m0(s.toolsType)?"vector":"blocked"}function Pye(s,t,e){return s.map(({x:r,y:n})=>[r*e[0]+t[0],n*e[1]+t[1]])}function Fl(s,t,e){if(!s.length)return!1;if(s.length===1)return Nu(s[0],e)<=t*t;for(let r=1;r<s.length;r++)if(Dye(s[r-1],s[r],e)<=t*t)return!0;return!1}function Nu(s,t){const e=Math.max(t.x-s[0],0,s[0]-(t.x+t.w)),r=Math.max(t.y-s[1],0,s[1]-(t.y+t.h));return e*e+r*r}function Dye(s,t,e){if(Lye(s,t,e))return 0;const r=e.x,n=e.y,i=e.x+e.w,o=e.y+e.h,a=[[[r,n],[i,n]],[[i,n],[i,o]],[[i,o],[r,o]],[[r,o],[r,n]]];let c=Math.min(Nu(s,e),Nu(t,e));for(const[l,u]of a)c=Math.min(c,Nye(s,t,l,u));return c}function Lye(s,t,e){let r=0,n=1;const i=t[0]-s[0],o=t[1]-s[1],a=[[-i,s[0]-e.x],[i,e.x+e.w-s[0]],[-o,s[1]-e.y],[o,e.y+e.h-s[1]]];for(const[c,l]of a){if(c===0){if(l<0)return!1;continue}const u=l/c;if(c<0?r=Math.max(r,u):n=Math.min(n,u),r>n)return!1}return!0}function Nye(s,t,e,r){const n=t[0]-s[0],i=t[1]-s[1],o=r[0]-e[0],a=r[1]-e[1],c=s[0]-e[0],l=s[1]-e[1],u=n*n+i*i,h=n*o+i*a,d=o*o+a*a,f=n*c+i*l,g=o*c+a*l,y=u*d-h*h;let T=y,x=y,C=y,L=y;y<Number.EPSILON?(T=0,C=1,x=g,L=d):(T=h*g-d*f,x=u*g-h*f,T<0?(T=0,x=g,L=d):T>C&&(T=C,x=g+h,L=d)),x<0?(x=0,-f<0?T=0:-f>u?T=C:(T=-f,C=u)):x>L&&(x=L,-f+h<0?T=0:-f+h>u?T=C:(T=-f+h,C=u));const S=Math.abs(T)<Number.EPSILON?0:T/C,p=Math.abs(x)<Number.EPSILON?0:x/L,m=c+S*n-p*o,M=l+S*i-p*a;return m*m+M*M}const Va=class Va extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.none);E(this,"toolsType",q.BitMapEraser);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"worldPosition");E(this,"worldScaling");E(this,"eraserRect");E(this,"eraserPolyline");E(this,"oldRect");E(this,"committedPointIndex",-1);E(this,"candidateWorkIds",new Set);E(this,"doingPointBatches",[]);E(this,"doingLines",new Map);E(this,"changedNodes",new Map);E(this,"deletedNodes",new Set);E(this,"changedRect");E(this,"lastSceneRevision",-1);E(this,"pendingDeleteIds",new Set);E(this,"hiddenRenderNodes",new Map);E(this,"fullLayerPreviewGroup");E(this,"disposeVNodeObserver");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling,this.startVNodeObservation()}combineConsume(e){var l;this.syncWorldTransform(),this.startVNodeObservation();const r=this.getDeltaPoints(!0),n=((l=this.vNodes)==null?void 0:l.getRevision())??0,i=n!==this.lastSceneRevision;let o=this.restoreNoLongerClearablePendingDeletes();const a=i?this.tmpPoints:r==null?void 0:r.points;if(a!=null&&a.length){const u=this.getEraserThickness();o=Ue(o,this.hideDeleteCandidatesForPoints(a,u)),this.collectVectorCandidateWorkIds(a,u)}if(this.lastSceneRevision=n,!r)return{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o};const c=this.getEraserThickness();return this.recordDoingPointBatch(r.points),o=Ue(o,this.appendFullLayerPreview(r.points,c)),this.committedPointIndex=r.committedIndex,this.changedRect=Ue(this.changedRect,o),{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o}}consumeService(){}consume(e){const{op:r}=e.data;return r!=null&&r.length?(this.syncWorldTransform(),this.updateTempPoints(r),{type:le.None,...this.baseConsumeResult}):{type:le.None,...this.baseConsumeResult}}async consumeAll(e){const{workerEngine:r}=e;if(this.syncWorldTransform(),this.clearFullLayerPreview(!1),!this.tmpPoints.length)return this.clearFullLayerPreview(!0),{type:le.None,...this.baseConsumeResult};const n=this.getEraserThickness(),i=new Map;try{this.recordFinalPointBatch(),this.getCandidateWorkIds().clear(),this.collectVectorCandidateWorkIds(this.tmpPoints,n),this.collectDeleteCandidatesForDone(this.tmpPoints,n);for(const[u,h]of this.snapshotDoneCandidates())i.set(u,h);this.collectDoneVectorChanges(n),this.commitDoingFaces(),this.renderChangedNodes(r,this.workOptions.removeOnDone!==!1),this.commitPendingDeletions(r);const o=new Set(this.deletedNodes),a=new Map(this.changedNodes),c=this.changedRect;if(o.size===0&&a.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:c,eraseTxnCommitStatus:"applied"};const l=[];for(const u of this.tmpPoints)l.push(u.x,u.y,n/2);return{...this.baseConsumeResult,type:le.FullWork,dataType:Re.Local,rect:c,ops:At(l),willUpdateNodes:a,willDeleteNodes:o,eraseTxnCommitStatus:"applied"}}catch(o){let a=!0;try{a=!await this.restoreFailedDoneCandidates(i,r)}catch(l){console.warn("[BitMapEraser] Done recovery threw after commit error:",l)}const c=this.changedRect;try{this.clearFullLayerPreview(!0)}catch(l){console.warn("[BitMapEraser] Done preview cleanup failed:",l)}return this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),console.warn("[BitMapEraser] Done commit aborted:",o),{type:le.FullWork,...this.baseConsumeResult,rect:c,willUpdateNodes:new Map,willDeleteNodes:new Set,eraseTxnRecoveryRequired:a,eraseTxnCommitStatus:"failed"}}}clearTmpPoints(){this.clearFullLayerPreview(!0),this.stopVNodeObservation(),this.tmpPoints.length=0,this.committedPointIndex=-1,this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),this.changedRect=void 0,this.lastSceneRevision=-1}shouldRevalidateVNodeRevision(){return this.tmpPoints.length>0}syncWorldTransform(){this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}getEraserThickness(){const{thickness:e}=this.workOptions,{width:r,height:n}=Va.eraserSizes[e];return Math.round(Math.max(r,n)/this.worldScaling[0])}updateTempPoints(e){p0(this.tmpPoints,e,{protectedIndex:this.committedPointIndex})}getDeltaPoints(e){const r=kye(this.tmpPoints.length,this.committedPointIndex,e);if(r)return{points:this.tmpPoints.slice(r.start,r.end+1),committedIndex:r.committedIndex}}recordFinalPointBatch(){const e=this.getDeltaPoints(!0);if(e){this.recordDoingPointBatch(e.points),this.committedPointIndex=e.committedIndex;return}!this.getDoingPointBatches().length&&this.tmpPoints.length&&(this.recordDoingPointBatch(this.tmpPoints),this.committedPointIndex=this.tmpPoints.length-1)}recordDoingPointBatch(e){e.length&&this.getDoingPointBatches().push(e.map(r=>new Pe(r.x,r.y,r.z)))}getDoingPointBatches(){return this.doingPointBatches||(this.doingPointBatches=[]),this.doingPointBatches}getDoingLines(){return this.doingLines||(this.doingLines=new Map),this.doingLines}getCandidateWorkIds(){return this.candidateWorkIds||(this.candidateWorkIds=new Set),this.candidateWorkIds}appendFullLayerPreview(e,r){if(!e.length)return;const n=this.computEraserPointLines(e).map(c=>{const l=c.flatMap(([u,h])=>[u,h]);return Dr(this.computEraserPoints(l,r),!0)}).filter(Boolean);if(!n.length)return;const i=new $t({pos:[0,0],d:n.join(" "),fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});let o=!1;i.addEventListener("beforerender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.ZERO,l.ZERO,l.ZERO,l.ZERO):(l.save(),o=!0,l.globalCompositeOperation="destination-out")}),i.addEventListener("afterrender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA):o&&(o=!1,l.restore())}),this.getFullLayerPreviewGroup().append(i);let a=it(e,r);return a=Qs(a,this.worldPosition),z0(a,this.worldScaling,this.worldPosition)}getFullLayerPreviewGroup(){if(this.fullLayerPreviewGroup)return this.fullLayerPreviewGroup;const e=new ht({name:this.workId,pos:[0,0],zIndex:9999});return this.fullLayer.append(e),this.fullLayerPreviewGroup=e,e}getTrackRect(e,r){let n=e[0][0],i=e[0][1],o=n,a=i;for(let c=1;c<e.length;c++){const[l,u]=e[c];n=Math.min(n,l),i=Math.min(i,u),o=Math.max(o,l),a=Math.max(a,u)}return{x:n-r,y:i-r,w:o-n+r*2,h:a-i+r*2}}getScreenTrack(e,r){const n=Pye(e,this.worldPosition,this.worldScaling),i=r*Math.max(Math.abs(this.worldScaling[0]),Math.abs(this.worldScaling[1]))/2;return{screenPoints:n,radius:i,rect:this.getTrackRect(n,i+1)}}collectVectorCandidateWorkIds(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)!this.vNodes.isCanClearWorkId(o)||jl(a)!=="vector"||!Fl(n.screenPoints,n.radius,a.rect)||this.getCandidateWorkIds().add(o)}hideDeleteCandidatesForPoints(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r);let i;const{nodeRange:o}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[a,c]of o)this.pendingDeleteIds.has(a)||!this.vNodes.isCanClearWorkId(a)||jl(c)!=="delete-on-done"||!Fl(n.screenPoints,n.radius,c.rect)||(this.pendingDeleteIds.add(a),this.hideRenderNodesForId(a),i=Ue(i,c.rect),this.changedRect=Ue(this.changedRect,c.rect));return i}collectDeleteCandidatesForDone(e,r){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,r),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)this.vNodes.isCanClearWorkId(o)&&jl(a)==="delete-on-done"&&Fl(n.screenPoints,n.radius,a.rect)&&(this.pendingDeleteIds.add(o),this.changedRect=Ue(this.changedRect,a.rect))}hideRenderNodesForId(e){const r=this.hiddenRenderNodes.get(e)||[],n=new Set(r.map(({node:i})=>i));for(const i of this.fullLayer.getElementsByName(e))n.has(i)||r.push({node:i,display:i.getAttribute("display")}),i.setAttribute("display","none");this.hiddenRenderNodes.set(e,r)}restoreNoLongerClearablePendingDeletes(){var r,n,i;let e;for(const o of[...this.pendingDeleteIds])if(!((r=this.vNodes)!=null&&r.isCanClearWorkId(o))){for(const{node:a,display:c}of this.hiddenRenderNodes.get(o)||[])a.setAttribute("display",c);e=Ue(e,(i=(n=this.vNodes)==null?void 0:n.get(o))==null?void 0:i.rect),this.hiddenRenderNodes.delete(o),this.pendingDeleteIds.delete(o)}return e}snapshotDoneCandidates(){var r;const e=new Map;for(const n of[...this.getCandidateWorkIds(),...this.pendingDeleteIds]){if(e.has(n)||!((r=this.vNodes)!=null&&r.isCanClearWorkId(n)))continue;const i=this.vNodes.get(n);i&&e.set(n,dt(i))}return e}collectDoneVectorChanges(e){if(!this.vNodes)return;const r=this.worldPosition;for(const n of this.getCandidateWorkIds()){if(!this.vNodes.isCanClearWorkId(n))continue;const i=this.vNodes.get(n);if(!(i!=null&&i.opt)||!m0(i.toolsType))continue;let o=Qs(i.rect,[-r[0],-r[1]]);o={x:o.x/this.worldScaling[0],y:o.y/this.worldScaling[1],w:o.w/this.worldScaling[0],h:o.h/this.worldScaling[1]};const a=[o.x,o.y,o.x+o.w,o.y+o.h],c=[];for(const l of this.getDoingPointBatches())for(const u of this.computEraserPointLines(l,120)){const h=[];Xu.polyline(u,a,h);for(const d of h){const f=this.normalizeClippedLine(d);f.length&&c.push(f)}}c.length&&(this.getDoingLines().set(n,[{workId:this.workId,op:c,thickness:e}]),this.changedNodes.set(n,i),this.changedRect=Ue(this.changedRect,i.rect))}}normalizeClippedLine(e){const r=[];for(let n=0;n<e.length&&!(isNaN(e[n][0])||isNaN(e[n][1]));n++){const i=e[n].map(o=>Math.round(o*100)/100);if(n>0){const o=e[n-1].map(a=>Math.round(a*100)/100);if(nn(i,o))continue}r.push(...i)}return r}commitDoingFaces(){var e;for(const[r,n]of this.getDoingLines()){if(!((e=this.vNodes)!=null&&e.isCanClearWorkId(r))){this.changedNodes.delete(r);continue}const i=this.vNodes.get(r);if(!(i!=null&&i.opt)||!n.length){this.changedNodes.delete(r);continue}const o=Lpe(i.opt,n),a=ka({...i.opt,...o});delete a.eraserlines,i.opt=a,this.changedNodes.set(r,i),this.vNodes.setInfo(r,{opt:a})}}renderChangedNodes(e,r){if(e)for(const[n,i]of[...this.changedNodes]){const o=e.createWorkShapeNode({workId:n,toolsType:i.toolsType,toolsOpt:i.opt});o==null||o.setWorkId(n),o==null||o.setEraserDeleteConfirmation(r);const a=o==null?void 0:o.consumeService({op:i.op,isFullWork:!0,replaceId:n});this.changedRect=Ue(this.changedRect,a),r&&(o!=null&&o.isDelete)&&(e.removeNode(n),this.deletedNodes.add(n),this.changedNodes.delete(n))}}commitPendingDeletions(e){var r;for(const n of this.pendingDeleteIds){if(!((r=this.vNodes)!=null&&r.isCanClearWorkId(n))){for(const{node:o,display:a}of this.hiddenRenderNodes.get(n)||[])o.setAttribute("display",a);continue}const i=this.vNodes.get(n);i&&(this.changedRect=Ue(this.changedRect,i.rect)),e==null||e.removeNode(n),this.deletedNodes.add(n),this.changedNodes.delete(n)}this.pendingDeleteIds.clear(),this.hiddenRenderNodes.clear(),this.stopVNodeObservation()}clearFullLayerPreview(e){var r;if((r=this.fullLayerPreviewGroup)==null||r.remove(),this.fullLayerPreviewGroup=void 0,!!e){for(const n of this.hiddenRenderNodes.values())for(const{node:i,display:o}of n)i.setAttribute("display",o);this.hiddenRenderNodes.clear(),this.pendingDeleteIds.clear()}}startVNodeObservation(){!this.vNodes||this.disposeVNodeObserver||typeof this.vNodes.observeRevision!="function"||(this.disposeVNodeObserver=this.vNodes.observeRevision((e,r,n)=>{n&&(e==="add"||e==="update")&&this.pendingDeleteIds.has(n)&&this.hideRenderNodesForId(n)}))}stopVNodeObservation(){var e;(e=this.disposeVNodeObserver)==null||e.call(this),this.disposeVNodeObserver=void 0}async restoreFailedDoneCandidates(e,r){var i;let n=!0;for(const[o,a]of e)try{const c=dt(a);if((i=this.vNodes)==null||i.setInfo(o,c),!r)continue;const l=r.createWorkShapeNode({workId:o,toolsType:c.toolsType,toolsOpt:c.opt});if(!l){n=!1;continue}l.setWorkId(o),c.toolsType===q.Image?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,worker:r})||(n=!1):c.toolsType===q.Text?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,boxRect:r.thread.getSceneRect()})||(n=!1):l.consumeService({op:c.op,isFullWork:!0,replaceId:o})}catch(c){n=!1,console.warn(`[BitMapEraser] Failed to restore ${o} after Done error:`,c)}return n}computEraserPointLines(e,r=60){const n=[];let i=0;const o=360-r;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<r||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.push([e[0].XY,e[0].XY]),n}};E(Va,"eraserSizes",ad);let za=Va;class Gs extends xe{constructor(e){super(e);E(this,"canRotate",!1);E(this,"scaleType",Ye.all);E(this,"toolsType",q.BackgroundSVG);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Gs.getScaleType(this.workOptions)}static normalizeStorageData(e){return xe.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:r,workId:n,replaceId:i}=e,{centerX:o,centerY:a,width:c,height:l,rotate:u,zIndex:h}=this.workOptions,d=(h||0)-100,f=new ht({anchor:[.5,.5],pos:[o,a],name:n,size:[c,l],zIndex:d,rotate:u}),g=new Vs({normalize:!0,pos:[0,0],width:c,height:l});f.appendChild(g),this.replace(r,i||n,f);const y=f.getBoundingClientRect();if(y)return{x:Math.floor(y.x-xe.SafeBorderPadding),y:Math.floor(y.y-xe.SafeBorderPadding),w:Math.floor(y.width+xe.SafeBorderPadding*2),h:Math.floor(y.height+xe.SafeBorderPadding*2)}}consumeService(e){var o;const{replaceId:r}=e,n=this.workId,i=this.draw({workId:n,layer:this.fullLayer,replaceId:r});return(o=this.vNodes)==null||o.setInfo(n,{rect:i,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&xe.getCenterPos(i,this.fullLayer)}),i}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:r,rotate:n}=e;return r!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndexForBackgroundSVG:f}=n,g=o&&dt(o)||i.get(r.name);if(!g)return;const y=r.parent;if(y){if(yt(f)){const T=(f||0)-100;r.setAttribute("zIndex",T),g.opt.zIndex=f}if(_n(d)&&(g.opt.locked=d),c&&l&&u&&a){const{centerX:T,centerY:x,width:C,height:L,uniformScale:S}=g.opt,p=S!==!1?[u[0],u[0]]:u,m=[T,x],M=[T,x];Lc(M,l,p,a);const v=[M[0]-m[0],M[1]-m[1]];g.centerPos=[g.centerPos[0]+v[0],g.centerPos[1]+v[1]],g.opt.width=Math.round(C*p[0]),g.opt.height=Math.round(L*p[1]),g.opt.centerX=M[0],g.opt.centerY=M[1]}else if(a)g.opt.centerX=g.opt.centerX+a[0],g.opt.centerY=g.opt.centerY+a[1],g.centerPos=[g.centerPos[0]+a[0],g.centerPos[1]+a[1]];else if(yt(h))if(g.opt.rotate=h,g.scaleType=Gs.getScaleType(g.opt),o){const T=gd(g.rect,h);g.rect=T}else{const T=xe.getRectFromLayer(y,r.name);g.rect=T||g.rect}return g&&i.setInfo(r.name,g),g==null?void 0:g.rect}}}function Dc(s){switch(s){case q.Arrow:return i0;case q.Pencil:return e0;case q.Straight:return u0;case q.Ellipse:return s0;case q.Polygon:case q.Triangle:return c0;case q.Star:case q.Rhombus:return a0;case q.Rectangle:return o0;case q.SpeechBalloon:return l0;case q.Text:return Ys;case q.LaserPen:return t0;case q.Eraser:return Da;case q.PencilEraser:return Oa;case q.BitMapEraser:return za;case q.Selector:return Na;case q.Image:return Hs;case q.BackgroundSVG:return Gs}}async function Ep(s){const t=s.toolsType;if(t===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Dc(t);return e?e.normalizeStorageData(s):{status:"unrecoverable",reason:`unsupported-tool:${t}`}}function Oye(s){const t=s.toolsType;if(t===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Dc(t);return e?t===q.Text?Ys.normalizeStorageDataSync(s):[q.Pencil,q.Arrow,q.Straight,q.Ellipse,q.Rectangle,q.Polygon,q.Triangle,q.Star,q.Rhombus,q.SpeechBalloon].includes(t)?xe.normalizeDrawableStorageDataSync(s):e.normalizeStorageDataSync(s):{status:"unrecoverable",reason:`unsupported-tool:${t}`}}function hd(s,t){const{toolsType:e,...r}=s;switch(e){case q.Arrow:return new i0(r);case q.Pencil:return new e0(r);case q.Straight:return new u0(r);case q.Ellipse:return new s0(r);case q.Polygon:case q.Triangle:return new c0(r);case q.Star:case q.Rhombus:return new a0(r);case q.Rectangle:return new o0(r);case q.SpeechBalloon:return new l0(r);case q.Text:return new Ys(r);case q.LaserPen:return new t0(r);case q.Eraser:return new Da(r,t);case q.BitMapEraser:return new za(r);case q.PencilEraser:return new Oa(r);case q.Selector:return r.vNodes?new Na({...r,vNodes:r.vNodes,drawLayer:r.fullLayer}):void 0;case q.Image:return new Hs(r);case q.BackgroundSVG:return new Gs({...r,toolsOpt:r.toolsOpt});default:return}}function v0(s){const t=[],e=["PATH","SPRITE","POLYLINE","RECT","ELLIPSE","LABEL","SPRITESVG"];for(const r of s){if(r.tagName==="GROUP"&&r.children.length){const n=v0(r.children);t.push(...n)}r.tagName&&e.includes(r.tagName)&&t.push(r)}return t}class Ou{constructor(t){E(this,"_map");E(this,"_observers",new Set);this._map=new Map(t)}notifyObservers(t,e,r){for(const n of this._observers)n(t,e,r)}observe(t){this._observers.add(t)}unobserve(t){this._observers.delete(t)}get(t){return this._map.get(t)}set(t,e,r=!0){const n=this._map.has(t)?"update":"add";return this._map.set(t,e),r&&this.notifyObservers(n,t,e),this}has(t){return this._map.has(t)}delete(t,e=!0){const r=this._map.get(t),n=this._map.delete(t);return e&&r&&this.notifyObservers("delete",t,r),n}clear(t=!0){const e=this._map.keys();if(this._map.clear(),t)for(const r of e)this.notifyObservers("clear",r,void 0)}get size(){return this._map.size}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}forEach(t,e){this._map.forEach(t,e)}}class M0{constructor(t,e){E(this,"viewId");E(this,"scene");E(this,"fullLayer");E(this,"curNodeMap");E(this,"targetNodeMap",[]);E(this,"highLevelIds");E(this,"canClearUids");E(this,"localUid");E(this,"spatialIndex",new dM);E(this,"spatialEntries",new Map);E(this,"verifySpatialIndex",!1);E(this,"revision",0);E(this,"revisionObservers",new Set);this.viewId=t,this.scene=e,this.curNodeMap=new Ou}init(t){this.fullLayer=t}get(t){return this.curNodeMap.get(t)}getRevision(){return this.revision}observeRevision(t){return this.revisionObservers.add(t),()=>this.revisionObservers.delete(t)}setLocalUid(t){this.localUid=t}getLocalUid(){return this.localUid}setSpatialIndexVerification(t){this.verifySpatialIndex=t}setCanClearUids(t){this.canClearUids=t,this.revision++,this.notifyRevisionObservers("permission")}getCanClearUids(){return this.canClearUids}getCanEraserNodes(t,e){const r=new Map;for(const[n,i]of t.entries())i.toolsType!==q.BackgroundSVG&&(i.toolsType===q.Image&&i.opt.type===Sn.Image&&(i.opt.locked||e&&e.disableEraseImage)||i.toolsType===q.Text&&(i.opt.workState===de.Doing||i.opt.workState===de.Start||e&&e.disableEraseText)||this.isCanClearWorkId(n)&&r.set(n,i));return r}getNodesByType(t){const e=new Map;return this.curNodeMap.forEach((r,n)=>{r.toolsType===t&&e.set(n,r)}),e}gethasEraserNodes(){const t=new Map;return this.curNodeMap.forEach((e,r)=>{var n;((n=e.opt.eraserlines)!=null&&n.length||e.opt.eraserFaces)&&t.set(r,e)}),t}hasRenderNodes(){return this.curNodeMap.size>0}has(t){return this.curNodeMap.has(t)}setInfo(t,e){const r=this.curNodeMap.has(t)?"update":"add",n=this.curNodeMap.get(t)||{name:t,rect:e.rect};e.rect&&(n.rect=dt(e.rect)),e.op&&O0e(e.op)&&(n.op=dt(e.op)),e.canRotate&&(n.canRotate=e.canRotate),e.scaleType&&(n.scaleType=e.scaleType),e.opt&&(n.opt=dt(e.opt)),e.toolsType&&(n.toolsType=e.toolsType),e.centerPos&&(n.centerPos=dt(e.centerPos)),_n(e.isSelected)&&(n.isSelected=e.isSelected),n.rect?(this.curNodeMap.set(t,n),this.updateSpatialEntry(t,n.rect),this.revision++,this.notifyRevisionObservers(r,t)):this.delete(t)}selected(t){this.setInfo(t,{isSelected:!0})}unSelected(t){this.setInfo(t,{isSelected:!1})}delete(t){const e=this.curNodeMap.delete(t),r=this.spatialEntries.get(t);r&&(this.spatialIndex.remove(r),this.spatialEntries.delete(t)),e&&(this.revision++,this.notifyRevisionObservers("delete",t))}clear(){const t=this.curNodeMap.size>0;this.curNodeMap.clear(),this.spatialIndex.clear(),this.spatialEntries.clear(),this.targetNodeMap.length=0,t&&(this.revision++,this.notifyRevisionObservers("clear"))}notifyRevisionObservers(t,e){for(const r of this.revisionObservers)r(t,this.revision,e)}getRectIntersectRange(t,e=!0,r=!0){const n=this.spatialIndex.search(this.toSpatialBox(t)).map(c=>c.key);let i=n;if(this.verifySpatialIndex){const c=this.getLinearIntersectKeys(t),l=new Set(n);(c.length!==n.length||c.some(u=>!l.has(u)))&&(console.warn(`[VNodeManager] spatial index mismatch in ${this.viewId}; using linear result`),i=c)}let o;const a=new Map;for(const c of i){const l=this.curNodeMap.get(c);!l||!ja(t,l.rect)||e&&(l.toolsType===q.Image&&l.opt.locked||l.toolsType===q.BackgroundSVG&&l.opt.locked!==!1)||r&&l.toolsType===q.Text&&(l.opt.workState===de.Doing||l.opt.workState===de.Start)||(o=Ue(o,l.rect),a.set(c,l))}return{rectRange:o,nodeRange:a}}getNodeRectFormShape(t,e){const r=Dc(e.toolsType);return this.fullLayer&&(r==null?void 0:r.getRectFromLayer(this.fullLayer,t))}updateNodeRect(t){const e=this.curNodeMap.get(t);if(e){const r=this.getNodeRectFormShape(t,e);if(!r){this.delete(t);return}e.rect=r,this.curNodeMap.set(t,e),this.updateSpatialEntry(t,r)}}updateHighLevelNodesRect(t){this.highLevelIds=t;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var t;for(const e of this.curNodeMap.keys())(t=this.highLevelIds)!=null&&t.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}updateSpatialEntry(t,e){const r=this.spatialEntries.get(t);r&&this.spatialIndex.remove(r);const n={key:t,...this.toSpatialBox(e)};this.spatialEntries.set(t,n),this.spatialIndex.insert(n)}toSpatialBox(t){return{minX:t.x,minY:t.y,maxX:t.x+t.w,maxY:t.y+t.h}}getLinearIntersectKeys(t){const e=[];for(const[r,n]of this.curNodeMap.entries())ja(t,n.rect)&&e.push(r);return e}setTargetAssignKeys(t){const e=new Ou;for(const r of t){const n=this.curNodeMap.get(r);n&&e.set(r,dt(n))}return this.targetNodeMap.push(dt(e)),this.targetNodeMap.length-1}setTarget(){const t=this.curNodeMap.keys();return this.setTargetAssignKeys(Array.from(t))}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(t){return this.targetNodeMap[t]}deleteTarget(t){this.targetNodeMap.length=t}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(t){return t.split(Bt).length===1}isCanClearWorkId(t){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(rge(this.canClearUids)){const e=t.split(Bt);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}const w0=(s,t,e,r)=>{const n=new URL(s);return n.searchParams.set("width",t.toString()),n.searchParams.set("height",e.toString()),r&&n.searchParams.set("color",r),n.toString()},zye=async(s,t)=>{const{src:e,isgl:r,isCache:n,useImageBitmap:i=!0}=s;if(typeof Image=="function"){const o=new Image;return typeof e=="string"&&(o.crossOrigin="anonymous"),new Promise(a=>{o.onload=async function(){if(!i){a(o);return}if(typeof createImageBitmap!="function"){a(void 0);return}try{const c=r?await createImageBitmap(o,{imageOrientation:"flipY"}):await createImageBitmap(o);a(c)}catch{a(void 0)}},o.onerror=function(){a(void 0)},o.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(o=>o.blob()).then(o=>(r?createImageBitmap(o,{imageOrientation:"flipY"}):createImageBitmap(o)).then(c=>c))};function S0(s,t,e){if(t&&typeof t=="object"&&typeof t.code=="string"&&typeof t.business=="string"&&typeof t.message=="string")return t;if(!(s!=="failed"&&s!=="timeout"))return{code:s==="timeout"?"RENDERER_BUSINESS_TIMEOUT":"RENDERER_BUSINESS_ERROR",business:"updateCamera",message:`Camera task returned ${s} ACK without cameraTaskError`,stage:"camera-ack",workerType:e}}class T0 extends Error{constructor(e,r){super(`updateCamera timed out after ${r}ms`);E(this,"code","RENDERER_BUSINESS_TIMEOUT");E(this,"business","updateCamera");E(this,"cameraTaskId");E(this,"elapsedMs");E(this,"stage");E(this,"blockingWorks");this.name="CameraUpdateTimeoutError",this.cameraTaskId=e.cameraTaskId,this.elapsedMs=r,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}class Bye extends Error{constructor(e){super("updateCamera aborted because the owning renderer was destroyed");E(this,"code","RENDERER_BUSINESS_ABORTED");E(this,"business","updateCamera");E(this,"cameraTaskId");E(this,"stage");E(this,"blockingWorks");this.name="CameraUpdateAbortedError",this.cameraTaskId=e.cameraTaskId,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}async function C0(s,t,e=sm){const r=Date.now();let n,i;const o=new Promise(g=>{n=g}),a={cameraTaskId:s,startedAt:r,deadlineAt:r+e,abortPromise:o,aborted:!1,stage:"update-camera"},c=()=>{a.aborted||(a.aborted=!0,n==null||n(),i==null||i(l||new Bye(a)))};a.abort=c;let l,u;const h=Promise.resolve().then(()=>t(a));h.catch(()=>{});const d=new Promise((g,y)=>{u=setTimeout(()=>{l=new T0(a,e),c(),y(l)},e)}),f=new Promise((g,y)=>{i=y});try{await Promise.race([h,d,f])}catch(g){throw c(),l||g}finally{u!==void 0&&clearTimeout(u)}}async function I0(s,t,e){return s.stage=e,await Promise.race([t,s.abortPromise]),!s.aborted}function jye(s){return s instanceof T0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function Kr(s){if(s instanceof Error||s&&typeof s=="object"&&"message"in s&&typeof s.message=="string")return s.message;if(typeof s=="string")return s;try{const t=JSON.stringify(s);if(t!==void 0)return t}catch{}return String(s)}class b0 extends Error{constructor(e){const r=e.timeoutMs??Ga;super(`${e.business} timed out at ${e.stage} after ${r}ms`);E(this,"code","RENDERER_BUSINESS_TIMEOUT");E(this,"business");E(this,"stage");E(this,"elapsedMs");E(this,"reported",!1);this.name="RendererBusinessTimeoutError",this.business=e.business,this.stage=e.stage,this.elapsedMs=r}}class dd extends Error{constructor(e,r){super(Kr(e));E(this,"code","RENDERER_BUSINESS_ERROR");E(this,"business");E(this,"stage");E(this,"cause");E(this,"reported",!1);this.name="RendererBusinessError",this.business=r.business,this.stage=r.stage,this.cause=e}}async function zu(s,t){const e=t.timeoutMs??Ga;let r;const n=new Promise((i,o)=>{r=setTimeout(()=>{o(new b0({...t,timeoutMs:e}))},e)});try{return await Promise.race([Promise.resolve(s),n])}finally{r!==void 0&&clearTimeout(r)}}function E0(s){return s instanceof b0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function Ba(s){return E0(s)||s instanceof dd||s instanceof Error&&s.code==="RENDERER_BUSINESS_ERROR"}function Bu(s,t){return Ba(s)?s:new dd(s,t)}function x0(s,t,e){const r=E0(s),n=Ba(s),i=n?s.business:t.business,o=n?s.stage:t.stage,a=r?s.elapsedMs:0,c=Kr(s);return`[rendererBusiness] ${r?"timeout":"failed"} viewId=${e.viewId} renderer=${e.renderer} business=${i} stage=${o} elapsedMs=${a} error=${c}`}class R0{constructor(){E(this,"timer")}get pending(){return this.timer!==void 0}schedule(t,e){this.timer===void 0&&(this.timer=setTimeout(()=>{this.timer=void 0,t()},Math.max(0,e)))}cancel(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const Fye=30,Uye=1e3/Fye;function A0(s){return Math.min(Math.max(0,s),Uye)}const Ul=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();class Wye{constructor(t=1e3/30){E(this,"timer");E(this,"pending");E(this,"resolvePending");E(this,"activeWorkId");E(this,"generation",0);E(this,"lastReleaseTime",0);this.interval=t}wait(t){if(this.activeWorkId!==t&&(this.finish(),this.activeWorkId=t),this.pending)return this.pending;const e=this.generation,r=Math.max(0,this.lastReleaseTime+this.interval-Ul());return r===0?(this.lastReleaseTime=Ul(),Promise.resolve(!0)):(this.pending=new Promise(n=>{this.resolvePending=n,this.timer=setTimeout(()=>{if(this.timer=void 0,this.pending=void 0,this.resolvePending=void 0,e!==this.generation||this.activeWorkId!==t){n(!1);return}this.lastReleaseTime=Ul(),n(!0)},r)}),this.pending)}finish(t){if(t!==void 0&&this.activeWorkId!==t)return;this.generation++,this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.pending=void 0;const e=this.resolvePending;this.resolvePending=void 0,this.activeWorkId=void 0,this.lastReleaseTime=0,e==null||e(!1)}cancel(){this.finish()}}function Vye(s,t){return s?t||"webgl2":"2d"}function $ye(s){var r;if(!s)return{};const t={};try{t.contextLost=((r=s.isContextLost)==null?void 0:r.call(s))||!1}catch{}let e;try{e=s.getParameter(s.CURRENT_PROGRAM),t.currentProgram=!!e}catch{}if(e){try{t.programLinked=!!s.getProgramParameter(e,s.LINK_STATUS)}catch{}try{t.programHasUniforms=!!e.uniforms}catch{}}try{const n=s.getError();n!==s.NO_ERROR&&(t.glError=n)}catch{}return t}function Yye(s){var t,e;if(s)return s.gl||(t=s.renderer)!=null&&t.glRenderer?(e=s.renderer)!=null&&e.isWebGL2?"webgl2":"webgl":"2d"}function Gye(s,t){const e=s==null?void 0:s.canvas;if(!(s!=null&&s.gl)||!(e!=null&&e.addEventListener))return()=>{};let r=!0;const n=i=>{var o;r&&(r=!1,(o=i.preventDefault)==null||o.call(i),t($ye(s.gl),i))};return e.addEventListener("webglcontextlost",n),e.addEventListener("contextlost",n),()=>{r=!1,e.removeEventListener("webglcontextlost",n),e.removeEventListener("contextlost",n)}}async function k0(s,t){await(s==null?void 0:s.flush()),await Promise.all(t.map(e=>e.prepareRender))}class Hye{constructor(t){E(this,"scheduledHandle");E(this,"activeTask");E(this,"flushTask");E(this,"pending",!1);E(this,"destroyed",!1);E(this,"failure");this.options=t}request(t=!1){if(!this.destroyed){if(this.pending=!0,t){this.cancelScheduledTask(),!this.activeTask&&!this.flushTask&&this.startTask();return}!this.activeTask&&!this.flushTask&&this.scheduleTask()}}flush(){if(this.destroyed)return Promise.reject(new Error("Cannot flush a destroyed service render scheduler"));if(!this.flushTask){const t=this.flushPending();this.flushTask=t;const e=()=>{this.flushTask===t&&(this.flushTask=void 0,this.pending&&!this.destroyed&&this.failure===void 0&&this.scheduleTask())};t.then(e,e)}return this.flushTask}destroy(){this.destroyed||(this.destroyed=!0,this.pending=!1,this.failure=void 0,this.cancelScheduledTask())}scheduleTask(){this.destroyed||this.scheduledHandle!==void 0||this.activeTask||this.flushTask||!this.pending||(this.scheduledHandle=this.options.schedule(()=>{this.scheduledHandle=void 0,this.startTask()}))}cancelScheduledTask(){this.scheduledHandle!==void 0&&(this.options.cancel(this.scheduledHandle),this.scheduledHandle=void 0)}startTask(){if(this.destroyed||this.activeTask||!this.pending)return this.activeTask;this.pending=!1;const t=Promise.resolve().then(()=>this.options.run()).catch(e=>{var r,n;if(!this.destroyed){this.failure===void 0&&(this.failure=e);try{(n=(r=this.options).onError)==null||n.call(r,e)}catch{}}}).then(()=>{this.activeTask===t&&(this.activeTask=void 0,this.pending&&!this.destroyed&&!this.flushTask&&this.failure===void 0&&this.scheduleTask())});return this.activeTask=t,t}async flushPending(){for(this.cancelScheduledTask();!this.destroyed;){if(this.activeTask&&await this.activeTask,this.failure!==void 0)throw this.failure;if(!this.pending)return;const t=this.startTask();t&&await t}}}class Qye{constructor(t,e,r){E(this,"viewId");E(this,"viewGeneration");E(this,"type");E(this,"scene");E(this,"fullLayer");E(this,"vNodes");E(this,"dpr");E(this,"contextType");E(this,"opt");E(this,"cameraOpt");E(this,"isSafari",!1);E(this,"combinePostMsg",new Set);E(this,"workerTaskId");E(this,"protectedTask");E(this,"delayPostDoneWaiter");E(this,"activePostDoneWaiter");E(this,"isCombiningPost",!1);E(this,"combinePostTaskSequence",0);E(this,"activeCombinePostTaskId");E(this,"combinePostTransfersByTask",new Map);E(this,"cacheImages",new Map);E(this,"imageResolveMap",new Map);E(this,"taskUpdateCameraId");E(this,"taskUpdateCameraResolve");E(this,"debounceUpdateCameraId");E(this,"activeCameraSettledRender");E(this,"activeCameraTaskContext");E(this,"destroyed",!1);E(this,"contextLossCleanup");var n,i;if(this.viewId=t,this.viewGeneration=e.viewGeneration,this.type=r,this.opt=e,this.dpr=e.dpr,this.contextType=this.getSupportContextType(r,(n=e==null?void 0:e.offscreenCanvasOpt)==null?void 0:n.contextType),!this.contextType)throw new Error("Sorry, your browser doesn't support canvas context type 2d or webgl");try{this.scene=this.createScene(e),this.createRenderLayer(this.scene,e)}catch(o){if(this.contextType!=="2d")this.contextType="2d",(i=this.scene)==null||i.disconnect(),this.scene=this.createScene(e),this.createRenderLayer(this.scene,e);else throw o}this.registerContextLossListener(),this.vNodes=new M0(t,this.scene)}getActualContextType(){var t;return Yye((t=this.fullLayer)==null?void 0:t.parent)}registerContextLossListener(){var e;const t=(e=this.fullLayer)==null?void 0:e.parent;this.contextLossCleanup=Gye(t,r=>{if(this.destroyed)return;const n=this.getActualContextType(),i=`[WorkThreadEngine] WebGL context lost; viewId=${this.viewId}; generation=${this.viewGeneration??"unknown"}; context=${n||"unknown"}`;try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:i,reportError:"WebGL context lost",reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"context-lost",reportContextType:n,reportContextLost:!0,reportGlError:r.glError,reportCurrentProgram:r.currentProgram,reportProgramLinked:r.programLinked,reportProgramHasUniforms:r.programHasUniforms}]})}catch(o){console.error(i,o)}})}removeContextLossListener(){var t;(t=this.contextLossCleanup)==null||t.call(this),this.contextLossCleanup=void 0}createRenderLayer(t,e){const r=He.bufferSize.full,n=He.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",t,{...e.layerOpt,bufferSize:this.viewId===Fe?r:n*2})}async updateDpr(t){this.dpr=t,this.scene.displayRatio=t}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,r]of this.cacheImages.entries())if(e===t&&r.imageBitmap)return r.imageBitmap}deleteCachedImagesByWorkId(t,e){for(const[r,n]of this.cacheImages.entries())e&&r===e||n.workId===t&&(this.closeImageBitmap(n.imageBitmap),this.cacheImages.delete(r))}clearCacheImages(){this.cacheImages.forEach(t=>this.closeImageBitmap(t.imageBitmap)),this.cacheImages.clear()}closeImageBitmap(t){if(t)try{t.close()}catch{}}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t,resolve:e},r)=>{t&&clearTimeout(t),e==null||e(r)}),this.imageResolveMap.clear()}setIsSafari(t){this.isSafari=t}async on(t){var u,h,d;if(this.destroyed){try{(u=t.imageBitmap)==null||u.close()}catch{}return}const{msgType:e,toolsType:r,opt:n,imageSrc:i,imageBitmap:o,workId:a,dpr:c,requestId:l}=t;switch(e){case le.UpdateDpr:{yt(c)&&await this.updateDpr(c);break}case le.UpdateCamera:{try{await C0(t.cameraTaskId,async f=>{this.activeCameraTaskContext=f;try{await this.updateCamera(t,f)}finally{this.activeCameraTaskContext===f&&(this.activeCameraTaskContext=void 0)}})}catch(f){throw this.cameraOpt=void 0,this.cancelCameraSettledRender(),f}break}case le.Destroy:{this.destroy();break}case le.Clear:{await this.clearAll();break}case le.ServiceSyncCommit:{const f=this,g=[(h=this.fullLayer)==null?void 0:h.parent,(d=f.topLayer)==null?void 0:d.parent].filter(Boolean);try{await zu((async()=>{await k0(this.serviceWork,g)})(),{business:"service-sync-commit",stage:"flush-and-prepare-render",timeoutMs:5e3})}catch(y){const T=Bu(y,{business:"service-sync-commit",stage:"flush-and-prepare-render"});throw this.reportRendererBusinessError(T,{business:"service-sync-commit",stage:"flush-and-prepare-render"}),T}if(this.destroyed)break;await this.post({sp:[{type:le.ServiceSyncCommit,viewId:this.viewId,viewGeneration:this.viewGeneration,scenePath:t.scenePath,serviceSyncId:t.serviceSyncId,serviceRevision:t.serviceRevision}]});break}case le.UpdateTools:{if(r&&n){const f={toolsType:r,toolsOpt:n,combineUnitTime:t.combineUnitTime,maxCombineEraserTime:t.maxCombineEraserTime};this.localWork.setToolsOpt(f)}break}case le.GetImageBitMap:{if(i&&o&&a){const f=a.toString(),g=this.imageResolveMap.get(i);if(!g||g.requestId!==l){this.closeImageBitmap(o);break}this.cacheImages.set(i,{imageBitmap:o,workId:f});const{resolve:y,timer:T}=g;T&&clearTimeout(T),y&&y(i),this.deleteCachedImagesByWorkId(f,i)}break}}}getIconSize(t,e,r){const n=t*r,i=e*r;return n<=50||i<=50?[50,50]:n<=100||i<=100?[100,100]:n<=200||i<=200?[200,200]:n<=400||i<=400?[400,400]:n<=800||i<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:r,workId:n,isSubWorker:i,requestId:o}=t;if(e===q.Image&&r&&n){const a=n.toString(),{src:c,type:l,width:u,height:h,strokeColor:d}=r;if(!c||!l||!u||!h)return;let f=c;if(l===Sn.Iconify){const[L,S]=this.getIconSize(u,h,this.dpr);f=w0(c,L,S,d)}if(this.cacheImages.has(f)){const L=this.getCachedImages(f);if(L)return L}const y=this.imageResolveMap.get(f);if(y)return await y.promise,this.getCachedImages(f);let T;const x=new Promise(L=>{T=L}),C={resolve:T,timer:void 0,requestId:o,promise:x};return C.timer=setTimeout(()=>{this.imageResolveMap.get(f)===C&&T(f)},5e3),this.imageResolveMap.set(f,C),this._post({sp:[{imageSrc:f,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:i,requestId:o,type:le.GetImageBitMap}]}),await x,this.imageResolveMap.get(f)===C&&this.imageResolveMap.delete(f),this.getCachedImages(f)}}createLocalWork(t){const{workId:e,opt:r,toolsType:n}=t;e&&r&&(!this.localWork.getToolsOpt()&&n&&this.setToolsOpt({toolsType:n,toolsOpt:r}),this.setWorkOpt({workId:e,toolsOpt:r}))}updateScene(t,e,r){t.attr({...e});const{width:n,height:i}=e;t.container.width=n,t.container.height=i,t.width=n,t.height=i,this.updateLayer({width:n,height:i},r)}updateLayer(t,e){const{width:r,height:n}=t,i=e||this.fullLayer;i&&(i.parent.setAttribute("width",r),i.parent.setAttribute("height",n),i.setAttribute("size",[r,n]),i.setAttribute("pos",[r*.5,n*.5]))}getSupportContextType(t,e){return Vye(t===ju.Full&&this.viewId===Fe,e)}createScene(t){const{offscreenCanvasOpt:e}=t,{width:r,height:n}=e,i=new OffscreenCanvas(r,n);e.contextType&&delete e.contextType;const o=new vc({container:i,displayRatio:this.dpr,depth:!1,desynchronized:!0,failIfMajorPerformanceCaveat:!0,...e,contextType:this.contextType,id:this.viewId});return o.setAttribute("id",this.viewId),o}createLayer(t,e,r,n){const i=`offscreen-${t}`,{width:o,height:a}=r;n&&(r.offscreen=!0,r.canvas=n);const c=e.layer(i,r),l=new ht({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:t});return c.append(l),l}async clearAll(){var t;this.fullLayer&&(this.fullLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),ur(this.fullLayer,this.fullLayer.parent)),this.cancelCameraBlockingWait(),this.cancelCameraSettledRender(),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.destroy(),(t=this.serviceWork)==null||t.clearAll()}setToolsOpt(t){this.localWork.setToolsOpt(t)}setWorkOpt(t){const{workId:e,toolsOpt:r}=t;e&&r&&this.localWork.setWorkOptions(e.toString(),r)}destroy(){var r,n;if(this.destroyed)return;this.destroyed=!0,(n=(r=this.activeCameraTaskContext)==null?void 0:r.abort)==null||n.call(r),this.activeCameraTaskContext=void 0;const t=[],e=(i,o)=>{try{o()}catch(a){t.push(`${i}: ${a instanceof Error?a.message:String(a)}`)}};e("context-loss-listener",()=>this.removeContextLossListener()),e("camera-blocking-wait",()=>this.cancelCameraBlockingWait()),e("camera-render",()=>this.cancelCameraSettledRender()),e("worker-task",()=>{this.workerTaskId!==void 0&&(clearTimeout(this.workerTaskId),this.workerTaskId=void 0)}),e("post-waiters",()=>{var i,o;(i=this.delayPostDoneWaiter)==null||i.resolve(),(o=this.activePostDoneWaiter)==null||o.resolve(),this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=void 0}),e("post-transfers",()=>{this.activeCombinePostTaskId=void 0,this.combinePostTaskSequence++;for(const i of[...this.combinePostTransfersByTask.keys()])this.releaseCombinePostTransfers(i);this.combinePostMsg.clear()}),e("v-nodes",()=>this.vNodes.clear()),e("full-layer",()=>{const i=this.fullLayer.parent;i&&hr(this.fullLayer,i),this.fullLayer.remove()}),e("image-cache",()=>this.clearCacheImages()),e("image-waiters",()=>this.clearImageResolveMap()),e("scene",()=>this.scene.remove()),e("local-work",()=>this.localWork.destroy()),e("service-work",()=>{var i;return(i=this.serviceWork)==null?void 0:i.destroy()}),t.length&&console.error(`[WorkThreadEngine]: destroy completed with cleanup errors viewId=${this.viewId}: ${t.join("; ")}`)}cancelCameraSettledRender(){var e;this.debounceUpdateCameraId!==void 0&&(clearTimeout(this.debounceUpdateCameraId),this.debounceUpdateCameraId=void 0);const t=this.activeCameraSettledRender;t&&(t.cancelled=!0,(e=t.renderLayers)==null||e.forEach(r=>r.cancelPendingRender()),this.activeCameraSettledRender=void 0)}retargetCameraSettledRender(t){var r;if(!yt(t))return!1;const e=this.activeCameraSettledRender;return!e||e.cancelled||(r=e.context)!=null&&r.aborted?!1:(e.cameraTaskId=t,!0)}hasCameraSettledRender(){return!!this.activeCameraSettledRender}cancelCameraBlockingWait(){this.taskUpdateCameraId!==void 0&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0);const t=this.taskUpdateCameraResolve;this.taskUpdateCameraResolve=void 0,t==null||t(!1)}startCameraSettledRender(t,e){const r={cancelled:!1,cameraTaskId:t,context:e};return this.activeCameraSettledRender=r,{isActive:()=>!this.destroyed&&!r.cancelled&&this.activeCameraSettledRender===r&&!(e!=null&&e.aborted),getCameraTaskId:()=>r.cameraTaskId,setRenderLayers:n=>{r.renderLayers=n},finish:()=>{r.renderLayers=void 0,this.activeCameraSettledRender===r&&(this.activeCameraSettledRender=void 0)}}}post(t,e={}){var n;if(this.destroyed)return(n=t.render)==null||n.forEach(i=>this.closeImageBitmap(i.imageBitmap)),Promise.resolve();this.combinePostMsg.add(t);const r=this.type===ju.Full?this.getOrCreatePostDoneWaiter(e.reportFailureAtRendererBoundary!==!1):void 0;return this.runBatchPostData(),r?(r.promise.catch(()=>{}),r.promise):Promise.resolve()}getOrCreatePostDoneWaiter(t){if(this.delayPostDoneWaiter)t||(this.delayPostDoneWaiter.reportFailureAtRendererBoundary=!1);else{let e,r;const n=new Promise((i,o)=>{e=i,r=o});this.delayPostDoneWaiter={promise:n,resolve:e,reject:r,reportFailureAtRendererBoundary:t}}return this.delayPostDoneWaiter}runBatchPostData(){this.destroyed||!this.workerTaskId&&!this.isCombiningPost&&(this.workerTaskId=setTimeout(()=>{this.workerTaskId=void 0;const t=this.delayPostDoneWaiter;this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=t,this.isCombiningPost=!0;const e=++this.combinePostTaskSequence;this.activeCombinePostTaskId=e,this.combinePostTransfersByTask.set(e,new Set),(async()=>{let r=!1,n;try{await this.waitForRendererBusiness(this.combinePost(e),{business:"combine-post",stage:"flush"})}catch(i){r=!0;const o=Bu(i,{business:"combine-post",stage:"flush"});n=o,(t==null?void 0:t.reportFailureAtRendererBoundary)!==!1&&this.reportRendererBusinessError(o,{business:"combine-post",stage:"flush"})}finally{this.releaseCombinePostTransfers(e),this.activePostDoneWaiter===t&&(this.activePostDoneWaiter=void 0),this.activeCombinePostTaskId===e&&(this.activeCombinePostTaskId=void 0),this.isCombiningPost=!1,this.combinePostMsg.size&&this.runBatchPostData()}r?t==null||t.reject(n):t==null||t.resolve()})()},16))}waitForRendererBusiness(t,e){return zu(t,e)}reportRendererBusinessError(t,e,r=!1){if(Ba(t)&&t.reported)return;const n=x0(t,e,{viewId:this.viewId,renderer:this.type});Ba(t)&&(t.reported=!0);try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:n,reportErrorCode:r?"RENDERER_RUNTIME_ERROR":void 0,reportStage:e.stage,reportError:t instanceof Error?t.message:String(t)}]})}catch(i){console.error(n,i)}}isCombinePostTaskActive(t){return this.activeCombinePostTaskId===t}trackCombinePostTransfer(t,e){const r=this.combinePostTransfersByTask.get(t);return!r||!this.isCombinePostTaskActive(t)?(this.closeCombinePostTransfers([e]),!1):(r.add(e),!0)}commitCombinePostTransfers(t){this.combinePostTransfersByTask.delete(t)}releaseCombinePostTransfers(t){const e=this.combinePostTransfersByTask.get(t);e&&(this.combinePostTransfersByTask.delete(t),this.closeCombinePostTransfers([...e]))}closeCombinePostTransfers(t){for(const e of t||[]){const r=e.close;if(typeof r=="function")try{r.call(e)}catch{}}}transferLayerToImageBitmap(t){const e=this.getLayer(t),r=e==null?void 0:e.parent;if(!(r instanceof Jn))throw new Error(`render Layer is unavailable: ${String(t)}`);return r.transferToImageBitmap()}combinePostData(){var l,u;const t=this.combinePostMsg;this.combinePostMsg=new Set;const e=[],r=[];let n,i,o,a;const c=new Set;for(const h of t.values()){if((l=h.render)!=null&&l.length)for(const d of h.render){let f=!1;if(d.workId&&c.add(d.workId),d.viewId||(d.viewId=this.viewId),d.viewGeneration===void 0&&(d.viewGeneration=this.viewGeneration),d.isClearAll&&(d.rect=this.getSceneRect(),d.isClear=!0,delete d.isClearAll),d.drawCanvas){const g=this.getLayer(d.drawCanvas);if(!g||!(g.parent instanceof Jn))continue;if(g.parent.render(),d.isDrawAll){const y=this.getSceneRect();d.rect=y,delete d.isDrawAll}}for(const g of e)if(d.viewId===g.viewId&&d.eraseTxnId===g.eraseTxnId){d.isClear&&g.clearCanvas&&g.isClear&&g.clearCanvas===d.clearCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0),g.drawCanvas&&g.drawCanvas===d.drawCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0);continue}f||(d.isClear&&!d.drawCanvas?e.unshift(d):e.push(d))}if((u=h.sp)!=null&&u.length)for(const d of h.sp){const f={...d,viewId:d.viewId||this.viewId,viewGeneration:d.viewGeneration??this.viewGeneration};let g=!1;for(const y of r)if(nn(f,y)){g=!0;break}g||r.push(f)}yt(h.fullWorkerDrawCount)&&(n=h.fullWorkerDrawCount),yt(h.subWorkerDrawCount)&&(i=h.subWorkerDrawCount),yt(h.consumeCount)&&(o=h.consumeCount,a=h.consumeWorkId)}return{render:e,sp:r,fullWorkerDrawCount:n,subWorkerDrawCount:i,consumeCount:o,consumeWorkId:a,workIds:c,viewId:this.viewId,viewGeneration:this.viewGeneration}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}}class P0{constructor(t){E(this,"viewId");E(this,"vNodes");E(this,"thread");E(this,"fullLayer");E(this,"drawLayer");E(this,"_post");E(this,"tmpOpt");E(this,"workShapes",new Map);E(this,"drawCount",0);E(this,"consumeCount",0);E(this,"syncUnitTime",He.syncOpt.interval);E(this,"combineUnitTime",He.bezier.combineUnitTime);E(this,"maxCombineEraserTime",He.pencilEraser.maxCombineTime);E(this,"eraserBatchScheduler",new R0);E(this,"drawAckBackpressure",new Wye);this.thread=t.thread,this.viewId=t.viewId,this.vNodes=t.vNodes,this.fullLayer=t.fullLayer,this.drawLayer=t.drawLayer,this._post=this.thread.post.bind(t.thread)}get eraserBatchDelay(){return A0(this.maxCombineEraserTime)}setmaxCombineEraserTime(t){this.maxCombineEraserTime=t}setCombineUnitTime(t){this.combineUnitTime=t}setSyncUnitTime(t){this.syncUnitTime=t}destroy(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel(),this.workShapes.forEach(t=>t.clearTmpPoints()),this.workShapes.clear()}getWorkShapes(){return this.workShapes}getWorkShape(t){return this.workShapes.get(t)}createWorkShape(t,e){if(t&&this.tmpOpt){const r={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...r,workId:t});n&&this.workShapes.set(t,n)}}setWorkOptions(t,e){const r=this.getWorkShape(t);r||this.createWorkShape(t,e),r==null||r.setWorkOptions(e)}createWorkShapeNode(t){var e;return hd({...t,vNodes:this.vNodes,fullLayer:this.fullLayer,drawLayer:this.drawLayer},(e=this.thread)==null?void 0:e.serviceWork)}setToolsOpt(t){var e,r,n;((e=this.tmpOpt)==null?void 0:e.toolsType)!==t.toolsType&&(r=this.tmpOpt)!=null&&r.toolsType&&this.clearAllWorkShapesCache(),this.tmpOpt=t,(n=t.toolsOpt)!=null&&n.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime),t.combineUnitTime&&(this.combineUnitTime=t.combineUnitTime),t.maxCombineEraserTime&&(this.maxCombineEraserTime=t.maxCombineEraserTime)}getToolsOpt(){return this.tmpOpt}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}clearAllWorkShapesCache(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel();for(const[t,e]of this.workShapes)t!==Ne&&(e.clearTmpPoints(),this.workShapes.delete(t))}setFullWork(t){const{workId:e,opt:r,toolsType:n}=t;if(e&&r&&n){const i=e.toString();let o;return e&&this.workShapes.has(i)?(o=this.workShapes.get(i),(o==null?void 0:o.toolsType)!==n?(o==null||o.clearTmpPoints(),this.workShapes.delete(i),o=void 0):o==null||o.setWorkOptions(r)):o=this.createWorkShapeNode({toolsOpt:r,toolsType:n,workId:i}),o||(o=this.createWorkShapeNode({toolsOpt:r,toolsType:n,workId:i})),o?(this.workShapes.set(i,o),o):void 0}}}function qye(s){return s}var D0=qye;function Zye(s,t,e){switch(e.length){case 0:return s.call(t);case 1:return s.call(t,e[0]);case 2:return s.call(t,e[0],e[1]);case 3:return s.call(t,e[0],e[1],e[2])}return s.apply(t,e)}var Kye=Zye,Xye=Kye,xp=Math.max;function Jye(s,t,e){return t=xp(t===void 0?s.length-1:t,0),function(){for(var r=arguments,n=-1,i=xp(r.length-t,0),o=Array(i);++n<i;)o[n]=r[t+n];n=-1;for(var a=Array(t+1);++n<t;)a[n]=r[n];return a[t]=e(o),Xye(s,this,a)}}var _ye=Jye;function eve(s){return function(){return s}}var tve=eve,rve=tve,Rp=Tv,nve=D0,ive=Rp?function(s,t){return Rp(s,"toString",{configurable:!0,enumerable:!1,value:rve(t),writable:!0})}:nve,sve=ive,ove=800,ave=16,cve=Date.now;function lve(s){var t=0,e=0;return function(){var r=cve(),n=ave-(r-e);if(e=r,n>0){if(++t>=ove)return arguments[0]}else t=0;return s.apply(void 0,arguments)}}var uve=lve,hve=sve,dve=uve,fve=dve(hve),gve=fve,pve=D0,mve=_ye,yve=gve;function vve(s,t){return yve(mve(s,t,pve),s+"")}var Mve=vve;function wve(s,t,e,r){for(var n=s.length,i=e+(r?1:-1);r?i--:++i<n;)if(t(s[i],i,s))return i;return-1}var Sve=wve;function Tve(s){return s!==s}var Cve=Tve;function Ive(s,t,e){for(var r=e-1,n=s.length;++r<n;)if(s[r]===t)return r;return-1}var bve=Ive,Eve=Sve,xve=Cve,Rve=bve;function Ave(s,t,e){return t===t?Rve(s,t,e):Eve(s,xve,e)}var kve=Ave,Pve=kve;function Dve(s,t){var e=s==null?0:s.length;return!!e&&Pve(s,t,0)>-1}var L0=Dve;function Lve(s,t,e){for(var r=-1,n=s==null?0:s.length;++r<n;)if(e(t,s[r]))return!0;return!1}var N0=Lve;function Nve(s,t){for(var e=-1,r=s==null?0:s.length,n=Array(r);++e<r;)n[e]=t(s[e],e,s);return n}var Ove=Nve,zve=cd,Bve=L0,jve=N0,Fve=Ove,Uve=Ec,Wve=ld,Vve=200;function $ve(s,t,e,r){var n=-1,i=Bve,o=!0,a=s.length,c=[],l=t.length;if(!a)return c;e&&(t=Fve(t,Uve(e))),r?(i=jve,o=!1):t.length>=Vve&&(i=Wve,o=!1,t=new zve(t));e:for(;++n<a;){var u=s[n],h=e==null?u:e(u);if(u=r||u!==0?u:0,o&&h===h){for(var d=l;d--;)if(t[d]===h)continue e;c.push(u)}else i(t,h,r)||c.push(u)}return c}var Yve=$ve,Ap=lo,Gve=Ev,Hve=uo,kp=Ap?Ap.isConcatSpreadable:void 0;function Qve(s){return Hve(s)||Gve(s)||!!(kp&&s&&s[kp])}var qve=Qve,Zve=ed,Kve=qve;function O0(s,t,e,r,n){var i=-1,o=s.length;for(e||(e=Kve),n||(n=[]);++i<o;){var a=s[i];t>0&&e(a)?t>1?O0(a,t-1,e,r,n):Zve(n,a):r||(n[n.length]=a)}return n}var Xve=O0;function Jve(){}var _ve=Jve,Wl=Bv,e0e=_ve,t0e=ud,r0e=1/0,n0e=Wl&&1/t0e(new Wl([,-0]))[1]==r0e?function(s){return new Wl(s)}:e0e,i0e=n0e,s0e=cd,o0e=L0,a0e=N0,c0e=ld,l0e=i0e,u0e=ud,h0e=200;function d0e(s,t,e){var r=-1,n=o0e,i=s.length,o=!0,a=[],c=a;if(e)o=!1,n=a0e;else if(i>=h0e){var l=t?null:l0e(s);if(l)return u0e(l);o=!1,n=c0e,c=new s0e}else c=t?[]:a;e:for(;++r<i;){var u=s[r],h=t?t(u):u;if(u=e||u!==0?u:0,o&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue e;t&&c.push(h),a.push(u)}else n(c,h,e)||(c!==a&&c.push(h),a.push(u))}return a}var f0e=d0e,g0e=Yve,p0e=Xve,Pp=f0e;function m0e(s,t,e){var r=s.length;if(r<2)return r?Pp(s[0]):[];for(var n=-1,i=Array(r);++n<r;)for(var o=s[n],a=-1;++a<r;)a!=n&&(i[n]=g0e(i[n]||o,s[a],t,e));return Pp(p0e(i,1),t,e)}var y0e=m0e,v0e=Kh,M0e=Or;function w0e(s){return M0e(s)&&v0e(s)}var S0e=w0e,T0e=Pv,C0e=Mve,I0e=y0e,b0e=S0e;C0e(function(s){return I0e(T0e(s,b0e))});class E0e extends P0{constructor(e){super(e);E(this,"drawWorkActiveId")}runSelectWork(e){var n;const r=this.setFullWork(e);r&&((n=e.selectIds)!=null&&n.length)&&e.workId&&r.selectServiceNode(e.workId.toString(),{selectIds:e.selectIds},!1)}workShapesDone(){for(const e of this.workShapes.keys())this.clearWorkShapeNodeCache(e);ur(this.fullLayer,this.fullLayer.parent)}async consumeDraw(e){const{workId:r,fullWorkerDrawCount:n,postCount:i}=e,o=r==null?void 0:r.toString(),a=o&&this.workShapes.get(o);if(!a){o&&yt(i)&&await this.drawAckBackpressure.wait(o)&&await this._post({consumeCount:i,consumeWorkId:o});return}this.drawWorkActiveId&&this.drawWorkActiveId!==o&&(await this.consumeDrawAll({workId:this.drawWorkActiveId,viewId:this.viewId,msgType:le.DrawWork,dataType:Re.Local}),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&o!==Ne&&(this.drawWorkActiveId=o);const c=a.toolsType;yt(i)&&(this.consumeCount=i);const l=a.consume({data:e,drawCount:this.drawCount,isFullWork:!0,isSubWorker:!0,removeDrawCount:n});switch(c){case q.Selector:l&&(this.drawCount++,await this.drawSelector(l));break;case q.Ellipse:case q.Arrow:case q.Straight:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:{l&&(this.drawCount++,await this.drawShape(l));break}case q.Pencil:{l&&(this.drawCount++,await this.drawPencil(l,r==null?void 0:r.toString()));break}case q.PencilEraser:{l&&(this.drawCount++,await this.drawAckBackpressure.wait(o)&&await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:o}));break}case q.BitMapEraser:l&&this.drawCount++;break}}async consumeDrawAll(e){const{workId:r}=e;if(r){const n=r.toString();this.drawAckBackpressure.finish(n),this.drawWorkActiveId===n&&(this.drawWorkActiveId=void 0);const i=this.workShapes.get(n);if(!i)return;switch(i.toolsType){case q.Selector:this.drawCount=0,ur(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n),this._post({render:[{isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}]});break;case q.Arrow:case q.Straight:case q.Ellipse:case q.Pencil:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:case q.BitMapEraser:case q.PencilEraser:this.drawCount=0,ur(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n);break}}}async removeWork(e){const{workId:r}=e,n=r==null?void 0:r.toString();if(n){const i=this.removeNode(n);if(i){const o=[];o.push({rect:vn(i),clearCanvas:_e.Float,isClear:!0,viewId:this.viewId},{rect:vn(i),drawCanvas:_e.Float,viewId:this.viewId}),await this._post({render:o})}}}removeNode(e){const r=this.workShapes.has(e);let n;return r&&(this.fullLayer.getElementsByName(e).forEach(i=>{const o=i.getBoundingClientRect();n=Ue(n,{x:o.x-xe.SafeBorderPadding,y:o.y-xe.SafeBorderPadding,w:o.width+xe.SafeBorderPadding*2,h:o.height+xe.SafeBorderPadding*2}),i.remove(),hr(i,this.fullLayer.parent)}),n&&this.clearWorkShapeNodeCache(e)),n}async drawPencil(e,r){!r||!await this.drawAckBackpressure.wait(r)||await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:r,render:[{rect:e==null?void 0:e.rect,workId:r,drawCanvas:_e.Float,viewId:this.viewId}],sp:(e==null?void 0:e.op)&&[e]})}async drawShape(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&vn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&vn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}async drawSelector(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&vn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&vn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}}class x0e{constructor(t){E(this,"viewId");E(this,"vNodes");E(this,"topLayer");E(this,"thread");E(this,"post");E(this,"serviceWorkShapes",new Map);E(this,"localWorkShapes",new Map);E(this,"tmpOpt");E(this,"syncUnitTime",He.syncOpt.interval);E(this,"animationId");this.viewId=t.viewId,this.vNodes=t.vNodes,this.topLayer=t.topLayer,this.thread=t.thread,this.post=t.thread.post.bind(t.thread)}canUseTopLayer(t){return t===q.LaserPen}getWorkShape(t){return this.localWorkShapes.get(t)}createWorkShape(t,e){if(t&&this.tmpOpt){const r={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...r,workId:t});return n&&this.localWorkShapes.set(t,{node:n,toolsType:n.toolsType,workState:de.Start}),n}}setWorkOptions(t,e){var n;const r=(n=this.localWorkShapes.get(t))==null?void 0:n.node;r||this.createWorkShape(t,e),r==null||r.setWorkOptions(e)}createWorkShapeNode(t){const{toolsType:e}=t;if(e===q.LaserPen)return hd({...t,vNodes:this.vNodes,fullLayer:this.topLayer,drawLayer:this.topLayer})}clearAllWorkShapesCache(){this.localWorkShapes.forEach(t=>{var e;return(e=t.node)==null?void 0:e.clearTmpPoints()}),this.localWorkShapes.clear()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}consumeDraw(t){const{workId:e,dataType:r}=t;if(r===Re.Service)this.activeServiceWorkShape(t);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consume({data:t,isFullWork:!1,isSubWorker:!0});o.rect&&(i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=de.Doing,n&&this.localWorkShapes.set(n,i))}this.runAnimation()}consumeDrawAll(t){const{workId:e,dataType:r}=t;if(r===Re.Service)this.activeServiceWorkShape(t);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consumeAll({data:t});i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=de.Done,n&&this.localWorkShapes.set(n,i)}this.runAnimation()}destroy(){this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}setNodeKey(t,e,r,n){return e.toolsType=r,e.node=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:n}),e}activeServiceWorkShape(t){var d,f;const{workId:e,opt:r,toolsType:n,type:i,updateNodeOpt:o,ops:a,op:c}=t;if(!e)return;const l=e.toString(),u=(d=this.vNodes.get(l))==null?void 0:d.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(l))){let g={toolsType:n,animationWorkData:c||[],animationIndex:0,type:i,updateNodeOpt:o,ops:a,oldRect:u};n&&r&&(g=this.setNodeKey(l,g,n,r)),this.serviceWorkShapes.set(l,g)}const h=this.serviceWorkShapes.get(l);i&&(h.type=i),a&&(h.animationWorkData=Nn(a),h.ops=a),o&&(h.updateNodeOpt=o),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==l&&h.node.setWorkId(l),u&&(h.oldRect=u),n&&r?(h.toolsType!==n&&n&&r&&this.setNodeKey(l,h,n,r),h.node&&h.node.setWorkOptions(r)):n&&(h.toolsType=n)}computNextAnimationIndex(t,e){const r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}async animationDraw(){var o,a,c,l;this.animationId=void 0;let t=!1;const e=new Map,r=[],n=[],i=[];for(const[u,h]of this.serviceWorkShapes.entries())switch(h.toolsType){case q.LaserPen:{const f=this.computNextAnimationIndex(h,8),g=Math.max(0,h.animationIndex||0),y=(h.animationWorkData||[]).slice(g,f);if((h.animationIndex||0)<f){const T=(o=h.node)==null?void 0:o.consumeService({op:y,isFullWork:!1});h.totalRect=Ue(h.totalRect,T),h.animationIndex=f,y.length&&e.set(u,{cursorTool:uye(h.toolsType),workState:g===0?de.Start:f===((a=h.animationWorkData)==null?void 0:a.length)?de.Done:de.Doing,op:y.slice(-2)})}if(n.push({isClear:!0,rect:h.totalRect,clearCanvas:_e.TopFloat,viewId:this.viewId}),r.push({rect:h.totalRect,drawCanvas:_e.TopFloat,viewId:this.viewId}),h.isDel){(c=h.node)==null||c.clearTmpPoints(),this.serviceWorkShapes.delete(u);break}h.ops&&h.animationIndex===((l=h.animationWorkData)==null?void 0:l.length)&&!h.isDel&&(this.topLayer.getElementsByName(u.toString())[0]||(h.isDel=!0,this.serviceWorkShapes.set(u,h))),t=!0;break}}for(const[u,h]of this.localWorkShapes.entries()){const{result:d,toolsType:f,totalRect:g,isDel:y,workState:T}=h;switch(f){case q.LaserPen:{if(g&&(n.push({isClear:!0,rect:g,clearCanvas:_e.TopFloat,viewId:this.viewId}),r.push({rect:g,drawCanvas:_e.TopFloat,viewId:this.viewId})),y){h.node.clearTmpPoints(),this.localWorkShapes.delete(u),i.push({removeIds:[u.toString()],viewId:this.viewId,type:le.RemoveNode});break}d&&((d.op||d.ops)&&i.push(d),h.result=void 0),!this.topLayer.getElementsByName(u.toString())[0]&&T===de.Done&&(h.isDel=!0,this.localWorkShapes.set(u,h)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((u,h)=>{i.push({type:le.Cursor,uid:h.split(Bt)[0],op:u.op,workState:u.workState,cursorTool:u.cursorTool,viewId:this.viewId})}),(r.length||n.length||i.length)&&this.post({render:[...n,...r],sp:i})}runAnimation(){this.animationId||(this.animationId=setTimeout(()=>{this.animationId=void 0,this.animationDraw()},16))}}class R0e extends P0{constructor(e){super(e);E(this,"opt");E(this,"scene");E(this,"cameraOpt");E(this,"vNodes");this.opt=e,this.vNodes=void 0}reportRequestFailure(e,r,n,i){const o=n instanceof Error?n.message:String(n);try{this.thread._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.thread.viewGeneration,scenePath:r.scenePath,requestId:r.requestId,reportBusiness:e,reportStage:i,reportError:o,reportString:`[SnapshotWork] ${e} failed; stage=${i}; requestId=${r.requestId||"unknown"}; error=${o}`}]})}catch(a){console.error(`[SnapshotWork] ${e} failure report failed`,a)}}createSnapshotFullLayer(e,r){this.scene=this.opt.createScene(e),this.fullLayer=this.opt.createLayer("snapshotFullLayer",this.scene,r)}destroySnapshotFullLayer(){var e,r,n;ur(this.fullLayer,this.fullLayer.parent),(e=this.fullLayer)==null||e.disconnect(),(r=this.fullLayer)==null||r.remove(),(n=this.scene)==null||n.remove(),this.scene=void 0}updateScene(e){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");this.scene.attr({...e});const{width:r,height:n}=e;this.scene.width=r,this.scene.height=n,this.updateLayer({width:r,height:n})}updateLayer(e){if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");const{width:r,height:n}=e;this.fullLayer.parent.setAttribute("width",r),this.fullLayer.parent.setAttribute("height",n),this.fullLayer.setAttribute("size",[r,n]),this.fullLayer.setAttribute("pos",[r*.5,n*.5])}setCameraOpt(e){this.cameraOpt=e;const{scale:r,centerX:n,centerY:i,width:o,height:a}=e;if(!this.scene)throw new Error("SnapshotWork scene is not initialized");if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");(o!==this.scene.width||a!==this.scene.height)&&this.updateScene({width:o,height:a}),this.fullLayer.setAttribute("scale",[r,r]),this.fullLayer.setAttribute("translate",[-n,-i])}getOffscreen(){var r;return((r=this.fullLayer)==null?void 0:r.parent).canvas}getRectImageBitmap(e,r){const{rect:n}=e,i=this.thread.dpr,o=Math.floor(n.x*i),a=Math.floor(n.y*i),c=Math.floor(n.w*i),l=Math.floor(n.h*i);return createImageBitmap(this.getOffscreen(),o,a,c,l,r)}async getSnapshot(e){const{scenePath:r,scenes:n,cameraOpt:i,w:o,h:a,requestId:c}=e;try{if(!(r&&n&&i&&this.fullLayer))throw new Error("snapshot input is incomplete");this.setCameraOpt(i);for(const[u,h]of Object.entries(n))if(h!=null&&h.type)switch(h==null?void 0:h.type){case le.UpdateNode:case le.FullWork:{const{opt:d}=h,f={...h,opt:d,workId:u,msgType:le.FullWork,dataType:Re.Service,viewId:this.viewId,requestId:c};await this.runFullWork(f);break}default:break}let l;o&&a&&(l={resizeWidth:o,resizeHeight:a}),await this.getSnapshotRender({scenePath:r,options:l,requestId:c})}catch(l){this.reportRequestFailure("snapshot",e,l,"render")}}async runFullWork(e){var i;const r=this.setFullWork(e),n=e.ops&&Nn(e.ops);if(r){let o,a;const c=(i=r.getWorkId())==null?void 0:i.toString();return r.toolsType===q.BackgroundSVG?o=r.consumeService({isFullWork:!0,replaceId:c}):r.toolsType===q.Image?o=await r.consumeServiceAsync({isFullWork:!0,worker:this.thread,requestId:e.requestId}):r.toolsType===q.Text?o=await r.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(o=r.consumeService({op:n,isFullWork:!0,replaceId:c}),a=(e==null?void 0:e.updateNodeOpt)&&r.updataOptService(e.updateNodeOpt)),e.workId&&this.workShapes.delete(e.workId.toString()),Ue(o,a)}}getSceneRect(){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");const{width:e,height:r}=this.scene;return{x:0,y:0,w:Math.floor(e),h:Math.floor(r)}}async getSnapshotRender(e){var a;const{scenePath:r,options:n,requestId:i}=e;((a=this.fullLayer)==null?void 0:a.parent).render();const o=await this.getRectImageBitmap({rect:this.getSceneRect(),drawCanvas:_e.None},n);o&&(this.thread._post({sp:[{type:le.Snapshot,scenePath:r,imageBitmap:o,viewId:this.viewId,index:0,requestId:i}]},[o]),o.close())}async getBoundingRect(e){const{scenePath:r,scenes:n,cameraOpt:i,requestId:o}=e;try{if(!(r&&n&&i&&this.fullLayer))throw new Error("bounding-box input is incomplete");this.setCameraOpt(i);let a;for(const[c,l]of Object.entries(n))if(l!=null&&l.type)switch(l==null?void 0:l.type){case le.UpdateNode:case le.FullWork:{const u=await this.runFullWork({...l,workId:c,msgType:le.FullWork,dataType:Re.Service,viewId:this.viewId,requestId:o});a=Ue(a,u);break}default:break}a?this.thread._post({sp:[{type:le.BoundingBox,scenePath:r,rect:a,viewId:this.viewId,requestId:o}]}):this.thread._post({sp:[{type:le.BoundingBox,scenePath:r,rect:{x:0,y:0,w:0,h:0},viewId:this.viewId,viewGeneration:this.thread.viewGeneration,requestId:o}]})}catch(a){this.reportRequestFailure("bounding-box",e,a,"compute")}}}const A0e="WEBGL_PROGRAM_UNAVAILABLE";var ju=(s=>(s.Full="full",s.Sub="sub",s))(ju||{});function k0e(s,t){const e=s==null?void 0:s.canvas,r=t.width,n=t.height,i=e==null?void 0:e.width,o=e==null?void 0:e.height;if(!Number.isFinite(r)||!Number.isFinite(n)||r<=0||n<=0||typeof i!="number"||typeof o!="number"||!Number.isFinite(i)||!Number.isFinite(o)||i<=0||o<=0||r!==i||n!==o){try{t.close()}catch{}throw new Error(`FullLayer ImageBitmap size mismatch: bitmap=${r}x${n}; layer=${i??"unavailable"}x${o??"unavailable"}`)}}function P0e(s,t,e){const r=[],n=new Map;for(const i of s){if(!i.rect)continue;const o=W0e(dt(i.rect),t,e);if(!o)continue;i.rect=o;const a=r.push(i)-1;if(i.drawCanvas!==_e.Bg||o.w<=0||o.h<=0)continue;const l=n.get(i.drawCanvas)||{rect:o,lastIndex:a,workIds:new Set,eraseTxnIds:new Set};l.rect=Ue(l.rect,o),l.lastIndex=a;for(const u of i.renderWorkIds||[])l.workIds.add(u);i.workId!==void 0&&l.workIds.add(i.workId.toString());for(const u of i.renderEraseTxnIds||[])l.eraseTxnIds.add(u);i.eraseTxnId!==void 0&&l.eraseTxnIds.add(i.eraseTxnId),n.set(i.drawCanvas,l)}return r.filter((i,o)=>{if(i.drawCanvas!==_e.Bg)return!0;const a=n.get(i.drawCanvas);return!a||a.lastIndex!==o?!1:(i.rect=a.rect,i.renderWorkIds=a.workIds.size?[...a.workIds]:void 0,i.renderEraseTxnIds=a.eraseTxnIds.size?[...a.eraseTxnIds]:void 0,!0)})}class D0e extends Qye{constructor(e,r,n){super(e,r,"sub");E(this,"type","sub");E(this,"_post");E(this,"topLayer");E(this,"serviceWork");E(this,"localWork");E(this,"topLayerWork");E(this,"snapshotWork");E(this,"fullLayerFrameSequence",0);this._post=n;const i=He.bufferSize.sub;this.topLayer=r.isUseSimple?void 0:this.createLayer("topLayer",this.scene,{...r.layerOpt,bufferSize:i,contextType:"2d"});const o={thread:this,viewId:this.viewId,vNodes:this.vNodes,fullLayer:this.fullLayer,topLayer:this.topLayer,isUseSimple:r.isUseSimple};this.localWork=new E0e(o),r.isUseSimple||(this.topLayerWork=new x0e(o)),this.snapshotWork=new R0e({...o,createScene:this.createScene.bind(this),createLayer:this.createLayer.bind(this)}),this.vNodes.init(this.fullLayer)}async combinePost(e){var a,c,l;const{render:r,...n}=this.combinePostData();let i;if(r!=null&&r.length){const u=[];for(const h of P0e(r,this.scene,this.dpr))if(h.rect){if(h.drawCanvas&&h.rect&&h.rect.w>0&&h.rect.h>0)try{const d=h.drawCanvas===_e.Bg,f=d?(a=this.getLayer(h.drawCanvas))==null?void 0:a.parent:void 0,g=d?this.transferLayerToImageBitmap(h.drawCanvas):await this.getRectImageBitmap(h);if(d&&k0e(f,g),!this.trackCombinePostTransfer(e,g))return;h.imageBitmap=g,d&&(h.isFullFrameImageBitmap=!0,h.viewGeneration=this.viewGeneration,h.frameSequence=++this.fullLayerFrameSequence,h.taskId=e,h.rect=this.getSceneRect()),i||(i=[]),i.push(g)}catch(d){throw new dd(d,{business:"combine-post",stage:"transfer-layer-image-bitmap"})}u.push(h)}n.render=u}const o=(c=n.sp)==null?void 0:c.filter(u=>u.type!==le.None||u.isLockSentEventCursor||u.needUndoTicker||u.collectUndoTicker||u.eraseTxnPhase);o!=null&&o.length?n.sp=o.map(u=>({...u,viewId:u.viewId||this.viewId,viewGeneration:u.viewGeneration??this.viewGeneration})):delete n.sp,n.consumeCount===void 0&&delete n.consumeCount,n.subWorkerDrawCount===void 0&&delete n.subWorkerDrawCount,this.isCombinePostTaskActive(e)&&(o!=null&&o.length||n.consumeCount||n.subWorkerDrawCount||(l=n==null?void 0:n.render)!=null&&l.length)&&(this._post(n,i),this.commitCombinePostTransfers(e))}async on(e){var l,u;const{msgType:r,toolsType:n,opt:i,dataType:o,workState:a,isLockSentEventCursor:c}=e;switch(r){case le.UpdateTools:{if(n&&((l=this.topLayerWork)!=null&&l.canUseTopLayer(n))&&i){const h={toolsType:n,toolsOpt:i};this.topLayerWork.setToolsOpt(h);return}break}case le.CreateWork:{this.createLocalWork(e);return}case le.DrawWork:{a===de.Done&&o===Re.Local?(await this.consumeDrawAll(o,e),n===q.LaserPen&&c&&this.post({sp:[{type:le.None,isLockSentEventCursor:c}]})):await this.consumeDraw(o,e);return}case le.RemoveNode:{await this.removeNode(e);return}case le.FullWork:{n&&((u=this.topLayerWork)!=null&&u.canUseTopLayer(n))?await this.consumeDrawAll(o,e):o===Re.Local&&e.clearPreviewLocalWork&&e.workId&&await this.localWork.consumeDrawAll({...e,msgType:le.DrawWork,workState:de.Done});return}case le.Snapshot:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getSnapshot(e),this.snapshotWork.destroySnapshotFullLayer();return}case le.BoundingBox:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getBoundingRect(e),this.snapshotWork.destroySnapshotFullLayer();return}}await super.on(e)}createLocalWork(e){var o;const{workId:r,toolsType:n,opt:i}=e;if(n&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(n))&&r&&i){this.topLayerWork.getToolsOpt()||this.topLayerWork.setToolsOpt({toolsType:n,toolsOpt:i}),this.topLayerWork.setWorkOptions(r.toString(),i);return}n&&super.createLocalWork(e)}async removeNode(e){const{dataType:r}=e;r===Re.Local&&await this.localWork.removeWork(e)}getLayer(e){switch(e){case _e.TopFloat:return this.topLayer||this.fullLayer;default:return this.fullLayer}}getOffscreen(e){var n;return((n=this.getLayer(e))==null?void 0:n.parent).canvas}async consumeDraw(e,r){var o;const{workId:n,toolsType:i}=r;if(n){if(i&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(i))){e===Re.Local&&(this.topLayerWork.getWorkShape(n.toString())||this.createLocalWork(r)),this.topLayerWork.consumeDraw(r);return}i&&(this.localWork.getWorkShape(n.toString())||this.createLocalWork(r),await this.localWork.consumeDraw(r));return}}async consumeDrawAll(e,r){var a;const{workId:n,toolsType:i,dataType:o}=r;if(n){const c=n.toString();if(i&&((a=this.topLayerWork)!=null&&a.canUseTopLayer(i))){o===Re.Local&&(this.topLayerWork.getWorkShape(c)||this.createLocalWork(r)),this.topLayerWork.consumeDrawAll(r);return}i&&(this.localWork.getWorkShape(c)||super.createLocalWork(r),await this.localWork.consumeDrawAll(r));return}}async clearAll(){this.vNodes.clear(),super.clearAll(),this.topLayer&&(this.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),ur(this.topLayer,this.topLayer.parent)),await this.post({render:[{isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}],sp:[{type:le.Clear}]})}async getRectImageBitmap(e,r){const{rect:n,drawCanvas:i}=e,o=Math.floor(n.x*this.dpr),a=Math.floor(n.y*this.dpr),c=Math.max(1,Math.floor(n.w*this.dpr)),l=Math.max(1,Math.floor(n.h*this.dpr));return await createImageBitmap(this.getOffscreen(i),o,a,c,l,r)}updateLayer(e){const{width:r,height:n}=e;super.updateLayer(e),this.topLayer&&(this.topLayer.parent.setAttribute("width",r),this.topLayer.parent.setAttribute("height",n),this.topLayer.setAttribute("size",[r,n]),this.topLayer.setAttribute("pos",[r*.5,n*.5]))}async updateDpr(e){super.updateDpr(e);const r=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,n=!!this.localWork.getWorkShapes().size,i=[];n&&i.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),r&&i.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}),i.length&&await this.post({render:i})}async updateCamera(e,r){var o;if(r!=null&&r.aborted)return;const n=[],{cameraOpt:i}=e;if(i&&!nn(this.cameraOpt,i)){const a=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,c=!!this.localWork.getWorkShapes().size;if(c&&this.localWork.workShapesDone(),this.setCameraOpt(i),c&&n.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),a&&this.topLayerWork){n.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId});for(const[l,u]of this.topLayerWork.localWorkShapes.entries()||[])if(u.totalRect){let h;(o=this.topLayer)==null||o.getElementsByName(l.toString()).forEach(d=>{const f=d.getBoundingClientRect(),g=vn({x:f.x,y:f.y,w:f.width,h:f.height});h=Ue(h,g)}),u.totalRect=h,this.topLayerWork.localWorkShapes.set(l,u)}}if(n.length){const l=this.post({render:n});if(r&&!await I0(r,l,"update-camera"))return;r||await l}if(r!=null&&r.aborted)return}}setCameraOpt(e,r){var l,u;this.cameraOpt=e;const{scale:n,centerX:i,centerY:o,width:a,height:c}=e;(a!==this.scene.width||c!==this.scene.height)&&this.updateScene(this.scene,{width:a,height:c}),r?(r.setAttribute("scale",[n,n]),r.setAttribute("translate",[-i,-o])):(this.fullLayer.setAttribute("scale",[n,n]),this.fullLayer.setAttribute("translate",[-i,-o]),(l=this.topLayer)==null||l.setAttribute("scale",[n,n]),(u=this.topLayer)==null||u.setAttribute("translate",[-i,-o]))}}class Hs extends xe{constructor(e){super(e);E(this,"canRotate",!0);E(this,"scaleType",Ye.all);E(this,"toolsType",q.Image);E(this,"tmpPoints",[]);E(this,"workOptions");E(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Hs.getScaleType(this.workOptions)}static normalizeStorageData(e){return xe.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:r,workId:n,replaceId:i,imageBitmap:o}=e,{centerX:a,centerY:c,width:l,height:u,rotate:h,zIndex:d,eraserlines:f,eraserFaces:g,doingLines:y}=this.workOptions,T=new ht({anchor:[.5,.5],pos:[a,c],name:n,size:[l,u],zIndex:d,rotate:h}),x={anchor:[.5,.5],pos:[0,0],size:[l,u],texture:o};o||(x.bgcolor="rgba(0,0,0,0.3)");const C=new wc(x);T.append(C),(f||g||y)&&this.drawEraserlines({group:T,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:[a,c],layer:r}),this.replace(r,i||n,T);const L=T.getBoundingClientRect();if(L)return{x:Math.floor(L.x-xe.SafeBorderPadding),y:Math.floor(L.y-xe.SafeBorderPadding),w:Math.floor(L.width+xe.SafeBorderPadding*2),h:Math.floor(L.height+xe.SafeBorderPadding*2)}}consumeService(){}async consumeServiceAsync(e){var h,d,f,g;const{isFullWork:r,replaceId:n,worker:i,requestId:o}=e,{src:a,uuid:c}=this.workOptions,l=((h=this.workId)==null?void 0:h.toString())||c,u=r?this.fullLayer:this.drawLayer||this.fullLayer;if(a){const y=await i.loadImageBitMap({toolsType:this.toolsType,opt:this.workOptions,workId:l,requestId:o,isSubWorker:i instanceof D0e});if(y){const T=this.draw({workId:l,layer:u,replaceId:n,imageBitmap:y});return this.oldRect=l&&((f=(d=this.vNodes)==null?void 0:d.get(l))==null?void 0:f.rect)||void 0,(g=this.vNodes)==null||g.setInfo(l,{rect:T,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:T&&xe.getCenterPos(T,u)}),T}}}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:r,rotate:n}=e;return r!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:r,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndex:f,strokeColor:g}=n,y=o&&dt(o)||i.get(r.name);if(!y)return;const T=r.parent;if(T){if(g&&(y.opt.strokeColor=g),yt(f)&&(r.setAttribute("zIndex",f),y.opt.zIndex=f),_n(d)&&(y.opt.locked=d),c&&l&&u&&a){const{centerX:x,centerY:C,width:L,height:S,uniformScale:p}=y.opt,m=p!==!1?[u[0],u[0]]:u,M=[x,C],v=[x,C];Lc(v,l,m,a);const R=[v[0]-M[0],v[1]-M[1]];if(y.centerPos=[y.centerPos[0]+R[0],y.centerPos[1]+R[1]],y.opt.width=Math.round(L*m[0]),y.opt.height=Math.round(S*m[1]),y.opt.centerX=v[0],y.opt.centerY=v[1],y.opt.eraserlines)for(const b of y.opt.eraserlines){const{op:P,thickness:D}=b;b.thickness=Math.round(D*Math.max(u[0],u[1]));for(let z=0;z<P.length;z++)zs(P[z],l,u,a)}}else if(a){if(y.opt.centerX=y.opt.centerX+a[0],y.opt.centerY=y.opt.centerY+a[1],y.centerPos=[y.centerPos[0]+a[0],y.centerPos[1]+a[1]],y.opt.eraserlines)for(const x of y.opt.eraserlines){const{op:C}=x;for(let L=0;L<C.length;L++){const S=C[L].map((p,m)=>m%2?p+a[1]:p+a[0]);x.op[L]=S}}}else if(yt(h))if(y.opt.rotate=h,y.scaleType=Hs.getScaleType(y.opt),o){const x=gd(y.rect,h);y.rect=x}else{const x=xe.getRectFromLayer(T,r.name);y.rect=x||y.rect}return y&&i.setInfo(r.name,y),y==null?void 0:y.rect}}}function Ue(s,t){if(s&&t){const e=Math.min(s.x,t.x),r=Math.min(s.y,t.y),n=Math.max(s.x+s.w,t.x+t.w),i=Math.max(s.y+s.h,t.y+t.h),o=n-e,a=i-r;return{x:e,y:r,w:o,h:a}}return t||s}function fd(s,t){if(s&&t){const e=Math.min(s.originX,t.originX),r=Math.min(s.originY,t.originY),n=Math.max(s.originX+s.width,t.originX+t.width),i=Math.max(s.originY+s.height,t.originY+t.height),o=n-e,a=i-r;return{originX:e,originY:r,width:o,height:a}}return t||s}function it(s,t=0){const e={x:0,y:0,w:0,h:0};let r=1/0,n=1/0,i=-1/0,o=-1/0;return s.forEach(a=>{const[c,l]=a.XY;r=Math.min(r,c-t),n=Math.min(n,l-t),i=Math.max(i,c+t),o=Math.max(o,l+t)}),e.x=r,e.y=n,e.w=i-r,e.h=o-n,e}function ja(s,t){return!(s.x+s.w<t.x||s.x>t.x+t.w||s.y+s.h<t.y||s.y>t.y+t.h)}function vn(s,t=10){return{x:Math.floor(s.x-t),y:Math.floor(s.y-t),w:Math.ceil(s.w+t*2),h:Math.ceil(s.h+t*2)}}function Qs(s,t){return{x:s.x+t[0],y:s.y+t[1],w:s.w,h:s.h}}function L0e(s,t){const e=new fe(s.x,s.y),r=new fe(s.x+s.w,s.y),n=new fe(s.x+s.w,s.y+s.h),i=new fe(s.x,s.y+s.h),o=new fe(s.x+s.w/2,s.y+s.h/2),a=Math.PI*t/180,c=fe.RotWith(e,o,a),l=fe.RotWith(r,o,a),u=fe.RotWith(n,o,a),h=fe.RotWith(i,o,a);return[c,l,u,h]}function gd(s,t){const e=L0e(s,t);return it(e)}function z0(s,t,e){const r=new fe(s.x,s.y),n=new fe(s.x+s.w,s.y),i=new fe(s.x+s.w,s.y+s.h),o=new fe(s.x,s.y+s.h),a=new fe(e[0],e[1]),c=new fe(t[0],t[1]),l=fe.ScaleWOrigin(r,c,a),u=fe.ScaleWOrigin(n,c,a),h=fe.ScaleWOrigin(i,c,a),d=fe.ScaleWOrigin(o,c,a);return it([l,u,h,d])}function N0e(s,t,e){const r=new fe(t[0],t[1]);for(let n=0;n<s.length;n+=3){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,r,o);s[n]=a.x,s[n+1]=a.y}}function Dp(s,t,e){const r=new fe(t[0],t[1]);for(let n=0;n<s.length;n+=2){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,r,o);s[n]=a.x,s[n+1]=a.y}}function Lc(s,t,e,r=[0,0]){const n=new fe(t[0],t[1]);for(let i=0;i<s.length;i+=3){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+r[0],s[i+1]=c.y+r[1]}}function zs(s,t,e,r=[0,0]){const n=new fe(t[0],t[1]);for(let i=0;i<s.length;i+=2){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+r[0],s[i+1]=c.y+r[1]}}function B0(s,t){return s[0]>=t.x&&s[0]<=t.x+t.w&&s[1]>=t.y&&s[1]<=t.y+t.h}function j0(s,t){const e=s<=t?1:s/t,r=t<=s?1:t/s;return[e,r]}function O0e(s){for(const t of s)if(isNaN(t)||t===1/0||t===-1/0)return!1;return!0}function z0e(s){return s!==Math.floor(s)}function B0e(s){const t=s.toString();return t.indexOf(".")!==-1?t.split(".")[1].length:0}function j0e(s,t){for(;t!==0;)[s,t]=[t,s%t];return s}const F0e=s=>{if(s.tagName==="GROUP"){const t=Object.getOwnPropertySymbols(s).find(e=>e.toString()==="Symbol(sealed)");if(t&&s[t])return!0}return!1},hr=(s,t)=>{if(s.mesh&&s.mesh.texture&&s.name==="eraserTexture"){const e=s.mesh.texture.image;t.deleteTexture(e)}else if(s.tagName==="GROUP"&&s&&s.children)for(const e of s.children)hr(e,t)},ur=(s,t)=>{hr(s,t),s.removeAllChildren()},U0e=(s,t,e)=>{const r=e.parent;if(t){const n=t.children;if(n){for(const i of n)if(hr(i,r),i.tagName==="GROUP")for(const o of i.children)hr(o,r)}}t.parent.replaceChild(s,t)},W0e=(s,t,e)=>{if(s.w+s.x<=0||s.h+s.y<=0||s.w<=0||s.h<=0)return;const r=t.width,n=t.height,i={x:Math.floor(Math.max(0,s.x)),y:Math.floor(Math.max(0,s.y)),w:Math.floor(Math.min(r,s.w)),h:Math.floor(Math.min(n,s.h))};if(i.x+i.w>r&&(i.w=Math.floor(r-i.x)),i.y+i.h>n&&(i.h=Math.floor(n-i.y)),z0e(e)){const o=B0e(e),a=Math.pow(10,o),c=j0e(a,e*a),l=i.x%c,u=i.x-l;u>=0?(i.x=u,i.w=i.w+l):(i.x=0,i.w=i.w+l-u);const h=i.y%c,d=i.y-h;d>=0?(i.y=d,i.h=i.h+h):(i.y=0,i.h=i.h+h-d)}return i};function Ei(s){return`${Fa(s.x)},${Fa(s.y)} `}function xi(s,t){return`${Fa((s.x+t.x)/2)},${Fa((s.y+t.y)/2)} `}function Fa(s){return+s.toFixed(4)}const Pr=async(s,t,e=!1)=>{let r,n;return new Promise(function(i){if(e&&requestIdleCallback)requestIdleCallback(()=>{i(1)},{timeout:t});else{if(typeof window.requestIdleCallback=="function"){const o=typeof t=="number"&&!isNaN(t)&&t>0?t:0;n=window.requestIdleCallback(()=>{clearTimeout(r),i(1)},{timeout:o})}r=setTimeout(()=>{n&&window.cancelIdleCallback(n),i(1)},t||0)}}).then(function(){s()}).catch(function(){s()})},Yi=s=>Math.max(1,(window.devicePixelRatio||1)/1),Nc=(s,t)=>s.x+s.w<t.x||s.x>t.x+t.w||s.y+s.h<t.y||s.y>t.y+t.h?wn.outside:s.x>=t.x&&s.y>=t.y&&s.x+s.w<=t.x+t.w&&s.y+s.h<=t.y+t.h?wn.inside:wn.intersect;function V0e(s){let t=0;for(let e=0;e<s.length;e++){const r=s.charCodeAt(e);r>=1&&r<=126||65376<=r&&r<=65439?t++:t+=2}return t}function $0e(s){if(!s||typeof s!="string")return!1;const t=s.trim();if(!t)return!1;const e=[/^\s*#{1,6}\s+.+/m,/^\s*[-*+]\s+.+/m,/^\s*\d+\.\s+.+/m,/\[([^\]]+)\]\(([^)]+)\)/,/\[([^\]]+)\]\[([^\]]+)\]/,/```[\s\S]*?```/,/`[^`]+`/,/^\s*\|.+\|/m,/!\[([^\]]*)\]\(([^)]+)\)/,/\*\*[^*]+\*\*/,/__[^_]+__/,/\*[^*]+\*/,/_[^_]+_/,/~~[^~]+~~/,/==[^=]+==/,/^\s*[-*+]\s+\[[ xX]\]\s+.+/m,/^\s*>\s+.+/m,/^\s*[-*]{3,}\s*$/m];let r=0;for(const o of e)o.test(t)&&r++;const i=[/^\s*#{1,6}\s+/m,/^\s*[-*+]\s+/m,/^\s*\d+\.\s+/m,/```[\s\S]*?```/,/^\s*\|.+\|/m].some(o=>o.test(t));return r>=2||i}class Y0e{constructor(t,e){E(this,"plugin");E(this,"uid");E(this,"control");this.control=t,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var t;return De.toJS((t=this.plugin)==null?void 0:t.attributes[this.namespace])||{}}getAuthSpaceData(){var t;return De.toJS((t=this.plugin)==null?void 0:t.attributes[this.authSpace])||{}}getGlobalUndoRedoStackData(){var t;return De.toJS((t=this.plugin)==null?void 0:t.attributes[this.globalUndoRedoStackSpace])||{}}getUidFromKey(t){return t.split(Bt).length===2&&t.split(Bt)[0]||this.uid}isLocalId(t){return t.split(Bt).length===1}getLocalId(t){return t.split(Bt)[1]}isSelector(t){return this.getLocalId(t)===Ne}}const G0e=new Set([Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode]),Vt=class Vt extends Y0e{constructor(e,r,n){super(e,r);E(this,"namespace");E(this,"authSpace");E(this,"globalUndoRedoStackSpace");E(this,"serviceStorage",{});E(this,"storage",{});E(this,"authStorage",{});E(this,"globalUndoRedoStackStorage",{});E(this,"stateDisposer");E(this,"authDisposer");E(this,"asyncClockState",!1);E(this,"pendingSyncViews",new Set);E(this,"pendingSyncStorage");E(this,"limitNums",new Map);E(this,"destroyed",!1);E(this,"storageRevision",0);E(this,"viewStorageRevisions",new Map);E(this,"sceneStorageRevisions",new Map);E(this,"discardedSyncViews",new Set);E(this,"syncInterval");E(this,"limitComponents",ve.debounce((e,r)=>{var o,a,c,l,u,h,d,f;const n=((a=(o=this.storage)==null?void 0:o[e])==null?void 0:a[r])&&Object.keys(this.storage[e][r]).length||0;if(n===0)return;let i=this.limitNums.get(`${e}/${r}`);if(!i){const g=this.getLimitNum(n);this.limitNums.set(`${e}/${r}`,g),i=g}if(i>0&&n>=i){const g=Vt.componentsLimits.indexOf(i),y=g>=0&&g<Vt.componentsLimits.length-1;if((u=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&u.map.onObjectsLimit&&((d=(h=this.control.room)==null?void 0:h.callbacks)==null||d.dispatch("onObjectsLimit",x=>x(i,y))),!y){this.Logger.error(`[Appliance]: exceeds the limit of ${i} components, current: ${n}`),(f=this.control.room)==null||f.disconnect().then(()=>{var x,C,L,S,p;(L=(C=(x=this.control.room)==null?void 0:x.callbacks)==null?void 0:C.listeners)!=null&&L.map.onKickedWithReason&&(this.Logger.info("[Appliance]: onKickedWithReason callback is called"),(p=(S=this.control.room)==null?void 0:S.callbacks)==null||p.dispatch("onKickedWithReason",m=>m("kickByAdmin")))});return}console.warn(`exceeds the limit of ${i} components, current: ${n}`);const T=y?Vt.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${r}`,T)}},2e3,{maxWait:5e3}));E(this,"clearLimitComponents",(e,r)=>{if(r)this.limitNums.delete(`${e}/${r}`);else for(const n of this.limitNums.keys())`${e}/`.indexOf(n)===0&&this.limitNums.delete(n)});this.syncInterval=n,this.namespace=Vt.namespace,this.authSpace=Vt.authSpace,this.globalUndoRedoStackSpace=Vt.globalUndoRedoStackSpace,this.serviceStorage=this.getNamespaceData(),this.storage=ve.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.globalUndoRedoStackStorage={},this.getLimitNums()}get Logger(){return this.control.logger}discardViewPendingSync(e){e&&(this.discardedSyncViews.add(e),this.pendingSyncViews.delete(e))}restoreViewPendingSync(e){e&&this.discardedSyncViews.delete(e)}isViewPendingSyncDiscarded(e){return this.discardedSyncViews.has(e)}canRunSync(e){return!this.destroyed&&(!e||!this.discardedSyncViews.has(e))}getSceneRevisionKey(e,r){return`${e}\0${r}`}getSceneDiffKey(e,r){return JSON.stringify([e,r])}getDataDiffKey(e,r,n){return JSON.stringify([e,r,n])}bumpStorageRevision(e,r){this.storageRevision+=1,this.viewStorageRevisions.set(e,this.storageRevision),r!==void 0&&this.sceneStorageRevisions.set(this.getSceneRevisionKey(e,r),this.storageRevision)}filterDiscardedViews(e){if(!this.discardedSyncViews.size)return e;const r={};for(const[n,i]of Object.entries(e))this.discardedSyncViews.has(n)||(r[n]=i);return r}hasId(e,r,n){const i=this.getLocalId(n)?this.transformKey(n):n;return!!(this.storage[e]&&this.storage[e][r]&&this.storage[e][r][i])}getLimitNum(e){return e>=Vt.componentsLimits[0]?Vt.componentsLimits[1]:Vt.componentsLimits[0]}getLimitNums(){for(const[e,r]of Object.entries(this.storage))if(e&&r){for(const[n,i]of Object.entries(r))if(n&&i){const o=this.getLimitNum(Object.keys(i).length);this.limitNums.set(`${e}/${n}`,o)}}}getViewIdBySecenPath(e){const r=this.getNamespaceData();for(const[n,i]of Object.entries(r))if(i){for(const o of Object.keys(i))if(o===e)return n}}getScenePathData(e){const r=this.getNamespaceData();for(const n of Object.values(r))if(n){for(const i of Object.keys(n))if(i===e)return ve.cloneDeep(n[i])}}hasTargetDataByViewId(e,r){const n=this.getNamespaceData();if(n&&n[e]){for(const i of Object.values(n[e]))for(const o of Object.keys(i))if(o===r)return!0}}getTargetDataByViewId(e,r){const n=this.getNamespaceData();let i,o;if(n&&n[e])for(const[a,c]of Object.entries(n[e]))for(const l of Object.keys(c))l===r&&(i=ve.cloneDeep(c[l]),o=a);return{data:i,scenePath:o}}getStorageData(e,r){var n;return(n=this.storage[e])!=null&&n[r]?ve.cloneDeep(this.storage[e][r]):void 0}getServiceStorageViewSnapshot(e){return this.storage[e]?ve.cloneDeep(this.storage[e]):{}}readViewStorageSnapshot(e){return{revision:this.viewStorageRevisions.get(e)||0,storage:this.getServiceStorageViewSnapshot(e)}}readSceneStorageSnapshot(e,r){return{revision:this.sceneStorageRevisions.get(this.getSceneRevisionKey(e,r))||0,storage:this.getStorageData(e,r)||{}}}hasSelector(e,r){const n=this.storage&&this.storage[e]&&this.storage[e][r];return!!(n&&Object.keys(n).find(i=>this.isOwn(i)&&this.getLocalId(i)===Ne))}hasIncludeSelector(e,r,n){for(const i of Object.keys(this.storage))if(!(r&&i!==r)){for(const o of Object.keys(this.storage[i]))if(!(n&&o!==n)){for(const a of Object.keys(this.storage[i][o]))if(this.getLocalId(a)===Ne){const c=this.storage[i][o][a],l=this.isLocalId(e)?this.transformKey(e):e;if(c&&c.selectIds&&c.selectIds.length&&c.selectIds.includes(l))return!0}}}return!1}addStorageStateListener(e){this.stateDisposer=De.autorun(async()=>{var c,l,u,h,d,f,g;const r=this.getNamespaceData(),{diffView:n,diffScenePath:i,diffData:o}=this.diffFunByView(this.serviceStorage,r);this.serviceStorage=r;const a={};if(Object.keys(n).length>0){for(const[y,T]of Object.entries(n))if(T&&!ve.isEqual((c=this.storage)==null?void 0:c[y],T.newValue)){const x=new Set([...Object.keys(((l=this.storage)==null?void 0:l[y])||{}),...Object.keys(T.newValue||{})]);a.diffView||(a.diffView={}),a.diffView[y]=T,this.storage||(this.storage={}),T.newValue===void 0?delete this.storage[y]:this.storage[y]=ve.cloneDeep(T.newValue),x.size?x.forEach(C=>this.bumpStorageRevision(y,C)):this.bumpStorageRevision(y)}}if(Object.keys(i).length>0){for(const[y,T]of Object.entries(i))if(T){const{viewId:x,newValue:C}=T,L=T.scenePath??y;T&&!ve.isEqual((h=(u=this.storage)==null?void 0:u[x])==null?void 0:h[L],C)&&(a.diffScenePath||(a.diffScenePath={}),a.diffScenePath[y]=T,this.storage||(this.storage={}),this.storage[x]||(this.storage[x]={}),T.newValue===void 0?delete this.storage[x][L]:this.storage[x][L]=ve.cloneDeep(T.newValue),this.bumpStorageRevision(x,L))}}if(Object.keys(o).length>0){for(const[y,T]of Object.entries(o))if(T){const{viewId:x,scenePath:C,newValue:L}=T,S=T.storageKey??y;T&&!ve.isEqual((g=(f=(d=this.storage)==null?void 0:d[x])==null?void 0:f[C])==null?void 0:g[S],L)&&(a.diffData||(a.diffData={}),a.diffData[y]=T,this.storage||(this.storage={}),this.storage[x]||(this.storage[x]={}),this.storage[x][C]||(this.storage[x][C]={}),T.newValue===void 0?delete this.storage[x][C][S]:this.storage[x][C][S]=ve.cloneDeep(T.newValue),this.bumpStorageRevision(x,C))}}this.logServiceDiff(a),Object.keys(a).length>0&&e(a),this.control.worker.publicMsgEmitter.emit("syncStorageChange",this.serviceStorage)})}logServiceDiff(e){var r,n,i;for(const o of Object.keys(e.diffView||{}))this.control.isServiceSyncReady(o)&&this.control.syncLogger.append("serviceDiff",o,"",[{diffType:"view",viewId:o}]);for(const[o,a]of Object.entries(e.diffScenePath||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.scenePath??o;this.control.syncLogger.append("serviceDiff",a.viewId,c,[{diffType:"scenePath",viewId:a.viewId,scenePath:c}])}for(const[o,a]of Object.entries(e.diffData||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.storageKey??o;this.control.syncLogger.append("serviceDiff",a.viewId,a.scenePath,[{diffType:"data",viewId:a.viewId,scenePath:a.scenePath,key:c,type:(r=a.newValue)==null?void 0:r.type,toolsType:((n=a.newValue)==null?void 0:n.toolsType)??((i=a.oldValue)==null?void 0:i.toolsType)}])}}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,r){const n=at(e),i=at(r),o={},a={},c={};for(const l of i)if(!n.includes(l)||e[l]===void 0){o[l]={newValue:r[l],oldValue:void 0};continue}for(const l of n){if(ve.isEqual(e[l],r[l]))continue;if(!i.includes(l)||r[l]===void 0){o[l]={newValue:void 0,oldValue:e[l]};continue}const u=this.diffFunByScenePath(e[l],r[l],l);Object.assign(a,u.diffScenePath),Object.assign(c,u.diffData)}return{diffData:c,diffScenePath:a,diffView:o}}diffFunByScenePath(e,r,n){const i=at(e),o=at(r),a={},c={};for(const l of o)if(!i.includes(l)||e[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:r[l],oldValue:void 0,viewId:n,scenePath:l};continue}for(const l of i){if(ve.isEqual(e[l],r[l]))continue;if(!o.includes(l)||r[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:void 0,oldValue:e[l],viewId:n,scenePath:l};continue}const u=this.diffFunByKeys(e[l],r[l],l,n);Object.assign(c,u)}return{diffScenePath:a,diffData:c}}diffFunByKeys(e,r,n,i){const o=at(e),a=at(r),c={};for(const l of a)(!o.includes(l)||e[l]===void 0)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:void 0,newValue:r[l],viewId:i,scenePath:n,storageKey:l});for(const l of o)if(!ve.isEqual(e[l],r[l])){if(!a.includes(l)||r[l]===void 0){c[this.getDataDiffKey(i,n,l)]={newValue:void 0,oldValue:e[l],viewId:i,scenePath:n,storageKey:l};continue}a.includes(l)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:e[l],newValue:r[l],viewId:i,scenePath:n,storageKey:l})}return c}transformKey(e){return this.uid+Bt+e}isOwn(e){return e.split(Bt)[0]===this.uid}dispatch(e){var C,L,S;if(this.destroyed)return;const{type:r,workId:n,ops:i,index:o,opt:a,toolsType:c,removeIds:l,updateNodeOpt:u,op:h,selectIds:d,isSync:f,scenePath:g,viewId:y}=e;if(!y||r!==le.Clear&&!this.canRunSync(y))return;const T=Number(e.needUndoTicker??e.collectUndoTicker??void 0),x=p=>{T?this.control.internalMsgEmitter.emit("ackStorageUndoTicker",T,y,g,p,{requestId:e.requestId,emitEventType:e.emitEventType}):e.emitEventType===Te.TranslateNode||(e.emitEventType,Te.CopyNode)};switch(r){case le.Clear:const p={};if(g&&this.storage[y]&&this.storage[y][g])delete this.storage[y][g],this.setState(p,{isSync:f,viewId:y,scenePath:g});else if(this.storage[y]){const b=Object.keys(this.storage[y]);delete this.storage[y],b.length?b.forEach(P=>this.bumpStorageRevision(y,P)):this.bumpStorageRevision(y),this.runSyncService({isSync:f,viewId:y})}Pr(()=>{var b,P;this.canRunSync(y)&&((b=this.control.pluginManager)==null||b.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(P=this.control.miniMapManager)==null||P.updateMiniMapCamera(y),this.clearLimitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"));break;case le.CreateWork:if(g&&n&&c&&a){const b=this.isLocalId(n.toString())?this.transformKey(n):n;this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{type:le.CreateWork,workId:n,toolsType:c,opt:a},{isSync:f,viewId:y,scenePath:g,onApplied:()=>x(b.toString())})}break;case le.DrawWork:if(g&&n&&typeof o=="number"&&(h!=null&&h.length)){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0;if(P!=null&&P.ops||(P==null?void 0:P.type)===le.FullWork)return;const D=o?((P==null?void 0:P.op)||[]).slice(0,o).concat(h):h||(P==null?void 0:P.op),z=c||(P==null?void 0:P.toolsType),j=a||(P==null?void 0:P.opt),k=u||(P==null?void 0:P.updateNodeOpt);n&&z&&j&&D&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{...P,type:le.DrawWork,workId:n,updateNodeOpt:k,toolsType:z,opt:j,op:D,index:o},{isSync:f,viewId:y,scenePath:g,onApplied:()=>x(b.toString())}))}break;case le.FullWork:if(g&&n){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0,D=u||(P==null?void 0:P.updateNodeOpt),z=c||(P==null?void 0:P.toolsType),j=a||(P==null?void 0:P.opt),k=i||(P==null?void 0:P.ops);if(!P&&e.emitEventType!==void 0&&G0e.has(e.emitEventType)){x(b.toString());break}z&&j&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{type:le.FullWork,updateNodeOpt:D,workId:b,toolsType:z,opt:j,ops:k},{isSync:f,viewId:y,scenePath:g,onApplied:()=>{x(b.toString())}}),Pr(()=>{var A,N;this.canRunSync(y)&&((A=this.control.pluginManager)==null||A.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(N=this.control.miniMapManager)==null||N.updateMiniMapCamera(y),this.limitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case le.RemoveNode:if(g&&(l!=null&&l.length)){const b=l.map(z=>this.isLocalId(z+"")?this.transformKey(z):z);let P=0;const D=(C=this.storage[y])==null?void 0:C[g];D&&(Object.keys(D).map(z=>{b!=null&&b.includes(z)&&(P++,this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.delRenderPageElementId({viewId:y,scenePath:g,elementId:z}),this.updateValue(z,void 0,{isSync:f,viewId:y,scenePath:g,onApplied:()=>x(z)}))}),(L=this.control.pluginManager)==null||L.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||Pr(()=>{var z;this.canRunSync(y)&&((z=this.control.miniMapManager)==null||z.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"))),T&&P===0&&x()}break;case le.UpdateNode:if(g&&n&&(u||i||a)){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0;P&&(P.updateNodeOpt=u,(i||h)&&(P.ops=i,P.op=h),a&&(P.opt=ka(Du(P.opt,a))),P.type=le.FullWork,this.updateValue(b.toString(),P,{isSync:f,viewId:y,scenePath:g,onApplied:()=>x(b.toString())}),this.control.isUseSimple||Pr(()=>{var D;this.canRunSync(y)&&((D=this.control.miniMapManager)==null||D.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case le.Select:if(!g)return;let m;d!=null&&d.length&&(m=d.map(b=>this.isLocalId(b+"")?this.transformKey(b):b));const M=this.transformKey(Ne);if(m&&!((S=this.storage[y])!=null&&S[g]))return;const v=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][M]||void 0,R=a||(v==null?void 0:v.opt);m&&this.checkOtherSelector(M,m,{isSync:f,viewId:y,scenePath:g}),this.updateValue(M,m&&{type:le.Select,toolsType:q.Selector,opt:R,selectIds:m},{isSync:f,viewId:y,scenePath:g,onApplied:()=>x(M)});break}}checkOtherSelector(e,r,n){var c;const{viewId:i,scenePath:o}=n,a=(c=this.storage[i])==null?void 0:c[o];if(a){for(const l of Object.keys(a))if(l!==e&&this.getLocalId(l)===Ne){const u=a[l];if(u&&u.selectIds){const h=u.selectIds.filter(d=>!r.includes(d));h.length>0&&(u.selectIds=h),this.updateValue(l,h.length&&u||void 0,n)}}}}setState(e,r){const{viewId:n,scenePath:i}=r,o=at(e);for(let a=0;a<o.length;a++){const c=o[a],l=e[c];typeof l<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][i]||(this.storage[n][i]={}),this.storage[n][i][c]=l):delete this.storage[n][i][c]}this.bumpStorageRevision(n,i),this.runSyncService(r)}updateValue(e,r,n){var u,h,d,f;const{viewId:i,scenePath:o,storage:a}=n,c=a||this.storage,l=(h=(u=c[i])==null?void 0:u[o])==null?void 0:h[e];if(r&&typeof r=="object"&&this.uid&&(r={...r,lastOperator:n.preserveLastOperator?r.lastOperator:this.uid},r.toolsType===q.Text&&r.opt)){const g={...r.opt};delete g.uid,r.opt=g}if(r===void 0){const g=(d=c[i])==null?void 0:d[o];g&&delete g[e]}else c[i]||(c[i]={}),c[i][o]||(c[i][o]={}),c[i][o][e]=r;c===this.storage&&!ve.isEqual(l,r)&&this.bumpStorageRevision(i,o),n.onApplied,(f=n.onApplied)==null||f.call(n),this.runSyncService(n)}updateExistingValue(e,r,n){var a;const i=(a=this.storage[n.viewId])==null?void 0:a[n.scenePath];if(!i)return!1;const o=Object.prototype.hasOwnProperty.call(i,e)||!this.isLocalId(e)?e:this.transformKey(e);return Object.prototype.hasOwnProperty.call(i,o)?(this.updateValue(o,r,n),!0):!1}runSyncService(e){if(this.canRunSync(e.viewId)){if(e.viewId&&this.pendingSyncViews.add(e.viewId),e.storage&&(this.pendingSyncStorage=e.storage),!this.control.renderControl.isWritable){this.Logger.error("[Appliance]: The current state is not writable and synchronization cannot be synchronized");return}if(e.isSync){this.pendingSyncViews.clear();const r=this.pendingSyncStorage||this.storage;this.pendingSyncStorage=void 0,this.syncSerivice({storage:r});return}this.asyncClockState||(this.asyncClockState=!0,Pr(()=>{if(this.asyncClockState=!1,this.destroyed)return;const r=[...this.pendingSyncViews].filter(i=>this.canRunSync(i));this.pendingSyncViews.clear();const n=this.filterDiscardedViews(this.pendingSyncStorage||this.storage);this.pendingSyncStorage=void 0,r.length&&this.syncSerivice({storage:n})},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}}syncSerivice(e={storage:this.storage}){if(this.destroyed)return;const{storage:r}=e,n=this.filterDiscardedViews(r||this.storage);this.logLocalSyncChanges(this.serviceStorage,n);const i=at(this.serviceStorage),o=at(n),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ve.isEqual(this.serviceStorage[c],n[c])||this.syncViewData(n,c)}for(const c of o)i.includes(c)||a.set(c,n[c]);if(a.size>=o.length||a.size>5&&o.length<20)this.syncStorageView(n);else for(const[c,l]of a.entries())this.syncUpdataView(n,c,l)}logLocalSyncChanges(e,r){const n=new Set([...at(e),...at(r)]);for(const i of n){const o=e[i]||{},a=r[i]||{},c=new Set([...at(o),...at(a)]);for(const l of c){const u=o[l]||{},h=a[l]||{},d=new Set([...at(u),...at(h)]),f=[];for(const g of d){const y=u[g],T=h[g];ve.isEqual(y,T)||f.push({key:g,type:T==null?void 0:T.type,toolsType:(T==null?void 0:T.toolsType)??(y==null?void 0:y.toolsType)})}this.control.syncLogger.append("localSync",i,l,f)}}}syncViewData(e,r){const n=at(this.serviceStorage[r]),i=at(e[r]),o=new Map;for(const a of n){if(!i.includes(a)){o.set(a,void 0);continue}ve.isEqual(this.serviceStorage[r][a],e[r][a])||this.syncScenePathData(e,r,a)}for(const a of i)n.includes(a)||o.set(a,e[r][a]);if(o.size>=i.length||o.size>5&&i.length<20)this.syncStorageScenePath(r,e[r]);else for(const[a,c]of o.entries())this.syncUpdataScenePath(e,r,a,c)}syncScenePathData(e,r,n){const i=at(this.serviceStorage[r][n]),o=at(e[r][n]),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ve.isEqual(this.serviceStorage[r][n][c],e[r][n][c])||a.set(c,e[r][n][c])}for(const c of o)i.includes(c)||a.set(c,e[r][n][c]);if(a.size>=o.length||a.size>5&&o.length<50)this.syncStorageKey(r,n,e[r][n]);else for(const[c,l]of a.entries())this.syncUpdataKey(e,r,n,c,l)}syncUpdataView(e,r,n){var o;Object.keys(this.serviceStorage).length?(o=this.plugin)==null||o.updateAttributes([this.namespace,r],n):this.syncStorageView(e)}syncStorageView(e){var r;(r=this.plugin)==null||r.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,r,n,i){var a;Object.keys(this.serviceStorage[r]).length?(a=this.plugin)==null||a.updateAttributes([this.namespace,r,n],i):this.syncStorageScenePath(r,e[r])}syncStorageScenePath(e,r){var n;(n=this.plugin)==null||n.updateAttributes([this.namespace,e],r)}syncUpdataKey(e,r,n,i,o){var c;Object.keys(this.serviceStorage[r][n]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,r,n,i],o):this.syncStorageKey(r,n,e[r][n])}syncStorageKey(e,r,n){var i;(i=this.plugin)==null||i.updateAttributes([this.namespace,e,r],n)}keyTransformWorkId(e){const r=e.split(Bt);return r.length===2?r[1]:e}destroy(){this.destroyed||(this.destroyed=!0,this.limitComponents.cancel(),this.pendingSyncViews.clear(),this.pendingSyncStorage=void 0,this.discardedSyncViews.clear(),this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.storageRevision=0,this.viewStorageRevisions.clear(),this.sceneStorageRevisions.clear(),this.removeAuthStateListener(),this.authStorage={},this.globalUndoRedoStackStorage={})}transformToSerializableUndoStackItemData(e){const{data:r,scenePath:n}=e,i={};for(const o of r)i[o.key]={dataType:o.dataType,data:o.data};return{data:i,scenePath:n}}dispatchUndoTicker(e){const{viewId:r,undoTickerId:n,data:i,syncType:o,operation:a}=e,c=a===wt.syncUndoStack?"undoStack":"redoStack",l=o==="delete"?void 0:this.transformToSerializableUndoStackItemData(i);if(this.plugin){if(o==="delete"){const u=this.globalUndoRedoStackStorage[r]&&this.globalUndoRedoStackStorage[r][c];if(!u)return;delete u[n],this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c,n],void 0);return}if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,r]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,r,c]))this.globalUndoRedoStackStorage[r][c][n]=l,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c,n],l);else{const u={[n]:l};this.globalUndoRedoStackStorage[r][c]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r,c],u)}else{const u={[c]:{[n]:l}};this.globalUndoRedoStackStorage[r]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,r],u)}else{const u={[r]:{[c]:{[n]:l}}};this.globalUndoRedoStackStorage=u,this.plugin.updateAttributes(this.globalUndoRedoStackSpace,u)}}}addGlobalUndoRedoStackListener(e){this.authDisposer=De.autorun(async()=>{const r=this.getGlobalUndoRedoStackData();if(ve.isEqual(this.globalUndoRedoStackStorage,r))return;const n=this.diffGlobalUndoRedoStackFun(this.globalUndoRedoStackStorage,r);this.globalUndoRedoStackStorage=r,e(n)})}diffGlobalUndoRedoStackFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}dispatchPageAuth(e,r=!0){var l,u,h,d,f,g,y,T,x,C,L,S,p,m,M,v,R,b,P,D,z,j,k,A,N,W,Y,Q,ie,O,V,Z,$,ee,se,ce,me,pe;const{operation:n,viewId:i,scenePath:o,pageId:a,pageData:c}=e;switch(n){case wt.addPage:{if(!i||!o||!a)return;const B=[this.authSpace];Object.keys(this.authStorage).length&&B.push("pageAuth");const F=this.authStorage.pageAuth||{};this.authStorage.pageAuth=F,Object.keys(F).length&&B.push(i),F[i]=F[i]||{},Object.keys(F[i]).length&&B.push(o),F[i][o]=F[i][o]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(F[i][o].pages).length&&B.push("pages",a);const J={};if(c!=null&&c.elementIds)for(const oe of c.elementIds.keys())J[oe]=!0;F[i][o].pages[a]=J,r&&(B.length===1?(l=this.plugin)==null||l.updateAttributes(B,ve.cloneDeep(this.authStorage)):B.length===2?(u=this.plugin)==null||u.updateAttributes(B,ve.cloneDeep(F)):B.length===3?(h=this.plugin)==null||h.updateAttributes(B,ve.cloneDeep(F[i])):B.length===4?(d=this.plugin)==null||d.updateAttributes(B,ve.cloneDeep(F[i][o])):(f=this.plugin)==null||f.updateAttributes(B,ve.cloneDeep(J)));return}case wt.renderPage:{if(!i||!o||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[i]&&this.authStorage.pageAuth[i][o]&&c.render!==this.authStorage.pageAuth[i][o].render&&(this.authStorage.pageAuth[i][o].render=c.render,r&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",i,o,"render"],c.render)));return}case wt.deletePage:{if(!i||!o||!a)return;(L=(C=(x=(T=(y=this.authStorage)==null?void 0:y.pageAuth)==null?void 0:T[i])==null?void 0:x[o])==null?void 0:C.pages)!=null&&L[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],r&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],void 0)));return}case wt.clearPage:{if(!i||!o||!a)return;(R=(v=(M=(m=(p=this.authStorage)==null?void 0:p.pageAuth)==null?void 0:m[i])==null?void 0:M[o])==null?void 0:v.pages)!=null&&R[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],r&&((b=this.plugin)==null||b.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],{})));return}case wt.addElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(k=(j=(z=(D=(P=this.authStorage)==null?void 0:P.pageAuth)==null?void 0:D[i])==null?void 0:z[o])==null?void 0:j.pages)!=null&&k[a]&&(this.authStorage.pageAuth[i][o].pages[a][c.elementId]=!0,r&&((A=this.plugin)==null||A.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],!0)));return}case wt.deleteElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(O=(ie=(Q=(Y=(W=(N=this.authStorage)==null?void 0:N.pageAuth)==null?void 0:W[i])==null?void 0:Y[o])==null?void 0:Q.pages)==null?void 0:ie[a])!=null&&O[c.elementId]&&(delete this.authStorage.pageAuth[i][o].pages[a][c.elementId],r&&((V=this.plugin)==null||V.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],void 0)));return}case wt.clearViewScenePath:{if(!i||!o)return;(ee=($=(Z=this.authStorage)==null?void 0:Z.pageAuth)==null?void 0:$[i])!=null&&ee[o]&&(delete this.authStorage.pageAuth[i][o],r&&((se=this.plugin)==null||se.updateAttributes([this.authSpace,"pageAuth",i,o],void 0)));return}case wt.clearView:{if(!i)return;(me=(ce=this.authStorage)==null?void 0:ce.pageAuth)!=null&&me[i]&&(delete this.authStorage.pageAuth[i],r&&((pe=this.plugin)==null||pe.updateAttributes([this.authSpace,"pageAuth",i],void 0)));return}}}dispatchRenderAuth(e,r=!0){var l,u,h,d,f,g,y,T,x,C,L,S,p,m,M,v,R,b,P,D;const{operation:n,viewId:i,uid:o,renderData:a,isClear:c}=e;if(i)switch(n){case Mr.setAuth:{if(!a||a.render===void 0&&a.hide===void 0&&a.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[i]&&(delete this.authStorage.renderAuth[i],r&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",i],void 0)));return}const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]={},this.authStorage.renderAuth=j;const{render:k,hide:A,clear:N}=a;if(k===!0)j[i].render=!0;else if(ve.isSet(k)){j[i].render={};for(const W of k.keys())j[i].render[W]=!0}if(A===!0)j[i].hide=!0;else if(ve.isSet(A)){j[i].hide={};for(const W of A.keys())j[i].hide[W]=!0}if(N===!0)j[i].clear=!0;else if(ve.isSet(N)){j[i].clear={};for(const W of N.keys())j[i].clear[W]=!0}r&&(z.length===1?(u=this.plugin)==null||u.updateAttributes(z,ve.cloneDeep(this.authStorage)):z.length===2?(h=this.plugin)==null||h.updateAttributes(z,ve.cloneDeep(j)):(d=this.plugin)==null||d.updateAttributes(z,ve.cloneDeep(j[i])));return}case Mr.setShow:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("render"),j[i].render=j[i].render||{},j[i].render!==!0&&(Object.keys(j[i].render).length&&z.push(o),j[i].render[o]=!0),j[i].hide!==!0&&((f=j[i].hide)!=null&&f[o])&&(delete j[i].hide[o],r&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",i,"hide",o],void 0))),r&&(z.length===1?(y=this.plugin)==null||y.updateAttributes(z,ve.cloneDeep(this.authStorage)):z.length===2?(T=this.plugin)==null||T.updateAttributes(z,ve.cloneDeep(j)):z.length===3?(x=this.plugin)==null||x.updateAttributes(z,ve.cloneDeep(j[i])):(C=this.plugin)==null||C.updateAttributes(z,!0));return}case Mr.setHide:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("hide"),j[i].hide=j[i].hide||{},j[i].hide!==!0&&(Object.keys(j[i].hide).length&&z.push(o),j[i].hide[o]=!0),j[i].render!==!0&&((L=j[i].render)!=null&&L[o])&&(delete j[i].render[o],r&&((S=this.plugin)==null||S.updateAttributes([this.authSpace,"renderAuth",i,"render",o],void 0))),r&&(z.length===1?(p=this.plugin)==null||p.updateAttributes(z,ve.cloneDeep(this.authStorage)):z.length===2?(m=this.plugin)==null||m.updateAttributes(z,ve.cloneDeep(j)):z.length===3?(M=this.plugin)==null||M.updateAttributes(z,ve.cloneDeep(j[i])):(v=this.plugin)==null||v.updateAttributes(z,!0));return}case Mr.setClear:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("clear"),j[i].clear=j[i].clear||{},j[i].clear!==!0&&(Object.keys(j[i].clear).length&&z.push(o),c?j[i].clear[o]=!0:delete j[i].clear[o]),r&&(z.length===1?(R=this.plugin)==null||R.updateAttributes(z,ve.cloneDeep(this.authStorage)):z.length===2?(b=this.plugin)==null||b.updateAttributes(z,ve.cloneDeep(j)):z.length===3?(P=this.plugin)==null||P.updateAttributes(z,ve.cloneDeep(j[i])):(D=this.plugin)==null||D.updateAttributes(z,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=De.autorun(async()=>{const r=this.getAuthSpaceData(),{renderAuth:n,pageAuth:i}=r;let o,a;ve.isEqual(n,this.authStorage.renderAuth)||(o=this.diffAuthFun(this.authStorage.renderAuth||{},n||{}),this.authStorage.renderAuth=n),ve.isEqual(i,this.authStorage.pageAuth)||(a=this.diffAuthPageFun(this.authStorage.pageAuth||{},i||{}),this.authStorage.pageAuth=i),(o||a)&&e(o,a)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}diffAuthPageFun(e,r){const n=at(e),i=at(r),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:r[a],oldValue:void 0};continue}for(const a of n)if(!ve.isEqual(e[a],r[a])){if(!i.includes(a)||r[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:r[a],oldValue:e[a]}}return o}};E(Vt,"namespace","PluginState"),E(Vt,"authSpace","PluginAuth"),E(Vt,"globalUndoRedoStackSpace","GlobalUndoRedoStack"),E(Vt,"componentsLimits",[500,1e3]);let Jr=Vt;var nr=(s=>(s[s.Draw=1]="Draw",s[s.Delete=2]="Delete",s[s.Update=3]="Update",s))(nr||{});class F0{constructor(){E(this,"state","pending");E(this,"waiters",new Set)}wait(t){return this.state==="ready"?Promise.resolve("ready"):this.state==="cancelled"?Promise.resolve("cancelled"):new Promise(e=>{let r;const n=i=>{r&&clearTimeout(r),e(i)};this.waiters.add(n),t!==void 0&&(r=setTimeout(()=>{this.waiters.delete(n),e("timeout")},t))})}isReady(){return this.state==="ready"}begin(){this.state="pending"}markReady(){if(this.state==="ready")return;this.state="ready";const t=[...this.waiters];this.waiters.clear(),t.forEach(e=>e("ready"))}cancel(){this.state="cancelled";const t=[...this.waiters];this.waiters.clear(),t.forEach(e=>e("cancelled"))}}class H0e{constructor(){E(this,"roomMembers",[]);E(this,"onChangeHooks",new Set)}setRoomMembers(t){this.executChangeUidHook(this.roomMembers,t),this.roomMembers=t}executChangeUidHook(t,e){const r={online:e.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session}),offline:t.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session})};this.onChangeHooks.forEach(n=>n(r))}getAllRoomMembers(){return this.roomMembers}getRoomMember(t){return this.roomMembers.find(e=>{var r;return((r=e.payload)==null?void 0:r.uid)===t})}isOnLine(t){return!!this.getRoomMember(t)}onUidChangeHook(t){this.onChangeHooks.add(t)}destroy(){this.onChangeHooks.clear()}}function Lp(s,t,e){var r,n;for(const[i,o]of s.entries())((n=(r=o.roomMember)==null?void 0:r.payload)==null?void 0:n.uid)===t&&i!==e&&s.delete(i)}class Q0e{constructor(t){E(this,"expirationTime",He.cursor.expirationTime);E(this,"isEnableCursor");E(this,"internalMsgEmitter");E(this,"publicMsgEmitter");E(this,"control");E(this,"eventName","applianc-cursor");E(this,"displayer");E(this,"roomMember");E(this,"animationId");E(this,"maxLastSyncTime");E(this,"willSendEventWorkers",[]);E(this,"willConsumeEventWorkers",new Map);E(this,"sendEventTimerId");E(this,"animationDrawWorkers",new Map);E(this,"animationEventWorkers",new Map);E(this,"drawActiveUids",new Set);E(this,"cursorInfoMap",new Map);E(this,"doneRenderCursorInfoMap",new Map);const{control:e,internalMsgEmitter:r,publicMsgEmitter:n}=t;this.internalMsgEmitter=r,this.publicMsgEmitter=n,this.expirationTime=ve.isNumber(e.pluginOptions.extras.cursor.expirationTime)?e.pluginOptions.extras.cursor.expirationTime:this.expirationTime,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.isEnableCursor=this.control.pluginOptions.extras.cursor.enable}activeCollector(){this.control.plugin&&this.isEnableCursor&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(t){var a;const{event:e,payload:r}=t;if(e!==this.eventName)return;const{uid:n,op:i,type:o}=r;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&o===As.Cursor&&(i!=null&&i.length)){if(this.drawActiveUids.has(n))return;const c=this.willConsumeEventWorkers.get(n)||[];for(const l of i){const{viewId:u}=l;ve.isNumber(l.consumPoint[0])&&ve.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,u)),this.control.renderControl.isFilterCursor(u)&&c.unshift({...l,timestamp:this.control.worker.now})}this.willConsumeEventWorkers.set(n,c),this.runAnimation()}}onFocusViewChange(){this.isEnableCursor&&(this.checkDrawWorks(),this.runAnimation())}updateRoomMembers(t){var r,n;const e=new Set(t.online);for(const i of this.drawActiveUids)e.has(i)||this.drawActiveUids.delete(i);for(const[i,o]of this.cursorInfoMap.entries())if(o){for(const[a,c]of o.entries()){const l=(n=(r=c.roomMember)==null?void 0:r.payload)==null?void 0:n.uid;l&&!e.has(l)&&o.delete(a)}o.size===0&&this.cursorInfoMap.delete(i)}}getKey(t,e){return`${t}${Bt}${e}`}getUidAndviewId(t){const[e,r]=t.split(Bt);return{uid:e,viewId:r}}removeRenderedCursorByUid(t,e){var r,n;for(const[i,o]of this.cursorInfoMap.entries()){if(!o||i===e)continue;let a=!1;for(const[c,l]of o.entries())((n=(r=l.roomMember)==null?void 0:r.payload)==null?void 0:n.uid)===t&&(o.delete(c),a=!0);a&&(o.size===0&&this.cursorInfoMap.delete(i),this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([We.Cursor,i],o.size?Array.from(o.values(),c=>({x:c.x,y:c.y,roomMember:c.roomMember})):[]))}}dropAllEventCursor(t){var e,r;this.willConsumeEventWorkers.delete(t),this.animationEventWorkers.delete(t);for(const[n,i]of this.cursorInfoMap.entries()){if(!i)continue;let o=!1;for(const[a,c]of i.entries())c.type===0&&((r=(e=c.roomMember)==null?void 0:e.payload)==null?void 0:r.uid)===t&&(i.delete(a),o=!0);o&&(i.size===0&&this.cursorInfoMap.delete(n),this.doneRenderCursorInfoMap.delete(n),this.internalMsgEmitter.emit([We.Cursor,n],i.size?Array.from(i.values(),a=>({x:a.x,y:a.y,roomMember:a.roomMember})):[]))}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const t=this.control.viewContainerManager.focuedViewId;for(const[r,n]of this.animationDrawWorkers.entries()){const{viewId:i,uid:o}=this.getUidAndviewId(r);o!==((e=this.control.collector)==null?void 0:e.uid)&&i!==t&&n.workState===de.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){var r,n,i,o;this.animationId=void 0;const t=this.control.worker.now;for(const[a,c]of this.animationDrawWorkers.entries()){const{uid:l,viewId:u}=this.getUidAndviewId(a),h=this.roomMember.getRoomMember(l);if(!h){this.animationDrawWorkers.delete(a),this.drawActiveUids.delete(l);continue}const{consumPoint:d,timestamp:f,workState:g,cursorTool:y}=c,T=this.cursorInfoMap.get(u)||new Map;if(d&&ve.isNumber(d[0])&&ve.isNumber(d[1])&&f+this.expirationTime>t){const x=(r=h.payload)==null?void 0:r.uid;x&&(this.removeRenderedCursorByUid(x,u),Lp(T,x,h.memberId)),T.set(h.memberId,{x:d[0],y:d[1],roomMember:h,timestamp:f,type:1,workState:g,cursorTool:y})}else T.delete(h.memberId),this.drawActiveUids.delete(l);T.size?this.cursorInfoMap.set(u,T):this.cursorInfoMap.delete(u),this.animationDrawWorkers.delete(a)}const e=new Set;for(const[a,c]of this.cursorInfoMap.entries())if(c)for(const[l,u]of c.entries())u.type===1&&u.workState!==de.Done&&e.add(l);else this.cursorInfoMap.delete(a);for(const[a,c]of this.willConsumeEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(ve.isNumber(l==null?void 0:l.memberId)&&!e.has(l.memberId)){const u=c.pop();u?this.animationEventWorkers.set(a,u):this.willConsumeEventWorkers.delete(a)}}for(const[a,c]of this.animationEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(!l){this.animationEventWorkers.delete(a);continue}const{viewId:u,consumPoint:h,timestamp:d,cursorTool:f}=c,g=this.cursorInfoMap.get(u)||new Map;if(h&&ve.isNumber(h[0])&&ve.isNumber(h[1])&&d+this.expirationTime>t){const y=(n=l.payload)==null?void 0:n.uid;y&&(this.removeRenderedCursorByUid(y,u),Lp(g,y,l.memberId)),g.set(l.memberId,{x:h[0],y:h[1],roomMember:l,timestamp:d,type:0,cursorTool:f})}else g.delete(l.memberId);g.size?this.cursorInfoMap.set(u,g):this.cursorInfoMap.delete(u),this.animationEventWorkers.delete(a)}for(const a of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(a)||(this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]));for(const[a,c]of this.cursorInfoMap.entries())if(c!=null&&c.size){const l=[];for(const[h,d]of c.entries()){const{timestamp:f,...g}=d;if(f+this.expirationTime>t)l.push(g);else{const y=(o=(i=g.roomMember)==null?void 0:i.payload)==null?void 0:o.uid;y&&g.type===1&&g.workState!==de.Done&&this.drawActiveUids.delete(y),c.delete(h),c.size===0&&(this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]))}}const u=this.doneRenderCursorInfoMap.get(a);ve.isEqual(u,l)||(this.doneRenderCursorInfoMap.set(a,l),this.internalMsgEmitter.emit([We.Cursor,a],l))}else this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(t,e){var r;if(this.displayer&&De.isRoom(this.displayer)){const n=ve.isNumber(t[0])&&ve.isNumber(t[1])&&this.control.viewContainerManager.transformToScenePoint(t,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:n,viewId:e,cursorTool:Pc((r=this.control.worker.getCurrentToolsData())==null?void 0:r.toolsType)}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var t;this.displayer&&De.isRoom(this.displayer)&&this.displayer.isWritable&&this.displayer.dispatchMagixEvent(this.eventName,{type:As.Cursor,op:ve.cloneDeep(this.willSendEventWorkers),uid:(t=this.control.collector)==null?void 0:t.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(t){var a,c,l,u;if(!this.isEnableCursor)return;const{op:e,uid:r,workState:n,viewId:i,cursorTool:o}=t;if(r&&e&&n&&i){const h=this.roomMember.getRoomMember(r);if(!h||r===((a=this.control.collector)==null?void 0:a.uid))return;this.dropAllEventCursor(r),n===de.Done?this.drawActiveUids.delete(r):this.drawActiveUids.add(r);const d=this.getKey(r,i);let f=[void 0,void 0];if(ve.isNumber(e[0])&&ve.isNumber(e[1])){const[x,C]=this.control.viewContainerManager.transformToOriginPoint(e,i);f=[x,C]}const g=((c=this.animationDrawWorkers.get(d))==null?void 0:c.cursorTool)||((u=(l=this.cursorInfoMap.get(i))==null?void 0:l.get(h.memberId))==null?void 0:u.cursorTool),y=lye(o,g)||Le.pencil,T={consumPoint:f,workState:n,viewId:i,timestamp:this.control.worker.now,cursorTool:y};if(n===de.Start||n===de.Done){const x=this.willConsumeEventWorkers.get(r);n===de.Start&&x&&this.willConsumeEventWorkers.delete(r)}this.animationDrawWorkers.set(d,T),this.runAnimation()}}unabled(){var t;this.displayer&&De.isRoom(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:As.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(t=this.control.collector)==null?void 0:t.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)),this.isEnableCursor||this.stopAnimation()}clearViewCursor(t){for(const[e]of this.animationDrawWorkers.entries()){const{viewId:r}=this.getUidAndviewId(e);r===t&&this.animationDrawWorkers.delete(e)}for(const[e,r]of this.willConsumeEventWorkers.entries()){const n=r.filter(i=>i.viewId!==t);n.length?this.willConsumeEventWorkers.set(e,n):this.willConsumeEventWorkers.delete(e)}for(const[e,r]of this.animationEventWorkers.entries())r.viewId===t&&this.animationEventWorkers.delete(e);this.cursorInfoMap.delete(t),this.doneRenderCursorInfoMap.delete(t),this.internalMsgEmitter.emit([We.Cursor,t],[])}stopAnimation(){this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.animationEventWorkers.clear(),this.drawActiveUids.clear(),this.cursorInfoMap.clear(),this.doneRenderCursorInfoMap.clear(),this.willSendEventWorkers.length=0,this.sendEventTimerId!==void 0&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}destroy(){var t;(t=this.displayer)==null||t.removeMagixEventListener(this.eventName),this.stopAnimation()}}function Fu(s,t,e){const r=e(s);return!!t&&!!r&&t===r}function q0e(s,t){return!s.isService||!s.viewId||s.isAllViews?!0:Fu(s.viewId,s.scenePath,t)}function Z0e(s,t,e){return q0e(s,e)?!s.viewId||s.isAllViews||t(s.viewId)?"dispatch":"pending":"discard"}class gr{constructor(){E(this,"activeScenePath");E(this,"activeUndoTickerId");E(this,"forceEndedContext");E(this,"useEmtMsg");E(this,"emtType");E(this,"control");E(this,"mainEngine");E(this,"collectListener",(t,e)=>{const r=t;if(r.workState===de.Start)this.forceEndedContext=void 0,this.useEmtMsg=!1;else if(this.forceEndedContext&&(!this.forceEndedContext.viewId||this.forceEndedContext.viewId===r.viewId)&&(!this.forceEndedContext.scenePath||!r.scenePath||this.forceEndedContext.scenePath===r.scenePath))return;this.collect(t,e)})}static dispatch(t,e,r){var n;(n=tt.InternalMsgEmitter)==null||n.emit([t,e],r)}get serviceColloctor(){return this.control.collector}registerForMainEngine(t,e){return this.emtType=t,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collectListener),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collectListener)}collectForLocalWorker(t,e){var r,n,i;for(const[o,a]of t)(r=this.mainEngine)==null||r.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(n=this.mainEngine)==null||n.taskBatchData.add(o);if(e){this.mainEngine.consume();return}(i=this.mainEngine)==null||i.runAnimation()}collectForServiceWorker(t){Pr(()=>{t.forEach(e=>{var r;(r=this.serviceColloctor)==null||r.dispatch(e)})},this.mainEngine.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback"))}onAbort(t){}abort(t,e){var u;const r=this.lastEmtData,n=(u=this.control)==null?void 0:u.collector,i=e?(n==null?void 0:n.getLocalId(e))||e:void 0,o=r?[r.workId,...r.workIds||[]].filter(h=>h!==void 0).map(h=>h.toString()):[],a=i===void 0||o.some(h=>{const d=(n==null?void 0:n.getLocalId(h))||h;return h===e||d===i}),c=!!r&&(!t||r.viewId===t)&&a,l=!!this.forceEndedContext&&(!t||this.forceEndedContext.viewId===t);if(!c&&!l)return!1;if(c){const h=this.activeUndoTickerId;this.onAbort(h),this.forceEndedContext={viewId:r.viewId,scenePath:this.activeScenePath||r.scenePath},this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0}return this.useEmtMsg=!1,c}async pause(t,e){var r;if(this.lastEmtData){const n=this.lastEmtData;if(t&&n.viewId!==t||e&&this.activeScenePath!==e)return;this.useEmtMsg=!0;const i=this.activeUndoTickerId,o={...n,scenePath:this.activeScenePath||n.scenePath,workState:de.Done};return await this.collect(o,!0),this.forceEndedContext={viewId:n.viewId,scenePath:o.scenePath},(r=tt.InternalMsgEmitter)==null||r.emit(Te.ActiveMethod,!1,n.viewId),i}}recover(t,e){var n;const r=this.forceEndedContext;!this.useEmtMsg||!r||t&&r.viewId!==t||e&&r.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0,tt.InternalMsgEmitter.hasListeners(Te.ActiveMethod)&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!0,r.viewId)))}discardRecovery(t,e){const r=this.forceEndedContext;!r||t&&r.viewId!==t||e&&r.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0)}}function U0(s,t,e){return`${e.isLocalId(s)?s:e.getLocalId(s)}-${t}`}function K0e(s,t,e){const r=new Map,n=[];for(const i of s){const o=U0(i,t,e);r.set(i,o),n.push(o)}return{copyNodeKeyBySourceKey:r,expectedWorkIds:n}}class X0e extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.CopyNode)}collect(e){var l;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",c,n,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncCopyNode});for(const u of r){const h=u.toString(),f=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(u):h,g=(l=this.serviceColloctor.getStorageData(n,a))==null?void 0:l[f];if(g){if(u===Ne){const y=g&&this.copySelector({viewId:n,store:dt(g)});y&&this.pasteSelector({...y,viewId:n,scenePath:a,undoTickerId:c,requestId:i});break}if(g.toolsType===q.Text&&g.opt&&g.opt.workState&&g.opt.workState!==de.Done){const y=g&&this.copyText({viewId:n,store:dt(g)});y&&this.pasteText({...y,viewId:n,scenePath:a,key:f,store:g,undoTickerId:c,requestId:i});break}}}}copyText(e){const{viewId:r,store:n}=e,i=this.control.viewContainerManager.getView(r);if(!this.serviceColloctor||!i)return;const o=i==null?void 0:i.cameraOpt,a=o&&[o.centerX,o.centerY],c=n.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var T,x;const{bgCenter:r,textCenter:n,store:i,key:o,viewId:a,scenePath:c,undoTickerId:l,requestId:u}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const d=Math.floor(Math.random()*30+1),f=((T=h.cameraOpt)==null?void 0:T.scale)||1,g=r&&n&&[r[0]-n[0]+d,r[1]-n[1]+d]||[d/f,d/f],y=U0(o,l,this.serviceColloctor);if(i.toolsType===q.Text&&i.opt){const C=i.opt;if(C&&C.boxPoint&&C.text){C.workState=de.Done;const L=C.boxPoint;C.boxPoint=[Math.round(L[0]+g[0]),Math.round(L[1]+g[1])],C.workState=de.Done;const S=this.control.viewContainerManager.transformToOriginPoint(C.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:y,x:S[0],y:S[1],opt:C,scale:((x=h.cameraOpt)==null?void 0:x.scale)||1,type:Tr.Text,isActive:!1,viewId:a,scenePath:c,requestId:u,emitEventType:Te.CopyNode}),this.collectForServiceWorker([{...i,opt:C,type:le.FullWork,workId:y,viewId:a,scenePath:c,needUndoTicker:l,requestId:u,emitEventType:Te.CopyNode}]),l&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",l,a,[y],c)}}}copySelector(e){var y,T,x,C,L,S,p,m,M;const{viewId:r,store:n}=e,i=this.control.viewContainerManager.getView(r),o=n.selectIds;if(!this.serviceColloctor||!(o!=null&&o.length)||!i)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((y=i.cameraOpt)==null?void 0:y.centerX)||0,centerY:((T=i.cameraOpt)==null?void 0:T.centerY)||0,scale:((x=i.cameraOpt)==null?void 0:x.scale)||1}},l=this.control.hasOffscreenCanvas&&((C=i.displayer.canvasBgRef.current)==null?void 0:C.getBoundingClientRect())||((L=i.displayer.canvasContainerRef.current)==null?void 0:L.getBoundingClientRect()),u=(p=(S=i.displayer)==null?void 0:S.floatBarRef.current)==null?void 0:p.getBoundingClientRect(),h=l&&[l.x+l.width/2,l.y+l.height/2],d=u&&[u.x+u.width/2,u.y+u.height/2],f=h&&i.viewData&&i.viewData.convertToPointInWorld({x:h[0],y:h[1]}),g=d&&i.viewData&&i.viewData.convertToPointInWorld({x:d[0],y:d[1]});f&&g&&(c.offset={x:f.x-g.x,y:f.y-g.y});for(const v of o){const R=this.serviceColloctor.isLocalId(v)?this.serviceColloctor.transformKey(v):v,b=(M=(m=this.serviceColloctor)==null?void 0:m.getStorageData(i.id,i.focusScenePath))==null?void 0:M[R];b&&a.set(v,dt(b))}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var L,S,p,m;const{copyStores:r,copyCoordInfo:n,viewId:i,scenePath:o,undoTickerId:a,requestId:c}=e,l=this.control.viewContainerManager.getView(i);if(!r.size||!this.serviceColloctor||!l)return;const{offset:u,cameraOpt:h}=n,{scale:d}=h,f=Math.floor(Math.random()*30+1),g=u&&[u.x+f,u.y+f]||[f/d,f/d],y=[],T=[],{copyNodeKeyBySourceKey:x,expectedWorkIds:C}=K0e(r.keys(),a,this.serviceColloctor);a&&C.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",a,i,C,o);for(const[M,v]of r.entries()){const R=x.get(M);if(!R)continue;const b={useAnimation:!1};if(v.toolsType===q.Text&&v.opt){const P=v.opt;if(P&&P.boxPoint&&P.text){P.workState=de.Done;const D=P.boxPoint;P.boxPoint=[Math.round(D[0]+g[0]),Math.round(D[1]+g[1])],P.workState=de.Done;const z=this.control.viewContainerManager.transformToOriginPoint(P.boxPoint,i);this.control.textEditorManager.createTextForMasterController({workId:R,x:z[0],y:z[1],opt:P,scale:((L=l.cameraOpt)==null?void 0:L.scale)||1,type:Tr.Text,isActive:!1,viewId:i,scenePath:o,requestId:c,emitEventType:Te.CopyNode})}T.push({...v,opt:P,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode});continue}if((v.toolsType===q.Image||v.toolsType===q.BackgroundSVG)&&(v.opt.uuid=R,v.opt.centerX=v.opt.centerX+g[0],v.opt.centerY=v.opt.centerY+g[1]),v.ops){const P=Nn(v.ops).map((z,j)=>{const k=j%3;return k===0?z+g[0]:k===1?z+g[1]:z}),D=At(P);v.ops=D}if((S=v==null?void 0:v.opt)!=null&&S.eraserlines&&(p=v==null?void 0:v.opt)!=null&&p.eraserlines.length)for(const P of(m=v==null?void 0:v.opt)==null?void 0:m.eraserlines){const{op:D}=P;for(let z=0;z<D.length;z++){const j=D[z].map((k,A)=>A%2?k+g[1]:k+g[0]);P.op[z]=j}}T.push({...v,updateNodeOpt:b,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode}),y.push([{...v,updateNodeOpt:b,workId:R,msgType:le.FullWork,dataType:Re.Local,emitEventType:Te.CopyNode,willSyncService:!1,willRefresh:!0,viewId:i,scenePath:o,requestId:c,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i),isRunBackgroundThread:this.control.isUseBackgroundThread},{workId:R,msgType:le.FullWork,emitEventType:Te.CopyNode}])}y.length&&this.collectForLocalWorker(y),T.length&&this.collectForServiceWorker(T)}}class J0e extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.SetColorNode);E(this,"undoTickerId")}onAbort(e){this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}ensureUndoTicker(e,r,n,i){if(!(n===de.Start||n===de.Done&&!this.undoTickerId))return this.undoTickerId;const a=this.mainEngine.now;return this.undoTickerId=a,this.activeUndoTickerId=a,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.MethodSetColorNode}),a}setTextColor(e,r,n,i,o,a){const{fontColor:c,fontBgColor:l}=n;r.opt&&(c&&(r.opt.fontColor=c),l&&(r.opt.fontBgColor=l),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:r.opt,viewId:i,canSync:!0,canWorker:!0,requestId:o,needUndoTicker:a}))}collect(e,r){var m,M;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,strokeColor:i,fillColor:o,fontColor:a,fontBgColor:c,viewId:l,workState:u,thickness:h,strokeType:d,requestId:f}=e,g=this.control.viewContainerManager.getView(l);if(!(g!=null&&g.displayer))return;if(u===de.Start)this.activeScenePath=e.scenePath||g.focusScenePath;else if(u===de.Doing&&!this.activeScenePath)return;const y=e.scenePath||this.activeScenePath||g.focusScenePath;u!==de.Done&&(this.lastEmtData={...e,scenePath:y});const T=[...n],x=this.serviceColloctor.storage,C=[],L={},S=this.ensureUndoTicker(l,y,u,n);this.undoTickerId&&(this.control.textEditorManager.UndoTickerId=this.undoTickerId);const p=new Set;for(;T.length;){const v=T.pop();if(!v)continue;const R=v.toString(),b=this.serviceColloctor.isLocalId(R),P=b?this.serviceColloctor.transformKey(v):R;let D=R;!b&&this.serviceColloctor.isOwn(D)&&(D=this.serviceColloctor.getLocalId(D));const z=(M=(m=x==null?void 0:x[l])==null?void 0:m[y])==null?void 0:M[P];if(z){const j=z.updateNodeOpt||{};if(a||c){if(a){j.fontColor=a;const[A,N,W,Y]=xs(a);L.textColor=[A,N,W],L.textOpacity=Y}if(c)if(j.fontBgColor=Jo(c)?"transparent":c,Jo(c))L.textBgColor=void 0,L.textBgOpacity=void 0;else{const[A,N,W,Y]=xs(c);L.textBgColor=[A,N,W],L.textBgOpacity=Y}if(z.toolsType===q.Text&&z.opt&&u!==de.Start){D&&u===de.Done&&p.add(D.toString()),this.setTextColor(D,dt(z),j,l,f,u===de.Done&&S||void 0);continue}}if(i){j.strokeColor=i;const[A,N,W,Y]=xs(i);L.strokeColor=[A,N,W],L.strokeOpacity=Y}if(o)if(j.fillColor=Jo(o)?"transparent":o,Jo(o))L.fillColor=void 0,L.fillOpacity=void 0;else{const[A,N,W,Y]=xs(o);L.fillColor=[A,N,W],L.fillOpacity=Y}h&&(j.thickness=h,L.strokeWidth=h),d&&(L.strokeType=d,j.strokeType=d,j.lineCap=this.control.getLineCap(d),j.lineDash=this.control.getLineDash(d));const k={workId:D,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:j,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:l,scenePath:y,requestId:f,needUndoTicker:u===de.Done&&S||void 0};D&&u===de.Done&&p.add(D.toString()),C.push([k,{workId:D,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}if(u===de.Done&&S){const v=[...p];v.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",S,l,v,y)}C.length?(u===de.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),this.collectForLocalWorker(C,r)):u===de.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),Object.keys(L).length&&setTimeout(()=>{var v;(v=this.control.room)==null||v.setMemberState(L)},0),u===de.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class _0e extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.ZIndexNode);E(this,"zIndexMap",new Map);E(this,"zIndexMapForBackgroundSVG",new Map)}clearZIndex(e){this.zIndexMap.delete(e),this.zIndexMapForBackgroundSVG.delete(e)}getMinZIndex(e){var r;return((r=this.zIndexMap.get(e))==null?void 0:r.min)||0}getMinZIndexForBackgroundSVG(e){var r;return((r=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:r.min)||0}getMaxZIndex(e){var r;return((r=this.zIndexMap.get(e))==null?void 0:r.max)||0}getMaxZIndexForBackgroundSVG(e){var r;return((r=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:r.max)||0}setMaxZIndex(e,r){const n=this.getMinZIndex(r);this.zIndexMap.set(r,{min:n,max:e})}setMaxZIndexForBackgroundSVG(e,r){const n=this.getMinZIndexForBackgroundSVG(r);this.zIndexMapForBackgroundSVG.set(r,{min:n,max:e})}setMinZIndex(e,r){const n=this.getMaxZIndex(r);this.zIndexMap.set(r,{min:e,max:n})}setMinZIndexForBackgroundSVG(e,r){const n=this.getMaxZIndexForBackgroundSVG(r);this.zIndexMapForBackgroundSVG.set(r,{min:e,max:n})}addMaxLayer(e){const r=this.getMaxZIndex(e)+1;this.setMaxZIndex(r,e)}addMaxLayerForBackgroundSVG(e){const r=this.getMaxZIndexForBackgroundSVG(e)+1;this.setMaxZIndexForBackgroundSVG(r,e)}addMinLayer(e){const r=this.getMinZIndex(e)-1;this.setMinZIndex(r,e)}addMinLayerForBackgroundSVG(e){const r=this.getMinZIndexForBackgroundSVG(e)-1;this.setMinZIndexForBackgroundSVG(r,e)}correct(e){const r=e.sort((n,i)=>n[1]-i[1]);for(let n=1;n<r.length;n++){const i=r[n][1],o=r[n-1][1];i<=o&&(r[n][1]=o+1)}return r}collect(e){var T,x;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,layer:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=[],f=[],g=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,i,{render:!0,storage:!0,source:$e.AsyncZIndexNode});l.length;){const C=l.pop();if(!C)continue;const L=C.toString(),S=this.serviceColloctor.isLocalId(L),p=S?this.serviceColloctor.transformKey(C):L;let m=L;!S&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const M=dt(u[i][c][p]);let v,R;if(M&&m===Ne){if(M.selectIds){for(const D of M.selectIds){const z=y(D,this.serviceColloctor),j=(x=(T=u==null?void 0:u[i])==null?void 0:T[c])==null?void 0:x[z];j&&j.toolsType===q.BackgroundSVG?(f.push(D),f.sort((k,A)=>{var Y,Q,ie,O;const N=((Q=(Y=u[y(k,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,W=((O=(ie=u[y(k,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:O.zIndex)||0;return N>W?1:k<A?-1:0})):(d.push(D),d.sort((k,A)=>{var Y,Q,ie,O;const N=((Q=(Y=u[y(k,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,W=((O=(ie=u[y(k,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:O.zIndex)||0;return N>W?1:k<A?-1:0}))}const b=M.updateNodeOpt||{};b.zIndexLayer=n;const P={workId:C,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:b,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};d.length&&(n===In.Top?(this.addMaxLayer(i),v=this.getMaxZIndex(i)):(this.addMinLayer(i),v=this.getMinZIndex(i)),d.forEach(D=>{var A,N,W,Y,Q;const z=(A=this.serviceColloctor)==null?void 0:A.isLocalId(D);let j=z&&((N=this.serviceColloctor)==null?void 0:N.transformKey(D))||D;const k=(Y=(W=u==null?void 0:u[i])==null?void 0:W[c])==null?void 0:Y[j];k&&(!z&&((Q=this.serviceColloctor)!=null&&Q.isOwn(j))&&(j=this.serviceColloctor.getLocalId(j)),b.zIndex=v,k!=null&&k.opt&&(k.opt.zIndex=v))})),f.length&&(n===In.Top?(this.addMaxLayerForBackgroundSVG(i),R=this.getMaxZIndexForBackgroundSVG(i)):(this.addMinLayerForBackgroundSVG(i),R=this.getMinZIndexForBackgroundSVG(i)),f.forEach(D=>{var A,N,W,Y,Q;const z=(A=this.serviceColloctor)==null?void 0:A.isLocalId(D);let j=z&&((N=this.serviceColloctor)==null?void 0:N.transformKey(D))||D;const k=(Y=(W=u==null?void 0:u[i])==null?void 0:W[c])==null?void 0:Y[j];k&&(!z&&((Q=this.serviceColloctor)!=null&&Q.isOwn(j))&&(j=this.serviceColloctor.getLocalId(j)),b.zIndexForBackgroundSVG=R,k!=null&&k.opt&&(k.opt.zIndex=R))})),P.willSerializeData=!0,h.push([P,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",g,i,h.map(([C])=>{var L;return(L=C.workId)==null?void 0:L.toString()}).filter(Boolean),c),this.collectForLocalWorker(h));function y(C,L){return L.isLocalId(C)&&L.transformKey(C)||C}}}class eMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.TranslateNode);E(this,"cachePosition")}onAbort(){this.cachePosition=void 0}collect(e,r){var y,T,x;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,position:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===de.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodTranslateNode}));u.length;){const C=u.pop();if(!C)continue;const L=C.toString(),S=this.serviceColloctor.isLocalId(L),p=S&&this.serviceColloctor.transformKey(C)||L;let m=L;!S&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const M=(x=(T=h==null?void 0:h[a])==null?void 0:T[l])==null?void 0:x[p];if(M&&m===Ne){if(M.selectIds){o===de.Done&&M.selectIds.forEach(R=>{f.add(R.toString())});const v=this.control.viewContainerManager.transformToScenePoint([i.x,i.y],a);if(o===de.Start&&(this.cachePosition=v),this.cachePosition){const R=M.updateNodeOpt||{};R.translate=[v[0]-this.cachePosition[0],v[1]-this.cachePosition[1]],R.workState=o,this.control.cursor.isEnableCursor?R.useAnimation=!1:(R.uid=this.serviceColloctor.uid,o===de.Start?R.useAnimation=!1:o===de.Done&&(R.useAnimation=!0));const b={workId:C,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:R,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===de.Done&&(b.textUpdateForWoker=!0,b.willSerializeData=!0,this.cachePosition=void 0,b.needUndoTicker=this.activeUndoTickerId),d.push([b,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}}continue}}if(o===de.Start?this.mainEngine.unWritable():o===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===de.Done){const C=this.activeUndoTickerId;if(C){const L=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",C,a,L,l)}}this.collectForLocalWorker(d,r)}o===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class tMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.DeleteNode)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.serviceColloctor.storage,l=[...r],u=[],h=[],d=this.mainEngine.now;for(this.control.textEditorManager.UndoTickerId=d;l.length;){const y=l.pop();if(!y)continue;const T=y.toString(),x=this.serviceColloctor.isLocalId(T),C=x?this.serviceColloctor.transformKey(y):T,L=(g=(f=c==null?void 0:c[n])==null?void 0:f[a])==null?void 0:g[C];if(L){let S=T;if(!x&&this.serviceColloctor.isOwn(S)&&(S=this.serviceColloctor.getLocalId(S)),L.toolsType===q.Text){this.control.textEditorManager.delete(S,!0,!0);continue}h.push(S)}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncDeleteNode}),this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.slice(),a),u.push([{msgType:le.RemoveNode,emitEventType:Te.DeleteNode,removeIds:h,dataType:Re.Local,willSyncService:!0,willRefresh:!0,viewId:n,requestId:i,isRunBackgroundThread:this.control.isUseBackgroundThread,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)},void 0]),this.collectForLocalWorker(u))}}class rMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.ScaleNode);E(this,"targetText",new Map);E(this,"cacheTextInfo",new Map)}onAbort(e){this.targetText.clear(),this.cacheTextInfo.clear(),this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}async setTextStyle(e,r,n){const i=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:r,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:i}}async collect(e,r){var C,L,S,p,m,M,v;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,workState:i,viewId:o,originPoint:a,scenePoint:c,dir:l,scale:u,translate:h}=e,d=this.control.viewContainerManager.getView(o);if(!(d!=null&&d.displayer))return;if(i===de.Start)this.activeScenePath=e.scenePath||d.focusScenePath;else if(!this.activeScenePath)return;const f=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:f};const g=[...n],y=(C=this.serviceColloctor)==null?void 0:C.storage,T=[],x=i===de.Start&&this.mainEngine.now||void 0;for(x&&(this.activeUndoTickerId=x,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",x,o,{render:!0,storage:!0,isWritable:!0,source:$e.MethodScaleNode}),this.control.textEditorManager.UndoTickerId=x);g.length;){const R=g.pop();if(!R)continue;const b=R.toString(),P=this.serviceColloctor.isLocalId(b),D=P&&this.serviceColloctor.transformKey(R)||b;let z=b;!P&&this.serviceColloctor.isOwn(z)&&(z=this.serviceColloctor.getLocalId(z));const j=(S=(L=y==null?void 0:y[o])==null?void 0:L[f])==null?void 0:S[D];if(j&&z===Ne&&j.selectIds){const k=j.updateNodeOpt||{};if(k.dir=l,k.originPoint=a,k.scenePoint=c,k.workState=i,k.scale=u,k.translate=h,i===de.Start){this.cacheTextInfo.clear();for(const N of j.selectIds){const W=(p=this.serviceColloctor)==null?void 0:p.isLocalId(N),Y=W&&((m=this.serviceColloctor)==null?void 0:m.transformKey(N))||N;let Q=Y;!W&&((M=this.serviceColloctor)!=null&&M.isOwn(Y))&&(Q=this.serviceColloctor.getLocalId(Y));const ie=this.control.textEditorManager.get(Q);ie&&i===de.Start&&this.targetText.set(Q,dt(ie))}}if(this.targetText.size&&i!==de.Start&&u){const N=[];for(const[Y,Q]of this.targetText.entries()){const{opt:ie}=Q,O=Math.floor(ie.fontSize*u[0]),V=this.cacheTextInfo.get(Y),Z=!V&&ie.fontSize!==O||V&&V.fontSize!==O||!1,$=(v=this.control.textEditorManager.get(Y))==null?void 0:v.opt;if(Z&&$&&ie.boxSize&&ie.boxPoint){const ee=this.setTextStyle(Y,{...$,fontSize:O},o);N.push(ee)}}const W=await Promise.all(N);for(const Y of W)if(Y){const{key:Q,textInfo:ie}=Y;this.cacheTextInfo.set(Q,{fontSize:ie.opt.fontSize,boxSize:ie.opt.boxSize,boxPoint:ie.opt.boxPoint})}k.textInfos=this.cacheTextInfo}this.control.cursor.isEnableCursor?k.useAnimation=!1:(k.uid=this.serviceColloctor.uid,i===de.Start?k.useAnimation=!1:i===de.Done&&(k.useAnimation=!0));const A={workId:R,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:k,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:o,scenePath:f,smoothSync:this.mainEngine.smoothSync};i===de.Done&&(A.willSerializeData=!0,this.targetText.clear(),A.needUndoTicker=this.activeUndoTickerId),T.push([A,{workId:R,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:i}]);continue}}if(i===de.Start?this.mainEngine.unWritable():i===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),T.length){if(i===de.Done){const R=this.activeUndoTickerId;R&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",R,o,T.map(([b])=>{var P;return(P=b.workId)==null?void 0:P.toString()}).filter(Boolean),f)}this.collectForLocalWorker(T,r)}i===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class nMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.RotateNode);E(this,"cacheOriginRotate",0)}onAbort(){this.cacheOriginRotate=0}collect(e,r){var y,T,x,C,L,S,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,angle:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===de.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodRotateNode}));u.length;){const m=u.pop();if(!m)continue;const M=m.toString(),v=this.serviceColloctor.isLocalId(M),R=v&&this.serviceColloctor.transformKey(m)||M;let b=M;!v&&this.serviceColloctor.isOwn(b)&&(b=this.serviceColloctor.getLocalId(b));const P=(x=(T=h==null?void 0:h[a])==null?void 0:T[l])==null?void 0:x[R];if(P&&b===Ne){if(((C=P.selectIds)==null?void 0:C.length)===1){const D=P.selectIds[0];if(o===de.Done&&f.add(D.toString()),o===de.Start){const A=((L=this.serviceColloctor)==null?void 0:L.isLocalId(D))&&((S=this.serviceColloctor)==null?void 0:S.transformKey(D))||D,N=h[a][l][A];this.cacheOriginRotate=((p=N==null?void 0:N.opt)==null?void 0:p.rotate)||0}const z=P.updateNodeOpt||{};z.angle=(i+this.cacheOriginRotate)%360,z.workState=o,this.control.cursor.isEnableCursor?z.useAnimation=!1:(z.uid=this.serviceColloctor.uid,o===de.Start?z.useAnimation=!1:o===de.Done&&(z.useAnimation=!0));const j={workId:m,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===de.Done&&(j.willRefreshSelector=!0,j.willSerializeData=!0,this.cacheOriginRotate=0,j.needUndoTicker=this.activeUndoTickerId),d.push([j,{workId:m,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}continue}}if(o===de.Start?this.mainEngine.unWritable():o===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===de.Done){const m=this.activeUndoTickerId;if(m){const M=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",m,a,M,l)}}this.collectForLocalWorker(d,r)}o===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class iMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.SetFontStyle);E(this,"timerId")}async setTextStyle(e,r,n,i,o,a){const{bold:c,underline:l,lineThrough:u,italic:h,fontSize:d}=n;if(r.toolsType&&hye(r.toolsType)===Tr.Text){r.opt&&(c&&(r.opt.bold=c),ve.isBoolean(l)&&(r.opt.underline=l),ve.isBoolean(u)&&(r.opt.lineThrough=u),h&&(r.opt.italic=h),d&&(r.opt.fontSize=d));const g=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:r.opt,viewId:i,canSync:!1,canWorker:!1,requestId:o,needUndoTicker:a});return{key:e,textInfo:g}}}async collect(e){var p,m,M,v,R,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,bold:n,italic:i,lineThrough:o,underline:a,viewId:c,fontSize:l,requestId:u}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const d=h.focusScenePath,f=[...r],g=this.serviceColloctor.storage,y={},T=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",T,c,{render:!0,storage:!0,source:$e.AsyncSetFontStyle}),this.control.textEditorManager.UndoTickerId=T;const x=new Set,C=[];for(;f.length;){const P=f.pop();if(!P)continue;const D=P.toString(),z=this.serviceColloctor.isLocalId(D),j=z?this.serviceColloctor.transformKey(P):D;let k=D;!z&&this.serviceColloctor.isOwn(k)&&(k=this.serviceColloctor.getLocalId(k));const A=(m=(p=g==null?void 0:g[c])==null?void 0:p[d])==null?void 0:m[j];if(A){const N=A.updateNodeOpt||{};if(n&&(N.bold=n,y.bold=n==="bold"),i&&(N.italic=i,y.italic=i==="italic"),ve.isBoolean(o)&&(N.lineThrough=o,y.lineThrough=o),ve.isBoolean(a)&&(N.underline=a,y.underline=a),l&&(N.fontSize=l,y.textSize=l),A.toolsType===q.Text&&A.opt){const W=this.setTextStyle(k,ve.cloneDeep(A),N,c,u,T);x.add(k),C.push(W);continue}if(A&&k===Ne&&((M=A.selectIds)!=null&&M.length))for(const W of A.selectIds){const Y=(v=this.serviceColloctor)==null?void 0:v.isLocalId(W);let Q=Y&&((R=this.serviceColloctor)==null?void 0:R.transformKey(W))||W;const ie=g[c][d][Q]||void 0;if(!Y&&((b=this.serviceColloctor)!=null&&b.isOwn(Q))&&(Q=this.serviceColloctor.getLocalId(Q)),ie&&ie.toolsType===q.Text&&ie.opt){const O=this.setTextStyle(Q,ve.cloneDeep(ie),N,c,u,T);x.add(Q),C.push(O);continue}}}}const L=[...x];if(!L.length){this.mainEngine.internalMsgEmitter.emit("cancelUndoTicker",T,c,d),this.control.textEditorManager.UndoTickerId===T&&(this.control.textEditorManager.UndoTickerId=void 0);return}this.mainEngine.internalMsgEmitter.emit("finalizeRequested",T,c,L,d);const S=await Promise.all(C);for(const P of S)if(P){const{key:D,textInfo:z}=P;z&&(z.canSync=!0,z.canWorker=!0,z.needUndoTicker=T,this.control.textEditorManager.updateForViewEdited(D,z))}Object.keys(y).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var P;this.timerId=void 0,(P=this.control.room)==null||P.setMemberState(y)},0))}}class sMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.SetPoint)}collect(e,r){var L,S,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:n,pointMap:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=(L=this.serviceColloctor)==null?void 0:L.storage,h=[],d=o===de.Start&&this.mainEngine.now||void 0;d&&(this.activeUndoTickerId=d,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodSetPoint}));const f=n;if(!f)return;const g=f.toString(),y=this.serviceColloctor.isLocalId(g),T=y&&this.serviceColloctor.transformKey(f)||g;let x=g;!y&&this.serviceColloctor.isOwn(x)&&(x=this.serviceColloctor.getLocalId(x));const C=(p=(S=u==null?void 0:u[a])==null?void 0:S[l])==null?void 0:p[T];if(C&&x===Ne&&C.selectIds){const m=C.updateNodeOpt||{};m.pointMap=i,m.workState=o;const M={workId:f,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:m,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:a,scenePath:l,needUndoTicker:o===de.Done&&this.activeUndoTickerId||void 0};h.push([M,{workId:f,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}o===de.Start?this.mainEngine.unWritable():o===de.Done&&this.mainEngine.abled(),h.length&&(o===de.Done&&this.activeUndoTickerId&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",this.activeUndoTickerId,a,h.map(([m])=>{var M;return(M=m.workId)==null?void 0:M.toString()}).filter(Boolean),l),this.collectForLocalWorker(h,r)),o===de.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class oMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.SetLock)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,isLocked:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,i,{render:!0,storage:!0,source:$e.AsyncSetLock});l.length;){const y=l.pop();if(!y)continue;const T=y.toString(),x=this.serviceColloctor.isLocalId(T),C=x?this.serviceColloctor.transformKey(y):T;let L=T;!x&&this.serviceColloctor.isOwn(L)&&(L=this.serviceColloctor.getLocalId(L));const S=(g=(f=u==null?void 0:u[i])==null?void 0:f[c])==null?void 0:g[C];if(S){const p=S.updateNodeOpt||{};p.isLocked=n;const m={workId:L,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};h.push([m,{workId:L,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,i,h.map(([y])=>{var T;return(T=y.workId)==null?void 0:T.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}class aMe extends gr{constructor(){super(...arguments);E(this,"lastEmtData");E(this,"emitEventType",Te.SetShapeOpt)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:r,viewId:n,requestId:i,...o}=e,a=this.control.viewContainerManager.getView(n);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...r],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncSetShapeOpt});l.length;){const y=l.pop();if(!y)continue;const T=y.toString(),x=this.serviceColloctor.isLocalId(T),C=x?this.serviceColloctor.transformKey(y):T;let L=T;!x&&this.serviceColloctor.isOwn(L)&&(L=this.serviceColloctor.getLocalId(L));const S=(g=(f=u==null?void 0:u[n])==null?void 0:f[c])==null?void 0:g[C];if(S){const p={...S.updateNodeOpt,...o,willRefresh:!0};if(S&&L===Ne){const m={workId:L,msgType:le.UpdateNode,dataType:Re.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n,requestId:i,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)};h.push([m,{workId:L,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.map(([y])=>{var T;return(T=y.workId)==null?void 0:T.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}const Np=[Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode];class Ve{constructor(t){E(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case Te.TranslateNode:return new eMe;case Te.ZIndexNode:return new _0e;case Te.CopyNode:return new X0e;case Te.SetColorNode:return new J0e;case Te.DeleteNode:return new tMe;case Te.ScaleNode:return new rMe;case Te.RotateNode:return new nMe;case Te.SetFontStyle:return new iMe;case Te.SetPoint:return new sMe;case Te.SetLock:return new oMe;case Te.SetShapeOpt:return new aMe}}getBuilder(t){return this.builders.get(t)}registerForMainEngine(t,e){return this.builders.forEach(r=>{r&&r.registerForMainEngine(t,e)}),this}destroy(){this.builders.forEach(t=>{t&&t.destroy()}),this.builders.clear()}async pause(){return await Promise.all([...this.builders.values()].map(t=>t==null?void 0:t.pause())),this}async finishActiveContinuousMethods(t,e){return(await Promise.all(Np.map(n=>{var i;return(i=this.builders.get(n))==null?void 0:i.pause(t,e)}))).filter(n=>n!==void 0)}abortActiveContinuousMethods(t,e){var n;let r=!1;return Np.forEach(i=>{var o;r=((o=this.builders.get(i))==null?void 0:o.abort(t,e))||r}),r&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!1,t)),r}recover(t,e){return this.builders.forEach(r=>{r&&r.recover(t,e)}),this}discardRecovery(t,e){return this.builders.forEach(r=>{r==null||r.discardRecovery(t,e)}),this}static emitMethod(t,e,r){gr.dispatch(t,e,r)}static activeListener(t){tt.InternalMsgEmitter.on(Te.ActiveMethod,t)}static unmountActiveListener(t){tt.InternalMsgEmitter.off(Te.ActiveMethod,t)}}const cMe="xiaomi-android-webview-offscreen-v1",lMe=new Set(["offscreenTransfer+webgl2","offscreenTransfer+webgl","offscreenTransfer+canvas2d","imageBitmap+webgl2","imageBitmap+webgl","imageBitmap+canvas2d","mainThread+canvas2d"]);function W0(s){return typeof s=="string"&&lMe.has(s)}function uMe(s){if(s==="mainThread+canvas2d")return{renderMode:"main-thread",contextType:"2d"};const[t,e]=s.split("+");return{renderMode:t==="offscreenTransfer"?"worker-offscreen-transfer":"worker-image-bitmap",contextType:e==="canvas2d"?"2d":e}}function Ht(s,t){return s==="main-thread"?"mainThread+canvas2d":`${s==="worker-offscreen-transfer"?"offscreenTransfer":"imageBitmap"}+${t==="2d"?"canvas2d":t}`}function hMe(s,t){return!!(s.fullWorkerUrl&&(t||s.subWorkerUrl))}const dMe={worker:!1,offscreenCanvas:!1,workerUrl:!1,offscreenTransfer:!1,imageBitmap:!1,webgl2:!1,webgl:!1},fMe=new Set(["__proto__","constructor","prototype"]),Vl=64;function pd(s){const e=s.replace(/_/g,".").split(".");if(!(e.length<1||e.length>4||e.some(r=>!/^\d+$/.test(r)||Number(r)>99999)||Number(e[0])<1))return e.map(r=>String(Number(r))).join(".")}function pn(s,t){const e=s.match(t);return e?pd(e[1]):void 0}function V0(s,t){const e=s.split(".").map(Number),r=t.split(".").map(Number);for(let n=0;n<r.length;n+=1){const i=(e[n]??0)-r[n];if(i!==0)return i}return 0}function md(s=typeof navigator>"u"?"":navigator.userAgent){if(pn(s,/\bArkWeb\/(\d+(?:\.\d+)*)/i)){const a=pn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return a?{kind:"harmonyArkWeb",version:a}:void 0}if(/\bAndroid\b/i.test(s)&&(/;\s*wv\)/i.test(s)||/\bVersion\/4\.0\b/i.test(s)&&/\bChrome\/\d+/i.test(s))){const c=pn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return c?{kind:"androidWebView",version:c}:void 0}const e=pn(s,/\b(?:iPhone|iPad|iPod).*?\bOS\s+(\d+(?:[_.]\d+)*)/i);if(e)return{kind:"iosWebView",version:e};const r=pn(s,/\bEdg(?:A)?\/(\d+(?:\.\d+)*)/i);if(r)return{kind:"web",browser:"edge",version:r};const n=pn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);if(n)return{kind:"web",browser:"chrome",version:n};const i=pn(s,/\bFirefox\/(\d+(?:\.\d+)*)/i);if(i)return{kind:"web",browser:"firefox",version:i};const o=pn(s,/\bVersion\/(\d+(?:\.\d+)*).*\bSafari\//i);return o?{kind:"web",browser:"safari",version:o}:void 0}function gMe(s,t=md(s)){return(t==null?void 0:t.kind)!=="androidWebView"||V0(t.version,"77")>0?!1:/\b(?:xiaomi|miui|mi[\s_-]*8)\b/i.test(s)}function yd(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;try{const t=Object.getPrototypeOf(s);return t===Object.prototype||t===null}catch{return!1}}function $0(s,t){if(!Number.isInteger(s))return!1;switch(t){case"renderMode":return s===vr.OffscreenTransfer||s===vr.ImageBitmap||s===vr.MainThread;case"canvasContext":return s===Ya.WebGL;case"maskTextureFormat":return s===Ju.SingleChannelTexture;case"maskTextureUpload":return s===_u.TextureSubImage2D;case"fontFaceFallback":return s===Zs.RefreshTextRender}}function pMe(s,t,e,r=[]){if(!yd(t))return;const n=Object.entries(t);n.length>Vl&&r.push(`worker blacklist exceeds ${Vl} rules`);let i;for(const[o,a]of n.slice(0,Vl)){if(fMe.has(o))continue;const c=pd(o);if(!c||!$0(a,e)){r.push(`invalid ${e} blacklist rule: ${o}`);continue}V0(s,c)<=0&&(i=i===void 0?a:Math.max(i,a))}return i}function mMe(s,t){var e;return t.kind==="web"?(e=s==null?void 0:s.web)==null?void 0:e[t.browser]:s==null?void 0:s[t.kind]}function Rs(s,t,e){const r=[];if(!yd(s))return{issues:r};if(!t)return r.push(`${e} blacklist runtime version unavailable`),{issues:r};const n=mMe(s,t);return n?{level:pMe(t.version,n,e,r),runtime:t,issues:r}:{runtime:t,issues:r}}function Vn(s,t,e){const r={};for(const n of[s,t])if(yd(n))for(const[i,o]of Object.entries(n)){const a=pd(i);!a||!$0(o,e)||(r[a]=Math.max(r[a]??0,o))}return Object.keys(r).length>0?r:void 0}function ws(s,t,e){var i,o,a,c,l,u,h,d;const r={chrome:Vn((i=s==null?void 0:s.web)==null?void 0:i.chrome,(o=t==null?void 0:t.web)==null?void 0:o.chrome,e),edge:Vn((a=s==null?void 0:s.web)==null?void 0:a.edge,(c=t==null?void 0:t.web)==null?void 0:c.edge,e),firefox:Vn((l=s==null?void 0:s.web)==null?void 0:l.firefox,(u=t==null?void 0:t.web)==null?void 0:u.firefox,e),safari:Vn((h=s==null?void 0:s.web)==null?void 0:h.safari,(d=t==null?void 0:t.web)==null?void 0:d.safari,e)},n={androidWebView:Vn(s==null?void 0:s.androidWebView,t==null?void 0:t.androidWebView,e),iosWebView:Vn(s==null?void 0:s.iosWebView,t==null?void 0:t.iosWebView,e),harmonyArkWeb:Vn(s==null?void 0:s.harmonyArkWeb,t==null?void 0:t.harmonyArkWeb,e),web:Object.values(r).some(Boolean)?r:void 0};return Object.fromEntries(Object.entries(n).filter(([,f])=>f!==void 0))}function yMe(s,t=typeof navigator>"u"?"":navigator.userAgent){const e=md(t);return Rs(s,e,"fontFaceFallback").level===Zs.RefreshTextRender}function Op(s){var t,e;if(typeof OffscreenCanvas!="function")return!1;try{const r=new OffscreenCanvas(1,1).getContext(s);return r?((e=(t=r.getExtension)==null?void 0:t.call(r,"WEBGL_lose_context"))==null||e.loseContext(),!0):!1}catch{return!1}}function vMe(){if(typeof OffscreenCanvas!="function")return!1;try{return!!new OffscreenCanvas(1,1).getContext("2d")}catch{return!1}}function MMe(){return typeof OffscreenCanvas=="function"&&typeof OffscreenCanvas.prototype.transferToImageBitmap=="function"}function wMe(s=!0){const t=typeof OffscreenCanvas=="function",e=typeof CanvasRenderingContext2D=="function"&&typeof CanvasRenderingContext2D.prototype.drawImage=="function";return{worker:typeof Worker=="function",offscreenCanvas:t,workerUrl:s,offscreenTransfer:typeof HTMLCanvasElement=="function"&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen=="function",imageBitmap:t&&vMe()&&MMe()&&e,webgl2:Op("webgl2"),webgl:Op("webgl")}}function SMe(s,t,e,r){return s==="main-thread"||t==="2d"||e===Ya.WebGL?"2d":t==="webgl"?r.webgl?"webgl":"2d":r.webgl2?"webgl2":r.webgl?"webgl":"2d"}function TMe(s){const t=s.userAgent??(typeof navigator>"u"?"":navigator.userAgent),e=s.capabilities??(s.useWorker==="mainThread"?dMe:wMe(s.workerUrl)),r=md(t),n=[],i=Rs(s.workerRenderModeBlacklist,r,"renderMode"),o=Rs(s.workerCanvasContextBlacklist,r,"canvasContext"),a=Rs(s.workerMaskTextureFormatBlacklist,r,"maskTextureFormat"),c=Rs(s.workerMaskTextureUploadBlacklist,r,"maskTextureUpload");n.push(...i.issues,...o.issues,...a.issues,...c.issues);let l=i.level;const u=o.level,h=a.level,d=c.level;gMe(t,r)&&(l=Math.max(l||0,vr.OffscreenTransfer),n.push(`compatibility-policy:${cMe}:skip-offscreen-transfer`));const f=(y,T)=>({renderMode:y,mainThreadRenderMode:l===vr.MainThread?"readback":"normal",contextType:SMe(y,s.requestedContextType,u||void 0,e),reason:T,capabilities:e,runtime:r,effectiveRenderModeLevel:l,effectiveContextLevel:u,effectiveMaskTextureFormatLevel:h,effectiveMaskTextureUploadLevel:d,issues:n});if(s.useWorker==="mainThread")return f("main-thread","use-worker-main-thread");if(!e.worker||!e.offscreenCanvas||!e.workerUrl)return f("main-thread","worker-capability-missing");if(l!==void 0&&l>=vr.ImageBitmap)return f("main-thread","render-mode-blacklist");if(!(!s.useSimple||l!==void 0&&l>=vr.OffscreenTransfer)&&e.offscreenTransfer)return f("worker-offscreen-transfer","default-offscreen-transfer");if(e.imageBitmap){const y=l===vr.OffscreenTransfer?"render-mode-blacklist":s.useSimple?"worker-capability-missing":"use-simple-false";return f("worker-image-bitmap",y)}return f("main-thread","image-bitmap-unavailable")}const CMe=500;function vd(s){const t=Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0));return Object.keys(t).length?` details=${JSON.stringify(t)}`:""}function IMe(s){return`[Appliance]: [${s.category}] stage=${s.stage} viewId=${s.viewId} generation=${s.generation??"pending"}${vd(s.details||{})}`}function bMe(s){return`[Appliance]: [view-init] status=success viewId=${s.viewId} generation=${s.generation??"pending"} state=init-reconcile currentStage=ready${vd(s.details||{})}`}class EMe{constructor(t,e={}){E(this,"delayMs");E(this,"schedule");E(this,"cancel");E(this,"states",new Map);E(this,"destroyed",!1);this.emit=t,this.delayMs=e.delayMs??CMe;const r=e.schedule,n=e.cancel;this.schedule=r?(i,o)=>r(i,o):(i,o)=>globalThis.setTimeout(i,o),this.cancel=n?i=>n(i):i=>globalThis.clearTimeout(i)}record(t){if(this.destroyed)return;t.restartView&&!this.hasViewLifecycle(t.viewId,t.lifecycleGeneration)&&this.cancelView(t.viewId);const e=t.viewId;let r=this.states.get(e);if(r&&t.generation!==void 0&&r.generation!==void 0&&t.generation!==r.generation&&(this.clearState(e,r),r=void 0),!r){const n={viewId:t.viewId,generation:t.generation,lifecycleGeneration:t.lifecycleGeneration,currentCategory:t.category,currentStage:t.stage,details:{},status:"pending"};r=n,this.states.set(e,n),this.updateState(n,t),this.scheduleState(e,n);return}this.updateState(r,t),this.scheduleState(e,r)}completeView(t){if(this.destroyed)return;this.record({category:"init-reconcile",viewId:t.viewId,generation:t.generation,stage:"ready",details:t.details});const e=this.states.get(t.viewId);e&&(t.generation!==void 0&&(e.generation=t.generation),e.status="success")}cancelView(t){const e=this.states.get(t);e&&this.clearState(t,e)}destroy(){if(!this.destroyed){this.destroyed=!0;for(const[t,e]of this.states)this.clearState(t,e)}}updateState(t,e){t.generation=e.generation??t.generation,t.lifecycleGeneration=e.lifecycleGeneration??t.lifecycleGeneration,t.currentCategory=e.category,t.currentStage=e.stage,t.details={...e.details||{}}}scheduleState(t,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0);try{e.timer=this.schedule(()=>{this.states.get(t)===e&&(e.timer=void 0,this.emitSummary(e),e.status==="success"&&this.states.get(t)===e&&this.states.delete(t))},this.delayMs)}catch(r){throw this.states.get(t)===e&&this.states.delete(t),r}}clearState(t,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0),this.states.get(t)===e&&this.states.delete(t)}hasViewLifecycle(t,e){var r;return e===void 0?!1:((r=this.states.get(t))==null?void 0:r.lifecycleGeneration)===e}formatSummary(t){return`[Appliance]: [view-init] status=${t.status} viewId=${t.viewId} generation=${t.generation??"pending"} state=${t.currentCategory} currentStage=${t.currentStage}${vd(t.details)}`}emitSummary(t){try{this.emit(this.formatSummary(t))}catch{}}}const $l=200;function xMe(s){return s instanceof TouchEvent||s instanceof window.TouchEvent||(s==null?void 0:s.touches)&&(s==null?void 0:s.touches.length)||(s==null?void 0:s.changedTouches)&&(s==null?void 0:s.changedTouches.length)}function RMe(s){return xMe(s)&&(s.touches&&s.touches.length===1||s.changedTouches&&s.changedTouches.length===1)}function AMe(s){return s.touches&&s.touches.length?{x:s.touches[0].pageX,y:s.touches[0].pageY}:s.changedTouches&&s.changedTouches.length?{x:s.changedTouches[0].pageX,y:s.changedTouches[0].pageY}:{x:s.pageX,y:s.pageY}}function kMe(s){const t=s.touches&&s.touches[0]||s.changedTouches&&s.changedTouches[0]||s;return{x:t.clientX,y:t.clientY}}class qs{constructor(t){E(this,"_logger");E(this,"initLogAggregator");E(this,"pendingArgsByChannel",new Map);E(this,"flushTimerByChannel",new Map);this._logger=t,this.initLogAggregator=new EMe(e=>this.emit("info",[e]))}emit(t,e){try{if(this._logger){this._logger[t](...e);return}(t==="info"?console.info:t==="warn"?console.warn:console.error)(...e)}catch{}}flush(t,e){const r=this.pendingArgsByChannel.get(e)||null;this.flushTimerByChannel.delete(e),this.pendingArgsByChannel.delete(e),r&&this.emit(t,r)}debounce(t,e,r,n){this.pendingArgsByChannel.set(e,r);const i=this.flushTimerByChannel.get(e);i!=null&&clearTimeout(i),this.flushTimerByChannel.set(e,setTimeout(()=>this.flush(t,e),n))}error(...t){this.emit("error",t)}info(...t){this.emit("info",t)}warn(...t){this.emit("warn",t)}errorDebounced(t,...e){this.debounce("error",t,e,$l)}infoDebounced(t,...e){this.debounce("info",t,e,$l)}warnDebounced(t,...e){this.debounce("warn",t,e,$l)}recordInitLogProgress(t){try{this.initLogAggregator.record(t)}catch{}}completeInitViewLogs(t){try{this.initLogAggregator.completeView(t)}catch{}}cancelInitViewLogs(t){try{this.initLogAggregator.cancelView(t)}catch{}}destroy(){this.initLogAggregator.destroy();for(const t of this.flushTimerByChannel.keys()){const e=this.flushTimerByChannel.get(t);e!==void 0&&clearTimeout(e)}this.flushTimerByChannel.clear(),this.pendingArgsByChannel.clear()}}function pt(s,t){try{const e=s;if(e.recordInitLogProgress){e.recordInitLogProgress(t);return}s.info(IMe(t))}catch{}}function PMe(s,t){try{const e=s;if(e.completeInitViewLogs){e.completeInitViewLogs(t);return}s.info(bMe(t))}catch{}}function ga(s,t){var e;try{(e=s==null?void 0:s.cancelInitViewLogs)==null||e.call(s,t)}catch{}}function DMe(s){return s===Be.Stroke?Be.Normal:s}function yi(s){const{pencilOptions:t}=s,e=DMe(t.strokeType);return{strokeColor:t.strokeColor,thickness:t.thickness,isOpacity:t.isOpacity,zIndex:t.zIndex,scale:t.scale,rotate:t.rotate,translate:t.translate,eraserlines:t.eraserlines,strokeType:e,lineCap:e===Be.Normal?void 0:t.lineCap,lineDash:e===Be.Normal?void 0:t.lineDash}}function Y0(s){return[s.start[0],s.start[1],0,s.end[0],s.end[1],0]}function Oc(s){const{minX:t,minY:e,maxX:r,maxY:n}=s.bbox;return[t,e,0,r,n,0]}function LMe(s){const{minX:t,minY:e,maxX:r,maxY:n}=s.bbox;return[t,e,0,r,e,0,r,n,0,t,n,0]}const NMe=(s,t)=>({toolsType:q.Straight,opt:yi(t),op:Y0(s)}),OMe=(s,t)=>({toolsType:q.Arrow,opt:yi(t),op:Y0(s)}),zMe=(s,t)=>({toolsType:q.Rectangle,opt:{...yi(t),fillColor:"transparent"},op:LMe(s)}),BMe=(s,t)=>({toolsType:q.Ellipse,opt:{...yi(t),fillColor:"transparent"},op:Oc(s)}),jMe=(s,t)=>({toolsType:q.Polygon,opt:{...yi(t),fillColor:"transparent",vertices:3,shapeType:Zt.Triangle},op:Oc(s)}),FMe=(s,t)=>({toolsType:q.Polygon,opt:{...yi(t),fillColor:"transparent",vertices:4,shapeType:Zt.Rhombus},op:Oc(s)}),UMe=(s,t)=>({toolsType:q.Star,opt:{...yi(t),fillColor:"transparent",vertices:10,innerVerticeStep:2,innerRatio:.4,shapeType:Zt.Pentagram},op:Oc(s)}),$n={straight:NMe,arrow:OMe,rectangle:zMe,ellipse:BMe,triangle:jMe,rhombus:FMe,star:UMe};function WMe(s){return At(s.op)}function Rn(s){if(!s.length)return s;const[t,e]=s[0],[r,n]=s[s.length-1];return t===r&&e===n?s:[...s,s[0]]}function VMe(s,t){const e=Rn(s).slice(0,-1),r=(t%e.length+e.length)%e.length;return Rn(e.slice(r).concat(e.slice(0,r)))}function Md(s){return[...s].reverse()}function Ri(s,t,e,r,n){const i=[];for(let o=0;o<n;o++){const a=VMe(e,o),c=Md(a);i.push({id:`${t}-cw-${o}`,semanticKind:s,points:a,threshold:r},{id:`${t}-ccw-${o}`,semanticKind:s,points:c,threshold:r})}return i}function $Me(s,t,e,r){const n=[];return e.forEach((i,o)=>{n.push({id:`${t}-forward-${o}`,semanticKind:s,points:i,threshold:r},{id:`${t}-reverse-${o}`,semanticKind:s,points:Md(i),threshold:r})}),n}const zp=[[0,.5],[.25,.5],[.5,.5],[.75,.5],[1,.5]],YMe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.32],[1,.5],[.8,.68]],GMe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.68],[1,.5],[.8,.32]],HMe=Rn([[.15,.2],[.85,.2],[.85,.8],[.15,.8]]),QMe=Rn([[.5,.12],[.88,.82],[.12,.82]]),qMe=Rn([[.5,.08],[.92,.5],[.5,.92],[.08,.5]]),ZMe=Rn([[.5,.04],[.62,.34],[.95,.36],[.68,.56],[.78,.9],[.5,.7],[.22,.9],[.32,.56],[.05,.36],[.38,.34]]),KMe=Rn([[.5,.04],[.74,.88],[.08,.34],[.92,.34],[.26,.88]]),XMe=Array.from({length:24},(s,t)=>{const e=Math.PI*2*t/24;return[.5+Math.cos(e)*.42,.5+Math.sin(e)*.3]}),Yn=[{id:"straight-base",semanticKind:"straight",points:zp,threshold:.72},{id:"straight-reverse",semanticKind:"straight",points:Md(zp),threshold:.72},...$Me("arrow","arrow",[YMe,GMe],.71),...Ri("rectangle","rectangle",HMe,.68,4),...Ri("ellipse","ellipse",Rn(XMe),.64,12),...Ri("triangle","triangle",QMe,.68,3),...Ri("rhombus","rhombus",qMe,.66,4),...Ri("star","star",ZMe,.7,5),...Ri("star","pentagram",KMe,.68,5)];function Ss(s,t,e,r){const{metrics:n}=t;return n.closureRatio>.24||n.cornerCount<e||n.cornerCount>r?null:s}const JMe=[{kind:"straight",templates:Yn.filter(s=>s.semanticKind==="straight"),postProcessor(s,t){const{metrics:e}=t;return e.bboxDiagonal<8||e.closureRatio<.75||e.straightness<.94&&s.score<.8?null:s},mapper:$n.straight,enabledInV1:!0},{kind:"arrow",templates:Yn.filter(s=>s.semanticKind==="arrow"),postProcessor(s,t){const{metrics:e}=t;return e.closureRatio<.12||e.cornerCount<4||e.cornerCount>7||e.straightness>.93?null:s.score>=Math.max(s.threshold,.71)?s:null},mapper:$n.arrow,enabledInV1:!0},{kind:"rectangle",templates:Yn.filter(s=>s.semanticKind==="rectangle"),postProcessor(s,t){const e=Ss(s,t,4,6);return!e||t.metrics.bboxCornerCloseness>.15||t.metrics.bboxCornerCloseness>=t.metrics.diamondCloseness?null:e},mapper:$n.rectangle,enabledInV1:!0},{kind:"ellipse",templates:Yn.filter(s=>s.semanticKind==="ellipse"),postProcessor(s,t){const e=Ss(s,t,6,12);return!e||t.metrics.radialVariance>.5?null:e},mapper:$n.ellipse,enabledInV1:!0},{kind:"triangle",templates:Yn.filter(s=>s.semanticKind==="triangle"),postProcessor(s,t){return Ss(s,t,3,4)},mapper:$n.triangle,enabledInV1:!0},{kind:"rhombus",templates:Yn.filter(s=>s.semanticKind==="rhombus"),postProcessor(s,t){const e=Ss(s,t,4,5);return!e||t.metrics.diamondCloseness>=t.metrics.bboxCornerCloseness?null:e},mapper:$n.rhombus,enabledInV1:!0},{kind:"star",templates:Yn.filter(s=>s.semanticKind==="star"),postProcessor(s,t){const e=s.templateId.startsWith("pentagram"),r=Ss(s,t,e?5:8,12);if(!r)return null;if(e){if(t.metrics.bboxCornerCloseness<.22||t.metrics.angleVariance<35)return null}else if(t.metrics.radialVariance<.34)return null;return r},mapper:$n.star,enabledInV1:!0}];function wd(){return JMe}const _Me=64,Uu=250;function _r(s,t){const e=s[0]-t[0],r=s[1]-t[1];return Math.hypot(e,r)}function ewe(s){const t=[];for(const e of s){const r=t[t.length-1];(!r||_r(r,e)>.5)&&t.push(e)}return t}function G0(s){let t=0;for(let e=1;e<s.length;e++)t+=_r(s[e-1],s[e]);return t}function H0(s){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const[i,o]of s)t=Math.min(t,i),e=Math.min(e,o),r=Math.max(r,i),n=Math.max(n,o);return{minX:t,minY:e,maxX:r,maxY:n}}function twe(s,t=_Me){if(s.length<=1)return s;const e=G0(s)/Math.max(t-1,1),r=[s[0]];let n=0,i=s[0],o=1;const a=[...s];for(;o<a.length;){const c=a[o],l=_r(i,c);if(l===0){o++;continue}if(n+l>=e){const u=(e-n)/l,h=[i[0]+u*(c[0]-i[0]),i[1]+u*(c[1]-i[1])];r.push(h),a.splice(o,0,h),n=0,i=h,o++}else n+=l,i=c,o++}for(;r.length<t;)r.push(a[a.length-1]);return r}function zc(s){const t=s.reduce((e,r)=>[e[0]+r[0],e[1]+r[1]],[0,0]);return[t[0]/s.length,t[1]/s.length]}function rwe(s,t){const e=zc(s),r=Math.cos(t),n=Math.sin(t);return s.map(([i,o])=>{const a=i-e[0],c=o-e[1];return[a*r-c*n+e[0],a*n+c*r+e[1]]})}function nwe(s){const t=zc(s);return Math.atan2(t[1]-s[0][1],t[0]-s[0][0])}function iwe(s,t=Uu){const e=H0(s),r=Math.max(e.maxX-e.minX,1),n=Math.max(e.maxY-e.minY,1);return s.map(([i,o])=>[(i-e.minX)/r*t,(o-e.minY)/n*t])}function swe(s){const t=zc(s);return s.map(([e,r])=>[e-t[0],r-t[1]])}function Q0(s){const t=twe(s),e=rwe(t,-nwe(t)),r=iwe(e);return swe(r)}function owe(s,t){let e=0;const r=Math.min(s.length,t.length);for(let n=0;n<r;n++)e+=_r(s[n],t[n]);return e/Math.max(r,1)}function awe(s,t,e){const[r,n]=s,[i,o]=t,[a,c]=e,l=Math.abs((c-o)*r-(a-i)*n+a*o-c*i),u=Math.hypot(c-o,a-i)||1;return l/u}function Wu(s,t){if(s.length<=2)return s;let e=0,r=0;for(let o=1;o<s.length-1;o++){const a=awe(s[o],s[0],s[s.length-1]);a>e&&(e=a,r=o)}if(e<=t)return[s[0],s[s.length-1]];const n=Wu(s.slice(0,r+1),t),i=Wu(s.slice(r),t);return n.slice(0,-1).concat(i)}function cwe(s){if(s.length<3)return[];const t=[];for(let e=0;e<s.length;e++){const r=s[(e-1+s.length)%s.length],n=s[e],i=s[(e+1)%s.length],o=[r[0]-n[0],r[1]-n[1]],a=[i[0]-n[0],i[1]-n[1]],c=o[0]*a[0]+o[1]*a[1],l=Math.hypot(o[0],o[1])*Math.hypot(a[0],a[1])||1,u=Math.acos(Math.max(-1,Math.min(1,c/l)));t.push(u*180/Math.PI)}return t}function lwe(s){const t=H0(s),e=Math.max(t.maxX-t.minX,1),r=Math.max(t.maxY-t.minY,1),n=Math.hypot(e,r)||1,i=G0(s),o=_r(s[0],s[s.length-1]),a=_r(s[0],s[s.length-1]),c=a/n,l=n*.045,h=c<.24&&s.length>2?s.slice(0,_r(s[0],s[s.length-1])<.5?-1:s.length):s,d=Wu(h,l),f=cwe(d),g=f.length>0?Math.max(...f.map(M=>Math.abs(M-90))):90,y=d.map(([M,v])=>[(M-t.minX)/e,(v-t.minY)/r]),T=[[0,0],[1,0],[1,1],[0,1]],x=[[.5,0],[1,.5],[.5,1],[0,.5]],C=(M,v)=>M.reduce((R,b)=>{const P=Math.min(...v.map(D=>_r(b,D)));return R+P},0)/Math.max(M.length,1),L=zc(s),S=s.map(M=>_r(M,L)),p=S.reduce((M,v)=>M+v,0)/Math.max(S.length,1),m=p>0?S.reduce((M,v)=>M+Math.abs(v-p)/p,0)/Math.max(S.length,1):0;return{bbox:t,metrics:{pathLength:i,chordLength:o,straightness:o/Math.max(i,1),closureDistance:a,closureRatio:c,bboxWidth:e,bboxHeight:r,bboxDiagonal:n,aspectRatio:e/r,cornerCount:Math.max(0,d.length),angleVariance:g,radialVariance:m,bboxCornerCloseness:C(y,T),diamondCloseness:C(y,x)}}}function uwe(s){return s.map(t=>({template:t,normalized:Q0(t.points)}))}const hwe=uwe(wd().flatMap(s=>s.templates));function dwe(s){const t=ewe(s.rawPoints);if(t.length<2)return null;const{bbox:e,metrics:r}=lwe(t);return{rawPoints:s.rawPoints,points:t,pencilOptions:s.pencilOptions,viewId:s.viewId,scenePath:s.scenePath,start:t[0],end:t[t.length-1],bbox:e,metrics:r}}function fwe(s){const t=Q0(s.points),e=new Map;for(const{template:r,normalized:n}of hwe){const i=owe(t,n),o=Math.max(0,1-i/(.5*Math.sqrt(2*Uu*Uu))),a={kind:r.semanticKind,templateId:r.id,threshold:r.threshold||.7,distance:i,score:o},c=e.get(r.semanticKind);(!c||a.score>c.score)&&e.set(r.semanticKind,a)}return[...e.values()].sort((r,n)=>n.score-r.score)}function gwe(s){const t=wd(),e=fwe(s);if(s.metrics.bboxDiagonal>=8&&s.metrics.straightness>.975&&s.metrics.closureRatio>.75){const n=e.find(i=>i.kind==="straight")||{templateId:"straight-heuristic",score:.99,threshold:.72};return{kind:"straight",score:n.score,threshold:n.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:n.templateId,metrics:s.metrics,candidates:e}}for(const n of e){const i=t.find(a=>a.kind===n.kind);if(!i||n.score<n.threshold)continue;const o=i.postProcessor?i.postProcessor(n,s):n;if(o)return{kind:i.kind,score:o.score,threshold:o.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:o.templateId,metrics:s.metrics,candidates:e}}const r=e[0];return{kind:"none",score:(r==null?void 0:r.score)||0,threshold:(r==null?void 0:r.threshold)||1,recognized:!1,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:r==null?void 0:r.templateId,metrics:s.metrics,candidates:e}}function pwe(s){return dwe(s)}function mwe(s){return gwe(s)}function Bp(s,t){if(!s.recognized||s.kind==="none")return null;const e=wd().find(r=>r.kind===s.kind);return(e==null?void 0:e.mapper(s,t))||null}function mr(){const s=new Error("Font database operation aborted");return s.name="AbortError",s}const Xn=class Xn{constructor(){E(this,"fontDB");E(this,"FONT_DB_NAME","__APPLIANCE_PLUGIN_FONT_DB");E(this,"FONT_STORE_NAME","fonts");E(this,"FONT_DB_VERSION",1)}static getInstance(){return Xn.instance||(Xn.instance=new Xn),Xn.instance}async initFontDB(t){if(t!=null&&t.aborted)throw mr();return this.fontDB?this.fontDB:new Promise((e,r)=>{let n=!1;const i=()=>{t==null||t.removeEventListener("abort",a)},o=l=>{n||(n=!0,i(),l())},a=()=>o(()=>r(mr())),c=indexedDB.open(this.FONT_DB_NAME,this.FONT_DB_VERSION);t==null||t.addEventListener("abort",a,{once:!0}),c.onerror=()=>o(()=>r(new Error(`Failed to open font database: ${c.error}`))),c.onsuccess=()=>{const l=c.result;if(n||t!=null&&t.aborted){l.close(),n||o(()=>r(mr()));return}o(()=>{this.fontDB=l,e(l)})},c.onupgradeneeded=l=>{const u=l.target.result;u.objectStoreNames.contains(this.FONT_STORE_NAME)||u.createObjectStore(this.FONT_STORE_NAME,{keyPath:"fontFamily"}).createIndex("url","url",{unique:!1})}})}async getFontFromDB(t,e,r){try{if(r!=null&&r.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(r)),r!=null&&r.aborted))throw mr();return new Promise((n,i)=>{const o=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly"),c=o.objectStore(this.FONT_STORE_NAME).get(t);let l=!1,u=null;const h=()=>{r==null||r.removeEventListener("abort",f)},d=g=>{l||(l=!0,h(),g())},f=()=>{try{o.abort()}catch{}d(()=>i(mr()))};r==null||r.addEventListener("abort",f,{once:!0}),c.onsuccess=()=>{c.result&&c.result.buffer&&(!e||c.result.url===e)?u=c.result.buffer:u=null},c.onerror=()=>d(()=>i(c.error)),o.onerror=()=>d(()=>i(o.error||c.error)),o.onabort=()=>d(()=>i(o.error||mr())),o.oncomplete=()=>d(()=>n(u)),r!=null&&r.aborted&&f()})}catch(n){if(r!=null&&r.aborted)throw n;return console.error(`Failed to get font from database for ${t}:`,n),null}}async saveFontToDB(t,e,r,n){try{if(n!=null&&n.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(n)),n!=null&&n.aborted))throw mr();return new Promise((i,o)=>{const a=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite"),c=a.objectStore(this.FONT_STORE_NAME),l={fontFamily:t,url:e,buffer:r,timestamp:Date.now()},u=c.put(l);let h=!1;const d=()=>{n==null||n.removeEventListener("abort",g)},f=y=>{h||(h=!0,d(),y())},g=()=>{try{a.abort()}catch{}f(()=>o(mr()))};n==null||n.addEventListener("abort",g,{once:!0}),u.onsuccess=()=>{},u.onerror=()=>f(()=>o(u.error)),a.onerror=()=>f(()=>o(a.error||u.error)),a.onabort=()=>f(()=>o(a.error||mr())),a.oncomplete=()=>f(()=>i(!0)),n!=null&&n.aborted&&g()})}catch(i){if(n!=null&&n.aborted)throw i;return console.error(`Failed to save font to database for ${t}:`,i),!1}}async clearFontCache(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((t,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME).clear();i.onsuccess=()=>{t(!0)},i.onerror=()=>{e(i.error)}})}catch(t){return console.error("Failed to clear font cache:",t),!1}}async getFontCacheStatus(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((t,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).getAll();i.onsuccess=()=>{const o=i.result||[],a=o.reduce((c,l)=>c+(l.buffer?l.buffer.byteLength:0),0);t({count:o.length,totalSize:a})},i.onerror=()=>{e(i.error)}})}catch(t){return console.error("Failed to get font cache status:",t),{count:0,totalSize:0}}}};E(Xn,"instance");let Vu=Xn;const ywe=3e3;function _o(s){const t=new Error(s);return t.name="AbortError",t}class vwe{constructor(t){E(this,"control");E(this,"getFullWorker");E(this,"getSubWorker");E(this,"indexDBUtils",Vu.getInstance());E(this,"fontFaceWorkerResolveMap",new Map);E(this,"fontFaceLoadGeneration",0);E(this,"activeFontFaceAttempt");E(this,"lastFontFacesAlreadyReady",!1);E(this,"documentFontsReadyLogged",!1);E(this,"documentFontsReadyWaiters",new Set);this.control=t.control,this.getFullWorker=t.getFullWorker,this.getSubWorker=t.getSubWorker}destroy(){this.fontFaceLoadGeneration+=1;const t=this.activeFontFaceAttempt;this.activeFontFaceAttempt=void 0,t&&!t.settled&&(t.settled=!0,t.timer&&clearTimeout(t.timer),t.controller.abort(),t.resolve({status:"timeout"}));for(const e of this.documentFontsReadyWaiters)e.cancel();this.documentFontsReadyWaiters.clear();for(const e of[...this.fontFaceWorkerResolveMap.keys()])this.resolveFontFaceWorkerRequest(e,!1,!0);this.lastFontFacesAlreadyReady=!1,this.documentFontsReadyLogged=!1}get Logger(){return this.control.logger}async waitDocumentFontsReady(t,e=ywe,r){var n;r!=null&&r.aborted||typeof document>"u"||!((n=document.fonts)!=null&&n.ready)||await new Promise(i=>{let o=!1;const a=()=>{o||(o=!0,clearTimeout(c.timer),this.documentFontsReadyWaiters.delete(c),r==null||r.removeEventListener("abort",a),i())},c={timer:setTimeout(()=>{this.Logger.warn(`[Appliance]: document fonts ready timeout for ${t}; timeoutMs=${e}`),a()},e),cancel:a};this.documentFontsReadyWaiters.add(c),r==null||r.addEventListener("abort",a,{once:!0}),Promise.resolve(document.fonts.ready).then(()=>{o||(this.documentFontsReadyLogged||(this.documentFontsReadyLogged=!0,this.Logger.info(`[Appliance]: document fonts ready for ${t}`)),a())},l=>{o||(this.Logger.warn(`[Appliance]: document fonts ready failed for ${t}: ${(l==null?void 0:l.message)||l}`),a())})})}async clearFontCache(){return await this.indexDBUtils.clearFontCache()}async getFontCacheStatus(){return await this.indexDBUtils.getFontCacheStatus()}createFontFaceRequestId(t){return`${t}-${Date.now()}-${Math.random().toString(16).slice(2)}`}getFontFaceCssValue(t){return`12px "${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}isDocumentFontFaceReady(t){if(typeof document>"u"||!document.fonts)return!1;let e=!1;for(const r of document.fonts)if(r.family===t&&(e=!0,r.status!=="loaded"))return!1;return e&&(!document.fonts.check||document.fonts.check(this.getFontFaceCssValue(t)))}areDocumentFontFacesReady(){return this.control.extendFontFaces.every(t=>this.isDocumentFontFaceReady(t.fontFamily))}resolveFontFaceWorkerRequest(t,e,r=!1){const n=this.fontFaceWorkerResolveMap.get(t);if(n){if(clearTimeout(n.timer),n.signal&&n.onAbort&&n.signal.removeEventListener("abort",n.onAbort),this.fontFaceWorkerResolveMap.delete(t),r)try{n.worker.postMessage(new Set([{msgType:le.CancelFontFace,dataType:Re.Local,viewId:"",requestId:t}]))}catch{}n.resolve(e)}}requestFontFaceWorker(t,e,r,n){const i=e.requestId;return i?new Promise(o=>{const a=setTimeout(()=>{this.Logger.warn(`[Appliance]: font face worker request timeout: ${i}`),this.resolveFontFaceWorkerRequest(i,!1,!0)},this.control.loadFontFacesTimeout),c=()=>this.resolveFontFaceWorkerRequest(i,!1,!0);if(this.fontFaceWorkerResolveMap.set(i,{timer:a,resolve:o,worker:t,signal:n,onAbort:c}),n==null||n.addEventListener("abort",c,{once:!0}),n!=null&&n.aborted){c();return}try{t.postMessage(new Set([e]),r||[])}catch{this.resolveFontFaceWorkerRequest(i,!1,!0)}}):Promise.resolve(!1)}getWorkers(){return[this.getFullWorker(),this.getSubWorker()].filter(Boolean)}async areWorkerFontFacesReady(t){if(!this.control.hasOffscreenCanvas)return!0;const e=this.getWorkers();if(!e.length)return!1;const r=this.control.extendFontFaces.map(({fontFamily:i})=>({fontFamily:i}));return(await Promise.all(e.map(i=>this.requestFontFaceWorker(i,{msgType:le.CheckFontFace,dataType:Re.Local,viewId:"",fontFaces:r,requestId:this.createFontFaceRequestId("check")},void 0,t)))).every(Boolean)}async waitWorkerReadyForFontFaces(t){if(!this.control.hasOffscreenCanvas)return!0;const e=()=>this.control.isUseSimple?!!this.getFullWorker():!!this.getFullWorker()&&!!this.getSubWorker();if(e())return!0;const r=Date.now();return new Promise(n=>{let i=!1,o;const a=u=>{i||(i=!0,o&&clearTimeout(o),t==null||t.removeEventListener("abort",c),n(u))},c=()=>a(!1),l=()=>{if(t!=null&&t.aborted){a(!1);return}if(e()){a(!0);return}if(Date.now()-r>=this.control.loadFontFacesTimeout){a(!1);return}o=setTimeout(l,16)};t==null||t.addEventListener("abort",c,{once:!0}),l()})}assertAttemptActive(t,e){if(t.aborted||!e())throw _o("Font face load attempt is no longer active")}async getRuntimeFontFacesReadyState(t){if(!this.control.hasExtendFontFaces)return{documentReady:!0,workerReady:!0};const e=this.areDocumentFontFacesReady(),r=await this.areWorkerFontFacesReady(t);return{documentReady:e,workerReady:r}}async loadFontFaceBuffers(t,e){const r=[];for(const n of this.control.extendFontFaces){this.assertAttemptActive(t,e);let i;const o=await this.indexDBUtils.getFontFromDB(n.fontFamily,n.src,t);if(this.assertAttemptActive(t,e),o&&o.byteLength>0&&this.validateFontData(new Uint8Array(o))&&(i=o),!i&&(i=await this.loadFontInMainThread(n.src,t),this.assertAttemptActive(t,e),i&&i.byteLength>0)){const a=await this.indexDBUtils.saveFontToDB(n.fontFamily,n.src,i,t);this.assertAttemptActive(t,e),a||this.Logger.warn(`[Appliance]: Failed to save font ${n.fontFamily} to IndexedDB, but continuing with font loading`)}i&&i.byteLength>0?r.push({fontFamily:n.fontFamily,buffer:i}):this.Logger.warn(`[Appliance]: Font ${n.fontFamily} could not be loaded from any source`)}return r}async setDocumentFontFaces(t,e,r){if(typeof document>"u"||!document.fonts)return!1;for(const{fontFamily:n,buffer:i}of t){let o;try{if(this.assertAttemptActive(e,r),this.isDocumentFontFaceReady(n))continue;o=new FontFace(n,i.slice(0)),await o.load(),this.assertAttemptActive(e,r),document.fonts.add(o),await o.loaded,this.assertAttemptActive(e,r)}catch(a){if(e.aborted||!r()){if(o)try{document.fonts.delete(o)}catch{}throw _o("Document font load attempt is no longer active")}return this.Logger.error(`[Appliance]: set document font faces error: ${(a==null?void 0:a.message)||a}`),!1}}return this.assertAttemptActive(e,r),this.areDocumentFontFacesReady()}async setWorkerFontFaces(t,e,r){if(!this.control.hasOffscreenCanvas)return!0;const n=this.getWorkers();if(!n.length)return!1;const i=await Promise.all(n.map(o=>{const a=t.map(({fontFamily:c,buffer:l})=>({fontFamily:c,buffer:l.slice(0)}));return this.requestFontFaceWorker(o,{msgType:le.SetFontFace,dataType:Re.Local,viewId:"",fontBuffers:a,requestId:this.createFontFaceRequestId("set")},a.map(({buffer:c})=>c),e)}));return this.assertAttemptActive(e,r),i.every(Boolean)&&await this.areWorkerFontFacesReady(e)}async doLoadFontFaces(t,e,r=()=>!0){if(!e)throw new Error("Font face load requires an attempt signal");if(this.assertAttemptActive(e,r),this.lastFontFacesAlreadyReady=!1,!this.control.hasExtendFontFaces)return this.assertAttemptActive(e,r),this.lastFontFacesAlreadyReady=!0,{status:"success"};if(await this.waitDocumentFontsReady("fontFaceLoad",void 0,e),this.assertAttemptActive(e,r),!await this.waitWorkerReadyForFontFaces(e))return this.assertAttemptActive(e,r),{status:"timeout"};this.assertAttemptActive(e,r);const n=await this.getRuntimeFontFacesReadyState(e);if(this.assertAttemptActive(e,r),n.documentReady&&n.workerReady)return this.lastFontFacesAlreadyReady=!0,{status:"success"};t==null||t(),this.Logger.info(`[Appliance]: load font faces ${JSON.stringify(this.control.extendFontFaces)}`);const i=await this.loadFontFaceBuffers(e,r);if(this.assertAttemptActive(e,r),i.length!==this.control.extendFontFaces.length)return{status:"error"};const o=n.documentReady||await this.setDocumentFontFaces(i,e,r);this.assertAttemptActive(e,r);const a=n.workerReady||await this.setWorkerFontFaces(i,e,r);return this.assertAttemptActive(e,r),o&&a?(this.Logger.info("[Appliance]: set font faces success"),{status:"success"}):{status:"error"}}getLastFontFacesAlreadyReady(){return this.lastFontFacesAlreadyReady}async loadFontFaces(){const t=this.activeFontFaceAttempt;if(t&&t.generation===this.fontFaceLoadGeneration)return t.promise;const e=++this.fontFaceLoadGeneration,r=new AbortController;let n;const i={generation:e,controller:r,promise:new Promise(l=>{n=l}),resolve:l=>n(l),settled:!1,started:!1};this.activeFontFaceAttempt=i,this.lastFontFacesAlreadyReady=!1;const o=()=>this.activeFontFaceAttempt===i&&this.fontFaceLoadGeneration===i.generation,a=()=>{!o()||i.started||(i.started=!0,this.control.emitFontFaceLoadState({status:"start"}))},c=(l,u)=>{if(i.settled)return;const h=o();i.settled=!0,i.timer&&clearTimeout(i.timer),h&&i.started&&this.control.emitFontFaceLoadState(l),h&&l.status!=="success"&&(this.activeFontFaceAttempt=void 0,this.fontFaceLoadGeneration+=1),u&&r.abort(),i.resolve(l)};return i.timer=setTimeout(()=>c({status:"timeout"},!0),this.control.loadFontFacesTimeout),this.doLoadFontFaces(a,r.signal,o).then(l=>c(l,l.status!=="success"),l=>{!i.settled&&o()&&this.Logger.error(`[Appliance]: load font faces error: ${(l==null?void 0:l.message)||l}`),c(r.signal.aborted?{status:"timeout"}:{status:"error"},!0)}),i.promise}async loadFontInMainThread(t,e){try{if(e.aborted)throw _o("Font fetch aborted");const r=await fetch(t,{signal:e});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const n=await r.arrayBuffer();if(e.aborted)throw _o("Font fetch aborted");if(!n||n.byteLength===0)throw new Error("Empty font data received");const i=new Uint8Array(n);if(!this.validateFontData(i))throw new Error("Invalid font data format: not a valid font file");return n}catch(r){if(e.aborted)throw r;this.Logger.error(`[Appliance]: Failed to load font from ${t}: ${r instanceof Error?r.message:String(r)}`);return}}validateFontData(t){return t.length<4?!1:t[0]===119&&t[1]===79&&t[2]===70&&t[3]===50||t[0]===119&&t[1]===79&&t[2]===70&&t[3]===70||t[0]===0&&t[1]===1&&t[2]===0&&t[3]===0||t[0]===79&&t[1]===84&&t[2]===84&&t[3]===79||t.length>36&&t[36]===0&&t[37]===1&&t[38]===0&&t[39]===0}handleWorkerMessage(t){const{type:e,requestId:r,setFontFaceResult:n,fontFaceCheckResult:i,failedFonts:o}=t;return e!==le.SetFontFace&&e!==le.CheckFontFace?!1:(e===le.SetFontFace&&(o!=null&&o.length)&&this.Logger.info("[Appliance]: set font face has failed fonts: "+o.join(", ")),r&&this.resolveFontFaceWorkerRequest(r,e===le.CheckFontFace?!!i:!!n&&!(o!=null&&o.length)),!0)}}const Mwe=new Set([q.Eraser,q.PencilEraser,q.BitMapEraser]),Ts=2e3,ea=8e3,wwe=32,jp=8,Swe={x:1,y:1,width:3,height:2},Fp=2;function Up(s,t){return t.map(({x:e,y:r,expected:n,inside:i})=>{const o=Array.from(s.getImageData(e,r,1,1).data.slice(0,4));return{x:e,y:r,expected:n,actual:o,inside:i,ok:i?o[3]>=16&&o[0]>=o[3]-5&&o[1]<=5&&o[2]<=5:o[3]<=5}})}function $u(s){return!!s&&s.length>=4&&s.every(({ok:t})=>t)}function ta(s){const t=s==null?void 0:s.programProbe;return(s==null?void 0:s.offscreenCanvas)===!0&&s.contextSupported===!0&&(t==null?void 0:t.passed)===!0&&$u(t.destinationPixelChecks)}function Wp(s,t){var e;return{renderMode:s.renderMode,contextType:((e=t==null?void 0:t.programProbe)==null?void 0:e.actualContextType)||s.contextType}}function Twe(s){const t=Math.max(0,s-Date.now());return t===0?Promise.resolve():new Promise(e=>{let r=!1,n,i;const o=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),n!==void 0&&typeof globalThis.cancelAnimationFrame=="function"&&globalThis.cancelAnimationFrame(n),e())};i=setTimeout(o,Math.min(wwe,t)),typeof globalThis.requestAnimationFrame=="function"&&(n=globalThis.requestAnimationFrame(o))})}function Hr(s,t){var e,r;return((e=s.getRenderContextTypeForView)==null?void 0:e.call(s,t))??((r=s.renderingCompatibilityDecision)==null?void 0:r.contextType)??"2d"}function Cwe(s,t){const e=s||{},r=t||{},n=[],i=[],o=[];for(const a of Object.keys(r))a in e?ve.isEqual(e[a],r[a])||i.push(a):n.push(a);for(const a of Object.keys(e))a in r||o.push(a);return{added:n,updated:i,removed:o}}const Yl=new Set([q.Pencil,q.Arrow,q.Straight,q.Ellipse,q.Rectangle,q.Star,q.Polygon,q.Triangle,q.Rhombus,q.SpeechBalloon]);function Vp(s){return s===q.Pencil?$e.DrawingPencil:s===q.Arrow||s===q.Straight?$e.DrawingArrow:s===q.Eraser?$e.DrawingEraser:s===q.PencilEraser?$e.DrawingPencilEraser:s===q.BitMapEraser?$e.DrawingBitMapEraser:$e.DrawingShape}function Cs(s){switch(s){case $e.DrawingPencil:case $e.DrawingArrow:case $e.DrawingShape:case $e.DrawingEraser:case $e.DrawingPencilEraser:case $e.DrawingBitMapEraser:return{kind:"stop-event"};case $e.MethodTranslateNode:return{kind:"method-pause",emitEventType:Te.TranslateNode};case $e.MethodScaleNode:return{kind:"method-pause",emitEventType:Te.ScaleNode};case $e.MethodRotateNode:return{kind:"method-pause",emitEventType:Te.RotateNode};case $e.MethodSetPoint:return{kind:"method-pause",emitEventType:Te.SetPoint};case $e.MethodSetColorNode:return{kind:"method-pause",emitEventType:Te.SetColorNode};case $e.AsyncCopyNode:case $e.AsyncPasteNode:case $e.AsyncDeleteNode:case $e.AsyncSetFontStyle:case $e.AsyncSetShapeOpt:case $e.AsyncZIndexNode:case $e.AsyncSetLock:case $e.AsyncUpdateElement:case $e.AsyncImage:case $e.AsyncIcon:case $e.AsyncMarkmap:case $e.Text:case $e.Clear:return{kind:"wait-owner"}}}const Ai=s=>typeof s=="number"&&Mwe.has(s),$p=s=>s===le.FullWork||s===le.UpdateNode||s===le.RemoveNode||s===le.DrawWork||s===le.Select||s===le.TextUpdate,Gl=4096;class Iwe{get now(){var t;return((t=this.control.room)==null?void 0:t.calibrationTimestamp)||Date.now()}get newWorkId(){return this.now.toString()}setCurrentToolsData(t){this.currentToolsData=t}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(t){this.currentLocalWorkData=t}getWorkId(){return this.currentLocalWorkData.workId}get workState(){return this.currentLocalWorkData.workState}}class ki extends Error{constructor(){super("render runtime recovery cancelled"),this.name="RenderRuntimeRecoveryCancelledError"}}class bwe extends Iwe{constructor(e){super();E(this,"maxLastSyncTime",He.syncOpt.interval);E(this,"combineUnitTime",He.bezier.combineUnitTime);E(this,"maxCombineEraserTime",He.pencilEraser.maxCombineTime);E(this,"smoothSync",He.syncOpt.smoothSync);E(this,"isActive",!1);E(this,"currentToolsData");E(this,"currentLocalWorkData");E(this,"control");E(this,"internalMsgEmitter");E(this,"publicMsgEmitter");E(this,"taskBatchData",new Set);E(this,"fullWorker");E(this,"subWorker");E(this,"fullWorkerUrl");E(this,"subWorkerUrl");E(this,"methodBuilder");E(this,"zIndexNodeMethod");E(this,"subWorkerDrawCount",0);E(this,"fullWorkerDrawCount",0);E(this,"maxDrawCount",0);E(this,"_consumeCount",0);E(this,"_postCount",0);E(this,"reRenders",new Map);E(this,"localWorkViewId");E(this,"localPointsBatchData",new Map);E(this,"tasksqueue",new Map);E(this,"cameraUpdateStateByView",new Map);E(this,"cameraClearReplayByView",new Map);E(this,"cameraClearReplaySequence",0);E(this,"cameraFailureSequenceByView",new Map);E(this,"cameraUpdateEndWaitersByView",new Map);E(this,"viewLifecycleIdleWaitersByView",new Map);E(this,"cameraTaskSequenceByView",new Map);E(this,"cameraRecoverySequence",0);E(this,"pendingDprOwnerByView",new Map);E(this,"dprUpdateSequence",0);E(this,"localWorkFinalizeQueueByView",new Map);E(this,"localWorkFinalizeQueue",Promise.resolve());E(this,"operationBarrierQueueByView",new Map);E(this,"operationBarrierEpochByView",new Map);E(this,"operationBarrierInvalidationWaitersByView",new Map);E(this,"cancelledEraseTxnIds",new Set);E(this,"cancelledEraseTxnOwners",new Map);E(this,"cancelledLocalWorkOwners",new Map);E(this,"fullLayerBitmapEraseTxns",new Map);E(this,"fullLayerBitmapEraseTxnWaiters",new Map);E(this,"snapshotMap",new Map);E(this,"snapshotRequestIdByViewScene",new Map);E(this,"boundingRectMap",new Map);E(this,"boundingRectRequestIdByViewScene",new Map);E(this,"clearAllResolveMap",new Map);E(this,"localEventQueue",Promise.resolve());E(this,"localEventQueueByView",new Map);E(this,"localDoneDispatchTimersByView",new Map);E(this,"localEventSequence",0);E(this,"localInputEpochByView",new Map);E(this,"localInputTransactionEpochByView",new Map);E(this,"localDoneWaitSequence",0);E(this,"queuedLocalEventCount",0);E(this,"activeLocalEvent");E(this,"localDoneWaitByView",new Map);E(this,"delayWorkStateToDoneResolveByView",new Map);E(this,"localDoneWait");E(this,"delayWorkStateToDoneResolve");E(this,"animationId");E(this,"tmpImageConfigMap",new Map);E(this,"mainThread");E(this,"backgroundThreadManager");E(this,"willSelectorWorkIdByView",new Map);E(this,"isLockSentEventCursor",!1);E(this,"getVNodeInfoResolveMap",new Map);E(this,"refreshTextRenderResolveMap",new Map);E(this,"fontFaceManager");E(this,"isLocalWorkActive",!1);E(this,"hasMainViewInitAck",!1);E(this,"mainViewInitReady",new F0);E(this,"serviceSyncReadyViews",new Set);E(this,"mainViewInitAckCallbacks",new Set);E(this,"initAckedViewIds",new Set);E(this,"viewInitAckTimeoutTimers",new Map);E(this,"renderRuntimeCacheSavePromise");E(this,"pendingTransportMessages",new Map);E(this,"isRenderTransportReady",!1);E(this,"renderRuntimeFallbackSequence",0);E(this,"activeRenderRuntimeRecovery");E(this,"viewInitRecoveryAttempts",new Map);E(this,"viewInitRecoveryDestroying",new Set);E(this,"viewInitAckWaiters",new Map);E(this,"serviceSyncCommitWaiters",new Map);E(this,"viewServiceReadyWaiters",new Map);E(this,"initReconcileTasks",new Map);E(this,"serviceSyncSequence",0);E(this,"initGeneration",0);E(this,"viewGenerationById",new Map);E(this,"fullLayerFrameStateByView",new Map);E(this,"pendingDprByView",new Map);E(this,"viewRecoveryQueueByView",new Map);E(this,"initCameraOptByView",new Map);E(this,"markmapIdResolveMap",new Map);const{control:r,internalMsgEmitter:n,publicMsgEmitter:i}=e;this.control=r,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.combineUnitTime=this.control.pluginOptions.extras.bezier.combineUnitTime||this.combineUnitTime,this.smoothSync=ve.isBoolean(this.control.pluginOptions.extras.syncOpt.smoothSync)?this.control.pluginOptions.extras.syncOpt.smoothSync:this.smoothSync,this.maxCombineEraserTime=this.control.pluginOptions.extras.pencilEraser.maxCombineTime||this.maxCombineEraserTime,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl||"",this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl||"",this.internalMsgEmitter=n,this.publicMsgEmitter=i,this.currentLocalWorkData={workState:de.Pending},this.fontFaceManager=new vwe({control:this.control,getFullWorker:()=>this.fullWorker,getSubWorker:()=>this.subWorker})}getDoneWaitForView(e){var i;const r=(i=this.localDoneWaitByView)==null?void 0:i.get(e);if(r)return r;const n=this.localDoneWait;if(n&&(!n.viewId||n.viewId===e))return{...n,viewId:e}}getDoneResolverForView(e){var i,o;const r=(i=this.delayWorkStateToDoneResolveByView)==null?void 0:i.get(e);if(r)return r;const n=this.localDoneWait;if(this.delayWorkStateToDoneResolve&&!((o=this.delayWorkStateToDoneResolveByView)!=null&&o.size)&&(!(n!=null&&n.viewId)||n.viewId===e))return this.delayWorkStateToDoneResolve}getLocalWorkFinalizeQueue(e){return this.localWorkFinalizeQueueByView?this.localWorkFinalizeQueueByView.get(e)||Promise.resolve():this.localWorkFinalizeQueue||Promise.resolve()}setLocalWorkFinalizeQueue(e,r){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.set(e,r);return}this.localWorkFinalizeQueue=r}clearLocalWorkFinalizeQueue(e,r){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.get(e)===r&&this.localWorkFinalizeQueueByView.delete(e);return}this.localWorkFinalizeQueue===r&&(this.localWorkFinalizeQueue=Promise.resolve())}clearDoneWaitForView(e,r){var i,o,a,c,l,u;const n=(i=this.localDoneWaitByView)==null?void 0:i.get(e);r&&(n==null?void 0:n.token)!==r||((o=this.localDoneWaitByView)==null||o.delete(e),(a=this.delayWorkStateToDoneResolveByView)==null||a.delete(e),(!r||((c=this.localDoneWait)==null?void 0:c.token)===r)&&(((l=this.localDoneWait)==null?void 0:l.viewId)===void 0||((u=this.localDoneWait)==null?void 0:u.viewId)===e)&&(this.localDoneWait=void 0,this.delayWorkStateToDoneResolve=void 0))}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get Logger(){return this.control.logger}logRenderRuntimeFallback(e,r,n="info"){const i=`[Appliance]: [render-runtime-fallback] stage=${e} ${JSON.stringify(r)}`;this.Logger[n](i)}logMainViewCameraTrace(e,r){const n=this.Logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(r)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}closeImageBitmap(e){var r;if(e)try{(r=e.close)==null||r.call(e)}catch(n){this.logLocalWorkBarrierError(`[Appliance]: ImageBitmap release failed; error=${n instanceof Error?n.message:String(n)}`)}}getViewSceneRequestKey(e,r){return`${e}\0${r}`}settleSnapshotFailure(e,r,n){const i=this.getViewSceneRequestKey(e,r);if(this.snapshotRequestIdByViewScene.get(i)!==n)return;const o=this.snapshotMap.get(i);!o||o.requestId!==n||o.resolve(o.value.map(a=>a||null))}settleBoundingRectFailure(e,r,n){const i=this.getViewSceneRequestKey(e,r);if(this.boundingRectRequestIdByViewScene.get(i)!==n)return;const o=this.boundingRectMap.get(i);!o||o.requestId!==n||o.resolve({x:0,y:0,w:0,h:0})}settleViewRenderRequests(e){var r,n;for(const[i,o]of this.snapshotMap)o.viewId===e&&(this.snapshotMap.delete(i),this.snapshotRequestIdByViewScene.get(i)===o.requestId&&this.snapshotRequestIdByViewScene.delete(i),o.resolve(o.value.map(a=>a||null)));for(const[i,o]of this.boundingRectMap)o.viewId===e&&(this.boundingRectMap.delete(i),this.boundingRectRequestIdByViewScene.get(i)===o.requestId&&this.boundingRectRequestIdByViewScene.delete(i),o.resolve({x:0,y:0,w:0,h:0}));try{(r=this.mainThread)==null||r.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: main snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}try{(n=this.backgroundThreadManager)==null||n.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: background snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}}afterMainViewInitAck(e){const r=this.initGeneration;if(this.hasMainViewInitAck){window.setTimeout(()=>{if(this.initGeneration===r)try{e()}catch{}},0);return}this.mainViewInitAckCallbacks.add(e)}get isMainViewInitAck(){return this.hasMainViewInitAck}waitForMainViewInitAck(e=6e4){return this.mainViewInitReady.wait(e)}isViewInitAck(e){return this.initAckedViewIds.has(e)}ackMainViewInit(e,r,n){var d;const i=this.viewGenerationById.get(e),o=Hr(this.control,e),a=Ht(this.control.renderMode,o);if(r!==void 0&&i!==r){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} receivedGeneration=${r} currentGeneration=${i} reason=generation-mismatch`);return}if(this.initAckedViewIds.has(e)){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} reason=duplicate-ack`);return}if(pt(this.Logger,{category:"render-init",viewId:e,generation:r??i??"unknown",stage:"ack-received",details:{transport:this.control.renderMode,context:o,actualWorkerContext:n||"unreported"}}),this.control.renderMode!=="main-thread"&&n!==o){this.Logger.error(`[Appliance]: [render-init] stage=ack-context-mismatch viewId=${e} generation=${r??i??"unknown"} expectedContext=${o} actualContext=${n||"unreported"}`),ga(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r??i,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"init-context-mismatch",reportError:`expected ${o}, actual ${n||"unreported"}`,reportContextType:n});return}this.initAckedViewIds.add(e);const c=`${e}:${r??i}`,l=(d=this.viewInitAckTimeoutTimers)==null?void 0:d.get(c);l&&(clearTimeout(l),this.viewInitAckTimeoutTimers.delete(c)),this.activeRenderRuntimeRecovery&&this.logRenderRuntimeFallback("init-acked",{recoveryId:this.activeRenderRuntimeRecovery.recoveryId,viewId:e,generation:r,elapsedMs:Date.now()-this.activeRenderRuntimeRecovery.startedAt});const u=this.viewInitAckWaiters.get(e);if(u){for(const f of[...u])r!==void 0&&f.generation!==r||(clearTimeout(f.timer),u.delete(f),f.resolve(!0));u.size||this.viewInitAckWaiters.delete(e)}if(e===Fe&&!this.hasMainViewInitAck&&(this.hasMainViewInitAck=!0,this.mainViewInitReady.markReady()),pt(this.Logger,{category:"render-init",viewId:e,generation:i??"unknown",stage:"ack-completed",details:{transport:this.control.renderMode,context:o,renderModel:a}}),i!==void 0&&this.scheduleInitReconcile(e,i),e!==Fe)return;const h=[...this.mainViewInitAckCallbacks];this.mainViewInitAckCallbacks.clear();for(const f of h)window.setTimeout(()=>{try{f()}catch{}},0)}scheduleInitReconcile(e,r){if(this.initReconcileTasks.has(e))return;pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"ack-reconcile"});const n=this.reconcileViewInit(e,r).catch(i=>{this.viewGenerationById.get(e)===r&&(this.Logger.error(`[Appliance]: [init-reconcile] stage=failed viewId=${e} generation=${r} error=${i instanceof Error?i.message:String(i)}`),ga(this.Logger,e))}).finally(()=>{this.initReconcileTasks.get(e)===n&&this.initReconcileTasks.delete(e)});this.initReconcileTasks.set(e,n)}isCurrentViewGeneration(e,r){return this.viewGenerationById.get(e)===r&&!!this.viewContainerManager.getView(e)}async reconcileViewInit(e,r){var i,o,a,c,l,u,h,d,f,g,y,T,x,C,L,S,p,m,M,v,R,b,P,D;let n=0;for(;this.isCurrentViewGeneration(e,r);){const z=this.viewContainerManager.getView(e);if(!z)return;const j=((o=(i=this.control).getPendingInitTargetScenePath)==null?void 0:o.call(i,e))||z.focusScenePath;if(!j){this.finalizeViewInitReady(e,r,void 0);return}const k=((c=(a=this.control).getPendingInitReconcileRevision)==null?void 0:c.call(a,e,j))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0};if(z.focusScenePath!==j){const B=this.viewContainerManager.setViewScenePathBeforeRenderInit(e,j);pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"retrigger-scene",details:{scenePath:j,applied:B}})}const A=(u=(l=this.control).getPendingInitCameraForScene)==null?void 0:u.call(l,e,j),N=A||z.cameraOpt,W=this.initCameraOptByView.get(e),Y=((h=this.cameraUpdateStateByView.get(e))==null?void 0:h.isRecovering)===!0,Q=!!(!Y&&N&&(!W||!this.isSameCameraOpt(W,N)));if(pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"retrigger-camera",details:{scenePath:j,source:Y?"camera-recovery":A?"padding":"window-manager",applied:Q}}),Q&&N){const B=((d=this.cameraFailureSequenceByView)==null?void 0:d.get(e))||0;this.updateCameraForReadyRenderer(e,N);const F=await this.waitForInitCameraCatchUp(e,r);if(!this.isCurrentViewGeneration(e,r))return;if(!F||(((f=this.cameraFailureSequenceByView)==null?void 0:f.get(e))||0)!==B){this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"INIT_CAMERA_CATCH_UP_FAILED",reportStage:"init-camera-catch-up",reportError:F?"camera renderer reported failure":"camera catch-up timeout"});return}this.initCameraOptByView.set(e,{...N})}const ie=((g=this.collector)==null?void 0:g.readSceneStorageSnapshot(e,j))||{revision:0,storage:{}},O=((x=(T=(y=this.control).getPendingInitLastApplied)==null?void 0:T.call(y,e,j))==null?void 0:x.storage)||((L=(C=this.control).getPendingInitServiceBaseline)==null?void 0:L.call(C,e,j))||{},V=Cwe(O,ie.storage),Z=!((p=(S=this.control).hasPendingInitAppliedSnapshot)!=null&&p.call(S,e,j));pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"read-service-snapshot",details:{scenePath:j,revision:ie.revision,keys:Object.keys(ie.storage).length}}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"service-diff",details:{scenePath:j,added:V.added.length,updated:V.updated.length,removed:V.removed.length}}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"service-full-sync",details:{scenePath:j,reason:Z?"first-init":"post-commit-dirty"}});const $=await this.submitInitServiceSnapshot(e,j,r,ie.revision);if(!this.isCurrentViewGeneration(e,r))return;if(!$){if(n+=1,n<2)continue;this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"SERVICE_SYNC_COMMIT_TIMEOUT",reportStage:"init-service-commit",reportError:"service sync commit timeout"});return}n=0,(M=(m=this.control).markPendingInitServiceApplied)==null||M.call(m,e,j,ie.storage,ie.revision);const ee=this.viewContainerManager.getView(e),se=((R=(v=this.control).getPendingInitTargetScenePath)==null?void 0:R.call(v,e))||(ee==null?void 0:ee.focusScenePath),ce=((P=(b=this.control).getPendingInitReconcileRevision)==null?void 0:P.call(b,e,j))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0},me=((D=this.collector)==null?void 0:D.readSceneStorageSnapshot(e,j).revision)||0,pe=[];if((se!==j||ce.anchorRevision!==k.anchorRevision)&&pe.push("scene"),ce.cameraRevision!==k.cameraRevision&&pe.push("camera"),me!==ie.revision&&pe.push("service"),ce.forceFullRevision!==k.forceFullRevision&&pe.push("force"),pe.length){pt(this.Logger,{category:"init-reconcile",viewId:e,generation:r,stage:"post-commit-dirty",details:{scenePath:j,reason:pe.join(",")}});continue}this.finalizeViewInitReady(e,r,j);return}}submitInitServiceSnapshot(e,r,n,i){const o=`init-service-${n}-${++this.serviceSyncSequence}`,a=this.waitForServiceSyncCommit(o,e,n);return this.control.textEditorManager.clear(e,!0),this.taskBatchData.add({msgType:le.Clear,dataType:Re.Service,viewId:e,viewGeneration:n,scenePath:r}),this.pullServiceDataForReadyRenderer(e,r,{isAsync:!1,useAnimation:!1}),this.taskBatchData.add({msgType:le.ServiceSyncCommit,dataType:Re.Service,viewId:e,viewGeneration:n,scenePath:r,serviceSyncId:o,serviceRevision:i}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:n,stage:"service-commit-sent",details:{scenePath:r,syncId:o,revision:i}}),this.consume(),a}waitForInitCameraCatchUp(e,r,n=na+1e3){let i;const o=new Promise(c=>{i=setTimeout(()=>c(!1),n)}),a=this.waitForCameraUpdateEnd(e).then(()=>this.isCurrentViewGeneration(e,r),()=>!1);return Promise.race([a,o]).finally(()=>{i&&clearTimeout(i)})}waitForServiceSyncCommit(e,r,n,i=5e3){return new Promise(o=>{const a=setTimeout(()=>{this.serviceSyncCommitWaiters.delete(e),this.Logger.error(`[Appliance]: [init-reconcile] stage=service-commit-timeout viewId=${r} generation=${n} syncId=${e}`),o(!1)},i);this.serviceSyncCommitWaiters.set(e,{viewId:r,generation:n,resolve:o,timer:a})})}ackServiceSyncCommit(e){const r=e.serviceSyncId;if(!r)return;const n=this.serviceSyncCommitWaiters.get(r);!n||n.viewId!==e.viewId||n.generation!==e.viewGeneration||this.viewGenerationById.get(n.viewId)!==n.generation||(this.serviceSyncCommitWaiters.delete(r),clearTimeout(n.timer),pt(this.Logger,{category:"init-reconcile",viewId:n.viewId,generation:n.generation,stage:"service-commit-acked",details:{scenePath:e.scenePath||"none",syncId:r,revision:e.serviceRevision??0}}),n.resolve(!0))}finalizeViewInitReady(e,r,n){var o,a,c,l,u,h,d,f,g;if(!this.isCurrentViewGeneration(e,r))return;(o=this.cameraUpdateStateByView.get(e))!=null&&o.isRecovering||(a=this.viewInitRecoveryAttempts)==null||a.delete(e),(c=this.viewInitRecoveryDestroying)==null||c.delete(e),this.initCameraOptByView.delete(e),this.markServiceSyncReady(e),(u=(l=this.control).clearPendingViewInitState)==null||u.call(l,e),this.activeRenderRuntimeRecovery||(this.control.onViewServiceReady(e),this.dispatchCameraRecoveryReplay(e,r)),PMe(this.Logger,{viewId:e,generation:r,details:{finalScenePath:n||"none",serviceSync:"ready"}}),this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"success"}),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"success"});for(const[y,T]of this.viewInitAckTimeoutTimers||[])y.startsWith(`${e}:`)&&(clearTimeout(T),this.viewInitAckTimeoutTimers.delete(y));const i=this.viewServiceReadyWaiters.get(e);i==null||i.forEach(y=>{y.generation===r&&(clearTimeout(y.timer),y.resolve(!0),i.delete(y))}),i!=null&&i.size||this.viewServiceReadyWaiters.delete(e),((d=(h=this.control.pluginOptions)==null?void 0:h.extras)==null?void 0:d.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.activeRenderRuntimeRecovery&&!this.renderRuntimeCacheSavePromise&&(this.renderRuntimeCacheSavePromise=((g=(f=this.control).persistRenderRuntimeDecision)==null?void 0:g.call(f))||Promise.resolve())}flushPendingTransportInitMessages(){if(!this.isRenderTransportReady)return;const e=new Set;for(const[r,n]of this.pendingTransportMessages)e.add(n),this.pendingTransportMessages.delete(r);if(e.size){for(const r of e)r.viewGeneration!==void 0&&this.armViewInitAckTimeout(r.viewId,r.viewGeneration),pt(this.Logger,{category:"render-init",viewId:r.viewId,generation:r.viewGeneration,stage:"sent",details:{renderModel:Ht(this.control.renderMode,Hr(this.control,r.viewId)),context:Hr(this.control,r.viewId),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}});e.size&&this.dispatchMessages(e)}}getPendingInitMessageKey(e){return`${e.msgType}:${e.viewId}:${e.scenePath||""}`}markServiceSyncReady(e){this.serviceSyncReadyViews.add(e)}waitForViewInitAck(e,r,n=5e3){return this.initAckedViewIds.has(e)&&this.viewGenerationById.get(e)===r?Promise.resolve(!0):new Promise(i=>{const o=this.viewInitAckWaiters.get(e)||new Set,a={generation:r,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewInitAckWaiters.delete(e),i(!1)},n)};o.add(a),this.viewInitAckWaiters.set(e,o)})}waitForViewServiceReady(e,r,n=1e4){return this.serviceSyncReadyViews.has(e)&&this.viewGenerationById.get(e)===r?Promise.resolve(!0):new Promise(i=>{const o=this.viewServiceReadyWaiters.get(e)||new Set,a={generation:r,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewServiceReadyWaiters.delete(e),i(!1)},n)};o.add(a),this.viewServiceReadyWaiters.set(e,o)})}armViewInitAckTimeout(e,r,n=1e4){const i=`${e}:${r}`,o=this.viewInitAckTimeoutTimers.get(i);o&&clearTimeout(o);const a=window.setTimeout(()=>{this.viewInitAckTimeoutTimers.delete(i),!(this.initAckedViewIds.has(e)||this.viewGenerationById.get(e)!==r)&&(this.Logger.error(`[Appliance]: [render-init] stage=ack-timeout viewId=${e} generation=${r}`),ga(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-init-ack",reportError:"render init ack timeout"}))},n);this.viewInitAckTimeoutTimers.set(i,a)}async waitForViewInitCompletion(e){const r=this.viewGenerationById.get(e);if(r===void 0)return"stale";const n=await this.waitForViewInitAck(e,r,1e4);if(this.viewGenerationById.get(e)!==r)return"stale";if(!n)return"timeout";const i=await this.waitForViewServiceReady(e,r,15e3);return this.viewGenerationById.get(e)!==r?"stale":i?"completed":(this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:r,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-service-ready",reportError:"render service ready timeout"}),"timeout")}failViewInitOnTerminalRuntime(e){var n,i,o,a;const r=[...new Set([...this.viewInitAckWaiters.keys(),...this.viewServiceReadyWaiters.keys(),...[...this.serviceSyncCommitWaiters.values()].map(({viewId:c})=>c),...this.initReconcileTasks.keys(),...this.viewGenerationById.keys(),...this.viewContainerManager.getAllViews().filter(c=>!!c).map(c=>c.id)])];(i=(n=this.control).invalidateAllPendingViewInit)==null||i.call(n),this.serviceSyncCommitWaiters.forEach(c=>{clearTimeout(c.timer),c.resolve(!1)}),this.serviceSyncCommitWaiters.clear();for(const c of r){this.releaseCameraRecovery(c,`terminal-render-runtime:${e.reportErrorCode||"unknown"}`);const l=e.viewId===c?e.viewGeneration??this.viewGenerationById.get(c):this.viewGenerationById.get(c);this.viewGenerationById.set(c,(this.viewGenerationById.get(c)??0)+1),this.initAckedViewIds.delete(c),this.serviceSyncReadyViews.delete(c);const u=this.viewInitAckWaiters.get(c);u==null||u.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewInitAckWaiters.delete(c);const h=this.viewServiceReadyWaiters.get(c);h==null||h.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewServiceReadyWaiters.delete(c);for(const[d,f]of this.viewInitAckTimeoutTimers)d.startsWith(`${c}:`)&&(clearTimeout(f),this.viewInitAckTimeoutTimers.delete(d));this.initCameraOptByView.delete(c),this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${c} generation=${l??"unknown"} errorCode=${e.reportErrorCode} reason=terminal-main-thread-runtime`)}this.initReconcileTasks.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear(),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"})}settlePendingViewInitWaitersForRecovery(){var e,r,n,i,o,a,c,l;(e=this.viewInitAckWaiters)==null||e.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(r=this.viewInitAckWaiters)==null||r.clear(),(n=this.viewServiceReadyWaiters)==null||n.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(i=this.viewServiceReadyWaiters)==null||i.clear(),(o=this.serviceSyncCommitWaiters)==null||o.forEach(u=>{clearTimeout(u.timer),u.resolve(!1)}),(a=this.serviceSyncCommitWaiters)==null||a.clear();for(const u of((c=this.viewInitAckTimeoutTimers)==null?void 0:c.values())||[])clearTimeout(u);(l=this.viewInitAckTimeoutTimers)==null||l.clear()}isViewScopedInitFailure(e){return e.reportErrorCode==="INIT_CAMERA_CATCH_UP_FAILED"||e.reportErrorCode==="SERVICE_SYNC_COMMIT_TIMEOUT"||e.reportErrorCode==="RENDER_INIT_TIMEOUT"&&e.reportStage==="worker-service-ready"}scheduleViewInitRecovery(e,r){const{viewId:n,viewGeneration:i}=e;if(!n||i===void 0){this.failViewInitOnTerminalRuntime(e);return}const o=this.cameraUpdateStateByView.get(n),a=o==null?void 0:o.recoveryOwner;if(this.viewGenerationById.get(n)!==i||!this.viewContainerManager.getView(n)){this.logRenderRuntimeFallback("ignored-stale-view",{recoveryId:r,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn"),this.releaseCameraRecovery(n,"stale-or-removed-view",o,a);return}if(this.viewInitRecoveryAttempts||(this.viewInitRecoveryAttempts=new Map),this.viewInitRecoveryDestroying||(this.viewInitRecoveryDestroying=new Set),this.viewInitRecoveryDestroying.has(n)){this.logRenderRuntimeFallback("ignored-view-recovery-running",{recoveryId:r,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn");return}const c=this.viewInitRecoveryAttempts.get(n)||0,l=c>=Fp;l||this.viewInitRecoveryAttempts.set(n,c+1),this.logRenderRuntimeFallback(l?"view-init-recovery-exhausted":"view-init-recovery-start",{recoveryId:r,viewId:n,generation:i,attempt:c+1,maxAttempts:Fp,errorCode:e.reportErrorCode},l?"error":"warn"),l&&(this.viewInitRecoveryAttempts.delete(n),this.releaseCameraRecovery(n,"view-init-recovery-exhausted",o,a)),this.viewInitRecoveryDestroying.add(n);try{this.destroyViewWorker(n,"preserve-storage",!l&&(o==null?void 0:o.isRecovering)===!0)}finally{this.viewInitRecoveryDestroying.delete(n)}if(l){this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${n} generation=${i} errorCode=${e.reportErrorCode} reason=view-init-recovery-exhausted`),n===Fe&&this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"});return}const u=this.viewContainerManager.mountView(n);if(o!=null&&o.isRecovering){const d=o.replayCamera;d&&this.control.queuePendingInitCamera(n,d.cameraOpt,d.scenePath)}const h=this.viewGenerationById.get(n);u.catch(d=>{var f;this.Logger.error(`[Appliance]: [render-init] stage=remount-failed viewId=${n} error=${d instanceof Error?d.message:String(d)}`),this.viewGenerationById.get(n)===h&&((f=this.viewInitRecoveryAttempts)==null||f.delete(n)),this.releaseCameraRecovery(n,"view-remount-failed",o,a)})}scheduleRenderRuntimeFallback(e){var c,l,u,h;if(e.reportErrorCode!==A0e&&e.reportErrorCode!=="SERVICE_SYNC_COMMIT_TIMEOUT"&&e.reportErrorCode!=="IMAGE_BITMAP_RENDER_FAILED"&&e.reportErrorCode!=="INIT_CAMERA_CATCH_UP_FAILED"&&e.reportErrorCode!=="RENDER_INIT_TIMEOUT"&&e.reportErrorCode!=="CAMERA_TRANSPORT_TIMEOUT"&&e.reportErrorCode!=="RENDERER_RUNTIME_ERROR")return;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1){e.viewId&&this.releaseCameraRecovery(e.viewId,"manager-lifecycle-ended");return}const r=`render-recovery-${Date.now()}-${++this.renderRuntimeFallbackSequence}`,n=this.activeRenderRuntimeRecovery;if(n){if(e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&e.viewId){const d=this.cameraUpdateStateByView.get(e.viewId),f=n.views.find(g=>g.viewId===e.viewId);d!=null&&d.isRecovering&&d.replayCamera&&f?(f.replayCamera=this.cloneCameraReplay(d.replayCamera),f.cameraRecoveryOwner=d.recoveryOwner,this.control.queuePendingInitCamera(e.viewId,d.replayCamera.cameraOpt,d.replayCamera.scenePath)):d!=null&&d.isRecovering&&!f&&this.releaseCameraRecovery(e.viewId,"view-not-in-active-runtime-recovery",d)}this.logRenderRuntimeFallback("ignored-already-running",{recoveryId:n.recoveryId,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode},"warn");return}if(this.isViewScopedInitFailure(e)||e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&this.control.renderMode==="main-thread"){this.scheduleViewInitRecovery(e,r);return}if(this.control.renderMode==="main-thread"){this.logRenderRuntimeFallback("ignored-terminal-runtime",{recoveryId:r,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,renderModel:"mainThread+canvas2d"},"warn"),this.failViewInitOnTerminalRuntime(e);return}(h=(u=this.control).invalidateAllPendingViewInit)==null||h.call(u),this.serviceSyncReadyViews.clear();const i=this.viewContainerManager.getAllViews().filter(d=>!!d).map(d=>{var y,T;const f=this.cameraUpdateStateByView.get(d.id),g=f?this.beginCameraRecovery(d.id,f):void 0;return(T=(y=this.control).armPendingViewInit)==null||T.call(y,d.id),g&&this.control.queuePendingInitCamera(d.id,g.cameraOpt,g.scenePath),{viewId:d.id,view:d,lifecycleGeneration:this.control.getViewLifecycleGeneration(d.id),viewGeneration:this.viewGenerationById.get(d.id),scenePath:d.focusScenePath,cameraOpt:d.cameraOpt?{...d.cameraOpt}:void 0,replayCamera:g,cameraRecoveryOwner:f==null?void 0:f.recoveryOwner}}),o={recoveryId:r,startedAt:Date.now(),fromRenderMode:this.control.renderMode,fromContextType:this.control.renderingCompatibilityDecision.contextType,views:i,cacheInvalidation:Promise.resolve()};this.activeRenderRuntimeRecovery=o,this.settlePendingViewInitWaitersForRecovery(),o.cacheInvalidation=(this.renderRuntimeCacheSavePromise||Promise.resolve()).catch(()=>{}).then(()=>{var d,f;return(f=(d=this.control).invalidateRenderRuntimeDecision)==null?void 0:f.call(d)}).then(()=>{}).catch(d=>{this.logRenderRuntimeFallback("cache-invalidate-failed",{recoveryId:o.recoveryId,error:d instanceof Error?d.message:String(d)},"warn")}),this.control.queuePendingRuntimeReset(()=>this.runRenderRuntimeFallback(e,o)).then(d=>{d&&this.persistRecoveredRenderRuntime(o,d)}).catch(d=>{this.releaseRenderRuntimeRecoveryCameras(o,"unexpected-runtime-recovery-failure"),this.activeRenderRuntimeRecovery===o&&(this.activeRenderRuntimeRecovery=void 0),this.logRenderRuntimeFallback("failed",{recoveryId:o.recoveryId,errorCode:e.reportErrorCode,failureStage:"unexpected",error:d instanceof Error?d.message:String(d),elapsedMs:Date.now()-o.startedAt},"error")})}isRenderRuntimeRecoveryCurrent(e){return this.activeRenderRuntimeRecovery===e}assertRenderRuntimeRecoveryCurrent(e){var r,n;if(!this.isRenderRuntimeRecoveryCurrent(e))throw new ki;if(((n=(r=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:n.call(r))===!1)throw e.cancelReason||(e.cancelReason="manager-lifecycle-ended"),new ki;if(!this.viewContainerManager.getAllViews().some(i=>!!i))throw e.cancelReason||(e.cancelReason="no-active-views"),new ki}isRenderRuntimeRecoveryViewCurrent(e){return this.viewContainerManager.getView(e.viewId)===e.view&&this.control.isPendingViewInitCurrent(e.viewId,e.lifecycleGeneration)}finishRenderRuntimeRecovery(e){var n,i;this.assertRenderRuntimeRecoveryCurrent(e);const r=[];for(const o of e.views)this.isRenderRuntimeRecoveryViewCurrent(o)&&(r.push(o.viewId),(i=(n=this.control).invalidatePendingViewInit)==null||i.call(n,o.viewId));this.activeRenderRuntimeRecovery=void 0,r.forEach(o=>{if(this.isServiceSyncReady(o)){this.control.onViewServiceReady(o);const a=this.viewGenerationById.get(o);a!==void 0&&this.dispatchCameraRecoveryReplay(o,a)}})}persistRecoveredRenderRuntime(e,r){const n=e.cacheInvalidation.then(async()=>{var i,o,a,c;this.activeRenderRuntimeRecovery||((o=(i=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:o.call(i))!==!1&&(this.control.renderMode!==r.renderMode||this.control.renderingCompatibilityDecision.contextType!==r.contextType||await((c=(a=this.control).persistRenderRuntimeDecision)==null?void 0:c.call(a)))}).catch(i=>{this.logRenderRuntimeFallback("cache-save-failed",{recoveryId:e.recoveryId,error:i instanceof Error?i.message:String(i)},"warn")});this.renderRuntimeCacheSavePromise=n}cancelRenderRuntimeRecovery(e){const r=this.activeRenderRuntimeRecovery;r&&(r.cancelReason=e,this.activeRenderRuntimeRecovery=void 0)}async runRenderRuntimeFallback(e,r=this.activeRenderRuntimeRecovery){if(r)try{return await this.runActiveRenderRuntimeFallback(e,r)}catch(n){if(!(n instanceof ki))throw this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0),n;this.logRenderRuntimeFallback("cancelled",{recoveryId:r.recoveryId,reason:r.cancelReason||"runtime-recovery-cancelled",elapsedMs:Date.now()-r.startedAt}),this.releaseRenderRuntimeRecoveryCameras(r,r.cancelReason||"runtime-recovery-cancelled"),this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0);return}}async runActiveRenderRuntimeFallback(e,r){var S,p,m,M;const{recoveryId:n,startedAt:i,fromRenderMode:o,fromContextType:a}=r,{views:c}=r;this.assertRenderRuntimeRecoveryCurrent(r),this.serviceSyncReadyViews.clear(),this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,reportStage:e.reportStage,contextLost:e.reportContextLost,glError:e.reportGlError,currentProgram:e.reportCurrentProgram,programLinked:e.reportProgramLinked,programHasUniforms:e.reportProgramHasUniforms,elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("drain-start",{recoveryId:n,viewIds:c.map(({viewId:v})=>v)});const l=await Promise.all(c.map(async v=>{const{viewId:R,scenePath:b}=v;if(!this.isRenderRuntimeRecoveryViewCurrent(v))return{viewId:R,status:"stale"};if(!b)return{viewId:R,status:"success"};try{return await this.forceDoneLocalWorks(R,b,"render-runtime-fallback")}catch(P){return{viewId:R,status:"failed",failureReason:P instanceof Error?P.message:String(P)}}}));this.assertRenderRuntimeRecoveryCurrent(r);const u=l.filter(v=>v.status==="failed");this.logRenderRuntimeFallback("drain-result",{recoveryId:n,status:u.length?"partial-failure":"success",failures:u.map(v=>({viewId:v.viewId,reason:v.failureReason})),elapsedMs:Date.now()-i},u.length?"warn":"info");const h=this.getRenderProbeCandidates(),d=Date.now(),f=h.findIndex(v=>v.renderMode===o&&(v.contextType===a||v.contextType==="webgl2"&&a==="webgl")),g=this.getRenderProbeProfile();let y=g&&this.createRenderProbeSession(g);const T=new Map,x=new Set,C=v=>`${v.renderMode}:${v.contextType}`,L=(v,R)=>{const b=C(v);let P=T.get(b);if(!P&&(P=this.probeRenderRuntimeCandidate(v,Math.min(Ts,R),y||void 0),T.set(b,P),v.renderMode==="worker-image-bitmap"&&v.contextType!=="2d")){const D=h.find(z=>z.renderMode===v.renderMode&&z.contextType==="2d");D&&!T.has(C(D))&&T.set(C(D),this.probeRenderRuntimeCandidate(D,Math.min(Ts,R),y||void 0))}return P||Promise.resolve(void 0)};try{for(let v=f+1;v<h.length;v+=1){this.assertRenderRuntimeRecoveryCurrent(r);const R=h[v];if(x.has(C(R)))continue;const b=Ht(R.renderMode,R.contextType);this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,to:b,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});const P=ea-(Date.now()-d);if(P<=0){this.logRenderRuntimeFallback("failed",{recoveryId:n,target:b,errorCode:e.reportErrorCode,failureStage:"candidate-probe-budget"},"warn");break}const D=await L(R,P);this.assertRenderRuntimeRecoveryCurrent(r);let z=ta(D);if(z&&R.contextType!=="2d"&&((p=(S=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&p.call(S))){const A=ea-(Date.now()-d),N=h.find(Y=>Y.renderMode===R.renderMode&&Y.contextType==="2d"),W=A>0&&N?await L(N,A):void 0;N&&x.add(C(N)),this.assertRenderRuntimeRecoveryCurrent(r),z=z&&ta(W)}const j=Wp(R,D),k=Ht(j.renderMode,j.contextType);if(this.logRenderRuntimeFallback(z?"candidate-probe-success":"candidate-probe-failed",{recoveryId:n,target:k,errorCode:e.reportErrorCode,probeStage:(m=D==null?void 0:D.programProbe)==null?void 0:m.stage,probeError:((M=D==null?void 0:D.programProbe)==null?void 0:M.error)||(D?void 0:"timeout")},z?"info":"warn"),!!z){y&&(this.closeRenderProbeSession(y),y=void 0),this.control.applyRuntimeRenderingDecision(j.renderMode,j.contextType,"runtime-webgl-program-failure",`Runtime render recovery selected ${k}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback";try{return await this.rebuildRenderRuntimeOnSerialQueue(c,j.renderMode,r),this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("success",{recoveryId:n,from:`${o}/${a}`,to:k,elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(r),{renderMode:j.renderMode,contextType:j.contextType}}catch(A){if(A instanceof ki)throw A;this.logRenderRuntimeFallback("failed",{recoveryId:n,target:b,errorCode:e.reportErrorCode,failureStage:"candidate-rebuild",error:A instanceof Error?A.message:String(A),elapsedMs:Date.now()-i},"warn"),T.clear(),y=g&&this.createRenderProbeSession(g)}}}}finally{y&&this.closeRenderProbeSession(y)}this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("fallback-main-thread-start",{recoveryId:n,from:`${o}/${a}`,to:"mainThread+canvas2d",errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});try{return this.control.applyRuntimeRenderingDecision("main-thread","2d","runtime-webgl-program-failure","All worker render candidates failed; downgraded to mainThread Canvas2D"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.rebuildRenderRuntimeOnSerialQueue(c,"main-thread",r),this.assertRenderRuntimeRecoveryCurrent(r),this.logRenderRuntimeFallback("fallback-main-thread-success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(r),{renderMode:"main-thread",contextType:"2d"}}catch(v){if(v instanceof ki)throw v;const R=v instanceof Error?v.message:String(v);this.logRenderRuntimeFallback("fallback-main-thread-failed",{recoveryId:n,errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:R,elapsedMs:Date.now()-i},"error"),this.logRenderRuntimeFallback("failed",{recoveryId:n,target:"mainThread+canvas2d",errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:R,elapsedMs:Date.now()-i},"error"),this.failViewInitOnTerminalRuntime(e),this.activeRenderRuntimeRecovery===r&&(this.activeRenderRuntimeRecovery=void 0);return}}async rebuildRenderRuntimeOnSerialQueue(e,r,n){var o,a,c,l,u,h,d,f,g,y,T,x;const{recoveryId:i}=n;this.assertRenderRuntimeRecoveryCurrent(n),this.destroy(!0,!0);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-stale"});continue}const{view:L}=C;(a=(o=this.control).clearPendingViewInitState)==null||a.call(o,C.viewId),(l=(c=this.control).armPendingViewInit)==null||l.call(c,C.viewId);const S=this.cameraUpdateStateByView.get(C.viewId),p=S!=null&&S.isRecovering&&S.replayCamera?this.cloneCameraReplay(S.replayCamera):C.replayCamera;p&&(C.replayCamera=this.cloneCameraReplay(p),(S==null?void 0:S.recoveryOwner)!==void 0&&(C.cameraRecoveryOwner=S.recoveryOwner),this.control.queuePendingInitCamera(C.viewId,p.cameraOpt,p.scenePath)),L.focusScenePath=C.scenePath;const m=(p==null?void 0:p.cameraOpt)||C.cameraOpt;if(m&&(L.cameraOpt={...m}),this.logRenderRuntimeFallback("surface-reset-start",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((u=this.activeRenderRuntimeRecovery)==null?void 0:u.startedAt)||Date.now())}),await L.displayer.resetRenderSurface(),this.assertRenderRuntimeRecoveryCurrent(n),this.logRenderRuntimeFallback("surface-reset-completed",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((h=this.activeRenderRuntimeRecovery)==null?void 0:h.startedAt)||Date.now())}),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-removed",elapsedMs:Date.now()-(((d=this.activeRenderRuntimeRecovery)==null?void 0:d.startedAt)||Date.now())});continue}if(this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,generation:this.viewGenerationById.get(C.viewId),target:`${r}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((f=this.activeRenderRuntimeRecovery)==null?void 0:f.startedAt)||Date.now())}),this.control.isUseOffscreenTransfer){const M=L.displayer.canvasBgRef.current,v=L.displayer.canvasServiceFloatRef.current,R=L.displayer.canvasFloatRef.current;if(!M||!v||!R)throw new Error(`render surface unavailable: ${C.viewId}`);L.displayer.setTransferControlToOffscreenCanvas({bgCanvas:M,serviceCanvas:v,localCanvas:R})}this.logRenderRuntimeFallback("surface-created",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((g=this.activeRenderRuntimeRecovery)==null?void 0:g.startedAt)||Date.now())})}if(this.logRenderRuntimeFallback("reinit-start",{recoveryId:i,target:`${r}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((y=this.activeRenderRuntimeRecovery)==null?void 0:y.startedAt)||Date.now())}),await this.init(!0),this.assertRenderRuntimeRecoveryCurrent(n),this.control.renderMode!==r)throw new Error(`render mode changed during reinit: expected=${r}, actual=${this.control.renderMode}`);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C))continue;const{view:L}=C,S=this.cameraUpdateStateByView.get(C.viewId);S!=null&&S.isRecovering&&S.replayCamera&&(C.replayCamera=this.cloneCameraReplay(S.replayCamera),C.cameraRecoveryOwner=S.recoveryOwner,L.cameraOpt={...S.replayCamera.cameraOpt});const p=this.viewContainerManager.getViewInitData(C.viewId);if(!p)throw new Error(`view init data unavailable: ${C.viewId}`);(x=(T=this.control).resetPendingInitRendererBaseline)==null||x.call(T,C.viewId),this.createViewWorker(C.viewId,p,L.displayer);const m=this.viewGenerationById.get(C.viewId);if(m===void 0)throw new Error(`view generation unavailable: ${C.viewId}`);this.logRenderRuntimeFallback("init-sent",{recoveryId:i,viewId:C.viewId,generation:m,elapsedMs:Date.now()-n.startedAt});const M=await this.waitForViewInitCompletion(C.viewId);if(this.assertRenderRuntimeRecoveryCurrent(n),!!this.isRenderRuntimeRecoveryViewCurrent(C)&&M==="timeout")throw new Error(`render view init completion timeout: ${C.viewId}`)}}assertMarkmapRuntimeRegistered(e,r){try{fM.getMarkmapRuntimeOrThrow()}catch(n){const i=n instanceof Error?n.message:String(n);throw this.Logger.error(`[Appliance]: [markmap] ${e} failed: ${i}; viewId=${r}`),n}}destroy(e=!1,r=!1){var o,a,c,l,u,h,d,f,g,y,T,x,C,L,S,p,m,M;const n=[],i=(v,R)=>{try{R()}catch(b){n.push(`${v}: ${b instanceof Error?b.message:String(b)}`)}};e||this.cancelRenderRuntimeRecovery("external-destroy"),this.initGeneration++,this.viewGenerationById.forEach((v,R)=>{this.viewGenerationById.set(R,v+1)}),this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.viewInitAckWaiters.forEach(v=>{v.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewInitAckWaiters.clear(),this.serviceSyncCommitWaiters.forEach(v=>{clearTimeout(v.timer),v.resolve(!1)}),this.serviceSyncCommitWaiters.clear(),this.viewServiceReadyWaiters.forEach(v=>{v.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewServiceReadyWaiters.clear(),this.initReconcileTasks.clear(),this.fullLayerFrameStateByView.clear(),this.hasMainViewInitAck=!1,e||this.mainViewInitReady.cancel(),this.serviceSyncReadyViews.clear(),this.initAckedViewIds.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear();for(const v of this.viewInitAckTimeoutTimers.values())clearTimeout(v);this.viewInitAckTimeoutTimers.clear(),this.renderRuntimeCacheSavePromise=void 0,this.isRenderTransportReady=!1,this.initCameraOptByView.clear(),this.mainViewInitAckCallbacks.clear(),i("method-builder",()=>{var v;return(v=this.methodBuilder)==null?void 0:v.destroy()}),i("un-writable",()=>this.unWritable()),i("task-queue",()=>this.destroyTaskQueue(r)),this.taskBatchData.clear(),r||(this.cameraUpdateStateByView.clear(),(c=this.cameraClearReplayByView)==null||c.clear()),this.cameraFailureSequenceByView.clear(),this.cameraTaskSequenceByView.clear(),(l=this.localWorkFinalizeQueueByView)==null||l.clear(),this.operationBarrierQueueByView.clear(),(u=this.willSelectorWorkIdByView)==null||u.clear(),(h=this.operationBarrierInvalidationWaitersByView)==null||h.forEach(v=>{v.forEach(R=>R())}),(d=this.operationBarrierInvalidationWaitersByView)==null||d.clear(),(f=this.operationBarrierEpochByView)==null||f.clear(),[...this.fullLayerBitmapEraseTxns.keys()].forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"aborted")}),this.fullLayerBitmapEraseTxnWaiters.forEach(v=>{v.forEach(R=>R("aborted"))}),this.fullLayerBitmapEraseTxnWaiters.clear(),this.cancelledEraseTxnIds.clear(),this.cancelledEraseTxnOwners.clear(),(g=this.cancelledLocalWorkOwners)==null||g.clear();for(const v of this.pendingDprByView.keys())(T=(y=this.control)==null?void 0:y.viewContainerManager.getView(v))==null||T.displayer.cancelDprUpdate();this.pendingDprByView.clear(),(x=this.pendingDprOwnerByView)==null||x.clear(),this.viewRecoveryQueueByView.clear(),this.cameraUpdateEndWaitersByView.forEach((v,R)=>{var b;r&&((b=this.cameraUpdateStateByView.get(R))!=null&&b.isRecovering)||(v.forEach(P=>P()),this.cameraUpdateEndWaitersByView.delete(R))}),this.viewLifecycleIdleWaitersByView.forEach((v,R)=>{var b;r&&((b=this.cameraUpdateStateByView.get(R))!=null&&b.isRecovering)||(v.forEach(P=>P()),this.viewLifecycleIdleWaitersByView.delete(R))}),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.localEventQueueByView.clear(),(C=this.localInputEpochByView)==null||C.clear(),(L=this.localInputTransactionEpochByView)==null||L.clear(),this.localEventQueue=Promise.resolve(),this.localDoneDispatchTimersByView.forEach(v=>{v.forEach(R=>clearTimeout(R)),v.clear()}),this.localDoneDispatchTimersByView.clear();for(const v of((S=this.delayWorkStateToDoneResolveByView)==null?void 0:S.values())||[])v(!1);(p=this.delayWorkStateToDoneResolveByView)==null||p.clear(),(m=this.localDoneWaitByView)==null||m.clear(),(M=this.delayWorkStateToDoneResolve)==null||M.call(this,!1),this.delayWorkStateToDoneResolve=void 0,this.localDoneWait=void 0,this.isActive=!1,this.clearAllResolveMap.forEach(({timer:v,resolve:R},b)=>{v&&clearTimeout(v),R==null||R(b)}),this.clearAllResolveMap.clear(),this.snapshotMap.forEach(({resolve:v,value:R})=>{v(R.map(b=>b||null))}),this.snapshotMap.clear(),this.snapshotRequestIdByViewScene.clear(),this.boundingRectMap.forEach(({resolve:v})=>{v({x:0,y:0,w:0,h:0})}),this.boundingRectMap.clear(),this.boundingRectRequestIdByViewScene.clear(),this.refreshTextRenderResolveMap.forEach(({timer:v,resolve:R})=>{v&&clearTimeout(v),R==null||R(!1)}),this.refreshTextRenderResolveMap.clear(),this.settlePendingMarkmapRequestsOnDestroy(),this.getVNodeInfoResolveMap.forEach(({timer:v,resolve:R},b)=>{v&&clearTimeout(v),R==null||R({uuid:b})}),this.getVNodeInfoResolveMap.clear(),this.clearReRenders(1/0),i("font-face",()=>this.fontFaceManager.destroy()),i("main-thread",()=>{var v;return(v=this.mainThread)==null?void 0:v.destroy()}),this.mainThread=void 0,i("background-thread",()=>{var v;return(v=this.backgroundThreadManager)==null?void 0:v.destroy()}),this.backgroundThreadManager=void 0,i("full-worker",()=>{var v;return(v=this.fullWorker)==null?void 0:v.terminate()}),this.fullWorker=void 0,i("sub-worker",()=>{var v;return(v=this.subWorker)==null?void 0:v.terminate()}),this.subWorker=void 0,n.length&&this.Logger.error(`[Appliance]: MainEngine destroy completed with cleanup errors: ${n.join("; ")}`)}settlePendingMarkmapRequestsOnDestroy(){this.markmapIdResolveMap.forEach(({timer:e,resolve:r})=>{e&&clearTimeout(e),r==null||r()}),this.markmapIdResolveMap.clear()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}acceptConsumeAck(e,r){if(!ve.isNumber(e)||r&&!Array.from(this.localPointsBatchData.keys()).some(i=>i.toString()===r))return!1;const n=Math.max(this.consumeCount,e);if(n===this.consumeCount)return!1;if(this.consumeCount=n,r){const i=this.getFullLayerBitmapEraseTxns().get(r);i&&i.phase!=="committed"&&i.phase!=="aborting"&&i.phase!=="aborted"&&(i.doingAckCount=Math.max(i.doingAckCount||0,n))}return this.runAnimation(),!0}get postCount(){return this._postCount}isServiceSyncReady(e){return this.serviceSyncReadyViews.has(e)}isRenderRuntimeRecovering(){return this.activeRenderRuntimeRecovery!==void 0}isViewInitReady(e){return this.isViewInitAck(e)&&this.isServiceSyncReady(e)}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.PencilEraser||e===q.BitMapEraser||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Selector}get isCanDrawWork(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.BitMapEraser||e===q.PencilEraser}get isUseZIndex(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Text||e===q.Image}get isCanRecordUndoRedo(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Text||e===q.Image}get isCanSentCursor(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.Text||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Selector||e===q.Clicker}get isPostCountType(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Selector}get isCanPostDraw(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Pencil||e===q.PencilEraser||e===q.BitMapEraser}get isCanStartEventConsum(){var r;const e=(r=this.currentToolsData)==null?void 0:r.toolsType;return e===q.Selector||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser}async init(e=!1){e||this.destroy(!0),this.mainViewInitReady.begin(),this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"start"});try{this.Logger.info(`[Appliance]: [plugin-options] ${JSON.stringify(this.control.pluginOptions.extras)}`)}catch(r){this.Logger.warn(`[Appliance]: [plugin-options] stringify failed: ${(r==null?void 0:r.message)||r}`)}try{if(await this.on()===!1)return;this.internalMsgEmitterListener(),this.isActive=!0,this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"success"})}catch(r){throw this.mainViewInitReady.cancel(),this.control.emitInitLoadingChange({loading:!1,phase:"worker",status:"error"}),r}}async useBackgroundThread(){this.Logger.info("[Appliance]: use background thread");const{BackgroundThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-GZUDLXJC.js"));this.backgroundThreadManager=new e(this)}async useMainThread(){this.Logger.info("[Appliance]: no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-GBYM7kT5.js"));this.mainThread=new e(this),this.isRenderTransportReady=!0,this.flushPendingTransportInitMessages()}getRenderProbeCandidates(){const e=this.control.renderingCompatibilityDecision,r=e.capabilities,n=e.contextType==="webgl2"?["webgl2","2d"]:e.contextType==="webgl"?["webgl","2d"]:["2d"],i=e.renderMode==="worker-image-bitmap"&&e.reason!=="use-simple-false"?["worker-image-bitmap"]:["worker-offscreen-transfer","worker-image-bitmap"],o=[];for(const a of i)if(!(a==="worker-offscreen-transfer"&&!r.offscreenTransfer||a==="worker-image-bitmap"&&!r.imageBitmap))for(const c of n)c==="webgl2"&&!r.webgl2||c==="webgl"&&!r.webgl||o.push({renderMode:a,contextType:c});return o}getRenderProbeProfile(){return{width:jp,height:jp,dpr:1,testRect:{...Swe}}}createRenderProbeDOMCanvas(e){if(typeof document>"u")return;const r=document.createElement("div");r.className="appliance-render-test-container",r.setAttribute("aria-hidden","true"),Object.assign(r.style,{position:"fixed",left:"0",top:"0",width:"1px",height:"1px",overflow:"hidden",pointerEvents:"none",zIndex:"-2147483647",contain:"layout style size"});let n;const i=()=>(n==null||n.remove(),n=document.createElement("canvas"),n.className="appliance-render-test-canvas",n.width=Math.max(1,Math.floor(e.width*e.dpr)),n.height=Math.max(1,Math.floor(e.height*e.dpr)),Object.assign(n.style,{width:"1px",height:"1px",opacity:"0",pointerEvents:"none"}),r.appendChild(n),n);return document.body.appendChild(r),i(),{get canvas(){return n},replaceCanvas:i,cleanup:()=>r.remove()}}async probeRenderRuntimeCandidate(e,r=Ts,n){const i=!n,o=(n==null?void 0:n.profile)||this.getRenderProbeProfile(),a=n||o&&this.createRenderProbeSession(o);if(a)try{return await this.requestRenderProbeCandidate(a,e,r)}finally{i&&this.closeRenderProbeSession(a)}}createRenderProbeSession(e){const r=this.createRenderProbeDOMCanvas(e);if(!r)return;let n;try{n=new Worker(this.fullWorkerUrl,{type:"classic"})}catch{r.cleanup();return}const i={worker:n,profile:e,domTest:r,pending:new Map,destinationQueue:Promise.resolve(),closed:!1};n.onmessage=a=>{var h,d,f;const c=a.data;if(!c||c.type!==le.ProbeRenderCapabilities||!c.requestId)return;const l=i.pending.get(c.requestId);if(!l){try{(f=(d=(h=c.workerCapabilities)==null?void 0:h.programProbe)==null?void 0:d.imageBitmap)==null||f.close()}catch{}return}clearTimeout(l.timer);const u=i.destinationQueue.then(()=>this.finalizeRenderProbeResponse(i,l,c.workerCapabilities));i.destinationQueue=u.then(()=>{},()=>{}),u.then(g=>this.resolveRenderProbeEntry(i,c.requestId,l,g),()=>this.resolveRenderProbeEntry(i,c.requestId,l,void 0))};const o=()=>{i.closed=!0;for(const[a,c]of i.pending)i.pending.delete(a),clearTimeout(c.timer),c.resolve(void 0)};return n.onerror=o,n.onmessageerror=o,i}closeRenderProbeSession(e){if(e.closed&&e.pending.size===0){e.worker.terminate(),e.domTest.cleanup();return}e.closed=!0;for(const[r,n]of e.pending)e.pending.delete(r),clearTimeout(n.timer),n.resolve(void 0);e.worker.terminate(),e.domTest.cleanup()}resolveRenderProbeEntry(e,r,n,i){e.pending.get(r)===n&&(e.pending.delete(r),clearTimeout(n.timer),n.resolve(i))}requestRenderProbeCandidate(e,r,n){if(e.closed)return Promise.resolve(void 0);const i=`render-probe-${Date.now()}-${Math.random().toString(36).slice(2)}`,o=Date.now()+n;let a,c,l;try{if(r.renderMode==="worker-offscreen-transfer"){const u=e.domTest.replaceCanvas();c=u,a=u.transferControlToOffscreen()}else e.imageBitmapDestination||(e.imageBitmapDestination=e.domTest.replaceCanvas()),l=e.imageBitmapDestination;return new Promise(u=>{var d;const h=setTimeout(()=>{const f=e.pending.get(i);f&&(e.pending.delete(i),f.resolve(void 0))},n);e.pending.set(i,{candidate:r,sourceCanvas:c,destinationCanvas:l,deadlineAt:o,timer:h,resolve:u});try{e.worker.postMessage(new Set([{msgType:le.ProbeRenderCapabilities,type:le.ProbeRenderCapabilities,requestId:i,requestedContextType:r.contextType,probeTransport:r.renderMode,probeCanvas:a,probeProfile:e.profile}]),a?[a]:[])}catch{if(((d=e.pending.get(i))==null?void 0:d.resolve)!==u)return;e.pending.delete(i),clearTimeout(h),u(void 0)}})}catch{return Promise.resolve(void 0)}}async finalizeRenderProbeResponse(e,r,n){var a,c,l;const i=n==null?void 0:n.programProbe,o=i==null?void 0:i.imageBitmap;if(!n||!i)return n;try{if(i.passed!==!0)return n;const u=r.candidate.renderMode==="worker-image-bitmap"&&i.expectedPixelChecks||i.pixelChecks;if(!u||u.length<4)throw new Error("probe-pixel-check-template-missing");const h={width:Math.max(1,Math.floor(e.profile.width*e.profile.dpr)),height:Math.max(1,Math.floor(e.profile.height*e.profile.dpr))};if(((a=i.canvasSize)==null?void 0:a.width)!==h.width||((c=i.canvasSize)==null?void 0:c.height)!==h.height)throw new Error("probe-canvas-size-mismatch");let d;if(r.candidate.renderMode==="worker-offscreen-transfer"){if(!r.sourceCanvas)throw new Error("offscreen-transfer-dom-canvas-unavailable");d=await this.readTransferredCanvasDestinationPixels(r.sourceCanvas,h,u,r.deadlineAt)}else{if(!o)throw new Error("image-bitmap-missing");if(!i.imageBitmapRect)throw new Error("image-bitmap-rect-missing");const g=(l=r.destinationCanvas)==null?void 0:l.getContext("2d");if(!g)throw new Error("destination-2d-context-unavailable");g.clearRect(0,0,h.width,h.height);const{x:y,y:T,width:x,height:C}=i.imageBitmapRect;g.drawImage(o,0,0,x,C,y,T,x,C),d=Up(g,u)}const f=$u(d);return n.contextSupported=n.contextSupported&&f,n.programProbe={...i,passed:i.passed===!0&&f,stage:f?i.stage:"destination-pixel-check",error:f?i.error:r.candidate.renderMode==="worker-offscreen-transfer"?"offscreen-transfer-destination-pixel-check-failed":"destination-pixel-check-failed",destinationPixelChecks:d,imageBitmap:void 0},n}catch(u){return n.contextSupported=!1,n.programProbe={...i,passed:!1,stage:"destination-pixel-check",error:Kr(u),destinationPixelChecks:void 0,imageBitmap:void 0},n}finally{try{o==null||o.close()}catch{}}}async readTransferredCanvasDestinationPixels(e,r,n,i){if(typeof document>"u")return;const o=document.createElement("canvas");o.width=r.width,o.height=r.height;const a=o.getContext("2d");if(!a)return;let c,l=0;for(;Date.now()<i;)if(await Twe(i),l+=1,!(l<2)&&(a.clearRect(0,0,r.width,r.height),a.drawImage(e,0,0,r.width,r.height,0,0,r.width,r.height),c=Up(a,n),$u(c)))return c;return c}async probeAndLockRenderRuntime(){var u,h;const e=this.getRenderProbeCandidates(),r=this.getRenderProbeProfile(),n=Date.now();this.Logger.info(`[Appliance]: [render-probe] stage=probe-start candidates=${e.map(d=>Ht(d.renderMode,d.contextType)).join(",")}`);const i=r&&this.createRenderProbeSession(r),o=new Map,a=new Set,c=d=>`${d.renderMode}:${d.contextType}`,l=(d,f)=>{const g=c(d);let y=o.get(g);if(!y&&(y=this.probeRenderRuntimeCandidate(d,Math.min(Ts,f),i||void 0),o.set(g,y),d.renderMode==="worker-image-bitmap"&&d.contextType!=="2d")){const T=e.find(x=>x.renderMode===d.renderMode&&x.contextType==="2d");T&&!o.has(c(T))&&o.set(c(T),this.probeRenderRuntimeCandidate(T,Math.min(Ts,f),i||void 0))}return y||Promise.resolve(void 0)};try{for(const d of e){if(a.has(c(d)))continue;const f=ea-(Date.now()-n);if(f<=0)break;const g=Ht(d.renderMode,d.contextType);this.Logger.info(`[Appliance]: [render-probe] stage=candidate-start renderModel=${g} canvasSize=${r?`${Math.floor(r.width*r.dpr)}x${Math.floor(r.height*r.dpr)}`:"unavailable"} logicalSize=${r?`${r.width}x${r.height}`:"unavailable"} dpr=${(r==null?void 0:r.dpr)??"unavailable"} rect=${r?`${r.testRect.x},${r.testRect.y},${r.testRect.width}x${r.testRect.height}`:"unavailable"}`);const y=await l(d,f),T=ta(y);let x=T,C,L;if(x&&d.contextType!=="2d"&&((h=(u=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&h.call(u))){C=e.find(M=>M.renderMode===d.renderMode&&M.contextType==="2d");const m=ea-(Date.now()-n);L=C&&m>0?await l(C,m):void 0,C&&a.add(c(C)),x=x&&ta(L)}const S=Wp(d,y),p=Ht(S.renderMode,S.contextType);if(!x){const m=T?"companion":"primary",M=T?L:y,v=M==null?void 0:M.programProbe,R=T?Ht((C==null?void 0:C.renderMode)||d.renderMode,(C==null?void 0:C.contextType)||"2d"):p,b=(v==null?void 0:v.error)||(M?"probe-result-incomplete":T?"timeout-or-budget":"timeout");this.Logger.warn(`[Appliance]: [render-probe] stage=candidate-failed renderModel=${p} requestedRenderModel=${g} failureSource=${m} failedRenderModel=${R} stageDetail=${(v==null?void 0:v.stage)||"probe-result-incomplete"} error=${b} canvasSize=${v!=null&&v.canvasSize?`${v.canvasSize.width}x${v.canvasSize.height}`:"unavailable"} rect=${v!=null&&v.testRect?`${v.testRect.x},${v.testRect.y},${v.testRect.width}x${v.testRect.height}`:"unavailable"} expected=rgba(255,0,0,255)/transparent workerActual=${JSON.stringify((v==null?void 0:v.pixelChecks)||[])} destinationActual=${JSON.stringify((v==null?void 0:v.destinationPixelChecks)||[])}`)}if(x)return this.control.applyRuntimeRenderingDecision(S.renderMode,S.contextType,"render-probe-passed",`render-probe-passed:${p}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="probe",this.Logger.info(`[Appliance]: [render-probe] stage=probe-success renderModel=${p}${C?" companion=passed":""}`),!0}}finally{i&&this.closeRenderProbeSession(i)}return this.Logger.warn("[Appliance]: [render-probe] stage=probe-failed renderModel=mainThread+canvas2d"),this.control.applyRuntimeRenderingDecision("main-thread","2d","worker-program-probe-failed","All worker render candidates failed"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.useMainThread(),!1}async on(e=!1){var a,c;const r=++this.initGeneration;if(!e&&(this.control.isUseBackgroundThread&&await this.useBackgroundThread(),r!==this.initGeneration))return!1;if(!this.control.hasOffscreenCanvas){await this.useMainThread(),this.control.logFinalRenderDecision();return}if(!this.fullWorkerUrl||!this.control.isUseSimple&&!this.subWorkerUrl)throw new Error("[Appliance]: no worker url config");if(((c=(a=this.control.pluginOptions)==null?void 0:a.extras)==null?void 0:c.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.control.isRenderRuntimeDecisionLocked()){const l=await this.probeAndLockRenderRuntime();if(r!==this.initGeneration)return!1;if(!l){this.control.logFinalRenderDecision();return}}else this.control.renderingCompatibilityDecision.renderRuntimeCacheState==="hit"&&this.Logger.info(`[Appliance]: [render-probe] stage=probe-skipped reason=cache-hit renderModel=${Ht(this.control.renderMode,this.control.renderingCompatibilityDecision.contextType)}`);const i=(l,u)=>()=>{r!==this.initGeneration||!u()||this.scheduleRenderRuntimeFallback({type:le.ReportError,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:`${l}-transport-error`,reportError:`${l} transport error`})};if(this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),!this.control.isUseSimple){this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"});const l=this.subWorker;l.onerror=i("subWorker",()=>this.subWorker===l),l.onmessageerror=i("subWorker-message",()=>this.subWorker===l)}const o=this.fullWorker;o.onerror=i("fullWorker",()=>this.fullWorker===o),o.onmessageerror=i("fullWorker-message",()=>this.fullWorker===o),this.fullWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"fullWorker"))return;const{render:u,sp:h,fullWorkerDrawCount:d,workerTasksqueueCount:f,cameraTaskId:g,cameraTaskStatus:y,cameraTaskError:T,cameraSettledTaskId:x,viewId:C,viewGeneration:L,consumeCount:S,consumeWorkId:p}=l.data;if(C&&ve.isNumber(g)){const P=S0(y,T,"fullWorker");P?this.failCameraTask(C,g,P,L):this.ackCameraTask(C,g,L)}C&&ve.isNumber(x)?this.ackCameraSettledTask(C,x,L):this.isBusy&&f&&this.setWorkerTasksqueueCount(f);const m=this.control.isUseOffscreenTransfer?[]:(h||[]).filter(({type:P})=>P===le.ServiceSyncCommit),M=m.length?(h||[]).filter(({type:P})=>P!==le.ServiceSyncCommit):h;M!=null&&M.length&&this.collectorSyncData(M);const v=this.filterCancelledEraseRenders(u);if(this.control.isUseSimple){if(this.control.isUseOffscreenTransfer){this.acceptConsumeAck(S,p);return}let P=!0;if(v.length)try{this.viewContainerManager.render(v)}catch(D){P=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${D instanceof Error?D.message:String(D)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:D instanceof Error?D.message:String(D)})}P&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(S,p);return}const R=v;if(d&&C){if(this.fullWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const P=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(P),this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.clearReRenders(1/0);if(this.reRenders.size)for(const P of this.reRenders.values())R.push(...P)}let b=!0;if(R.length)try{this.viewContainerManager.render(R)}catch(P){b=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${P instanceof Error?P.message:String(P)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:P instanceof Error?P.message:String(P)})}b&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(S,p)}},this.isRenderTransportReady=!0,this.control.lockRenderRuntimeDecision(),this.control.logFinalRenderDecision(),this.flushPendingTransportInitMessages(),this.subWorker&&(this.subWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"subWorker"))return;const{render:u,sp:h,subWorkerDrawCount:d,consumeCount:f,consumeWorkId:g}=l.data;h!=null&&h.length&&this.collectorSyncData(h);const y=this.filterCancelledEraseRenders(u),T=y;if(ve.isNumber(d)){if(this.subWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const x=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(x)}if(y.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const x=[];for(const C of y)C.imageBitmap&&(C.isUnClose=!0,x.push(C));this.reRenders.set(this.subWorkerDrawCount,x)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}if(T.length)try{this.viewContainerManager.render(T)}catch(x){this.Logger.error(`[Appliance]: SubWorker render apply failed; workId=${g||"unknown"}; error=${x instanceof Error?x.message:String(x)}`)}this.acceptConsumeAck(f,g)}})}async clearFontCache(){return await this.fontFaceManager.clearFontCache()}async getFontCacheStatus(){return await this.fontFaceManager.getFontCacheStatus()}getLastFontFacesAlreadyReady(){return this.fontFaceManager.getLastFontFacesAlreadyReady()}async loadFontFaces(){return await this.fontFaceManager.loadFontFaces()}createInternalRequestId(e){return`${e}_${this.now}_${Math.random().toString(36).slice(2)}`}waitRefreshTextRender(e){return new Promise(r=>{const n=setTimeout(()=>{this.refreshTextRenderResolveMap.delete(e),r(!1)},5e3);this.refreshTextRenderResolveMap.set(e,{timer:n,resolve:r})})}resolveRefreshTextRender(e,r=!0){var i;if(!e)return;const n=this.refreshTextRenderResolveMap.get(e);n&&(n.timer&&clearTimeout(n.timer),(i=n.resolve)==null||i.call(n,r),this.refreshTextRenderResolveMap.delete(e))}async refreshTextRenderForWorker(e){if(!e.length)return!0;const r=new Set,n=[];for(const o of e){if(!o.viewId||!this.isViewInitReady(o.viewId))continue;const a=this.createInternalRequestId("refresh_text_render");n.push(this.waitRefreshTextRender(a)),r.add({...o,requestId:a,msgType:le.UpdateNode,type:le.UpdateNode,dataType:Re.Service,toolsType:q.Text,refreshTextRender:!0,useAnimation:!1,willRefresh:!0})}return this.post(r),(await Promise.all(n)).every(Boolean)}buildPropertyAppliedData(e,r,n){switch(e){case Te.SetColorNode:return{strokeColor:r==null?void 0:r.strokeColor,fillColor:r==null?void 0:r.fillColor,fontColor:r==null?void 0:r.fontColor,fontBgColor:r==null?void 0:r.fontBgColor,thickness:r==null?void 0:r.thickness,strokeType:r==null?void 0:r.strokeType};case Te.SetFontStyle:return{fontSize:r==null?void 0:r.fontSize,bold:r==null?void 0:r.bold,italic:r==null?void 0:r.italic,underline:r==null?void 0:r.underline,lineThrough:r==null?void 0:r.lineThrough};case Te.SetLock:return{isLocked:n==null?void 0:n.isLocked};case Te.SetShapeOpt:return{vertices:r==null?void 0:r.vertices,innerVerticeStep:r==null?void 0:r.innerVerticeStep,innerRatio:r==null?void 0:r.innerRatio,placement:r==null?void 0:r.placement};case Te.ZIndexNode:return{zIndexLayer:n==null?void 0:n.zIndexLayer};default:return{}}}clearReRenders(e=1/0){for(const r of this.reRenders.keys())if(ve.isNumber(Number(r))&&Number(r)<=e){const n=this.reRenders.get(Number(r));n==null||n.forEach(i=>{try{this.retireRenderedImageBitmap(i)}catch(o){this.Logger.error(`[Appliance]: releasing deferred render bitmap failed; drawCount=${r}; error=${o instanceof Error?o.message:String(o)}`)}}),this.reRenders.delete(r)}}retireRenderedImageBitmap(e){var n;const r=(n=this.control)==null?void 0:n.viewContainerManager;r?r.retireRenderImageBitmap(e.viewId,e.imageBitmap):this.closeImageBitmap(e.imageBitmap)}getFullLayerBitmapEraseTxns(){return this.fullLayerBitmapEraseTxns||(this.fullLayerBitmapEraseTxns=new Map),this.fullLayerBitmapEraseTxns}getBitmapEraserRenderer(){return this.control.disableUseWorker?"main-thread":this.control.isUseSimple?"simple-worker":"full-worker"}logBitmapEraserTrace(e,r,n={}){try{const i=this.Logger,o=`[Appliance]: [bitmap-eraser] stage=${e} ${JSON.stringify({viewId:r.viewId,scenePath:r.scenePath,workId:r.workId,renderer:this.getBitmapEraserRenderer(),...n})}`;if(e==="point-limit-force-done"){i.info(o);return}i.infoDebounced?i.infoDebounced(`bitmap-eraser:${r.viewId}:${r.workId}`,o):i.info(o)}catch{}}finishFullLayerBitmapEraseTxn(e,r){var o,a,c,l;const n=this.getFullLayerBitmapEraseTxns().get(e);n!=null&&n.commitTimeoutId&&clearTimeout(n.commitTimeoutId),n&&(n.phase=r==="committed"?"committed":"aborted",this.logBitmapEraserTrace("terminal",n,{status:r,elapsedMs:Math.max(0,Date.now()-(n.startedAt??Date.now())),forceDoneReason:n.forceDoneReason,doingAckCount:n.doingAckCount||0,pointCount:n.inputPointCount||0,updatedTargets:((o=n.updatedTargetIds)==null?void 0:o.size)||0,deletedTargets:((a=n.deletedTargetIds)==null?void 0:a.size)||0})),this.getFullLayerBitmapEraseTxns().delete(e);const i=(c=this.fullLayerBitmapEraseTxnWaiters)==null?void 0:c.get(e);i==null||i.forEach(u=>u(r)),(l=this.fullLayerBitmapEraseTxnWaiters)==null||l.delete(e)}async waitForFullLayerBitmapEraseTxns(e,r){const n=[...r].filter(a=>this.getFullLayerBitmapEraseTxns().has(a));if(!n.length)return;if(this.fullLayerBitmapEraseTxnWaiters||(this.fullLayerBitmapEraseTxnWaiters=new Map),(await Promise.all(n.map(a=>new Promise(c=>{let l=this.fullLayerBitmapEraseTxnWaiters.get(a);l||(l=new Set,this.fullLayerBitmapEraseTxnWaiters.set(a,l)),l.add(c)})))).includes("aborted")){const a=this.viewRecoveryQueueByView.get(e);a&&await a.catch(()=>{})}}rememberCancelledEraseTxn(e){var o;this.cancelledEraseTxnOwners||(this.cancelledEraseTxnOwners=new Map),this.cancelledEraseTxnIds.delete(e),this.cancelledEraseTxnIds.add(e);const r=this.getFullLayerBitmapEraseTxns().get(e),n=this.localPointsBatchData.get(e),i=(r==null?void 0:r.viewId)||(n==null?void 0:n.viewId);for(this.cancelledEraseTxnOwners.set(e,{viewId:i,viewGeneration:i?(o=this.viewGenerationById)==null?void 0:o.get(i):void 0});this.cancelledEraseTxnOwners.size>Gl;){const a=this.cancelledEraseTxnOwners.keys().next().value;if(a===void 0)break;this.cancelledEraseTxnOwners.delete(a),this.cancelledEraseTxnIds.delete(a)}for(;this.cancelledEraseTxnIds.size>Gl;){const a=this.cancelledEraseTxnIds.values().next().value;if(a===void 0)break;this.cancelledEraseTxnIds.delete(a),this.cancelledEraseTxnOwners.delete(a)}}isCancelledEraseResult(e,r,n){var o;if(!e||!this.cancelledEraseTxnIds.has(e))return!1;const i=(o=this.cancelledEraseTxnOwners)==null?void 0:o.get(e);return i?!(i.viewId&&r&&i.viewId!==r):!0}rememberCancelledLocalWork(e,r){var n;for(this.cancelledLocalWorkOwners||(this.cancelledLocalWorkOwners=new Map),this.cancelledLocalWorkOwners.delete(e),this.cancelledLocalWorkOwners.set(e,{viewId:r,viewGeneration:(n=this.viewGenerationById)==null?void 0:n.get(r)});this.cancelledLocalWorkOwners.size>Gl;){const i=this.cancelledLocalWorkOwners.keys().next().value;if(i===void 0)break;this.cancelledLocalWorkOwners.delete(i)}}isCancelledLocalWorkResult(e){return e.dataType===Re.Service||e.workId===void 0?!1:this.isCancelledLocalWork(e.workId.toString(),e.viewId)}isCancelledLocalWork(e,r){var c,l,u,h;const n=e.toString(),o=typeof((c=this.collector)==null?void 0:c.isOwn)=="function"&&typeof((l=this.collector)==null?void 0:l.getLocalId)=="function"&&((u=this.collector)!=null&&u.isOwn(n))?this.collector.getLocalId(n):n,a=(h=this.cancelledLocalWorkOwners)==null?void 0:h.get(o);return a?!r||a.viewId===r:!1}filterCancelledEraseRenders(e){return e!=null&&e.length?e.filter(r=>{const n=this.viewGenerationById.get(r.viewId);if(r.viewGeneration!==void 0&&n!==void 0&&r.viewGeneration!==n)return this.closeImageBitmap(r.imageBitmap),!1;if(r.drawCanvas!==void 0&&[...r.renderWorkIds||[],...r.workId!==void 0?[r.workId.toString()]:[]].some(o=>this.isCancelledLocalWork(o,r.viewId)))return this.closeImageBitmap(r.imageBitmap),!1;const i=[...r.renderEraseTxnIds||[],...r.eraseTxnId!==void 0?[r.eraseTxnId]:[]].some(o=>this.isCancelledEraseResult(o,r.viewId,r.viewGeneration));if(i)try{this.closeImageBitmap(r.imageBitmap)}catch(o){this.logLocalWorkBarrierError(`[Appliance]: releasing cancelled erase bitmap failed; viewId=${r.viewId}; eraseTxnId=${r.eraseTxnId}; error=${o instanceof Error?o.message:String(o)}`)}return!i}):[]}reportRenderFrameError(e,r){this.Logger.error(`[Appliance]: [render-image-bitmap-frame] stage=rejected reason=${e} source=${r.source} layer=Bg viewId=${r.viewId} receivedGeneration=${r.receivedGeneration??"unknown"} currentGeneration=${r.currentGeneration??"unknown"} taskId=${r.taskId??"unknown"} sequence=${r.sequence??"unknown"} lastTaskId=${r.lastTaskId??"unknown"} lastSequence=${r.lastSequence??"unknown"} maxSequence=${r.maxSequence??"unknown"}`)}acceptFullLayerFrame(e,r,n){if(!e.isFullFrameImageBitmap||e.frameSequence===void 0)return!0;const i=e.viewGeneration??n;if(i===void 0)return!0;const o=this.fullLayerFrameStateByView.get(e.viewId),a=(o==null?void 0:o.generation)===i?o:{generation:i,maxSequence:0},c=a[r];if(c){if(e.frameSequence===c.sequence)return this.reportRenderFrameError("duplicate-sequence",{source:r,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1;if(e.frameSequence<c.sequence)return this.reportRenderFrameError("out-of-order-sequence",{source:r,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1}return this.fullLayerFrameStateByView.set(e.viewId,{...a,generation:i,maxSequence:Math.max(a.maxSequence,e.frameSequence),[r]:{sequence:e.frameSequence,taskId:e.taskId}}),!0}acceptWorkerBatch(e,r="fullWorker"){var a,c,l,u;const{viewId:n,viewGeneration:i,render:o}=e;if(n&&i!==void 0&&this.viewGenerationById.get(n)!==i){const h=o==null?void 0:o.find(d=>d.isFullFrameImageBitmap);return o!=null&&o.length&&this.reportRenderFrameError("stale-generation",{source:r,viewId:n,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(n),taskId:h==null?void 0:h.taskId,sequence:h==null?void 0:h.frameSequence,maxSequence:(c=(a=this.fullLayerFrameStateByView)==null?void 0:a.get(n))==null?void 0:c.maxSequence}),o==null||o.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale render bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),(l=e.sp)==null||l.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale message bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),!1}return(u=e.sp)!=null&&u.length&&i!==void 0&&(e.sp=e.sp.map(h=>{const d=h.viewId||n;return h.viewGeneration!==void 0||h.viewId&&h.viewId!==n?h:{...h,viewId:d,viewGeneration:i}})),o!=null&&o.length&&(e.render=o.filter(h=>{var y,T;const d=h.viewId||n,f=d?this.viewGenerationById.get(d):void 0,g=h.viewGeneration??i;return d&&f!==void 0&&g!==void 0&&g!==f?(this.reportRenderFrameError("stale-generation",{source:r,viewId:d,receivedGeneration:g,currentGeneration:f,taskId:h.taskId,sequence:h.frameSequence,maxSequence:(T=(y=this.fullLayerFrameStateByView)==null?void 0:y.get(d))==null?void 0:T.maxSequence}),this.closeImageBitmap(h.imageBitmap),!1):this.acceptFullLayerFrame(h,r,i)?!0:(this.closeImageBitmap(h.imageBitmap),!1)})),!0}scheduleViewRecovery(e,r){const n=this.viewGenerationById.get(e),o=(this.viewRecoveryQueueByView.get(e)||Promise.resolve()).catch(()=>{}).then(async()=>{if(this.viewGenerationById.get(e)!==n||!this.viewContainerManager.getView(e))return;const a=this.viewContainerManager.getCurScenePath(e);a&&(this.Logger.error(`[Appliance]: rebuilding view after bitmap eraser failure; viewId=${e}; reason=${r}`),await this.clearViewScenePath(e,!0),!(this.viewGenerationById.get(e)!==n||this.viewContainerManager.getCurScenePath(e)!==a)&&this.pullServiceData(e,a,{isAsync:!0,useAnimation:!1}))});return this.viewRecoveryQueueByView.set(e,o),o.then(()=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e))},a=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e)),this.logLocalWorkBarrierError(`[Appliance]: view recovery failed; viewId=${e}; error=${a instanceof Error?a.message:String(a)}`)}),o}get isBusy(){return this.cameraUpdateStateByView.size>0||this.pendingDprByView.size>0||this.viewRecoveryQueueByView.size>0}isViewBusy(e){var r;return((r=this.cameraUpdateStateByView.get(e))==null?void 0:r.isBusy)===!0||this.pendingDprByView.has(e)||this.viewRecoveryQueueByView.has(e)||this.control.isClearBusy(e)}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.isBusy&&de.Doing||de.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e,r){this.acceptConsumeAck(e,r)}getConsumeCount(){return this.consumeCount}getLocalInputPointCount(e,r){let n=0;for(const i of this.localPointsBatchData.values())i.viewId!==e||r&&i.toolsType!==r||(n=Math.max(n,Math.floor(i.rawPoints.length/2)));return n}setWorkerTasksqueueCount(e){ve.isNumber(e)}collectorSyncData(e){var c,l,u,h,d,f,g,y,T,x,C,L,S,p,m,M;const r=e.filter(v=>{if(this.isStaleViewStorageMessage(v))return v.imageBitmap&&this.closeImageBitmap(v.imageBitmap),!1;if(this.isCancelledLocalWorkResult(v))return this.closeImageBitmap(v.imageBitmap),!1;const R=this.isCancelledEraseResult(v.eraseTxnId,v.viewId,v.viewGeneration);return R&&this.closeImageBitmap(v.imageBitmap),!R}),n=new Set(r.filter(v=>v.eraseTxnId&&v.eraseTxnPhase==="applied").map(v=>v.eraseTxnId)),i=new Set(r.filter(v=>v.eraseTxnId&&v.eraseTxnPhase==="failed").map(v=>v.eraseTxnId)),o=new Map;for(const v of r){if(v.eraseTxnRecoveryRequired&&v.viewId&&o.set(v.viewId,"bitmap-eraser-done-restore-failed"),!v.eraseTxnId)continue;const R=this.getFullLayerBitmapEraseTxns().get(v.eraseTxnId);if(R&&(v.type===le.UpdateNode&&v.workId!==void 0&&v.workId.toString()!==v.eraseTxnId&&(R.updatedTargetIds||(R.updatedTargetIds=new Set)).add(v.workId.toString()),v.type===le.RemoveNode&&((c=v.removeIds)!=null&&c.length))){const b=R.deletedTargetIds||(R.deletedTargetIds=new Set);v.removeIds.forEach(P=>{const D=P.toString();D!==v.eraseTxnId&&b.add(D)})}}let a=!1;for(const v of r){if(this.fontFaceManager.handleWorkerMessage(v))continue;const{type:R,selectIds:b,opt:P,selectRect:D,strokeColor:z,fillColor:j,willSyncService:k,isSync:A,imageBitmap:N,canvasHeight:W,canvasWidth:Y,rect:Q,op:ie,canTextEdit:O,points:V,selectorColor:Z,canRotate:$,scaleType:ee,textOpt:se,toolsType:ce,workId:me,viewId:pe,dataType:B,canLock:F,isLocked:J,shapeOpt:oe,toolsTypes:K,thickness:te,strokeType:w,useStroke:I,isgl:U,imageSrc:G,isSubWorker:_,updateNodeOpt:re,emitEventType:ne,requestId:X,viewOwner:ae,reportString:ue,reportBusiness:he,reportErrorCode:ge,index:Me,imageElement:we,workState:be,isSelecting:Ie,needUndoTicker:Ce}=v;if(R===le.Init&&pe){this.ackMainViewInit(pe,v.viewGeneration,v.reportContextType);continue}if(R===le.ServiceSyncCommit&&pe){Promise.resolve().then(()=>this.ackServiceSyncCommit(v));continue}if(!pe)continue;const ke=v.scenePath||this.viewContainerManager.getCurScenePath(pe);switch(R){case le.RefreshTextRender:this.resolveRefreshTextRender(X,!0);break;case le.SelectorTransform:{if(ne&&be)try{(l=this.control.selectorApi)==null||l.onSelectorTransform({viewId:pe,emitEventType:ne,workState:be})}catch(Ee){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onSelectorTransform failed: ${Ee==null?void 0:Ee.message}`)}break}case le.Select:{const Ee=b!=null&&b.length?{...D,selectIds:b,canvasHeight:W,canvasWidth:Y,points:V}:void 0;if(Ee&&(P!=null&&P.strokeColor)&&(Ee.selectorColor=P.strokeColor),Ee&&Z&&(Ee.selectorColor=Z),Ee&&z&&(Ee.strokeColor=z),Ee&&(P!=null&&P.fillColor)&&(Ee.fillColor=P.fillColor),Ee&&j&&(Ee.fillColor=j),Ee&&ve.isBoolean($)&&(Ee.canRotate=$),Ee&&ee&&(Ee.scaleType=ee),Ee&&O&&(Ee.canTextEdit=O),Ee&&se&&(Ee.textOpt=se),Ee&&ve.isBoolean(F)&&(Ee.canLock=F),Ee&&ve.isBoolean(J)&&(Ee.isLocked=J),Ee&&oe&&(Ee.shapeOpt=oe),Ee&&K&&(Ee.toolsTypes=K),Ee&&te&&(Ee.thickness=te),Ee&&w&&(Ee.strokeType=w),Ee&&ve.isBoolean(I)&&(Ee.useStroke=I),pe&&this.viewContainerManager.showFloatBar(pe,!!Ee,Ee),k&&((d=this.collector)==null||d.dispatch({type:R,selectIds:b,opt:P,isSync:A,viewId:pe,scenePath:ke,needUndoTicker:Ce,requestId:X,emitEventType:ne})),Ie)break;try{(f=this.control.selectorApi)==null||f.onSelectorSync({viewId:pe,scenePath:ke,selectIds:b,selectRect:D,selectorInfo:Ee})}catch(Ae){(y=(g=this.Logger)==null?void 0:g.error)==null||y.call(g,`[Appliance]: [selector] onSelectorSync failed: ${Ae==null?void 0:Ae.message}`)}break}case le.Snapshot:if((N||we)&&ke){const Ee=this.getViewSceneRequestKey(pe,ke);if(!X||this.snapshotRequestIdByViewScene.get(Ee)!==X){this.closeImageBitmap(N);break}const Ae=this.snapshotMap.get(Ee);if(Ae&&Ae.requestId===X){const{resolve:Oe,value:ze}=Ae;if(ze&&Oe){const je=Me||0;ze[je]=N||we,ze.every(Je=>Je!==void 0)&&Oe(ze)}}else this.closeImageBitmap(N)}break;case le.BoundingBox:if(Q&&ke){const Ee=this.getViewSceneRequestKey(pe,ke);if(!X||this.boundingRectRequestIdByViewScene.get(Ee)!==X)break;const Ae=this.boundingRectMap.get(Ee);Ae&&Ae.requestId===X&&Ae.resolve(Q)}break;case le.Cursor:ie&&this.control.cursor.collectServiceCursor({...v});break;case le.Clear:if(pe){this.viewContainerManager.showFloatBar(pe,!1);const Ee=(T=this.clearAllResolveMap.get(pe))==null?void 0:T.resolve;Ee&&Ee(pe);try{(x=this.control.selectorApi)==null||x.onSelectorCleared({viewId:pe,scenePath:ke})}catch(Ae){(L=(C=this.Logger)==null?void 0:C.error)==null||L.call(C,`[Appliance]: [selector] onSelectorCleared failed: ${Ae==null?void 0:Ae.message}`)}}break;case le.BackgroundSVGDelete:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...v,msgType:le.BackgroundSVGDelete,viewId:pe,scenePath:ke,dataType:Re.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG delete failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.BackgroundSVGUpdate:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...v,msgType:le.BackgroundSVGUpdate,viewId:pe,scenePath:ke,dataType:Re.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG update failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.TextUpdate:if(ce===q.Text&&me&&pe){const Ee=ne===Te.TranslateNode;ne&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(ne)&&((S=this.control.selectorApi)==null||S.onPropertyApplied({type:ne,viewId:pe,scenePath:ke,requestId:X,data:this.buildPropertyAppliedData(ne,P,re)}));const Ae=this.viewContainerManager.transformToOriginPoint((P==null?void 0:P.boxPoint)||[0,0],pe),Oe=(P==null?void 0:P.boxSize)||[0,0],ze=(p=this.viewContainerManager.getView(pe))==null?void 0:p.cameraOpt;P?this.control.textEditorManager.updateTextForWorker({x:Ae[0],y:Ae[1],w:Oe[0],h:Oe[1],scale:(ze==null?void 0:ze.scale)||1,workId:me,opt:P,dataType:B,viewId:pe,canSync:k||!1,canWorker:!1,updateNodeOpt:re,skipStorageDispatch:!0}):this.control.textEditorManager.delete(me,k||!1,!1),!!(Ce||Ee&&k)&&((m=this.collector)==null||m.dispatch({type:le.UpdateNode,workId:me,toolsType:q.Text,opt:P,updateNodeOpt:re,isSync:k||!1,viewId:pe,scenePath:ke,needUndoTicker:Ce,requestId:X,emitEventType:ne}))}break;case le.GetTextActive:ce===q.Text&&me&&pe&&this.control.textEditorManager.updateTextForWorker({workId:me,isActive:!0,viewId:pe,dataType:Re.Local,canWorker:!1,canSync:!0},this.now);break;case le.GetImageBitMap:if(G&&pe&&me){const Ee=this.initGeneration,Ae=this.viewGenerationById.get(pe),Oe=this.control.hasOffscreenCanvas;zye({src:G,isgl:U,useImageBitmap:Oe}).then(ze=>{var nt;const je=Oe?ze:void 0,Je=Oe?void 0:ze;if(!(Ee===this.initGeneration&&this.viewGenerationById.get(pe)===Ae&&!!this.viewContainerManager.getView(pe))){this.closeImageBitmap(je);return}const et=new Set;et.add({msgType:le.GetImageBitMap,dataType:Re.Local,workId:me,viewId:pe,viewGeneration:Ae,viewOwner:ae,imageSrc:G,requestId:X,isSubWorker:_,imageBitmap:je,imageElement:Je});try{if(Oe){const Qe=_&&this.subWorker?this.subWorker:this.fullWorker;if(!Qe||typeof Qe.postMessage!="function"){this.closeImageBitmap(je);return}je?Qe.postMessage(et,[je]):Qe.postMessage(et)}else{const Qe=(nt=this.mainThread)==null?void 0:nt.consume(et);Qe==null||Qe.catch(st=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${st instanceof Error?st.message:String(st)}`)})}}catch(Qe){this.closeImageBitmap(je),this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${Qe instanceof Error?Qe.message:String(Qe)}`)}}).catch(ze=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap load failed; viewId=${pe}; workId=${me}; src=${G}; error=${ze instanceof Error?ze.message:String(ze)}`)})}break;case le.GetVNodeInfo:if(me){const Ee=me.toString(),Ae=(M=this.getVNodeInfoResolveMap.get(Ee))==null?void 0:M.resolve,Oe={...v,uuid:Ee};Ae&&Ae(Oe)}break;case le.ReportError:case le.ReportLog:R===le.ReportError&&ge&&this.scheduleRenderRuntimeFallback(v),R===le.ReportError&&he&&ke&&X&&(he==="snapshot"?this.settleSnapshotFailure(pe,ke,X):this.settleBoundingRectFailure(pe,ke,X)),ue&&(R===le.ReportError?this.Logger.error(`[Appliance]: [MasterControlForWorker] reportError ${ue}`):this.Logger.info(`[Appliance]: [MasterControlForWorker] reportLog ${ue}`));break;default:a=!0;break}}a&&this.collectorAsyncData(r),n.forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"committed")}),i.forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"aborted")}),o.forEach((v,R)=>{this.scheduleViewRecovery(R,v)})}collectorAsyncData(e){var r,n,i,o,a,c,l,u,h,d;for(const f of e){if(this.isStaleViewStorageMessage(f)){f.imageBitmap&&this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledLocalWorkResult(f)){this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledEraseResult(f.eraseTxnId,f.viewId,f.viewGeneration)){this.closeImageBitmap(f.imageBitmap);continue}const{type:g,op:y,workId:T,index:x,removeIds:C,ops:L,opt:S,updateNodeOpt:p,emitEventType:m,requestId:M,toolsType:v,isSync:R,viewId:b,isLockSentEventCursor:P,nextTasks:D,needUndoTicker:z,collectUndoTicker:j,undoScopeIds:k,undoScopePhase:A}=f;if(!b){console.error("[MasterControlForWorker] collectorAsyncData on viewId in",f);return}const N=f.scenePath||this.viewContainerManager.getCurScenePath(b),W=Number(j??z??void 0);if(W&&(k!=null&&k.length)&&(A==="collect"||A==="finalize")&&this.internalMsgEmitter.emit("collectExpectedWorkIds",W,b,k,N),A==="finalize"&&z&&Number(z)&&N){const Y=Number(z);Array.isArray(k)&&k.length===0?this.internalMsgEmitter.emit("cancelUndoTicker",Y,b,N):this.internalMsgEmitter.emit("finalizeRequested",Y,b,k||[],N)}switch(z&&Number(z)&&$p(g)&&(k!=null&&k.length)&&this.internalMsgEmitter.emit("reopenStorageAck",Number(z),b,k,N),g){case le.None:{const Y=this.initGeneration,Q=(r=this.viewGenerationById)==null?void 0:r.get(b),ie=()=>{var O;return this.isActive&&this.initGeneration===Y&&((O=this.viewGenerationById)==null?void 0:O.get(b))===Q};P&&Pr(()=>{ie()&&this.setLockSentEventCursor(!1)},this.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback")),z&&Number(z)&&Pr(()=>{ie()&&this.internalMsgEmitter.emit("ackRenderUndoTicker",Number(z),b,N,{requestId:M,emitEventType:m})},0,this.control.hasPolyfillMethod("requestIdleCallback"));break}case le.DrawWork:{(n=this.collector)==null||n.dispatch({type:g,op:y,opt:S,toolsType:v,workId:T,index:x,isSync:R,viewId:b,scenePath:N,updateNodeOpt:p,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m});break}case le.FullWork:{if((i=this.collector)==null||i.dispatch({type:g,ops:L,workId:T,updateNodeOpt:p,opt:S,toolsType:v,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m}),v===q.BackgroundSVG&&T&&this.markmapIdResolveMap.has(T.toString())){const Q=this.markmapIdResolveMap.get(T.toString());Q!=null&&Q.timer&&(clearTimeout(Q.timer),Q.timer=void 0),Q!=null&&Q.resolve&&Q.resolve(T.toString()),this.markmapIdResolveMap.delete(T.toString())}const Y=b?(o=this.willSelectorWorkIdByView)==null?void 0:o.get(b):void 0;Y&&T&&T.toString()===Y&&this.control.runEffectWork(()=>{var Q;this.setShapeSelectorByWorkId(Y,b),(Q=this.willSelectorWorkIdByView)==null||Q.delete(b)});break}case le.UpdateNode:{m&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(m)&&((a=this.control.selectorApi)==null||a.onPropertyApplied({type:m,viewId:b,scenePath:N,requestId:M,data:this.buildPropertyAppliedData(m,S,p)})),(c=this.collector)==null||c.dispatch({type:g,updateNodeOpt:p,workId:T,opt:S,ops:L,op:y,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m});break}case le.RemoveNode:{if(m===Te.DeleteNode&&((l=this.control.selectorApi)==null||l.onRemoveNodeApplied({viewId:b,requestId:M,removeIds:C})),C&&this.control.textEditorManager.deleteBatch(C,!1,!1),(u=this.collector)==null||u.dispatch({type:g,removeIds:C,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m}),b){const Y=(h=this.willSelectorWorkIdByView)==null?void 0:h.get(b);Y&&(C!=null&&C.includes(Y))&&((d=this.willSelectorWorkIdByView)==null||d.delete(b))}break}}D&&this.collectorAsyncData(D)}}isStaleViewStorageMessage(e){var n;if(!e.viewId)return!1;const r=(n=this.viewGenerationById)==null?void 0:n.get(e.viewId);return r===void 0?!1:e.viewGeneration!==void 0?e.viewGeneration!==r:$p(e.type)}async onLocalEventEnd(e,r,n=this.initGeneration,i=(o=>(o=this.localInputEpochByView)==null?void 0:o.get(r))()||0){var y,T,x,C,L;const a=this.viewContainerManager.getView(r),c=this.viewGenerationById.get(r);if(!a||!this.isActive||this.initGeneration!==n||(((y=this.localInputEpochByView)==null?void 0:y.get(r))||0)!==i||this.viewGenerationById.get(r)!==c)return;const{focusScenePath:l,cameraOpt:u}=a,h=this.viewContainerManager.transformToScenePoint(e,r),d=[],f=[],g=new Map;for(const[S,p]of this.localPointsBatchData){if(p.viewId!==r)continue;if(p.toolsType===q.Text){const M=p.state;if(M&&M===de.Start){const v=p.opt;v.workState=de.Doing,v.boxPoint=[Math.round(h[0]),Math.round(h[1])],v.boxSize=[v.fontSize,v.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:this.newWorkId,x:e[0],y:e[1],scale:(u==null?void 0:u.scale)||1,opt:v,type:Tr.Text,isActive:!0,viewId:r,scenePath:l},this.now)}this.deleteLocalPoint(S);continue}else{const M=this.getFullLayerBitmapEraseTxns().get(S.toString());if(M&&M.phase!=="doing")continue;const v=this.getLocalPointInfo(S);M&&Math.floor(((v==null?void 0:v.rawPoints.length)||0)/2)>=this.getFullLayerBitmapEraserMaxInputPoints(v)||this.pushLocalPoint(S,h,de.Done,r),(M==null?void 0:M.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(M);const b=this.getLocalPointInfo(S);if(b){const P=this.createAutoShapeTask({workId:S,viewId:r,scenePath:l,points:[...b.rawPoints],opt:b.opt});P&&f.push(P),Ai(b.toolsType)&&b.toolsType!==q.BitMapEraser&&b.undoTickerId&&l?g.set(b.undoTickerId,{scenePath:l,workIds:[]}):Yl.has(b.toolsType)&&b.undoTickerId&&l&&g.set(b.undoTickerId,{scenePath:l,workIds:[S.toString()]})}d.push(S)}}if(d.length){let S;g.forEach(({scenePath:m,workIds:M},v)=>{this.internalMsgEmitter.emit("finalizeRequested",v,r,M,m)});try{this.localDoneWaitByView||(this.localDoneWaitByView=new Map),this.delayWorkStateToDoneResolveByView||(this.delayWorkStateToDoneResolveByView=new Map),S=`${r}:done:${++this.localDoneWaitSequence}`,this.localDoneWaitByView.set(r,{token:S,workIds:d.map(String),viewId:r,startedAt:Date.now()});const m=((C=(x=(T=this.control.pluginOptions)==null?void 0:T.extras)==null?void 0:x.undoRedo)==null?void 0:C.ackTimeout)||Pu,M=Mp(m);if(await new Promise(R=>{let b=!1,P,D;const z=()=>{if(D===void 0)return;const A=this.localDoneDispatchTimersByView.get(r);A==null||A.delete(D),A&&A.size===0&&this.localDoneDispatchTimersByView.delete(r),D=void 0},j=A=>{var N;b||(b=!0,P!==void 0&&clearTimeout(P),D!==void 0&&(clearTimeout(D),z()),((N=this.delayWorkStateToDoneResolveByView)==null?void 0:N.get(r))===j&&this.delayWorkStateToDoneResolveByView.delete(r),R(A))};P=setTimeout(()=>{this.logLocalWorkBarrierError(`[Appliance]: local Done business wait failed; viewId=${r}; workIds=${d.join(",")}; timeoutMs=${M}`);try{this.timeoutLocalWorks(r,l||"","local-done-timeout",new Set(d.map(String)))}catch(A){this.logLocalWorkBarrierError(`[Appliance]: local Done timeout cleanup failed; viewId=${r}; error=${A instanceof Error?A.message:String(A)}`)}j(!1)},M),D=setTimeout(async()=>{var W;if(z(),b||!this.isActive||this.initGeneration!==n||(((W=this.localInputEpochByView)==null?void 0:W.get(r))||0)!==i||this.viewGenerationById.get(r)!==c||!this.viewContainerManager.getView(r)){j(!1);return}const A=new Set(f.map(Y=>{var Q;return(Q=Y.workId)==null?void 0:Q.toString()}).filter(Boolean));if(d.forEach(Y=>{if(A.has(Y.toString())){this.deleteLocalPoint(Y);return}this.setLocalPointIsFullWork(Y)}),f.forEach(Y=>{Y.needUndoTicker&&l&&Y.workId!==void 0&&Y.workId!==null&&this.internalMsgEmitter.emit("finalizeRequested",Number(Y.needUndoTicker),r,[Y.workId.toString()],l),this.taskBatchData.add(Y)}),this.delayWorkStateToDoneResolveByView.set(r,j),!d.some(Y=>this.localPointsBatchData.has(Y))){j(!1);return}f.length&&A.size===d.length&&j(!0),this.consume()},0);let k=this.localDoneDispatchTimersByView.get(r);k||(k=new Set,this.localDoneDispatchTimersByView.set(r,k)),D!==void 0&&k.add(D)})&&d[0]){const R=d[0];d.forEach(b=>{this.deleteLocalPoint(b)}),this.willSelectorWorkIdByView||(this.willSelectorWorkIdByView=new Map),this.willSelectorWorkIdByView.set(r,R.toString())}}catch(m){this.Logger.error(`[Appliance]: [MasterControlForWorker] onLocalEventEnd error: ${m instanceof Error?m.message:String(m)}`)}const p=this.getDoneWaitForView(r);S!==void 0&&(p==null?void 0:p.token)===S&&p.workIds.every(m=>d.some(M=>M.toString()===m))&&this.clearDoneWaitForView(r,S),S!==void 0&&((L=this.getDoneWaitForView(r))==null?void 0:L.token)===S&&this.clearDoneWaitForView(r,S),d.length=0}}onLocalEventDoing(e,r){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===q.Text||this.forceDoneFullLayerBitmapEraseAtPointLimit(r))return;this.currentLocalWorkData.workState===de.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:de.Doing});let n=!1;for(const[o,{state:a}]of this.localPointsBatchData.entries()){const c=this.localPointsBatchData.get(o);if(!c||c.viewId!==r)continue;const l=this.getFullLayerBitmapEraseTxns().get(o.toString());if(!(l&&l.phase!=="doing")&&this.isAbled()&&a!==de.Pending){const u=this.viewContainerManager.transformToScenePoint(e,r);this.pushLocalPoint(o,u,a===de.Start?de.Doing:a,r),n=!0}}if(n){this.runAnimation();return}}onLocalEventStart(e,r){var l,u;this.viewContainerManager.focuedViewId!==r&&this.viewContainerManager.setFocuedViewId(r),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=(l=this.currentToolsData)==null?void 0:l.toolsType,i=n===q.Selector?Ne:this.newWorkId,o=this.setZIndex(r);let a;if(n!==void 0&&n!==q.Text&&n!==q.Selector&&this.isCanRecordUndoRedo){a=this.now;const h=Ai(n)?{render:!0,storage:!0,scopeMode:"dynamic",source:Vp(n)}:{render:!0,storage:!0,source:Vp(n)};this.internalMsgEmitter.emit("addUndoTicker",a,r,h)}this.setCurrentLocalWorkData({workState:de.Start,toolsOpt:o,viewId:r,undoTickerId:a});const c=this.viewContainerManager.transformToScenePoint(e,r);if(this.pushLocalPoint(i,c,de.Start,r,o),n===q.BitMapEraser){const h={workId:i.toString(),viewId:r,scenePath:this.viewContainerManager.getCurScenePath(r),undoTickerId:a,phase:"doing",startedAt:Date.now(),doingAckCount:0,updatedTargetIds:new Set,deletedTargetIds:new Set};this.getFullLayerBitmapEraseTxns().set(i.toString(),h),this.logBitmapEraserTrace("start",h,{maxInputPoints:this.getFullLayerBitmapEraserMaxInputPoints(this.getLocalPointInfo(i)),fullLayerDoingMask:!0})}if(n!==q.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),i&&o&&n&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:i,toolsOpt:o,viewId:r},n),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(r);h&&((u=this.collector)!=null&&u.hasSelector(r,h))&&this.blurSelector(r,h)}this.consume()}}setLocalPointIsFullWork(e){const r=this.getLocalPointInfo(e);r&&(r.isFullWork=!0,this.localPointsBatchData.set(e,r))}getFullLayerBitmapEraserMaxInputPoints(e){var r;return Rc(((r=e==null?void 0:e.opt)==null?void 0:r.fullLayerDoingMaskMaxInputPoints)??this.control.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints)}forceDoneFullLayerBitmapEraseAtPointLimit(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==q.BitMapEraser)return!1;let r=!1;for(const[i,o]of this.localPointsBatchData.entries()){if(o.viewId!==e||o.toolsType!==q.BitMapEraser||o.state!==de.Start&&o.state!==de.Doing)continue;const a=this.getFullLayerBitmapEraseTxns().get(i.toString()),c=this.getFullLayerBitmapEraserMaxInputPoints(o);!a||a.phase!=="doing"||Math.floor(o.rawPoints.length/2)<c||(o.state=de.Done,o.isFullWork=!0,a.forceDoneReason??(a.forceDoneReason="point-limit"),this.logBitmapEraserTrace("point-limit-force-done",a,{pointCount:Math.floor(o.rawPoints.length/2),maxInputPoints:c}),this.markFullLayerBitmapEraseDoneStaging(a),this.localPointsBatchData.set(i,o),r=!0)}return r&&this.consume(),r}pushLocalPoint(e,r,n,i,o){var c;let a=this.getLocalPointInfo(e);if(n===de.Start)a={state:de.Start,points:[...r],rawPoints:[...r],toolsType:(c=this.currentToolsData)==null?void 0:c.toolsType,opt:o||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:i,undoTickerId:this.currentLocalWorkData.undoTickerId,scenePath:this.viewContainerManager.getCurScenePath(i)};else if(a){a.state=n;const l=a.rawPoints.length-2;n===de.Done&&l>=0&&a.rawPoints[l]===r[0]&&a.rawPoints[l+1]===r[1]||(a.points.push(r[0],r[1]),a.rawPoints.push(r[0],r[1]))}a&&this.localPointsBatchData.set(e,a)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}getLocalInputDebugState(){var c,l,u,h;const e=Date.now(),r=[...this.localPointsBatchData.entries()].map(([d,f])=>({workId:d,state:f.state,toolsType:f.toolsType,undoTickerId:f.undoTickerId,isFullWork:f.isFullWork,pointCount:Math.floor(f.points.length/2),rawPointCount:Math.floor(f.rawPoints.length/2),viewId:f.viewId})),n=[],i=this.viewContainerManager.getAllViews().flatMap(d=>{if(!d)return[];const f=d.focusScenePath;return f?d.displayer.commiter.getPendingTickerSnapshots(f):[]});this.control.isToolChangePending&&n.push("tool-change-pending"),this.queuedLocalEventCount>0&&n.push("local-event-queue-pending");const o=[...((c=this.localDoneWaitByView)==null?void 0:c.values())||[],...(l=this.localDoneWaitByView)!=null&&l.size?[]:this.localDoneWait?[this.localDoneWait]:[]];o.length&&(n.push("local-done-waiting"),r.length?r.every(d=>d.state===de.Done&&!d.pointCount)&&n.push("done-work-has-no-points"):n.push("done-waiting-without-local-work")),this.isLocalWorkActive&&this.currentLocalWorkData.workState===de.Pending&&n.push("active-work-with-pending-state"),i.some(d=>d.phase==="failed")&&n.push("undo-ticker-failed");const a=this.viewContainerManager.getAllViews().filter(d=>d&&this.control.isClearBusy(d.id)).map(d=>d.id);return a.length&&n.push("clear-operation-pending"),{timestamp:e,suspectedBlockers:n,toolChangePending:this.control.isToolChangePending,isAbled:this.isAbled(),isWritable:this.control.renderControl.isWritable,currentTool:(u=this.currentToolsData)==null?void 0:u.toolsType,currentLocalWorkData:{...this.currentLocalWorkData},isLocalWorkActive:this.isLocalWorkActive,localWorkViewId:this.getLocalWorkViewId(),queuedLocalEventCount:this.queuedLocalEventCount,activeLocalEvent:this.activeLocalEvent?{...this.activeLocalEvent,waitingMs:e-this.activeLocalEvent.startedAt}:void 0,localDoneWait:o[0]?{...o[0],waitingMs:e-(o[0].startedAt||e)}:void 0,localDoneWaits:o.map(d=>({...d,waitingMs:e-(d.startedAt||e)})),hasDoneResolver:(((h=this.delayWorkStateToDoneResolveByView)==null?void 0:h.size)||0)>0||!!this.delayWorkStateToDoneResolve,localPoints:r,taskBatchSize:this.taskBatchData.size,tasksqueueSize:this.tasksqueue.size,animationScheduled:this.animationId!==void 0,cameraStates:[...this.cameraUpdateStateByView.entries()].map(([d,f])=>{var g,y,T,x;return{viewId:d,isBusy:f.isBusy,hasPending:!!f.pendingCamera,hasPrepare:!!f.preparePromise,isRecovering:f.isRecovering===!0,recoveryFromGeneration:f.recoveryFromGeneration,recoveryOwner:f.recoveryOwner,hasReplayCamera:!!f.replayCamera,currentTaskId:f.currentTaskId,transactionTaskId:(g=f.transaction)==null?void 0:g.taskId,transactionGeneration:(y=f.transaction)==null?void 0:y.viewGeneration,coreAckReceived:(T=f.transaction)==null?void 0:T.coreAckReceived,settledAckReceived:(x=f.transaction)==null?void 0:x.settledAckReceived}}),operationBarrierViews:[...this.operationBarrierQueueByView.keys()],clearBusyViews:a,pendingTickers:i}}shouldUseAutoShape(e){var r;return((r=this.currentToolsData)==null?void 0:r.toolsType)===q.Pencil&&!!(e!=null&&e.autoShape)}toAutoShapePoints(e){const r=[];for(let n=0;n<e.length-1;n+=2)r.push([e[n],e[n+1]]);return r}emitAutoShapeResult(e){const{viewId:r,workId:n,scenePath:i,result:o,recognized:a,mappedToolsType:c}=e,l=o.candidates[0],u={workId:n.toString(),viewId:r,scenePath:i,recognized:a,fallbackToPencil:!a,kind:o.kind,score:o.score,threshold:o.threshold,templateId:o.templateId,mappedToolsType:c,topCandidate:l?{kind:l.kind,score:l.score,threshold:l.threshold,templateId:l.templateId}:void 0,metrics:{cornerCount:o.metrics.cornerCount,straightness:o.metrics.straightness,closureRatio:o.metrics.closureRatio,radialVariance:o.metrics.radialVariance,bboxCornerCloseness:o.metrics.bboxCornerCloseness,diamondCloseness:o.metrics.diamondCloseness}};this.publicMsgEmitter.emit("autoShape",u)}createAutoShapeTask(e){const{workId:r,viewId:n,scenePath:i,points:o,opt:a}=e;if(!this.shouldUseAutoShape(a))return;const c=pwe({rawPoints:this.toAutoShapePoints(o),pencilOptions:ve.cloneDeep(a),viewId:n,scenePath:i});if(!c)return;const l=mwe(c),u=Bp(l,c)||this.mapAutoShapeFallback(l,c);if(this.emitAutoShapeResult({viewId:n,workId:r,scenePath:i,result:l,recognized:!!u,mappedToolsType:u==null?void 0:u.toolsType}),!!u)return{msgType:le.FullWork,dataType:Re.Local,workId:r,viewId:n,scenePath:i,toolsType:u.toolsType,opt:u.opt,ops:WMe(u),willRefresh:!0,willSyncService:!0,isRunSubWork:!0,clearPreviewLocalWork:!0,isLockSentEventCursor:!0,autoShapeResult:l,needUndoTicker:this.viewContainerManager.getUndoTickerId(n)}}mapAutoShapeFallback(e,r){const{metrics:n}=e;if(e.recognized||n.closureRatio>.1)return null;let i;return n.cornerCount>=4&&n.cornerCount<=6&&n.bboxCornerCloseness<=.15&&n.diamondCloseness>n.bboxCornerCloseness+.15?i="rectangle":n.cornerCount===3&&n.radialVariance<.28?i="triangle":n.cornerCount>=8&&n.cornerCount<=12&&n.radialVariance>.28?i="star":n.cornerCount>=5&&n.radialVariance<.22&&n.bboxCornerCloseness>.2&&(i="ellipse"),i?Bp({...e,kind:i,recognized:!0},r):null}correctStorage(e,r,n){var h,d;const i=new Map,o=[],a=new Map,c=[];Object.keys(e).forEach(f=>{var T,x,C;const g=(x=(T=e[f])==null?void 0:T.opt)==null?void 0:x.zIndex,y=(C=e[f])==null?void 0:C.toolsType;ve.isNumber(g)&&(y&&y===q.BackgroundSVG?c.push([f,g]):o.push([f,g]))});const l=o.length&&((h=this.zIndexNodeMethod)==null?void 0:h.correct(o))||[],u=c.length&&((d=this.zIndexNodeMethod)==null?void 0:d.correct(c))||[];this.zIndexNodeMethod&&l.length&&(this.zIndexNodeMethod.setMinZIndex(l[0][1]||0,r),this.zIndexNodeMethod.setMaxZIndex(l[l.length-1][1]||0,r)),this.zIndexNodeMethod&&u.length&&(this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(u[0][1]||0,r),this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(u[u.length-1][1]||0,r));for(const[f,g]of l){if(!e[f])continue;const y=e[f];y.opt&&ve.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,i.set(f,y))}i.size&&i.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:r,scenePath:n,isSync:!0}),e[g]=f});for(const[f,g]of u){if(!e[f])continue;const y=e[f];y.opt&&ve.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,a.set(f,y))}return a.size&&a.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:r,scenePath:n,isSync:!0}),e[g]=f}),e}originalEventLintener(e,r,n){var f,g;const i=((f=this.localInputTransactionEpochByView)==null?void 0:f.has(n))===!0;if(e===de.Start){if(!this.control.canAcceptLocalMutation(n))return Promise.resolve()}else if(e===de.Doing&&!this.control.canAcceptLocalMutation(n)||(e===de.Doing||e===de.Done)&&!i)return Promise.resolve();const o=++this.localEventSequence,a=this.initGeneration,c=this.viewGenerationById.get(n),l=((g=this.localInputEpochByView)==null?void 0:g.get(n))||0;this.localInputTransactionEpochByView||(this.localInputTransactionEpochByView=new Map),e===de.Start&&this.localInputTransactionEpochByView.set(n,l);const u=this.localInputTransactionEpochByView.get(n)??l;this.queuedLocalEventCount++;const h=this.localEventQueue.then(async()=>{var y,T,x;this.activeLocalEvent={sequence:o,state:e,viewId:n,startedAt:Date.now()};try{if(this.initGeneration!==a||!this.isActive||(((y=this.localInputEpochByView)==null?void 0:y.get(n))||0)!==u||this.viewGenerationById.get(n)!==c||!this.viewContainerManager.getView(n))return;await this.consumeOriginalEvent(e,r,n,o,a,u)}finally{this.queuedLocalEventCount=Math.max(0,this.queuedLocalEventCount-1),((T=this.activeLocalEvent)==null?void 0:T.sequence)===o&&(this.activeLocalEvent=void 0),e===de.Done&&((x=this.localInputTransactionEpochByView)==null?void 0:x.get(n))===u&&this.localInputTransactionEpochByView.delete(n)}}),d=h.catch(()=>{});return this.localEventQueue=d,this.localEventQueueByView.set(n,d),d.then(()=>{this.localEventQueueByView.get(n)===d&&this.localEventQueueByView.delete(n)}),h}async waitForLocalEventQueue(e){await(e&&this.localEventQueueByView?this.localEventQueueByView.get(e)||Promise.resolve():this.localEventQueue)}async finishActiveContinuousMethods(e,r){var l,u,h;const n=this.viewContainerManager.getUndoTickerId(e),i=await((l=this.methodBuilder)==null?void 0:l.finishActiveContinuousMethods(e,r))||[],o=new Set(i);n!==void 0&&o.add(n);const a=this.viewContainerManager.getUndoTickerId(e);if(a!==void 0&&o.add(a),!o.size)return;const c=(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null?void 0:h.commiter;c&&await Promise.all([...o].map(d=>c.waitForTickerEnd(d,Math.max(this.maxLastSyncTime*4,1e3))))}async forceDoneLocalWorks(e,r,n){var h;this.operationBarrierQueueByView||(this.operationBarrierQueueByView=new Map);const i=this.operationBarrierQueueByView.get(e)||Promise.resolve(),o=((h=this.operationBarrierEpochByView)==null?void 0:h.get(e))||0,a=this.viewContainerManager.getView(e),c=this.viewGenerationById.get(e),l=i.then(()=>this.executeTransactionBarrier(e,r,n,o)).then(()=>{var f;return(((f=this.operationBarrierEpochByView)==null?void 0:f.get(e))||0)===o&&this.viewGenerationById.get(e)===c&&this.viewContainerManager.getView(e)===a?{status:"success",viewId:e,scenePath:r,reason:n}:{status:"failed",viewId:e,scenePath:r,reason:n,failureReason:"lifecycle-invalidated"}}).catch(d=>{const f=Kr(d);let g="";try{this.timeoutLocalWorks(e,r,`${n}-barrier-failed`,void 0,d)}catch(y){g=Kr(y),this.logLocalWorkBarrierError(`[Appliance]: force-Done failure cleanup failed; viewId=${e}; scenePath=${r}; reason=${n}; error=${g}`)}return{status:"failed",viewId:e,scenePath:r,reason:n,failureReason:g?`${f}; cleanup=${g}`:f}}),u=l.then(()=>{},()=>{});this.operationBarrierQueueByView.set(e,u);try{return await l}finally{this.operationBarrierQueueByView.get(e)===u&&this.operationBarrierQueueByView.delete(e)}}invalidateTransactionBarrier(e){var r,n,i;this.operationBarrierEpochByView||(this.operationBarrierEpochByView=new Map),this.operationBarrierEpochByView.set(e,(this.operationBarrierEpochByView.get(e)||0)+1),(n=(r=this.operationBarrierInvalidationWaitersByView)==null?void 0:r.get(e))==null||n.forEach(o=>o()),(i=this.operationBarrierInvalidationWaitersByView)==null||i.delete(e)}async waitForCurrentTransactionBarrier(e,r,n){if(!r())return!1;this.operationBarrierInvalidationWaitersByView||(this.operationBarrierInvalidationWaitersByView=new Map);let i;const o=new Promise(c=>{i=c});let a=this.operationBarrierInvalidationWaitersByView.get(e);a||(a=new Set,this.operationBarrierInvalidationWaitersByView.set(e,a)),a.add(i);try{return await Promise.race([n,o]),r()}finally{a.delete(i),a.size||this.operationBarrierInvalidationWaitersByView.delete(e)}}async executeTransactionBarrier(e,r,n="camera-update",i=(o=>(o=this.operationBarrierEpochByView)==null?void 0:o.get(e))()||0){var b,P,D,z,j,k;const a=this.viewContainerManager.getView(e),c=this.viewGenerationById.get(e),l=()=>{var A;return this.viewGenerationById.get(e)===c&&(((A=this.operationBarrierEpochByView)==null?void 0:A.get(e))||0)===i&&this.viewContainerManager.getView(e)===a};if(!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e)))return;const u=(b=a==null?void 0:a.displayer)==null?void 0:b.commiter,h=[...this.getFullLayerBitmapEraseTxns().values()].filter(A=>A.viewId===e&&(!A.scenePath||A.scenePath===r)&&A.phase!=="aborting"&&A.phase!=="aborted"),d=new Set(h.map(A=>A.workId));h.forEach(A=>{A.phase==="doing"&&(A.forceDoneReason??(A.forceDoneReason=n),this.logBitmapEraserTrace("force-done",A,{reason:n}))});const f=n==="set-readonly"||n==="disconnect"||n==="destroy"||n==="view-destroy",g=n==="set-readonly"||n==="disconnect",y=f||n==="scene-change",T=()=>((u==null?void 0:u.getPendingTickerSnapshots(r))||[]).filter(A=>A.source===$e.Text?y:f||Cs(A.source).kind!=="wait-owner");let x=T();const C=((z=(D=(P=this.control.pluginOptions)==null?void 0:P.extras)==null?void 0:D.undoRedo)==null?void 0:z.ackTimeout)||Pu,L=tye(C),S=Mp(C),p=[...this.localPointsBatchData.values()].some(A=>A.viewId===e&&(!A.scenePath||A.scenePath===r)&&A.toolsType!==q.Text&&(A.state===de.Start||A.state===de.Doing));let m=!1;for(const A of x){if(A.finalizeRequested||A.phase!=="doing")continue;const N=Cs(A.source);if(N.kind==="stop-event"){if(!m&&(a!=null&&a.displayer)&&(m=!0,!await this.waitForCurrentTransactionBarrier(e,l,a.displayer.stopEventHandler())))return;continue}if(N.kind==="method-pause"&&!await this.waitForCurrentTransactionBarrier(e,l,Promise.resolve((k=(j=this.methodBuilder)==null?void 0:j.getBuilder(N.emitEventType))==null?void 0:k.pause(e,r))))return}if(p&&!m&&(a!=null&&a.displayer)&&(m=!0,!await this.waitForCurrentTransactionBarrier(e,l,a.displayer.stopEventHandler()))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e))||[...this.localPointsBatchData.values()].some(A=>A.viewId===e&&(!A.scenePath||A.scenePath===r)&&A.toolsType!==q.Text&&(A.state===de.Start||A.state===de.Doing))&&(!await this.waitForCurrentTransactionBarrier(e,l,this.checkDrawingWork(e))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e)))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForFullLayerBitmapEraseTxns(e,d)))return;if(u&&(x=T()),u){const A=x.filter(N=>!N.finalizeRequested&&Cs(N.source).kind!=="wait-owner");for(const N of A)try{typeof u.cancelUndoTicker=="function"&&(u.cancelUndoTicker(N.tickerId,e,N.scenePath),this.logLocalWorkBarrierError(`[Appliance]: cancelled unfinalized Undo ticker before ${n}; viewId=${e}; tickerId=${N.tickerId}; source=${N.source}`))}catch(W){this.logLocalWorkBarrierError(`[Appliance]: cancelling unfinalized Undo ticker failed; viewId=${e}; tickerId=${N.tickerId}; source=${N.source}; error=${W instanceof Error?W.message:String(W)}`)}if(A.length){x=T();const N=x.filter(W=>!W.finalizeRequested&&Cs(W.source).kind!=="wait-owner");typeof u.cancelUndoTicker=="function"&&N.length&&(N.forEach(W=>{this.logLocalWorkBarrierError(`[Appliance]: unfinalized Undo ticker was not removed by cancellation; continuing without waiting; viewId=${e}; tickerId=${W.tickerId}; source=${W.source}`)}),x=x.filter(W=>W.finalizeRequested||Cs(W.source).kind==="wait-owner"))}}const v=u?x.filter(A=>!A.finalizeRequested).map(A=>u.waitForFinalizeRequested(A,S)):[];if(!await this.waitForCurrentTransactionBarrier(e,l,Promise.all(v)))return;const R=u?x.map(A=>u.waitForDataDone(A,S)):[];!await this.waitForCurrentTransactionBarrier(e,l,Promise.all(R))||!g||await this.waitForCurrentTransactionBarrier(e,l,Promise.all(x.map(A=>u==null?void 0:u.waitForUndoStackEnd(A,L))))}async consumeOriginalEvent(e,r,n,i,o=this.initGeneration,a=(c=>(c=this.localInputEpochByView)==null?void 0:c.get(n))()||0){var f,g,y,T,x;const l=(f=this.viewGenerationById)==null?void 0:f.get(n);if(!this.isAbled()||!this.isActive||this.initGeneration!==o||(((g=this.localInputEpochByView)==null?void 0:g.get(n))||0)!==a||(e===de.Start||e===de.Doing)&&!this.control.canAcceptLocalMutation(n))return;const u=(y=this.collector)==null?void 0:y.uid,h=this.viewContainerManager.getCurScenePath(n);if(u&&!this.control.renderControl.isWritable)return;const d=((T=this.currentToolsData)==null?void 0:T.toolsType)===q.Selector;switch((x=this.currentToolsData)==null?void 0:x.toolsType){case q.Eraser:case q.PencilEraser:case q.BitMapEraser:{if(u&&!this.control.renderControl.isClearAble({uid:u,viewId:n,scenePath:h}))return;break}default:{if(u&&!this.control.renderControl.isRenderAble({uid:u,viewId:n,scenePath:h}))return;break}}switch(e){case de.Start:{const C=this.control.isSceneBusy(n);if(this.isViewBusy(n)||C||this.control.isToolChangePending)return;this.isLocalWorkActive=!0,this.setLocalWorkViewId(n),n&&this.onLocalEventStart(r,n),d&&this.viewContainerManager.showFloatBarBtn(n,!1)}break;case de.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(r,n);break;case de.Done:if(n&&n===this.getLocalWorkViewId()){this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:de.Done});try{await this.onLocalEventEnd(r,n,o,a)}finally{this.isLocalWorkActive=!1,this.setCurrentLocalWorkData({workState:de.Pending}),d&&this.viewContainerManager.showFloatBarBtn(n,!0),this.setLocalWorkViewId(void 0)}}break}this.isLocalWorkActive&&this.viewContainerManager.focuedViewId===n&&this.publicMsgEmitter.emit("workState",e,n),Pr(()=>{var C,L,S;!this.isActive||this.initGeneration!==o||(((C=this.localInputEpochByView)==null?void 0:C.get(n))||0)!==a||((L=this.viewGenerationById)==null?void 0:L.get(n))!==l||(S=this.control.pluginManager)==null||S.dispatchPluginEvent("localEvent",n,e,r)},eh,this.control.hasPolyfillMethod("requestIdleCallback"))}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var a,c,l,u;const r=e.toolsType,i=((a=this.currentToolsData)==null?void 0:a.toolsType)!==e.toolsType,o=this.getLocalWorkViewId()||((c=this.viewContainerManager)==null?void 0:c.focuedViewId);if(i){const h=new Map;for(const d of this.getFullLayerBitmapEraseTxns().values()){if(d.phase!=="doing"||o&&d.viewId!==o)continue;let f=h.get(d.viewId);f||(f=new Set,h.set(d.viewId,f)),f.add(d.workId)}h.forEach((d,f)=>{this.cancelLocalWorks(f,!1,d)})}if(super.setCurrentToolsData(e),i){const h=o?(l=this.viewContainerManager)==null?void 0:l.getView(o):void 0;h!=null&&h.focusScenePath&&((u=this.collector)!=null&&u.hasSelector(h.id,h.focusScenePath)&&this.blurSelector(h.id,h.focusScenePath),this.control.textEditorManager.checkEmptyTextBlur()),this.taskBatchData.add({msgType:le.UpdateTools,dataType:Re.Local,toolsType:r,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,isRunSubWork:this.isRunSubWork,viewId:Lu,isRunBackgroundThread:this.control.isUseBackgroundThread}),this.runAnimation()}}prepareOnceWork(e,r){const{workId:n,toolsOpt:i,viewId:o}=e,a={msgType:le.CreateWork,dataType:Re.Local,viewId:o,toolsType:r};this.queryTaskBatchData(a).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...a,workId:n,opt:{...i,syncUnitTime:this.maxLastSyncTime},dataType:Re.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,r,n){var d,f,g,y;(d=this.collector)==null||d.restoreViewPendingSync(e),this.fullLayerFrameStateByView.delete(e);const i=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,i),(g=(f=this.control).bindPendingViewInit)==null||g.call(f,e,i),pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"create-view",details:{renderModel:Ht(this.control.renderMode,Hr(this.control,e)),context:Hr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),this.pendingTransportMessages.delete(`destroy:${e}`);const{offscreenCanvasOpt:o,layerOpt:a,dpr:c,cameraOpt:l}=r;l&&this.initCameraOptByView.set(e,{...l});const u={singleChannelTexture:this.control.renderingCompatibilityDecision.effectiveMaskTextureFormatLevel===void 0,textureSubImage2D:this.control.renderingCompatibilityDecision.effectiveMaskTextureUploadLevel===void 0},h={msgType:le.Init,dataType:Re.Local,viewId:e,viewGeneration:i,offscreenCanvasOpt:o,layerOpt:{...a,bitmapEraserMaskOptions:u},dpr:c,cameraOpt:l,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1,combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,syncUnitTime:this.maxLastSyncTime,isUseSimple:this.control.isUseSimple,offscreenCanvas:n.transferControlToOffscreenCanvas,bitmapEraserMaskOptions:u};if(!this.isRenderTransportReady){this.pendingTransportMessages.set(this.getPendingInitMessageKey(h),h),pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent-queued",details:{renderModel:Ht(this.control.renderMode,Hr(this.control,e)),context:Hr(this.control,e),reason:"transport-not-ready"}});return}pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent",details:{renderModel:Ht(this.control.renderMode,Hr(this.control,e)),context:Hr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),(y=this.cameraUpdateStateByView.get(e))!=null&&y.isRecovering||this.cameraUpdateDestroy(e),this.armViewInitAckTimeout(e,i),this.post(new Set([h])),this.taskBatchData.size&&this.consume()}discardViewTransactions(e){var a,c,l,u,h,d,f,g;this.invalidateTransactionBarrier(e);const r=(a=this.localDoneDispatchTimersByView)==null?void 0:a.get(e);r==null||r.forEach(y=>clearTimeout(y)),r==null||r.clear(),(c=this.localDoneDispatchTimersByView)==null||c.delete(e);const n=new Set;for(const[y,T]of this.localPointsBatchData){if(T.viewId!==e)continue;const x=y.toString();n.add(x),Ai(T.toolsType)&&this.rememberCancelledEraseTxn(x),this.localPointsBatchData.delete(y)}for(const[y,T]of this.getFullLayerBitmapEraseTxns())T.viewId===e&&(n.add(y),this.rememberCancelledEraseTxn(y),this.finishFullLayerBitmapEraseTxn(y,"aborted"));for(const y of[...this.taskBatchData])y.viewId===e&&this.taskBatchData.delete(y);this.tasksqueue.delete(e);for(const[y,T]of this.tasksqueue)T.viewId===e&&this.tasksqueue.delete(y);for(const[y,T]of this.reRenders){const x=T.filter(C=>{const L=C.viewId===e;return L&&this.retireRenderedImageBitmap(C),!L});x.length?this.reRenders.set(y,x):this.reRenders.delete(y)}const i=this.getDoneWaitForView(e);if(i&&i.workIds.some(y=>n.has(y))){const y=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),y==null||y(!1)}this.currentLocalWorkData.viewId===e&&(this.setCurrentLocalWorkData({workState:de.Pending}),this.isLocalWorkActive=!1),(l=this.localEventQueueByView)==null||l.delete(e),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),(h=(u=this.control)==null?void 0:u.viewContainerManager.getView(e))==null||h.displayer.cancelDprUpdate(),this.pendingDprByView.delete(e),(d=this.pendingDprOwnerByView)==null||d.delete(e),this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),this.operationBarrierQueueByView.delete(e),(f=this.willSelectorWorkIdByView)==null||f.delete(e);const o=this.clearAllResolveMap.get(e);o!=null&&o.timer&&clearTimeout(o.timer),(g=o==null?void 0:o.resolve)==null||g.call(o,e),this.clearAllResolveMap.delete(e),this.settleViewRenderRequests(e)}destroyViewWorker(e,r,n=!1){var u,h,d,f,g,y;(u=this.viewInitRecoveryDestroying)!=null&&u.has(e)||(h=this.viewInitRecoveryAttempts)==null||h.delete(e),this.discardViewTransactions(e),this.fullLayerFrameStateByView.delete(e);const o=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,o),this.initAckedViewIds.delete(e),this.serviceSyncReadyViews.delete(e);for(const[T,x]of this.serviceSyncCommitWaiters)x.viewId===e&&(clearTimeout(x.timer),x.resolve(!1),this.serviceSyncCommitWaiters.delete(T));const a=this.viewServiceReadyWaiters.get(e);a==null||a.forEach(T=>{clearTimeout(T.timer),T.resolve(!1)}),this.viewServiceReadyWaiters.delete(e);const c=this.viewInitAckWaiters.get(e);c==null||c.forEach(T=>{clearTimeout(T.timer),T.resolve(!1)}),this.viewInitAckWaiters.delete(e);for(const[T,x]of this.viewInitAckTimeoutTimers)T.startsWith(`${e}:`)&&(clearTimeout(x),this.viewInitAckTimeoutTimers.delete(T));this.initReconcileTasks.delete(e),this.control.invalidatePendingViewInit(e),(!n||!((d=this.cameraUpdateStateByView.get(e))!=null&&d.isRecovering))&&this.cameraUpdateDestroy(e,!1),this.initCameraOptByView.delete(e);for(const[T,x]of this.pendingTransportMessages)x.viewId===e&&this.pendingTransportMessages.delete(T);this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e);const l={msgType:le.Destroy,dataType:Re.Local,viewId:e,viewGeneration:o,isRunSubWork:!0};this.isRenderTransportReady?this.dispatchMessages(new Set([l])):this.pendingTransportMessages.set(`destroy:${e}`,l),r==="delete-storage"?((f=this.collector)==null||f.dispatch({type:le.Clear,viewId:e,isSync:!0}),(g=this.collector)==null||g.discardViewPendingSync(e)):r==="storage-already-deleted"&&((y=this.collector)==null||y.discardViewPendingSync(e)),this.control.renderControl.destoryByViewId(e,r!=="delete-storage")}onServiceDerive(e,r){var f,g,y,T,x,C,L,S;const{viewId:n}=r;if(!n||!this.isViewInitAck(n)||!this.isServiceSyncReady(n)){n&&this.control.queuePendingServiceDerive(n,e,r);return}const{newValue:i,oldValue:o,scenePath:a}=r,c=ve.cloneDeep(i)||{},l=e;let u=c.type;if(!i&&o&&(u=le.RemoveNode),!i&&o){if(l&&((f=this.collector)==null?void 0:f.getLocalId(l))===Ne){this.collector.isOwn(l)?this.blurSelector(n,a):this.blurSelector(n,a,l);return}if(o.toolsType===q.LaserPen)return}if(!Fu(n,a,p=>{var m;return(m=this.viewContainerManager.getView(p))==null?void 0:m.focusScenePath}))return;if((g=this.collector)!=null&&g.isSelector(e)){const p=(y=this.collector)==null?void 0:y.getUidFromKey(e);if(p&&!this.control.roomMember.isOnLine(p))return}if(u&&l){if(!this.control.renderControl.isFilterAble({viewId:n,elementId:e,scenePath:a},u))return;const p=c;if(p.workId=(T=this.collector)!=null&&T.isOwn(l)?(x=this.collector)==null?void 0:x.getLocalId(l):l,p.msgType=u,p.toolsType===q.LaserPen&&(p.isRunSubWork=!0),p.toolsType===q.BackgroundSVG){if(!this.control.isUseBackgroundThread)return;p.isRunBackgroundThread=!0}if(p.dataType=Re.Service,p.viewId=n,p.scenePath=a,p.useAnimation=this.smoothSync&&((C=p.updateNodeOpt)==null?void 0:C.useAnimation)||!1,p.selectIds&&(p.selectIds=p.selectIds.map(m=>{var M,v;return(M=this.collector)!=null&&M.isOwn(m)?(v=this.collector)==null?void 0:v.getLocalId(m):m})),p&&p.toolsType===q.Text||(o==null?void 0:o.toolsType)===q.Text){this.control.textEditorManager.onServiceDerive(p);return}p.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(p)}this.runAnimation();const h=r.newValue&&((L=r.newValue)==null?void 0:L.toolsType),d=r.newValue&&((S=r.newValue.opt)==null?void 0:S.zIndex);if(h&&h===q.BackgroundSVG){if(this.zIndexNodeMethod&&ve.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndexForBackgroundSVG(n);this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(n)<d&&this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(d,n),p>d&&this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(d,n)}}else if(this.zIndexNodeMethod&&ve.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndex(n);this.zIndexNodeMethod.getMaxZIndex(n)<d&&this.zIndexNodeMethod.setMaxZIndex(d,n),p>d&&this.zIndexNodeMethod.setMinZIndex(d,n)}}pullServiceData(e,r,n={isAsync:!1,useAnimation:!1}){if(!this.isViewInitReady(e)){this.control.queuePendingInitServicePull(e,r);return}this.pullServiceDataForReadyRenderer(e,r,n)}pullServiceDataForReadyRenderer(e,r,n){var c,l,u,h,d,f,g;if(!Fu(e,r,y=>{var T;return(T=this.viewContainerManager.getView(y))==null?void 0:T.focusScenePath}))return;let i=(c=this.collector)==null?void 0:c.getStorageData(e,r);const{isAsync:o,useAnimation:a}=n;if(i){this.control.syncLogger.append("pullServiceData",e,r,Object.entries(i).map(([T,x])=>({key:T,type:x==null?void 0:x.type,toolsType:x==null?void 0:x.toolsType}))),this.control.renderControl.isWritable&&(i=this.correctStorage(i,e,r));const y=Object.keys(i);for(const T of y){if((l=this.collector)!=null&&l.isSelector(T)){const C=(u=this.collector)==null?void 0:u.getUidFromKey(T);if(C&&!this.control.roomMember.isOnLine(C))continue}const x=(h=i[T])==null?void 0:h.type;if(x&&T){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:T,scenePath:r},x))continue;const C=i[T];if(C.workId=(d=this.collector)!=null&&d.isOwn(T)?(f=this.collector)==null?void 0:f.getLocalId(T):T,C.msgType=x,C.dataType=Re.Service,C.viewId=e,C.scenePath=r,C.useAnimation=this.smoothSync&&(C.ops?!!a:(g=C.updateNodeOpt)==null?void 0:g.useAnimation)||!1,C.selectIds&&(C.selectIds=C.selectIds.map(L=>{var S,p;return(S=this.collector)!=null&&S.isOwn(L)?(p=this.collector)==null?void 0:p.getLocalId(L):L})),C.toolsType===q.Text){this.control.shouldHoldServiceTextRenderForFontFace()?this.control.markInitFontFaceTextRenderSkipped():this.control.textEditorManager.onServiceDerive(C);continue}if(C.toolsType===q.BackgroundSVG){if(!this.control.isUseBackgroundThread)continue;C.isRunBackgroundThread=!0}o&&C.updateNodeOpt&&C.updateNodeOpt.useAnimation&&(C.updateNodeOpt.useAnimation=!1),C.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(C)}this.internalMsgEmitter.emit("excludeIds",y,e)}o?this.consume():this.runAnimation()}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var e;if(this.animationId=void 0,this.isAbled()&&this.localPointsBatchData.size)for(const[r,{state:n,isFullWork:i,points:o,opt:a,toolsType:c,undoTickerId:l,viewId:u}]of this.localPointsBatchData.entries()){if(!u||n===de.Done&&!i||n===de.Start&&!this.isCanStartEventConsum)continue;const h=o.map(d=>d);if(h.length||n===de.Done){if(this.isPostCountType&&n===de.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}const d=this.getDoneResolverForView(u),f=this.getDoneWaitForView(u);d&&n===de.Done&&(f!=null&&f.workIds.includes(r.toString()))&&(d(!0),this.setLockSentEventCursor(!0));const g=((e=this.getLocalPointInfo(r))==null?void 0:e.scenePath)||u&&this.viewContainerManager.getCurScenePath(u);n===de.Done&&l&&g&&Yl.has(c)&&this.internalMsgEmitter.emit("finalizeRequested",l,u,[r.toString()],g),this.taskBatchData.add({op:h,workState:n,workId:r,dataType:Re.Local,msgType:le.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:c,viewId:u,scenePath:g,opt:a,smoothSync:this.smoothSync,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0,needUndoTicker:n===de.Done&&l||void 0,collectUndoTicker:n!==de.Done&&Ai(c)&&l||void 0}),o.length=0}}if(this.taskBatchData.size){const r=new Set(this.taskBatchData),n=new Set,i=new Set;for(const o of r){const a=Z0e({isService:o.dataType===Re.Service,isAllViews:o.viewId===Lu,viewId:o.viewId,scenePath:o.scenePath},c=>this.isViewInitAck(c),c=>{var l;return(l=this.viewContainerManager.getView(c))==null?void 0:l.focusScenePath});a==="dispatch"?n.add(o):a==="pending"&&i.add(o)}for(const o of n)if(o.msgType===le.DrawWork&&o.workState===de.Done&&o.workId!==void 0){const a=this.getFullLayerBitmapEraseTxns().get(o.workId.toString());a&&a.phase!=="aborting"&&(a.phase="committing",this.armBitmapEraserCommitTimeout(a))}this.post(n),this.taskBatchData.clear(),i.forEach(o=>this.taskBatchData.add(o))}}armBitmapEraserCommitTimeout(e){e.commitTimeoutId&&clearTimeout(e.commitTimeoutId),e.commitTimeoutId=setTimeout(()=>{const r=this.getFullLayerBitmapEraseTxns().get(e.workId);!r||r.phase!=="done-staging"&&r.phase!=="committing"||this.timeoutLocalWorks(e.viewId,e.scenePath||this.viewContainerManager.getCurScenePath(e.viewId)||"","bitmap-eraser-commit-timeout",new Set([e.workId]))},vpe)}markFullLayerBitmapEraseDoneStaging(e){var r;e.phase==="doing"&&(e.phase="done-staging",e.inputPointCount=Math.floor((((r=this.getLocalPointInfo(e.workId))==null?void 0:r.rawPoints.length)||0)/2),this.logBitmapEraserTrace("done-staging",e,{pointCount:e.inputPointCount,doingAckCount:e.doingAckCount||0}),this.armBitmapEraserCommitTimeout(e))}unWritable(){const e=new Set;this.localPointsBatchData.forEach(({viewId:r})=>{e.add(r)}),this.getFullLayerBitmapEraseTxns().forEach(({viewId:r})=>{e.add(r)}),e.forEach(r=>this.cancelLocalWorks(r,!1)),this.setCurrentLocalWorkData({workState:de.Unwritable}),this.setLockSentEventCursor(!0)}abled(){this.setCurrentLocalWorkData({workState:de.Pending}),this.setLockSentEventCursor(!1)}isAbled(){return this.currentLocalWorkData.workState!==de.Unwritable}postMainThread(e){if(!this.control.hasOffscreenCanvas&&this.mainThread){this.mainThread.consume(e).catch(r=>{this.logLocalWorkBarrierError(`[Appliance]: main-thread message consumption failed; error=${r instanceof Error?r.message:String(r)}`)});return}}postWebWorker(e){if(this.control.isUseSimple){const r=[...e].find(n=>n.msgType===le.Init&&n.offscreenCanvas);r!=null&&r.offscreenCanvas?this.fullWorker.postMessage(e,[r.offscreenCanvas.bgCanvas,r.offscreenCanvas.localCanvas,r.offscreenCanvas.serviceCanvas]):this.fullWorker.postMessage(e);return}else if(this.subWorker){this.fullWorker.postMessage(e);const r=new Set;for(const n of e.values()){const i=n.msgType;(i===le.Init||i===le.Clear||i===le.Destroy||i===le.UpdateCamera||i===le.Console||n.isRunSubWork)&&r.add(n)}r.size&&this.subWorker.postMessage(r)}}post(e){!this.isRenderTransportReady||!e.size||this.dispatchMessages(e)}dispatchMessages(e){const r=this.initGeneration,n=()=>{const i=ve.cloneDeep([...e]);setTimeout(()=>{if(this.initGeneration===r)for(const o of i)this.taskBatchData.add(o)},0)};if(this.control.isUseBackgroundThread){if(!this.backgroundThreadManager){n();return}const i=new Set;for(const o of e.values()){const a=o.msgType;(a===le.Init||a===le.Clear||a===le.Destroy||a===le.Console||o.isRunBackgroundThread)&&i.add(o)}i.size&&this.backgroundThreadManager.consume(i).catch(o=>{this.logLocalWorkBarrierError(`[Appliance]: background-thread message consumption failed; error=${o instanceof Error?o.message:String(o)}`)})}if(!this.control.hasOffscreenCanvas){if(!this.mainThread){n();return}this.postMainThread(e);return}this.postWebWorker(e)}updateNode(e,r,n,i){this.taskBatchData.add({msgType:le.UpdateNode,workId:e,updateNodeOpt:r,viewId:n,scenePath:i,dataType:Re.Local}),this.runAnimation()}destroyTaskQueue(e=!1){for(const[r,n]of this.cameraUpdateStateByView){if(e&&n.isRecovering){this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0;continue}this.cameraUpdateDestroy(r,!1)}this.tasksqueue.clear()}updateDpr(e,r){this.pendingDprOwnerByView||(this.pendingDprOwnerByView=new Map);const n=(this.dprUpdateSequence||0)+1;this.dprUpdateSequence=n,this.pendingDprOwnerByView.set(e,n),this.pendingDprByView.set(e,r);const i=this.initGeneration,o=this.viewGenerationById.get(e),a=()=>{var h;return((h=this.pendingDprOwnerByView)==null?void 0:h.get(e))===n},c=()=>a()&&(this.initGeneration!==i||this.viewGenerationById.get(e)!==o)?(this.releasePendingDprUpdate(e,n),!0):!a(),u=this.getLocalWorkFinalizeQueue(e).then(async()=>{if(await this.waitForLocalEventQueue(e),c())return;const h=this.viewContainerManager.getCurScenePath(e);if(h&&await this.forceDoneLocalWorks(e,h,"dpr-update"),c())return;const d=this.pendingDprByView.get(e);d!==void 0&&(this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n))}).catch(async h=>{if(c())return;this.Logger.error(`[Appliance]: DPR transaction barrier failed; viewId=${e}; error=${h instanceof Error?h.message:String(h)}`);try{await this.scheduleViewRecovery(e,"dpr-transaction-barrier-failed")}catch{this.cancelPendingDprUpdate(e,n);return}if(c())return;const d=this.pendingDprByView.get(e);if(d!==void 0)try{this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n)}catch(f){this.Logger.error(`[Appliance]: DPR apply failed after view recovery; viewId=${e}; error=${f instanceof Error?f.message:String(f)}`),this.cancelPendingDprUpdate(e,n)}});this.setLocalWorkFinalizeQueue(e,u),u.then(()=>this.clearLocalWorkFinalizeQueue(e,u),()=>this.clearLocalWorkFinalizeQueue(e,u))}releasePendingDprUpdate(e,r){var n;return((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))!==r?!1:(this.pendingDprOwnerByView.delete(e),this.pendingDprByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),!0)}cancelPendingDprUpdate(e,r){var n,i;((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))===r&&((i=this.viewContainerManager.getView(e))==null||i.displayer.cancelDprUpdate(),this.releasePendingDprUpdate(e,r))}applyDprUpdate(e,r){var n;(n=this.viewContainerManager.getView(e))==null||n.displayer.commitDprUpdate(r),this.queryTaskBatchData({msgType:le.UpdateDpr,dataType:Re.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add({dataType:Re.Local,msgType:le.UpdateDpr,viewId:e,dpr:r,isRunSubWork:!0}),this.runAnimation()}cloneCameraReplay(e){return{cameraOpt:{...e.cameraOpt},scenePath:e.scenePath}}beginCameraClearReplay(e,r){this.cameraClearReplayByView||(this.cameraClearReplayByView=new Map);const n=this.cameraClearReplayByView.get(e),i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(n==null?void 0:n.replay)||(i?this.getCameraReplayCandidate(e,i):o==null?void 0:o.replayCamera);this.cameraClearReplaySequence=(this.cameraClearReplaySequence||0)+1;const c={owner:this.cameraClearReplaySequence,viewGeneration:this.viewGenerationById.get(e),replay:a?{...this.cloneCameraReplay(a),scenePath:a.scenePath||r}:void 0,preserveRecovery:(n==null?void 0:n.preserveRecovery)===!0||(i==null?void 0:i.isRecovering)===!0||(i==null?void 0:i.recoveryOwner)!==void 0||!!o};if(this.cameraClearReplayByView.set(e,c),c.preserveRecovery&&a){let l=i;!l&&o&&(l={isBusy:!0},this.cameraUpdateStateByView.set(e,l)),l&&(this.clearCameraTaskTimeouts(l),l.pendingCamera=void 0,l.transaction=void 0,l.preparePromise=void 0,l.currentTaskId=void 0,l.isRecovering=!0,l.recoveryFromGeneration??(l.recoveryFromGeneration=(o==null?void 0:o.viewGeneration)??c.viewGeneration),l.recoveryOwner??(l.recoveryOwner=(o==null?void 0:o.cameraRecoveryOwner)??this.nextCameraRecoveryOwner()),this.updateCameraRecoveryReplay(e,l,a))}return c}finishCameraClearReplay(e,r){var u,h;if(((h=(u=this.cameraClearReplayByView)==null?void 0:u.get(e))==null?void 0:h.owner)!==r.owner)return;this.cameraClearReplayByView.delete(e);const n=r.replay,i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(i==null?void 0:i.isRecovering)===!0||!!o,c=d=>{!r.preserveRecovery||!i||!i.isRecovering&&i.recoveryOwner===void 0||(i.isRecovering=!0,this.releaseCameraRecovery(e,d,i,i.recoveryOwner))};if(!n){c("missing-replay-camera-after-clear");return}if(this.viewGenerationById.get(e)!==r.viewGeneration&&!r.preserveRecovery&&!a)return;if(!this.viewContainerManager.getView(e)){c("view-removed-during-clear");return}const l=this.viewContainerManager.getCurScenePath(e);if(!l||n.scenePath&&n.scenePath!==l){c(`scene-superseded-during-clear:${n.scenePath||"unknown"}->${l||"unknown"}`);return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,n);const d=this.viewGenerationById.get(e);d!==void 0&&!this.activeRenderRuntimeRecovery&&this.isViewInitReady(e)&&this.dispatchCameraRecoveryReplay(e,d);return}this.updateCamera(e,n.cameraOpt)}getCameraReplayCandidate(e,r){if(r.pendingCamera)return this.cloneCameraReplay(r.pendingCamera);if(r.replayCamera)return this.cloneCameraReplay(r.replayCamera);if(r.transaction)return{cameraOpt:{...r.transaction.camera},scenePath:r.transaction.scenePath};const n=this.viewContainerManager.getView(e);if(n!=null&&n.cameraOpt)return{cameraOpt:{...n.cameraOpt},scenePath:n.focusScenePath}}getActiveRenderRuntimeRecoveryView(e){var r;return(r=this.activeRenderRuntimeRecovery)==null?void 0:r.views.find(n=>n.viewId===e)}nextCameraRecoveryOwner(){return this.cameraRecoverySequence=(this.cameraRecoverySequence||0)+1,this.cameraRecoverySequence}updateCameraRecoveryReplay(e,r,n){const i=this.cloneCameraReplay(n);r.replayCamera=i;const o=this.getActiveRenderRuntimeRecoveryView(e);o&&(o.replayCamera=this.cloneCameraReplay(i),o.cameraRecoveryOwner=r.recoveryOwner),(!this.initAckedViewIds||!this.serviceSyncReadyViews||!this.isViewInitReady(e))&&this.control.queuePendingInitCamera(e,i.cameraOpt,i.scenePath)}beginCameraRecovery(e,r){const n=this.getCameraReplayCandidate(e,r);if(this.clearCameraTaskTimeouts(r),r.pendingCamera=void 0,r.transaction=void 0,r.preparePromise=void 0,r.currentTaskId=void 0,!n)return;r.isRecovering=!0,r.recoveryFromGeneration=this.viewGenerationById.get(e),r.recoveryOwner=this.nextCameraRecoveryOwner(),r.replayCamera=this.cloneCameraReplay(n);const i=this.getActiveRenderRuntimeRecoveryView(e);return i&&(i.replayCamera=this.cloneCameraReplay(n),i.cameraRecoveryOwner=r.recoveryOwner),this.cloneCameraReplay(n)}releaseCameraRecovery(e,r,n,i){const o=this.cameraUpdateStateByView.get(e);!(o!=null&&o.isRecovering)||n!==void 0&&o!==n||i!==void 0&&o.recoveryOwner!==i||(this.Logger.error(`[Appliance]: Camera recovery failed viewId=${e} recoveryOwner=${o.recoveryOwner??"unknown"} fromGeneration=${o.recoveryFromGeneration??"unknown"} reason=${r}`),this.cameraUpdateDestroy(e,!1))}releaseRenderRuntimeRecoveryCameras(e,r){for(const n of e.views){const i=this.cameraUpdateStateByView.get(n.viewId);!(i!=null&&i.isRecovering)||n.cameraRecoveryOwner===void 0||this.releaseCameraRecovery(n.viewId,r,i,n.cameraRecoveryOwner)}}dispatchCameraRecoveryReplay(e,r){var c,l,u;const n=this.cameraUpdateStateByView.get(e);if(!(n!=null&&n.isRecovering)||this.viewGenerationById.get(e)!==r)return!1;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1)return this.releaseCameraRecovery(e,"manager-lifecycle-ended",n,n.recoveryOwner),!1;if(!this.viewContainerManager.getView(e))return this.releaseCameraRecovery(e,"view-removed-before-replay",n,n.recoveryOwner),!1;if(n.recoveryOwner===void 0)return this.releaseCameraRecovery(e,"missing-recovery-owner",n),!1;if(n.recoveryFromGeneration===r)return!1;const i=n.replayCamera;if(!i)return this.releaseCameraRecovery(e,"missing-replay-camera",n),!1;const o=this.viewContainerManager.getCurScenePath(e);if(!o)return this.releaseCameraRecovery(e,"missing-current-scene",n,n.recoveryOwner),!1;if(i.scenePath&&i.scenePath!==o)return this.releaseCameraRecovery(e,`scene-superseded:${i.scenePath}->${o}`,n,n.recoveryOwner),!1;const a=(u=this.cameraClearReplayByView)==null?void 0:u.get(e);return a?(a.preserveRecovery=!0,a.viewGeneration=r,a.replay=this.cloneCameraReplay(i),!1):(n.isRecovering=!1,n.replayCamera=void 0,n.pendingCamera=this.cloneCameraReplay(i),this.schedulePendingCameraForView(e,n),!0)}updateCamera(e,r){var a;const n=(a=this.cameraClearReplayByView)==null?void 0:a.get(e);let i=this.cameraUpdateStateByView.get(e);const o=this.getActiveRenderRuntimeRecoveryView(e);if(n){const c={cameraOpt:{...r},scenePath:this.viewContainerManager.getCurScenePath(e)};n.replay=c,n.viewGeneration=this.viewGenerationById.get(e),i!=null&&i.isRecovering?(n.preserveRecovery=!0,this.updateCameraRecoveryReplay(e,i,c)):o&&(n.preserveRecovery=!0,i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,c));return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,{cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(o){i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,{cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(!this.isViewInitReady(e)){this.control.queuePendingInitCamera(e,r,this.viewContainerManager.getCurScenePath(e));return}this.updateCameraForReadyRenderer(e,r)}updateCameraForReadyRenderer(e,r){if(this.control.isSceneBusy(e)){this.control.deferSceneCamera(e,r);return}if(this.control.isClearBusy(e)){this.control.deferClearCamera(e,r);return}let n=this.cameraUpdateStateByView.get(e);n||(n={isBusy:!0},this.cameraUpdateStateByView.set(e,n)),n.pendingCamera={cameraOpt:r,scenePath:this.viewContainerManager.getCurScenePath(e)},this.schedulePendingCameraForView(e,n)}schedulePendingCameraForView(e,r){if(!r.isRecovering&&!r.preparePromise&&r.currentTaskId===void 0){if(!r.transaction){const n=this.enqueueCameraPreparation(e);r.preparePromise=n,n.then(()=>{this.cameraUpdateStateByView.get(e)!==r||(r==null?void 0:r.preparePromise)!==n||r.isRecovering||this.control.isSceneBusy(e)||(r.preparePromise=void 0,this.consumePendingCameraForView(e,r))}).catch(()=>{this.cameraUpdateStateByView.get(e)!==r||r.preparePromise!==n||r.isRecovering||(r.preparePromise=void 0,this.cameraUpdateDestroy(e))});return}this.consumePendingCameraForView(e,r)}}isSameCameraOpt(e,r){return e.scale===r.scale&&e.centerX===r.centerX&&e.centerY===r.centerY&&e.width===r.width&&e.height===r.height}enqueueCameraPreparation(e){const r=this.getLocalWorkFinalizeQueue(e).then(async()=>{await this.waitForLocalEventQueue(e);const i=this.viewContainerManager.getCurScenePath(e);!i||this.control.isSceneBusy(e)||await this.forceDoneLocalWorks(e,i,"camera-update")}),n=r.catch(()=>{});return this.setLocalWorkFinalizeQueue(e,n),n.then(()=>this.clearLocalWorkFinalizeQueue(e,n),()=>this.clearLocalWorkFinalizeQueue(e,n)),r}consumePendingCameraForView(e,r){var l,u,h;if(this.cameraUpdateStateByView.get(e)!==r||r.preparePromise||r.currentTaskId!==void 0||r.isRecovering||this.control.isSceneBusy(e))return;const n=r.pendingCamera;if(!n)return;const i=this.viewContainerManager.getCurScenePath(e);if(n.scenePath&&n.scenePath!==i){r.pendingCamera=void 0;return}r.pendingCamera=void 0;const o=(this.cameraTaskSequenceByView.get(e)||0)+1,a=this.viewGenerationById.get(e);this.cameraTaskSequenceByView.set(e,o),r.currentTaskId=o,r.transaction={taskId:o,camera:{...n.cameraOpt},scenePath:i,viewGeneration:a,recoveryOwner:r.recoveryOwner,coreAckReceived:!1,settledAckReceived:!1},this.blurCursor(e);const c={msgType:le.UpdateCamera,dataType:Re.Local,cameraOpt:n.cameraOpt,scenePath:i,isRunSubWork:!0,viewId:e,viewGeneration:a,cameraTaskId:o};this.post(new Set([{msgType:le.TasksQueue,dataType:Re.Local,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,mainTasksqueueCount:o,cameraTaskId:o,tasksqueue:new Map([[e,c]]),viewId:e,viewGeneration:a}])),this.control.textEditorManager.onCameraChange(n.cameraOpt,e);try{(l=this.control.selectorApi)==null||l.onCameraChange(e)}catch(d){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onCameraChange failed: ${d==null?void 0:d.message}`)}this.startCameraTaskTimeouts(e,r,o,a)}clearCameraTaskTimeouts(e){e.cameraAckSlowTimeoutId&&(clearTimeout(e.cameraAckSlowTimeoutId),e.cameraAckSlowTimeoutId=void 0),e.cameraTransportTimeoutId&&(clearTimeout(e.cameraTransportTimeoutId),e.cameraTransportTimeoutId=void 0)}startCameraTaskTimeouts(e,r,n,i){this.clearCameraTaskTimeouts(r),r.cameraAckSlowTimeoutId=setTimeout(()=>{var o,a;!this.isCurrentCameraTransaction(e,r,n,i)||r.currentTaskId!==n||(r.cameraAckSlowTimeoutId=void 0,(a=(o=this.Logger)==null?void 0:o.warn)==null||a.call(o,`[Appliance]: camera render ACK slow viewId=${e} taskId=${n} hasPending=${!!r.pendingCamera} elapsedMs=${Jl}`))},Jl),r.cameraTransportTimeoutId=setTimeout(()=>{!this.isCurrentCameraTransaction(e,r,n,i)||r.currentTaskId!==n||(r.cameraTransportTimeoutId=void 0,this.failCameraTask(e,n,{code:"CAMERA_TRANSPORT_TIMEOUT",business:"updateCamera",message:"renderer returned neither success nor failure ACK",elapsedMs:na,stage:"transport"},i))},na)}isCurrentCameraTransaction(e,r,n,i){const o=r.transaction;return this.cameraUpdateStateByView.get(e)===r&&(o==null?void 0:o.taskId)===n&&o.viewGeneration===i&&this.viewGenerationById.get(e)===i}completeCameraTransactionIfReady(e,r){const n=r.transaction;!n||!this.isCurrentCameraTransaction(e,r,n.taskId,n.viewGeneration)||r.currentTaskId!==void 0||r.pendingCamera||!n.coreAckReceived||!n.settledAckReceived||(e===Fe&&this.logMainViewCameraTrace("completed",{taskId:n.taskId,scenePath:n.scenePath,camera:n.camera,renderFinished:!0}),this.cameraUpdateDestroy(e))}ackCameraTask(e,r,n){const i=this.cameraUpdateStateByView.get(e);!i||i.currentTaskId!==r||!this.isCurrentCameraTransaction(e,i,r,n)||(this.clearCameraTaskTimeouts(i),i.currentTaskId=void 0,i.transaction.coreAckReceived=!0,i.pendingCamera?this.consumePendingCameraForView(e,i):this.completeCameraTransactionIfReady(e,i))}failCameraTask(e,r,n,i){var a,c;const o=this.cameraUpdateStateByView.get(e);if(!(!o||!this.isCurrentCameraTransaction(e,o,r,i))){if(this.cameraFailureSequenceByView.set(e,(this.cameraFailureSequenceByView.get(e)||0)+1),this.clearCameraTaskTimeouts(o),o.currentTaskId=void 0,this.Logger.error(`[Appliance]: renderer Camera task failed code=${n.code} business=${n.business} viewId=${e} taskId=${r} stage=${n.stage||"unknown"} elapsedMs=${n.elapsedMs??0} blockers=${JSON.stringify(n.blockingWorks||[])} error=${n.message}`),n.code==="CAMERA_TRANSPORT_TIMEOUT"){if(!this.beginCameraRecovery(e,o)){this.Logger.error(`[Appliance]: Camera recovery cannot start viewId=${e} taskId=${r} reason=missing-replay-camera`),this.cameraUpdateDestroy(e,!1);return}if(((c=(a=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:c.call(a))===!1){this.releaseCameraRecovery(e,"manager-lifecycle-ended",o);return}this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:i,reportErrorCode:"CAMERA_TRANSPORT_TIMEOUT",reportStage:n.stage||"camera-transport",reportError:n.message});return}o.pendingCamera?this.consumePendingCameraForView(e,o):this.cameraUpdateDestroy(e)}}ackCameraSettledTask(e,r,n){const i=this.cameraUpdateStateByView.get(e);!i||!this.isCurrentCameraTransaction(e,i,r,n)||(i.transaction.settledAckReceived=!0,this.completeCameraTransactionIfReady(e,i))}cameraUpdateDestroy(e,r=!0){var o,a,c,l;const n=this.cameraUpdateStateByView.get(e),i=this.getActiveRenderRuntimeRecoveryView(e);if(i&&(i.replayCamera=void 0,i.cameraRecoveryOwner=void 0),(n==null?void 0:n.recoveryOwner)!==void 0&&((o=this.viewInitRecoveryAttempts)==null||o.delete(e)),!n){r||(a=this.methodBuilder)==null||a.discardRecovery(e),this.resolveCameraUpdateEndWaiters(e);return}if(this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0,this.cameraUpdateStateByView.delete(e),this.resolveCameraUpdateEndWaiters(e),this.resolveViewLifecycleIdleWaiters(e),!r){(c=this.methodBuilder)==null||c.discardRecovery(e);return}!this.control.isSceneBusy(e)&&!this.control.isClearBusy(e)&&((l=this.methodBuilder)==null||l.recover(e,this.viewContainerManager.getCurScenePath(e)),this.runAnimation())}resolveCameraUpdateEndWaiters(e){var n;const r=(n=this.cameraUpdateEndWaitersByView)==null?void 0:n.get(e);r&&(this.cameraUpdateEndWaitersByView.delete(e),r.forEach(i=>i()))}waitForCameraUpdateEnd(e){var r;return(r=this.cameraUpdateStateByView)!=null&&r.has(e)?(this.cameraUpdateEndWaitersByView||(this.cameraUpdateEndWaitersByView=new Map),new Promise(n=>{const i=this.cameraUpdateEndWaitersByView.get(e)||new Set;i.add(n),this.cameraUpdateEndWaitersByView.set(e,i)})):Promise.resolve()}waitForViewLifecycleIdle(e){return this.hasPendingViewLifecycleWork(e)?(this.viewLifecycleIdleWaitersByView||(this.viewLifecycleIdleWaitersByView=new Map),new Promise(r=>{const n=this.viewLifecycleIdleWaitersByView.get(e)||new Set;n.add(r),this.viewLifecycleIdleWaitersByView.set(e,n)})):Promise.resolve()}hasPendingViewLifecycleWork(e){var r,n,i;return((r=this.cameraUpdateStateByView)==null?void 0:r.has(e))||((n=this.pendingDprByView)==null?void 0:n.has(e))||((i=this.viewRecoveryQueueByView)==null?void 0:i.has(e))||!1}resolveViewLifecycleIdleWaiters(e){var n;if(this.hasPendingViewLifecycleWork(e))return;const r=(n=this.viewLifecycleIdleWaitersByView)==null?void 0:n.get(e);r&&(this.viewLifecycleIdleWaitersByView.delete(e),r.forEach(i=>i()))}recoverAfterSceneChange(e){var r;(r=this.methodBuilder)==null||r.recover(e),this.runAnimation()}abortActiveContinuousMethods(e,r){var n;return((n=this.methodBuilder)==null?void 0:n.abortActiveContinuousMethods(e,r))||!1}abortActiveLocalInput(e,r){var g,y,T,x,C;const n=r==null?void 0:r.toString(),i=n?((g=this.collector)==null?void 0:g.getLocalId(n))||n:void 0,o=[...this.localPointsBatchData.entries()].filter(([,L])=>L.viewId===e).map(([L])=>L.toString()),a=[...this.getFullLayerBitmapEraseTxns().values()].filter(L=>L.viewId===e&&L.phase!=="committed"&&L.phase!=="aborted"),c=!n||((y=this.collector)==null?void 0:y.isLocalId(n))||((T=this.collector)==null?void 0:T.isOwn(n)),l=i!==void 0&&!!c&&o.includes(i),u=i!==void 0&&a.some(L=>{var S,p,m,M;return L.workId===i||((S=L.updatedTargetIds)==null?void 0:S.has(i))||((p=L.updatedTargetIds)==null?void 0:p.has(n||i))||((m=L.deletedTargetIds)==null?void 0:m.has(i))||((M=L.deletedTargetIds)==null?void 0:M.has(n||i))}),h=i===void 0||l||u,d=((x=this.localEventQueueByView)==null?void 0:x.has(e))||!1;return!(this.getLocalWorkViewId()===e||this.currentLocalWorkData.viewId===e||((C=this.activeLocalEvent)==null?void 0:C.viewId)===e||o.length>0||a.length>0||d)||!h?!1:(this.localInputEpochByView||(this.localInputEpochByView=new Map),this.localInputEpochByView.set(e,(this.localInputEpochByView.get(e)||0)+1),o.forEach(L=>this.rememberCancelledLocalWork(L,e)),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:de.Pending}),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.isLocalWorkActive=!1,!0)}async clearViewScenePath(e,r,n){var c,l;const i=this.viewContainerManager.getCurScenePath(e),o=this.isViewInitReady(e);if(n){const u=(c=this.collector)==null?void 0:c.uid;if(!(!u||this.control.renderControl.isClearAble({uid:u,viewId:e,scenePath:i})))return}const a=this.beginCameraClearReplay(e,i);try{if(o||this.control.queuePendingInitClear(e,i),a.preserveRecovery||this.cameraUpdateDestroy(e),this.cancelLocalWorks(e,!r),this.control.textEditorManager.clear(e,r),o&&(this.queryTaskBatchData({dataType:Re.Service,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.queryTaskBatchData({msgType:le.Clear,dataType:Re.Local,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.taskBatchData.add({dataType:Re.Local,msgType:le.Clear,viewId:e}),this.runAnimation()),r||(this.control.renderControl.isUsePageAuth(e)&&i?this.control.renderControl.clearRenderPage(e,i):(l=this.collector)==null||l.dispatch({type:le.Clear,viewId:e,scenePath:i})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),!o)return;await new Promise(u=>{const h=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};h.timer&&clearTimeout(h.timer),h.resolve=u,h.timer=setTimeout(()=>{const d=this.clearAllResolveMap.get(e);d!=null&&d.resolve&&d.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,h)}).then(u=>{this.clearAllResolveMap.delete(u)})}finally{this.finishCameraClearReplay(e,a)}}internalMsgEmitterListener(){var e;this.methodBuilder=new Ve([Te.CopyNode,Te.SetColorNode,Te.DeleteNode,Te.RotateNode,Te.ScaleNode,Te.TranslateNode,Te.ZIndexNode,Te.SetFontStyle,Te.SetPoint,Te.SetLock,Te.SetShapeOpt]).registerForMainEngine(We.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(Te.ZIndexNode)}setZIndex(e){const r=this.currentToolsData&&ve.cloneDeep(this.currentToolsData.toolsOpt);return r&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),r.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),r}async checkDrawingWork(e){const r=new Set;let n=!1;for(const[i,o]of this.localPointsBatchData.entries()){const{state:a,viewId:c,toolsType:l,undoTickerId:u}=o;if(e===c&&(a===de.Start||a===de.Doing)){if(l===q.Text)continue;o.state=de.Done,o.isFullWork=!0,this.localPointsBatchData.set(i,o);const h=this.getFullLayerBitmapEraseTxns().get(i.toString());(h==null?void 0:h.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(h),u&&(r.add(u),o.scenePath&&l&&Yl.has(l)?this.internalMsgEmitter.emit("finalizeRequested",u,c,[i.toString()],o.scenePath):l&&Ai(l)&&l!==q.BitMapEraser&&o.scenePath&&this.internalMsgEmitter.emit("finalizeRequested",u,c,[],o.scenePath)),n=!0}}if(n){this.consume();for(const[i,o]of this.localPointsBatchData.entries())o.viewId===e&&o.state===de.Done&&this.deleteLocalPoint(i)}return[...r]}cancelLocalWorks(e,r=!0,n){var f;const i=this.viewContainerManager.getCurScenePath(e);let o=i;const a=new Set,c=new Set,l=new Map;let u=!1;const h=new Set(n||[]);if(!n){for(const[g,y]of this.localPointsBatchData.entries())y.viewId===e&&h.add(g.toString());for(const g of this.getFullLayerBitmapEraseTxns().values())g.viewId===e&&h.add(g.workId)}for(const g of h){const y=this.getFullLayerBitmapEraseTxns().get(g);!y||y.viewId!==e||(y.phase="aborting",y.commitTimeoutId&&clearTimeout(y.commitTimeoutId),y.scenePath&&(o=y.scenePath),y.undoTickerId&&y.scenePath&&l.set(y.undoTickerId,y.scenePath),this.rememberCancelledEraseTxn(g))}for(const[g,y]of this.localPointsBatchData.entries()){const T=g.toString();if(y.viewId!==e||!h.has(T))continue;const x=y.scenePath||i;y.scenePath&&(o=y.scenePath),y.undoTickerId&&x&&l.set(y.undoTickerId,x),Ai(y.toolsType)&&this.rememberCancelledEraseTxn(T);const C=this.getDoneWaitForView(e);C!=null&&C.workIds.includes(g.toString())&&(u=!0),g!==Ne&&(this.rememberCancelledLocalWork(T,e),a.add(T),y.state!==de.Start&&c.add(T)),this.localPointsBatchData.delete(g)}for(const g of h)g!==Ne&&(this.rememberCancelledLocalWork(g,e),a.add(g)),this.finishFullLayerBitmapEraseTxn(g,"aborted");const d=this.getDoneWaitForView(e);d!=null&&d.workIds.some(g=>h.has(g))&&(u=!0);for(const g of[...this.taskBatchData])g.viewId===e&&g.workId!==void 0&&h.has(g.workId.toString())&&(g.msgType===le.CreateWork||g.msgType===le.DrawWork||g.msgType===le.RemoveNode)&&this.taskBatchData.delete(g);this.reRenders||(this.reRenders=new Map);for(const[g,y]of this.reRenders.entries()){const T=y.filter(x=>{const L=[...x.renderEraseTxnIds||[],...x.eraseTxnId!==void 0?[x.eraseTxnId]:[]].some(S=>h.has(S));return L&&this.retireRenderedImageBitmap(x),!L});T.length?this.reRenders.set(g,T):this.reRenders.delete(g)}if(u){const g=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),g==null||g(!1)}l.forEach((g,y)=>{this.internalMsgEmitter.emit("cancelUndoTicker",y,e,g)}),a.size&&([...a].forEach(y=>{this.taskBatchData.add({msgType:le.RemoveNode,workId:y,viewId:e,dataType:Re.Local,isRunSubWork:!0,scenePath:o})}),r&&c.size&&((f=this.collector)==null||f.dispatch({type:le.RemoveNode,removeIds:[...c],viewId:e,scenePath:o})),this.consume()),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:de.Pending})}timeoutLocalWorks(e,r,n,i,o){var h,d;this.invalidateTransactionBarrier(e);const a=(d=(h=this.viewContainerManager.getView(e))==null?void 0:h.displayer)==null?void 0:d.commiter,c=new Set;i&&i.forEach(f=>{const g=this.getFullLayerBitmapEraseTxns().get(f);(g==null?void 0:g.undoTickerId)!==void 0&&c.add(g.undoTickerId);const y=this.localPointsBatchData.get(f);(y==null?void 0:y.undoTickerId)!==void 0&&c.add(y.undoTickerId)});let l=[];try{l=(a==null?void 0:a.getPendingTickerSnapshots(r))||[],i&&(l=l.filter(f=>c.has(f.tickerId)))}catch(f){this.logLocalWorkBarrierError(`[Appliance]: reading pending Undo tickers failed; viewId=${e}; reason=${n}; error=${Kr(f)}`)}const u=o?`; error=${Kr(o)}`:"";this.logLocalWorkBarrierError(`[Appliance]: local work barrier failed; viewId=${e}; scenePath=${r}; reason=${n}${u}`);try{this.cancelLocalWorks(e,!1,i)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: cancelling timed-out local work failed; viewId=${e}; reason=${n}; error=${Kr(f)}`)}finally{l.forEach(f=>{try{a==null||a.cancelUndoTicker(f.tickerId,e,f.scenePath)}catch(g){this.logLocalWorkBarrierError(`[Appliance]: forcing Undo stack-end failed; viewId=${e}; tickerId=${f.tickerId}; reason=${n}; error=${Kr(g)}`)}})}}logLocalWorkBarrierError(e){var r;(r=this.Logger)==null||r.error(e)}removeDrawingWork(e){this.abortActiveLocalInput(e),this.cancelLocalWorks(e)}removeNodes(e,r){var i,o;const n=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;if(n&&r.length){for(const a of r)this.taskBatchData.add({msgType:le.RemoveNode,workId:a,viewId:e,dataType:Re.Local,isRunSubWork:!1});this.consume(),(o=this.collector)==null||o.dispatch({type:le.RemoveNode,removeIds:r,viewId:e,scenePath:n})}}hoverCursor(e,r){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===q.Selector&&!this.isViewBusy(r)){const i=this.viewContainerManager.getView(r);if(i&&i.displayer&&i.displayer.vDom){const c=i.displayer.vDom.state.floatBarData;if(c){const{x:l,y:u,w:h,h:d}=c;if(B0(e,{x:l,y:u,w:h,h:d}))return}}const o=this.viewContainerManager.transformToScenePoint(e,r),a={msgType:le.CursorHover,dataType:Re.Local,point:o,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:r};this.queryTaskBatchData({msgType:le.CursorHover,dataType:Re.Local,toolsType:this.currentToolsData.toolsType,viewId:r}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==q.Selector)return;const r={msgType:le.CursorBlur,dataType:Re.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:le.CursorHover,dataType:Re.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add(r),this.consume()}sendCursorEvent(e,r){var c,l,u;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===de.Unwritable||this.isViewBusy(r))return;const n=(c=this.currentToolsData)==null?void 0:c.toolsType;if(this.workState===de.Pending&&n===q.Selector&&(ve.isNumber(e[0])&&ve.isNumber(e[1])?this.hoverCursor(e,r):e[0]===void 0&&e[1]===void 0&&this.blurCursor(r)),!this.currentToolsData||!this.isCanSentCursor||!this.control.pluginOptions.extras.cursor.enable)return;const i=(l=this.collector)==null?void 0:l.uid,o=this.viewContainerManager.getCurScenePath(r);switch((u=this.currentToolsData)==null?void 0:u.toolsType){case q.Eraser:case q.PencilEraser:case q.BitMapEraser:{if(i&&!this.control.renderControl.isClearAble({uid:i,viewId:r,filterLocalSelf:!1,scenePath:o}))return;break}default:if(i&&!this.control.renderControl.isWritable||i&&!this.control.renderControl.isRenderAble({uid:i,viewId:r,filterLocalSelf:!1,scenePath:o}))return;break}let a=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(a=e,this.control.cursor.sendEvent(a,r))}getBoundingRect(e){var r,n;{const i=(r=this.collector)==null?void 0:r.getScenePathData(e);if(!i)return;if(Object.keys(i).forEach(o=>{var a;((a=this.collector)==null?void 0:a.getLocalId(o))===Ne&&delete i[o]}),Object.keys(i).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const o=this.viewContainerManager.mainView.id,a=this.getViewSceneRequestKey(o,e),c=(n=this.boundingRectMap)==null?void 0:n.get(a);if(c)return c.promise;const l=this.createInternalRequestId("bounding_rect");let u;const d=new Promise(g=>{u=g}).then(g=>{const y=this.boundingRectMap.get(a);return(y==null?void 0:y.requestId)===l&&(this.boundingRectMap.delete(a),this.boundingRectRequestIdByViewScene.delete(a)),g});this.boundingRectMap.set(a,{resolve:u,requestId:l,viewId:o,promise:d});const f={msgType:le.BoundingBox,dataType:Re.Local,scenePath:e,scenes:i,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:o,requestId:l};return this.boundingRectRequestIdByViewScene.set(a,f.requestId),this.taskBatchData.add(f),this.runAnimation(),d}}}getSnapshot(e,r,n,i){var o,a,c,l,u;{const h=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(e);if(!h)return;const d=this.getViewSceneRequestKey(h,e),f=(a=this.snapshotMap)==null?void 0:a.get(d);if(f)return f.promise;const g=(c=this.collector)==null?void 0:c.getStorageData(h,e);if(!g)return;if(Object.keys(g).forEach(y=>{var T;((T=this.collector)==null?void 0:T.getLocalId(y))===Ne&&delete g[y]}),Object.keys(g).length){const y=this.viewContainerManager.mainView;if(!y)return;const T=r||((l=y.cameraOpt)==null?void 0:l.width),x=n||((u=y.cameraOpt)==null?void 0:u.height),C=this.createInternalRequestId("snapshot"),L=this.control.isUseBackgroundThread?[void 0,void 0]:[void 0];let S;const m=new Promise(v=>{S=v}).then(v=>{const R=this.snapshotMap.get(d);return(R==null?void 0:R.requestId)===C&&(this.snapshotMap.delete(d),this.snapshotRequestIdByViewScene.delete(d)),v.reverse()});this.snapshotMap.set(d,{resolve:S,value:L,requestId:C,viewId:h,promise:m});const M={msgType:le.Snapshot,dataType:Re.Local,scenePath:e,scenes:g,w:T,h:x,cameraOpt:i&&{...i,width:T,height:x}||y.cameraOpt,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,viewId:h,requestId:C};return this.snapshotRequestIdByViewScene.set(d,M.requestId),this.taskBatchData.add(M),this.runAnimation(),m}}}queryTaskBatchData(e){const r=[];if(e)for(const n of this.taskBatchData.values()){let i=!0;for(const[o,a]of Object.entries(e))if(n[o]!==a){i=!1;break}i&&r.push(n)}return r}insertIconify(e,r){var a;if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertIconify viewId is not exist");if(!r.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(r.src))throw new Error("iconify src must be http or https");r.strokeColor||(r.strokeColor=(a=this.currentLocalWorkData.toolsOpt)==null?void 0:a.strokeColor);const o=n==null?void 0:n.focusScenePath;if(e&&o){const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[r.uuid],o);const l={...r,type:Sn.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:q.Image,workId:r.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}insertBackgroundSVG(e,r){if(!this.control.canAcceptLocalMutation(e))return;if(!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertBackgroundSVG viewId is not exist");if(!r.src)throw new Error("src must be required");if(r.src&&!/^(http|https):\/\//.test(r.src))throw new Error("iconify src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const o=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",o,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",o,e,[r.uuid],i);const a={...r,locked:r.locked??!0,type:ks.url};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),a.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:q.BackgroundSVG,workId:r.uuid,opt:a,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:o,isRunBackgroundThread:!0,scenePath:i}),this.runAnimation()}}async insertBackgroundMarkMap(e,r){var o;if(!this.control.canAcceptLocalMutation(e))return;if(this.assertMarkmapRuntimeRegistered("insertBackgroundMarkMap",e),!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("instertBackgroundMarkMap viewId is not exist");if(!r.data)throw new Error("data must be required");if(r.data&&!$0e(r.data))throw new Error("data must be markdown string");const i=n==null?void 0:n.focusScenePath;if(e&&i){const a=r.uuid.toString();if((o=this.collector)!=null&&o.hasId(e,i,a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[a],i);const l={...r,locked:r.locked??!0,type:ks.markmap};return this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:q.BackgroundSVG,workId:a,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c,isRunBackgroundThread:!0}),this.runAnimation(),new Promise((u,h)=>{this.markmapIdResolveMap.set(a,{resolve:u,timer:setTimeout(()=>{const d=this.markmapIdResolveMap.get(a);d!=null&&d.timer&&(d.timer=void 0),h(a)},this.control.pluginOptions.extras.markmap.timeout)})}).then(u=>{if(u)return this.markmapIdResolveMap.delete(u),u}).catch(u=>{throw this.markmapIdResolveMap.delete(u),tt.InternalMsgEmitter.emit("ackRenderUndoTicker",c,e,i),tt.InternalMsgEmitter.emit("ackStorageUndoTicker",c,e,i),new Error(`instertBackgroundMarkMap svgInfo.uuid ${u} insert timeout`)})}}async updateBackgroundMarkMap(e,r,n){var l;if(!this.control.canAcceptLocalMutation(e))return;this.assertMarkmapRuntimeRegistered("updateBackgroundMarkMap",e);const i=this.viewContainerManager.getView(e);if(!i)throw new Error("updateBackgroundMarkMap viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(!o)throw new Error("updateBackgroundMarkMap scenePath is not exist");if((l=this.collector)!=null&&l.hasId(e,o,r))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(r))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const a=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",a,e,[r],o);const c={...n,type:ks.markmap};this.taskBatchData.add({msgType:le.UpdateNode,dataType:Re.Local,toolsType:q.BackgroundSVG,workId:r,opt:c,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:a,isRunBackgroundThread:!0}),this.runAnimation()}insertImage(e,r){if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertImage viewId is not exist");if(r.src&&!/^(http|https):\/\//.test(r.src))throw new Error("Image src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const{src:o,uuid:a}=r;if(a&&!o){this.tmpImageConfigMap.set(a,r);return}const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncImage});const l={...r,type:Sn.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:q.Image,workId:r.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[r.uuid],i)}}lockImage(e,r,n){var a,c;if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o&&this.collector){const l=this.collector.getStorageData(e,o);if(!l)return;for(const[u,h]of Object.entries(l))if(h&&h.toolsType===q.Image&&h.opt.uuid===r){const d=this.now,f=(a=this.collector)!=null&&a.isOwn(u)?(c=this.collector)==null?void 0:c.getLocalId(u):u;tt.InternalMsgEmitter.emit("addUndoTicker",d,e,{render:!0,storage:!0,source:$e.AsyncImage});const g={...h.opt,locked:n,type:Sn.Image};this.taskBatchData.add({msgType:le.FullWork,dataType:Re.Local,toolsType:q.Image,workId:f,opt:g,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:d}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",d,e,[f],o);return}}}completeImageUpload(e,r,n){if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o){const a=this.tmpImageConfigMap.get(r);a&&(a.src=n,this.insertImage(e,a),this.tmpImageConfigMap.delete(r));return}}getImagesInformation(e){const r=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return r;for(const i of Object.values(n))if(i&&i.toolsType===q.Image){const o=i.opt;r.push({uuid:o.uuid,centerX:o.centerX,centerY:o.centerY,width:o.width,height:o.height,locked:o.locked,uniformScale:o.uniformScale,crossOrigin:o.crossOrigin})}}return r}setShapeSelectorByWorkId(e,r){this.taskBatchData.add({workId:Ne,selectIds:[e],msgType:le.Select,dataType:Re.Local,viewId:r,willSyncService:!0}),this.runAnimation()}blurSelector(e,r,n){this.taskBatchData.add({workId:n||Ne,selectIds:[],msgType:le.Select,dataType:Re.Service,viewId:e,scenePath:r}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:le.Console,dataType:Re.Local,isRunSubWork:!0,viewId:""}),this.consume()}sendClearUids(e,r){var i,o;const n=new Set;if(n.add({msgType:le.AuthClear,dataType:Re.Local,viewId:e,clearUids:r,localUid:(i=this.collector)==null?void 0:i.uid}),this.control.hasOffscreenCanvas)this.fullWorker.postMessage(n);else{const a=(o=this.mainThread)==null?void 0:o.consume(n);a==null||a.catch(c=>{this.logLocalWorkBarrierError(`[Appliance]: AuthClear delivery failed; viewId=${e}; error=${c instanceof Error?c.message:String(c)}`)})}}async getVNodeInfo(e,r,n){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:le.GetVNodeInfo,dataType:Re.Local,isRunSubWork:!0,viewId:r,workIds:n,workId:e}),this.consume(),await new Promise(i=>{const o=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};o.timer&&clearTimeout(o.timer),o.resolve=i,o.timer=setTimeout(()=>{const a=this.getVNodeInfoResolveMap.get(e);a!=null&&a.resolve&&a.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,o)}).then(i=>{const{uuid:o}=i;return this.getVNodeInfoResolveMap.delete(o),i})}}class Ewe{constructor(t){E(this,"internalMsgEmitter");E(this,"control");E(this,"roomHotkeyCheckers");E(this,"tmpCopyStore",new Map);E(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var t,e;return((e=(t=this.control)==null?void 0:t.room)==null?void 0:e.disableDeviceInputs)||!1}get isSelector(){var t;return((t=this.control.worker.currentToolsData)==null?void 0:t.toolsType)===q.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(t){switch(t.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(t){var n,i,o;const e=this.control.viewContainerManager.focuedViewId,r=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&r)switch(t){case"delete":this.isSelector&&((i=this.collector)!=null&&i.hasSelector(e,r))&&Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Ne],viewId:e});break;case"copy":this.isSelector&&((o=this.collector)!=null&&o.hasSelector(e,r))&&this.copySelectorToTemp(e,r);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,r);break}(t==="changeToPencil"||t==="redo"||t==="undo")&&this.onSelfActiveHotkey(t)}colloctHotkey(t){if(this.isUseSelf){const e=this.checkHotkey(t);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(t){switch(t){case"changeToPencil":this.setMemberState({currentApplianceName:Le.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:Le.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:Le.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:Le.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:Le.eraser});break;case"changeToHand":this.setMemberState({currentApplianceName:Le.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:Le.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:Le.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:Le.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:Le.straight});break;case"redo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.redo();break;case"undo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.undo();break;case"changeToText":this.setMemberState({currentApplianceName:Le.text});break;case"changeToPencilEraser":this.setMemberState({currentApplianceName:Le.pencilEraser});break;case"delete":case"copy":case"paste":this.onActiveHotkey(t);break}}checkHotkey(t){for(const e of this.roomHotkeyCheckers){const{kind:r,checker:n}=e;if(n({nativeEvent:t,kind:this.getEventKey(t),key:t.key,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey},this.keyboardKind))return r}}copySelectorToTemp(t,e){var l,u;const r=this.control.viewContainerManager.getView(t),n=(u=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:u.getBuilder(Te.CopyNode);if(!r||!this.collector||!n)return;const i=this.collector.transformKey(Ne),o=this.collector.getStorageData(t,e);if(!o)return;const a=o[i],c=a&&n.copySelector({viewId:t,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(t,e){var i,o;const r=this.control.viewContainerManager.getView(t),n=(o=(i=this.mainEngine)==null?void 0:i.methodBuilder)==null?void 0:o.getBuilder(Te.CopyNode);if(!(!r||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&r.viewData&&this.tmpCopyCoordInfo){const a=ve.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=r.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const u=this.control.worker.now;this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,t,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncPasteNode}),n.pasteSelector({viewId:t,scenePath:e,copyStores:ve.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:u})}}setMemberState(t){var e;(e=this.control.room)==null||e.setMemberState(t)}}const Yp=50;function xwe(s){if("diffType"in s){if(s.diffType==="view")return`view:${s.viewId}`;if(s.diffType==="scenePath")return`scenePath:${s.viewId}:${s.scenePath}`}return`data:${s.key}:${s.type??""}:${s.toolsType??""}`}class Rwe{constructor(t,e){E(this,"batches",new Map);this.logger=t,this.batchWindowMs=e}append(t,e,r,n){if(!n.length)return;const i=`${t}:${e}:${r}`;let o=this.batches.get(i);o||(o={items:[],indexByIdentity:new Map,flushTimer:setTimeout(()=>this.flush(i),this.batchWindowMs)},this.batches.set(i,o));const a=Date.now();for(const c of n){const l=xwe(c),u=o.indexByIdentity.get(l);u!==void 0?o.items[u]={timestamp:a,item:c}:(o.indexByIdentity.set(l,o.items.length),o.items.push({timestamp:a,item:c}))}}flush(t){const e=this.batches.get(t);if(!e)return;clearTimeout(e.flushTimer),this.batches.delete(t);const[r,n,...i]=t.split(":"),o=i.join(":"),a=o?` viewId=${n} scenePath=${o}`:` viewId=${n} scope=view`;for(let c=0;c<e.items.length;c+=Yp){const u=e.items.slice(c,c+Yp).map(({timestamp:h,item:d})=>"diffType"in d&&d.diffType!=="data"?{timestamp:h,...d}:`${d.key},${d.type??""},${d.toolsType??""},${h}`);this.logger.info(`[Appliance]: [sync-data] source=${r}${a} changesLength=${u.length} changes=${JSON.stringify(u)}`)}}destroy(){this.clearPending()}clearPending(){for(const t of this.batches.values())clearTimeout(t.flushTimer);this.batches.clear()}}const Gp=3,Awe="__APPLIANCE_PLUGIN_RENDER_MODE_DB",Oi="renderModes",kwe="appliance-plugin-render-runtime",Sd=1500,Td=1500;function Pwe(s){return gM.hash(s)}function Cd(){return globalThis.indexedDB}const Hp=new WeakSet;function Dwe(s){if(!(typeof s!="object"||s===null)&&!Hp.has(s)&&(Hp.add(s),!!s.deleteDatabase))try{const t=s.deleteDatabase(kwe),e=()=>{t.onerror=null,t.onsuccess=null,t.onblocked=null};t.onerror=e,t.onsuccess=e,t.onblocked=e}catch{}}function Id(s,t){return Dwe(s),new Promise((e,r)=>{const n=s.open(Awe,Gp);let i=!1;const o=()=>{n.onerror=null,n.onsuccess=null,n.onupgradeneeded=null,n.onblocked=null},a=(l,u=!1)=>{i||(i=!0,clearTimeout(c),u?n.onblocked=null:o(),r(l))},c=setTimeout(()=>{a(new Error("render runtime cache open timeout"),!0)},t);n.onerror=()=>{if(i){o();return}a(n.error||new Error("render runtime cache open failed"))},n.onblocked=()=>{a(new Error("render runtime cache open blocked"),!0)},n.onupgradeneeded=l=>{var u;try{const h=l.oldVersion||0;h>0&&h<Gp&&n.result.objectStoreNames.contains(Oi)&&n.result.deleteObjectStore(Oi),n.result.objectStoreNames.contains(Oi)||n.result.createObjectStore(Oi)}catch(h){try{(u=n.transaction)==null||u.abort()}catch{}a(h instanceof Error?h:new Error(`render runtime cache upgrade failed: ${String(h)}`),!0)}},n.onsuccess=()=>{const l=n.result;if(i){l.close(),o();return}i=!0,clearTimeout(c),o(),e(l)}})}function bd(s,t,e,r){return new Promise((n,i)=>{let o,a;try{o=s.transaction(Oi,t),a=e(o.objectStore(Oi))}catch(d){i(d);return}let c=!1;const l=()=>{clearTimeout(h),a.onsuccess=null,a.onerror=null,o.oncomplete=null,o.onabort=null,o.onerror=null},u=(d,f=!1)=>{if(!c){if(c=!0,l(),f)try{o.abort()}catch{}i(d instanceof Error?d:new Error(`render runtime cache request failed: ${String(d)}`))}},h=setTimeout(()=>{u(new Error("render runtime cache operation timeout"),!0)},r);a.onsuccess=()=>{},a.onerror=()=>u(a.error||new Error("render runtime cache request failed")),o.onabort=()=>u(o.error||new Error("render runtime cache transaction aborted")),o.onerror=()=>u(o.error||new Error("render runtime cache transaction failed")),o.oncomplete=()=>{if(c)return;c=!0;let d;try{d=a.result}catch(f){l(),i(f);return}l(),n(d)}})}async function Lwe(s,t=Cd(),e={}){if(!t)return{reason:"indexeddb-unavailable"};const r=e.timeoutMs??Td;let n;try{n=await Id(t,e.timeoutMs??Sd)}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}try{const i=await bd(n,"readonly",o=>o.get(s),r);return i===void 0?{reason:"miss"}:W0(i)?{renderModel:i}:{reason:"invalid-render-model"}}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}finally{n.close()}}async function Nwe(s,t,e=Cd(),r={}){if(!e||!W0(t))return!1;const n=r.timeoutMs??Td;let i;try{i=await Id(e,r.timeoutMs??Sd)}catch{return!1}try{return await bd(i,"readwrite",o=>o.put(t,s),n),!0}catch{return!1}finally{i.close()}}async function Owe(s,t=Cd(),e={}){if(!t)return!1;const r=e.timeoutMs??Td;let n;try{n=await Id(t,e.timeoutMs??Sd)}catch{return!1}try{return await bd(n,"readwrite",i=>i.delete(s),r),!0}catch{return!1}finally{n.close()}}class zwe{constructor(t){E(this,"control");E(this,"roomMemberManager");E(this,"worker");E(this,"publicMsgEmitter");E(this,"renderUids",new Map);E(this,"pageAuth",new Map);E(this,"isLocalRender",!1);E(this,"isCurWritable",!1);var n;const{control:e,publicMsgEmitter:r}=t;this.control=e,this.publicMsgEmitter=r,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((n=this.control.room)==null?void 0:n.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(t){this.isCurWritable=t}addPage(t,e=!0){var l,u;const{viewId:r,render:n="localSelf",elementIds:i,pageId:o=(l=this.control.collector)==null?void 0:l.uid}=t,a=this.pageAuth.get(r)||new Map,c=this.control.viewContainerManager.getCurScenePath(r);if(c&&o){const h=a.get(c)||{render:"localSelf",pages:new Map};e&&(h.render=n);const d=i&&this.cloneElementIds(r,c,i,o)||new Set;h.pages.set(o,d),a.set(c,h),this.pageAuth.set(r,a),e&&this.pageAuthEffect(r),this.isLocalRender=!1,(u=this.control.collector)==null||u.dispatchPageAuth({operation:wt.addPage,viewId:r,scenePath:c,pageId:o,pageData:{render:n,elementIds:d}},!0)}}delPage(t,e){var o,a;const r=this.pageAuth.get(e);if(!r)return;const n=[...r.keys()].find(c=>{const l=r.get(c);return!!(l&&l.pages.has(t))});if(!n)return;const i=r.get(n);if(i){const{render:c,pages:l}=i,u=c==="localSelf"?(o=this.control.collector)==null?void 0:o.uid:c,h=l.get(t);h!=null&&h.size&&this.delElementIds(e,n,h),l.delete(t),u===t&&this.pageAuthEffect(e)}(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.deletePage,viewId:e,scenePath:n,pageId:t},!0)}delViewPage(t,e=!0){var n;this.pageAuth.get(t)&&(this.pageAuth.delete(t),e&&((n=this.control.collector)==null||n.dispatchPageAuth({operation:wt.clearView,viewId:t},e)))}clearRenderPage(t,e,r=!0){var a,c;const n=this.pageAuth.get(t);if(!n)return;const i=n.get(e);let o;if(i){const{render:l,pages:u}=i,h=l==="localSelf"?(a=this.control.collector)==null?void 0:a.uid:l;if(h){if(r){const d=u.get(h);d&&this.delElementIds(t,e,d)}u.set(h,new Set),o=h}}r&&o&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:wt.clearPage,viewId:t,scenePath:e,pageId:o},r))}hasPage(t,e,r){const n=this.pageAuth.get(e);if(!n)return!1;const i=n.get(r);return i?i.pages.has(t):!1}getPageInfo(t,e,r){const n=this.pageAuth.get(e);if(!n)return;const i=n.get(r);if(i)return i.pages.get(t)}addRenderPageElementId(t,e=!0,r=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=t,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g)||new Set;y.add(i),f.set(g,y),l=g}}r&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.addElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}delRenderPageElementId(t,e=!0,r=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=t,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g);y&&(y.delete(i),f.set(g,y),l=g)}}r&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.deleteElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}setPageRender(t,e,r,n=!0){var a;const i=this.pageAuth.get(t);if(!i)throw new Error(`no view info in viewId: ${t}`);const o=i.get(e);o&&(o.render=r),e===this.control.viewContainerManager.getCurScenePath(t)&&this.pageAuthEffect(t),n||(this.isLocalRender=!0),n&&(this.isLocalRender=!1,(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.renderPage,viewId:t,scenePath:e,pageData:{render:r}},n))}isRenderAble(t){var c,l;const{uid:e,viewId:r,filterLocalSelf:n=!0,scenePath:i}=t,o=this.renderUids.get(r);if(o){const{render:u,hide:h}=o;if(u===void 0&&h===void 0)return!0;if(ve.isSet(u)){if(u.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&u.has("localSelf"))return!0}else if(u===!0&&(!h||ve.isSet(h)&&!h.has(e)&&!(n&&h.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const a=this.pageAuth.get(r);if(a&&i){const u=a.get(i);if(u){const{render:h}=u;if(h)return!(h==="localSelf"&&!n)}}return!0}isClearAble(t){var c;const{uid:e,viewId:r,filterLocalSelf:n=!0,scenePath:i}=t,o=this.renderUids.get(r);if(o){const{clear:l}=o;return!!(l===void 0||l===!0||ve.isSet(l)&&(l.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const a=this.pageAuth.get(r);if(a&&i){const l=a.get(i);if(l){const{render:u}=l;if(u)return!(u==="localSelf"&&!n)}}return!0}isFilterAble(t,e){var c,l,u,h;const{viewId:r,scenePath:n,elementId:i}=t,o=this.renderUids.get(r);if(o&&i){const{render:d,hide:f}=o;if(d===void 0&&f===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(i);return g?!!(ve.isSet(d)&&(d.has(g)||d.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||d===!0&&(!f||ve.isSet(f)&&!f.has(g)&&!(f.has("localSelf")&&((u=this.control.collector)==null?void 0:u.uid)===g))):!1}const a=this.pageAuth.get(r);if(a&&n&&i){const d=a.get(n);if(d){const{render:f,pages:g}=d;if(!f)return!0;const y=(h=this.control.collector)==null?void 0:h.uid,T=f==="localSelf"?y:f,x=T&&g.get(T)||void 0;if(x)switch(e){case le.RemoveNode:return!0;default:return x.has(i)}return!1}}return!0}isFilterCursor(t){if(this.isUsePageAuth(t)){const e=this.control.viewContainerManager.getCurScenePath(t),r=this.pageAuth.get(t);if(e&&r){const n=r.get(e);if(n){const{render:i}=n;return i!=="localSelf"}}}return!0}isUsePageAuth(t){var n;if(!this.pageAuth.has(t))return!1;const r=this.control.viewContainerManager.getCurScenePath(t);return r&&((n=this.pageAuth.get(t))==null?void 0:n.has(r))||!1}publishRender(t){var o;const{viewId:e,option:r,isSync:n=!0}=t,i={};if(r){const{render:a,hide:c,clear:l}=r;a&&(i.render=a===!0&&!0||new Set(a)),c&&(i.hide=c===!0&&!0||new Set(c)),l&&(i.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,i)}else this.renderUids.delete(e);n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:Mr.setAuth,viewId:e,renderData:i},n)),this.renderEffect(e)}publishOneRender(t,e,r,n=!0){var a;const i=this.renderUids.get(t);let o;switch(r){case"show":i?(i.render||(i.render=new Set),ve.isSet(i.render)&&i.render.add(e),ve.isSet(i.hide)&&i.hide.delete(e)):this.renderUids.set(t,{render:new Set([e])}),o=Mr.setShow;break;case"hide":i?(i.hide||(i.hide=new Set),ve.isSet(i.hide)&&i.hide.add(e),ve.isSet(i.render)&&i.render.delete(e)):this.renderUids.set(t,{hide:new Set([e])}),o=Mr.setHide;break}i?this.renderUids.set(t,i):this.renderUids.delete(t),n&&o&&((a=this.control.collector)==null||a.dispatchRenderAuth({operation:o,viewId:t,uid:e},n)),this.renderEffect(t)}publishOneClear(t,e,r,n=!0){var o;const i=this.renderUids.get(t);r?i?(i.clear||(i.clear=new Set),ve.isSet(i.clear)&&i.clear.add(e)):this.renderUids.set(t,{clear:new Set([e])}):i&&ve.isSet(i.clear)&&i.clear.has(e)&&i.clear.delete(e),i?this.renderUids.set(t,i):this.renderUids.delete(t),n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:Mr.setClear,viewId:t,uid:e,isClear:r},n)),this.renderEffect(t)}syncRenderUids(t,e,r,n){const i=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,o=r===!0?!0:r&&Object.keys(r)?new Set(Object.keys(r)):void 0,a=n===!0?!0:n&&Object.keys(n)?new Set(Object.keys(n)):void 0;i||o||a?this.renderUids.set(t,{render:i,hide:o,clear:a}):this.renderUids.delete(t),this.renderEffect(t),this.publicMsgEmitter.emit("syncRenderUids",t,{render:i,hide:o,clear:a})}syncPageAuth(t,e,r=!1){let n=!1;if(!e)this.pageAuth.delete(t);else{const i=this.pageAuth.get(t)||new Map;for(const[o,a]of Object.entries(e)){const{render:c,pages:l}=a,u=i.get(o),h=this.isLocalRender?u==null?void 0:u.render:c;if(h){h!==(u==null?void 0:u.render)&&(n=!0);const d=new Map;for(const[g,y]of Object.entries(l))d.set(g,new Set(Object.keys(y)));const f={render:h,pages:d};d.size&&i.set(o,f)}}i.size&&(this.pageAuth.set(t,i),this.publicMsgEmitter.emit("syncPageAuth",t,i))}(r||n)&&this.pageAuthEffect(t)}destoryByViewId(t,e=!1){var r;this.renderUids.has(t)&&(this.renderUids.delete(t),e||(r=this.control.collector)==null||r.dispatchRenderAuth({operation:Mr.setAuth,viewId:t})),this.pageAuth.has(t)&&this.control.renderControl.delViewPage(t,!e)}renderEffect(t){var r;const e=(r=this.control.viewContainerManager.getView(t))==null?void 0:r.focusScenePath;e&&this.worker.clearViewScenePath(t,!0).then(()=>{var n;this.worker.pullServiceData(t,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(t,(n=this.renderUids.get(t))==null?void 0:n.clear)})}pageAuthEffect(t){var r;const e=(r=this.control.viewContainerManager.getView(t))==null?void 0:r.focusScenePath;e&&this.worker.clearViewScenePath(t,!0).then(()=>{this.worker.pullServiceData(t,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(t,!0)})}cloneElementIds(t,e,r,n){var a,c;const i=(a=this.control.collector)==null?void 0:a.getStorageData(t,e),o=new Set;if(i){for(const l of Object.keys(i))if(r.has(l)){const u=`${l}_${n}`;if(o.add(u),!Object.keys(i).includes(u)){const h=ve.cloneDeep(i[l]);(c=this.control.collector)==null||c.updateValue(u,{type:le.FullWork,...h,workId:u},{isSync:!0,viewId:t,scenePath:e})}}}return o}delElementIds(t,e,r){var i,o;const n=(i=this.control.collector)==null?void 0:i.getStorageData(t,e);if(n)for(const a of Object.keys(n))r.has(a)&&Object.keys(n).includes(a)&&((o=this.control.collector)==null||o.updateValue(a,void 0,{isSync:!0,viewId:t,scenePath:e}))}}class Bwe{constructor(t){E(this,"internalMsgEmitter");E(this,"control");E(this,"maps",new Map);E(this,"showId");E(this,"color");E(this,"timer");E(this,"updateMiniMapCamera",ve.debounce(async t=>{const e=this.maps.get(t);if(e){const r=await this.getMiniMapCamera(t);if(r){const n=r.width/r.scale,i=r.height/r.scale,o=e.miniMapCamera.width/e.miniMapCamera.scale,a=e.miniMapCamera.height/e.miniMapCamera.scale;(n>=o||i>=a)&&(e.miniMapCamera=r);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const u=this.control.viewContainerManager.getView(t);if(!(u!=null&&u.focusScenePath))return;const{miniMapCamera:h,contianer:d}=e,{width:f,height:g}=d.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height);l.clearRect(0,0,c.width,c.height),c.width=h.width,c.height=h.height,c.style.width=`${h.width*y}px`,c.style.height=`${h.height*y}px`,await this.control.screenshotToCanvas(l,u.focusScenePath,h.width,h.height,h),this.listener.emitAsync([t,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var n;const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.color=((n=this.control.worker.currentToolsData)==null?void 0:n.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(t){this.color=t}async createMiniMap(t,e,r){const n=this.control.viewContainerManager.getView(t);if(!n)throw new Error("view not found");const i=n.cameraOpt;if(!i)throw new Error("view camera not found");const{width:o,height:a}=e.getBoundingClientRect();if(!o||!a)throw new Error("contianer width or height is 0");const c=H.createRef();this.maps.set(t,{contianer:e,miniMapCanvas:c,miniMapCamera:r,viewCamera:i}),this.showId=t,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(o/r.width,a/r.height),u=await new Promise(h=>{this.listener.once([t,"miniMapCreate"],()=>{const d=c.current;d&&(d.width=r.width,d.height=r.height,d.style.width=`${r.width*l}px`,d.style.height=`${r.height*l}px`),h(!0)}),this.timer=setTimeout(()=>{h(!1)},2e3)});return this.timer&&clearTimeout(this.timer),u}async getMiniMapCamera(t){const e=this.control.viewContainerManager.getView(t);if(!e)return;const{cameraOpt:r,focusScenePath:n}=e;if(!r||!n)return;const i={originX:r.centerX-r.width/r.scale/2,originY:r.centerY-r.height/r.scale/2,width:r.width/r.scale,height:r.height/r.scale};let o=await this.control.getBoundingRect(n)||i;o=fd(o,i)||i;let a=o.width,c=o.height,l=1;const u=a>r.width&&Math.min(r.width/a,l)||l,h=c>r.height&&Math.min(r.height/c,l)||l;return u<=h?(a=u<1&&r.width||a,c=Math.floor(c*u)+1,l=u):u>h&&(c=h<1&&r.height||c,a=Math.floor(a*h)+1,l=h),{scale:l,centerX:o.originX+o.width/2,centerY:o.originY+o.height/2,width:a,height:c}}getMiniMapCanvas(t){const e=this.maps.get(t);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(t,e){const r=this.maps.get(t);r&&(r.viewCamera=e,this.listener.emitAsync([t,"viewCameraUpate"],1))}destroyMiniMap(t){const e=t||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}class jwe{constructor(){E(this,"control");E(this,"_listeners",{})}_inject(t){this.control=t}_onEvent(t,e){this._listeners[t]&&this._listeners[t](...e)}callbacks(t,e){this._listeners[t]=e}removeCallback(t){delete this._listeners[t]}}class Fwe{constructor(t){E(this,"control");E(this,"worker");E(this,"publicMsgEmitter");E(this,"plugins",new Map);const{control:e,publicMsgEmitter:r}=t;this.control=e,this.publicMsgEmitter=r,this.worker=e.worker}use(t){this.plugins.set(t.kind,t),t._inject(this.control),t.onCreate()}destroy(){this.plugins.forEach(t=>{this.plugins.delete(t.kind),t.onDestroy()})}dispatchPluginEvent(t,...e){this.plugins.forEach(r=>{r._onEvent(t,e)})}}const Ge="[Appliance]: [selector]",Uwe=["bold","normal"],Wwe=["italic","normal"],Vwe=["top","left","right","bottom","topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"];class $we{constructor(t){E(this,"control");E(this,"logger");E(this,"lastSelectedIdsByView",new Map);E(this,"lastViewRectByView",new Map);E(this,"updateResolveMap",new Map);E(this,"clearResolveMap",new Map);E(this,"copyResolveMap",new Map);E(this,"deleteResolveMap",new Map);E(this,"lastRemoteSelectorByView",new Map);E(this,"cameraEmitThrottleByView",new Map);E(this,"pendingCameraChangeByView",new Map);E(this,"pendingPropertyGeometryByKey",new Map);E(this,"publicStorageHandler");E(this,"onUndoAckApplied",t=>{var a,c;const{viewId:e,scenePath:r,requestId:n,emitEventType:i}=t;if(!n)return;const o=this.copyResolveMap.get(n);!o||o.viewId!==e||i===Te.CopyNode&&(this.copyResolveMap.delete(n),o.timer&&clearTimeout(o.timer),(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,`${Ge} copySelectedElements done requestId=${n} viewId=${e} scenePath=${r} sourceCount=${o.sourceSelectedIds.length}`),o.resolve({ok:!0,requestId:n,sourceSelectedIds:o.sourceSelectedIds,createdIds:[]}))});this.control=t,this.logger=t.logger,this.bindPublicStorageListener(),this.control.internalMsgEmitter.on("undoAckApplied",this.onUndoAckApplied)}canAcceptLocalMutation(t){const e=this.control.canAcceptLocalMutation;return typeof e!="function"||e.call(this.control,t)}formatFieldsFromChanges(t){return Ms(t).join("/")||"-"}hasShapeChanges(t){var e,r,n,i;return((e=t.shape)==null?void 0:e.vertices)!==void 0||((r=t.shape)==null?void 0:r.innerVerticeStep)!==void 0||((n=t.shape)==null?void 0:n.innerRatio)!==void 0||((i=t.shape)==null?void 0:i.placement)!==void 0}resolveShapeDispatchToolsTypes(t,e,r,n){if(!this.hasShapeChanges(n))return[];const i=Ms(n).filter(a=>a.startsWith("shape.")),o=[];return r.forEach(a=>{const c=this.lookupToolsType(t,e,a);c&&(!n.toolsType||c===n.toolsType)&&i.some(l=>Ni(c,l))&&!o.includes(c)&&o.push(c)}),o}cancelUndoTicker(t,e,r){var i,o,a;if(!t)return;const n=r||((i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e));n&&((a=(o=this.control.worker)==null?void 0:o.internalMsgEmitter)==null||a.emit("cancelUndoTicker",t,e,n))}resolveCancelableUndoTickerId(t,e){var r,n;return t??((n=(r=this.control.viewContainerManager)==null?void 0:r.getUndoTickerId)==null?void 0:n.call(r,e))}captureUndoTickerDuringDispatch(t){var n,i;let e;const r=(o,a)=>{a===t&&e===void 0&&(e=o)};return(i=(n=this.control.internalMsgEmitter)==null?void 0:n.on)==null||i.call(n,"addUndoTicker",r),{getUndoTickerId:()=>e,dispose:()=>{var o,a;(a=(o=this.control.internalMsgEmitter)==null?void 0:o.off)==null||a.call(o,"addUndoTicker",r)}}}destroy(){for(const[,t]of this.updateResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({requestId:"",ok:!1,viewId:t.viewId,reason:"busy",selectedIds:t.selectedIds,skippedIds:t.skippedIds.length?t.skippedIds:void 0,warnings:t.warnings.length?t.warnings:void 0,geometryChanged:t.geometryChanged});this.updateResolveMap.clear();for(const[,t]of this.clearResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.clearResolveMap.clear();for(const[,t]of this.copyResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.copyResolveMap.clear();for(const[,t]of this.deleteResolveMap)t.timer&&clearTimeout(t.timer),t.resolve({ok:!1,requestId:"",reason:"busy"});this.deleteResolveMap.clear();for(const[,t]of this.pendingPropertyGeometryByKey)t.timer&&clearTimeout(t.timer);this.pendingPropertyGeometryByKey.clear(),this.control.internalMsgEmitter.off("undoAckApplied",this.onUndoAckApplied),this.unbindPublicStorageListener()}disposeView(t){var r;for(const[n,i]of this.updateResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({requestId:"",ok:!1,viewId:t,reason:"busy",selectedIds:i.selectedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}),this.updateResolveMap.delete(n));for(const[n,i]of this.clearResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.clearResolveMap.delete(n));for(const[n,i]of this.copyResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.copyResolveMap.delete(n));for(const[n,i]of this.deleteResolveMap)i.viewId===t&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.deleteResolveMap.delete(n));const e=this.cameraEmitThrottleByView.get(t);(r=e==null?void 0:e.cancel)==null||r.call(e),this.cameraEmitThrottleByView.delete(t),this.clearPendingCameraChange(t),this.lastSelectedIdsByView.delete(t),this.lastViewRectByView.delete(t),this.lastRemoteSelectorByView.delete(t);for(const[n,i]of this.pendingPropertyGeometryByKey)i.viewId===t&&(i.timer&&clearTimeout(i.timer),this.pendingPropertyGeometryByKey.delete(n))}resolveViewId(t){const e=this.control.viewContainerManager;return t||(e==null?void 0:e.focuedViewId)||Fe}getSelectedElements(t){var u,h,d;const e=this.resolveViewId(t);if(!e)return;const r=this.control.viewContainerManager,n=r==null?void 0:r.getView(e);if(!n)return;const i=(d=(h=(u=n.displayer)==null?void 0:u.vDom)==null?void 0:h.state)==null?void 0:d.floatBarData,o=(i==null?void 0:i.selectIds)??[],a=i&&ve.isNumber(i.x)&&ve.isNumber(i.y)&&ve.isNumber(i.w)&&ve.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,c=n.focusScenePath,l=[];for(const f of o){const g=this.buildSelectedElementInfo(e,c,f,i);g&&l.push(g)}return{viewId:e,scenePath:c,viewRect:a,selectedIds:o,selectedElements:l}}isElementPropertySupported(t,e){return Ni(t,e)}async blurSelector(t){var c,l,u,h,d,f,g,y,T;const e=this.genRequestId("clear"),r=this.resolveViewId(t);if(!r)return(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} blurSelector rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(h=(u=this.logger)==null?void 0:u.warn)==null||h.call(u,`${Ge} blurSelector rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);if(o)return(f=(d=this.logger)==null?void 0:d.warn)==null||f.call(d,`${Ge} blurSelector rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o};(y=(g=this.logger)==null?void 0:g.info)==null||y.call(g,`${Ge} blurSelector request requestId=${e} viewId=${r} selectedCount=${i.length}`);const a=(n==null?void 0:n.scenePath)||((T=this.control.viewContainerManager)==null?void 0:T.getCurScenePath(r));return new Promise(x=>{var L,S,p;const C=setTimeout(()=>{var m,M;this.clearResolveMap.has(e)&&(this.clearResolveMap.delete(e),(M=(m=this.logger)==null?void 0:m.warn)==null||M.call(m,`${Ge} blurSelector timeout requestId=${e} viewId=${r}`),x({ok:!1,requestId:e,reason:"busy"}))},5e3);this.clearResolveMap.set(e,{timer:C,resolve:x,viewId:r});try{(L=this.control.worker)==null||L.blurSelector(r,a||"",Ne)}catch(m){this.clearResolveMap.delete(e),clearTimeout(C),(p=(S=this.logger)==null?void 0:S.error)==null||p.call(S,`${Ge} blurSelector failed requestId=${e} viewId=${r} err=${m==null?void 0:m.message}`),x({ok:!1,requestId:e,reason:"busy"})}})}async updateSelectedElements(t,e){var x,C,L,S,p,m,M,v,R,b,P,D,z,j;const r=this.genRequestId("update"),n=this.resolveViewId(t),i=e||{};if(!n)return(C=(x=this.logger)==null?void 0:x.warn)==null||C.call(x,`${Ge} updateSelectedElements rejected: no-view requestId=${r}`),{requestId:r,viewId:"",ok:!1,reason:"no-selection"};if(!this.canAcceptLocalMutation(n))return{requestId:r,viewId:n,ok:!1,reason:"busy"};const o=this.getSelectedElements(n),a=(o==null?void 0:o.selectedIds)??[];if(!a.length)return(S=(L=this.logger)==null?void 0:L.warn)==null||S.call(L,`${Ge} updateSelectedElements rejected: no-selection requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"no-selection",selectedIds:a};const c=this.detectSelectorTransforming(n);if(c)return(m=(p=this.logger)==null?void 0:p.warn)==null||m.call(p,`${Ge} updateSelectedElements rejected: ${c} requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:c,selectedIds:a};if(!Object.keys(i).some(k=>i[k]!==void 0))return(v=(M=this.logger)==null?void 0:M.warn)==null||v.call(M,`${Ge} updateSelectedElements rejected: unsupported-change requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a};const u=[],h=[],d=[];let f={...i};for(const k of a){const A=this.lookupToolsType(n,o==null?void 0:o.scenePath,k);if(!A){h.push(k);continue}const N=this.validateStrokeTypeForChanges(k,f,A,u);N.strokeType!==f.strokeType&&(f=N)}if(f.strokeType!==void 0){const k=a.map(N=>this.lookupToolsType(n,o==null?void 0:o.scenePath,N)).filter(N=>!!N&&Ni(N,"strokeType"));k.length>0?f.strokeType===Be.Stroke&&(k.every(W=>W===q.Pencil)||(delete f.strokeType,u.push({id:a.join(","),field:"strokeType",code:"unsupported-by-toolsType",message:"strokeType=Stroke requires all strokeType-capable selected elements to be Pencil"}))):delete f.strokeType}if(!this.collectPendingMethods(f).size)return this.flushUpdateSelectedElementsWarnings(n,r,u),(b=(R=this.logger)==null?void 0:R.warn)==null||b.call(R,`${Ge} updateSelectedElements no-valid-fields requestId=${r} viewId=${n} warnings=${u.length}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0};const y=Ms(f);for(const k of a){const A=this.lookupToolsType(n,o==null?void 0:o.scenePath,k),N=this.hasShapeChanges(f)&&!!f.toolsType&&A!==f.toolsType;this.hasApplicableChangesForToolsType(f,A)?d.push(k):h.includes(k)||(h.push(k),A&&y.length&&u.push({id:k,field:y.join(","),code:"unsupported-by-toolsType",toolsType:A,message:N?`selected element id=${k} toolsType=${A} skipped by requested toolsType=${f.toolsType}`:`selected element id=${k} toolsType=${A} does not support requested fields=[${y.join(",")}]`}))}const T=this.resolveShapeDispatchToolsTypes(n,o==null?void 0:o.scenePath,d,f);return d.length?((j=(z=this.logger)==null?void 0:z.info)==null||j.call(z,`${Ge} updateSelectedElements request requestId=${r} viewId=${n} scenePath=${(o==null?void 0:o.scenePath)||"-"} selectedCount=${a.length} fields=[${this.formatFieldsFromChanges(i)}]`),this.flushUpdateSelectedElementsWarnings(n,r,u),new Promise(k=>{var W,Y;const A=setTimeout(()=>{var ie,O;const Q=this.updateResolveMap.get(r);Q&&(this.updateResolveMap.delete(r),(O=(ie=this.logger)==null?void 0:ie.warn)==null||O.call(ie,`${Ge} updateSelectedElements timeout requestId=${r} viewId=${n}`),k({requestId:r,viewId:n,ok:!1,reason:"worker-failed",selectedIds:Q.selectedIds,skippedIds:Q.skippedIds.length?Q.skippedIds:void 0,warnings:Q.warnings.length?Q.warnings:void 0,geometryChanged:Q.geometryChanged}))},8e3);this.updateResolveMap.set(r,{timer:A,resolve:k,viewId:n,selectedIds:a,appliedIds:d,skippedIds:h,warnings:u,geometryChanged:!1});const N=this.captureUndoTickerDuringDispatch(n);try{this.dispatchUpdate(n,[Ne],f,r,T)}catch(Q){this.updateResolveMap.delete(r),clearTimeout(A),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(N.getUndoTickerId(),n),n,o==null?void 0:o.scenePath),(Y=(W=this.logger)==null?void 0:W.error)==null||Y.call(W,`${Ge} updateSelectedElements dispatch failed requestId=${r} viewId=${n} err=${Q==null?void 0:Q.message}`),k({requestId:r,viewId:n,ok:!1,reason:"worker-failed",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}finally{N.dispose()}})):(this.flushUpdateSelectedElementsWarnings(n,r,u),(D=(P=this.logger)==null?void 0:P.warn)==null||D.call(P,`${Ge} updateSelectedElements rejected: no-applicable-selection requestId=${r} viewId=${n}`),{requestId:r,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}async copySelectedElements(t){var a,c,l,u,h,d,f,g;const e=this.genRequestId("copy"),r=this.resolveViewId(t);if(!r)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} copySelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} copySelectedElements rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} copySelectedElements rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} copySelectedElements request requestId=${e} viewId=${r} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,L;const T=setTimeout(()=>{var S,p;this.copyResolveMap.has(e)&&(this.copyResolveMap.delete(e),(p=(S=this.logger)==null?void 0:S.warn)==null||p.call(S,`${Ge} copySelectedElements timeout requestId=${e} viewId=${r}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.copyResolveMap.set(e,{timer:T,resolve:y,viewId:r,sourceSelectedIds:i});const x=this.captureUndoTickerDuringDispatch(r);try{Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:[Ne],viewId:r,requestId:e})}catch(S){this.copyResolveMap.delete(e),clearTimeout(T),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(x.getUndoTickerId(),r),r,n==null?void 0:n.scenePath),(L=(C=this.logger)==null?void 0:C.error)==null||L.call(C,`${Ge} copySelectedElements failed requestId=${e} viewId=${r} err=${S==null?void 0:S.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{x.dispose()}}))}async deleteSelectedElements(t){var a,c,l,u,h,d,f,g;const e=this.genRequestId("delete"),r=this.resolveViewId(t);if(!r)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} deleteSelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(r))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(r),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} deleteSelectedElements rejected: no-selection requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(r);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} deleteSelectedElements rejected: ${o} requestId=${e} viewId=${r}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} deleteSelectedElements request requestId=${e} viewId=${r} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,L;const T=setTimeout(()=>{var S,p;this.deleteResolveMap.has(e)&&(this.deleteResolveMap.delete(e),(p=(S=this.logger)==null?void 0:S.warn)==null||p.call(S,`${Ge} deleteSelectedElements timeout requestId=${e} viewId=${r}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.deleteResolveMap.set(e,{timer:T,resolve:y,viewId:r,removedIds:i.slice()});const x=this.captureUndoTickerDuringDispatch(r);try{Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Ne],viewId:r,requestId:e})}catch(S){this.deleteResolveMap.delete(e),clearTimeout(T),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(x.getUndoTickerId(),r),r,n==null?void 0:n.scenePath),(L=(C=this.logger)==null?void 0:C.error)==null||L.call(C,`${Ge} deleteSelectedElements failed requestId=${e} viewId=${r} err=${S==null?void 0:S.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{x.dispose()}}))}async updateElement(t,e,r,n,i=!0){var g,y,T,x,C,L,S,p,m,M,v,R,b;if(!this.canAcceptLocalMutation(r))return!1;const o=this.control.collector,a=this.control.worker;if(!o||!a||!t||!e||!r||!n)return(y=(g=this.logger)==null?void 0:g.warn)==null||y.call(g,`${Ge} updateElement ignored: invalid-args viewId=${r||"-"} scenePath=${e||"-"} elementId=${t||"-"}`),!1;const c=(T=o.isLocalId)!=null&&T.call(o,t)&&typeof o.transformKey=="function"?o.transformKey(t):t;if((x=o.isSelector)!=null&&x.call(o,c))return(L=(C=this.logger)==null?void 0:C.warn)==null||L.call(C,`${Ge} updateElement ignored: selector-not-allowed viewId=${r} scenePath=${e}`),!1;let l=(m=(p=(S=o.storage)==null?void 0:S[r])==null?void 0:p[e])==null?void 0:m[c];if(!l)return(v=(M=this.logger)==null?void 0:M.warn)==null||v.call(M,`${Ge} updateElement ignored: not-found viewId=${r} scenePath=${e} elementId=${t}`),!1;const u=l.toolsType;if(!u||n.toolsType!==u)return(b=(R=this.logger)==null?void 0:R.warn)==null||b.call(R,`${Ge} updateElement ignored: toolsType-mismatch viewId=${r} scenePath=${e} elementId=${t} declared=${n.toolsType} actual=${u}`),!1;const h=this.normalizeUpdateElementInfo(n,u),d=this.buildUpdatedElementValue(l,h),f=a.now;return i&&(a.internalMsgEmitter.emit("addUndoTicker",f,r,{render:!0,storage:!0,source:$e.AsyncUpdateElement}),a.internalMsgEmitter.emit("finalizeRequested",f,r,[c],e)),await new Promise(P=>{Pr(()=>{var z,j;if(!this.canAcceptLocalMutation(r)){i&&this.cancelUndoTicker(f,r,e),P(!1);return}const D=o.plugin;D==null||D.updateAttributes([Jr.namespace,r,e,c],d),i&&(a.internalMsgEmitter.emit("ackRenderUndoTicker",f,r,e),a.internalMsgEmitter.emit("ackStorageUndoTicker",f,r,e,c)),P(!0),(j=(z=this.logger)==null?void 0:z.info)==null||j.call(z,`${Ge} updateElement notify viewId=${r} scenePath=${e} elementId=${t} toolsType=${u} fields=[${Ms(h).join("/")||"-"}]`)},0,this.control.hasPolyfillMethod("requestIdleCallback")).catch(D=>{var z,j;this.cancelUndoTicker(f,r,e),(j=(z=this.logger)==null?void 0:z.warn)==null||j.call(z,`${Ge} updateElement err: ${D.message??"has unknown error"} viewId=${r} scenePath=${e} elementId=${t}`),P(!1)})})}onSelectorTransform(t){var a,c;const{viewId:e,emitEventType:r,workState:n}=t;this.control.publicMsgEmitter.emit("selectorTransformChange",t);const i=`${Ge} selectorTransformChange viewId=${e} emitEventType=${r} workState=${n}`,o=this.getDebounceLogger();o!=null&&o.infoDebounced?o.infoDebounced(`selector-transform-change:${e}`,i):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}onSelectorSync(t){var y,T,x,C;const{viewId:e,scenePath:r,selectIds:n,selectRect:i,selectorInfo:o}=t,a=n&&n.slice().sort()||[],c=this.lastSelectedIdsByView.get(e)||[],l=!this.isArrayEqual(a,c),u=i&&ve.isNumber(i.x)&&ve.isNumber(i.y)&&ve.isNumber(i.w)&&ve.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,d=!!this.pendingCameraChangeByView.get(e)&&!l&&!!(n!=null&&n.length);if(l){const L=this.getSelectedElements(e),S={viewId:e,scenePath:r,selectorId:Ne,reason:n!=null&&n.length?"select":"clear",viewRect:u,selectedIds:(L==null?void 0:L.selectedIds)??n??[],selectorInfo:o};this.lastSelectedIdsByView.set(e,a),this.control.publicMsgEmitter.emit("selectedElementsChange",S);const p=`${Ge} selectedElementsChange reason=${S.reason} viewId=${e} count=${S.selectedIds.length}`,m=this.getDebounceLogger();m!=null&&m.infoDebounced?m.infoDebounced(`selected-elements-change:${e}`,p):(T=(y=this.logger)==null?void 0:y.info)==null||T.call(y,p)}const f=this.lastViewRectByView.get(e),g=!this.isRectEqual(f,u);if(g||l){let L="selector-action",S=n!=null&&n.length?"select":"clear";d&&g?(L="camera-change",S="cameraTransform"):g&&!l&&(n!=null&&n.length)&&(S="selectorTransform"),this.lastViewRectByView.set(e,u);const p={viewId:e,scenePath:r,selectorId:Ne,source:L,action:S,viewRect:u};this.control.publicMsgEmitter.emit("selectorGeometryChange",p),this.logGeometry(e,S,(n==null?void 0:n.length)||0),L==="camera-change"&&this.clearPendingCameraChange(e)}if(!(n!=null&&n.length)&&l)for(const[L,S]of this.clearResolveMap.entries())S.viewId===e&&(this.clearResolveMap.delete(L),S.timer&&clearTimeout(S.timer),(C=(x=this.logger)==null?void 0:x.info)==null||C.call(x,`${Ge} blurSelector done requestId=${L} viewId=${e}`),S.resolve({ok:!0,requestId:L}))}onSelectorCleared(t){var a,c,l,u;const{viewId:e,scenePath:r,requestId:n}=t;if((this.lastSelectedIdsByView.get(e)||[]).length){const h={viewId:e,scenePath:r,selectorId:Ne,reason:"clear",viewRect:void 0,selectedIds:[]};this.lastSelectedIdsByView.set(e,[]),this.control.publicMsgEmitter.emit("selectedElementsChange",h);const d=`${Ge} selectedElementsChange reason=clear viewId=${e} requestId=${n||"-"}`,f=this.logger;f!=null&&f.infoDebounced?f.infoDebounced(`selected-elements-change:${e}`,d):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,d)}if(this.lastViewRectByView.get(e)){const h={viewId:e,scenePath:r,selectorId:Ne,source:"selector-action",action:"clear",viewRect:void 0,requestId:n};this.lastViewRectByView.set(e,void 0),this.control.publicMsgEmitter.emit("selectorGeometryChange",h),this.logGeometry(e,"clear",0)}if(n&&this.clearResolveMap.has(n)){const h=this.clearResolveMap.get(n);this.clearResolveMap.delete(n),h.timer&&clearTimeout(h.timer),(u=(l=this.logger)==null?void 0:l.info)==null||u.call(l,`${Ge} blurSelector done requestId=${n} viewId=${e}`),h.resolve({ok:!0,requestId:n})}}onCameraChange(t){const e=this.getSelectedElements(t);if(!(e!=null&&e.selectedIds.length)){this.clearPendingCameraChange(t);return}this.setPendingCameraChange(t,{ts:Date.now(),viewRect:e.viewRect,selectedIds:e.selectedIds.slice()});let r=this.cameraEmitThrottleByView.get(t);r||(r=ve.throttle(n=>this.emitCameraGeometry(n),60,{leading:!0,trailing:!0}),this.cameraEmitThrottleByView.set(t,r)),r(t)}emitCameraGeometry(t){const e=this.getSelectedElements(t);if(!e||!e.selectedIds.length||!e.viewRect){this.clearPendingCameraChange(t);return}const r=this.lastViewRectByView.get(t);if(this.isRectEqual(r,e.viewRect))return;this.lastViewRectByView.set(t,e.viewRect);const n={viewId:t,scenePath:e.scenePath,selectorId:Ne,source:"camera-change",action:"cameraTransform",viewRect:e.viewRect};this.control.publicMsgEmitter.emit("selectorGeometryChange",n),this.logGeometry(t,"cameraTransform",e.selectedIds.length),this.clearPendingCameraChange(t)}bindPublicStorageListener(){this.publicStorageHandler||(this.publicStorageHandler=t=>this.onSyncStorageChange(t),this.control.publicMsgEmitter.on("syncStorageChange",this.publicStorageHandler))}unbindPublicStorageListener(){this.publicStorageHandler&&(this.control.publicMsgEmitter.off("syncStorageChange",this.publicStorageHandler),this.publicStorageHandler=void 0)}tryResolveUpdateElements(t,e,r,n){var o,a;if(!e)return;const i=this.updateResolveMap.get(e);!i||i.viewId!==t||(i.geometryChanged=i.geometryChanged||n,this.updateResolveMap.delete(e),i.timer&&clearTimeout(i.timer),(a=(o=this.logger)==null?void 0:o.info)==null||a.call(o,`${Ge} updateSelectedElements done requestId=${e} viewId=${t} type=${r} geometryChanged=${i.geometryChanged} applied=${i.appliedIds.length}`),i.resolve({requestId:e,viewId:t,ok:!0,selectedIds:i.selectedIds,appliedIds:i.appliedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}))}onRemoveNodeApplied(t){var i,o;const{viewId:e,requestId:r,removeIds:n}=t;if(r){const a=this.deleteResolveMap.get(r);if(a&&a.viewId===e){const c=n!=null&&n.length?n:a.removedIds;this.deleteResolveMap.delete(r),a.timer&&clearTimeout(a.timer),(o=(i=this.logger)==null?void 0:i.info)==null||o.call(i,`${Ge} deleteSelectedElements done requestId=${r} viewId=${e} removedCount=${c.length}`),a.resolve({ok:!0,requestId:r,removedIds:c});return}}}onSyncStorageChange(t){var n,i,o;if(!t||typeof t!="object")return;const e=this.control.collector;if(!e)return;const r=e.uid;for(const[a,c]of Object.entries(t)){if(!c)continue;let l=this.lastRemoteSelectorByView.get(a);l||(l=new Map,this.lastRemoteSelectorByView.set(a,l));const u=new Set;for(const[h,d]of Object.entries(c))if(d)for(const[f,g]of Object.entries(d)){if(((n=e.isLocalId)!=null&&n.call(e,f)?f:((i=e.getLocalId)==null?void 0:i.call(e,f))??f)!==Ne)continue;const T=((o=e.getUidFromKey)==null?void 0:o.call(e,f))??(f.split(Bt)[0]||"");!T||T===r||(u.add(T),this.handleRemoteSelectorState(a,h,T,f,g,l))}for(const h of[...l.keys()]){if(u.has(h))continue;const d=l.get(h);if(!d||!d.selectedIds.length){l.delete(h);continue}this.handleRemoteSelectorState(a,"",h,`${h}${Bt}${Ne}`,void 0,l)}}}handleRemoteSelectorState(t,e,r,n,i,o){var g;const a=o.get(r)||{selectedIds:[]};let c="update",l=[],u;if(i){const y=i,T=(y.selectIds||[]).slice().sort(),x=a.selectedIds,C=!this.isArrayEqual(T,x);!x.length&&T.length?c="select":C&&!T.length?c="clear":c=C?"select":"update",l=y.selectIds||[];const L=y.selectRect||y.rect||((g=y.updateNodeOpt)==null?void 0:g.rect);L&&ve.isNumber(L.x)&&ve.isNumber(L.y)&&ve.isNumber(L.w)&&ve.isNumber(L.h)&&(u={x:L.x,y:L.y,w:L.w,h:L.h})}else{if(!a.selectedIds.length)return;c="clear",l=[],u=void 0}const h=!this.isRectEqual(a.viewRect,u);if(!!this.isArrayEqual(a.selectedIds,l)&&!h)return;o.set(r,{selectedIds:l,viewRect:u});const f={viewId:t,scenePath:e,uid:r,selectorId:n,source:"sync",action:c,viewRect:u,selectedIds:l,selectedElements:this.buildRemoteSelectedElements(t,e,r,l)};this.control.publicMsgEmitter.emit("remoteSelectorChange",f),this.logRemoteSelector(t,r,c,l.length)}logRemoteSelector(t,e,r,n){var a,c;const i=`${Ge} remoteSelectorChange uid=${e} action=${r} viewId=${t} count=${n}`,o=this.getDebounceLogger();if(o!=null&&o.infoDebounced){o.infoDebounced(`remote-selector:${t}@${e}`,i);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}genRequestId(t){return`${t}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}setPendingCameraChange(t,e){this.clearPendingCameraChange(t);const r=setTimeout(()=>{const n=this.pendingCameraChangeByView.get(t);(n==null?void 0:n.ts)===e.ts&&this.pendingCameraChangeByView.delete(t)},400);this.pendingCameraChangeByView.set(t,{...e,timer:r})}clearPendingCameraChange(t){const e=this.pendingCameraChangeByView.get(t);e!=null&&e.timer&&clearTimeout(e.timer),this.pendingCameraChangeByView.delete(t)}getDebounceLogger(){return this.logger}detectSelectorTransforming(t){var l,u,h,d,f;const e=this.control.worker;if(!e)return null;const r=(l=e.getLocalWorkViewId)==null?void 0:l.call(e),n=e.isLocalWorkActive===!0&&r===t,i=(u=e.currentLocalWorkData)==null?void 0:u.workState,o=(f=(d=(h=this.control.viewContainerManager.getView(t))==null?void 0:h.displayer)==null?void 0:d.vDom)==null?void 0:f.state,a=o==null?void 0:o.operationType,c=a===Te.TranslateNode||a===Te.ScaleNode||a===Te.RotateNode||a===Te.SetPoint;return n&&c&&i&&i!==de.Pending&&i!==de.Done||n&&c?"selector-transforming":e.isBusy===!0?"busy":null}isArrayEqual(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}isRectEqual(t,e){return!t&&!e?!0:!t||!e?!1:t.x===e.x&&t.y===e.y&&t.w===e.w&&t.h===e.h}onPropertyApplied(t){const{type:e,viewId:r,requestId:n,data:i}=t,o=e===Te.SetFontStyle&&i.fontSize!==void 0||e===Te.SetColorNode&&i.thickness!==void 0;this.tryResolveUpdateElements(r,n,e,o),o&&this.schedulePropertyGeometryEmit(r,e,n)}schedulePropertyGeometryEmit(t,e,r){const n=r?`property-geometry:${t}:${e}:${r}`:`property-geometry:${t}:${e}`,i=this.pendingPropertyGeometryByKey.get(n);i!=null&&i.timer&&clearTimeout(i.timer);const o=setTimeout(()=>{this.pendingPropertyGeometryByKey.delete(n);const a=this.getSelectedElements(t);if(!a||!a.selectedIds.length)return;const c=e===Te.SetFontStyle?"setFontStyle":"setStyle",l={viewId:t,scenePath:a.scenePath,selectorId:Ne,source:"property-change",action:c,viewRect:a.viewRect,requestId:r};this.lastViewRectByView.set(t,a.viewRect),this.control.publicMsgEmitter.emit("selectorGeometryChange",l),this.logGeometry(t,c,a.selectedIds.length)},0);this.pendingPropertyGeometryByKey.set(n,{timer:o,viewId:t,type:e,requestId:r})}lookupToolsType(t,e,r){var a,c,l,u;const n=this.control.collector;if(!n)return;const i=(a=n.isLocalId)!=null&&a.call(n,r)&&typeof n.transformKey=="function"?n.transformKey(r):r,o=(u=(l=(c=n.storage)==null?void 0:c[t])==null?void 0:l[e||""])==null?void 0:u[i];return o==null?void 0:o.toolsType}validateStrokeTypeForChanges(t,e,r,n){return e.strokeType===void 0?e:y0(e.strokeType)?(bp(r,e.strokeType)||n.push({id:t,field:"strokeType",code:"unsupported-by-toolsType",toolsType:r,message:`strokeType not supported by toolsType=${r} for id=${t}, skipped`}),e):(n.push({id:t,field:"strokeType",code:"unsupported-value",toolsType:r,message:`strokeType=${e.strokeType} is not a valid EStrokeType for id=${t}, skipped`}),e)}flushUpdateSelectedElementsWarnings(t,e,r){var o,a,c,l;if(!r.length)return;const n=new Map,i=new Map;for(const u of r)if(u.code==="unsupported-by-toolsType"){const h=n.get(u.field)||{ids:[],toolsTypes:[]};h.ids.push(u.id),h.toolsTypes.push(u.toolsType),n.set(u.field,h)}else if(u.code==="unsupported-value"){const h=i.get(u.field)||[];h.push(u.id),i.set(u.field,h)}for(const[u,h]of n.entries()){const d=[...new Set(h.toolsTypes.filter(Boolean))].join(","),f=[...new Set(h.ids)].join(",");(a=(o=this.logger)==null?void 0:o.warn)==null||a.call(o,`${Ge} updateSelectedElements warn unsupported-by-toolsType requestId=${e} viewId=${t} field=${u} toolsTypes=[${d}] ids=[${f}]`)}for(const[u,h]of i.entries())(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} updateSelectedElements warn unsupported-value requestId=${e} viewId=${t} field=${u} ids=[${[...new Set(h)].join(",")}]`)}collectPendingMethods(t){var r,n,i,o;const e=new Set;return(t.strokeColor!==void 0||t.fillColor!==void 0||t.fontColor!==void 0||t.fontBgColor!==void 0||t.thickness!==void 0||t.strokeType!==void 0)&&e.add(Te.SetColorNode),(t.fontSize!==void 0||t.bold!==void 0||t.italic!==void 0||t.underline!==void 0||t.lineThrough!==void 0)&&e.add(Te.SetFontStyle),t.isLocked!==void 0&&e.add(Te.SetLock),t.zIndexLayer!==void 0&&e.add(Te.ZIndexNode),(((r=t.shape)==null?void 0:r.vertices)!==void 0||((n=t.shape)==null?void 0:n.innerVerticeStep)!==void 0||((i=t.shape)==null?void 0:i.innerRatio)!==void 0||((o=t.shape)==null?void 0:o.placement)!==void 0)&&e.add(Te.SetShapeOpt),e}hasApplicableChangesForToolsType(t,e){return e?Ms(t).some(r=>r.startsWith("shape.")&&t.toolsType&&e!==t.toolsType?!1:Ni(e,r)):!1}buildUpdatedElementValue(t,e){var o,a,c,l;const r=e,n={...t,opt:t.opt?{...t.opt}:void 0},i=n.opt||{};return r.strokeColor!==void 0&&(i.strokeColor=r.strokeColor),r.fillColor!==void 0&&(i.fillColor=r.fillColor),r.thickness!==void 0&&(i.thickness=r.thickness),r.strokeType!==void 0&&(i.strokeType=r.strokeType),r.fontColor!==void 0&&(i.fontColor=r.fontColor),r.fontBgColor!==void 0&&(i.fontBgColor=r.fontBgColor),r.fontSize!==void 0&&(i.fontSize=r.fontSize),r.bold!==void 0&&(i.bold=r.bold),r.italic!==void 0&&(i.italic=r.italic),r.underline!==void 0&&(i.underline=r.underline),r.lineThrough!==void 0&&(i.lineThrough=r.lineThrough),r.isLocked!==void 0&&(i.locked=r.isLocked),((o=r.shape)==null?void 0:o.vertices)!==void 0&&(i.vertices=r.shape.vertices),((a=r.shape)==null?void 0:a.innerVerticeStep)!==void 0&&(i.innerVerticeStep=r.shape.innerVerticeStep),((c=r.shape)==null?void 0:c.innerRatio)!==void 0&&(i.innerRatio=r.shape.innerRatio),((l=r.shape)==null?void 0:l.placement)!==void 0&&(i.placement=r.shape.placement),n.opt=i,r.zIndexLayer!==void 0&&(n.updateNodeOpt={...n.updateNodeOpt||{},zIndexLayer:r.zIndexLayer}),n}normalizeUpdateElementInfo(t,e){var d,f;const r={...t},n=[],i=g=>{var y,T;g in r&&(delete r[g],n.push(g),(T=(y=this.logger)==null?void 0:y.warn)==null||T.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=${g}`))},o=g=>{var y,T;r.shape&&g in r.shape&&(delete r.shape[g],n.push(`shape.${g}`),(T=(y=this.logger)==null?void 0:y.warn)==null||T.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=shape.${g}`)),r.shape&&!Object.keys(r.shape).length&&delete r.shape},a=g=>{var y,T;g in r&&(n.push(g),(T=(y=this.logger)==null?void 0:y.warn)==null||T.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=${g} value=${JSON.stringify(r[g])}`),delete r[g])},c=g=>{var y,T;!r.shape||!(g in r.shape)||(n.push(`shape.${g}`),(T=(y=this.logger)==null?void 0:y.warn)==null||T.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=shape.${g} value=${JSON.stringify(r.shape[g])}`),delete r.shape[g],Object.keys(r.shape).length||delete r.shape)};"strokeColor"in r&&typeof r.strokeColor!="string"&&a("strokeColor"),"fillColor"in r&&typeof r.fillColor!="string"&&a("fillColor"),"fontColor"in r&&typeof r.fontColor!="string"&&a("fontColor"),"fontBgColor"in r&&typeof r.fontBgColor!="string"&&a("fontBgColor"),"thickness"in r&&!Number.isFinite(r.thickness)&&a("thickness"),"fontSize"in r&&!Number.isFinite(r.fontSize)&&a("fontSize"),"strokeType"in r&&!Object.values(Be).includes(r.strokeType)&&a("strokeType"),"strokeType"in r&&r.strokeType!==void 0&&!bp(e,r.strokeType)&&i("strokeType"),"bold"in r&&!Uwe.includes(r.bold)&&a("bold"),"italic"in r&&!Wwe.includes(r.italic)&&a("italic"),"underline"in r&&typeof r.underline!="boolean"&&a("underline"),"lineThrough"in r&&typeof r.lineThrough!="boolean"&&a("lineThrough"),"isLocked"in r&&typeof r.isLocked!="boolean"&&a("isLocked"),"zIndexLayer"in r&&![In.Top,In.Bottom].includes(r.zIndexLayer)&&a("zIndexLayer"),r.shape&&("vertices"in r.shape&&!Number.isFinite(r.shape.vertices)&&c("vertices"),"innerVerticeStep"in r.shape&&!Number.isFinite(r.shape.innerVerticeStep)&&c("innerVerticeStep"),"innerRatio"in r.shape&&!Number.isFinite(r.shape.innerRatio)&&c("innerRatio"),"placement"in r.shape&&!Vwe.includes(r.shape.placement)&&c("placement"));const l=new Set(Aye(e));return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer"].forEach(g=>{l.has(g)||i(g)}),["vertices","innerVerticeStep","innerRatio","placement"].forEach(g=>{l.has(`shape.${g}`)||o(g)}),n.length&&((f=(d=this.logger)==null?void 0:d.info)==null||f.call(d,`${Ge} updateElement filtered toolsType=${e} dropped=[${n.join(",")}]`)),r}dispatchUpdate(t,e,r,n,i=[]){const o=We.MainEngine,a={};r.strokeColor!==void 0&&(a.strokeColor=r.strokeColor),r.fillColor!==void 0&&(a.fillColor=r.fillColor),r.fontColor!==void 0&&(a.fontColor=r.fontColor),r.fontBgColor!==void 0&&(a.fontBgColor=r.fontBgColor),r.thickness!==void 0&&(a.thickness=r.thickness),r.strokeType!==void 0&&(a.strokeType=r.strokeType),Object.keys(a).length&&Ve.emitMethod(o,Te.SetColorNode,{workIds:e,viewId:t,requestId:n,workState:de.Done,...a});const c={};if(r.fontSize!==void 0&&(c.fontSize=r.fontSize),r.bold!==void 0&&(c.bold=r.bold),r.italic!==void 0&&(c.italic=r.italic),r.underline!==void 0&&(c.underline=r.underline),r.lineThrough!==void 0&&(c.lineThrough=r.lineThrough),Object.keys(c).length&&Ve.emitMethod(o,Te.SetFontStyle,{workIds:e,viewId:t,requestId:n,workState:de.Done,...c}),r.isLocked!==void 0&&Ve.emitMethod(o,Te.SetLock,{workIds:e,viewId:t,requestId:n,workState:de.Done,isLocked:r.isLocked}),r.zIndexLayer!==void 0&&Ve.emitMethod(o,Te.ZIndexNode,{workIds:e,viewId:t,requestId:n,workState:de.Done,layer:r.zIndexLayer}),r.shape){const l={};if(r.shape.vertices!==void 0&&(l.vertices=r.shape.vertices),r.shape.innerVerticeStep!==void 0&&(l.innerVerticeStep=r.shape.innerVerticeStep),r.shape.innerRatio!==void 0&&(l.innerRatio=r.shape.innerRatio),r.shape.placement!==void 0&&(l.placement=r.shape.placement),Object.keys(l).length){if(!i.length)return;i.forEach(u=>{Ve.emitMethod(o,Te.SetShapeOpt,{workIds:e,viewId:t,toolsType:u,requestId:n,workState:de.Done,...l})})}}}buildSelectedElementInfo(t,e,r,n){var y,T,x;const i=this.control.collector,o=i&&i.isLocalId(r)?i.transformKey(r):r,a=(x=(T=(y=i==null?void 0:i.storage)==null?void 0:y[t])==null?void 0:T[e||""])==null?void 0:x[o];if(!a)return;const c=a.toolsType,l=a.opt,u=a.updateNodeOpt||{},h={};(l==null?void 0:l.strokeColor)!==void 0&&(h.strokeColor=l.strokeColor),(l==null?void 0:l.fillColor)!==void 0&&(h.fillColor=l.fillColor),(l==null?void 0:l.thickness)!==void 0&&(h.thickness=l.thickness),(l==null?void 0:l.strokeType)!==void 0&&(h.strokeType=l.strokeType),(l==null?void 0:l.fontColor)!==void 0&&(h.fontColor=l.fontColor),(l==null?void 0:l.fontBgColor)!==void 0&&(h.fontBgColor=l.fontBgColor),(l==null?void 0:l.zIndex)!==void 0&&(h.zIndex=l.zIndex);const d={id:r,toolsType:c,style:h};if(n&&(ve.isBoolean(n.canRotate)&&(d.canRotate=n.canRotate),ve.isBoolean(n.canLock)&&(d.canLock=n.canLock),n.scaleType&&(d.scaleType=n.scaleType),ve.isBoolean(n.isLocked)&&(d.isLocked=n.isLocked)),c===q.Text&&l){const C=l,L={text:C.text,fontSize:C.fontSize,fontFamily:C.fontFamily,bold:C.bold,italic:C.italic,underline:C.underline,lineThrough:C.lineThrough,textAlign:C.textAlign,verticalAlign:C.verticalAlign,boxPoint:C.boxPoint,boxSize:C.boxSize};d.text=L}if(c===q.Polygon){const C=l;d.shape={vertices:C.vertices}}else if(c===q.Star){const C=l;d.shape={vertices:C.vertices,innerVerticeStep:C.innerVerticeStep,innerRatio:C.innerRatio}}else if(c===q.SpeechBalloon){const C=l;d.shape={placement:C.placement}}const f=u.rect;f&&(d.rect={x:f.x,y:f.y,w:f.w,h:f.h});const g=u.centerPos;return g&&(d.centerPos=g),d}buildRemoteSelectedElements(t,e,r,n){if(!n.length)return[];const i=[];for(const o of n){const a=this.buildSelectedElementInfo(t,e,`${r}${Bt}${o}`,void 0);a&&(a.id=o,i.push(a))}return i}logGeometry(t,e,r){var a,c;const n=`${Ge} selectorGeometryChange action=${e} viewId=${t} count=${r}`,i=this.getDebounceLogger();if((e==="select"||e==="selectorTransform"||e==="cameraTransform")&&i!=null&&i.infoDebounced){i.infoDebounced(`selector-geometry:${t}:${e}`,n);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,n)}}async function Ywe({previousScenePath:s,attemptedScenePath:t,getCurrentScenePath:e,getTargetScenePath:r,yieldToNextTask:n=()=>new Promise(i=>window.setTimeout(i,0))}){const i=e(),o=r();if(i===o)return!1;if(i!==s||o!==t)return!0;await n();const a=e(),c=r();return a===c?!1:a!==s||c!==t}const cr=class cr{constructor(t){E(this,"backgroundImageLoadCoordinator");E(this,"toolChangePending",!1);E(this,"toolChangePendingTimer");E(this,"pendingSceneChecks",new Set);E(this,"pendingSceneChanges",new Map);E(this,"pendingClears",new Map);E(this,"pendingViewInitStates",new Map);E(this,"renderRuntimeCacheKey");E(this,"renderRuntimeBuildMarker",mpe);E(this,"renderRuntimeActivationPromise");E(this,"pendingViewInitQueue",Promise.resolve());E(this,"clearQueueByView",new Map);E(this,"viewOperationQueueByView",new Map);E(this,"forceDoneQueue",Promise.resolve());E(this,"forceDoneQueueByView",new Map);E(this,"localMutationFenceCount",0);E(this,"localMutationFenceByView",new Map);E(this,"roomLifecycleTerminal",!1);E(this,"destroyPromise");E(this,"isDestroying",!1);E(this,"isDestroyed",!1);E(this,"orphanRepairTimer");E(this,"lifecycleGeneration",0);E(this,"viewLifecycleGeneration",new Map);E(this,"version",Ac);E(this,"plugin");E(this,"logger");E(this,"syncLogger");E(this,"room");E(this,"play");E(this,"collector");E(this,"hasSwitchToSelectorEffect");E(this,"snapshootStateMap");E(this,"_disableDeviceInputs");E(this,"_disableEraseImage");E(this,"_disableEraseText");E(this,"_disableCameraTransform");E(this,"initFontFaceTextRenderGate",!1);E(this,"initFontFaceTextRenderSkipped",!1);E(this,"mainViewMountedReady",new F0);E(this,"effectResolve");E(this,"hotkeyManager");E(this,"pluginOptions");E(this,"renderMode");E(this,"renderRuntimeDecisionLocked",!1);E(this,"renderingCompatibilityDecision");E(this,"roomMember");E(this,"cursor");E(this,"textEditorManager");E(this,"worker");E(this,"renderControl");E(this,"miniMapManager");E(this,"pluginManager");E(this,"callbacks");E(this,"selectorApi");E(this,"_isPolyfill",{requestIdleCallback:!1,cancelIdleCallback:!1});E(this,"onSceneChange",(t,e)=>{var a,c,l,u,h;if(this.isDestroying||this.isDestroyed)return Promise.resolve();const r=typeof t=="string"&&t.trim()?t:void 0,n=r||this.viewContainerManager.getAuthoritativeScenePath(e);if(!e||!n)return(c=(a=this.logger).warn)==null||c.call(a,`[Appliance]: [scene-path] stage=dropped-empty viewId=${e||""}`),Promise.resolve();if(r||this.logger.info(`[Appliance]: [scene-path] stage=authoritative-fallback viewId=${e} scenePath=${n}`),!this.worker.isViewInitAck(e)||!this.worker.isServiceSyncReady(e))return this.queuePendingInitScenePath(e,n),this.logger.info(`[Appliance]: [scene-path] stage=queued-before-ready viewId=${e} scenePath=${n}`),Promise.resolve();let i=this.pendingSceneChanges.get(e);i?(i.targetScenePath=n,i.isSceneBusy=!0,(l=i.deferredCamera)!=null&&l.scenePath&&i.deferredCamera.scenePath!==n&&(i.deferredCamera=void 0)):(i={targetScenePath:n,isSceneBusy:!0,running:!1,releaseMutationFence:this.acquireLocalMutationFence([e]),waiters:new Set},this.pendingSceneChanges.set(e,i)),this.worker.cameraUpdateDestroy(e),(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null||h.setActive(!1);const o=new Promise(d=>{i==null||i.waiters.add(d)});return i.running||(i.running=!0,this.consumePendingSceneChanges(e,i).catch(d=>{var f,g;(g=(f=this.logger)==null?void 0:f.error)==null||g.call(f,`[Appliance]: scene change failed viewId=${e} scenePath=${(i==null?void 0:i.targetScenePath)||""} error=${(d==null?void 0:d.message)||d}`)})),o});E(this,"onRoomMembersChange",t=>{this.isDestroying||this.isDestroyed||(this.roomMember.setRoomMembers(De.toJS(t)),this.scheduleOrphanRepair())});E(this,"onMemberChange",ve.throttle(t=>{var o,a;if(this.setToolChangePending(!1,"member-change"),!this.room||!this.worker||!t||!this.room.isWritable)return;const e=this.getToolsKey(t),r=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType,n=this.viewContainerManager.focuedViewId;n&&r===q.Selector&&e!==q.Selector&&this.worker.blurCursor(n);const i=this.getToolsOpt(e,t);this.worker.setCurrentToolsData(i),(a=this.pluginManager)==null||a.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));E(this,"internalSceneChange",(t,e)=>{var r,n,i,o;if(!this.worker.isViewInitAck(t)||!this.worker.isServiceSyncReady(t)){this.queuePendingInitScenePath(t,e);return}this.isUseSimple||((r=this.miniMapManager)==null?void 0:r.activeViewId)===t&&((n=this.miniMapManager)==null||n.destroyMiniMap(t)),(i=this.pluginManager)==null||i.dispatchPluginEvent("sceneChange",t,e),(o=this.worker)==null||o.clearViewScenePath(t,!0).then(()=>{var a;(a=this.worker)==null||a.pullServiceData(t,e,{isAsync:!0,useAnimation:!1})})});E(this,"internalCameraChange",(t,e)=>{var r,n;(r=this.worker)==null||r.updateCamera(t,e),this.isUseSimple||(n=this.miniMapManager)==null||n.updateViewCamera(t,e)});var T,x,C;const{displayer:e,plugin:r,options:n,callbacks:i}=t;this.plugin=r,this.callbacks=i,this.room=De.isRoom(e)?e:void 0,this.play=De.isPlayer(e)?e:void 0;let o;this.room&&(o=(T=this.room)==null?void 0:T.logger,this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1);const a=hMe(n.cdn,n.extras.useSimple),c=ws(He.workerRenderModeBlacklist,n.extras.workerRenderModeBlacklist,"renderMode"),l=ws(He.workerCanvasContextBlacklist,n.extras.workerCanvasContextBlacklist,"canvasContext"),u=ws(He.workerMaskTextureFormatBlacklist,n.extras.workerMaskTextureFormatBlacklist,"maskTextureFormat"),h=ws(He.workerMaskTextureUploadBlacklist,n.extras.workerMaskTextureUploadBlacklist,"maskTextureUpload"),d=ws(He.fontFaceFallbackBlacklist,n.extras.fontFaceFallbackBlacklist,"fontFaceFallback"),f=typeof navigator>"u"?"":navigator.userAgent;this.renderRuntimeCacheKey=Pwe(f),this.renderingCompatibilityDecision=TMe({useWorker:n.extras.useWorker,useSimple:n.extras.useSimple,requestedContextType:(x=n.extras.canvasOpt)==null?void 0:x.contextType,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,workerUrl:a}),this.pluginOptions={...n,extras:{...n.extras,canvasOpt:n.extras.canvasOpt,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,fontFaceFallbackBlacklist:d}},this.backgroundImageLoadCoordinator=new ipe(this.pluginOptions.extras.backgroundImageLoadOptions,(C=this.callbacks)==null?void 0:C.onBackgroundImageLoadEvent),this.renderMode=this.renderingCompatibilityDecision.renderMode,this.renderingCompatibilityDecision.renderRuntimeSource="config",this.roomMember=new H0e;const g={control:this,internalMsgEmitter:cr.InternalMsgEmitter,publicMsgEmitter:cr.PublicMsgEmitter};this.cursor=new Q0e(g),this.textEditorManager=new vye(g),this.worker=new bwe(g),this.hotkeyManager=new Ewe(g),this.renderControl=new zwe(g),this.pluginManager=new Fwe(g),this.isUseSimple||(this.miniMapManager=new Bwe(g)),this.logger=new qs(o);const y=this.pluginOptions.extras.syncLogger.batchWindowMs??He.syncLogger.batchWindowMs;this.syncLogger=new Rwe(this.logger,y>0?y:He.syncLogger.batchWindowMs)}get publicMsgEmitter(){return cr.PublicMsgEmitter}get internalMsgEmitter(){return cr.InternalMsgEmitter}emitInitLoadingChange(t){var e,r,n,i;try{(r=(e=this.callbacks)==null?void 0:e.onInitLoadingChange)==null||r.call(e,t)}catch(o){(i=(n=this.logger)==null?void 0:n.error)==null||i.call(n,`[Appliance]: onInitLoadingChange error: ${(o==null?void 0:o.message)||o}`)}}notifyMainViewMounted(){this.mainViewMountedReady.markReady()}isMainViewMounted(){var t;return((t=this.mainViewMountedReady)==null?void 0:t.isReady())??!0}waitForMainViewMounted(t){var e;return((e=this.mainViewMountedReady)==null?void 0:e.wait(t))??Promise.resolve("ready")}isRenderRuntimeRecoveryAllowed(){return!this.isDestroying&&!this.isDestroyed&&!this.roomLifecycleTerminal}appendPendingViewInitTask(t){this.pendingViewInitQueue||(this.pendingViewInitQueue=Promise.resolve());const e=this.pendingViewInitQueue.catch(()=>{}).then(t);return this.pendingViewInitQueue=e.then(()=>{},()=>{}),e}queuePendingRuntimeReset(t){return this.appendPendingViewInitTask(t)}queuePendingViewInit(t,e,r=this.getViewLifecycleGeneration(t)){const n=()=>this.appendPendingViewInitTask(async()=>{this.isPendingViewInitCurrent(t,r)&&await e()});return t===Fe||this.isMainViewMounted()?n():this.waitForMainViewMounted().then(i=>{if(!(i!=="ready"||!this.isPendingViewInitCurrent(t,r)))return n()})}emitFontFaceLoadState(t){var e,r;try{this.publicMsgEmitter.emit("fontFaceLoadState",t)}catch(n){(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: fontFaceLoadState listener error: ${(n==null?void 0:n.message)||n}`)}}emitFontFaceRenderState(t){var e,r;try{this.publicMsgEmitter.emit("fontFaceRenderState",t)}catch(n){(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: fontFaceRenderState listener error: ${(n==null?void 0:n.message)||n}`)}}hasPolyfillMethod(t){return this._isPolyfill[t]}registerPolyfillMethod(t){this._isPolyfill[t]=!0}get hasExtendFontFaces(){return this.extendFontFaces.length>0}get extendFontFaces(){var t;return((t=this.pluginOptions.extras.textEditor)==null?void 0:t.extendFontFaces)??He.textEditor.extendFontFaces}get loadFontFacesTimeout(){var t;return((t=this.pluginOptions.extras.textEditor)==null?void 0:t.loadFontFacesTimeout)??He.textEditor.loadFontFacesTimeout}loadFontFaces(){return this.worker.loadFontFaces()}beginInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!0,this.initFontFaceTextRenderSkipped=!1}markInitFontFaceTextRenderSkipped(){this.initFontFaceTextRenderGate&&(this.initFontFaceTextRenderSkipped=!0)}shouldHoldServiceTextRenderForFontFace(){return this.initFontFaceTextRenderGate}hasInitFontFaceTextRenderSkipped(){return this.initFontFaceTextRenderSkipped}endInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!1,this.initFontFaceTextRenderSkipped=!1}startInitFontFaceLoadAndRender(){if(!this.hasExtendFontFaces)return;this.beginInitFontFaceTextRenderGate();const t=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==t){this.endInitFontFaceTextRenderGate();return}this.loadFontFaces().then(e=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==t)return;const r=this.hasInitFontFaceTextRenderSkipped();if(e.status==="success"&&(!this.worker.getLastFontFacesAlreadyReady()||r)||e.status!=="success"&&r&&yMe(this.pluginOptions.extras.fontFaceFallbackBlacklist))return this.refreshTextRender()}).catch(e=>{var r,n;(n=(r=this.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: init font face load and render failed: ${(e==null?void 0:e.message)||e}`)}).finally(()=>{this.endInitFontFaceTextRenderGate()})},0)}waitNextFrame(){return new Promise(t=>requestAnimationFrame(()=>t()))}getSortedRefreshViews(){const t=this.viewContainerManager.getAllViews().filter(r=>!!r),e=this.viewContainerManager.focuedViewId;return t.sort((r,n)=>r.id===e?-1:n.id===e?1:0)}escapeCssIdentifier(t){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(t):t.replace(/([ #;?%&,.+*~':"!^$[\]()=>|/@])/g,"\\$1")}getTextEditorElement(t,e){var i;const r=`.editor-box #${this.escapeCssIdentifier(e)}`,n=[];t.container&&n.push(t.container),(i=t.viewData)!=null&&i.divElement&&n.push(t.viewData.divElement),t.displayer.eventTragetElement&&n.push(t.displayer.eventTragetElement),n.push(document);for(const o of n){const a=o.querySelector(r);if(a)return a}return document.getElementById(e)}measureViewTextEditorsForRender(t){const e=this.viewContainerManager.getView(t);if(!e)return{changed:!1,tasks:[]};let r=!1;const n=[];return this.textEditorManager.filterEditor(t).forEach((o,a)=>{const c=this.getTextEditorElement(e,a);let l=o.opt;if(c){const h=[c.offsetWidth,c.offsetHeight];h[0]&&h[1]&&!ve.isEqual(o.opt.boxSize,h)&&(l={...o.opt,boxSize:h},this.textEditorManager.updateForViewEdited(a,{...o,opt:l,canSync:!1,canWorker:!1,skipStorageDispatch:!0}),r=!0)}const u=this.textEditorManager.get(a)||o;n.push({viewId:t,scenePath:u.scenePath,workId:a,opt:u.opt})}),{changed:r,tasks:n}}async refreshViewTextRenderInternal(t){const e=this.viewContainerManager.getView(t),r=e==null?void 0:e.focusScenePath;if(!r||!this.collector)return{status:"error"};const n=this.collector.getStorageData(t,r);if(this.textEditorManager.clear(t,!0),n)for(const c of Object.keys(n)){const l=n[c];if(!l||l.toolsType!==q.Text)continue;const u=l.type;if(!u||!this.renderControl.isFilterAble({viewId:t,elementId:c,scenePath:r},u))continue;const h={...l,workId:this.collector.isOwn(c)?this.collector.getLocalId(c):c,msgType:u,dataType:Re.Service,viewId:t,scenePath:r};this.textEditorManager.deriveTextEditorInfoFromServiceData(h,{canWorker:!1,canSync:!1,updateView:!1})}await this.viewContainerManager.renderTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame();const{changed:i,tasks:o}=this.measureViewTextEditorsForRender(t);return i&&(await this.viewContainerManager.renderTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame()),{status:await this.worker.refreshTextRenderForWorker(o)?"success":"error"}}async refreshViewTextRender(t,e=!0){var r,n;e&&this.emitFontFaceRenderState({status:"start"});try{const i=await this.refreshViewTextRenderInternal(t);return e&&this.emitFontFaceRenderState({status:i.status==="success"?"success":"error"}),i}catch(i){return(n=(r=this.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: refreshViewTextRender failed: ${(i==null?void 0:i.message)||i}`),e&&this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshTextRender(){var e,r;this.emitFontFaceRenderState({status:"start"});let t="success";try{for(const n of this.getSortedRefreshViews())(await this.refreshViewTextRenderInternal(n.id)).status==="error"&&(t="error");return this.emitFontFaceRenderState({status:t}),{status:t}}catch(n){return(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: refreshTextRender failed: ${(n==null?void 0:n.message)||n}`),this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshViewRender(t){var e,r;try{const n=this.viewContainerManager.getView(t),i=(n==null?void 0:n.focusScenePath)||this.viewContainerManager.getAuthoritativeScenePath(t);return i?n!=null&&n.focusScenePath?(await this.worker.clearViewScenePath(t,!0),this.worker.pullServiceData(t,i,{isAsync:!0,useAnimation:!1}),await this.viewContainerManager.updateTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):(await this.onSceneChange(i,t),await this.viewContainerManager.updateTextEditorInfoAsync(t,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):{status:"error"}}catch(n){return(r=(e=this.logger)==null?void 0:e.error)==null||r.call(e,`[Appliance]: refreshViewRender failed: ${(n==null?void 0:n.message)||n}`),{status:"error"}}}async refreshRender(){let t="success";for(const e of this.getSortedRefreshViews())(await this.refreshViewRender(e.id)).status==="error"&&(t="error");return{status:t}}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(t){this._disableEraseText=t}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(t){this._disableEraseImage=t,this.room.disableEraseImage=t}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(t){var r;this._disableDeviceInputs=t;const e=(r=this.worker.getCurrentToolsData())==null?void 0:r.toolsType;e&&this.effectViewContainer(e)}get disableCameraTransform(){return this._disableCameraTransform||!1}set disableCameraTransform(t){this._disableCameraTransform=t,this.room.disableCameraTransform=t}get disableUseWorker(){return this.renderMode==="main-thread"}get hasOffscreenCanvas(){return this.renderMode!=="main-thread"}get isUseOffscreenTransfer(){return this.renderMode==="worker-offscreen-transfer"}isServiceSyncReady(t){return this.worker.isServiceSyncReady(t)}onViewServiceReady(t){const e=this.viewContainerManager.getView(t);e&&e.displayer.setActive(this.canAcceptLocalMutation(t))}lockRenderRuntimeDecision(){this.renderRuntimeDecisionLocked=!0}isRenderRuntimeDecisionLocked(){return this.renderRuntimeDecisionLocked}ensureRenderRuntimeReady(){return this.worker.isActive?Promise.resolve():(this.renderRuntimeActivationPromise||(this.renderRuntimeActivationPromise=this.activeWorker().catch(t=>{throw this.renderRuntimeActivationPromise=void 0,t})),this.renderRuntimeActivationPromise)}getRenderContextTypeForView(t){var e,r;return((r=(e=this.viewContainerManager)==null?void 0:e.mainView)==null?void 0:r.id)===t?this.renderingCompatibilityDecision.contextType:"2d"}requiresCanvas2DCompanionRenderProbe(){return!1}async restoreCachedRenderRuntimeDecision(){if(this.pluginOptions.extras.useWorker!=="auto")return;const t=await Lwe(this.renderRuntimeCacheKey),e=t.renderModel;let r;const n=e?uMe(e):void 0;if(n){const i=this.renderingCompatibilityDecision,o={"worker-offscreen-transfer":0,"worker-image-bitmap":1,"main-thread":2},a={webgl2:0,webgl:1,"2d":2},c=n.renderMode==="main-thread"||n.renderMode==="worker-offscreen-transfer"&&i.capabilities.offscreenTransfer||n.renderMode==="worker-image-bitmap"&&i.capabilities.imageBitmap,l=n.contextType==="2d"||n.contextType==="webgl2"&&i.capabilities.webgl2||n.contextType==="webgl"&&i.capabilities.webgl,u=o[n.renderMode]>=o[i.renderMode]&&a[n.contextType]>=a[i.contextType];(!c||!l||!u)&&(r="cache-capability-mismatch")}if(n&&e&&!r){const i=this.renderingCompatibilityDecision;this.renderMode=n.renderMode,i.renderMode=n.renderMode,i.contextType=n.contextType,i.reason="cached-render-runtime-decision",i.renderRuntimeCacheState="hit",i.renderRuntimeSource="cache";const o=`cached-render-runtime:${n.renderMode}/${n.contextType}`;i.issues.includes(o)||(i.issues=[...i.issues,o]),this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=${e}`),this.logFinalRenderDecision();return}this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=none${t.reason||r?` reason=${r||t.reason}`:""}`)}async persistRenderRuntimeDecision(){var n,i;if(this.pluginOptions.extras.useWorker!=="auto")return;const t=this.renderingCompatibilityDecision,e=Ht(t.renderMode,t.contextType);await Nwe(this.renderRuntimeCacheKey,e)?this.logger.info(`[Appliance]: [render-cache] stage=save renderModel=${e}`):(i=(n=this.logger).warn)==null||i.call(n,`[Appliance]: [render-cache] stage=save-failed renderModel=${e} reason=indexeddb-write-failed`)}async invalidateRenderRuntimeDecision(){var r,n;if(this.pluginOptions.extras.useWorker!=="auto")return;const t=await Owe(this.renderRuntimeCacheKey);this.renderingCompatibilityDecision.renderRuntimeCacheState=void 0;const e=Ht(this.renderMode,this.renderingCompatibilityDecision.contextType);t?this.logger.info(`[Appliance]: [render-cache] stage=invalidate renderModel=${e}`):(n=(r=this.logger).warn)==null||n.call(r,`[Appliance]: [render-cache] stage=invalidate-failed renderModel=${e}`)}ensurePendingViewInitState(t){var r,n,i,o;let e=this.pendingViewInitStates.get(t);if(!e){const a=(n=(r=this.collector)==null?void 0:r.readViewStorageSnapshot)==null?void 0:n.call(r,t);e={sequence:0,anchorRevision:0,serviceBaselineRevision:(a==null?void 0:a.revision)||0,serviceBaseline:(a==null?void 0:a.storage)||((o=(i=this.collector)==null?void 0:i.getServiceStorageViewSnapshot)==null?void 0:o.call(i,t))||{},scenes:new Map},this.pendingViewInitStates.set(t,e)}return e}armPendingViewInit(t){var n;const e=this.ensurePendingViewInitState(t),r=this.getViewLifecycleGeneration(t);(n=this.viewContainerManager.getView(t))==null||n.displayer.setActive(!1),pt(this.logger,{category:"init-padding",viewId:t,stage:"armed",restartView:!0,lifecycleGeneration:r,details:{lifecycleGeneration:r,baselineRevision:e.serviceBaselineRevision}})}bindPendingViewInit(t,e){const r=this.pendingViewInitStates.get(t);r&&(r.generation=e)}nextInitPaddingSequence(t){return t.sequence+=1,t.sequence}getSceneInitPaddingState(t,e){let r=t.scenes.get(e);return r||(r={cameraRevision:0,serviceDirty:!1,forceFullRefresh:!1,forceFullRevision:0,journal:[]},t.scenes.set(e,r)),r}appendInitPaddingJournal(t,e,r,n){const i=this.getSceneInitPaddingState(t,e);i.journal.push({kind:r,sequence:this.nextInitPaddingSequence(t),storageKey:n}),i.journal.length>128&&i.journal.shift()}queuePendingInitScenePath(t,e){if(!t||!e)return;const r=this.ensurePendingViewInitState(t);r.latestScenePath=e,r.anchorRevision=this.nextInitPaddingSequence(r),pt(this.logger,{category:"init-padding",viewId:t,generation:r.generation,stage:"accepted-scene",details:{scenePath:e,revision:r.anchorRevision}})}queuePendingInitServicePull(t,e){if(!t||!e)return;const r=this.ensurePendingViewInitState(t),n=this.getSceneInitPaddingState(r,e);n.serviceDirty=!0,n.forceFullRefresh=!0,n.forceFullRevision=this.nextInitPaddingSequence(r),this.appendInitPaddingJournal(r,e,"servicePull"),pt(this.logger,{category:"init-padding",viewId:t,generation:r.generation,stage:"accepted-service-pull",details:{scenePath:e,revision:n.forceFullRevision}})}queuePendingInitCamera(t,e,r){var a,c,l,u;if(!t)return;const n=r||((c=(a=this.viewContainerManager)==null?void 0:a.getView(t))==null?void 0:c.focusScenePath)||((u=(l=this.viewContainerManager)==null?void 0:l.getCurScenePath)==null?void 0:u.call(l,t));if(!n)return;const i=this.ensurePendingViewInitState(t),o=this.getSceneInitPaddingState(i,n);o.camera={...e},o.cameraRevision=this.nextInitPaddingSequence(i),pt(this.logger,{category:"init-padding",viewId:t,generation:i.generation,stage:"accepted-camera",details:{scenePath:n,revision:o.cameraRevision}})}queuePendingServiceDerive(t,e,r){if(!t||!e||!(r!=null&&r.scenePath))return;const n=this.ensurePendingViewInitState(t),i=this.getSceneInitPaddingState(n,r.scenePath);i.serviceDirty=!0,this.appendInitPaddingJournal(n,r.scenePath,"serviceDerive",e),pt(this.logger,{category:"init-padding",viewId:t,generation:n.generation,stage:"accepted-service-diff",details:{scenePath:r.scenePath,revision:n.sequence}})}queuePendingInitClear(t,e){var o,a,c,l;if(!t)return;const r=e||((a=(o=this.viewContainerManager)==null?void 0:o.getView(t))==null?void 0:a.focusScenePath)||((l=(c=this.viewContainerManager)==null?void 0:c.getCurScenePath)==null?void 0:l.call(c,t));if(!r)return;const n=this.ensurePendingViewInitState(t),i=this.getSceneInitPaddingState(n,r);i.serviceDirty=!0,i.forceFullRefresh=!0,i.forceFullRevision=this.nextInitPaddingSequence(n),this.appendInitPaddingJournal(n,r,"clear"),pt(this.logger,{category:"init-padding",viewId:t,generation:n.generation,stage:"accepted-clear",details:{scenePath:r,revision:n.sequence}})}getPendingInitTargetScenePath(t){var e;return(e=this.pendingViewInitStates.get(t))==null?void 0:e.latestScenePath}getPendingInitCameraForScene(t,e){var n,i;const r=(i=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(e))==null?void 0:i.camera;return r?{...r}:void 0}markPendingInitServiceApplied(t,e,r,n){const i=this.pendingViewInitStates.get(t);if(!i)return;const o=this.getSceneInitPaddingState(i,e);o.lastApplied=r?ve.cloneDeep(r):{},o.lastAppliedRevision=n,o.serviceDirty=!1,o.forceFullRefresh=!1}resetPendingInitRendererBaseline(t){var r,n;const e=[...((r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.keys())||[]];for(const i of e){const o=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(i);o&&(o.lastApplied=void 0,o.serviceDirty=!0,o.forceFullRefresh=!0)}}getPendingInitServiceBaseline(t,e){var r;return ve.cloneDeep(((r=this.pendingViewInitStates.get(t))==null?void 0:r.serviceBaseline[e])||{})}getPendingInitReconcileRevision(t,e){const r=this.pendingViewInitStates.get(t),n=r==null?void 0:r.scenes.get(e);return{anchorRevision:(r==null?void 0:r.anchorRevision)||0,cameraRevision:(n==null?void 0:n.cameraRevision)||0,forceFullRevision:(n==null?void 0:n.forceFullRevision)||0}}getPendingInitLastApplied(t,e){var n;const r=(n=this.pendingViewInitStates.get(t))==null?void 0:n.scenes.get(e);return{revision:r==null?void 0:r.lastAppliedRevision,storage:r!=null&&r.lastApplied?ve.cloneDeep(r.lastApplied):void 0}}hasPendingInitAppliedSnapshot(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.lastApplied)!==void 0}isPendingInitForceFullRefresh(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.forceFullRefresh)===!0}hasPendingInitServiceChanges(t,e){var r,n;return((n=(r=this.pendingViewInitStates.get(t))==null?void 0:r.scenes.get(e))==null?void 0:n.serviceDirty)===!0}clearPendingViewInitState(t){var e;(e=this.pendingViewInitStates)==null||e.delete(t)}getViewLifecycleGeneration(t){return this.viewLifecycleGeneration.get(t)||0}isPendingViewInitCurrent(t,e){return this.getViewLifecycleGeneration(t)===e}invalidatePendingViewInit(t){const e=this.getViewLifecycleGeneration(t)+1;return this.viewLifecycleGeneration.set(t,e),this.clearPendingViewInitState(t),ga(this.logger,t),e}invalidateAllPendingViewInit(){const t=new Set(this.viewLifecycleGeneration.keys());for(const e of this.viewContainerManager.getAllViews())e!=null&&e.id&&t.add(e.id);for(const e of t)this.invalidatePendingViewInit(e);return this.pendingViewInitStates.clear(),t.size}applyWorkerRenderProbe(t){const e=this.renderingCompatibilityDecision,r=t.contextSupported;e.workerProbe=r?"passed":"failed",e.workerProgramProbe=t.programProbe,this.logFinalRenderDecision()}applyRuntimeRenderingDecision(t,e,r,n){this.renderMode=t;const i=this.renderingCompatibilityDecision;i.renderMode=t,i.contextType=e,i.reason=r,i.issues.includes(n)||(i.issues=[...i.issues,n])}logFinalRenderDecision(){const t=this.renderingCompatibilityDecision;this.logger.info(`[Appliance]: [render-capabilities] ${JSON.stringify({renderMode:t.renderMode,mainThreadRenderMode:t.mainThreadRenderMode,contextType:t.contextType,reason:t.reason,workerProbe:t.workerProbe,workerProgramProbe:t.workerProgramProbe,issues:t.issues})}`)}get isUseSimple(){return this.pluginOptions.extras.useSimple}get isUseBackgroundThread(){return this.pluginOptions.extras.useBackgroundThread}bindPlugin(t){this.plugin=t,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new Jr(this,t,this.pluginOptions.extras.syncOpt.interval),this.activePlugin(),this.selectorApi&&this.selectorApi.destroy(),this.selectorApi=new $we(this)}handleRemoteStorageRemoval(t,e,r={}){var a,c,l,u,h;const n=r.clearView===!0,i=(c=(a=this.worker)==null?void 0:a.abortActiveLocalInput)==null?void 0:c.call(a,t,e),o=(l=this.worker)==null?void 0:l.abortActiveContinuousMethods(t,r.abortAllContinuousMethods?void 0:e);i&&!n&&((u=this.worker)==null||u.cancelLocalWorks(t,!1)),(n||r.cancelTicker||i||o)&&this.viewContainerManager.cancelViewUndoTicker(t),n&&((h=this.worker)==null||h.clearViewScenePath(t,!0))}canForceDoneLocalWorks(){return!this.isDestroyed&&!!this.room&&this.room.phase===De.RoomPhase.Connected&&this.room.isWritable&&this.renderControl.isWritable}isLocalMutationRuntimeAvailable(t){var e,r,n,i;return this.isDestroying||this.isDestroyed||this.roomLifecycleTerminal||!this.room||this.room.phase!==De.RoomPhase.Connected||!this.room.isWritable||!this.renderControl.isWritable||this.localMutationFenceCount>0||((r=(e=this.worker)==null?void 0:e.isRenderRuntimeRecovering)==null?void 0:r.call(e))===!0?!1:!t||((i=(n=this.worker)==null?void 0:n.isServiceSyncReady)==null?void 0:i.call(n,t))===!0}canAcceptLocalMutation(t){var e,r;return this.isLocalMutationRuntimeAvailable(t)?!t||!this.localMutationFenceByView.has(t)&&!this.isSceneBusy(t)&&!this.isClearBusy(t)&&!((r=(e=this.worker)==null?void 0:e.isViewBusy)!=null&&r.call(e,t)):!1}markRoomLifecycleTerminal(){var t,e;this.roomLifecycleTerminal||(this.roomLifecycleTerminal=!0,(e=(t=this.worker)==null?void 0:t.cancelRenderRuntimeRecovery)==null||e.call(t,"room-lifecycle-terminal"),this.viewContainerManager.getAllViews().forEach(r=>{r==null||r.displayer.setActive(!1)}))}canQueueViewLifecycleOperation(t){return this.isLocalMutationRuntimeAvailable(t)&&!!this.viewContainerManager.getView(t)}acquireLocalMutationFence(t){const e=t?new Set(t):void 0;e?e.forEach(n=>{this.localMutationFenceByView.set(n,(this.localMutationFenceByView.get(n)||0)+1)}):this.localMutationFenceCount++,this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&n.displayer.setActive(!1)});let r=!1;return()=>{r||(r=!0,e?e.forEach(n=>{const i=this.localMutationFenceByView.get(n)||0;i<=1?this.localMutationFenceByView.delete(n):this.localMutationFenceByView.set(n,i-1)}):this.localMutationFenceCount=Math.max(0,this.localMutationFenceCount-1),this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&this.canAcceptLocalMutation(n.id)&&!this.isSceneBusy(n.id)&&!this.isClearBusy(n.id)&&n.displayer.setActive(!0)}))}}forceDoneLocalWorks(t,e){this.forceDoneQueueByView||(this.forceDoneQueueByView=new Map);const r=this.acquireLocalMutationFence(e),n=e?[...new Set(e)]:void 0,i=n?[this.forceDoneQueue,...n.map(c=>this.forceDoneQueueByView.get(c)||Promise.resolve())]:[this.forceDoneQueue,...this.forceDoneQueueByView.values()],o=Promise.all(i).then(async()=>{if(!this.canForceDoneLocalWorks())return this.logLifecycleError(`[Appliance]: force-Done unavailable reason=${t}`),{status:"failed",reason:t,views:[],failureReasons:["lifecycle-unavailable"]};const c=[];try{this.textEditorManager.forceDoneLocalText(e)}catch(g){const y=g instanceof Error?g.message:String(g);c.push(`text-finalize: ${y}`),this.logLifecycleError(`[Appliance]: force-Done Text finalize failed reason=${t} error=${y}`)}const l=e?new Set(e):void 0,u=this.viewContainerManager.getAllViews().filter(g=>!!g&&(!l||l.has(g.id))),h=await Promise.allSettled(u.map(async g=>{if(!this.canForceDoneLocalWorks())return{status:"failed",viewId:g.id,scenePath:g.focusScenePath,reason:t,failureReason:"lifecycle-unavailable"};const y=this.worker.forceDoneLocalWorks(g.id,g.focusScenePath,t);return this.waitForForceDoneOrInvalidation(y,g,t)})),d=[];let f=c.length===0;return h.forEach((g,y)=>{var T,x,C,L,S;if(g.status==="rejected"){f=!1;const p=((T=g.reason)==null?void 0:T.message)||String(g.reason);d.push({status:"failed",viewId:((x=u[y])==null?void 0:x.id)||"unknown",scenePath:((C=u[y])==null?void 0:C.focusScenePath)||"",reason:t,failureReason:p}),c.push(`view=${((L=u[y])==null?void 0:L.id)||"unknown"}: ${p}`),this.logLifecycleError(`[Appliance]: force-Done failed viewId=${((S=u[y])==null?void 0:S.id)||"unknown"} reason=${t} error=${p}`)}else{if(d.push(g.value),g.value.status==="success")return;f=!1,c.push(`view=${g.value.viewId}: ${g.value.failureReason||"barrier-failed"}`),this.logLifecycleError(`[Appliance]: force-Done failed ACK viewId=${g.value.viewId} scenePath=${g.value.scenePath} reason=${t} error=${g.value.failureReason||"barrier-failed"}`)}}),this.canForceDoneLocalWorks()||(f=!1,c.push("lifecycle-invalidated"),this.logLifecycleError(`[Appliance]: force-Done lifecycle invalidated reason=${t}`)),{status:f?"success":"failed",reason:t,views:d,failureReasons:c}}).catch(c=>{const l=c instanceof Error?c.message:String(c);return this.logLifecycleError(`[Appliance]: force-Done aggregation failed reason=${t} error=${l}`),{status:"failed",reason:t,views:[],failureReasons:[`aggregation: ${l}`]}}).finally(()=>{try{r()}catch(c){this.logLifecycleError(`[Appliance]: force-Done mutation fence release failed reason=${t} error=${c instanceof Error?c.message:String(c)}`)}}),a=o.then(()=>{},()=>{});if(n){n.forEach(l=>{this.forceDoneQueueByView.set(l,a)});const c=()=>{n.forEach(l=>{this.forceDoneQueueByView.get(l)===a&&this.forceDoneQueueByView.delete(l)})};o.then(c,c)}else this.forceDoneQueue=a;return o}waitForForceDoneOrInvalidation(t,e,r){return new Promise((n,i)=>{let o=!1;const a=l=>{o||(o=!0,clearInterval(c),n(l))},c=setInterval(()=>{this.canForceDoneLocalWorks()||(this.worker.invalidateTransactionBarrier(e.id),a({status:"failed",viewId:e.id,scenePath:e.focusScenePath,reason:r,failureReason:"lifecycle-invalidated"}))},25);t.then(l=>a(l),l=>{o||(o=!0,clearInterval(c),i(l))})})}logLifecycleError(t){var e;(e=this.logger)==null||e.error(t)}destroy(t={}){var r,n;if(this.destroyPromise)return this.destroyPromise;const e=t.preserveStorage!==!1;return this.isDestroying=!0,(n=(r=this.worker)==null?void 0:r.cancelRenderRuntimeRecovery)==null||n.call(r,"manager-destroy"),this.destroyPromise=(async()=>{try{e&&this.canForceDoneLocalWorks()&&await this.forceDoneLocalWorks("destroy")}catch(i){this.logLifecycleError(`[Appliance]: force-Done before destroy failed: ${(i==null?void 0:i.message)||i}`)}finally{this.destroyImmediately()}})(),this.destroyPromise}destroyImmediately(){var r,n;if(this.isDestroyed)return;this.isDestroyed=!0;const t=[],e=(i,o)=>{try{o()}catch(a){t.push(`${i}: ${(a==null?void 0:a.message)||a}`)}};e("background-image",()=>this.backgroundImageLoadCoordinator.cancelAll()),e("main-view-ready",()=>this.mainViewMountedReady.cancel()),this.lifecycleGeneration++,this.viewLifecycleGeneration.forEach((i,o)=>{this.viewLifecycleGeneration.set(o,this.viewLifecycleGeneration.get(o)+1)}),e("sync-logger",()=>this.syncLogger.destroy()),this.pendingSceneChecks.clear(),(r=this.pendingViewInitStates)==null||r.clear(),this.pendingSceneChanges.forEach(i=>{i.releaseMutationFence(),i.waiters.forEach(o=>o())}),this.pendingSceneChanges.clear(),this.pendingClears.clear(),this.clearQueueByView.clear(),this.viewOperationQueueByView.clear(),(n=this.forceDoneQueueByView)==null||n.clear(),e("room-member",()=>this.roomMember.destroy()),e("orphan-repair",()=>{this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=void 0}),e("tool-change",()=>{this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=!1,this.onMemberChange.cancel()}),e("effect-waiter",()=>{const i=this.effectResolve;this.effectResolve=void 0,i==null||i(!1)}),e("view-container",()=>{var i;return(i=this.viewContainerManager)==null?void 0:i.destroy()}),e("worker",()=>{var i;return(i=this.worker)==null?void 0:i.destroy()}),e("collector",()=>{var i;return(i=this.collector)==null?void 0:i.destroy()}),e("cursor",()=>{var i;return(i=this.cursor)==null?void 0:i.destroy()}),e("text-editor",()=>{var i;return(i=this.textEditorManager)==null?void 0:i.destory()}),e("plugin-manager",()=>{var i;return(i=this.pluginManager)==null?void 0:i.destroy()}),e("mini-map",()=>{var i;return(i=this.miniMapManager)==null?void 0:i.destroyMiniMap()}),e("selector-api",()=>{var i;return(i=this.selectorApi)==null?void 0:i.destroy()}),this.selectorApi=void 0,e("logger",()=>{var i,o;return(o=(i=this.logger).destroy)==null?void 0:o.call(i)}),t.length&&this.logger.error(`[Appliance]: destroy completed with disposer errors: ${t.join("; ")}`)}async cleanCurrentScene(t=!0){if(this.isDestroying)return!1;const e=this.viewContainerManager.getPreferredFocusedViewId();if(!this.canQueueViewLifecycleOperation(e))return!1;const r=this.lifecycleGeneration,n=this.viewLifecycleGeneration.get(e)||0,i=()=>r===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(e)||0)===n&&!!this.viewContainerManager.getView(e);let o=this.pendingClears.get(e);o?o.isClearBusy=!0:(o={isClearBusy:!0},this.pendingClears.set(e,o));const a=this.enqueueViewOperation(e,async()=>{var g,y;const u=this.viewContainerManager.getCurScenePath(e);if(!u||(await this.worker.waitForViewLifecycleIdle(e),!i())||t&&(await this.worker.forceDoneLocalWorks(e,u,"clean-scene"),!i()))return!1;const h=this.worker.now;cr.InternalMsgEmitter.emit("addUndoTicker",h,e,{render:!0,storage:!0,source:$e.Clear}),cr.InternalMsgEmitter.emit("finalizeRequested",h,e,[si],u);const d=(y=(g=this.viewContainerManager.getView(e))==null?void 0:g.displayer)==null?void 0:y.commiter,f=d==null?void 0:d.getPendingTickerSnapshots(u).find(T=>T.tickerId===h);if(await this.worker.clearViewScenePath(e,!1,!0),!i())return!1;if(cr.InternalMsgEmitter.emit("ackRenderUndoTicker",h,e,u),cr.InternalMsgEmitter.emit("ackStorageUndoTicker",h,e,u,si),f&&d){try{await d.waitForUndoStackEnd(f,ype)}catch(T){if(!i())return!1;this.logger.error(`[Appliance]: Clear Undo stack-end wait failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${T instanceof Error?T.message:String(T)}`);try{d.cancelUndoTicker(h,e,u)}catch(x){this.logger.error(`[Appliance]: forcing Clear Undo stack-end failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${x instanceof Error?x.message:String(x)}`)}}if(!i())return!1}return!0}),c=a.then(()=>{},()=>{});this.clearQueueByView.set(e,c);let l=!1;try{const u=await a;return l=!0,u}catch(u){throw u}finally{if(this.clearQueueByView.get(e)===c){this.clearQueueByView.delete(e);const u=this.pendingClears.get(e);this.pendingClears.delete(e),l&&(u!=null&&u.deferredCamera)?this.worker.updateCamera(e,u.deferredCamera):l&&!this.isSceneBusy(e)&&this.worker.recoverAfterSceneChange(e)}}}isClearBusy(t){var e;return((e=this.pendingClears.get(t))==null?void 0:e.isClearBusy)===!0}deferClearCamera(t,e){const r=this.pendingClears.get(t);r!=null&&r.isClearBusy&&(r.deferredCamera=e)}enqueueViewOperation(t,e){const n=(this.viewOperationQueueByView.get(t)||Promise.resolve()).then(()=>e()),i=n.then(()=>{},()=>{});this.viewOperationQueueByView.set(t,i);const o=()=>{this.viewOperationQueueByView.get(t)===i&&this.viewOperationQueueByView.delete(t)};return n.then(o,o),n}async setWritable(t){var r,n;let e;if(!t){if(e=await this.forceDoneLocalWorks("set-readonly"),this.isDestroyed)return e;(r=this.cursor)==null||r.unabled(),this.textEditorManager.checkEmptyTextBlur();const i=this.viewContainerManager.getAllViews();for(const o of i){o!=null&&o.focusScenePath&&(n=this.collector)!=null&&n.hasSelector(o.id,o.focusScenePath)&&this.worker.blurSelector(o.id,o.focusScenePath);const a=o==null?void 0:o.displayer;a&&(a.setActive(!1),await a.stopEventHandler())}}return e}onWritableChange(t){var n;if(this.isDestroying||this.isDestroyed)return;t?(this.worker.abled(),this.scheduleOrphanRepair()):this.worker.unWritable(),((n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType)===q.Text&&this.viewContainerManager.focuedViewId&&(t?this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId):this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId)),this.renderControl.onWritableChange(t),this.viewContainerManager.getAllViews().forEach(i=>{const o=i==null?void 0:i.displayer;o&&(o.bindToolsClass(),t?this.canAcceptLocalMutation(i==null?void 0:i.id)&&!this.isSceneBusy(i==null?void 0:i.id)&&!this.isClearBusy(i==null?void 0:i.id)&&o.setActive(!0):o.setActive(!1))})}async consumePendingSceneChanges(t,e){var r,n;try{for(;this.pendingSceneChanges.get(t)===e;){const i=(r=this.viewContainerManager.getView(t))==null?void 0:r.focusScenePath,o=e.targetScenePath;if(i===o)break;if(!i){if(this.logger.info(`[Appliance]: [scene-path] stage=recover-missing-current viewId=${t} scenePath=${o}`),this.viewContainerManager.setViewScenePath(t,o),((n=this.viewContainerManager.getView(t))==null?void 0:n.focusScenePath)!==o)break;continue}if(await this.applySceneChange(t,i,e),!await Ywe({previousScenePath:i,attemptedScenePath:o,getCurrentScenePath:()=>{var c;return(c=this.viewContainerManager.getView(t))==null?void 0:c.focusScenePath},getTargetScenePath:()=>e.targetScenePath}))break}}finally{const i=this.pendingSceneChanges.get(t)===e,o=i?e.deferredCamera:void 0;e.running=!1,e.isSceneBusy=!1,i&&this.pendingSceneChanges.delete(t);try{i&&o&&(!o.scenePath||o.scenePath===e.targetScenePath)?this.worker.updateCamera(t,o.cameraOpt):i&&this.worker.recoverAfterSceneChange(t)}finally{try{e.releaseMutationFence()}finally{e.waiters.forEach(a=>a()),e.waiters.clear()}}}}isSceneBusy(t){var e;return((e=this.pendingSceneChanges.get(t))==null?void 0:e.isSceneBusy)===!0}deferSceneCamera(t,e){const r=this.pendingSceneChanges.get(t);r!=null&&r.isSceneBusy&&(r.deferredCamera={cameraOpt:e,scenePath:this.viewContainerManager.getCurScenePath(t)})}destroySceneChange(t){this.invalidatePendingViewInit(t);const e=this.pendingSceneChanges.get(t);this.pendingClears.delete(t),this.clearQueueByView.delete(t),this.viewOperationQueueByView.delete(t),e&&(e.isSceneBusy=!1,e.waiters.forEach(r=>r()),e.waiters.clear(),this.pendingSceneChanges.delete(t),e.releaseMutationFence())}async applySceneChange(t,e,r){await this.enqueueViewOperation(t,()=>this.applySceneChangeExclusive(t,e,r))}async applySceneChangeExclusive(t,e,r){var u;const n=this.lifecycleGeneration,i=this.viewLifecycleGeneration.get(t)||0,o=()=>n===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(t)||0)===i&&!!this.viewContainerManager.getView(t),a=this.viewContainerManager.getView(t);this.textEditorManager.forceDoneLocalText([t]);const c=a==null?void 0:a.displayer;if(c&&c.setActive(!1),await this.worker.forceDoneLocalWorks(t,e,"scene-change"),!o())return;const l=r.targetScenePath;l!==e&&(this.pendingSceneChecks.add(this.getPendingSceneCheckKey(t,e)),await this.reconcileSceneStorageIfPending(t,l),o()&&((u=this.collector)!=null&&u.hasSelector(t,e)&&this.worker.blurSelector(t,e),this.viewContainerManager.setViewScenePath(t,l),this.schedulePendingSceneChecks(t,l)))}getPendingSceneCheckKey(t,e){return JSON.stringify([t,e])}parsePendingSceneCheckKey(t){try{const e=JSON.parse(t);if(Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="string")return[e[0],e[1]]}catch{}}async reconcileSceneStorageIfPending(t,e){const r=this.getPendingSceneCheckKey(t,e);this.pendingSceneChecks.has(r)&&await this.reconcileSceneStorage(t,e)}async reconcileSceneStorage(t,e){var i;if(this.isDestroying||this.isDestroyed)return;const r=this.getPendingSceneCheckKey(t,e),n=(i=this.collector)==null?void 0:i.getStorageData(t,e);if(!n||!this.collector){this.pendingSceneChecks.delete(r);return}for(const[o,a]of Object.entries(n)){if(!a)continue;if(o===Ne||this.collector.isOwn(o)&&this.collector.getLocalId(o)===Ne){this.collector.updateValue(o,void 0,{viewId:t,scenePath:e,isSync:!0});continue}if(!this.collector.isOwn(o))continue;const l=await Ep(a);if(l.status==="unrecoverable")continue;const u=l.value;if(l.status==="already-stable")continue;const h=this.collector.getLocalId(o);h&&this.collector.dispatch({...u,workId:h,viewId:t,scenePath:e,isSync:!0})}this.pendingSceneChecks.delete(r)}schedulePendingSceneChecks(t,e){const r=this.lifecycleGeneration,n=()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==r)return;const o=this.getPendingSceneCheckKey(t,e);for(const a of[...this.pendingSceneChecks]){if(a===o||!this.pendingSceneChecks.has(a))continue;const c=this.parsePendingSceneCheckKey(a);c?this.reconcileSceneStorage(c[0],c[1]):this.pendingSceneChecks.delete(a)}},i=window.requestIdleCallback;i?i(n,{timeout:500}):window.setTimeout(n,0)}scheduleOrphanRepair(){this.isDestroying||this.isDestroyed||(this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=setTimeout(()=>{this.orphanRepairTimer=void 0,this.repairOrphanStorage()},750))}captureOrphanRepairMembers(){var o;const t=this.roomMember.getAllRoomMembers(),e=(o=this.collector)==null?void 0:o.uid;if(!e)return;const r=t.filter(a=>{var c;return typeof a.memberId=="number"&&!!((c=a.payload)!=null&&c.uid)}).map(a=>{var c;return{memberId:a.memberId,uid:(c=a.payload)==null?void 0:c.uid}}).sort((a,c)=>a.memberId-c.memberId),n=r.find(a=>a.uid===e),i=r[0];if(!(!n||!i))return{digest:JSON.stringify(r),leaderMemberId:i.memberId,selfMemberId:n.memberId,selfUid:e,onlineUids:new Set(r.map(a=>a.uid))}}isCurrentOrphanRepairMembers(t){var r;if(this.isDestroying||this.isDestroyed||!((r=this.room)!=null&&r.isWritable)||this.room.phase!==De.RoomPhase.Connected)return!1;const e=this.captureOrphanRepairMembers();return!!e&&e.digest===t.digest}async repairOrphanStorage(){var n,i,o,a,c,l,u;if(this.isDestroying||this.isDestroyed||!((n=this.room)!=null&&n.isWritable)||this.room.phase!==De.RoomPhase.Connected||!this.collector)return;const t=this.collector,e=this.captureOrphanRepairMembers();if(!e||e.selfUid!==t.uid||e.selfMemberId!==e.leaderMemberId)return;const r=e.onlineUids;for(const[h,d]of Object.entries(t.storage)){if(this.isDestroying||this.isDestroyed)return;if(!t.isViewPendingSyncDiscarded(h))for(const[f,g]of Object.entries(d||{})){if(t.isViewPendingSyncDiscarded(h))break;for(const[y,T]of Object.entries(g||{})){if(!this.isCurrentOrphanRepairMembers(e))return;if(!T)continue;const x=T.lastOperator||((i=T.opt)==null?void 0:i.uid);if(!x||r.has(x)||!((((o=T.opt)==null?void 0:o.workState)||((a=T.updateNodeOpt)==null?void 0:a.workState))!==de.Done||!!((c=T.op)!=null&&c.length)&&!T.ops))continue;if(t.getLocalId(y)===Ne||T.toolsType===q.Selector){t.updateExistingValue(y,void 0,{viewId:h,scenePath:f,isSync:!0});continue}const S=await Ep(T);if(!this.isCurrentOrphanRepairMembers(e))return;if(S.status==="unrecoverable"||S.status==="already-stable")continue;const p=(u=(l=t.storage[h])==null?void 0:l[f])==null?void 0:u[y];!p||p!==T||(S.value.lastOperator=x,t.updateExistingValue(y,S.value,{viewId:h,scenePath:f,isSync:!0,preserveLastOperator:!0}))}}}}requestToolChange(t){var i,o;const e={...(i=this.room)==null?void 0:i.state.memberState,...t},r=this.getToolsKey(e),n=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType;if(r===n){this.setToolChangePending(!1,"same-tool",r);return}this.setToolChangePending(!0,"requested",r)}setToolChangePending(t,e="manual",r){this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=t,t&&(this.toolChangePendingTimer=window.setTimeout(()=>{this.toolChangePendingTimer=void 0,this.toolChangePending=!1},500))}get isToolChangePending(){return this.toolChangePending||this.isDestroying}getToolsKey(t){const e=t.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case Le.text:return t.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Text;case Le.pencil:return t.useLaserPen?q.LaserPen:q.Pencil;case Le.eraser:return q.Eraser;case Le.pencilEraser:return this.pluginOptions.extras.pencilEraser.useBitMap===!1?q.PencilEraser:q.BitMapEraser;case Le.selector:return q.Selector;case Le.clicker:return q.Clicker;case Le.hand:return q.Hand;case Le.laserPointer:return q.Hand;case Le.arrow:return t.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Arrow;case Le.straight:return t.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Straight;case Le.ellipse:return t.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Ellipse;case Le.rectangle:return t.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Rectangle;case Le.shape:if(t.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),t.shapeType===Zt.Pentagram||t.shapeType===Zt.Star)return q.Star;if(t.shapeType===Zt.Polygon||t.shapeType===Zt.Triangle||t.shapeType===Zt.Rhombus)return q.Polygon;if(t.shapeType===Zt.SpeechBalloon)return q.SpeechBalloon;break}return q.Hand}getToolsOpt(t,e){if(t===q.Clicker)return{toolsType:t,toolsOpt:{}};const r={strokeColor:qn(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(t){case q.Text:r.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),r.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),r.textAlign=(e==null?void 0:e.textAlign)||"left",r.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",r.fontColor=(e==null?void 0:e.textColor)&&qn(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||r.strokeColor||"rgba(0,0,0,1)",r.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&qn(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",r.bold=(e==null?void 0:e.bold)&&"bold"||void 0,r.italic=(e==null?void 0:e.italic)&&"italic"||void 0,r.underline=(e==null?void 0:e.underline)||void 0,r.lineThrough=(e==null?void 0:e.lineThrough)||void 0,r.text="",r.strokeColor=void 0;break;case q.Pencil:{const n=(e==null?void 0:e.strokeType)||Be.Normal;r.strokeType=n,r.autoShape=!!(e!=null&&e.autoShape),r.previewLocalOnly=!!(e!=null&&e.autoShape),r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case q.PencilEraser:case q.BitMapEraser:case q.Eraser:if(r.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,t===q.BitMapEraser){const n=r;n.fullLayerDoingMask=gpe(this.pluginOptions.extras.pencilEraser.fullLayerDoingMask),n.fullLayerDoingMaskMaxInputPoints=Rc(this.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints),n.removeOnDone=this.pluginOptions.extras.pencilEraser.removeOnDone!==!1,n.maxImageWidth=this.pluginOptions.extras.pencilEraser.maxImageWidth,n.maxImageHeight=this.pluginOptions.extras.pencilEraser.maxImageHeight}break;case q.LaserPen:{r.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case q.Arrow:case q.Straight:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.strokeType=n,r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n);break}case q.Ellipse:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?r.strokeType=Be.Normal:r.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=r.strokeType;r.lineCap=this.getLineCap(n),r.lineDash=this.getLineDash(n),t===q.Star&&(e.shapeType===Zt.Pentagram?(r.vertices=10,r.innerVerticeStep=2,r.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(r.vertices=e.vertices,r.innerVerticeStep=e.innerVerticeStep,r.innerRatio=e.innerRatio)),t===q.Polygon&&(e.shapeType===Zt.Triangle?r.vertices=3:e.shapeType===Zt.Rhombus?r.vertices=4:e.vertices&&(r.vertices=e.vertices)),r.fillColor=(e==null?void 0:e.fillColor)&&qn(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",t===q.SpeechBalloon&&(r.placement=e.placement||"bottomLeft");break}}return{toolsType:t,toolsOpt:r}}getLineCap(t){switch(t){case Be.Normal:return this.pluginOptions.extras.normalStroke.lineCap||He.normalStroke.lineCap;case Be.Dotted:return this.pluginOptions.extras.dottedStroke.lineCap||He.dottedStroke.lineCap;case Be.LongDotted:return this.pluginOptions.extras.longDottedStroke.lineCap||He.longDottedStroke.lineCap;default:return}}getLineDash(t){switch(t){case Be.Normal:return;case Be.Dotted:{const{segment:e,gap:r}=this.pluginOptions.extras.dottedStroke||He.dottedStroke;return[e,r]}case Be.LongDotted:{const{segment:e,gap:r}=this.pluginOptions.extras.longDottedStroke||He.longDottedStroke;return[e,r]}default:return}}effectViewContainer(t){var r,n,i,o,a;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(r=this.worker)==null||r.unWritable(),(n=this.cursor)==null||n.unabled();else switch(t!==q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId),t){case q.Text:case q.Pencil:case q.LaserPen:case q.Arrow:case q.Straight:case q.Rectangle:case q.Ellipse:case q.Star:case q.Polygon:case q.SpeechBalloon:case q.Triangle:case q.Rhombus:case q.Eraser:case q.PencilEraser:case q.BitMapEraser:case q.Selector:case q.Clicker:this.room.disableDeviceInputs=!0,(i=this.worker)==null||i.abled(),t===q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId);break;default:this.room.disableDeviceInputs=!1,(o=this.worker)==null||o.unWritable(),(a=this.cursor)==null||a.unabled();break}const e=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==e)return;this.viewContainerManager.getAllViews().forEach(l=>{l!=null&&l.displayer&&l.displayer.bindToolsClass()})},0)}async getBoundingRect(t){var r,n,i,o,a;const e=await((r=this.worker)==null?void 0:r.getBoundingRect(t));if(e){const c=((i=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:i.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:a.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(t,e,r,n,i,o,a){const c=await this.worker.getSnapshot(e,r,n,i);c&&c.forEach(l=>{if(l)try{t.drawImage(l,o||0,a||0)}catch(u){console.error("[screenshotToCanvas] Failed to draw ImageBitmap:",u)}l instanceof ImageBitmap?l.close():l instanceof HTMLImageElement&&l.remove()})}async scenePreview(t,e){var o,a,c,l;const r=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(t);if(!r)return;const n=this.viewContainerManager.getView(r);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((c=n.cameraOpt)!=null&&c.height))return;const i=await((l=this.worker)==null?void 0:l.getSnapshot(t));if(i&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:d,height:f}=n.cameraOpt;u.width=d,u.height=f,h&&(i.forEach(g=>{g&&(h.drawImage(g,0,0),g instanceof ImageBitmap?g.close():g instanceof HTMLImageElement&&g.remove())}),e.crossOrigin="anonymous",e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()})}}switchToText(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:Le.text})}switchToSelector(){var t;(t=this.room)==null||t.setMemberState({currentApplianceName:Le.selector})}async runEffectWork(t){if(this.hasSwitchToSelectorEffect){const e=await new Promise(r=>{this.effectResolve=r;try{this.switchToSelector()}catch(n){this.effectResolve=void 0,this.logLifecycleError(`[Appliance]: switchToSelector effect failed: ${n instanceof Error?n.message:String(n)}`),r(!1)}});this.effectResolve=void 0,e&&t&&t()}}setSnapshootData(){var t;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(t=this.room)==null?void 0:t.state.memberState))}getSnapshootData(t){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(t)}clearSnapshootData(){var t;(t=this.snapshootStateMap)==null||t.clear(),this.snapshootStateMap=void 0}useBitMapEraser(t){this.pluginOptions.extras.pencilEraser.useBitMap=t}consoleWorkerInfo(){var t;this.logger.info(`[Appliance]: [render-runtime] buildMarker=${this.renderRuntimeBuildMarker}`),(t=this.worker)==null||t.consoleWorkerInfo()}filterRenderByUid(t,e,r=!0){var i;this.viewContainerManager.getView(t)&&((i=this.renderControl)==null||i.publishRender({viewId:t,option:e,isSync:r}))}cancelFilterRender(t,e=!0){var r;(r=this.renderControl)==null||r.publishRender({viewId:t,isSync:e})}async createMiniMap(t,e){var n,i,o;if(this.isUseSimple)throw new Error("simple mode not support createMiniMap");const r=await((n=this.miniMapManager)==null?void 0:n.getMiniMapCamera(t));if(r&&await((i=this.miniMapManager)==null?void 0:i.createMiniMap(t,e,r))){const c=(o=this.miniMapManager)==null?void 0:o.getMiniMapCanvas(t);if(c){const l=c.getContext("2d");if(l){const u=this.viewContainerManager.getView(t);u!=null&&u.focusScenePath&&this.screenshotToCanvas(l,u.focusScenePath,r.width,r.height,r)}}}}async destroyMiniMap(t){var e;(e=this.miniMapManager)==null||e.destroyMiniMap(t)}insertIconify(t,e){var n;if(this.viewContainerManager.getView(t)&&this.room){const i=this.room.state.memberState,o=qn(i.strokeColor[0],i.strokeColor[1],i.strokeColor[2],i.strokeOpacity||1);(n=this.worker)==null||n.insertIconify(t,{...e,strokeColor:o})}}insertBackgroundSVG(t,e){var r;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");(r=this.worker)==null||r.insertBackgroundSVG(t,e)}reloadBackgroundImage(t){if(t.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=this.viewContainerManager.getView(t.viewId);return e?!e.focusScenePath||t.scenePath!==void 0&&e.focusScenePath!==t.scenePath?{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"}:this.backgroundImageLoadCoordinator.reload({...t,scenePath:t.scenePath??e.focusScenePath}):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}}async insertBackgroundMarkMap(t,e){var r;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");return await((r=this.worker)==null?void 0:r.insertBackgroundMarkMap(t,e))}updateBackgroundMarkMap(t,e,r){var i;const n=this.viewContainerManager.getView(t);if(n&&this.collector&&this.collector.hasTargetDataByViewId(t,e)){const{data:o,scenePath:a}=this.collector.getTargetDataByViewId(t,e);if(!a)throw new Error("updateBackgroundMarkMap scenePath is not exist");const c=n.focusScenePath;if(c&&c!==a)throw new Error("updateBackgroundMarkMap scenePath is not the focus scene path");if(o&&a)(i=this.worker)==null||i.updateBackgroundMarkMap(t,e,r);else throw new Error("updateBackgroundMarkMap data or scenePath is not exist")}}usePlugin(t){var e;return(e=this.pluginManager)==null?void 0:e.use(t)}async stopDraw(t){var r;const e=this.viewContainerManager.getView(t);e&&await((r=e.displayer)==null?void 0:r.stopEventHandler())}async setViewLocalScenePathChange(t,e){this.viewContainerManager.getView(t)&&await this.onSceneChange(e,t)}};E(cr,"InternalMsgEmitter",new Xl),E(cr,"PublicMsgEmitter",new Xl);let tt=cr;var Yu=(s=>(s.Undo="undo",s.Redo="redo",s))(Yu||{});const Xe=class Xe{createProxy(t,e,r){const n=new Proxy(t,{get(i,o,a){if(typeof o=="string"&&/^\d+$/.test(o))return Reflect.get(i,o,a);const c=Xe.interceptors.hasOwnProperty(o)?Xe.interceptors:i,l=Reflect.get(c,o,a);return typeof l=="function"&&c===Xe.interceptors?l.bind(n):l},set(i,o,a,c){const l=Xe.proxyCallbacks.get(c),u=(l==null?void 0:l.arrayType)||"undo";if(o==="length"){const h=i.length,d=[];if(a<h)for(let g=a;g<h;g++)d.push(i[g]);const f=Reflect.set(i,o,a,c);if(l!=null&&l.callback)for(let g=0;g<d.length;g++)l.callback({operation:"delete",index:a+g,oldValue:d[g],arrayType:u});return f}return typeof o=="string"&&/^\d+$/.test(o),Reflect.set(i,o,a,c)},deleteProperty(i,o){const a=Xe.proxyCallbacks.get(n),c=(a==null?void 0:a.arrayType)||"undo";if(typeof o=="string"&&/^\d+$/.test(o)){const l=parseInt(o,10),u=i[l],h=Reflect.deleteProperty(i,o);return a!=null&&a.callback&&u!==void 0&&a.callback({operation:"delete",index:l,oldValue:u,arrayType:c}),h}return Reflect.deleteProperty(i,o)}});return Xe.proxyToRaw.set(n,t),Xe.proxyCallbacks.set(n,{callback:e,arrayType:r}),n}};E(Xe,"proxyToRaw",new WeakMap),E(Xe,"proxyCallbacks",new WeakMap),E(Xe,"interceptors",{entries(...t){return Xe.proxyToRaw.get(this).entries(...t)},forEach(...t){return Xe.proxyToRaw.get(this).forEach(...t)},map(...t){return Xe.proxyToRaw.get(this).map(...t)},filter(...t){return Xe.proxyToRaw.get(this).filter(...t)},find(...t){return Xe.proxyToRaw.get(this).find(...t)},findIndex(...t){return Xe.proxyToRaw.get(this).findIndex(...t)},includes(...t){return Xe.proxyToRaw.get(this).includes(...t)},indexOf(...t){return Xe.proxyToRaw.get(this).indexOf(...t)},slice(...t){return Xe.proxyToRaw.get(this).slice(...t)},concat(...t){return Xe.proxyToRaw.get(this).concat(...t)},push(...t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=e.push(...t);if(n!=null&&n.callback)for(let c=o;c<e.length;c++)n.callback({operation:"add",index:c,newValue:e[c],arrayType:i});return a},customPush(...t){return Xe.proxyToRaw.get(this).push(...t)},pop(){const t=Xe.proxyToRaw.get(this),e=this,r=Xe.proxyCallbacks.get(e),n=(r==null?void 0:r.arrayType)||"undo",i=t.length,o=t[i-1],a=t.pop();return r!=null&&r.callback&&i>0&&r.callback({operation:"delete",index:i-1,oldValue:o,arrayType:n}),a},shift(){const t=Xe.proxyToRaw.get(this),e=this,r=Xe.proxyCallbacks.get(e),n=(r==null?void 0:r.arrayType)||"undo",i=t[0],o=t.shift();return r!=null&&r.callback&&t.length>0&&r.callback({operation:"delete",index:0,oldValue:i,arrayType:n}),o},unshift(...t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.unshift(...t);if(n!=null&&n.callback)for(let a=0;a<t.length;a++)n.callback({operation:"add",index:a,newValue:e[a],arrayType:i});return o},splice(t,e,...r){const n=Xe.proxyToRaw.get(this),i=this,o=Xe.proxyCallbacks.get(i),a=(o==null?void 0:o.arrayType)||"undo",c=e??n.length-t,l=n.slice(t,t+c),u=n.splice(t,c,...r);if(o!=null&&o.callback){for(let h=0;h<l.length;h++)o.callback({operation:"delete",index:t+h,oldValue:l[h],arrayType:a});for(let h=0;h<r.length;h++)o.callback({operation:"add",index:t+h,newValue:n[t+h],arrayType:a})}return u},customSplice(t,e,...r){const n=Xe.proxyToRaw.get(this),i=e??n.length-t;return n.splice(t,i,...r)},get length(){return Xe.proxyToRaw.get(this).length},set length(t){const e=Xe.proxyToRaw.get(this),r=this,n=Xe.proxyCallbacks.get(r),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=[];if(t<o)for(let c=t;c<o;c++)a.push(e[c]);if(e.length=t,n!=null&&n.callback)for(let c=0;c<a.length;c++)n.callback({operation:"delete",index:t+c,oldValue:a[c],arrayType:i})}});let Gu=Xe;const Xr=class Xr{constructor(t){E(this,"emitter",new Xl);E(this,"undoStack");E(this,"redoStack");E(this,"worker");E(this,"control");E(this,"room");E(this,"viewId");E(this,"enableGlobal");E(this,"isTicking");E(this,"_undoTickerId");E(this,"scenePath");E(this,"tickStartStorerCache");E(this,"excludeIds",new Set);E(this,"pendingState",new Map);E(this,"tickerEndWaiters",new Map);E(this,"undoLifecycleListeners",new Set);E(this,"pendingWaitCancels",new Set);E(this,"destroyed",!1);E(this,"lifecycleCache",new Map);E(this,"stackRevision",0);E(this,"tickStartCaches",new Map);E(this,"tickStartExcludeIds",new Map);E(this,"timingFix");E(this,"ackTimeout");E(this,"isGlobalStackTransaction",!1);E(this,"pendingGlobalServiceData");E(this,"pendingArrayChanges",[]);E(this,"onChangeScene",ve.debounce(()=>{if(this.destroyed)return;const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(n=>n.scenePath===t).length,r=this.redoStack.filter(n=>n.scenePath===t).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(r)}},Xr.waitTime));const{control:e,internalMsgEmitter:r,viewId:n,enableGlobal:i}=t;this.control=e,this.emitter=r;const o=this.control.pluginOptions.extras.undoRedo;Xr.MaxStackLength=o.maxStackLength||He.undoRedo.maxStackLength,this.timingFix=o.timingFix??He.undoRedo.timingFix,this.ackTimeout=o.ackTimeout||He.undoRedo.ackTimeout;const a=new Gu,c=[],l=[];this.undoStack=a.createProxy(c,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncUndoStack)},Yu.Undo),this.redoStack=a.createProxy(l,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncRedoStack)},Yu.Redo),this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n,this.enableGlobal=i}reportStackLength(t,e=this.undoStack.length,r=this.redoStack.length){var n,i,o;(o=(i=(n=this.room)==null?void 0:n.logger)==null?void 0:i.info)==null||o.call(i,`[Appliance]: [undo-stack] ${t} viewId=${this.viewId} undoLength=${e} redoLength=${r}`)}lifecycleKey(t){return`${t.viewId}|${t.scenePath}|${t.tickerId}|${t.transactionId}`}getIdentity(t,e){return{viewId:e.viewId,scenePath:e.scenePath,tickerId:t,transactionId:e.transactionId}}emitUndoLifecycle(t){if(this.destroyed)return;const e=this.lifecycleKey(t);for(this.lifecycleCache.set(e,t);this.lifecycleCache.size>100;){const r=this.lifecycleCache.keys().next().value;if(r===void 0)break;this.lifecycleCache.delete(r)}this.undoLifecycleListeners.forEach(r=>r(t))}onUndoLifecycle(t){return this.destroyed?()=>{}:(this.undoLifecycleListeners.add(t),()=>this.undoLifecycleListeners.delete(t))}getPendingTickerSnapshots(t){const e=[];return this.pendingState.forEach((r,n)=>{r.scenePath===t&&e.push({...this.getIdentity(n,r),source:r.source,startedAt:r.startedAt,barrierEpoch:r.barrierEpoch,phase:r.phase,ownerPromiseActive:r.ownerPromiseActive,finalizeRequested:r.finalizeRequested,scopeMode:r.scopeMode})}),e}waitForUndoStackEnd(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="stack-end"?Promise.resolve(r):(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o,a=!1,c=!1,l=()=>{};const u=()=>{o!==void 0&&clearTimeout(o),l(),this.pendingWaitCancels.delete(h)},h=()=>{c||(c=!0,u(),i(new Error(`undo view destroyed: ${this.viewId}`)))},d=y=>{if(a)return;a=!0;const T=Math.max(0,y+e-Date.now());o=setTimeout(()=>{c=!0,u(),i(new Error(`undo stack end timeout: ${this.lifecycleKey(t)}`))},T)},f=()=>{const y=this.pendingState.get(t.tickerId);(y==null?void 0:y.transactionId)===t.transactionId&&y.finalizedAt!==void 0&&d(y.finalizedAt)},g=y=>{if(this.lifecycleKey(y)===this.lifecycleKey(t)){if(y.phase==="finalize-requested"){d(y.finalizedAt);return}if(y.phase==="data-done"){f();return}c=!0,u(),y.phase==="stack-end"?n(y):i(y)}};l=this.onUndoLifecycle(g),this.pendingWaitCancels.add(h),(r==null?void 0:r.phase)==="finalize-requested"?d(r.finalizedAt):(r==null?void 0:r.phase)==="data-done"&&f()})}waitForDataDone(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="data-done"||(r==null?void 0:r.phase)==="stack-end"?Promise.resolve():(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o=!1,a,c=()=>{};const l=()=>{a!==void 0&&clearTimeout(a),c(),this.pendingWaitCancels.delete(u)},u=()=>{o||(o=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(t)&&d.phase!=="finalize-requested"&&(o=!0,l(),d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),e!==void 0&&e>0&&(a=setTimeout(()=>{o||(o=!0,l(),i(new Error(`undo data done timeout: ${this.lifecycleKey(t)}`)))},e))})}waitForFinalizeRequested(t,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const r=this.lifecycleCache.get(this.lifecycleKey(t));return(r==null?void 0:r.phase)==="finalize-requested"||(r==null?void 0:r.phase)==="data-done"||(r==null?void 0:r.phase)==="stack-end"?Promise.resolve():(r==null?void 0:r.phase)==="failed"?Promise.reject(r):new Promise((n,i)=>{let o,a=!1,c=()=>{};const l=()=>{o!==void 0&&clearTimeout(o),c(),this.pendingWaitCancels.delete(u)},u=()=>{a||(a=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(t)&&(a=!0,l(),d.phase==="finalize-requested"||d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),o=setTimeout(()=>{a=!0,l(),i(new Error(`undo finalize timeout: ${this.lifecycleKey(t)}`))},e)})}emitUndoStepsUpdate(t){this.emitter.emitAsync("onCanUndoStepsUpdate",t,this.viewId)}emitRedoStepsUpdate(t){this.emitter.emitAsync("onCanRedoStepsUpdate",t,this.viewId)}beginGlobalStackTransaction(){this.enableGlobal&&(this.isGlobalStackTransaction=!0)}flushPendingArrayChanges(){if(!this.enableGlobal||!this.pendingArrayChanges.length)return;const t=this.pendingArrayChanges.splice(0);for(const e of t)this.handleArrayChange(e.params,e.operation)}endGlobalStackTransaction(){if(!this.enableGlobal)return;const t=this.pendingGlobalServiceData;this.isGlobalStackTransaction=!1,this.pendingGlobalServiceData=void 0,this.flushPendingArrayChanges(),t&&this.pullServiceData(t)}ackRender(t,e,r){if(!this.timingFix){this.undoTickerEnd(t,e);return}const n=this.pendingState.get(t);!n||n.scenePath!==e||(n.gotRender=!0,this.mergeMeta(n,r),n.finalizeRequested&&(this.armAckTimeout(t,n),this.tryEnd(t)))}ackStorage(t,e,r,n){if(!this.timingFix)return;const i=this.pendingState.get(t);!i||i.scenePath!==e||(r&&i.ackedStorageKeys.add(r),aye(i.scopeKeys,r)&&i.finalizeRequested&&(i.scopeKeys.size?i.gotStorage=[...i.scopeKeys].every(a=>i.ackedStorageKeys.has(a)):i.gotStorage=!0),this.mergeMeta(i,n),!i.finalizeRequested)||(this.armAckTimeout(t,i),this.tryEnd(t))}collectExpectedWorkIds(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e||!r.length)return;Bl(this.collector,this.viewId,e,r).forEach(o=>n.collectedScopeKeys.add(o)),n.scopeMode==="dynamic"&&n.finalizeRequested&&(n.scopeKeys.clear(),n.collectedScopeKeys.forEach(o=>n.scopeKeys.add(o)),n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=!1),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(t,n),this.tryEnd(t))}reopenStorageAck(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e||!r.length)return;const i=Bl(this.collector,this.viewId,e,r);i.size&&(i.forEach(o=>n.ackedStorageKeys.delete(o)),n.finalizeRequested&&(n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=n.scopeMode==="static"),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(t,n)))}finalizeRequested(t,e,r){const n=this.pendingState.get(t);if(!n||n.scenePath!==e)return;const i=n.finalizeRequested,o=Bl(this.collector,this.viewId,e,r);n.scopeMode==="dynamic"?(o.forEach(a=>n.collectedScopeKeys.add(a)),n.scopeKeys.clear(),n.collectedScopeKeys.forEach(a=>n.scopeKeys.add(a))):o.forEach(a=>n.scopeKeys.add(a)),n.finalizeRequested=!0,n.finalizedAt??(n.finalizedAt=Date.now()),n.phase="finalizing",n.gotStorage=oye(n),this.armAckTimeout(t,n),i||this.emitUndoLifecycle({...this.getIdentity(t,n),phase:"finalize-requested",source:n.source,scopeMode:n.scopeMode,finalizedAt:n.finalizedAt}),this.tryEnd(t)}mergeMeta(t,e){nye(t,e)}armAckTimeout(t,e){e.finalizeRequested&&sye(e)&&(e.ackTimer=setTimeout(()=>{this.forceFlushPending(t)},this.ackTimeout))}tryEnd(t){const e=this.pendingState.get(t);if(!e||!iye(e))return;const r=e.meta,n=e.phase==="failed";if(n||this.emitUndoLifecycle({...this.getIdentity(t,e),phase:"data-done",source:e.source,completedAt:Date.now()}),this.undoTickerEndSync(t,e.viewId,e.scenePath,!0),!n){const i=this.undoStack.some(o=>o.id===`${t}-${this.uid}`);e.phase="completed",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(t,e),phase:"stack-end",source:e.source,outcome:i?"committed":"no-change",undoItemCreated:i,stackRevision:this.stackRevision})}r.copyAck&&r.emitEventType&&r.requestId&&this.emitter.emit("undoAckApplied",{viewId:e.viewId,scenePath:e.scenePath,requestId:r.requestId,emitEventType:r.emitEventType}),r.isWritable&&this.worker.abled()}forceFlushPending(t){const e=this.pendingState.get(t);if(!e)return;e.phase="failed";const r={...this.getIdentity(t,e),phase:"failed",source:e.source,reason:"timeout",missingRender:e.expectedRender&&!e.gotRender,missingStorageIds:[...e.scopeKeys].filter(n=>!e.ackedStorageKeys.has(n))};this.emitUndoLifecycle(r),e.gotRender=e.expectedRender,e.gotStorage=e.expectedStorage,this.tryEnd(t)}clearPendingState(t){const e=this.pendingState.get(t);e&&(e.ackTimer&&clearTimeout(e.ackTimer),this.pendingState.delete(t)),this.tickStartCaches.delete(t),this.tickStartExcludeIds.delete(t);const r=this.tickerEndWaiters.get(t);r&&(this.tickerEndWaiters.delete(t),r.forEach(n=>n()))}waitForTickerEnd(t,e){return!this.pendingState.has(t)&&this.undoTickerId!==t?Promise.resolve():new Promise(r=>{let n;const i=()=>{n!==void 0&&clearTimeout(n);const a=this.tickerEndWaiters.get(t);a==null||a.delete(i),(a==null?void 0:a.size)===0&&this.tickerEndWaiters.delete(t),r()},o=this.tickerEndWaiters.get(t)||new Set;o.add(i),this.tickerEndWaiters.set(t,o),e!==void 0&&(n=setTimeout(i,e))})}disposeViewTickers(t="view-destroyed"){var o,a,c;if(this.destroyed)return;const e=this.undoStack.length,r=this.redoStack.length,n=this.pendingState.size,i=this.isTicking;this.onChangeScene.cancel();for(const l of[...this.pendingWaitCancels])l();this.pendingWaitCancels.clear();for(const l of[...this.pendingState.keys()])this.clearPendingState(l);this.tickerEndWaiters.forEach(l=>{l.forEach(u=>u())}),this.tickerEndWaiters.clear(),this.undoLifecycleListeners.clear(),this.lifecycleCache.clear(),this.tickStartCaches.clear(),this.tickStartExcludeIds.clear(),this.excludeIds.clear(),this.pendingArrayChanges.length=0,this.pendingGlobalServiceData=void 0,this.isGlobalStackTransaction=!1,this.isTicking=!1,this._undoTickerId=void 0,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.destroyed=!0,this.undoStack.customSplice(0),this.redoStack.customSplice(0),(e>0||r>0||n>0||i)&&((c=(a=(o=this.room)==null?void 0:o.logger)==null?void 0:a.info)==null||c.call(a,`[Appliance]: [undo-stack] undo-disposed:${t} viewId=${this.viewId} discardedUndoLength=${e} discardedRedoLength=${r} pendingTickerCount=${n} wasTicking=${i}`))}cancelUndoTicker(t,e,r){const n=this.pendingState.has(t),i=this.undoTickerId===t&&this.viewId===e&&this.scenePath===r;if(!n&&!i)return;const o=this.pendingState.get(t);i&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(t),o&&(o.phase="cancelled",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(t,o),phase:"stack-end",source:o.source,outcome:"no-change",undoItemCreated:!1,stackRevision:this.stackRevision}))}cancelViewUndoTicker(){const t=this.undoTickerId,e=this.scenePath;t===void 0||!e||this.cancelUndoTicker(t,this.viewId,e)}getStartCache(t){return this.tickStartCaches.get(t)||this.tickStartStorerCache}getExcludeIds(t){return this.tickStartExcludeIds.get(t)||this.excludeIds}resetLegacyTicker(){this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}handleArrayChange(t,e){if(!this.collector||!this.enableGlobal)return;if(this.isGlobalStackTransaction){this.pendingArrayChanges.push({operation:e,params:{...t}});return}const{operation:r,oldValue:n,newValue:i}=t;let o,a;r==="delete"&&n?(o=n,a=n.id):r==="add"&&i&&(o=i,a=i.id),o&&a&&this.collector.dispatchUndoTicker({operation:e,syncType:r,viewId:this.viewId,undoTickerId:a,data:o})}get collector(){return this.control.collector}get undoTickerId(){return this._undoTickerId}get tmpTickStartStorerCache(){return this.tickStartStorerCache}get uid(){var t;return((t=this.control.collector)==null?void 0:t.uid)||""}addExcludeIds(t){const e=this.undoTickerId!==void 0?this.pendingState.get(this.undoTickerId):void 0;if(!(this.timingFix&&(e!=null&&e.scopeKeys.size))){if(this.timingFix&&this.undoTickerId!==void 0){const r=this.tickStartExcludeIds.get(this.undoTickerId);if(r)for(const n of t)r.add(n);return}if(this.isTicking)for(const r of t)this.excludeIds.add(r)}}undoTickerStart(t,e,r){var n,i,o;if(!this.destroyed){if(!this.timingFix){this.legacyUndoTickerStart(t,e);return}if(!r)throw new Error("[appliance-plugin] addUndoTicker expectedAcks is required");if(!r.source)throw new Error("[appliance-plugin] addUndoTicker source is required");if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){if(this.undoTickerId&&this.viewId&&this.scenePath){const h=this.undoTickerId;this.pendingState.get(h)||this.undoTickerEndSync(h,this.viewId,this.scenePath)}this.isTicking=!0;const a=this.collector.transformKey(Ne);this.excludeIds.add(a),this._undoTickerId=t,this.scenePath=e;const c=((n=this.collector)==null?void 0:n.storage[this.viewId])&&((i=this.collector)==null?void 0:i.storage[this.viewId][this.scenePath])||{},l=new Map(Object.entries(ve.cloneDeep(c))),u=new Set([a]);this.tickStartStorerCache=l,this.tickStartCaches.set(t,l),this.tickStartExcludeIds.set(t,u),this.pendingState.set(t,rye({tickerId:t,viewId:this.viewId,scenePath:e,expectedAcks:r})),(o=r.workIds)!=null&&o.length&&this.finalizeRequested(t,e,r.workIds.map(String))}}}legacyUndoTickerStart(t,e){var r,n;if(this.collector&&(this.undoTickerId!==t||this.scenePath!==e)){this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const i=this.collector.transformKey(Ne);this.excludeIds.add(i),this._undoTickerId=t,this.scenePath=e;const o=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(ve.cloneDeep(o)))}}undoTickerEnd(t,e,r){if(this.timingFix){this.forceFlushPending(t);return}this.undoTickerId&&t===this.undoTickerId&&e===this.scenePath?this.undoTickerEndSync(t,this.viewId,e,!0,r):this.resetLegacyTicker()}undoTickerEndSync(t,e,r,n=!0,i){var c,l;if(i&&i.length)for(const u of i)this.excludeIds.delete(u);const o=t===this.undoTickerId&&e===this.viewId&&r===this.scenePath,a=this.pendingState.has(t)&&e===this.viewId&&!!this.getStartCache(t);if((o||a)&&this.getStartCache(t)){const u=((c=this.collector)==null?void 0:c.storage[e])&&((l=this.collector)==null?void 0:l.storage[e][r])||{},h=this.pendingState.get(t),d=this.diffFun(this.getStartCache(t),new Map(Object.entries(u)),!0,this.getExcludeIds(t),h==null?void 0:h.scopeKeys);d.size&&(this.undoStack.push({id:`${t}-${this.uid}`,data:ve.cloneDeep(d),scenePath:r}),this.undoStack.length>Xr.MaxStackLength&&this.undoStack.shift(),n&&this.emitUndoStepsUpdate(this.undoStack.length),this.redoStack.length&&(this.redoStack.length=0,n&&this.emitRedoStepsUpdate(this.redoStack.length))),o&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(t),this.reportStackLength("undo-ticker-end")}}transformToUndoStackItem(t){const e=[];for(const[r,n]of Object.entries(t)){if(!(n!=null&&n.data))continue;const i=new Set;for(const[o,a]of Object.entries(n.data))i.add({key:o,dataType:a.dataType,data:a.data});e.push({id:r,scenePath:n.scenePath,data:i})}return e}pullServiceData(t){if(this.enableGlobal&&this.isGlobalStackTransaction){this.pendingGlobalServiceData=t;return}if(t){const{undoStack:e,redoStack:r}=t;if(e){const n=this.transformToUndoStackItem(e);for(let i=this.undoStack.length-1;i>=0;i--){const o=this.undoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.undoStack.customSplice(i,1)}for(const i of n){const o=this.undoStack.findIndex(a=>a.id===i.id);o!==-1?this.undoStack[o]=i:this.undoStack.customPush(i)}this.undoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]),c=parseInt(o.id.split("-")[0]);return a-c}),this.emitUndoStepsUpdate(this.undoStack.length)}if(r){const n=this.transformToUndoStackItem(r);for(let i=this.redoStack.length-1;i>=0;i--){const o=this.redoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.redoStack.customSplice(i,1)}for(const i of n){const o=this.redoStack.findIndex(a=>a.id===i.id);o!==-1?this.redoStack[o]=i:this.redoStack.customPush(i)}this.redoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]);return parseInt(o.id.split("-")[0])-a}),this.emitRedoStepsUpdate(this.redoStack.length)}}else this.clear()}undo(t){var r,n;let e;this.beginGlobalStackTransaction();try{if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId;this.timingFix&&this.forceFlushPending(a)}if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId,c=this.scenePath,l=this.getStartCache(a),u=this.pendingState.get(a);if(!l)return this.resetLegacyTicker(),this.undo(t);const h=((r=this.collector)==null?void 0:r.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][c])||{},d=this.diffFun(l,new Map(Object.entries(h)),!1,this.getExcludeIds(a),u==null?void 0:u.scopeKeys),f=this.diffFun(l,new Map(Object.entries(h)),!0,this.getExcludeIds(a),u==null?void 0:u.scopeKeys);d.size===f.size?(this.undoStack.push({id:`${a}-${this.uid}`,data:ve.cloneDeep(d),scenePath:c}),this.undoStack.length>Xr.MaxStackLength&&this.undoStack.shift()):d.size&&!f.size&&(e={id:`${a}-${this.uid}`,data:ve.cloneDeep(d),scenePath:c}),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear(),this.clearPendingState(a)}if(e)this.refreshPlugin(e);else{let a=this.undoStack.length-1;for(;a>=0;){const c=this.undoStack[a];if(c.scenePath===t){const l=c.id;c&&(this.redoStack.push(c),c.data&&this.refreshPlugin(c));const u=this.undoStack.findIndex(h=>h.id===l);u!==-1&&this.undoStack.splice(u,1);break}a--}}const i=this.undoStack.filter(a=>a.scenePath===t).length,o=this.redoStack.filter(a=>a.scenePath===t).length;return this.emitUndoStepsUpdate(i),this.emitRedoStepsUpdate(o),this.reportStackLength("undo-final",i,o),i}finally{this.endGlobalStackTransaction()}}redo(t){this.beginGlobalStackTransaction();try{let e=this.redoStack.length-1;for(;e>=0;){const i=this.redoStack[e];if(i.scenePath===t){const o=i.id;i&&(this.undoStack.push(i),i.data&&this.refreshPlugin(i,!0));const a=this.redoStack.findIndex(c=>c.id===o);a!==-1&&this.redoStack.splice(a,1);break}e--}const r=this.undoStack.filter(i=>i.scenePath===t).length,n=this.redoStack.filter(i=>i.scenePath===t).length;return this.emitUndoStepsUpdate(r),this.emitRedoStepsUpdate(n),this.reportStackLength("redo-final",r,n),n}finally{this.endGlobalStackTransaction()}}clear(){this.clearUndo(),this.clearRedo()}destroy(){this.destroyed||(this.onChangeScene.cancel(),this.disposeViewTickers("plugin-destroyed"),this.undoStack.customSplice(0),this.redoStack.customSplice(0))}clearUndo(){this.undoStack.length=0,this.emitUndoStepsUpdate(this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitRedoStepsUpdate(this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){if(this.destroyed)return;const t=this.control.viewContainerManager.getCurScenePath(this.viewId);if(t){const e=this.undoStack.filter(n=>n.scenePath===t).length,r=this.redoStack.filter(n=>n.scenePath===t).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(r)}}especialDiff(t,e,r,n){if(e===nr.Update)switch(r==null?void 0:r.toolsType){case q.Text:{if(n!=null&&n.opt&&(r!=null&&r.opt)){const o=ve.omit(n.opt,["uid","workState"]),a=ve.omit(r.opt,["uid","workState"]);if(t&&ve.isEqual(o,a))return!0;n.opt.workState!==de.Done&&(n.opt.workState=de.Done),r.opt.workState!==de.Done&&(r.opt.workState=de.Done)}break}}else if(e===nr.Draw||e===nr.Delete)switch(r==null?void 0:r.toolsType){case q.Text:{if(r!=null&&r.opt){const o=r.opt.text;if(t&&!o)return!0;r.opt.workState!==de.Done&&(r.opt.workState=de.Done)}break}}return!1}normalizeUndoSnapshotValue(t,e){var n,i;if(!e)return e;if(((i=(n=this.collector)==null?void 0:n.getLocalId)==null?void 0:i.call(n,t))===Ne||e.toolsType===q.Selector)return;const r=Oye(e);return r.status==="unrecoverable"?ve.cloneDeep(e):r.value}diffFun(t,e,r=!0,n=this.excludeIds,i){const o=new Set,a=t.keys(),c=e.keys();for(const l of a){if(!wp(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,t.get(l)),h=this.normalizeUndoSnapshotValue(l,e.get(l));if(!(!u&&!h)){if(u&&h){if(ve.isEqual(h,u)||this.especialDiff(r,nr.Update,h,u))continue;o.add({dataType:nr.Update,key:l,data:[u,h]});continue}this.especialDiff(r,nr.Delete,u)||u&&o.add({dataType:nr.Delete,key:l,data:u})}}for(const l of c){if(!wp(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,e.get(l));if(u&&!t.has(l)){if(this.especialDiff(r,nr.Draw,u))continue;o.add({dataType:nr.Draw,key:l,data:u})}}return o}isDrawEffectiveScene(t,e){const{key:r}=t;return!e.includes(r)}isDeleteEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}isOldEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}isNewEffectiveScene(t,e){const{key:r}=t;return!!e.includes(r)}refreshPlugin(t,e=!1){var l,u,h,d,f,g,y,T,x,C,L,S,p,m,M,v,R;let r;const{scenePath:n}=t,i=t.data;if(!i||!this.collector)return;const a={...this.collector.getStorageData(this.viewId,n)||{}};let c=!1;for(const b of i.values()){const{dataType:P,data:D,key:z}=b,j=this.collector.getStorageData(this.viewId,n),k=j&&Object.keys(j)||[];switch(P){case nr.Draw:if(r=e?this.isDrawEffectiveScene(b,k):this.isDeleteEffectiveScene(b,k),r)if(e&&!Array.isArray(D)){if((l=D.updateNodeOpt)!=null&&l.useAnimation&&(D.updateNodeOpt.useAnimation=!1),((u=this.collector)==null?void 0:u.getLocalId(z))===Ne&&((h=this.collector)!=null&&h.isOwn(b.key))){const A=D.selectIds;if(A){const N=k.filter(Y=>{var Q,ie;return((Q=this.collector)==null?void 0:Q.getLocalId(Y))===Ne&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var Q;return(Q=this.collector)==null?void 0:Q.storage[this.viewId][n][Y]});let W=!1;for(const Y of N)for(let Q=0;Q<A.length;Q++)(d=Y==null?void 0:Y.selectIds)!=null&&d.includes(A[Q])&&(delete A[Q],W=!0);W&&(D.selectIds=A.filter(Y=>!!Y))}}a[b.key]=D,c=!0}else!e&&!Array.isArray(b.data)&&(delete a[b.key],c=!0);break;case nr.Delete:if(r=e?this.isDeleteEffectiveScene(b,k):this.isDrawEffectiveScene(b,k),r){if(e&&!Array.isArray(D))delete a[z],c=!0;else if(!e&&!Array.isArray(D)){if((f=D.updateNodeOpt)!=null&&f.useAnimation&&(D.updateNodeOpt.useAnimation=!1),((g=this.collector)==null?void 0:g.getLocalId(b.key))===Ne&&((y=this.collector)!=null&&y.isOwn(b.key))){const A=D.selectIds;if(A){const N=k.filter(Y=>{var Q,ie;return((Q=this.collector)==null?void 0:Q.getLocalId(Y))===Ne&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var Q;return(Q=this.collector)==null?void 0:Q.storage[this.viewId][n][Y]});let W=!1;for(const Y of N)for(let Q=0;Q<A.length;Q++)(T=Y==null?void 0:Y.selectIds)!=null&&T.includes(A[Q])&&(delete A[Q],W=!0);W&&(D.selectIds=A.filter(Y=>!!Y))}}a[b.key]=D,c=!0}}break;case nr.Update:if(r=e?this.isNewEffectiveScene(b,k):this.isOldEffectiveScene(b,k),r){if(e&&Array.isArray(D)&&D.length===2){const A=D[1];if((x=A.updateNodeOpt)!=null&&x.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((C=this.collector)==null?void 0:C.getLocalId(b.key))===Ne&&((L=this.collector)!=null&&L.isOwn(b.key))){const N=A.selectIds;if(N){const W=k.filter(Q=>{var ie,O;return((ie=this.collector)==null?void 0:ie.getLocalId(Q))===Ne&&!((O=this.collector)!=null&&O.isOwn(Q))}).map(Q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][Q]});let Y=!1;for(const Q of W)for(let ie=0;ie<N.length;ie++)Q!=null&&Q.selectIds&&((S=Q.selectIds)!=null&&S.includes(N[ie]))&&(delete N[ie],Y=!0);Y&&(A.selectIds=N.filter(Q=>!!Q))}}a[z]=A,c=!0}else if(!e&&Array.isArray(D)&&D.length===2){const A=D[0];if((p=A.updateNodeOpt)!=null&&p.useAnimation&&(A.updateNodeOpt.useAnimation=!1),((m=this.collector)==null?void 0:m.getLocalId(b.key))===Ne&&((M=this.collector)!=null&&M.isOwn(b.key))){const N=A.selectIds;if(N){const W=k.filter(Q=>{var ie,O;return((ie=this.collector)==null?void 0:ie.getLocalId(Q))===Ne&&!((O=this.collector)!=null&&O.isOwn(Q))}).map(Q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][Q]});let Y=!1;for(const Q of W)for(let ie=0;ie<N.length;ie++)Q!=null&&Q.selectIds&&Q.selectIds.includes(N[ie])&&(delete N[ie],Y=!0);Y&&(A.selectIds=N.filter(Q=>!!Q))}}a[b.key]=A,c=!0}}break}}if(c){const b=this.collector.plugin,P=(v=b==null?void 0:b.getAttributesValue)==null?void 0:v.call(b,[Jr.namespace]),D=(R=b==null?void 0:b.getAttributesValue)==null?void 0:R.call(b,[Jr.namespace,this.viewId]);P?D?b==null||b.updateAttributes([Jr.namespace,this.viewId,n],a):b==null||b.updateAttributes([Jr.namespace,this.viewId],{[n]:a}):b==null||b.updateAttributes([Jr.namespace],{[this.viewId]:{[n]:a}})}}};E(Xr,"sdkCallBack"),E(Xr,"MaxStackLength",He.undoRedo.maxStackLength),E(Xr,"waitTime",100);let Hu=Xr;const Gwe=(s,t)=>({...s,...t}),Qp=(s,...t)=>t.reduce((e,r)=>({images:Gwe(e.images,r==null?void 0:r.images),size:(r==null?void 0:r.size)||e.size,offset:{...e.offset,...r==null?void 0:r.offset}}),s),ra={[q.Selector]:{applianceKey:Le.selector,classSuffix:"selector",hostClassName:"cursor-selector"},[q.Clicker]:{applianceKey:Le.clicker,classSuffix:"clicker",hostClassName:"cursor-clicker"},[q.Text]:{applianceKey:Le.text,classSuffix:"text",hostClassName:"cursor-text"},[q.Pencil]:{applianceKey:Le.pencil,classSuffix:"pencil",hostClassName:"cursor-pencil"},[q.LaserPen]:{applianceKey:Le.laserPen,classSuffix:"laser-pen",hostClassName:"cursor-pencil"},[q.Arrow]:{applianceKey:Le.arrow,classSuffix:"arrow",hostClassName:"cursor-arrow"},[q.Straight]:{applianceKey:Le.straight,classSuffix:"straight",hostClassName:"cursor-straight"},[q.Rectangle]:{applianceKey:Le.rectangle,classSuffix:"rectangle",hostClassName:"cursor-rectangle"},[q.Ellipse]:{applianceKey:Le.ellipse,classSuffix:"ellipse",hostClassName:"cursor-ellipse"},[q.Star]:{applianceKey:or.star,classSuffix:"star",hostClassName:"cursor-shape"},[q.Polygon]:{applianceKey:or.polygon,classSuffix:"polygon",hostClassName:"cursor-shape"},[q.SpeechBalloon]:{applianceKey:or.speechBalloon,classSuffix:"speech-balloon",hostClassName:"cursor-shape"},[q.Eraser]:{applianceKey:Le.eraser,classSuffix:"eraser",hostClassName:"cursor-eraser"},[q.PencilEraser]:{applianceKey:Le.pencilEraser,classSuffix:"pencil-eraser",hostClassName:"cursor-eraser"},[q.BitMapEraser]:{applianceKey:or.bitMapEraser,classSuffix:"bitmap-eraser",hostClassName:"cursor-eraser"}},Hwe={[q.Selector]:Le.selector,[q.Clicker]:Le.clicker,[q.Text]:Le.text,[q.Pencil]:Le.pencil,[q.Arrow]:Le.arrow,[q.Straight]:Le.straight,[q.Rectangle]:Le.rectangle,[q.Ellipse]:Le.ellipse,[q.Eraser]:Le.eraser,[q.PencilEraser]:Le.pencilEraser};function Qwe(s,t){if(!(!s||t===void 0)&&s.currentApplianceName!==Le.laserPointer)return t===q.LaserPen?s.currentApplianceName===Le.pencil&&s.useLaserPen?ra[t]:void 0:t===q.Star||t===q.Polygon||t===q.SpeechBalloon?s.currentApplianceName===Le.shape?ra[t]:void 0:t===q.BitMapEraser?s.currentApplianceName===Le.pencilEraser?ra[t]:void 0:Hwe[t]===s.currentApplianceName?ra[t]:void 0}class q0{constructor(t){E(this,"options");this.options=id(t)}getAppearance(t){return this.options.appearance[t]||fa[t]}getLocal(t){var i;const e=fa[t],r=this.getAppearance(t),n=Qp(e,e.local,r,r.local);return{...n,size:n.size||e.local.size,fallback:((i=r.local)==null?void 0:i.fallback)||"auto"}}getSynced(t){const e=fa[t],r=this.getAppearance(t);return Qp(e,e.synced,r,r.synced)}getSyncedEnableShowName(t){return hpe(this.options,t)}getLocalCursorOwnership(t){const e=this.options.appearance[t];return e&&(e.local||e.images||e.offset||e.size)?"custom":"plugin-default"}}function qp(s){const t=s.trim().toLowerCase();return t.startsWith("data:image/svg+xml")||/\.svg(?:[?#]|$)/i.test(t)}function Ed(s){const t=s.highResolution;if(!(!t||t===s.standardResolution||qp(s.standardResolution)||qp(t)))return t}function qwe(s){var c,l;const t=Math.round(-s.offset.x),e=Math.round(s.size.height-s.offset.y),r=s.fallback,n=`url("${s.images.standardResolution}") ${t} ${e}, ${r}`,i=Ed(s.images);if(!i)return n;const o=`image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${t} ${e}, ${r}`,a=`-webkit-image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${t} ${e}, ${r}`;return typeof CSS<"u"&&((c=CSS.supports)!=null&&c.call(CSS,"cursor",o))?o:typeof CSS<"u"&&((l=CSS.supports)!=null&&l.call(CSS,"cursor",a))?a:n}const Z0=5e3,K0=128*1024*1024,X0=128,Zwe=5e3;function Kwe(s,t){if(t.activeCount!==0||t.estimatedBytes!==0||t.closeErrorCount!==0)return"error";if(s.activeCount>0||t.totalRetiredCount>0||t.totalReleasedCount>0)return"info"}class Xwe{constructor(t={}){E(this,"pending",new Set);E(this,"awaitingPaint",new Set);E(this,"entries",new Map);E(this,"timeoutMs");E(this,"memoryPressureBytes");E(this,"memoryPressureCount");E(this,"memoryPressureReportIntervalMs");E(this,"scheduler");E(this,"onCloseError");E(this,"onScheduleError");E(this,"onTimeout");E(this,"onMemoryPressure");E(this,"activeEstimatedBytes",0);E(this,"peakActiveCount",0);E(this,"peakEstimatedBytes",0);E(this,"totalRetiredCount",0);E(this,"totalReleasedCount",0);E(this,"watchdogReleasedCount",0);E(this,"closeErrorCount",0);E(this,"lastMemoryPressureReportAt",-1/0);E(this,"frameHandle");E(this,"watchdogHandle");E(this,"destroyed",!1);E(this,"onFrame",()=>{if(this.frameHandle=void 0,!this.destroyed){for(const t of[...this.awaitingPaint])this.releaseEntry(t);this.awaitingPaint=this.pending,this.pending=new Set,this.entries.size?this.ensureFrame():this.stopSchedulersWhenEmpty()}});E(this,"onWatchdog",()=>{var o;if(this.watchdogHandle=void 0,this.destroyed)return;const t=this.scheduler.now(),e=new Set;let r=0,n=0,i=0;for(const a of[...this.entries.values()])a.deadlineAt<=t&&(e.add(a.viewId),r+=1,n+=a.estimatedBytes,i=Math.max(i,t-a.createdAt),this.releaseEntry(a));e.size&&(this.watchdogReleasedCount+=r,(o=this.onTimeout)==null||o.call(this,{viewIds:e,releasedCount:r,releasedEstimatedBytes:n,oldestAgeMs:i,snapshot:this.getMemorySnapshot()})),this.entries.size?this.ensureWatchdog():this.stopSchedulersWhenEmpty()});this.timeoutMs=t.timeoutMs??Z0,this.memoryPressureBytes=t.memoryPressureBytes??K0,this.memoryPressureCount=t.memoryPressureCount??X0,this.memoryPressureReportIntervalMs=t.memoryPressureReportIntervalMs??Zwe,this.scheduler={requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e),setTimer:(e,r)=>setTimeout(e,r),clearTimer:e=>clearTimeout(e),now:()=>Date.now(),...t.scheduler},this.onCloseError=t.onCloseError,this.onScheduleError=t.onScheduleError,this.onTimeout=t.onTimeout,this.onMemoryPressure=t.onMemoryPressure}retire(t,e){if(this.destroyed){this.closeBitmap(t,e);return}if(this.entries.has(e))return;const r=this.scheduler.now(),n={bitmap:e,viewId:t,createdAt:r,deadlineAt:r+this.timeoutMs,estimatedBytes:this.estimateBitmapBytes(e)};this.entries.set(e,n),this.pending.add(n),this.activeEstimatedBytes+=n.estimatedBytes,this.totalRetiredCount+=1,this.peakActiveCount=Math.max(this.peakActiveCount,this.entries.size),this.peakEstimatedBytes=Math.max(this.peakEstimatedBytes,this.activeEstimatedBytes),this.reportMemoryPressure(r),this.ensureWatchdog(),this.ensureFrame()}getMemorySnapshot(){const t=this.scheduler.now(),e=new Map;let r=0;for(const i of this.entries.values()){const o=Math.max(0,t-i.createdAt);r=Math.max(r,o);const a=e.get(i.viewId)||{activeCount:0,estimatedBytes:0,oldestAgeMs:0};a.activeCount+=1,a.estimatedBytes+=i.estimatedBytes,a.oldestAgeMs=Math.max(a.oldestAgeMs,o),e.set(i.viewId,a)}const n=[...e.entries()].map(([i,o])=>({viewId:i,...o})).sort((i,o)=>i.viewId.localeCompare(o.viewId));return{activeCount:this.entries.size,estimatedBytes:this.activeEstimatedBytes,peakActiveCount:this.peakActiveCount,peakEstimatedBytes:this.peakEstimatedBytes,totalRetiredCount:this.totalRetiredCount,totalReleasedCount:this.totalReleasedCount,watchdogReleasedCount:this.watchdogReleasedCount,closeErrorCount:this.closeErrorCount,oldestAgeMs:r,activeViews:n,destroyed:this.destroyed}}closeNow(t,e){const r=this.entries.get(e);r?this.releaseEntry(r):this.closeBitmap(t,e),this.stopSchedulersWhenEmpty()}releaseView(t){for(const e of[...this.entries.values()])e.viewId===t&&this.releaseEntry(e);this.stopSchedulersWhenEmpty()}destroy(){if(this.destroyed)return this.getMemorySnapshot();this.destroyed=!0,this.cancelSchedulers();for(const t of[...this.entries.values()])this.releaseEntry(t);return this.getMemorySnapshot()}ensureFrame(){var t;if(!(this.frameHandle!==void 0||!this.entries.size))try{this.frameHandle=this.scheduler.requestFrame(this.onFrame)}catch(e){(t=this.onScheduleError)==null||t.call(this,"request-frame",e,this.getMemorySnapshot())}}ensureWatchdog(){var e;if(this.watchdogHandle!==void 0||!this.entries.size)return;let t=1/0;for(const r of this.entries.values())t=Math.min(t,r.deadlineAt);try{this.watchdogHandle=this.scheduler.setTimer(this.onWatchdog,Math.max(0,t-this.scheduler.now()))}catch(r){(e=this.onScheduleError)==null||e.call(this,"set-watchdog",r,this.getMemorySnapshot());for(const n of[...this.entries.values()])this.releaseEntry(n)}}releaseEntry(t){this.entries.delete(t.bitmap)&&(this.pending.delete(t),this.awaitingPaint.delete(t),this.activeEstimatedBytes=Math.max(0,this.activeEstimatedBytes-t.estimatedBytes),this.closeBitmap(t.viewId,t.bitmap))}closeBitmap(t,e){var r;try{e.close(),this.totalReleasedCount+=1}catch(n){this.closeErrorCount+=1,(r=this.onCloseError)==null||r.call(this,t,n,this.getMemorySnapshot())}}estimateBitmapBytes(t){const e=Number.isFinite(t.width)?Math.max(0,t.width):0,r=Number.isFinite(t.height)?Math.max(0,t.height):0,n=Math.ceil(e*r*4);return Number.isSafeInteger(n)?n:0}reportMemoryPressure(t){var e;this.entries.size<this.memoryPressureCount&&this.activeEstimatedBytes<this.memoryPressureBytes||t-this.lastMemoryPressureReportAt<this.memoryPressureReportIntervalMs||(this.lastMemoryPressureReportAt=t,(e=this.onMemoryPressure)==null||e.call(this,this.getMemorySnapshot()))}stopSchedulersWhenEmpty(){this.entries.size||this.cancelSchedulers()}cancelSchedulers(){this.frameHandle!==void 0&&(this.scheduler.cancelFrame(this.frameHandle),this.frameHandle=void 0),this.watchdogHandle!==void 0&&(this.scheduler.clearTimer(this.watchdogHandle),this.watchdogHandle=void 0)}}const Zp=3,Kp=128;function Jwe(){return globalThis.__APPLIANCE_IMAGE_BITMAP_PIXEL_DIAGNOSTIC__===!0}class Vi{constructor(t){E(this,"internalMsgEmitter");E(this,"control");E(this,"mainView");E(this,"mainViewOrigin");E(this,"appViewOrigins",new Map);E(this,"appViews",new Map);E(this,"renderImageBitmapRetirement");E(this,"renderImageBitmapRecoveryViews",new Set);E(this,"renderImageBitmapPixelDiagnosticCanvas");E(this,"undoTickerStart",(t,e,r)=>{const n=this.getView(e);n&&n.displayer&&n.focusScenePath&&n.displayer.commiter.undoTickerStart(t,n.focusScenePath,r)});E(this,"addExcludeIds",(t,e)=>{const r=this.getView(e);r&&r.displayer&&r.focusScenePath&&r.displayer.commiter.addExcludeIds(t)});E(this,"onAckRenderUndoTicker",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=r||i.focusScenePath;i.displayer.commiter.ackRender(t,o,n)});E(this,"onAckStorageUndoTicker",(t,e,r,n,i)=>{const o=this.getView(e);if(!(o!=null&&o.displayer)||!o.focusScenePath)return;const a=r||o.focusScenePath;o.displayer.commiter.ackStorage(t,a,n,i)});E(this,"onCollectExpectedWorkIds",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.collectExpectedWorkIds(t,o,r)});E(this,"onFinalizeRequested",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.finalizeRequested(t,o,r)});E(this,"onReopenStorageAck",(t,e,r,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.reopenStorageAck(t,o,r)});E(this,"onCancelUndoTicker",(t,e,r)=>{const n=this.getView(e);if(!(n!=null&&n.displayer)||!n.focusScenePath)return;const i=r||n.focusScenePath;n.displayer.commiter.cancelUndoTicker(t,e,i)});const{control:e,internalMsgEmitter:r}=t;this.control=e,this.internalMsgEmitter=r,this.renderImageBitmapRetirement=new Xwe({onCloseError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=close-error viewId=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} closeErrorCount=${o.closeErrorCount} error=${i instanceof Error?i.message:String(i)}`)},onScheduleError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} error=${i instanceof Error?i.message:String(i)}`)},onMemoryPressure:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=pressure activeCount=${n.activeCount} estimatedBytes=${n.estimatedBytes} peakActiveCount=${n.peakActiveCount} peakEstimatedBytes=${n.peakEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} countThreshold=${X0} bytesThreshold=${K0}`)},onTimeout:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.error)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=watchdog-timeout viewIds=${[...n.viewIds].join(",")} timeoutMs=${Z0} releasedCount=${n.releasedCount} releasedEstimatedBytes=${n.releasedEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} remainingCount=${n.snapshot.activeCount} remainingEstimatedBytes=${n.snapshot.estimatedBytes}`);for(const a of n.viewIds)!this.getView(a)||this.renderImageBitmapRecoveryViews.has(a)||(this.renderImageBitmapRecoveryViews.add(a),this.control.refreshViewRender(a).catch(c=>{var l,u;(u=(l=this.control.logger)==null?void 0:l.error)==null||u.call(l,`[Appliance]: render ImageBitmap timeout recovery failed; viewId=${a}; error=${c instanceof Error?c.message:String(c)}`)}).finally(()=>this.renderImageBitmapRecoveryViews.delete(a)))}}),this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds),this.internalMsgEmitter.on("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.on("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.on("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.on("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.on("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.on("cancelUndoTicker",this.onCancelUndoTicker)}get worker(){return this.control.worker}getUndoTickerId(t){const e=this.getView(t);if(e&&e.displayer&&e.focusScenePath)return e.displayer.commiter.undoTickerId}cancelViewUndoTicker(t){var r;const e=this.getView(t);(r=e==null?void 0:e.displayer)==null||r.commiter.cancelViewUndoTicker()}undo(){const t=this.focuedView;let e=0;if(t&&this.control.canAcceptLocalMutation(t.id)){const r=t.focusScenePath;e=t.displayer.commiter.undo(r)||0}return e}redo(){const t=this.focuedView;let e=0;if(t&&this.control.canAcceptLocalMutation(t.id)){const r=t.focusScenePath;e=t.displayer.commiter.redo(r)||0}return e}validator(t,e,r){var o;const n=ve.clone(t[e]),i=ve.clone(r);e==="focusScenePath"&&!ve.isEqual(n,i)&&(this.control.backgroundImageLoadCoordinator.cancelByViewScene(t.id,n),this.control.internalSceneChange(t.id,i),(o=t.displayer)==null||o.commiter.onChangeScene()),e==="cameraOpt"&&!ve.isEqual(n,i)&&this.control.internalCameraChange(t.id,i)}destroyAppView(t,e=!1){var n;this.disposeViewRenderImageBitmaps(t),this.renderImageBitmapRecoveryViews.delete(t),this.control.backgroundImageLoadCoordinator.cancelByViewScene(t),this.control.destroySceneChange(t),this.control.worker.cameraUpdateDestroy(t,!1);const r=this.appViews.get(t);r&&(r.displayer.commiter.disposeViewTickers("view-destroyed"),(n=this.control.selectorApi)==null||n.disposeView(t),this.control.textEditorManager.clear(t,e),r.displayer.destroy(),this.appViewOrigins.delete(t),this.appViews.delete(t))}createMianView(t){this.mainView&&this.disposeViewRenderImageBitmaps(Fe),this.mainViewOrigin=t,this.mainView=new Proxy(t,{set:(e,r,n)=>(this.worker.isActive&&this.validator(e,r,n),e[r]=n,!0)})}createAppView(t){const e=t.id;this.appViews.has(e)&&this.disposeViewRenderImageBitmaps(e),this.appViewOrigins.set(e,t);const r=new Proxy(t,{set:(n,i,o)=>(this.worker.isActive&&this.validator(n,i,o),n[i]=o,!0)});this.appViews.set(e,r)}isAppView(t){return t!==Fe&&this.appViews.has(t)}getPreferredFocusedViewId(){return this.focuedViewId||Fe}getView(t){var e;return t===Fe?this.mainView:(e=this.appViews)==null?void 0:e.get(t)}resolveView(t){const e=t||this.focuedViewId||Fe,r=this.getView(e);return!t&&!r&&e!==Fe?{viewId:Fe,view:this.getView(Fe)}:{viewId:e,view:r}}getViewElement(t){var e;return((e=t.viewData)==null?void 0:e.divElement)||t.container||t.displayer.eventTragetElement}getFloatbarContainer(t){const{view:e}=this.resolveView(t);return(e==null?void 0:e.displayer.customFloatbarContainerRef.current)||void 0}getViewOffsetToContainer(t,e){if(!t)return;const{viewId:r,view:n}=this.resolveView(e);if(!n)return;const i=this.getViewElement(n);if(!i)return;const o=i.getBoundingClientRect(),a=t.getBoundingClientRect();return{x:o.left-a.left,y:o.top-a.top,viewId:r}}getCurScenePath(t){const e=this.getView(t);if(e)return e.focusScenePath}getAuthoritativeScenePath(t){return this.getCurScenePath(t)}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(t,e){var r;if(t===Fe&&this.mainView)this.mainView.focusScenePath=e;else{const n=t&&((r=this.appViews)==null?void 0:r.get(t))||void 0;n&&(n.focusScenePath=e)}}setViewScenePathBeforeRenderInit(t,e){var i,o;const r=t===Fe?this.mainViewOrigin:this.appViewOrigins.get(t);if(!r)return!1;const n=r.focusScenePath!==e;return r.focusScenePath=e,n&&((o=(i=r.displayer)==null?void 0:i.commiter)==null||o.onChangeScene()),!0}setViewData(t,e){var r;if(t===Fe&&this.mainView)this.mainView.viewData=e;else{const n=t&&((r=this.appViews)==null?void 0:r.get(t))||void 0;n&&(n.viewData=e)}}setFocuedViewId(t){var e;this.focuedViewId=t,t===Fe?this.focuedView=this.mainView:this.focuedView=t&&((e=this.appViews)==null?void 0:e.get(t))||void 0,this.worker.currentToolsData&&this.worker.currentToolsData.toolsType===q.Text&&this.activeTextEditor(t),this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(t,e){var n;let r;t===Fe?r=this.mainView:r=(n=this.appViews)==null?void 0:n.get(t),r&&(r.focusScenePath=e)}destroy(){var o,a,c,l,u,h;this.internalMsgEmitter.off("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.off("excludeIds",this.addExcludeIds),this.internalMsgEmitter.off("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.off("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.off("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.off("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.off("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.off("cancelUndoTicker",this.onCancelUndoTicker),this.mainView&&(this.disposeViewRenderImageBitmaps(this.mainView.id),this.mainView.displayer.commiter.disposeViewTickers("view-destroyed"),(o=this.control.selectorApi)==null||o.disposeView(this.mainView.id)),(a=this.mainView)==null||a.displayer.destroy(),this.control.destroyMiniMap(Fe),this.appViews.forEach(d=>{this.destroyAppView(d.id,!0),this.control.destroyMiniMap(d.id)});const t=this.getRenderImageBitmapMemoryState(),e=this.renderImageBitmapRetirement.destroy(),r=e.closeErrorCount-t.closeErrorCount,n=`[Appliance]: [render-image-bitmap-memory] stage=destroy releasedCount=${t.activeCount-e.activeCount} releasedEstimatedBytes=${t.estimatedBytes-e.estimatedBytes} activeCount=${e.activeCount} estimatedBytes=${e.estimatedBytes} peakActiveCount=${e.peakActiveCount} peakEstimatedBytes=${e.peakEstimatedBytes} totalRetiredCount=${e.totalRetiredCount} totalReleasedCount=${e.totalReleasedCount} watchdogReleasedCount=${e.watchdogReleasedCount} closeErrorCount=${e.closeErrorCount} closeErrorsDuringDestroy=${r}`,i=Kwe(t,e);i==="error"?(l=(c=this.control.logger)==null?void 0:c.error)==null||l.call(c,n):i==="info"&&((h=(u=this.control.logger)==null?void 0:u.info)==null||h.call(u,n)),this.renderImageBitmapRecoveryViews.clear()}setFocuedViewCameraOpt(t){if(this.focuedView){const e=this.focuedView.cameraOpt;ve.isEqual(e,t)||(this.focuedView.cameraOpt=t)}}transformToOriginPoint(t,e){const r=this.getView(e);if(r!=null&&r.viewData){const n=r.viewData.convertToPointOnScreen(t[0],t[1]);return[n.x,n.y]}return t}transformToScenePoint(t,e){const r=this.getView(e);if(r!=null&&r.viewData){const n=r.viewData.convertToPointInWorld({x:t[0],y:t[1]});return[n.x,n.y]}return t}inspectRenderImageBitmapPixels(t,e,r){const n=Math.min(1,Kp/Math.max(e,1),Kp/Math.max(r,1)),i=Math.max(1,Math.round(e*n)),o=Math.max(1,Math.round(r*n)),a=this.renderImageBitmapPixelDiagnosticCanvas||document.createElement("canvas");this.renderImageBitmapPixelDiagnosticCanvas=a,a.width!==i&&(a.width=i),a.height!==o&&(a.height=o);const c=a.getContext("2d");if(!c)throw new Error("render ImageBitmap pixel probe unavailable");c.clearRect(0,0,i,o),c.drawImage(t,0,0,i,o);const l=c.getImageData(0,0,i,o).data;let u=0,h=0;for(let d=0;d<l.length;d+=4){const f=l[d],g=l[d+1],y=l[d+2];l[d+3]!==0&&(u+=1,(f!==0||g!==0||y!==0)&&(h+=1))}return{sampleWidth:i,sampleHeight:o,visiblePixels:u,nonBlackPixels:h}}render(t){var n,i,o,a,c,l,u;let e,r=!1;for(const h of t){const{rect:d,imageBitmap:f,isFullFrameImageBitmap:g,isClear:y,isUnClose:T,drawCanvas:x,clearCanvas:C,viewId:L,viewGeneration:S,frameSequence:p,taskId:m}=h,M=(n=this.getView(L))==null?void 0:n.displayer;let v=!1;try{if(!(y&&C!==_e.None||x!==void 0&&x!==_e.None))continue;if(!M)throw new Error(`render View is unavailable: ${L}`);if(!d)throw new Error(`render rect is unavailable: ${L}`);const{dpr:b,canvasBgRef:P,canvasFloatRef:D,canvasServiceFloatRef:z,canvasTopRef:j}=M,k=Math.floor(d.w*b),A=Math.floor(d.h*b),N=d.x*b,W=d.y*b,Y=Q=>{let ie;switch(Q){case _e.TopFloat:ie=j==null?void 0:j.current;break;case _e.Float:ie=D.current;break;case _e.ServiceFloat:ie=z.current;break;case _e.Bg:ie=P.current;break;default:throw new Error(`render canvas target is unavailable: ${L}/${String(Q)}`)}if(!ie)throw new Error(`render canvas is unavailable: ${L}/${String(Q)}`);const O=ie.getContext("2d");if(!O)throw new Error(`render 2d context is unavailable: ${L}/${String(Q)}`);return O};if(y&&C!==_e.None){Y(C).clearRect(N,W,k,A);continue}if(x!==void 0&&x!==_e.None){if(!f)throw new Error(`render ImageBitmap is unavailable: ${L}/${String(x)}`);const Q=Y(x);let ie;const O=Jwe()&&g&&x===_e.Bg;if(O)try{ie=this.inspectRenderImageBitmapPixels(f,f.width,f.height)}catch(V){(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=bitmap viewId=${L} generation=${S??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}if(g?(Q.clearRect(0,0,Q.canvas.width,Q.canvas.height),Q.drawImage(f,0,0,Q.canvas.width,Q.canvas.height)):Q.drawImage(f,0,0,k,A,N,W,k,A),O&&ie)try{const V=this.inspectRenderImageBitmapPixels(Q.canvas,Q.canvas.width,Q.canvas.height);(ie.visiblePixels>0&&V.visiblePixels===0||ie.nonBlackPixels>0&&V.nonBlackPixels===0)&&((c=(a=this.control.logger)==null?void 0:a.warn)==null||c.call(a,`[Appliance]: [render-image-bitmap] stage=destination-pixel-loss viewId=${L} generation=${S??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} sourceVisible=${ie.visiblePixels} destinationVisible=${V.visiblePixels} sourceNonBlack=${ie.nonBlackPixels} destinationNonBlack=${V.nonBlackPixels}`))}catch(V){(u=(l=this.control.logger)==null?void 0:l.warn)==null||u.call(l,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=destination viewId=${L} generation=${S??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}v=!0}}catch(R){r||(e=R,r=!0)}finally{f&&!T&&(v?this.retireRenderImageBitmap(L,f):this.renderImageBitmapRetirement.closeNow(L,f))}}if(r)throw e}retireRenderImageBitmap(t,e){e&&this.renderImageBitmapRetirement.retire(t,e)}disposeViewRenderImageBitmaps(t){this.renderImageBitmapRetirement.releaseView(t)}getRenderImageBitmapMemoryState(){return this.renderImageBitmapRetirement.getMemorySnapshot()}showFloatBar(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;i&&i.showFloatBar(e,r)}activeTextEditor(t){const e=this.getView(t),r=e==null?void 0:e.displayer.vDom;r&&r.activeTextEditor()}unActiveTextEditor(t){const e=this.getView(t),r=e==null?void 0:e.displayer.vDom;r&&r.unActiveTextEditor()}showFloatBarBtn(t,e){const r=this.getView(t),n=r==null?void 0:r.displayer.vDom;n&&n.showFloatBarBtn(e)}updateTextEditorInfo(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;if(i){i.updateTextEditorInfo(e,r);return}r==null||r()}renderTextEditorInfo(t,e,r){const n=this.getView(t),i=n==null?void 0:n.displayer.vDom;if(i){i.renderTextEditorInfo(e,r);return}r==null||r()}renderTextEditorInfoAsync(t,e){return new Promise(r=>{this.renderTextEditorInfo(t,e,r)})}updateTextEditorInfoAsync(t,e){return new Promise(r=>{this.updateTextEditorInfo(t,e,r)})}setActiveMiniMap(t,e){const r=this.getView(t),n=r==null?void 0:r.displayer.vDom;n&&n.setActiveMiniMap(e&&t||void 0)}}E(Vi,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),E(Vi,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"2d"}),E(Vi,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class J0{constructor(t,e,r){E(this,"control");E(this,"internalMsgEmitter");E(this,"commiter");E(this,"cachePoint");E(this,"cacheCursorPoint");E(this,"active",!0);E(this,"toolsKey");E(this,"activePointers",new Set);E(this,"currentDrawingPointerId");E(this,"pointerDrawingSession",0);E(this,"currentPointerDrawingSession");E(this,"pointerDonePromise");E(this,"isTouchDrawing",!1);E(this,"cursorMouseMove");E(this,"cursorMouseMoveDebounced");E(this,"cursorMouseMoveThrottled");E(this,"cursorMouseMoveFun");E(this,"cursorEventElement");E(this,"eventTargetTouchAction");E(this,"appliedCursorClassNames",[]);E(this,"pendingDpr");E(this,"dprMediaQuery");E(this,"dprMediaQueryListener");E(this,"pointLimitStopPending",!1);E(this,"localBitmapEraserPointCount",0);E(this,"_transferControlToOffscreenCanvas");E(this,"cursorMouseLeave",()=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled.cancel():this.cursorMouseMoveDebounced.cancel(),this.cacheCursorPoint=[void 0,void 0],this.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)});E(this,"keydown",t=>{t.stopPropagation(),t.stopImmediatePropagation(),this.control.hotkeyManager.colloctHotkey(t)});E(this,"windowBlur",()=>{this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("window-blur")});E(this,"visibilitychange",()=>{document.visibilityState==="hidden"&&this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("document-hidden")});E(this,"pointerdown",t=>{var e;if(!this.pointerDonePromise){if(this.active&&this.consumeClickerEvent(t)){const r=this.getPoint(t);r&&this.worker.sendCursorEvent(r,this.viewId);return}if(!(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))){if(t.pointerType==="touch"&&(this.activePointers.add(t.pointerId),this.activePointers.size>1)){this.cancelPointerDrawing("multi-pointer-down",!0);return}if(t.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const r=this.getPoint(t);this.cachePoint=r,r&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.currentDrawingPointerId=t.pointerId,this.currentPointerDrawingSession=++this.pointerDrawingSession,this.worker.originalEventLintener(de.Start,r,this.viewId),this.addPointerDocumentEvents())}}}});E(this,"pointermove",t=>{if(this.active){if(t.pointerType==="touch"){if(this.activePointers.size>1){this.cancelPointerDrawing("multi-pointer-move",!0);return}if(this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId)return;if(!this.worker.isAbled()){this.cancelPointerDrawing("worker-disabled",!0);return}}if(this.viewId){const e=this.getPoint(t);if(this.checkConsumeCount(e!==void 0))return;this.cachePoint=e,e&&this.worker.originalEventLintener(de.Doing,e,this.viewId)}}});E(this,"pointerup",t=>{if(this.active&&(t.pointerType==="touch"&&this.activePointers.delete(t.pointerId),!(this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId))){if(this.currentDrawingPointerId===void 0){this.clearPointerDocumentEvents();return}if(!this.pointLimitStopPending){if(t.pointerType==="touch"&&(this.activePointers.size>0||!this.worker.isAbled())){this.cancelPointerDrawing("touch-pointer-up-invalid",!0);return}if(t.button===0&&this.viewId){const e=this.getPoint(t)||this.cachePoint;e?this.finishPointerDone(e):this.cancelPointerDrawing("pointer-up-without-point")}t.pointerType==="touch"&&this.activePointers.size===0&&this.activePointers.clear()}}});E(this,"pointercancel",t=>{this.pointLimitStopPending||this.currentDrawingPointerId!==void 0&&t.pointerId!==this.currentDrawingPointerId||this.cancelPointerDrawing("pointer-cancel")});E(this,"touchstart",t=>{var r;if(this.pointerDonePromise)return;if(this.active&&this.consumeClickerEvent(t)){const n=this.getPoint(t);n&&this.worker.sendCursorEvent(n,this.viewId);return}if(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))return;if(t.touches.length!==1){this.cancelTouchDrawing();return}if(t.preventDefault(),!this.viewId)return;this.toolsKey=(r=this.worker.getCurrentToolsData())==null?void 0:r.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId);const e=this.getPoint(t);this.cachePoint=e,e&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.isTouchDrawing=!0,this.worker.originalEventLintener(de.Start,e,this.viewId),document.addEventListener("touchmove",this.touchmove,{passive:!1}),document.addEventListener("touchend",this.touchend,!1),document.addEventListener("touchcancel",this.touchcancel,!1))});E(this,"touchmove",t=>{if(!this.active||!this.isTouchDrawing)return;if(t.touches.length!==1||!this.worker.isAbled()){this.cancelTouchDrawing();return}t.preventDefault();const e=this.getPoint(t);this.checkConsumeCount(e!==void 0)||(this.cachePoint=e,e&&this.worker.originalEventLintener(de.Doing,e,this.viewId))});E(this,"touchend",t=>{if(!this.active||!this.isTouchDrawing||this.pointLimitStopPending)return;if(t.touches.length>0||!this.worker.isAbled()){this.cancelTouchDrawing();return}t.preventDefault();const e=this.getPoint(t)||this.cachePoint;e?this.finishPointerDone(e):(this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});E(this,"touchcancel",()=>{this.pointLimitStopPending||this.cancelTouchDrawing("touch-cancel",!1)});this.control=t,this.internalMsgEmitter=e;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:r,enableGlobal:!!this.control.pluginOptions.extras.undoRedo.enableGlobal};this.commiter=new Hu(n),this.cursorMouseMoveFun=i=>{const o=this.getPoint(i);this.cacheCursorPoint&&ve.isEqual(o,this.cacheCursorPoint)||(this.cacheCursorPoint=o,o&&this.worker.sendCursorEvent(o,this.viewId))},this.cursorMouseMoveDebounced=ve.debounce(this.cursorMouseMoveFun,this.moveDelayTime,{trailing:!0}),this.cursorMouseMoveThrottled=ve.throttle(this.cursorMouseMoveFun,this.moveDelayTime,{leading:!0}),this.cursorMouseMove=i=>{this.consumeClickerEvent(i),this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled(i):this.cursorMouseMoveDebounced(i)},this.setActive(t.renderControl.isWritable)}consumeClickerEvent(t){var e;return((e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType)!==q.Clicker?!1:(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!0)}get moveDelayTime(){var t,e;return((e=(t=this.control.pluginOptions.extras)==null?void 0:t.cursor)==null?void 0:e.moveDelayTime)??He.cursor.moveDelayTime}requestDprUpdate(t){t===this.dpr&&this.pendingDpr===void 0||this.pendingDpr!==t&&(this.pendingDpr=t,this.worker.updateDpr(this.viewId,t))}commitDprUpdate(t){var e;this.pendingDpr===t&&(this.pendingDpr=void 0),this.dpr!==t&&(this.dpr=t,this.resizeCanvasBackingStore(),(e=this.vDom)==null||e.setDpr(t))}cancelDprUpdate(){this.pendingDpr=void 0}resizeCanvasBackingStore(){var n;if(this.control.isUseOffscreenTransfer)return;const t=this.width*this.dpr,e=this.height*this.dpr,r=[this.canvasBgRef.current,this.canvasFloatRef.current,this.canvasServiceFloatRef.current,(n=this.canvasTopRef)==null?void 0:n.current];for(const i of r)i&&(i.width=t,i.height=e)}observeDpr(){if(this.stopObservingDpr(),typeof window>"u"||!window.matchMedia)return;const t=window.devicePixelRatio||1,e=window.matchMedia(`(resolution: ${t}dppx)`),r=()=>{this.observeDpr(),this.setCanvassStyle()};this.dprMediaQuery=e,this.dprMediaQueryListener=r,e.addEventListener?e.addEventListener("change",r):e.addListener(r)}stopObservingDpr(){const t=this.dprMediaQuery,e=this.dprMediaQueryListener;t&&e&&(t.removeEventListener?t.removeEventListener("change",e):t.removeListener(e)),this.dprMediaQuery=void 0,this.dprMediaQueryListener=void 0}setTransferControlToOffscreenCanvas(t){this._transferControlToOffscreenCanvas={bgCanvas:t.bgCanvas.transferControlToOffscreen(),serviceCanvas:t.serviceCanvas.transferControlToOffscreen(),localCanvas:t.localCanvas.transferControlToOffscreen()}}async resetRenderSurface(){var t;this._transferControlToOffscreenCanvas=void 0,await((t=this.vDom)==null?void 0:t.resetRenderSurface()),this.resizeCanvasBackingStore()}get transferControlToOffscreenCanvas(){return this._transferControlToOffscreenCanvas}get worker(){return this.control.worker}bindToolsClass(){var c,l,u;const t=(l=(c=this.worker)==null?void 0:c.currentToolsData)==null?void 0:l.toolsType,e=this.control.renderControl.isWritable,r=this.worker.isAbled(),n=(u=this.control.room)==null?void 0:u.state.memberState,i=Qwe(n,t),o=[],a=e&&r;if(a&&i){o.push(i.hostClassName),o.push(`cursor-tool-${i.classSuffix}`);const h=new q0(this.control.pluginOptions.extras.cursor),d=h.getLocalCursorOwnership(i.applianceKey),f=h.getLocal(i.applianceKey);o.push(d==="custom"?"custom-cursor":"plugin-cursor",`${d==="custom"?"custom-cursor":"plugin-cursor"}-${i.classSuffix}`),this.eventTragetElement&&this.eventTragetElement.style.setProperty("cursor",qwe(f),"important")}this.eventTragetElement&&(this.eventTragetElement.classList.remove(...this.appliedCursorClassNames),o.length&&this.eventTragetElement.classList.add(...o),this.appliedCursorClassNames=o,(!a||!i)&&this.eventTragetElement.style.removeProperty("cursor"))}mountView(){this.setCanvassStyle(),this.observeDpr(),this.control.viewContainerManager.mountView(this.viewId).catch(t=>{var r,n;const e=t instanceof Error?t.message:String(t);(n=(r=this.control.logger)==null?void 0:r.error)==null||n.call(r,`[Appliance]: view mount failed viewId=${this.viewId} error=${e}`)})}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}get parentElement(){var t;return(t=this.eventTragetElement)==null?void 0:t.parentElement}destroy(){this.cancelPointerDrawing("destroy"),this.pointerDonePromise=void 0,this.cancelDprUpdate(),this.stopObservingDpr(),this.cursorMouseMoveDebounced.cancel(),this.cursorMouseMoveThrottled.cancel(),this.commiter.destroy(),this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([We.Cursor,this.viewId])}getPoint(t){if(!this.eventTragetElement)return;const e=kMe(t);if(!ve.isNumber(e.x)||!ve.isNumber(e.y))return;const r=this.eventTragetElement.getBoundingClientRect();return[e.x-r.left,e.y-r.top]}getActive(){return this.active}setActive(t){this.active=t,this.control.isUseBackgroundThread&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",t)}focusElement(){var t;(t=this.eventTragetElement)==null||t.focus()}async stopEventHandler(){if(this.pointerDonePromise){await this.pointerDonePromise;return}this.cachePoint&&await this.finishPointerDone(this.cachePoint)}finishPointerDone(t,e=0){if(this.pointerDonePromise)return this.pointerDonePromise;const r=this.currentPointerDrawingSession,n=this.viewId,i=this.toolsKey;this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0;let o;try{e>0?o=(async()=>{if(await this.worker.waitForLocalEventQueue(n),this.worker.getLocalInputPointCount(n,i)<e){this.worker.removeDrawingWork(n);return}await this.worker.originalEventLintener(de.Done,t,n)})():o=Promise.resolve(this.worker.originalEventLintener(de.Done,t,n))}catch(c){o=Promise.reject(c)}const a=o.finally(()=>{this.pointerDonePromise===a&&(this.pointerDonePromise=void 0,this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,(r===void 0||r===this.currentPointerDrawingSession)&&(this.currentPointerDrawingSession=void 0),this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});return this.pointerDonePromise=a,a.catch(()=>{}),a}getTranslate(t){const r=(t.style.WebkitTransform||getComputedStyle(t,"").getPropertyValue("-webkit-transform")||t.style.transform||getComputedStyle(t,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=r&&parseInt(r[0])||0,i=r&&parseInt(r[1])||0;return[n,i]}getContainerOffset(t,e){var i;const r=this.getTranslate(t);let n={x:e.x+t.offsetLeft-t.scrollLeft+r[0],y:e.y+t.offsetTop-t.scrollTop+r[1]};return(i=t.offsetParent)!=null&&i.nodeName&&t.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(t.offsetParent,n)),n}addPointerDocumentEvents(){document.addEventListener("pointermove",this.pointermove,!1),document.addEventListener("pointerup",this.pointerup,!1),document.addEventListener("pointercancel",this.pointercancel,!1),document.addEventListener("visibilitychange",this.visibilitychange,!1),window.addEventListener("blur",this.windowBlur,!1)}clearPointerDocumentEvents(){document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointercancel,!1),document.removeEventListener("visibilitychange",this.visibilitychange,!1),window.removeEventListener("blur",this.windowBlur,!1)}resetPointerDrawingState(){this.cachePoint=void 0,this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.activePointers.clear(),this.localBitmapEraserPointCount=0}cancelPointerDrawing(t,e=!1){const r=this.currentDrawingPointerId!==void 0;if(r&&t!=="destroy"&&!e&&this.toolsKey===q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,Zp);return}r&&this.viewId&&(e&&this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId)),this.clearPointerDocumentEvents(),this.resetPointerDrawingState()}clearTouchDocumentEvents(){document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),document.removeEventListener("touchcancel",this.touchcancel,!1)}cancelTouchDrawing(t="invalid-touch",e=!0){if(this.isTouchDrawing&&t==="touch-cancel"&&!e&&this.toolsKey===q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,Zp);return}this.isTouchDrawing&&(e&&this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId)),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.localBitmapEraserPointCount=0,this.isTouchDrawing=!1}suppressNativeTouchGestures(t){var e;((e=this.eventTargetTouchAction)==null?void 0:e.element)!==t&&(this.restoreNativeTouchGestures(),this.eventTargetTouchAction={element:t,value:t.style.getPropertyValue("touch-action"),priority:t.style.getPropertyPriority("touch-action")},t.style.setProperty("touch-action","none","important"))}restoreNativeTouchGestures(t){const e=this.eventTargetTouchAction;!e||t&&e.element!==t||(e.value?e.element.style.setProperty("touch-action",e.value,e.priority):e.element.style.removeProperty("touch-action"),this.eventTargetTouchAction=void 0)}bindDisplayerEvent(t){this.suppressNativeTouchGestures(t),"PointerEvent"in window?t.addEventListener("pointerdown",this.pointerdown,!1):t.addEventListener("touchstart",this.touchstart,{passive:!1}),this.cursorEventElement=t.parentElement||t,this.cursorEventElement.addEventListener("mousemove",this.cursorMouseMove,!0),this.cursorEventElement.addEventListener("mouseleave",this.cursorMouseLeave,!1),t.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(t){var e,r;t.removeEventListener("pointerdown",this.pointerdown,!1),t.removeEventListener("touchstart",this.touchstart,!1),this.restoreNativeTouchGestures(t),this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),(e=this.cursorEventElement)==null||e.removeEventListener("mousemove",this.cursorMouseMove,!0),(r=this.cursorEventElement)==null||r.removeEventListener("mouseleave",this.cursorMouseLeave,!1),this.cursorEventElement=void 0,t.removeEventListener("keydown",this.keydown,!0)}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get maxDrawCount(){return this.control.pluginOptions.extras.bezier.maxDrawCount||He.bezier.maxDrawCount}isBitmapEraserTool(){const t=this.worker.getCurrentToolsData();return this.toolsKey===q.BitMapEraser&&(t==null?void 0:t.toolsType)===q.BitMapEraser}getFullLayerBitmapEraserMaxInputPoints(){var e;const t=this.worker.getCurrentToolsData();return this.toolsKey!==q.BitMapEraser||(t==null?void 0:t.toolsType)!==q.BitMapEraser?0:Rc((e=t.toolsOpt)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)}checkConsumeCount(t=!0){if(this.pointLimitStopPending)return!0;const e=this.isBitmapEraserTool(),r=e?this.getFullLayerBitmapEraserMaxInputPoints():0;if(e&&t&&Math.max(this.localBitmapEraserPointCount,this.worker.getLocalInputPointCount(this.viewId,q.BitMapEraser))>=r)return this.pointLimitStopPending=!0,this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Bitmap Eraser force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",pa.longBitmapEraser,this.viewId),this.pointLimitStopPending=!1,this.localBitmapEraserPointCount=0}),!0;e&&t&&this.localBitmapEraserPointCount++;const n=this.worker.getConsumeCount();return this.cachePoint&&this.toolsKey&&this.toolsKey===q.Pencil&&n>this.maxDrawCount?(this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Pencil force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",pa.longPencil,this.viewId)}),!0):!1}}class _we extends J0{constructor(e,r,n){super(r,n,e);E(this,"_viewId");this._viewId=e}get viewId(){return this._viewId}setViewId(e){this._viewId=e}}class _0 extends J0{constructor(t,e){super(t,e,Fe)}get viewId(){return Fe}updateSize(){this.setCanvassStyle()}}const eSe="index-module__Container__nLsM3",tSe="index-module__BackgroundBox__zfthZ",rSe="index-module__BackgroundSvgBox__Fv1ay",nSe="index-module__BackgroundSnapshotContent__NFLAl",iSe="index-module__BackgroundSnapshotBox__NEM-C",sSe="index-module__CanvasBox__j2Xe-",oSe="index-module__FloatCanvas__d1YR7",aSe="index-module__TopFloatCanvas__7IaCw",cSe="index-module__CanvasBoxSub__hcMeK",lSe="index-module__SnapshotBox__--eeE",uSe="index-module__FloatBar__cm-EL",hSe="index-module__RotateBtn__HSSkf",dSe="index-module__ResizeBtn__yjvda",fSe="index-module__CursorBox__2UHvI",gSe="index-module__TextEditorContainer__Qm8KC",pSe="index-module__ResizeTowBox__HOllX",mSe="index-module__FloatBarBtn__FJrOG",mt={Container:eSe,BackgroundBox:tSe,BackgroundSvgBox:rSe,BackgroundSnapshotContent:nSe,BackgroundSnapshotBox:iSe,CanvasBox:sSe,FloatCanvas:oSe,TopFloatCanvas:aSe,CanvasBoxSub:cSe,SnapshotBox:lSe,FloatBar:uSe,RotateBtn:hSe,ResizeBtn:dSe,CursorBox:fSe,TextEditorContainer:gSe,ResizeTowBox:pSe,FloatBarBtn:mSe},ySe={delete:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDZ2NmEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2aDBtMS0yYTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAyaDBNMyA0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",duplicate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMSAySDZhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRoMGwtMi0yeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTExIDJ2MWExIDEgMCAwIDAgMSAxaDFsLTItMnoiLz48cGF0aCBkPSJNOSAxNEg0YTEgMSAwIDAgMS0xLTFWNWgwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L2c+PC9zdmc+","layer-pressed":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzMzODFGRiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",layer:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",rotate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDZhNiA2IDAgMSAxLTMuNzA5IDEuMjgzIi8+PHBhdGggZD0ibTEzIDYgMS40MTQgMi40NUwxMyA2bDIuNDUtMS40MTQiLz48L2c+PC9zdmc+","rotation-button":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+",rotation:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+","font-colors-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","font-colors":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","to-bottom":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDEwdjhtMCAwLTItMm0yIDIgMi0ybS00IDZoMTJtLTYtNGg2bS02LTRoNm0tNi00aDYiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+","to-top":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIydi04bTAgMC0yIDJtMi0yIDIgMm0tNC02aDEybS02IDRoNm0tNiA0aDZtLTYgNGg2IiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","bold-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",bold:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","underline-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",underline:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","italic-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",italic:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","unlock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMzMzgxRkYiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0xYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDN2MyIgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+","lock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiM0NDRFNjAiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0zYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDV2MyIgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+",shapes:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","shapes-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","font-style-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","font-style":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",polygon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==","polygon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","polygon-vertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTA3NyAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU0My40NzQ1MjYgNDIuMzA3MzY4YTExOS4zNzY4NDIgMTE5LjM3Njg0MiAwIDAgMSAxMTAuODA3NTc5IDE2My44NGwxOTAuNTcxNzkgMTM4LjYxNzI2NGExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEgODMuMzc1MTU4IDIxOC43MDQ4NDJsLTc0LjMyMDg0MiAyMjguODM3MDUyYTExOS4zMjI5NDcgMTE5LjMyMjk0NyAwIDAgMS02MS4yNzgzMTYgMjIxLjg4NDYzMmMtNDYuNzgwNjMyIDAtODcuMzA5NDc0LTI2Ljk0NzM2OC0xMDYuODczMjYzLTY2LjEyODg0MmgtMjg5LjQxNDczN2ExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEtMTc5LjczODk0OC0xNDcuODMzMjYzbC03Mi4yNzI4NDItMjIyLjY5MzA1My0zLjM5NTM2OCAwLjEwNzc4OUExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAwIDEgMjEuODI3MzY4IDQ2Ni43Mjg0MjFMMjEuNTU3ODk1IDQ1OC4yMTMwNTNhMTE5LjM3Njg0MiAxMTkuMzc2ODQyIDAgMCAxIDE4My44MzQ5NDctMTAwLjUxMzY4NWwyMjMuNTAxNDc0LTE2Mi4zODQ4NDJhMTE5LjQzMDczNyAxMTkuNDMwNzM3IDAgMCAxIDExNC41ODAyMS0xNTMuMDYxMDUyek0yODkuNDE0NzM3IDg0MC4wNTcyNjNhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6IG01MDMuMTYxMjYzIDBhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6TTQ2Mi42ODYzMTYgMjQ5LjU4NjUyNkwyNDguMTMxMzY4IDQwNS41NTc4OTVhMTE5LjMyMjk0NyAxMTkuMzIyOTQ3IDAgMCAxLTQyLjg0NjMxNSAxNTMuMjIyNzM3bDcwLjcwOTg5NCAyMTcuMzU3NDczYTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMSAxMzIuNDE5MzY5IDEwOC4yMjA2MzJINjczLjY4NDIxMWExMTkuNDMwNzM3IDExOS40MzA3MzcgMCAwIDEgMTE5LjE2MTI2My0xMDguOTc1MTU4bDcxLjE0MTA1Mi0yMTguOTc0MzE2YTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMS02Mi4wODY3MzctMTY0LjIxNzI2M2wtMTg2LjM2OC0xMzUuMjc1Nzg5Yy0xOS45OTQ5NDcgMTUuMDkwNTI2LTQ1LjAwMjEwNSAyNC4xNDQ4NDItNzIuMDU3MjYzIDI0LjE0NDg0MmExMTguOTQ1Njg0IDExOC45NDU2ODQgMCAwIDEtODAuNzg4MjEtMzEuNDc0NTI3eiBtLTMyMS43NTE1NzkgMTUzLjkyMzM2OWE1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQwNjMxNiA1NC43MDMxNTggNTQuNzAzMTU4IDAgMCAwIDAtMTA5LjQwNjMxNnogbTc2Ny43MzA1MjYtMTIuNTU3NDc0YTU0LjcwMzE1OCA1NC43MDMxNTggMCAxIDAgMCAxMDkuNDA2MzE2IDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE2eiBtLTM2NS4xOTA3MzctMjg0LjAyNTI2M2E1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQ2MDIxIDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE1eiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",star:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","star-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","star-innerVertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTg1LjMzMzMzMyAwYTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODEuNDA4IDU5LjczMzMzM2g0OC4yMTMzMzR2ODUuMzMzMzM0TDE3MC42NjY2NjcgMTQ0Ljk4MTMzM1Y4NTMuMzMzMzMzaDY5My4zMzMzMzNsLTI2LjQ1MzMzMy02My40ODggNzguNzYyNjY2LTMyLjc2OCAzMi44NTMzMzQgNzguNzYyNjY3LTQyLjI0IDE3LjQ5MzMzM0g5MzguNjY2NjY3YTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODQuNzM2IDc1LjM0OTMzNEwxMDI0IDkzOC42NjY2NjdhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS0xNzAuNjY2NjY3IDBIMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxLTg1LjMzMzMzNC04NS4zMzMzMzRWMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxIDAtMTcwLjY2NjY2N3ogbTc2NS4zNTQ2NjcgNTk5LjQ2NjY2N2wzMi44NTMzMzMgNzguNzYyNjY2LTc4Ljg0OCAzMi44NTMzMzQtMzIuNzY4LTc4Ljc2MjY2NyA3OC43NjI2NjctMzIuODUzMzMzeiBtLTY1LjcwNjY2Ny0xNTcuNTI1MzM0bDMyLjg1MzMzNCA3OC43NjI2NjctNzguNzYyNjY3IDMyLjg1MzMzMy0zMi43NjgtNzguNzYyNjY2IDc4Ljc2MjY2Ny0zMi44NTMzMzR6TTcxOS4zNiAyODQuNDE2bDMyLjg1MzMzMyA3OC43NjI2NjctNzguNzYyNjY2IDMyLjg1MzMzMy0zMi44NTMzMzQtNzguNzYyNjY3IDc4Ljc2MjY2Ny0zMi44NTMzMzN6IG0tNjUuNjIxMzMzLTE1Ny41MjUzMzNsMzIuODUzMzMzIDc4Ljc2MjY2Ni03OC43NjI2NjcgMzIuODUzMzM0LTMyLjg1MzMzMy03OC43NjI2NjcgNzguNzYyNjY3LTMyLjg1MzMzM3pNMzg1LjcwNjY2NyA1OS43MzMzMzN2ODUuMzMzMzM0aC04NS4zMzMzMzR2LTg1LjMzMzMzNGg4NS4zMzMzMzR6IG0xNzAuNjY2NjY2IDB2ODUuMzMzMzM0aC04NS4zMzMzMzN2LTg1LjMzMzMzNGg4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIiA+PC9wYXRoPjwvc3ZnPg==","star-innerRatio":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU2OS4zNDQgNDQ5LjUzNmwxNDYuOTQ0IDI4LjY3MiAxLjAyNC00LjYwOHY0LjYwOGgxLjAyNGM5LjcyOCAwIDE2Ljg5Ni03LjY4IDIwLjQ4LTE0Ljg0OGwxLjAyNC0yLjA0OHYtMi41NmMwLTUuNjMyIDAtMTEuMjY0LTUuMTItMTYuMzg0LTMuMDcyLTMuMDcyLTcuMTY4LTcuMTY4LTEyLjgtNy42OGwtMTI0LjkyOC0yNC4wNjRMNTQxLjY5NiAyODYuNzJjLTIuMDQ4LTQuNjA4LTYuNjU2LTguMTkyLTExLjc3Ni05LjcyOC01LjEyLTEuNTM2LTEwLjc1Mi0xLjUzNi0xNS4zNiAxLjAyNGwtMS41MzYgMC41MTItMS4wMjQgMS4wMjRjLTguMTkyIDguMTkyLTEwLjc1MiAxOS40NTYtNi42NTYgMjcuMTM2bDY0IDE0Mi44NDh6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PHBhdGggZD0iTTkzMS4zMjggNDAzLjQ1NmMtMTAuMjQtMzUuMzI4LTM4LjQtNjEuNDQtNzEuNjgtNjYuNTZsLTE4NC44MzItMzUuODQtODIuNDMyLTE4Mi43ODRjLTEyLjgtMzMuMjgtNDYuMDgtNTYuMzItODAuMzg0LTU2LjMyLTMzLjc5MiAwLTY0LjUxMiAyMC40OC03OS44NzIgNTMuNzZMMzQ5LjE4NCAyOTkuMDA4bC0xODQuMzIgMzUuMzI4Yy0zMy43OTIgNS4xMi02MS45NTIgMzEuMjMyLTcyLjE5MiA2Ni41Ni05LjcyOCAzNC4zMDQtMS4wMjQgNzIuMTkyIDIzLjA0IDk4LjgxNmwxMzEuNTg0IDEzMy42MzItMzUuODQgMTk2LjYwOGMtNS42MzIgMzQuODE2IDguNzA0IDcxLjY4IDM1Ljg0IDk0LjIwOCAxMy44MjQgMTEuMjY0IDM0LjMwNCAxOC40MzIgNTIuMjI0IDE4LjQzMiAxNi44OTYgMCAyOS42OTYtMy4wNzIgNDEuNDcyLTEwLjI0bDE2OC45Ni05MS4xMzYgMTY2LjkxMiA5MS4xMzYgMS4wMjQgMC41MTJjMTYuODk2IDYuNjU2IDI5LjY5NiA5LjcyOCA0MC40NDggOS43MjggMTQuMzM2IDAgMjcuNjQ4LTQuMDk2IDQwLjQ0OC03LjY4IDQuNjA4LTEuNTM2IDkuNzI4LTMuMDcyIDE0Ljg0OC00LjA5NmwyLjU2LTAuNTEyIDIuMDQ4LTEuNTM2YzI1LjA4OC0yMy4wNCAzNy44ODgtNTguODggMzIuNzY4LTkzLjY5NmwtMzMuMjgtMTk2LjYwOCAxMzEuNTg0LTEzNi4xOTJjMjQuMDY0LTI3LjY0OCAzMi4yNTYtNjIuOTc2IDIyLjAxNi05OC44MTZ6TTI3Ni45OTIgODM2LjA5Nmw0MS45ODQtMjMxLjkzNi0xNTcuMTg0LTE1OS4yMzJjLTUuNjMyLTUuNjMyLTguMTkyLTE3LjQwOC02LjY1Ni0yOS4xODQgMy41ODQtMTAuMjQgMTAuMjQtMTYuMzg0IDE5LjQ1Ni0xNy45MmwyMTguMTEyLTQxLjk4NCA5Ni4yNTYtMjE1LjU1MmMzLjA3Mi03LjE2OCAxMi44LTE0LjMzNiAyMC40OC0xNC4zMzZzMTcuNDA4IDcuMTY4IDIwLjQ4IDE0Ljg0OGw5OC4zMDQgMjE1LjA0IDIxOC4xMTIgNDEuOTg0YzcuMTY4IDEuNTM2IDE1LjM2IDcuMTY4IDE2Ljg5NiAxNi4zODR2My4wNzJjMi4wNDggMTEuNzc2LTAuNTEyIDIyLjUyOC02LjY1NiAzMC43Mkw2OTkuOTA0IDYwOS4yOGwzOS45MzYgMjMxLjQyNGMxLjUzNiAxMC43NTItMi4wNDggMjAuNDgtMTAuMjQgMjcuMTM2bC0xLjAyNCAwLjUxMmMtMi41NiAyLjU2LTYuNjU2IDQuMDk2LTExLjI2NCA0LjA5Ni0yLjA0OCAwLTcuMTY4LTEuNTM2LTExLjI2NC0zLjU4NGwtMTk3LjEyLTEwOC4wMzItMTk5LjE2OCAxMDIuOTEyYy00LjA5NiAyLjA0OC05LjIxNiAzLjU4NC0xMS43NzYgMy41ODQtNC42MDggMC04LjcwNC0xLjUzNi0xMS4yNjQtNC4wOTZsLTEuMDI0LTAuNTEyYy02LjY1Ni02LjE0NC0xMC43NTItMTYuMzg0LTguNzA0LTI2LjYyNHoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=",speechBallon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=","speechBallon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48L3N2Zz4=","speechBallon-placement":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU3NiAyMTMuMzMzMzMzbDIyLjYxMzMzMyAyMi42MTMzMzRhMzIgMzIgMCAwIDAgMC00NS4yMjY2NjdMNTc2IDIxMy4zMzMzMzN6IG0tNjIuNzItMTA3Ljk0NjY2NmEzMiAzMiAwIDEgMC00NS4yMjY2NjcgNDUuMjI2NjY2bDQ1LjIyNjY2Ny00NS4yMjY2NjZ6IG0tNDUuMjI2NjY3IDE3MC42NjY2NjZhMzIgMzIgMCAwIDAgNDUuMjI2NjY3IDQ1LjIyNjY2N2wtNDUuMjI2NjY3LTQ1LjIyNjY2N3pNNDQ4IDgxMC42NjY2NjdsLTIyLjYxMzMzMy0yMi42MTMzMzRhMzIgMzIgMCAwIDAgMCA0NS4yMjY2NjdsMjIuNjEzMzMzLTIyLjYxMzMzM3ogbTEwNy45NDY2NjctNjIuNzJhMzIgMzIgMCAxIDAtNDUuMjI2NjY3LTQ1LjIyNjY2N2w0NS4yMjY2NjcgNDUuMjI2NjY3eiBtLTQ1LjIyNjY2NyAxNzAuNjY2NjY2YTMyIDMyIDAgMSAwIDQ1LjIyNjY2Ny00NS4yMjY2NjZsLTQ1LjIyNjY2NyA0NS4yMjY2NjZ6TTgxMC42NjY2NjcgNTc2bC0yMi42MTMzMzQgMjIuNjEzMzMzYTMyIDMyIDAgMCAwIDQ1LjIyNjY2NyAwTDgxMC42NjY2NjcgNTc2eiBtMTA3Ljk0NjY2Ni02Mi43MmEzMiAzMiAwIDEgMC00NS4yMjY2NjYtNDUuMjI2NjY3bDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAtNDUuMjI2NjY3IDQ1LjIyNjY2N2w0NS4yMjY2NjctNDUuMjI2NjY3ek0yMTMuMzMzMzMzIDQ0OGwyMi42MTMzMzQtMjIuNjEzMzMzYTMyIDMyIDAgMCAwLTQ1LjIyNjY2NyAwbDIyLjYxMzMzMyAyMi42MTMzMzN6IG02Mi43MiAxMDcuOTQ2NjY3YTMyIDMyIDAgMCAwIDQ1LjIyNjY2Ny00NS4yMjY2NjdsLTQ1LjIyNjY2NyA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAgNDUuMjI2NjY2IDQ1LjIyNjY2N2wtNDUuMjI2NjY2LTQ1LjIyNjY2N3pNMzA5LjMzMzMzMyAyMTMuMzMzMzMzQTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMjM0LjY2NjY2NyAyODh2NjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDM3My4zMzMzMzMgMjEzLjMzMzMzM2gtNjR6TTIzNC42NjY2NjcgMjg4QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMTYwIDIxMy4zMzMzMzNoLTY0QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAyMzQuNjY2NjY3IDM1MnYtNjR6TTE2MCAyMTMuMzMzMzMzYzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2NnYtNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDk2IDIxMy4zMzMzMzNoNjR6TTIzNC42NjY2NjcgMTM4LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NiA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIzNC42NjY2NjcgNzQuNjY2NjY3djY0ek0zNDEuMzMzMzMzIDI0NS4zMzMzMzNoMjM0LjY2NjY2N3YtNjRIMzQxLjMzMzMzM3Y2NHogbTI1Ny4yOC01NC42MTMzMzNsLTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NiA4NS4zMzMzMzQgODUuMzMzMzM0IDQ1LjIyNjY2Ni00NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsLTg1LjMzMzMzNCA4NS4zMzMzMzMgNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2Njd6TTY1MC42NjY2NjcgODEwLjY2NjY2N2ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2NiAxMzguNjY2NjY2di02NEE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxIDcxNC42NjY2NjcgODEwLjY2NjY2N2gtNjR6IG0xMzguNjY2NjY2IDEzOC42NjY2NjZBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDkyOCA4MTAuNjY2NjY3aC02NGE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxLTc0LjY2NjY2NyA3NC42NjY2NjZ2NjR6TTkyOCA4MTAuNjY2NjY3YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY3LTEzOC42NjY2Njd2NjRjNDEuMjE2IDAgNzQuNjY2NjY3IDMzLjQ1MDY2NyA3NC42NjY2NjcgNzQuNjY2NjY3aDY0eiBtLTEzOC42NjY2NjctMTM4LjY2NjY2N0ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgNjUwLjY2NjY2NyA4MTAuNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY2LTc0LjY2NjY2N3YtNjR6IG0tMTA2LjY2NjY2NiAxMDYuNjY2NjY3aC0yMzQuNjY2NjY3djY0SDY4Mi42NjY2Njd2LTY0eiBtLTIxMi4wNTMzMzQgNTQuNjEzMzMzbDg1LjMzMzMzNC04NS4zMzMzMzMtNDUuMjI2NjY3LTQ1LjIyNjY2Ny04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsODUuMzMzMzMzIDg1LjMzMzMzMyA0NS4yMjY2NjctNDUuMjI2NjY2LTg1LjMzMzMzNC04NS4zMzMzMzQtNDUuMjI2NjY2IDQ1LjIyNjY2N3pNNjcyIDIzNC42NjY2NjdBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDgxMC42NjY2NjcgMzczLjMzMzMzM3YtNjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjctNzQuNjY2NjY2aC02NHpNODEwLjY2NjY2NyAzNzMuMzMzMzMzYTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAxMzguNjY2NjY2LTEzOC42NjY2NjZoLTY0QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgODEwLjY2NjY2NyAzMDkuMzMzMzMzdjY0eiBtMTM4LjY2NjY2Ni0xMzguNjY2NjY2QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCA4MTAuNjY2NjY3IDk2djY0YzQxLjIxNiAwIDc0LjY2NjY2NyAzMy40NTA2NjcgNzQuNjY2NjY2IDc0LjY2NjY2N2g2NHpNODEwLjY2NjY2NyA5NmExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAtMTM4LjY2NjY2NyAxMzguNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2N3YtNjR6TTc3OC42NjY2NjcgMzQxLjMzMzMzM3YyMzQuNjY2NjY3aDY0VjM0MS4zMzMzMzNoLTY0eiBtNTQuNjEzMzMzIDI1Ny4yOGw4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2NjctODUuMzMzMzM0IDg1LjMzMzMzNCA0NS4yMjY2NjcgNDUuMjI2NjY2eiBtMC00NS4yMjY2NjZsLTg1LjMzMzMzMy04NS4zMzMzMzQtNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2Ny00NS4yMjY2NjZ6TTEzOC42NjY2NjcgNzg5LjMzMzMzM2MwLTQxLjIxNiAzMy40NTA2NjctNzQuNjY2NjY3IDc0LjY2NjY2Ni03NC42NjY2NjZ2LTY0YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY2IDEzOC42NjY2NjZoNjR6TTIxMy4zMzMzMzMgNzE0LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NyA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIxMy4zMzMzMzMgNjUwLjY2NjY2N3Y2NHogbTc0LjY2NjY2NyA3NC42NjY2NjZBNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMSAyMTMuMzMzMzMzIDg2NHY2NGExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2Ny0xMzguNjY2NjY3aC02NHpNMjEzLjMzMzMzMyA4NjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjYtNzQuNjY2NjY3aC02NEExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMjEzLjMzMzMzMyA5Mjh2LTY0ek0yNDUuMzMzMzMzIDY4Mi42NjY2Njd2LTIzNC42NjY2NjdoLTY0VjY4Mi42NjY2NjdoNjR6IG0tNTQuNjEzMzMzLTIxMi4wNTMzMzRsODUuMzMzMzMzIDg1LjMzMzMzNCA0NS4yMjY2NjctNDUuMjI2NjY3LTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NnogbTAtNDUuMjI2NjY2bC04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2NjcgODUuMzMzMzM0LTg1LjMzMzMzNC00NS4yMjY2NjctNDUuMjI2NjY2eiIgIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4="};function kt(s){return ySe[s]}const vSe=s=>{const{workIds:t,mananger:e}=s;return H.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:r=>{r.cancelable&&r.preventDefault(),r.stopPropagation(),r.nativeEvent.stopImmediatePropagation(),Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:t||[Ne],viewId:e.viewId})}},H.createElement("img",{alt:"icon",src:kt("delete")}))},MSe=s=>{const{workIds:t,viewId:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:r=>{r.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:t||[Ne],viewId:e})}},H.createElement("img",{alt:"icon",src:kt("duplicate")}))},Xp=s=>{const{icon:t,onPointerUpHandler:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:e},H.createElement("img",{src:kt(t)}))},wSe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,mananger:i}=H.useContext(lt),[o,a]=H.useState([]),c=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(n==null?void 0:n.y)&&(i!=null&&i.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>180){const h={};return h.top="inherit",h.bottom=50,h}else if(!r.current.offsetTop&&(i==null?void 0:i.height)-r.current.offsetTop-n.y<120){const h={};return h.top="inherit",h.bottom=50,h}}},[r==null?void 0:r.current,n,i]),l=H.useMemo(()=>t?H.createElement("div",{className:"image-layer-menu",style:c},H.createElement(Xp,{icon:"to-top",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Ne],layer:In.Top,viewId:i==null?void 0:i.viewId})}}),H.createElement(Xp,{icon:"to-bottom",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Ne],layer:In.Bottom,viewId:i==null?void 0:i.viewId})}})):null,[t,c]),u=h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),e(!t)};return H.useEffect(()=>{ve.isEqual(n==null?void 0:n.selectIds,o)||n!=null&&n.selectIds&&!ve.isEqual(n==null?void 0:n.selectIds,o)&&(a(n==null?void 0:n.selectIds),e(!1))},[t,n,o,e]),H.createElement("div",{className:`button normal-button ${t&&"active"}`,onPointerUp:u},l,H.createElement("img",{alt:"icon",src:kt(t?"layer-pressed":"layer")}))},fo=s=>{s.stopPropagation(),s.nativeEvent.stopImmediatePropagation()},SSe=()=>H.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},H.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),eM=s=>{const{activeColor:t,onPointerUpHandler:e}=s;return H.createElement("div",{className:`font-color-button ${t==="transparent"?"active":""}`,onPointerUp:e},H.createElement("div",{className:"circle none"}))},Bc=s=>{const{color:t,activeColor:e,onPointerUpHandler:r}=s;return H.createElement("div",{className:`font-color-button ${t===e?"active":""}`,onPointerUp:r},H.createElement("div",{className:"circle",style:{backgroundColor:Et(t,1)}}))},jc=s=>{const{opacity:t,activeColor:e,setCurOpacity:r}=s,[n,i]=H.useState({x:108,y:0}),o=H.useRef(0);if(H.useEffect(()=>{i({x:t*100+8,y:0})},[]),!e)return null;const a=(h,d)=>{const f=Math.min(Math.max(h-8,0),100)/100;(t!==f||d===de.Done)&&r(f,e,d)},c=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),!o.current&&(o.current=setTimeout(()=>{o.current=0,a(d.x,de.Doing)},100))},l=()=>{r(t,e,de.Start)},u=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),o.current&&(clearTimeout(o.current),o.current=0),a(d.x,de.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:h=>{o.current&&(clearTimeout(o.current),o.current=0);const d=h.nativeEvent.offsetX,f=Math.min(Math.max(d-12,0),100)/100;i({x:f*100+8,y:0}),r(f,e,de.Done)}},H.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Et(e,0)}, ${Et(e,1)})`}}),H.createElement("div",{className:"range-opacity"},H.createElement(Gi,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:u},H.createElement("div",{className:"circle",style:{backgroundColor:Et(e,t)},onPointerUp:fo}))))},TSe=s=>{const{min:t,max:e,activeNumber:r,setActiveNumber:n,color:i}=s,[o,a]=H.useState({x:108,y:0}),c=H.useRef(0);if(H.useEffect(()=>{const f=Math.ceil((r-t)/(e-t)*100)+8;a({x:f,y:0})},[]),!r)return null;const l=(f,g)=>{const y=Math.ceil(Math.max(f-8,0)/100*(e-t)+t);(r!==y||g===de.Done)&&n(y,g)},u=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),!c.current&&(c.current=setTimeout(()=>{c.current=0,l(g.x,de.Doing)},100))},h=()=>{n(r,de.Start)},d=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),c.current&&(clearTimeout(c.current),c.current=0),l(g.x,de.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:f=>{c.current&&(clearTimeout(c.current),c.current=0);const g=f.nativeEvent.offsetX,y=Math.ceil(Math.max(g-12,0)/100*(e-t)+t),T=Math.ceil((y-t)/(e-t)*100)+8;a({x:T,y:0}),n(y,de.Done)}},H.createElement("div",{className:"range-color",style:{backgroundColor:i}}),H.createElement("div",{className:"range-opacity"},H.createElement(Gi,{bounds:"parent",axis:"x",position:o,onDrag:u,onStart:h,onStop:d},H.createElement("div",{className:"circle",style:{backgroundColor:i},onPointerUp:fo},H.createElement("div",{className:"range-opacity-data-icon"},r)))))},CSe=s=>{const{useStroke:t,color:e,activeStrokeType:r,setStrokeType:n}=s;return H.createElement("div",{className:"stroke-type-box"},!!t&&H.createElement("div",{className:`stroke-type-box-item Stroke ${r===Be.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{n(Be.Stroke)}}),H.createElement("div",{className:`stroke-type-box-item Normal ${r===Be.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Normal)}}),H.createElement("div",{className:`stroke-type-box-item Dotted ${r===Be.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Dotted)}}),H.createElement("div",{className:`stroke-type-box-item LongDotted ${r===Be.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.LongDotted)}}))},ISe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.strokeColor){const[C,L]=kc(n.strokeColor);l(C),h(L)}},[n]);const d=H.useMemo(()=>{if(r!=null&&r.current&&n&&ve.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!r.current.offsetTop&&(o==null?void 0:o.height)-r.current.offsetTop-n.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[n,r,o==null?void 0:o.height]),f=H.useMemo(()=>H.createElement(jc,{key:"strokeColors",opacity:u,activeColor:c,setCurOpacity:(C,L,S)=>{h(C);const p=Et(L,C);n!=null&&n.strokeColor&&a({strokeColor:p}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],strokeColor:p,workState:S,viewId:o==null?void 0:o.viewId})}}),[u,c,n==null?void 0:n.strokeColor,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>c&&n&&n.thickness?H.createElement(TSe,{key:"strokeThickness",min:Math.min(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min)||He.strokeWidth.min),max:Math.max(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max)||He.strokeWidth.max),activeNumber:n.thickness,setActiveNumber:(C,L)=>{n!=null&&n.thickness&&a({thickness:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],thickness:C,workState:L,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min,o==null?void 0:o.viewId,a]),y=H.useMemo(()=>c&&n&&(n!=null&&n.strokeType)?H.createElement(CSe,{key:"strokeType",useStroke:n==null?void 0:n.useStroke,activeStrokeType:n.strokeType,setStrokeType:C=>{n.strokeType&&a({strokeType:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],strokeType:C,workState:de.Done,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.viewId,a]),T=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},y,g,H.createElement("div",{className:"font-colors-line"}),i.concat().map((C,L)=>{const S=ho(...C);return H.createElement(Bc,{key:L,color:S,activeColor:c,onPointerUpHandler:p=>{p.stopPropagation(),l(S);const m=Et(S,u);n!=null&&n.strokeColor&&(n.strokeColor=m,a({strokeColor:m})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],workState:de.Done,strokeColor:m,viewId:o==null?void 0:o.viewId})}})}),f):null,[t,d,y,g,i,f,c,u,n,o==null?void 0:o.viewId,a]),x=H.useMemo(()=>c?H.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Et(c,u)}},H.createElement("div",{className:"circle"})):null,[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},x,T)},bSe=s=>{const{open:t,setOpen:e,floatBarRef:r}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.fillColor){const[T,x]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||kc(n.fillColor);l(T),h(x)}},[n]);const d=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(r.current.offsetTop&&r.current.offsetTop+n.y>200){const T={};return T.top="inherit",T.bottom=50,T}else if(!r.current.offsetTop&&(o==null?void 0:o.height)-r.current.offsetTop-n.y<140){const T={};return T.top="inherit",T.bottom=50,T}}},[r,n,o==null?void 0:o.height]),f=H.useMemo(()=>c&&c!=="transparent"?H.createElement(jc,{key:"fillColors",opacity:u||0,activeColor:c,setCurOpacity:(T,x,C)=>{h(T);const L=Et(x,T);n!=null&&n.fillColor&&(n.fillColor=L,a({fillColor:L})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],fillColor:c&&Et(x,T),workState:C,viewId:o==null?void 0:o.viewId})}}):null,[c,u,n,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:T=>{T.stopPropagation(),T.nativeEvent.stopImmediatePropagation()}},H.createElement(eM,{activeColor:c,onPointerUpHandler:T=>{T.stopPropagation(),l("transparent");const x="transparent";n!=null&&n.fillColor&&(n.fillColor=x,a({fillColor:x})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],workState:de.Done,fillColor:x,viewId:o==null?void 0:o.viewId})}}),i.map((T,x)=>{const C=ho(...T);return H.createElement(Bc,{key:x,color:C,activeColor:c,onPointerUpHandler:L=>{L.cancelable&&L.preventDefault(),L.stopPropagation(),l(C);const S=Et(C,u);n!=null&&n.fillColor&&(n.fillColor=S,a({fillColor:S})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Ne],workState:de.Done,fillColor:S,viewId:o==null?void 0:o.viewId})}})}),f):null,[t,d,c,i,f,n,o==null?void 0:o.viewId,a,u]),y=H.useMemo(()=>{const T=c&&c!=="transparent"&&Et(c,u)||"transparent";return H.createElement("div",{className:"color-bar-fill"},H.createElement("div",{className:"circle",style:{backgroundColor:T}}))},[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:T=>{T.stopPropagation(),T.nativeEvent.stopImmediatePropagation(),e(!t)}},y,g)},ESe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(lt),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(r!=null&&r.fontColor){const[C,L]=(r==null?void 0:r.fontColor)==="transparent"&&["transparent",0]||kc(r.fontColor);h(C),f(L)}},[r==null?void 0:r.fontColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ve.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(jc,{key:"fontColors",opacity:d,activeColor:u,setCurOpacity:(C,L,S)=>{f(C);const p=Et(L,C);l!=null&&l.textOpt&&(l.textOpt.fontColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Ne],fontColor:u&&p,workState:S,viewId:a==null?void 0:a.viewId})}}):null,[c,u,d,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,n]),T=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},o.map((C,L)=>{const S=ho(...C);return H.createElement(Bc,{key:L,color:S,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(S);const m=Et(S,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Ne],workState:de.Done,fontColor:m,viewId:a==null?void 0:a.viewId})}})}),y):null,[c,t,o,y,u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),x=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar"},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement("img",{alt:"icon",src:kt("font-colors")}),x,T)},xSe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(lt),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(r!=null&&r.fontBgColor){const[C,L]=(r==null?void 0:r.fontBgColor)==="transparent"&&["transparent",1]||kc(r.fontBgColor);h(C),f(L)}},[r==null?void 0:r.fontBgColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ve.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(jc,{key:"fontBgColor",opacity:d||0,activeColor:u,setCurOpacity:(C,L,S)=>{f(C);const p=Et(L,C);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Ne],fontBgColor:u&&Et(L,C),workState:S,viewId:a==null?void 0:a.viewId})}}):null,[u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,c]),T=H.useMemo(()=>t?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},H.createElement(eM,{activeColor:u,onPointerUpHandler:C=>{C.stopPropagation();const L="transparent";h(L),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=L,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Ne],workState:de.Done,fontBgColor:L,viewId:a==null?void 0:a.viewId})}}),o.map((C,L)=>{const S=ho(...C);return H.createElement(Bc,{key:L,color:S,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(S);const m=Et(S,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Ne],workState:de.Done,fontBgColor:Et(S,d),viewId:a==null?void 0:a.viewId})}})}),y):null,[c,t,o,y,d,u,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),x=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar",style:{marginTop:0}},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${t&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement(SSe,null),x,T)},RSe=s=>{const{bold:t,setBold:e,workIds:r,viewId:n}=s,i=o=>{const a=t==="bold"?"normal":"bold";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,bold:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:kt(t==="bold"?"bold-active":"bold")}))},ASe=s=>{const{underline:t,setUnderline:e,workIds:r,viewId:n}=s,i=o=>{const a=!t;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,underline:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:kt(t?"underline-active":"underline")}))},kSe=s=>{const{lineThrough:t,setLineThrough:e,workIds:r,viewId:n}=s,i=o=>{const a=!t;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,lineThrough:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:kt(t?"line-through-active":"line-through")}))},PSe=s=>{const{italic:t,setItalic:e,workIds:r,viewId:n}=s,i=o=>{const a=t==="italic"?"normal":"italic";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:r,viewId:n,italic:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:kt(t==="italic"?"italic-active":"italic")}))},DSe=s=>{const{open:t,setOpen:e,textOpt:r,workIds:n,style:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(lt),[l,u]=H.useState("normal"),[h,d]=H.useState("normal"),[f,g]=H.useState(!1),[y,T]=H.useState(!1);H.useEffect(()=>{r!=null&&r.bold&&u(r.bold),ve.isBoolean(r==null?void 0:r.underline)&&g(r.underline||!1),ve.isBoolean(r==null?void 0:r.lineThrough)&&T(r.lineThrough||!1),r!=null&&r.italic&&d(r.italic)},[r]);const x=H.useMemo(()=>{if(i&&(o!=null&&o.current)&&ve.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const L={};return L.top="inherit",L.bottom=50,L}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const L={};return L.top="inherit",L.bottom=50,L}}},[i,o==null?void 0:o.current,c,a]),C=H.useMemo(()=>t?H.createElement("div",{className:"font-style-menu",style:x,onPointerUp:L=>{L.stopPropagation(),L.nativeEvent.stopImmediatePropagation()}},H.createElement(RSe,{workIds:n||[Ne],bold:l,setBold:u,viewId:a==null?void 0:a.viewId}),H.createElement(ASe,{workIds:n||[Ne],underline:f,setUnderline:g,viewId:a==null?void 0:a.viewId}),H.createElement(kSe,{workIds:n||[Ne],lineThrough:y,setLineThrough:T,viewId:a==null?void 0:a.viewId}),H.createElement(PSe,{workIds:n||[Ne],italic:h,setItalic:d,viewId:a==null?void 0:a.viewId})):null,[t,n,l,a==null?void 0:a.viewId,f,y,h,x]);return H.createElement("div",{className:`button normal-button ${t&&"active"}`,onPointerUp:L=>{L.stopPropagation(),L.nativeEvent.stopImmediatePropagation(),e(!t)}},H.createElement("img",{alt:"icon",src:kt(t?"font-style-active":"font-style")}),C)},LSe=s=>{const{style:t,onClickHandler:e}=s;return H.createElement("div",{className:"font-size-menu",style:t,onPointerUp:r=>{r.stopPropagation(),r.nativeEvent.stopImmediatePropagation()}},Ar.map(r=>H.createElement("div",{className:"font-size-btn",key:r,onPointerUp:()=>{e(r)}},r)))},NSe=s=>{const t=H.useRef(null),{open:e,setOpen:r,textOpt:n,workIds:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(lt),[l,u]=H.useState(0),h=Ar.length-1;H.useEffect(()=>{n!=null&&n.fontSize&&(u(n.fontSize),t.current&&(t.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const d=H.useMemo(()=>{if(o!=null&&o.current&&ve.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const x={};return x.top="inherit",x.bottom=35,x}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const x={};return x.top="inherit",x.bottom=35,x}}},[o==null?void 0:o.current,c,a]);function f(x){u(x),x&&x>=Ar[0]&&x<=Ar[h]&&Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:i||[Ne],fontSize:x,viewId:a==null?void 0:a.viewId})}const g=x=>{var C;(C=t.current)==null||C.blur(),r(!1),T(x)},y=H.useMemo(()=>e?H.createElement(LSe,{onClickHandler:g,style:d}):null,[e,g,d]),T=x=>{x>Ar[h]&&(x=Ar[h]),x<Ar[0]&&(x=Ar[0]),f(x)};return H.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:x=>{x.stopPropagation(),x.nativeEvent.stopImmediatePropagation()}},H.createElement("input",{className:"font-size-input",ref:t,onTouchEnd:()=>{t.current&&t.current.focus()},onClick:()=>{r(!e),t.current&&t.current.focus()},onKeyDown:x=>{if(x.stopPropagation(),x.nativeEvent.stopImmediatePropagation(),x.key==="Backspace"){const C=window.getSelection(),L=C==null?void 0:C.getRangeAt(0);if(L!=null&&L.collapsed)return x.cancelable&&x.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:x=>{var C;if(x.stopPropagation(),x.nativeEvent.stopImmediatePropagation(),t.current){const L=t.current.value,S=parseInt(L);isNaN(S)?t.current.value="0":t.current.value=S.toString(),S&&x.key==="Enter"&&(T(S),(C=t.current)==null||C.blur(),r(!1))}}}),H.createElement("div",{className:"font-size-btns"},H.createElement("div",{className:"font-size-add",onPointerUp:()=>{T(l+Ar[0])}}),H.createElement("div",{className:"font-size-cut",onPointerUp:()=>{T(l-Ar[0])}})),y)},OSe=s=>{const{workIds:t,mananger:e,islocked:r}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:n=>{n.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.SetLock,{workIds:t||[Ne],isLocked:!r,viewId:e==null?void 0:e.viewId})}},H.createElement("img",{alt:"icon",src:kt(r?"unlock-new":"lock-new")}))},Qu=s=>{const{icon:t,min:e,max:r,step:n,value:i,onInputHandler:o}=s,[a,c]=H.useState(0),l=H.useRef(null),u=h=>{h>r&&(h=r),h<e&&(h=e),c(h),o(h),l.current&&(l.current.value=h.toString())};return H.useEffect(()=>{i&&(c(i),l.current&&(l.current.value=i.toString()))},[i]),H.createElement("div",{className:"button input-button"},H.createElement("img",{src:kt(t)}),H.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.key==="Backspace"){const d=window.getSelection(),f=d==null?void 0:d.getRangeAt(0);if(f!=null&&f.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),l.current){const d=l.current.value,f=parseInt(d);isNaN(f)?l.current.value="0":l.current.value=f.toString()}},onChange:h=>{const d=h.target.value,f=parseInt(d);f&&f&&f>=e&&f<=r&&u(f)}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(a+n)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(a-n)}})))},zSe=s=>{const{icon:t,min:e,max:r,step:n,value:i,onInputHandler:o}=s;return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:kt(t)}),H.createElement(BSe,{min:e,max:r,step:n,value:i,onInputHandler:o}))},BSe=s=>{const{value:t,min:e,max:r,onInputHandler:n}=s,[i,o]=H.useState({x:0,y:0});H.useEffect(()=>{o({x:t*100,y:0})},[]);const a=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,r*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;t!==f&&n(f)},c=()=>{},l=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,r*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;t!==f&&n(f)};return H.createElement("div",{className:"range-number-container",onPointerUp:u=>{const h=u.nativeEvent.offsetX-6;let d=Math.floor(Math.max(h,e*100));d=Math.floor(Math.min(d,r*100)),o({x:d,y:0});const f=d/100;t!==f&&n(f)}},H.createElement("div",{className:"range-number-color"}),H.createElement("div",{className:"range-number"},H.createElement(Gi,{bounds:"parent",axis:"x",position:i,onDrag:a,onStart:c,onStop:l},H.createElement("div",{className:"circle",onPointerUp:fo}))))},jSe=s=>{const{icon:t,value:e,onChangeHandler:r,style:n}=s,[i,o]=H.useState(0),[a,c]=H.useState(),l=H.useRef(null),u=H.useCallback(f=>{f>=bi.length&&(f=0),f<0&&(f=bi.length-1),o(f),r(bi[f]),c(!1),l.current&&(l.current.value=bi[f])},[r]),h=H.useMemo(()=>{if(n&&n.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[n]);H.useEffect(()=>{e&&(o(bi.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=H.useMemo(()=>a?H.createElement(FSe,{options:bi,onClickHandler:u,style:h}):null,[a,u,h]);return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:kt(t)}),H.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&(l.current.focus(),c(!a))}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(i+1)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(i-1)}})),d)},FSe=s=>{const{options:t,style:e,onClickHandler:r}=s;return H.createElement("div",{className:"select-option-menu",style:e},t.map((n,i)=>H.createElement("div",{className:"select-option-btn",key:n,onPointerUp:()=>{r(i)}},n)))},USe=s=>{const{innerRatio:t,innerVerticeStep:e,vertices:r,mananger:n,setShapeOpt:i}=s,o=l=>{i({vertices:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Ne],toolsType:q.Star,viewId:n.viewId,vertices:l})},a=l=>{i({innerVerticeStep:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Ne],toolsType:q.Star,viewId:n.viewId,innerVerticeStep:l})},c=l=>{i({innerRatio:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Ne],toolsType:q.Star,viewId:n.viewId,innerRatio:l})};return H.createElement(H.Fragment,null,H.createElement(Qu,{value:r,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o}),H.createElement(Qu,{value:e,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:a}),H.createElement(zSe,{value:t,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:c}))},WSe=s=>{const{mananger:t,vertices:e,setShapeOpt:r}=s,n=i=>{r({vertices:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Ne],toolsType:q.Polygon,viewId:t.viewId,vertices:i})};return H.createElement(Qu,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:n})},VSe=s=>{const{mananger:t,placement:e,setShapeOpt:r}=s,n=i=>{r({placement:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Ne],toolsType:q.SpeechBalloon,viewId:t.viewId,placement:i})};return H.createElement(jSe,{value:e,icon:"speechBallon-placement",onChangeHandler:n})},Hl=s=>{const{icon:t,isActive:e,onPointerUpHandler:r}=s;return H.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:r},H.createElement("img",{src:kt(t)}))},$Se=s=>{const{toolsTypes:t,style:e,mananger:r,shapeOpt:n,setShapeOpt:i}=s,[o,a]=H.useState();H.useEffect(()=>{t.includes(q.Polygon)?a(q.Polygon):t.includes(q.Star)?a(q.Star):a(q.SpeechBalloon)},[t]);const c=d=>{a(d)},l=H.useMemo(()=>o===q.Polygon&&r&&n.vertices?H.createElement(WSe,{vertices:n.vertices,mananger:r,setShapeOpt:i}):null,[r,o,n,i]),u=H.useMemo(()=>o===q.Star&&r&&n.vertices&&n.innerVerticeStep&&n.innerRatio?H.createElement(USe,{mananger:r,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio,setShapeOpt:i}):null,[r,o,n,i]),h=H.useMemo(()=>o===q.SpeechBalloon&&r&&n.placement?H.createElement(VSe,{mananger:r,placement:n.placement,setShapeOpt:i}):null,[o,r,n.placement,i]);return H.createElement("div",{className:"shapeOpt-sub-menu",style:e,onPointerUp:fo},H.createElement("div",{className:"shapeOpt-sub-menu-tabs"},t.includes(q.Polygon)&&H.createElement(Hl,{isActive:o===q.Polygon,icon:o===q.Polygon?"polygon-active":"polygon",onPointerUpHandler:c.bind(void 0,q.Polygon)})||null,t.includes(q.Star)&&H.createElement(Hl,{isActive:o===q.Star,icon:o===q.Star?"star-active":"star",onPointerUpHandler:c.bind(void 0,q.Star)})||null,t.includes(q.SpeechBalloon)&&H.createElement(Hl,{isActive:o===q.SpeechBalloon,icon:o===q.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:c.bind(void 0,q.SpeechBalloon)})||null),H.createElement("div",{className:"shapeOpt-sub-menu-content"},l,u,h))},YSe=s=>{const{open:t,setOpen:e,floatBarRef:r,toolsTypes:n,shapeOpt:i}=s,{floatBarData:o,mananger:a,setFloatBarData:c}=H.useContext(lt),l=H.useRef(null),u=H.useMemo(()=>{if(r!=null&&r.current&&ve.isNumber(o==null?void 0:o.x)&&ve.isNumber(o==null?void 0:o.y)&&(a!=null&&a.height)){if(r.current.offsetTop&&r.current.offsetTop+o.y>200){const g={};return g.top="inherit",g.bottom=50,g}else if(!r.current.offsetTop&&(a==null?void 0:a.height)-r.current.offsetTop-(o==null?void 0:o.y)<140){const g={};return g.top="inherit",g.bottom=50,g}}},[r,o==null?void 0:o.x,o==null?void 0:o.y,a==null?void 0:a.height]),h=H.useCallback(g=>{c({shapeOpt:{...i,...g}})},[c,i]),d=H.useMemo(()=>t&&n&&a&&i?H.createElement($Se,{shapeOpt:i,style:u,toolsTypes:n,mananger:a,setShapeOpt:h}):null,[t,u,n,a,i,h]),f=()=>{e(!t)};return H.createElement("div",{ref:l,className:`button normal-button ${t&&"active"}`,onPointerUp:f},d,H.createElement("img",{alt:"icon",src:kt(t?"shapes-active":"shapes")}))},tM=H.memo(s=>{const{textOpt:t,workIds:e,noLayer:r,position:n,noDelete:i,noCopy:o}=s,{floatBarData:a,mananger:c}=H.useContext(lt),[l,u]=H.useState(0),[h,d]=H.useState(),f=H.useRef(null);H.useEffect(()=>{var b,P,D,z;const M={},v=(a==null?void 0:a.w)||((b=t==null?void 0:t.boxSize)==null?void 0:b[0])||0,R=(a==null?void 0:a.h)||((P=t==null?void 0:t.boxSize)==null?void 0:P[1])||0;if(n&&v&&R&&(c!=null&&c.width)&&(c!=null&&c.height)){if(n.y<60?n.y+R<c.height-60?M.bottom=-120:n.y+R<c.height?M.bottom=-58:n.y>0?M.top=62:M.top=-n.y+62:M.top=0,n.x<0)M.left=-n.x+3;else if(n.x+(((D=f.current)==null?void 0:D.offsetWidth)||v)>c.width){const j=c.width-(((z=f.current)==null?void 0:z.offsetWidth)||v)-n.x;M.left=j}d(M);return}d(void 0)},[f,n,a==null?void 0:a.w,a==null?void 0:a.h,c==null?void 0:c.width,c==null?void 0:c.height,t==null?void 0:t.boxSize]);const g=H.useMemo(()=>a!=null&&a.fillColor?H.createElement(bSe,{floatBarRef:f,open:l===3,setOpen:M=>{u(M===!0?3:0)}}):null,[a==null?void 0:a.fillColor,l,f]),y=H.useMemo(()=>a!=null&&a.strokeColor?H.createElement(ISe,{floatBarRef:f,open:l===2,setOpen:M=>{u(M===!0?2:0)}}):null,[a==null?void 0:a.strokeColor,l,f]),T=H.useMemo(()=>t!=null&&t.fontColor&&(c!=null&&c.viewId)?H.createElement(ESe,{floatBarRef:f,open:l===4,setOpen:M=>{u(M===!0?4:0)},textOpt:t,workIds:e}):null,[t,l,e,c,f]),x=H.useMemo(()=>t!=null&&t.fontBgColor&&(c!=null&&c.viewId)?H.createElement(xSe,{floatBarRef:f,open:l===5,setOpen:M=>{u(M===!0?5:0)},textOpt:t,workIds:e}):null,[t,l,e,c,f]),C=H.useMemo(()=>t&&(c!=null&&c.viewId)?H.createElement(DSe,{floatBarRef:f,open:l===6,setOpen:M=>{u(M===!0?6:0)},textOpt:t,workIds:e,style:h}):null,[t,l,e,c,h,f]),L=H.useMemo(()=>t&&(c!=null&&c.viewId)?H.createElement(NSe,{open:l===7,setOpen:M=>{u(M===!0?7:0)},textOpt:t,workIds:e,floatBarRef:f}):null,[t,l,e,c,f]),S=H.useMemo(()=>r?null:H.createElement(wSe,{open:l===1,setOpen:M=>{u(M===!0?1:0)},floatBarRef:f}),[r,l,f]),p=H.useMemo(()=>a!=null&&a.canLock&&c?H.createElement(OSe,{workIds:e,mananger:c,islocked:a.isLocked}):null,[a,c,e]),m=H.useMemo(()=>c&&(c!=null&&c.viewId)&&h&&(a!=null&&a.shapeOpt)&&(a!=null&&a.toolsTypes)?H.createElement(YSe,{open:l===8,setOpen:M=>{u(M===!0?8:0)},floatBarRef:f,workIds:e,toolsTypes:a.toolsTypes,shapeOpt:a.shapeOpt}):null,[a,c,l,h,e,f]);return H.createElement("div",{className:"appliance-plugin-floatbtns",style:h,ref:f},c&&!i&&H.createElement(vSe,{workIds:e,mananger:c}),S,p,!!(c!=null&&c.viewId)&&!o&&H.createElement(MSe,{workIds:e,viewId:c.viewId}),m,C,L,T,x,y,g)}),GSe=s=>{const{data:t,workId:e,updateOptInfo:r}=s,{opt:n,scale:i,translate:o,x:a,y:c}=t,l=H.useRef(null),{floatBarData:u}=H.useContext(lt),h=H.useMemo(()=>{const{fontSize:g,fontFamily:y,underline:T,fontColor:x,lineThrough:C,textAlign:L,strokeColor:S,lineHeight:p,bold:m,italic:M}=n,v=p||g*1.2,R={fontSize:`${g}px`,lineHeight:`${v}px`,color:"transparent",caretColor:x,borderColor:S,minHeight:`${v}px`,pointerEvents:"none",paddingRight:`${M==="italic"?Math.round(g*.3):5}px`};return y&&(R.fontFamily=`${y}`),(C||T)&&(R.textDecoration=`${C&&"line-through"||""}${T&&" underline"||""}`),L&&(R.textAlign=`${L}`),m&&(R.fontWeight=`${m}`),M&&(R.fontStyle=`${M}`),R},[n]),d=H.useMemo(()=>{const g=[];if(n.text){const y=Nn(n.text);for(let T=0;T<y.length;T++){const x=y[T];x===""?g.push(H.createElement("div",{key:T})):g.push(H.createElement("div",{key:T},x))}}return g.length?g:H.createElement("div",null)},[n.text]),f=H.useMemo(()=>{if(!u)return{};const g=`scale(${i||1}) ${o&&"translate("+o[0]+"px,"+o[1]+"px)"||""}`;return{left:`${a-u.x}px`,top:`${c-u.y}px`,zIndex:1,transform:g,transformOrigin:"left top",opacity:0,pointerEvents:"auto"}},[i,o,a,c,u]);return H.useEffect(()=>{if(!l.current)return;const g=l.current.offsetWidth,y=l.current.offsetHeight;if(!g||!y)return;const T=n.boxSize;if((T==null?void 0:T[0])!==g||T[1]!==y||!T){r({activeTextId:e,update:{boxSize:[g,y],workState:de.Done}});return}},[n.fontSize,n.italic,n.bold,n.boxSize,e,r]),H.createElement("div",{className:"editor-box readonly","data-text-work-id":e,style:f},H.createElement("div",{className:"editor",ref:l,style:h},d))},HSe=s=>{const{mananger:t}=H.useContext(lt),e=H.useMemo(()=>{var n;const r=i=>{var u,h;if(!t)return;const{activeTextId:o,update:a,syncData:c}=i,l=o&&ve.cloneDeep(((u=t.control.textEditorManager)==null?void 0:u.get(o))||((h=s.editors)==null?void 0:h.get(o)));l&&l.opt&&(l.opt={...l.opt,...a},c&&(l.canSync=Object.keys(c).includes("canSync")&&c.canSync||l.canSync,l.canWorker=Object.keys(c).includes("canWorker")&&c.canWorker||l.canWorker),t.control.textEditorManager.updateForViewEdited(o,l))};if((n=s.editors)!=null&&n.size){const i=[];return s.editors.forEach((o,a)=>{if(s.selectIds&&s.selectIds.includes(a)){const c=H.createElement(GSe,{key:a,workId:a,data:o,updateOptInfo:r});i.push(c)}}),i}return null},[s.editors,s.selectIds,t]);return H.createElement(H.Fragment,null,e)},QSe=s=>{const{position:t,textOpt:e,workIds:r,noLayer:n,noCopy:i,noDelete:o,style:a}=s,c=H.useRef(null);return H.createElement("div",{className:mt.FloatBarBtn,ref:c,style:a},H.createElement(tM,{position:t,textOpt:e,workIds:r,noLayer:n,noCopy:i,noDelete:o}))},qSe=s=>{const{data:t,workId:e,showFloatBtns:r,handleKeyUp:n,handleFocus:i,runAnimation:o,updateSize:a,rightBoundBreak:c}=s,{activeTextEditor:l,activeTextId:u,mananger:h}=H.useContext(lt),{opt:d,scale:f,translate:g,x:y,y:T}=t,{fontSize:x,fontFamily:C,underline:L,fontColor:S,lineThrough:p,textAlign:m,lineHeight:M,bold:v,italic:R}=d,b=H.useRef(null),P=H.useMemo(()=>{const w=x,I=M||w*1.2,U={fontSize:`${w}px`,lineHeight:`${I}px`,caretColor:S,color:"transparent",minHeight:`${I}px`,paddingRight:`${R==="italic"?Math.round(w*.3):5}px`,borderWidth:0};return C&&(U.fontFamily=`${C}`),(p||L)&&(U.textDecoration=`${p&&"line-through"||""} ${L&&" underline"||""}`),m&&(U.textAlign=`${m}`),v&&(U.fontWeight=`${v}`),R&&(U.fontStyle=`${R}`),U},[v,S,C,x,R,M,p,f,m,L]),D=H.useRef(!1),z=H.useRef(6),j=H.useRef(),k=H.useRef(),A=H.useRef(!1),N=H.useRef(!1),W=H.useRef({fontSize:P.fontSize,lineHeight:P.lineHeight,fontStyle:P.fontStyle,fontWeight:P.fontWeight,fontFamily:P.fontFamily}),Y=H.useMemo(()=>typeof window>"u"?!1:navigator.maxTouchPoints>0||"ontouchstart"in window,[]),Q=H.useMemo(()=>u===e?"hover":d.workState===de.Doing||d.workState===de.Start?"editing":l?"active":"none",[u,e,d.workState,l]);function ie(w){if(!b.current)return;const U=w&&RMe(w.nativeEvent)?AMe(w.nativeEvent):void 0,G=()=>{j.current&&(cancelAnimationFrame(j.current),j.current=void 0),k.current&&(window.clearTimeout(k.current),k.current=void 0)},_=re=>{const ne=b.current,X=window==null?void 0:window.getSelection();if(!(!ne||!X||!A.current)){if(document.activeElement!==ne)try{ne.focus({preventScroll:!0})}catch{ne.focus()}if(re){const{x:ae,y:ue}=re;if(document.caretPositionFromPoint){const he=document.caretPositionFromPoint(ae,ue);if(he){const ge=ne.contains(he.offsetNode);if(ge){const Me=document.createRange();Me.setStart(he.offsetNode,he.offset),Me.collapse(!0),X.removeAllRanges(),X.addRange(Me),N.current=!0}if(ge)return}}else if(document.caretRangeFromPoint){const he=document.caretRangeFromPoint(ae,ue);if(he){const ge=ne.contains(he.startContainer);if(ge&&(X.removeAllRanges(),X.addRange(he),N.current=!0),ge)return}}if(pye(X,ne,re)){N.current=!0;return}}yye({hasPoint:!!re,previousByPoint:N.current,hasSelectionInEditor:Sp(X,ne),rangeCount:X.rangeCount,isCollapsed:X.isCollapsed})||(dye(X,ne),N.current=!1)}};G(),_(U),Y&&(j.current=requestAnimationFrame(()=>{_(),k.current=window.setTimeout(()=>{_(),k.current=void 0},32),j.current=void 0}))}const O=H.useMemo(()=>{const w=`scale(${f||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${y-Li*(f||1)}px`,top:`${T-Li*(f||1)}px`,zIndex:2,transform:w,transformOrigin:"left top",borderColor:Q==="editing"||Q==="hover"?S:"transparent"}},[f,g,y,T,S,Q]),V=H.useMemo(()=>{let w="";const I="<div></div>";if(d.text){const U=Nn(d.text);for(let G=0;G<U.length;G++){const _=U[G];if(_==="")w=w+I;else{const re=_.replace(/[<>&]/g,ne=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[ne]);w=w+`<div>${re}</div>`}}}else w=I;return w},[d.fontBgColor,d.text]),Z=H.useMemo(()=>{var w,I;if(Q==="hover"){if(f&&r&&ve.isNumber(y)&&ve.isNumber(T)&&d.boxSize&&ve.isNumber((w=d.boxSize)==null?void 0:w[0])&&ve.isNumber((I=d.boxSize)==null?void 0:I[1])){const U={x:y,y:T},G={left:y,top:T,width:d.boxSize[0]*f,height:d.boxSize[1]*f};return H.createElement(QSe,{position:U,style:G,textOpt:d,workIds:[e],noLayer:!0,noCopy:!0,noDelete:!0})}return null}return null},[d,r,e,y,T,f,Q]);H.useEffect(()=>{A.current=u===e,u!==e&&(j.current&&(cancelAnimationFrame(j.current),j.current=void 0),k.current&&(window.clearTimeout(k.current),k.current=void 0),N.current=!1)},[u,e]),H.useEffect(()=>{if(u===e&&b.current){const w=window==null?void 0:window.getSelection(),I=Sp(w,b.current);(document.activeElement!==b.current||!I)&&ie(),i(b.current)}},[u,i,e,Y]),H.useEffect(()=>{const w=b.current;if(!w)return;const I=g0(w),U=d.text||"";I!==U&&(u===e&&D.current||(w.innerHTML=V))},[u,V,d.boxSize,d.text,d.workState,e]),H.useEffect(()=>()=>{j.current&&cancelAnimationFrame(j.current),k.current&&window.clearTimeout(k.current)},[]),H.useEffect(()=>{if(b.current){const w=parseInt(getComputedStyle(b.current).paddingRight,10)+parseInt(getComputedStyle(b.current).borderWidth,10);z.current=Number(w)}},[]),H.useEffect(()=>{if(b.current){const w={fontSize:P.fontSize,lineHeight:P.lineHeight,fontStyle:P.fontStyle,fontWeight:P.fontWeight,fontFamily:P.fontFamily};if(!ve.isEqual(W.current,w)){W.current=w;const I=[b.current.offsetWidth,b.current.offsetHeight];a(e,I)}}},[P,e,a,Q,l,u]);const $=H.useCallback(w=>{const I=h==null?void 0:h.parentElement,U=b.current;if(!I||!U||!c)return!1;const{lastLine:G}=Tp(U);if(!G||G instanceof Text)return!1;const _=G==null?void 0:G.getBoundingClientRect(),re=I==null?void 0:I.getBoundingClientRect();if(!_||!re)return!1;if(_.right+w>re.right){const{textContent:ne,textNodes:X}=mye(G);if(!X.length)return!1;const ae=ne.length,ue=vs(X,0);if(!ue)return!1;let he=0,ge=0,Me=ae;for(;ge<Me;){const we=Math.floor((ge+Me)/2),be=vs(X,we);if(!be)break;const Ie=document.createRange();Ie.setStart(ue.node,ue.offset),Ie.setEnd(be.node,be.offset);const Ce=Ie.getBoundingClientRect(),ke=re.right-Ce.right;if(ke<w){if(we>0){const Ee=vs(X,we-1);if(!Ee)break;const Ae=document.createRange();Ae.setStart(ue.node,ue.offset),Ae.setEnd(Ee.node,Ee.offset);const Oe=Ae.getBoundingClientRect();if(re.right-Oe.right>=w){he=we-1;break}}Me=we}else{const Ee=we+1;if(Ee<ae){const Ae=vs(X,Ee);if(!Ae)break;const Oe=document.createRange();Oe.setStart(ue.node,ue.offset),Oe.setEnd(Ae.node,Ae.offset);const ze=Oe.getBoundingClientRect();if(re.right-ze.right<=w&&ke>w){he=we;break}}ge=Ee}}if(!he){const we=vs(X,ge);if(!we)return!1;const be=document.createRange();be.setStart(ue.node,ue.offset),be.setEnd(we.node,we.offset);const Ie=be.getBoundingClientRect();re.right-Ie.right>w?he=ge:ge>0&&(he=ge-1)}if(he>0){const we=ne.slice(0,he),be=ne.slice(he);G.textContent=we;const Ie=document.createElement("div");return be&&(Ie.textContent=be),b.current.appendChild(Ie),$(w),!0}}return!1},[h==null?void 0:h.parentElement,d.fontBgColor,c]);function ee(w){if(w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),w.key==="Backspace"){const I=window.getSelection(),U=I==null?void 0:I.getRangeAt(0);if(U!=null&&U.collapsed)return w.cancelable&&w.preventDefault(),document.execCommand("delete",!1),!1}return!1}function se(w,I){const U=window==null?void 0:window.getSelection();if(U!=null&&U.rangeCount&&w&&U&&U.anchorNode){const G=U.anchorOffset,_=U.anchorNode.textContent||"",re=_.slice(0,G)||"",ne=_.slice(G)||"",X=re.concat(w)||"";ce(X,ne,I)}}function ce(w,I,U){const G=window==null?void 0:window.getSelection();if(!(G!=null&&G.rangeCount)||!G.anchorNode)return;const _=w.split(/\n/);let re=G.anchorNode.parentNode;re===U&&(re=G.anchorNode);const ne=[...U.childNodes],X=[];let ae,ue=G.anchorOffset;for(;ne.length;){const he=ne.pop();if(he){if(he===re){let ge=_[0];_.length===1&&(ue=_[0].length,ge=_[0].concat(I)),re.nodeName==="#text"?(re.textContent=ge,ae=re):re.nodeName==="DIV"&&(re.innerText=ge,ae=re.childNodes[0]);break}X.push(he),U.removeChild(he)}}if(_.length>1)for(let he=1;he<_.length;he++){let ge=_[he];const Me=document.createElement("div");he===_.length-1&&(ue=ge.length,ge=ge.concat(I)),Me.innerText=ge,U.appendChild(Me),he===_.length-1&&(ae=Me.childNodes[0])}if(X.length){X.reverse();for(const he of X)U.appendChild(he)}if(ae&&ae.nodeName==="#text"){G.deleteFromDocument();const he=document.createRange(),ge=Math.min(ue,(ae==null?void 0:ae.length)||0);he.setStart(ae,ge),he.collapse(!0),G.removeAllRanges(),G.addRange(he)}}function me(w){if(w.cancelable&&w.preventDefault(),w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),b.current){const I=(w.clipboardData||window.clipboardData).getData("text"),U=window==null?void 0:window.getSelection();if(!(U!=null&&U.rangeCount))return;if(I&&U&&U.anchorNode){const G=Kl(I,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]});se(G,b.current),$((f||1)*z.current),n(b.current)}o()}return!1}function pe(w){Tp(w)}const B=H.useCallback(()=>{const w=b.current;o(()=>{if(w){pe(w);let I=!1;if(!D.current&&(I=$((f||1)*z.current),I)){const U=window.getSelection();if(!(U!=null&&U.rangeCount))return!1;const G=document.createRange(),_=b.current.lastChild;G.selectNodeContents(_),G.collapse(!1),U.removeAllRanges(),U.addRange(G)}n(w)}})},[n,$,o,f]);function F(){D.current=!0,o()}function J(){D.current=!1,B()}function oe(){B(),o()}const K=H.useCallback(()=>{if(Q==="active"&&b.current&&b.current.parentElement){const w=b.current.parentElement;w.style.borderColor=S}},[Q,S]),te=H.useCallback(()=>{if(Q==="active"&&b.current&&b.current.parentElement){const w=b.current.parentElement;w.style.borderColor="transparent"}},[Q]);return H.createElement(H.Fragment,null,Z,H.createElement("div",{className:`editor-box ${Q}`,style:O,onPointerUp:()=>{var w;if(Q==="editing"){o(()=>{var I;(I=document.activeElement)==null||I.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(Q==="active"&&h){if((w=h.control.collector)!=null&&w.hasIncludeSelector(e)){o(()=>{var I;(I=document.activeElement)==null||I.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(h&&u!==e){h.control.textEditorManager.checkEmptyTextBlur(),h.control.textEditorManager.active(e,h.worker.now);return}}},onMouseOver:K,onMouseLeave:te},H.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:b,style:P,onKeyDown:ee,onPaste:me,onTouchEnd:ie,onInput:B,onCompositionStart:F,onCompositionUpdate:oe,onCompositionEnd:J,dangerouslySetInnerHTML:{__html:V}})))},ZSe=s=>{const t=H.useRef(null),{mananger:e}=H.useContext(lt),r=H.useRef(),n=H.useRef(),i=H.useRef();H.useEffect(()=>()=>{r.current&&cancelAnimationFrame(r.current),n.current&&cancelAnimationFrame(n.current),i.current&&cancelAnimationFrame(i.current)},[]);const o=H.useCallback(c=>{var f,g;const{activeTextId:l,update:u,syncData:h}=c;if(!e)return;const d=l&&ve.cloneDeep(((f=e.control.textEditorManager)==null?void 0:f.get(l))||((g=s.editors)==null?void 0:g.get(l)));d&&d.opt&&(d.opt={...d.opt,...u},h&&(d.canSync=Object.keys(h).includes("canSync")&&h.canSync||d.canSync,d.canWorker=Object.keys(h).includes("canWorker")&&h.canWorker||d.canWorker),e.control.textEditorManager.updateForViewEdited(l,d))},[e,s.editors]),a=H.useMemo(()=>{var g;const c=y=>{if(!e)return;const T=y.id,x=e.control.textEditorManager.get(T),C=de.Doing,L=[y.offsetWidth,y.offsetHeight];(!x||x&&(!ve.isEqual(x.opt.boxSize,L)||!ve.isEqual(x.opt.workState,C)))&&o({activeTextId:T,update:{boxSize:L,workState:C},syncData:{canSync:!0,canWorker:!0}})},l=y=>{var m,M;if(!e)return;const T=f0(y),x=y.id,C=e.control.textEditorManager.get(x),L=g0(y),S=de.Doing,p=[y.offsetWidth,y.offsetHeight];if(!C||C&&(C.opt.text!==L||!ve.isEqual(C.opt.boxSize,p)||!ve.isEqual(C.opt.workState,S))){const v=x&&ve.cloneDeep(((m=e.control.textEditorManager)==null?void 0:m.get(x))||((M=s.editors)==null?void 0:M.get(x)));v&&v.opt&&(v.opt={...v.opt,text:L,boxSize:p,workState:S},v.canSync=!0,v.canWorker=!0,e.control.textEditorManager.updateForViewEdited(x,v)),e.control.textEditorManager.publicMsgEmitter.emit("textChange",x,y,T,v)}},u=(y,T)=>{if(!e)return;const x=y,C=e.control.textEditorManager.get(x);if(C&&!(!T[0]||!T[1])&&!ve.isEqual(C.opt.boxSize,T)){const L=ve.cloneDeep(C);L.opt={...L.opt,boxSize:T},L.canSync=!1,L.canWorker=!1,e.control.textEditorManager.updateForViewEdited(x,L)}},h=()=>{t.current&&t.current.scrollTo({left:0,top:0,behavior:"instant"})},d=()=>{n.current&&(cancelAnimationFrame(n.current),n.current=void 0),i.current&&(cancelAnimationFrame(i.current),i.current=void 0),n.current=requestAnimationFrame(()=>{h(),n.current=void 0,i.current=requestAnimationFrame(()=>{h(),i.current=void 0})})},f=y=>{r.current&&cancelAnimationFrame(r.current),r.current=requestAnimationFrame(()=>{t!=null&&t.current&&(h(),y&&y(),d(),r.current=void 0)})};if((g=s.editors)!=null&&g.size){const y=[];return s.editors.forEach((T,x)=>{y.push(H.createElement(qSe,{key:x,workId:x,data:T,showFloatBtns:s.showFloatBtns||!1,handleFocus:c,handleKeyUp:l,updateSize:u,runAnimation:f,rightBoundBreak:s.rightBoundBreak||!1}))}),y}return null},[s.editors,s.showFloatBtns,s.rightBoundBreak,e,o]);return H.createElement("div",{className:`${s.className}`,ref:t},a)},lr=(s,t,e)=>({...s,...e==null?void 0:e[t]}),KSe=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(lt),e={borderColor:s==null?void 0:s.selectorColor,...t.highlightBox},r={backgroundColor:s==null?void 0:s.selectorColor,...t.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:lr(r,"LT",t.highlightBoxPoints)}),H.createElement("div",{className:"point LC ew-resize",style:lr(r,"LC",t.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:lr(r,"LB",t.highlightBoxPoints)}),H.createElement("div",{className:"point TC ns-resize",style:lr(r,"TC",t.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:lr(r,"RT",t.highlightBoxPoints)}),H.createElement("div",{className:"point RC ew-resize",style:lr(r,"RC",t.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:lr(r,"RB",t.highlightBoxPoints)}),H.createElement("div",{className:"point BC ns-resize",style:lr(r,"BC",t.highlightBoxPoints)}))},XSe=()=>{const{floatBarData:s,mananger:t,overwriteSelectorStyles:e}=H.useContext(lt),[r,n]=H.useState(),[i,o]=H.useState();H.useEffect(()=>{const l=[];if(t&&ve.isNumber(s==null?void 0:s.x)&&ve.isNumber(s==null?void 0:s.y)&&(s!=null&&s.points)){const u=t.viewId;if(t.control.viewContainerManager.getView(u))for(const d of s.points){const f=t.control.viewContainerManager.transformToOriginPoint(d,u);l.push(f)}l[0]&&n({x:l[0][0]-((s==null?void 0:s.x)||0),y:l[0][1]-((s==null?void 0:s.y)||0)}),l[1]&&o({x:l[1][0]-((s==null?void 0:s.x)||0),y:l[1][1]-((s==null?void 0:s.y)||0)})}},[t,s==null?void 0:s.points,s==null?void 0:s.x,s==null?void 0:s.y]);const a=H.useMemo(()=>r?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:r.x,top:r.y}}):null,[s==null?void 0:s.selectorColor,r]),c=H.useMemo(()=>i?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:i.x,top:i.y}}):null,[i,s==null?void 0:s.selectorColor]);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBox}},a,c)},JSe=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(lt),e={borderColor:s==null?void 0:s.selectorColor,...t.highlightBox},r={backgroundColor:s==null?void 0:s.selectorColor,...t.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:lr(r,"LT",t.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:lr(r,"LB",t.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:lr(r,"RT",t.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:lr(r,"RB",t.highlightBoxPoints)}))},_Se=()=>{const{floatBarData:s,overwriteSelectorStyles:t}=H.useContext(lt);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...t.highlightBox}},H.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg",style:t.highlightBoxLock}))};function bt(s){return!!(s&&s.control.canAcceptLocalMutation(s.viewId))}const eTe=s=>{const{className:t}=s,{floatBarData:e,angle:r,setAngle:n,setOperationType:i,mananger:o,viewId:a}=H.useContext(lt),[c,l]=H.useState(de.Pending),[u,h]=H.useState(),[d,f]=H.useState(!1),[g,y]=H.useState(new Pe),[T,x]=H.useState(new Pe),[C,L]=H.useState(!1),S=H.useRef(0),p=H.useRef(!1),m=H.useRef(null),M=(z,j)=>{n(z),i(j===de.Done?Te.None:Te.RotateNode),l(j),j===de.Done?(f(!1),o==null||o.focusElement()):f(!0),Ve.emitMethod(We.MainEngine,Te.RotateNode,{workIds:[Ne],angle:j===de.Start?0:z,workState:j,viewId:o==null?void 0:o.viewId})},v=(z,j)=>{if(!(j&&j!==a)){if(!z){p.current=!0,S.current&&clearTimeout(S.current),S.current=0,L(!0),f(!1),i(Te.None),l(de.Pending);return}L(!1)}},R=(z,j)=>{S.current&&(clearTimeout(S.current),S.current=0),l(de.Done),f(!1);const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(j.x,j.y)))||0;M(k,de.Done)};H.useEffect(()=>{const z=()=>{p.current&&(S.current&&clearTimeout(S.current),S.current=0,l(de.Pending),f(!1),i(Te.None))};return Ve.activeListener(v),document.addEventListener("pointercancel",z),()=>{Ve.unmountActiveListener(v),document.removeEventListener("pointercancel",z)}},[]),H.useEffect(()=>{if(window.__selectorE2E__)return window.__selectorRotateE2E__={start:(z=g.x,j=g.y)=>{if(!bt(o))return;p.current=!1;const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(z,j)))||0;M(k,de.Start)},doing:(z,j)=>{if(p.current)return;if(!bt(o)){p.current=!0,l(de.Pending),i(Te.None);return}const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(z,j)))||0;h({x:z,y:j}),M(k,de.Doing)},done:(z,j)=>{if(p.current||!bt(o))return;const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(z,j)))||0;h({x:z,y:j}),M(k,de.Done)}},()=>{window.__selectorRotateE2E__&&delete window.__selectorRotateE2E__}},[T,o,g]),H.useEffect(()=>{if(e&&(c===de.Pending||c===de.Done)){const z={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},j={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};x(new Pe(j.x,j.y)),y(new Pe(z.x,z.y)),h({x:z.x,y:z.y})}},[e,c]);const b=(z,j)=>{if(!bt(o))return!1;p.current=!1,S.current&&(clearTimeout(S.current),S.current=0),l(de.Start),f(!0);const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(j.x,j.y)))||0;M(k,de.Start)},P=(z,j)=>{if(p.current){S.current&&clearTimeout(S.current),S.current=0,f(!1),i(Te.None);return}if(!bt(o)){p.current=!0,l(de.Pending),f(!1),i(Te.None);return}R(z,j)},D=(z,j)=>{if(!p.current){if(!bt(o))return p.current=!0,S.current&&clearTimeout(S.current),S.current=0,l(de.Pending),f(!1),i(Te.None),!1;S.current||(h({x:j.x,y:j.y}),f(!0),S.current=setTimeout(()=>{if(S.current=0,p.current||!bt(o))return;const k=Math.round(Pe.GetAngleByPoints(g,T,new Pe(j.x,j.y)))||0;M(k,de.Doing)},60))}};return H.createElement(Gi,{disabled:C,position:u,onStart:b,onDrag:D,onStop:P},H.createElement("div",{className:`${t}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!d&&H.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},H.createElement("img",{alt:"icon",src:kt("rotation-button")})),H.createElement("div",{ref:m,className:`appliance-plugin-rotate-mouse-pointer ${d?"active":""}`},H.createElement("img",{alt:"icon",src:kt("rotation")}),H.createElement("div",{className:"angle-icon"},r,"°"))))};function tTe(s){const t=s==null?void 0:s.viewId;if(!t)return;const e=s.control.viewContainerManager.getView(t),r=e==null?void 0:e.focusScenePath,n=s.control.viewContainerManager.getUndoTickerId(t);!n||!r||(s.control.internalMsgEmitter.emit("cancelUndoTicker",n,t,r),s.control.worker.abled())}function rTe(s,t){const e=s.control.worker.now;return s.control.textEditorManager.active(t,e),e}const nTe="data-text-work-id";function iTe(s){var t,e;if(s instanceof HTMLElement)return((e=(t=s.closest(`[${nTe}]`))==null?void 0:t.dataset)==null?void 0:e.textWorkId)||void 0}const sTe=H.memo(s=>{const{editors:t,canSelectorSwitch:e}=s,{floatBarData:r,setOperationType:n,mananger:i,isNoPointerEvents:o,viewId:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(!1),d=H.useRef(0),f=H.useRef(),g=H.useRef(de.Pending),y=H.useRef(!1),T=H.useMemo(()=>!!((r==null?void 0:r.scaleType)===Ye.none&&(r!=null&&r.canLock)),[r]),x=H.useMemo(()=>r&&r.w&&r.h?{position:"absolute",left:0,top:0,width:r.w,height:r.h,zIndex:2,pointerEvents:T||o?"none":"auto",touchAction:"none"}:{display:"none",pointerEvents:"none"},[r,T,o]),C=(M,v)=>{if(!(v&&v!==a)){if(!M||r!=null&&r.isLocked){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,h(!0),g.current=de.Pending,n(Te.None);return}h(!1)}},L=(M,v)=>{d.current&&(clearTimeout(d.current),d.current=0);const R={x:v.x,y:v.y};n(Te.None),g.current=de.Done,l(R),Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Ne],position:R,workState:de.Done,viewId:i==null?void 0:i.viewId})};H.useEffect(()=>{const M=()=>{y.current&&(d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",M),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",M)}},[]),H.useEffect(()=>{if(r&&(r!=null&&r.isLocked)){h(!0);return}h(!1)},[r]),H.useEffect(()=>{(g.current===de.Pending||g.current===de.Done)&&ve.isNumber(r==null?void 0:r.x)&&ve.isNumber(r==null?void 0:r.y)&&l({x:r==null?void 0:r.x,y:r==null?void 0:r.y})},[r==null?void 0:r.x,r==null?void 0:r.y]);const S=M=>{const v=M&&"target"in M?M.target:null,R=e?iTe(v):void 0;if(!bt(i)||!ve.isNumber(r==null?void 0:r.x)||!ve.isNumber(r==null?void 0:r.y))return!1;y.current=!1,d.current&&(clearTimeout(d.current),d.current=0),f.current=R,n(Te.TranslateNode),g.current=de.Start,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Ne],position:{x:r.x,y:r.y},workState:de.Start,viewId:i==null?void 0:i.viewId})},p=(M,v)=>{var D,z;if(y.current){d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,n(Te.None);return}if(!bt(i)){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None);return}const R=g.current,b=f.current;if(!!b&&R===de.Start&&i&&e){tTe(i),rTe(i,b),f.current=void 0,g.current=de.Pending,n(Te.None);const j=(D=i.control.viewContainerManager.getView(i.viewId))==null?void 0:D.focusScenePath;j&&i.control.worker.blurSelector(i.viewId,j);return}if(L(M,v),f.current&&(f.current=void 0),R===de.Start&&(t!=null&&t.size)&&b){const j=(z=i==null?void 0:i.control.viewContainerManager.getView(i.viewId))==null?void 0:z.focusScenePath;j&&(i==null||i.control.worker.blurSelector(i.viewId,j))}i==null||i.focusElement()},m=(M,v)=>{if(y.current)return;if(!bt(i))return y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None),!1;if(d.current)return;const R={x:v.x,y:v.y};l(R),d.current=setTimeout(()=>{d.current=0,!(y.current||!bt(i))&&(R.x!==(c==null?void 0:c.x)||R.y!==(c==null?void 0:c.y))&&(f.current&&(f.current=void 0),g.current=de.Doing,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Ne],position:R,workState:de.Doing,viewId:i==null?void 0:i.viewId}))},60)};return H.createElement(Gi,{disabled:u,position:c,onStart:S,onDrag:m,onStop:p},H.createElement("div",{style:x},H.createElement(oTe,{editors:t,selectIds:(r==null?void 0:r.selectIds)||[]})))},(s,t)=>!!ve.isEqual(s,t)),oTe=H.memo(s=>{const{editors:t,selectIds:e}=s;return t?H.createElement(HSe,{editors:t,selectIds:e||[]}):null},(s,t)=>!(!ve.isEqual(s.editors,t.editors)||!ve.isEqual(s.selectIds,t.selectIds))),aTe=s=>{const{className:t}=s,[e,r]=H.useState({x:0,y:0,h:0,w:0}),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(),{floatBarData:u,mananger:h,isNoPointerEvents:d,setOperationType:f,viewId:g}=H.useContext(lt),[y,T]=H.useState(),[x,C]=H.useState(!1),L=H.useRef(0),S=H.useRef(!1);H.useEffect(()=>{const z=()=>{S.current&&(L.current&&clearTimeout(L.current),L.current=0,f(Te.None))};if(u&&h){const j={x:u.x,y:u.y,w:u.w,h:u.h};r(j)}return Ve.activeListener(m),document.addEventListener("pointercancel",z),()=>{Ve.unmountActiveListener(m),document.removeEventListener("pointercancel",z)}},[]);const p=()=>{if(L.current&&(clearTimeout(L.current),L.current=0),y){const{scale:z,translate:j}=y;f(Te.None),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Ne],scale:z,dir:c,translate:j,originPoint:n,scenePoint:o,workState:de.Done,viewId:h==null?void 0:h.viewId})}h==null||h.focusElement()},m=(z,j)=>{if(!(j&&j!==g)){if(!z){S.current=!0,L.current&&clearTimeout(L.current),L.current=0,T(void 0),C(!0);return}C(!1)}},M=z=>[[z.x,z.y],[z.x+z.w,z.y],[z.x+z.w,z.y+z.h],[z.x,z.y+z.h]],v=(z,j)=>{switch(j){case"top":case"topLeft":case"left":return z[2];case"topRight":return z[3];case"right":case"bottomRight":case"bottom":return z[0];case"bottomLeft":return z[1]}},R=(z,j,k,A)=>{let N=!1,W=!1;const Y={x:e.x,y:e.y,w:e.w,h:e.h},Q=[1,1],ie=[0,0];switch(z){case"top":{const $=j.height+e.h;$<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs($)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"topLeft":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"topRight":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"bottom":{const $=j.height+e.h;$<0?(W=!0,Y.y=e.y+$,Y.h=Math.abs($)):Y.h=e.h+j.height;break}case"bottomLeft":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+j.height;break}case"left":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);break}case"bottomRight":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+j.height;break}case"right":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;break}}Q[0]=Y.w/e.w,Q[1]=Y.h/e.h;const V=M(Y).map($=>k.control.viewContainerManager.transformToScenePoint($,k.viewId)),Z=v(V,z);return W&&(ie[1]=Z[1]-A[1]),N&&(ie[0]=Z[0]-A[0]),{scale:Q,translate:ie}},b=(z,j)=>{if(!bt(h)||!(u!=null&&u.w)||!(u!=null&&u.h))return!1;S.current=!1,T(void 0),L.current&&(clearTimeout(L.current),L.current=0);const k={x:u.x,y:u.y,w:u.w,h:u.h},A=M(k),N=A.map(Q=>h.control.viewContainerManager.transformToScenePoint(Q,h.viewId)),W=v(A,j),Y=v(N,j);r(k),i(W),a(Y),l(j),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Ne],originPoint:W,scenePoint:Y,workState:de.Start,viewId:h.viewId})},P=(z,j,k,A)=>{if(!S.current&&!(!h||!n||!o)){if(!bt(h))return S.current=!0,L.current&&clearTimeout(L.current),L.current=0,f(Te.None),!1;L.current||(L.current=setTimeout(()=>{if(L.current=0,S.current||!bt(h))return;const{scale:N,translate:W}=R(j,A,h,o);(!ve.isEqual(N,y==null?void 0:y.scale)||!ve.isEqual(W,y==null?void 0:y.translate))&&(T({scale:N,translate:W}),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Ne],scale:N,dir:j,translate:W,originPoint:n,scenePoint:o,workState:de.Doing,viewId:h.viewId}))},60))}},D=()=>{if(S.current){L.current&&clearTimeout(L.current),L.current=0,f(Te.None);return}if(!bt(h)){S.current=!0,L.current&&clearTimeout(L.current),L.current=0,f(Te.None);return}p()};return H.createElement(pM.Resizable,{className:`${t}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",left:u==null?void 0:u.x,top:u==null?void 0:u.y,pointerEvents:d?"none":"auto"},enable:x?!1:{top:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,right:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,left:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===Ye.proportional,onResizeStart:b,onResize:P,onResizeStop:D})},Jp=s=>{const{id:t,pos:e,pointMap:r,type:n}=s,{setOperationType:i,mananger:o,floatBarData:a,viewId:c}=H.useContext(lt),[l,u]=H.useState({x:0,y:0}),[h,d]=H.useState(de.Pending),[f,g]=H.useState(!1),y=H.useRef(0),T=H.useRef(!1),x=H.useMemo(()=>a?{left:0,top:0}:{},[a]),C=(M,v)=>{if(!(v&&v!==c)){if(!M||a!=null&&a.isLocked){T.current=!0,y.current&&clearTimeout(y.current),y.current=0,g(!0),d(de.Pending),i(Te.None);return}g(!1)}};H.useEffect(()=>{const M=()=>{T.current&&(y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",M),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",M)}},[]),H.useEffect(()=>{ve.isNumber(e.x)&&ve.isNumber(e.y)&&(h===de.Pending||h===de.Done)&&u({x:e.x,y:e.y})},[e,h]),H.useEffect(()=>{if(a&&(a!=null&&a.isLocked)){g(!0);return}g(!1)},[a]);const L=(M,v)=>{y.current&&(clearTimeout(y.current),y.current=0),i(Te.None),d(de.Done);const R={x:v.x,y:v.y};if(u(R),o!=null&&o.control.viewContainerManager){const b=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=r.get(t);P&&n==="start"?P[0]=b:P&&n==="end"&&(P[1]=b),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Ne,pointMap:r,workState:de.Done,viewId:o==null?void 0:o.viewId})}o==null||o.focusElement()},S=()=>{if(!bt(o)||!ve.isNumber(e.x)||!ve.isNumber(e.y))return!1;T.current=!1,y.current&&(clearTimeout(y.current),y.current=0),i(Te.SetPoint),d(de.Start),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Ne,pointMap:r,workState:de.Start,viewId:o==null?void 0:o.viewId})},p=(M,v)=>{if(T.current)return;if(!bt(o))return T.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None),!1;if(y.current)return;const R={x:v.x,y:v.y};u(R),y.current=setTimeout(()=>{if(y.current=0,!(T.current||!bt(o))&&o!=null&&o.control.viewContainerManager){const b=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=r.get(t);P&&n==="start"?P[0]=b:P&&n==="end"&&(P[1]=b),d(de.Doing),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Ne,pointMap:r,workState:de.Doing,viewId:o==null?void 0:o.viewId})}},60)},m=(M,v)=>{if(T.current){y.current&&clearTimeout(y.current),y.current=0,i(Te.None);return}if(!bt(o)){T.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None);return}L(M,v)};return H.createElement(Gi,{disabled:f,position:l,onStart:S,onDrag:p,onStop:m},H.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:x}))},cTe=s=>{const{className:t}=s,{floatBarData:e,mananger:r}=H.useContext(lt),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(new Map);H.useEffect(()=>{const d=[];if(r&&(e!=null&&e.points)){const f=r.viewId;if(r.control.viewContainerManager.getView(f))for(const y of e.points){const T=r.control.viewContainerManager.transformToOriginPoint(y,f);d.push(T)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&i({x:d[0][0],y:d[0][1]}),d[1]&&a({x:d[1][0],y:d[1][1]})},[r,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const u=H.useMemo(()=>n&&(e!=null&&e.selectIds)?H.createElement(Jp,{pos:n,type:"start",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]),h=H.useMemo(()=>o&&(e!=null&&e.selectIds)?H.createElement(Jp,{pos:o,type:"end",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]);return H.createElement("div",{className:`${t}`},u,h)},lTe=H.forwardRef((s,t)=>{const{floatBarData:e,operationType:r}=H.useContext(lt),n=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.all||r===Te.RotateNode?null:H.createElement(KSe,null),[e,r]),i=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.both||r===Te.RotateNode?null:H.createElement(XSe,null),[e,r]),o=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.proportional||r===Te.RotateNode?null:H.createElement(JSe,null),[e,r]),a=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.none&&(e!=null&&e.canLock)?H.createElement(_Se,null):null,[e]);return H.createElement("div",{ref:t,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,n,i,o,s.children)}),uTe=H.memo(s=>{const{isHide:t,operationType:e,floatBarData:r}=s;return t&&e===Te.None&&ve.isNumber(r==null?void 0:r.x)&&ve.isNumber(r==null?void 0:r.y)&&ve.isNumber(r==null?void 0:r.w)&&ve.isNumber(r==null?void 0:r.h)?H.createElement("div",{className:mt.FloatBarBtn,style:{left:r==null?void 0:r.x,top:r==null?void 0:r.y,width:r.w,height:r.h}},H.createElement(tM,{position:{x:r.x,y:r.y},textOpt:r==null?void 0:r.textOpt,noLayer:r==null?void 0:r.isLocked})):null},(s,t)=>!!ve.isEqual(s,t)),hTe=H.forwardRef((s,t)=>{const{floatBarData:e,operationType:r,mananger:n}=H.useContext(lt),{editors:i,isHide:o,canSelectorSwitch:a}=s,c=H.useRef(null);H.useEffect(()=>{const d=c.current;if(!d)return;const f=g=>{g.stopPropagation(),g.stopImmediatePropagation(),n==null||n.control.worker.blurCursor(n.viewId)};return d.addEventListener("pointerdown",f,!1),()=>{d.removeEventListener("pointerdown",f,!1)}},[n]);const l=H.useMemo(()=>{var d;return e!=null&&e.canRotate&&((d=e==null?void 0:e.selectIds)==null?void 0:d.length)===1&&(r===Te.None||r===Te.RotateNode)?H.createElement(eTe,{className:mt.RotateBtn}):null},[e,r]),u=H.useMemo(()=>((e==null?void 0:e.scaleType)===Ye.all||(e==null?void 0:e.scaleType)===Ye.proportional)&&(r===Te.None||r===Te.ScaleNode)&&ve.isNumber(e==null?void 0:e.x)&&ve.isNumber(e==null?void 0:e.y)?H.createElement(aTe,{className:mt.ResizeBtn}):null,[e==null?void 0:e.scaleType,r,e==null?void 0:e.x,e==null?void 0:e.y]),h=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.both&&(r===Te.None||r===Te.SetPoint)?H.createElement(cTe,{className:mt.ResizeTowBox}):null,[e==null?void 0:e.scaleType,r]);return H.createElement("div",{ref:c,className:mt.FloatBar,onPointerOver:d=>(fo(d),n==null||n.control.worker.blurCursor(n.viewId),!1)},H.createElement(lTe,{ref:t}),H.createElement(sTe,{editors:i,canSelectorSwitch:a}),l,u,h,H.createElement(uTe,{isHide:o,operationType:r,floatBarData:e}))}),dTe=H.memo(hTe,(s,t)=>!!ve.isEqual(s,t)),fTe=s=>{var l,u;const{tool:t,visual:e,imageKey:r}=s,n=fa[t],[i,o]=H.useState(e.images);H.useEffect(()=>o(e.images),[t,r,e.images]);const a=Ed(i),c=a?`${i.standardResolution} 1x, ${a} 2x`:void 0;return H.createElement("img",{className:"appliance-plugin-cursor-image","data-cursor-image-key":r,src:i.standardResolution,srcSet:c,width:(l=e.size)==null?void 0:l.width,height:(u=e.size)==null?void 0:u.height,alt:`${t}Cursor`,onError:()=>{i.standardResolution!==n.images.standardResolution&&o(n.images)}})};class gTe extends H.Component{constructor(){super(...arguments);E(this,"getCursorName",e=>{var r,n,i;return((r=e.payload)==null?void 0:r.nickName)||((n=e.payload)==null?void 0:n.cursorName)||((i=e.payload)==null?void 0:i.uid)});E(this,"detectAvatar",e=>{var r;return!!((r=e.payload)!=null&&r.avatar)});E(this,"getCursorBackgroundColor",e=>{var r;if((r=e.payload)!=null&&r.cursorBackgroundColor)return e.payload.cursorBackgroundColor;if(this.getCursorName(e))return`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`});E(this,"renderAvatar",(e,r)=>{var i;if(!this.detectAvatar(e))return null;const n=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;return H.createElement("img",{className:"appliance-plugin-cursor-avatar",style:{width:r?19:28,height:r?19:28,position:r?"initial":"absolute",borderColor:r?"white":n,marginRight:r?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})});E(this,"renderTag",e=>{var r;return(r=e.payload)!=null&&r.cursorTagName?H.createElement("span",{className:"appliance-plugin-cursor-tag",style:{backgroundColor:e.payload.cursorTagBackgroundColor||this.getCursorBackgroundColor(e)}},e.payload.cursorTagName):null})}render(){var g,y,T,x,C;const{roomMember:e,cursorTool:r,resolver:n,labelOptions:i}=this.props;if(!r)return null;const o=n.getSynced(r),a=o.images.key||"external",c=this.getCursorName(e),l=n.getSyncedEnableShowName(r),u=l&&!!c,h=l&&this.detectAvatar(e),d=l&&!!((g=e.payload)!=null&&g.cursorTagName),f=u||h||d;return H.createElement("div",{className:"appliance-plugin-cursor-box","data-appliance":r},H.createElement("div",{className:`appliance-plugin-cursor-visual${o.size?" appliance-plugin-cursor-visual-sized":""}`,style:{width:(y=o.size)==null?void 0:y.width,height:(T=o.size)==null?void 0:T.height,transform:`translate(${o.offset.x}px, calc(-100% + ${o.offset.y}px))`}},f&&H.createElement("div",{className:`appliance-plugin-cursor-label appliance-plugin-cursor-label-${i.placement}`,style:{gap:i.gap,"--cursor-label-gap":`${i.gap}px`}},H.createElement("div",{style:{opacity:f?1:0,backgroundColor:this.getCursorBackgroundColor(e),color:((x=e.payload)==null?void 0:x.cursorTextColor)||"#FFFFFF"},className:(C=e.payload)!=null&&C.theme?"appliance-plugin-cursor-inner-mellow":"appliance-plugin-cursor-inner"},h&&this.renderAvatar(e,u||d),u&&H.createElement("span",{className:"appliance-plugin-cursor-name-text",style:{maxWidth:i.maxWidth}},c),d&&this.renderTag(e))),H.createElement(fTe,{key:`${r}:${a}`,tool:r,visual:o,imageKey:a})))}}const pTe=s=>{var l;const{className:t,info:e,resolver:r,labelOptions:n}=s,{roomMember:i,cursorTool:o,...a}=e||{},c=typeof a.x=="number"&&typeof a.y=="number";return H.createElement("div",{"data-cursor-uid":(l=i==null?void 0:i.payload)==null?void 0:l.uid,className:t,style:c?{transform:`translate(${a.x}px, ${a.y}px)`}:{display:"none"}},i&&H.createElement(gTe,{roomMember:i,cursorTool:o,resolver:r,labelOptions:n}))},mTe=s=>{const{className:t,manager:e}=s,[r,n]=H.useState(),i=H.useMemo(()=>new q0(e.control.pluginOptions.extras.cursor),[e]),o=e.control.pluginOptions.extras.cursor.syncedLabel;H.useEffect(()=>(e.internalMsgEmitter.on([We.Cursor,e.viewId],a),()=>{e.internalMsgEmitter.off([We.Cursor,e.viewId],a)}),[e]);function a(c){n(c)}return H.useMemo(()=>r!=null&&r.length?H.createElement(H.Fragment,null,r.map(c=>c.roomMember?H.createElement(pTe,{key:c.roomMember.memberId,className:t,info:c,resolver:i,labelOptions:o}):null)):null,[t,r,o,i])},yTe=s=>{const{viewId:t,miniMapCanvas:e,highlightColor:r,miniMapManager:n,contianer:i}=s,[o,a]=H.useState();H.useEffect(()=>(c(),n.listener.addListener([t,"viewCameraUpate"],c),n.listener.emitAsync([t,"miniMapCreate"],!0),()=>{n.listener.removeListener([t,"viewCameraUpate"],c)}),[]);const c=()=>{const h=n.maps.get(t);h&&l(h.miniMapCamera,h.viewCamera)},l=(h,d)=>{const{width:f,height:g}=i.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height),T=d.width/d.scale,x=d.height/d.scale,C=[d.centerX,d.centerY],L=[h.centerX,h.centerY],S=[C[0]-L[0],C[1]-L[1]],p=Math.min(h.scale*y,h.scale*y),m=[S[0]*p,S[1]*p,T,x,p];a(m)},u=h=>{var d;if(n.control.renderControl.isWritable){const f=h.nativeEvent.target||h.nativeEvent.srcElement;if(f&&h.nativeEvent&&o){const{width:g,height:y}=f.getBoundingClientRect(),[T,x]=[g/2,y/2],[C,L]=[(h.nativeEvent.offsetX-T)/o[4],(h.nativeEvent.offsetY-x)/o[4]],S=n.maps.get(t);if(S!=null&&S.viewCamera){const[p,m]=[S.miniMapCamera.centerX+C,S.miniMapCamera.centerY+L];(d=n.control.room)==null||d.moveCamera({centerX:p,centerY:m,animationMode:"immediately"})}}}};return H.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:u},H.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),o&&H.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:o[2]*o[4],height:o[3]*o[4],boxSizing:"content-box",border:`2px solid ${r}`,transform:`translate(calc(-50% + ${o[0]}px), calc(-50% + ${o[1]}px))`,pointerEvents:"none"}}))},vTe=s=>{const{miniMapManager:t,active:e,className:r}=s,n=H.useMemo(()=>{const i=t.maps;if(e){const o=i.get(e);if(o){const{miniMapCamera:a,viewCamera:c,...l}=o;if(l.contianer&&a&&c){const u=t.highlightColor;return $a.createPortal(H.createElement(yTe,{viewId:e,...l,highlightColor:u,miniMapManager:t}),l.contianer)}}}return null},[e,t]);return H.createElement("div",{className:r},n)},MTe=s=>{const{hasOffscreenCanvas:t,isUseSimple:e,generation:r,refs:n}=s;return t?H.createElement("div",{key:`worker-${r}`,className:mt.CanvasBox},H.createElement("canvas",{id:"bgCanvas",ref:n.canvasBgRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"serviceCanvas",className:mt.FloatCanvas,ref:n.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"localCanvas",className:mt.FloatCanvas,ref:n.canvasFloatRef,style:{width:"100%",height:"100%"}}),!e&&H.createElement("div",{id:"subLocalCanvas",className:mt.CanvasBoxSub,ref:n.subLocalCanvasContainerRef}),!e&&H.createElement("canvas",{id:"topCanvas",className:mt.TopFloatCanvas,ref:n.canvasTopRef,style:{width:"100%",height:"100%"}})):H.createElement("div",{key:`main-thread-${r}`,className:mt.CanvasBox,ref:n.canvasContainerRef})},wTe=2e3,lt=H.createContext({viewId:"",mananger:void 0,floatBarColors:[],overwriteSelectorStyles:{},floatBarData:void 0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],isNoPointerEvents:!1,activeTextEditor:!1,activeTextId:void 0,setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class xd extends H.Component{constructor(e){var n,i;super(e);E(this,"showTextFloatBar");E(this,"canSelectorSwitch");E(this,"rightBoundBreak");E(this,"isUnmounted",!1);E(this,"renderSurfaceResetWaiters",new Set);E(this,"setAngle",e=>{this.setState({angle:e})});E(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,showFloatBarBtn:!0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],editors:this.editors,activeTextId:(n=this.props.mananger.control.textEditorManager)==null?void 0:n.activeId,activeMiniMapViewId:(i=this.props.mananger.control.miniMapManager)==null?void 0:i.activeViewId,renderSurfaceGeneration:0};const r=this.props.mananger.control.pluginOptions.extras.textEditor;this.showTextFloatBar=ve.isBoolean(r.showFloatBar)?r.showFloatBar:He.textEditor.showFloatBar,this.canSelectorSwitch=ve.isBoolean(r==null?void 0:r.canSelectorSwitch)?r.canSelectorSwitch:He.textEditor.canSelectorSwitch,this.rightBoundBreak=ve.isBoolean(r==null?void 0:r.rightBoundBreak)?r.rightBoundBreak:He.textEditor.rightBoundBreak}get editors(){return dt(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.isUnmounted=!1,this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){this.isUnmounted=!0;for(const e of this.renderSurfaceResetWaiters)clearTimeout(e.timer),e.resolve();this.renderSurfaceResetWaiters.clear(),this.props.mananger.vDom===this&&(this.props.mananger.vDom=void 0)}setDpr(e){this.state.dpr!==e&&this.setState({dpr:e})}resetRenderSurface(e=wTe){return this.isUnmounted?Promise.resolve():new Promise((r,n)=>{let i=!1;const o=c=>{i||(i=!0,clearTimeout(a.timer),this.renderSurfaceResetWaiters.delete(a),c?n(c):r())},a={timer:setTimeout(()=>o(new Error(`render surface reset timeout: ${this.props.viewId}; timeoutMs=${e}`)),e),resolve:()=>o(),reject:c=>o(c)};this.renderSurfaceResetWaiters.add(a),this.setState(c=>({renderSurfaceGeneration:c.renderSurfaceGeneration+1}),a.resolve)})}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBarBtn(e){this.setState({showFloatBarBtn:e})}showFloatBar(e,r){const n=e&&r&&{...this.state.floatBarData,...r}||void 0;this.setState({showFloatBar:e,floatBarData:n,angle:0})}activeTextEditor(){this.setState({activeTextEditor:!0})}unActiveTextEditor(){this.setState({activeTextEditor:!1})}updateTextEditorInfo(e,r){this.renderTextEditorInfo(e,r)}renderTextEditorInfo(e,r){this.setState({activeTextId:e,editors:this.editors},r)}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var r,n,i,o,a,c;const e=!!((n=(r=this.props.mananger.control)==null?void 0:r.room)!=null&&n.floatBarOptions);return H.createElement("div",{className:mt.Container},H.createElement(MTe,{hasOffscreenCanvas:this.props.mananger.control.hasOffscreenCanvas,isUseSimple:this.props.mananger.control.isUseSimple,generation:this.state.renderSurfaceGeneration,refs:this.props.refs}),!this.props.mananger.control.hasOffscreenCanvas&&this.props.refs.snapshotContainerRef&&H.createElement("div",{className:mt.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,this.props.mananger.control.isUseBackgroundThread&&!!this.props.refs.backgroundContainerRef&&H.createElement("div",{className:mt.BackgroundBox},H.createElement("div",{className:mt.BackgroundSvgBox,ref:this.props.refs.backgroundContainerRef}),!!this.props.refs.backgroundSnapshotContainerRef&&H.createElement("div",{className:mt.BackgroundSnapshotBox},H.createElement("div",{className:mt.BackgroundSnapshotContent,ref:this.props.refs.backgroundSnapshotContainerRef})))||null,H.createElement(lt.Provider,{value:{viewId:this.props.viewId,mananger:this.props.mananger,floatBarColors:e&&((a=(o=(i=this.props.mananger.control)==null?void 0:i.room)==null?void 0:o.floatBarOptions)==null?void 0:a.colors)||[],overwriteSelectorStyles:this.props.mananger.control.pluginOptions.extras.overwriteSelectorStyles||{},isNoPointerEvents:!this.state.showFloatBarBtn,floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,activeTextEditor:this.state.activeTextEditor,activeTextId:this.state.activeTextId,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&H.createElement(dTe,{ref:this.props.refs.floatBarRef,editors:this.state.editors,isHide:e&&this.state.showFloatBarBtn,canSelectorSwitch:this.canSelectorSwitch})||null,((c=this.state.editors)==null?void 0:c.size)&&H.createElement(ZSe,{className:mt.TextEditorContainer,showFloatBtns:this.showTextFloatBar&&e&&this.state.showFloatBarBtn||!1,editors:this.state.editors,rightBoundBreak:this.rightBoundBreak})||null),H.createElement("div",{className:"appliance-plugin-custom-floatbar-container","data-view-id":this.props.viewId,ref:this.props.refs.customFloatbarContainerRef}),H.createElement(mTe,{className:mt.CursorBox,manager:this.props.mananger}),!this.props.mananger.control.isUseSimple&&H.createElement(vTe,{className:mt.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class STe extends _0{constructor(e,r){super(e,r);E(this,"width",1e3);E(this,"height",1e3);E(this,"dpr",Yi());E(this,"vDom");E(this,"eventTragetElement");E(this,"snapshotContainerRef");E(this,"backgroundSnapshotContainerRef");E(this,"canvasContainerRef",H.createRef());E(this,"subLocalCanvasContainerRef");E(this,"canvasTopRef");E(this,"canvasServiceFloatRef",H.createRef());E(this,"canvasFloatRef",H.createRef());E(this,"canvasBgRef",H.createRef());E(this,"backgroundContainerRef");E(this,"floatBarRef",H.createRef());E(this,"customFloatbarContainerRef",H.createRef());E(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const r=this.eventTragetElement.offsetWidth||this.width,n=this.eventTragetElement.offsetHeight||this.height,i=Yi();i!==this.dpr&&this.requestDprUpdate(i),r&&n&&this.canvasContainerRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.canvasContainerRef.current.style.width=`${r}px`,this.canvasContainerRef.current.style.height=`${n}px`),r&&n&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n),r&&n&&this.canvasBgRef.current&&(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.resizeCanvasBackingStore()),r&&n&&this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)&&(r!==this.width||n!==this.height)&&(this.backgroundContainerRef.current.style.width=`${r}px`,this.backgroundContainerRef.current.style.height=`${n}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const r=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const n of r)n.remove()}}}createMainViewDisplayer(e){const r=document.createElement("div");return r.className="appliance-plugin-main-view-displayer",e.appendChild(r),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),$a.render(H.createElement(xd,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),r),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class TTe extends _we{constructor(e,r,n){super(e,r,n);E(this,"dpr",Yi());E(this,"width",1e3);E(this,"height",1e3);E(this,"vDom");E(this,"eventTragetElement");E(this,"canvasContainerRef",H.createRef());E(this,"subLocalCanvasContainerRef");E(this,"canvasTopRef");E(this,"canvasServiceFloatRef",H.createRef());E(this,"canvasFloatRef",H.createRef());E(this,"canvasBgRef",H.createRef());E(this,"backgroundContainerRef");E(this,"floatBarRef",H.createRef());E(this,"customFloatbarContainerRef",H.createRef());E(this,"containerOffset",{x:0,y:0});this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const r=Yi();if(r!==this.dpr&&this.requestDprUpdate(r),this.canvasContainerRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.canvasContainerRef.current.style.width=`${n}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.resizeCanvasBackingStore())}if(this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.backgroundContainerRef.current.style.width=`${n}px`,this.backgroundContainerRef.current.style.height=`${i}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}}createAppViewDisplayer(e,r){const n=document.createElement("div");return n.className="appliance-plugin-app-view-displayer",r.appendChild(n),this.eventTragetElement=r.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),$a.render(H.createElement(xd,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Kn extends Vi{constructor(e){super(e);E(this,"focuedViewId");E(this,"focuedView");E(this,"control");E(this,"tmpFocusedViewId");E(this,"checkScaleTimer");E(this,"windowManager");E(this,"mainViewLifecycleRevision",0);E(this,"appViewLifecycleRevisionById",new Map);E(this,"appScenePathRetryTimerById",new Map);E(this,"focusedChangeListener",e=>{var i;const r=((i=this.windowManager)==null?void 0:i.focused)||e||Fe;this.getView(r)?(this.tmpFocusedViewId=void 0,this.focuedViewId!==r&&this.setFocuedViewId(r)):r!==Fe?this.tmpFocusedViewId=r:this.tmpFocusedViewId=void 0});E(this,"mainViewScenePathChangeListener",e=>{this.control.onSceneChange(e,Fe)});E(this,"boxCloseListener",e=>{this.bumpAppViewLifecycleRevision(e.appId),this.appViews.get(e.appId)&&(this.destroyAppView(e.appId),this.control.worker.destroyViewWorker(e.appId,"delete-storage"))});E(this,"appScenePathChangeListener",e=>{const{appId:r,view:n}=e;!r||!n||this.consumeAppScenePathWhenReady(r,n)});E(this,"appsChangeListener",e=>{for(const r of this.appViews.keys())e.includes(r)||(this.bumpAppViewLifecycleRevision(r),this.destroyAppView(r),this.control.worker.destroyViewWorker(r,"storage-already-deleted"))});E(this,"mainViewHotkeyListener",e=>{this.onActiveHotkeyChange(e)});E(this,"appViewListeners",new Map);E(this,"onMainViewRelease",async e=>{const r=++this.mainViewLifecycleRevision;if(await this.mainViewDestroy(e),r!==this.mainViewLifecycleRevision||(await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),r!==this.mainViewLifecycleRevision))return;this.mountMainView(e,r);const n=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(n),this.control.clearSnapshootData()});E(this,"mainViewDestroy",async e=>{var n,i;const r=this.mainView;if(r!=null&&r.displayer){if(this.control.invalidatePendingViewInit(r.id),await this.control.forceDoneLocalWorks("view-destroy",[r.id]),this.mainView!==r)return;this.control.backgroundImageLoadCoordinator.cancelByViewScene(r.id),this.control.destroySceneChange(r.id),(n=this.control.selectorApi)==null||n.disposeView(r.id),this.control.textEditorManager.clear(Fe,!0),this.removeMainViewListeners(r.viewData),this.disposeViewRenderImageBitmaps(r.id),r.displayer.destroy();const o=e.divElement;if(o){const a=o.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}if(r.container&&o!==r.container){const a=r.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}(i=this.control.worker)==null||i.destroyViewWorker(r.id,"preserve-storage"),this.mainView===r&&(this.mainView=void 0)}});E(this,"onMainViewMounted",async e=>{const r=++this.mainViewLifecycleRevision;await this.mainViewDestroy(e),r===this.mainViewLifecycleRevision&&this.mountMainView(e,r)});E(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("size-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"size-updated",reason:"main-view-missing"})});E(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("camera-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"camera-updated",reason:"main-view-missing"})});E(this,"updateMainViewCamera",e=>{if(this.mainView&&this.mainView.viewData){const r=this.mainView.viewData.camera;if(!ve.isNumber(r.scale)||r.scale===1/0){this.logMainViewCameraTrace("listener-dropped",{source:e,reason:"invalid-camera-scale",sourceCamera:r,sourceSize:this.mainView.viewData.size});return}const n=this.mainView.cameraOpt;if(n){const i=n.width,o=n.height,{width:a,height:c}=this.mainView.viewData.size;(a!==i||c!==o)&&this.mainView.displayer.updateSize();const l=r.scale===1/0?1:r.scale,u=r.centerX||0,h=r.centerY||0,d={...n,scale:l,centerX:u,centerY:h,width:a,height:c};!ve.isEqual(n,d)&&(this.mainView.cameraOpt=d),this.checkScaleTimer&&r.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&r.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var g,y;(y=(g=this.mainView)==null?void 0:g.viewData)==null||y.moveCamera({scale:l,centerX:u,centerY:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});E(this,"onAppViewMounted",async e=>{var f;const{appId:r,view:n}=e,i=this.bumpAppViewLifecycleRevision(r);this.cancelAppScenePathRetry(r);const o=n.divElement;if(!o||!n.focusScenePath)return;const a=this.appViews.get(r);if(a&&a.displayer){if(this.control.invalidatePendingViewInit(r),await this.control.forceDoneLocalWorks("view-destroy",[r]),!this.isCurrentAppViewLifecycleRevision(r,i)||this.appViews.get(r)!==a)return;let g=o.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove();if(a.container&&a.container!==o){g=a.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove()}if(this.destroyAppView(e.appId,!0),(f=this.control.worker)==null||f.destroyViewWorker(r,"preserve-storage"),await new Promise(y=>{setTimeout(()=>{y(!0)},0)}),!this.isCurrentAppViewLifecycleRevision(r,i))return}if(!this.isCurrentAppViewLifecycleRevision(r,i))return;const c=new TTe(r,this.control,tt.InternalMsgEmitter),l=n.size.width||c.width,u=n.size.height||c.height;c.dpr;const h={cameraOpt:{...Kn.defaultCameraOpt,...n.camera,width:l,height:u}};this.createAppView({id:r,container:o,displayer:c,cameraOpt:h.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),c.createAppViewDisplayer(r,o);const d=this.getAppViewListeners(r);n.callbacks.on("onSizeUpdated",d.onSizeUpdated),n.callbacks.on("onCameraUpdated",d.onCameraUpdated),n.callbacks.on("onActiveHotkey",d.onActiveHotkey),this.tmpFocusedViewId===r?(this.setFocuedViewId(r),this.tmpFocusedViewId=void 0):this.getPreferredFocusedViewId()===r&&this.setFocuedViewId(r),setTimeout(()=>{this.isCurrentAppViewLifecycleRevision(r,i)&&this.onAppViewCameraUpdated(r)},0)});E(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const r=this.appViews.get(e);r&&r.viewData&&this.updateAppCamera(e)});E(this,"onAppViewCameraUpdated",async e=>{await new Promise(r=>{setTimeout(()=>{r(!0)},0)}),this.updateAppCamera(e)});E(this,"updateAppCamera",e=>{const r=this.appViews.get(e);if(r&&r.viewData){const n=r.viewData.camera,i=r.cameraOpt;if(i){const{width:o,height:a}=r.viewData.size,c=i.width,l=i.height;(o!==c||a!==l)&&r.displayer.updateSize();const u=n.scale===1/0?1:n.scale,h=n.centerX||0,d=n.centerY||0,f={...i,scale:u,centerX:h,centerY:d,width:o,height:a};ve.isEqual(f,i)||(r.cameraOpt=f)}}});this.control=e.control}bumpAppViewLifecycleRevision(e){const r=(this.appViewLifecycleRevisionById.get(e)||0)+1;return this.appViewLifecycleRevisionById.set(e,r),r}isCurrentAppViewLifecycleRevision(e,r){return this.appViewLifecycleRevisionById.get(e)===r}cancelAppScenePathRetry(e){const r=this.appScenePathRetryTimerById.get(e);r!==void 0&&clearTimeout(r),this.appScenePathRetryTimerById.delete(e)}consumeAppScenePathWhenReady(e,r){const n=this.appViewLifecycleRevisionById.get(e);if(n===void 0)return;this.cancelAppScenePathRetry(e);const i=()=>{var l,u,h,d,f;if(this.appScenePathRetryTimerById.delete(e),!this.isCurrentAppViewLifecycleRevision(e,n)||((l=this.getView(e))==null?void 0:l.viewData)!==r)return;const o=r.focusScenePath,a=(f=(d=(h=(u=this.windowManager)==null?void 0:u.queryOne)==null?void 0:h.call(u,e))==null?void 0:d.getFullScenePath)==null?void 0:f.call(d);if(o&&(!a||o===a)){this.control.onSceneChange(o,e);return}const c=setTimeout(i,0);this.appScenePathRetryTimerById.set(e,c)};i()}getPreferredFocusedViewId(){var r;const e=(r=this.windowManager)==null?void 0:r.focused;return e&&this.getView(e)?e:this.tmpFocusedViewId&&this.getView(this.tmpFocusedViewId)?this.tmpFocusedViewId:Fe}getAuthoritativeScenePath(e){var n,i,o,a,c,l,u,h;if(e!==Fe){const d=(a=(o=(i=(n=this.windowManager)==null?void 0:n.queryOne)==null?void 0:i.call(n,e))==null?void 0:o.getFullScenePath)==null?void 0:a.call(o);if(d)return d}else{const d=(l=(c=this.windowManager)==null?void 0:c.mainView)==null?void 0:l.focusScenePath;if(d)return d}return((h=(u=this.getView(e))==null?void 0:u.viewData)==null?void 0:h.focusScenePath)||super.getAuthoritativeScenePath(e)}logMainViewCameraTrace(e,r){const n=this.control.logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(r)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}getAppViewListeners(e){let r=this.appViewListeners.get(e);return r||(r={onSizeUpdated:()=>{this.onAppViewSizeUpdated(e)},onCameraUpdated:()=>{this.onAppViewCameraUpdated(e)},onActiveHotkey:n=>{this.onActiveHotkeyChange(n)}},this.appViewListeners.set(e,r)),r}removeMainViewListeners(e){e&&(e.callbacks.off("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.off("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.off("onActiveHotkey",this.mainViewHotkeyListener))}removeAppViewListeners(e,r){const n=this.appViewListeners.get(e);r&&n&&(r.callbacks.off("onSizeUpdated",n.onSizeUpdated),r.callbacks.off("onCameraUpdated",n.onCameraUpdated),r.callbacks.off("onActiveHotkey",n.onActiveHotkey)),this.appViewListeners.delete(e)}destroyAppView(e,r=!1){this.cancelAppScenePathRetry(e);const n=this.appViews.get(e);this.removeAppViewListeners(e,n==null?void 0:n.viewData),super.destroyAppView(e,r)}destroy(){var e;this.mainViewLifecycleRevision++;for(const r of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(r);this.appViewLifecycleRevisionById.clear(),this.removeWindowManagerListeners(),this.checkScaleTimer&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),this.removeMainViewListeners((e=this.mainView)==null?void 0:e.viewData);for(const[r,n]of this.appViews.entries())this.removeAppViewListeners(r,n.viewData);super.destroy(),this.appViewListeners.clear()}removeWindowManagerListeners(){var r;for(const n of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(n);const e=(r=this.windowManager)==null?void 0:r.emitter;e&&(e.off("focusedChange",this.focusedChangeListener),e.off("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.off("onMainViewMounted",this.onMainViewMounted),e.off("onAppViewMounted",this.onAppViewMounted),e.off("onMainViewRebind",this.onMainViewRelease),e.off("onBoxClose",this.boxCloseListener),e.off("onAppScenePathChange",this.appScenePathChangeListener),e.off("appsChange",this.appsChangeListener),this.windowManager=void 0)}getViewInitData(e){var n,i;const r=this.getView(e);if(r){const{width:o,height:a,dpr:c}=r.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{...Kn.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{...Kn.defaultLayerOpt,width:o,height:a},cameraOpt:{...Kn.defaultCameraOpt,width:o,height:a}};if(r.viewData){const{scale:u,...h}=r.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const r=this.getView(e);if(!r)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===r&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c,l,u,h,d;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await r.displayer.resetRenderSurface(),!i()))return;this.control.isUseOffscreenTransfer&&r.displayer.canvasBgRef.current&&r.displayer.canvasServiceFloatRef.current&&r.displayer.canvasFloatRef.current&&r.displayer.setTransferControlToOffscreenCanvas({bgCanvas:r.displayer.canvasBgRef.current,serviceCanvas:r.displayer.canvasServiceFloatRef.current,localCanvas:r.displayer.canvasFloatRef.current});const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,r.displayer)),r.focusScenePath&&this.control.collector){let f=!1;if(this.control.collector.authStorage){const{renderAuth:g,pageAuth:y}=this.control.collector.authStorage;if(g){const T=g[e];if(T){const{render:x,hide:C,clear:L}=T;this.control.renderControl.syncRenderUids(e,x,C,L),f=!0}}if(!f&&y){const T=y[e];T&&(this.control.renderControl.syncPageAuth(e,T,!0),f=!0)}}(u=(l=(c=this.control.pluginOptions)==null?void 0:c.extras)==null?void 0:l.undoRedo)!=null&&u.enableGlobal&&r.displayer.commiter&&((h=this.control.collector)!=null&&h.globalUndoRedoStackStorage[r.id])&&r.displayer.commiter.pullServiceData(this.control.collector.globalUndoRedoStackStorage[r.id])}if((d=this.control.worker)!=null&&d.isActive){const f=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(f==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}listenerWindowManager(e){this.removeWindowManagerListeners(),this.windowManager=e,e.emitter.on("focusedChange",this.focusedChangeListener),e.emitter.on("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",this.boxCloseListener),e.emitter.on("onAppScenePathChange",this.appScenePathChangeListener),e.emitter.on("appsChange",this.appsChangeListener)}mountMainView(e,r){if(r!==this.mainViewLifecycleRevision)return;const n=e.divElement;if(!n||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const o=new STe(this.control,tt.InternalMsgEmitter),a=e.size.width||o.width,c=e.size.height||o.height;o.dpr;const l={cameraOpt:{...Kn.defaultCameraOpt,width:a,height:c}},{scale:u,...h}=e.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u},this.createMianView({id:Fe,container:n,displayer:o,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e});const d=this.getPreferredFocusedViewId();(!d||!this.getView(d))&&this.setFocuedViewId(Fe),o.createMainViewDisplayer(n),this.control.notifyMainViewMounted(),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.mainViewHotkeyListener)}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class Rr extends tt{constructor(e){super(e);E(this,"windowManager");E(this,"viewContainerManager");const r={control:this,internalMsgEmitter:tt.InternalMsgEmitter,publicMsgEmitter:tt.PublicMsgEmitter};this.viewContainerManager=new Kn(r)}requiresCanvas2DCompanionRenderProbe(){return!0}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,r)=>{e&&Object.keys(e).forEach(n=>{var o;const i=(o=e[n])==null?void 0:o.newValue;this.renderControl.syncRenderUids(n,i==null?void 0:i.render,i==null?void 0:i.hide,i==null?void 0:i.clear)}),r&&Object.keys(r).forEach(n=>{var o;const i=(o=r[n])==null?void 0:o.newValue;this.renderControl.syncPageAuth(n,i)})}),this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:r,diffScenePath:n,diffData:i}=e,o=new Map;if(r){let c;Object.keys(r).forEach(l=>{const u=r[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!1});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!1}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,T=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!T&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const x=o.get(y)||new Set;x.add(g),o.set(y,x),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.pluginOptions.extras.undoRedo.enableGlobal&&this.collector.addGlobalUndoRedoStackListener(e=>{Object.keys(e).forEach(r=>{var o;const n=e[r],i=(o=this.viewContainerManager.getView(r))==null?void 0:o.displayer.commiter;i&&i.pullServiceData(n==null?void 0:n.newValue)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var r,n;(r=this.collector)!=null&&r.serviceStorage&&this.viewContainerManager.getAllViews().forEach(i=>{var o,a,c,l;if(i&&i.focusScenePath&&((o=this.collector)!=null&&o.serviceStorage[i.id])&&this.collector.serviceStorage[i.id][i.focusScenePath]){const u=Object.keys(this.collector.serviceStorage[i.id][i.focusScenePath]);for(const h of u){const d=(a=this.collector)==null?void 0:a.getUidFromKey(h);if(d&&!e.online.includes(d))if((c=this.collector)!=null&&c.isSelector(h))this.renderControl.isWritable&&((l=this.collector)==null||l.updateValue(h,void 0,{viewId:i.id,scenePath:i.focusScenePath,isSync:!0})),this.worker.blurSelector(i.id,i.focusScenePath,h);else{const f=this.textEditorManager.editors.get(h);f&&f.opt&&(f.opt.workState===de.Doing||f.opt.workState===de.Start)&&(Os(f.opt.text)?this.textEditorManager.unActive(h):this.textEditorManager.delete(h))}}}}),(n=this.cursor)==null||n.updateRoomMembers(e)}))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}setWindowManager(e){var r,n,i,o,a;this.windowManager=e,(n=(r=this.windowManager)==null?void 0:r.mainView)!=null&&n.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(o=(i=this.windowManager.appManager)==null?void 0:i.viewManager)==null?void 0:o.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const Ql=new WeakMap;function _p(s){return/^https?:\/\//i.test(s.trim())}function CTe(s){var e,r;const t=[];for(const[n,i]of Object.entries(s.appearance||{})){if(!i)continue;const o=[["default",i.images],["local",(e=i.local)==null?void 0:e.images],["synced",(r=i.synced)==null?void 0:r.images]];for(const[a,c]of o){if(!c)continue;_p(c.standardResolution)&&t.push({appliance:n,scope:a,density:"standard",key:c.key||"external",url:c.standardResolution});const l=Ed(c);l&&_p(l)&&t.push({appliance:n,scope:a,density:"high",key:c.key||"external",url:l})}}return t}function rM(s){Ql.has(s)||(Ql.set(s,new Map),window.setTimeout(()=>{try{const t=id(s),e=CTe(t);if(!e.length)return;const r=Ql.get(s);if(!r)return;const n=new Set;for(const i of e){if(n.has(i.url))continue;n.add(i.url);const o=new Image;let a;const c=()=>{a!==void 0&&window.clearTimeout(a),o.onload=null,o.onerror=null,r.delete(i.url)};o.onload=c,o.onerror=c,r.set(i.url,o),a=window.setTimeout(c,t.preloadTimeout),o.src=i.url}}catch{}},0))}function nM(s,t){var r;if(!t||!Array.isArray(t.sources)||!t.sources.includes("appliance")||typeof t.viewId!="string"||typeof t.scenePath!="string"||typeof t.imageUrl!="string")return!1;const e=(r=s==null?void 0:s[t.viewId])==null?void 0:r[t.scenePath];return e?Object.values(e).some(n=>{var i;return(n==null?void 0:n.toolsType)===q.BackgroundSVG&&((i=n.opt)==null?void 0:i.src)===t.imageUrl}):!1}function iM(s,t,e){return new Proxy(s,{get(r,n,i){const o=Reflect.get(r,n,i);if(n==="destroy")return o;if(e()===t)return typeof o!="function"?o:(...a)=>{if(e()===t)return Reflect.apply(o,i,a)}},set(r,n,i,o){return e()!==t?!0:Reflect.set(r,n,i,o)}})}const Se=class Se extends De.InvisiblePlugin{constructor(){super(...arguments);E(this,"callbackDisplayer");E(this,"callbackStateName");E(this,"callbackOwnerManager");E(this,"ownedManager");E(this,"roomLifecycleDisposer");E(this,"roomLifecycleOwnerManager");E(this,"undoStepForwarderDisposer");E(this,"undoStepForwarderOwnerManager");E(this,"onPhaseChanged",e=>{var r;e===De.RoomPhase.Reconnecting&&((r=this.ownedManager)==null||r.setSnapshootData())});E(this,"updateRoomWritable",()=>{var r;const e=this.callbackDisplayer||this.displayer;(r=this.ownedManager)==null||r.onWritableChange(e.isWritable)});E(this,"roomStateChangeListener",async e=>{var n,i;e!=null&&e.roomMembers&&((n=this.ownedManager)==null||n.onRoomMembersChange(e.roomMembers));const r=this.callbackDisplayer||this.displayer;De.isRoom(r)&&!r.isWritable||e.memberState&&((i=this.ownedManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,r){var L,S,p;(m=>{var M,v;try{(v=(M=r.callbacks)==null?void 0:M.onInitLoadingChange)==null||v.call(M,m)}catch(R){Se.logger.error(`[ApplianceMultiPlugin] onInitLoadingChange error: ${(R==null?void 0:R.message)||R}`)}})({loading:!0,phase:"plugin",status:"start"});const i=e.displayer,o=new qs(De.isRoom(i)&&i.logger||Se.logger),a=typeof navigator>"u"?"unknown":navigator.userAgent;o.info(`[Appliance]: [init-enter] version=${Ac} userAgent=${a}`);const c=i.callbacks.on,l=i.callbacks.off,u=i.callbacks.once,h=e.cleanCurrentScene,d=e.mainView.setMemberState;r!=null&&r.logger&&(Se.logger=new qs(r.logger));let f=i.getInvisiblePlugin(Se.kind);f||(f=await Se.createApplianceMultiPlugin(i,Se.kind)),i&&f&&await Se.createCurrentManager(e,{cdn:r.options.cdn,extras:Gv(r.options.extras)},f,r.callbacks),(L=Se.currentManager)==null||L.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const g={displayer:i,windowManager:e,currentManager:Se.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(m){var R;Se.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const M=(e.mainView||i).getBoundingRect(m),v=await((R=Se.currentManager)==null?void 0:R.getBoundingRect(m));return!M.width||!M.height?v:fd(M,v)},screenshotToCanvasAsync:async function(m,M,v,R,b,P){var N;Se.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let D=v,z=R,j=b.scale;D>this.maxScreenshotWidth&&(j=this.maxScreenshotWidth/D*j,D=this.maxScreenshotWidth),z>this.maxScreenshotHeight&&(j=Math.min(this.maxScreenshotHeight/z*j,j),z=this.maxScreenshotHeight),b.scale=j;const k=document.createElement("canvas"),A=k.getContext("2d");k.width=D*(P||1),k.height=z*(P||1),A&&((e.mainView||i).screenshotToCanvas(A,M,D,z,b,P),m.drawImage(k,Math.floor((v-D)/2),Math.floor((R-z)/2),D*(P||1),z*(P||1),0,0,D,z),k.remove()),Se.currentManager&&await((N=Se.currentManager)==null?void 0:N.screenshotToCanvas(m,M,D,z,b,Math.floor((v-D)/2),Math.floor((R-z)/2)))},scenePreviewAsync:async function(m,M,v,R,b){Se.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(m,M,v,R,b);const P=document.createElement("img");P.className="appliance-plugin-fill-scene-snapshot-img",M.append(P),getComputedStyle(M).position||(M.style.position="relative"),Se.currentManager&&await Se.currentManager.scenePreview(m,P)},fillSceneSnapshotAsync:async function(m,M,v,R,b){Se.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),M.innerHTML="",(e.mainView||i).fillSceneSnapshot(m,M,v,R,b);const P=v||e.mainView.size.width,D=R||e.mainView.size.height;let z=await this.getBoundingRectAsync(m);z||(z={originX:0,originY:0,width:P,height:D});let j=Math.max(z==null?void 0:z.width,P),k=Math.max(z==null?void 0:z.height,D),A=1;const N=j>P&&Math.min(P/j,A)||A,W=k>D&&Math.min(D/k,A)||A;N<=W?(j=N<1&&P||j,k=Math.floor(k*N)+1,A=N):N>W&&(k=W<1&&D||k,j=Math.floor(j*W)+1,A=W);const Y={scale:A,centerX:z.originX+z.width/2,centerY:z.originY+z.height/2},Q=document.createElement("canvas"),ie=Q.getContext("2d");Q.width=j,Q.height=k,ie&&await this.screenshotToCanvasAsync(ie,m,j,k,Y,devicePixelRatio);const O=document.createElement("img");O.className="appliance-plugin-fill-scene-snapshot-img",O.src=Q.toDataURL(),O.onload=()=>{Q.remove()},O.onerror=()=>{Q.remove(),O.remove()},M.append(O),getComputedStyle(M).position||(M.style.position="relative")},_callbacksOn:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&De.isRoom(i)&&i.isWritable?Rr.InternalMsgEmitter.on(m,M):c.call(i.callbacks,m,M))},_callbacksOnce:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&De.isRoom(i)&&i.isWritable?Rr.InternalMsgEmitter.on(m,M):u.call(i.callbacks,m,M))},_callbacksOff:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&De.isRoom(i)&&i.isWritable?Rr.InternalMsgEmitter.off(m,M):l.call(i.callbacks,m,M))},canRedoSteps(){if(Se.logger.info("[ApplianceMultiPlugin] canRedoSteps"),Se.currentManager&&De.isRoom(i)&&!i.disableSerialization){const m=Se.currentManager.viewContainerManager.focuedView,M=m==null?void 0:m.focusScenePath;if(m&&M)return m.displayer.commiter.redoStack.filter(v=>v.scenePath===M).length}return 0},canUndoSteps(){if(Se.logger.info("[ApplianceMultiPlugin] canUndoSteps"),Se.currentManager&&De.isRoom(i)&&!i.disableSerialization){const m=Se.currentManager.viewContainerManager.focuedView,M=m==null?void 0:m.focusScenePath;if(m&&M)return m.displayer.commiter.undoStack.filter(b=>b.scenePath===M).length}return 0},undo:function(){return Se.logger.info("[ApplianceMultiPlugin] undo"),Se.currentManager&&De.isRoom(i)&&!i.disableSerialization&&i.isWritable?Se.currentManager.viewContainerManager.undo():0},redo:function(){return Se.logger.info("[ApplianceMultiPlugin] redo"),Se.currentManager&&De.isRoom(i)&&!i.disableSerialization&&i.isWritable?Se.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){Se.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),Se.currentManager&&De.isRoom(i)&&i.isWritable&&(Se.currentManager.logger.info("[Appliance]: cleanCurrentScene"),Se.currentManager.cleanCurrentScene().then(m=>{m&&h.call(e)}).catch(m=>{var M;(M=Se.currentManager)==null||M.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)}))},insertImage:function(m){if(Se.logger.info("[ApplianceMultiPlugin] insertImage"),Se.currentManager&&De.isRoom(i)&&i.isWritable){const M=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.insertImage(M,m)}},lockImage:function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] lockImage"),Se.currentManager&&De.isRoom(i)&&i.isWritable){const v=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.lockImage(v,m,M)}},completeImageUpload:function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] completeImageUpload"),Se.currentManager&&De.isRoom(i)&&i.isWritable){const v=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.completeImageUpload(v,m,M)}},getImagesInformation:function(m){return Se.logger.info("[ApplianceMultiPlugin] completeImageUpload"),Se.currentManager&&De.isRoom(i)&&i.isWritable?Se.currentManager.worker.getImagesInformation(m):[]},insertText:function(m,M,v){if(Se.logger.info("[ApplianceMultiPlugin] insertText"),Se.currentManager&&De.isRoom(i)&&i.isWritable){const R=Se.currentManager.viewContainerManager.focuedViewId||Fe;return Se.currentManager.textEditorManager.insertText(R,m,M,v)}},updateText:function(m,M){Se.logger.info("[ApplianceMultiPlugin] updateText"),Se.currentManager&&De.isRoom(i)&&i.isWritable&&Se.currentManager.textEditorManager.updateText(m,M)},callbacks:()=>({...i.callbacks,on:g._callbacksOn.bind(g),once:g._callbacksOnce.bind(g),off:g._callbacksOff.bind(g)}),destroy(){return Se.logger.info("[Appliance]: [ApplianceMultiPlugin] destroy"),f?f.destroyOwnedPluginInstance(g.currentManager):Promise.resolve()},setMemberState(m){if(Se.currentManager){Se.currentManager.logger.info(`[Appliance]: setMemberState ${JSON.stringify(m)}`);const M=Object.keys(m);if(De.isRoom(i)&&i.isWritable){if(M.includes("currentApplianceName"))if(Se.currentManager.requestToolChange(m),m.currentApplianceName&&m.currentApplianceName===Le.laserPen){if(Se.currentManager.isUseSimple)throw Se.currentManager.logger.error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode"),new Error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode");m.currentApplianceName=Le.pencil,m.useLaserPen=!0}else m.currentApplianceName&&m.currentApplianceName===Le.pencil&&(m.useLaserPen=!1);try{d.call(e.mainView,m)}catch(v){throw Se.currentManager.setToolChangePending(!1,"set-member-state-error"),v}return}}throw Se.logger.error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room"),new Error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room")},createMiniMap:async function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] createMiniMap"),Se.currentManager&&De.isRoom(i)&&i.isWritable)return Se.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] createMiniMap"),Se.currentManager.createMiniMap(m,M)},destroyMiniMap:async function(m){if(Se.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),Se.currentManager&&De.isRoom(i)&&i.isWritable)return Se.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] destroyeMiniMap"),Se.currentManager.destroyMiniMap(m)},filterRenderByUid(m,M,v){if(Se.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),Se.currentManager&&De.isRoom(i)&&i.isWritable)return Se.currentManager.filterRenderByUid(m,M,v)},cancelFilterRender(m,M){if(Se.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),Se.currentManager&&De.isRoom(i)&&i.isWritable)return Se.currentManager.cancelFilterRender(m,M)},addListener:(m,M)=>{Rr.PublicMsgEmitter.on(m,M)},removeListener:(m,M)=>{Rr.PublicMsgEmitter.off(m,M)},usePlugin:m=>{var M;Se.logger.info("[ApplianceMultiPlugin] usePlugin",m.kind),(M=Se.currentManager)==null||M.usePlugin(m)},getDisableDeviceInputs(){if(Se.currentManager&&De.isRoom(i))return Se.currentManager.disableDeviceInputs},setDisableDeviceInputs(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableDeviceInputs ${m}`),Se.currentManager&&De.isRoom(i)&&(Se.currentManager.disableDeviceInputs=m)},getDisableCameraTransform(){if(Se.currentManager&&De.isRoom(i))return Se.currentManager.disableCameraTransform},setDisableCameraTransform(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableCameraTransform ${m}`),Se.currentManager&&De.isRoom(i)&&(Se.currentManager.disableCameraTransform=m)},getDisableEraseImage(){if(Se.currentManager&&De.isRoom(i))return Se.currentManager.disableEraseImage},setDisableEraseImage(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableEraseImage ${m}`),Se.currentManager&&De.isRoom(i)&&(Se.currentManager.disableEraseImage=m)},setWritable:m=>g.setWritable(m),requestIdleCallback:(m,M)=>{const v=(M==null?void 0:M.timeout)||0,R=performance.now();let b;const P=new MessageChannel;let D;const z=j=>{try{m({didTimeout:j,timeRemaining:()=>{const A=performance.now()-R;return Math.max(0,v-A)}})}catch(k){Se.logger.error("[ApplianceMultiPlugin] requestIdleCallback error:",k)}finally{P.port1.close(),P.port2.close(),b!==void 0&&cancelAnimationFrame(b),D!==void 0&&clearTimeout(D)}};return P.port1.onmessage=()=>{b=requestAnimationFrame(()=>{v>0&&performance.now()-R>=v?z(!0):z(!1)})},P.port2.postMessage(null),v>0&&(D=setTimeout(()=>{z(!0)},v)),D||b||0},cancelIdleCallback:m=>{try{clearTimeout(m),cancelAnimationFrame(m)}catch(M){Se.logger.error("[ApplianceMultiPlugin] cancelIdleCallback error:",M)}},injectMethodToObject:(m,M)=>{if(typeof m[M]=="function"||typeof m[M]>"u"){(M==="requestIdleCallback"||M==="cancelIdleCallback")&&Se.currentManager&&Se.currentManager.registerPolyfillMethod(M);const v=g[M];m[M]=function(...R){if(Se.currentManager===g.currentManager)return Reflect.apply(v,this,R)};return}M==="callbacks"&&(m.callbacks.on=g._callbacksOn.bind(g),m.callbacks.off=g._callbacksOff.bind(g),m.callbacks.once=g._callbacksOnce.bind(g))},blurText:()=>{Se.logger.info("[ApplianceMultiPlugin] blurText"),Se.currentManager&&De.isRoom(i)&&i.isWritable&&Se.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(m,M)=>{var v;if(Se.logger.info(`[ApplianceMultiPlugin] hasElements ${m}`),Se.currentManager&&De.isRoom(i)&&i.isWritable){let R=m;if(!R){const b=Se.currentManager.viewContainerManager.focuedView;R=b==null?void 0:b.focusScenePath}if(R){const b=(v=Se.currentManager.collector)==null?void 0:v.getScenePathData(R);if(b){const P=Object.values(b);return P.length>0?M?P.some(D=>M(D.toolsType)):!0:!1}return!1}return!1}},getElements:(m,M)=>{var v;if(Se.logger.info(`[ApplianceMultiPlugin] getElements ${m}`),Se.currentManager&&De.isRoom(i)&&i.isWritable){let R=m;if(!R){const b=Se.currentManager.viewContainerManager.focuedView;R=b==null?void 0:b.focusScenePath}if(R){const b=(v=Se.currentManager.collector)==null?void 0:v.getScenePathData(R),P=b&&Object.values(b)||[];return b&&P.length>0&&M?P.filter(D=>M(D.toolsType)):P}return[]}},hasBackgroundImage:m=>{var M,v;return nM((v=(M=Se.currentManager)==null?void 0:M.collector)==null?void 0:v.storage,m)},stopDraw:m=>{if(Se.logger.info(`[ApplianceMultiPlugin] stopDraw ${m}`),Se.currentManager&&De.isRoom(i))return Se.currentManager.stopDraw(m)},loadFontFaces:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] loadFontFaces"),((m=Se.currentManager)==null?void 0:m.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:m=>{var M;return Se.logger.info(`[ApplianceMultiPlugin] refreshViewRender ${m}`),((M=Se.currentManager)==null?void 0:M.refreshViewRender(m))||Promise.resolve({status:"error"})},refreshRender:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] refreshRender"),((m=Se.currentManager)==null?void 0:m.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:m=>{var M;return Se.logger.info(`[ApplianceMultiPlugin] refreshViewTextRender ${m}`),((M=Se.currentManager)==null?void 0:M.refreshViewTextRender(m))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] refreshTextRender"),((m=Se.currentManager)==null?void 0:m.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(m,M)=>{Se.logger.info(`[ApplianceMultiPlugin] setViewLocalScenePathChange ${m} ${M}`),Se.currentManager&&await Se.currentManager.setViewLocalScenePathChange(M,m)},insertMarkmap:async(m,M)=>{if(Se.logger.info(`[ApplianceMultiPlugin] insertMarkmap: ${m}, info: ${JSON.stringify(M)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.insertBackgroundMarkMap(m,M)},updateMarkmap:async(m,M,v)=>{if(Se.logger.info(`[ApplianceMultiPlugin] updateMarkmap: ${m}, markmapId: ${M}, info: ${JSON.stringify(v)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.updateBackgroundMarkMap(m,M,v)},insertBackgroundImage:async(m,M)=>{if(Se.logger.info(`[ApplianceMultiPlugin] insertBackgroundImage: ${m}, info: ${JSON.stringify(M)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.insertBackgroundSVG(m,M)},reloadBackgroundImage:async m=>{const M=Se.currentManager;return M?M.reloadBackgroundImage(m):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:m=>{var M,v;return(v=(M=Se.currentManager)==null?void 0:M.selectorApi)==null?void 0:v.getSelectedElements(m)},isElementPropertySupported:(m,M)=>{var v,R;return((R=(v=Se.currentManager)==null?void 0:v.selectorApi)==null?void 0:R.isElementPropertySupported(m,M))||!1},blurSelector:m=>{var M;if(Se.currentManager&&De.isRoom(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.blurSelector(m):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},updateSelectedElements:(m,M)=>{var v;if(Se.currentManager&&De.isRoom(i)&&i.isWritable){const R=(v=Se.currentManager)==null?void 0:v.selectorApi;return R?R.updateSelectedElements(m,M):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-writable permission"})},updateElement:(m,M,v,R,b=!0)=>{var P;if(Se.currentManager&&De.isRoom(i)&&i.isWritable){const D=(P=Se.currentManager)==null?void 0:P.selectorApi;return D?D.updateElement(m,M,v,R,b):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:m=>{var M;if(Se.currentManager&&De.isRoom(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.copySelectedElements(m):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},deleteSelectedElements:m=>{var M;if(Se.currentManager&&De.isRoom(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.deleteSelectedElements(m):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},getFloatbarContainer:m=>{var M;return(M=Se.currentManager)==null?void 0:M.viewContainerManager.getFloatbarContainer(m)},getViewOffsetToContainer:(m,M)=>{var v;return(v=Se.currentManager)==null?void 0:v.viewContainerManager.getViewOffsetToContainer(m,M)}};g.injectMethodToObject(e,"undo"),g.injectMethodToObject(e,"redo"),g.injectMethodToObject(e,"cleanCurrentScene"),g.injectMethodToObject(e,"blurSelector"),g.injectMethodToObject(e,"updateElement"),g.injectMethodToObject(e,"insertImage"),g.injectMethodToObject(e,"completeImageUpload"),g.injectMethodToObject(e,"lockImage"),g.injectMethodToObject(e,"insertText"),g.injectMethodToObject(e,"updateText"),g.injectMethodToObject(i,"getImagesInformation"),g.injectMethodToObject(i,"callbacks"),g.injectMethodToObject(i,"screenshotToCanvasAsync"),g.injectMethodToObject(i,"getBoundingRectAsync"),g.injectMethodToObject(i,"scenePreviewAsync"),g.injectMethodToObject(i,"fillSceneSnapshotAsync"),g.injectMethodToObject(i,"blurSelector"),g.injectMethodToObject(i,"updateElement"),g.injectMethodToObject(e.mainView,"setMemberState"),De.isRoom(i)&&f&&(f.disposeRoomLifecycleInterceptor(),f.roomLifecycleDisposer=om(i,()=>g.currentManager,Se.logger),f.roomLifecycleOwnerManager=g.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return g.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return g.canRedoSteps()}}),f==null||f.bindUndoStepForwarders(e);const y={...g,callbacks:g.callbacks()};Object.defineProperty(y,"disableDeviceInputs",{set(m){g.setDisableDeviceInputs(m)},get(){return g.getDisableDeviceInputs()}}),Object.defineProperty(y,"disableCameraTransform",{set(m){g.setDisableCameraTransform(m)},get(){return g.getDisableCameraTransform()}}),Object.defineProperty(y,"disableEraseImage",{set(m){g.setDisableEraseImage(m)},get(){return g.getDisableEraseImage()}});const T=iM(y,g.currentManager,()=>Se.currentManager);f&&Se.currentManager&&(Se.currentManager.bindPlugin(f),f.init(i));const x=Se.currentManager;e._appliancePlugin=T;const C=(S=Se.currentManager)==null?void 0:S.pluginOptions.extras.cursor;if(C&&((p=Se.currentManager)==null||p.worker.afterMainViewInitAck(()=>{rM(C)})),!x)throw e._appliancePlugin===T&&delete e._appliancePlugin,new Error("ApplianceMultiPlugin initialization was cancelled");if(x.startInitFontFaceLoadAndRender(),x.isMainViewMounted()){const m=await x.worker.waitForMainViewInitAck();if(m!=="ready"||Se.currentManager!==x)throw e._appliancePlugin===T&&delete e._appliancePlugin,new Error(`ApplianceMultiPlugin initialization ${m==="timeout"?"timed out":"was cancelled"}`)}else x.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),x.waitForMainViewMounted().then(m=>{if(!(m!=="ready"||Se.currentManager!==x))return x.worker.waitForMainViewInitAck().then(M=>{x.logger.info(`[Appliance]: deferred render-init ${M}`)})}).catch(m=>{x.logger.error(`[Appliance]: deferred render-init failed: ${(m==null?void 0:m.message)||m}`)});return T}static onCreate(e){e&&Se.currentManager&&(Se.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,r){try{await e.createInvisiblePlugin(Se,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const a=await this.createApplianceMultiPlugin(e,r);return await e.setWritable(!1),a}throw(e.logger||Se.logger).error(`[Appliance]: create invisible plugin failed: ${(i==null?void 0:i.message)||i}`),i}let n=e.getInvisiblePlugin(r);return n||(n=await Se.createApplianceMultiPlugin(e,r)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(Se.drainingManager===e&&Se.drainingPromise)return Se.drainingPromise;Se.currentManager===e&&(Se.currentManager=void 0),Se.drainingManager=e;const r=e.destroy({preserveStorage:!0}).finally(()=>{Se.drainingManager===e&&(Se.drainingManager=void 0),Se.drainingPromise===r&&(Se.drainingPromise=void 0)});return Se.drainingPromise=r,r}init(e){this.unbindDisplayerCallbacks();const r=this.ownedManager,n=e.state;r==null||r.onRoomMembersChange(n.roomMembers),De.isRoom(e)&&(r==null||r.onMemberChange(n.memberState));const i=De.isPlayer(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=r,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const r=this.callbackDisplayer,n=this.callbackStateName;r&&n&&(r.callbacks.off(n,this.roomStateChangeListener),r.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),r.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var r;e!==void 0&&this.roomLifecycleOwnerManager!==e||((r=this.roomLifecycleDisposer)==null||r.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}bindUndoStepForwarders(e){this.disposeUndoStepForwarders();let r=!0;const n=new Set,i=(l,u,h,d=3)=>{if(!r||this.ownedManager!==o)return;const f=e.focused||Fe;if(d>0&&f!==u){const g=setTimeout(()=>{n.delete(g),i(l,u,h,d-1)},100);n.add(g);return}e.emitter.emit(l,h)},o=this.ownedManager,a=(l,u)=>i("canUndoStepsChange",u,l),c=(l,u)=>i("canRedoStepsChange",u,l);Rr.InternalMsgEmitter.on("onCanUndoStepsUpdate",a),Rr.InternalMsgEmitter.on("onCanRedoStepsUpdate",c),this.undoStepForwarderDisposer=()=>{r=!1,n.forEach(l=>clearTimeout(l)),n.clear(),Rr.InternalMsgEmitter.off("onCanUndoStepsUpdate",a),Rr.InternalMsgEmitter.off("onCanRedoStepsUpdate",c)},this.undoStepForwarderOwnerManager=o}disposeUndoStepForwarders(e){var r;e!==void 0&&this.undoStepForwarderOwnerManager!==e||((r=this.undoStepForwarderDisposer)==null||r.call(this),this.undoStepForwarderDisposer=void 0,this.undoStepForwarderOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),this.disposeUndoStepForwarders(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),Se.beginManagerDestroy(e)):Promise.resolve()}destroy(){Se.logger.info("[ApplianceMultiPlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),this.disposeUndoStepForwarders(),this.destroyOwnedManager()}};E(Se,"drainingManager"),E(Se,"drainingPromise"),E(Se,"kind","appliance-multi-plugin"),E(Se,"currentManager"),E(Se,"logger",{info:console.log,warn:console.warn,error:console.error}),E(Se,"createCurrentManager",async(e,r,n,i)=>{Se.drainingPromise&&await Se.drainingPromise;const o=Se.currentManager;if(o)try{await Se.beginManagerDestroy(o),o.logger.info("[Appliance]: replace old manager success")}catch(l){throw o.logger.error(`[Appliance]: replace old manager failed: ${(l==null?void 0:l.message)||l}`),l}const a={plugin:n,displayer:e.displayer,options:r,callbacks:i},c=new Rr(a);c.setWindowManager(e),Se.currentManager=c,n.ownedManager=c});let qu=Se;var ITe=Er,bTe=function(){return ITe.Date.now()},ETe=bTe,xTe=/\s/;function RTe(s){for(var t=s.length;t--&&xTe.test(s.charAt(t)););return t}var ATe=RTe,kTe=ATe,PTe=/^\s+/;function DTe(s){return s&&s.slice(0,kTe(s)+1).replace(PTe,"")}var LTe=DTe,NTe=pi,OTe=Or,zTe="[object Symbol]";function BTe(s){return typeof s=="symbol"||OTe(s)&&NTe(s)==zTe}var jTe=BTe,FTe=LTe,em=Dn,UTe=jTe,tm=NaN,WTe=/^[-+]0x[0-9a-f]+$/i,VTe=/^0b[01]+$/i,$Te=/^0o[0-7]+$/i,YTe=parseInt;function GTe(s){if(typeof s=="number")return s;if(UTe(s))return tm;if(em(s)){var t=typeof s.valueOf=="function"?s.valueOf():s;s=em(t)?t+"":t}if(typeof s!="string")return s===0?s:+s;s=FTe(s);var e=VTe.test(s);return e||$Te.test(s)?YTe(s.slice(2),e?2:8):WTe.test(s)?tm:+s}var HTe=GTe,QTe=Dn,ql=ETe,rm=HTe,qTe="Expected a function",ZTe=Math.max,KTe=Math.min;function XTe(s,t,e){var r,n,i,o,a,c,l=0,u=!1,h=!1,d=!0;if(typeof s!="function")throw new TypeError(qTe);t=rm(t)||0,QTe(e)&&(u=!!e.leading,h="maxWait"in e,i=h?ZTe(rm(e.maxWait)||0,t):i,d="trailing"in e?!!e.trailing:d);function f(m){var M=r,v=n;return r=n=void 0,l=m,o=s.apply(v,M),o}function g(m){return l=m,a=setTimeout(x,t),u?f(m):o}function y(m){var M=m-c,v=m-l,R=t-M;return h?KTe(R,i-v):R}function T(m){var M=m-c,v=m-l;return c===void 0||M>=t||M<0||h&&v>=i}function x(){var m=ql();if(T(m))return C(m);a=setTimeout(x,y(m))}function C(m){return a=void 0,d&&r?f(m):(r=n=void 0,o)}function L(){a!==void 0&&clearTimeout(a),l=0,r=c=n=a=void 0}function S(){return a===void 0?o:C(ql())}function p(){var m=ql(),M=T(m);if(r=arguments,n=this,c=m,M){if(a===void 0)return g(c);if(h)return clearTimeout(a),a=setTimeout(x,t),f(c)}return a===void 0&&(a=setTimeout(x,t)),o}return p.cancel=L,p.flush=S,p}var JTe=XTe,_Te=JTe,e1e=Dn,t1e="Expected a function";function r1e(s,t,e){var r=!0,n=!0;if(typeof s!="function")throw new TypeError(t1e);return e1e(e)&&(r="leading"in e?!!e.leading:r,n="trailing"in e?!!e.trailing:n),_Te(s,t,{leading:r,maxWait:t,trailing:n})}var n1e=r1e;const i1e=an(n1e);class s1e extends _0{constructor(e,r){super(e,r);E(this,"width",1e3);E(this,"height",1e3);E(this,"dpr",Yi());E(this,"vDom");E(this,"eventTragetElement");E(this,"snapshotContainerRef");E(this,"backgroundContainerRef");E(this,"backgroundSnapshotContainerRef");E(this,"canvasContainerRef",H.createRef());E(this,"subLocalCanvasContainerRef");E(this,"canvasTopRef");E(this,"canvasServiceFloatRef",H.createRef());E(this,"canvasFloatRef",H.createRef());E(this,"canvasBgRef",H.createRef());E(this,"floatBarRef",H.createRef());E(this,"customFloatbarContainerRef",H.createRef());E(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,r=this.eventTragetElement.offsetHeight,n=Yi();n!==this.dpr&&this.requestDprUpdate(n),e&&r&&this.canvasContainerRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r),e&&r&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.backgroundContainerRef.current.style.width=`${e}px`,this.backgroundContainerRef.current.style.height=`${r}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable)),e&&r&&this.canvasBgRef.current&&(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.resizeCanvasBackingStore())}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",$a.render(H.createElement(xd,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class zi extends Vi{constructor(e){super(e);E(this,"focuedViewId");E(this,"control");E(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new s1e(this.control,tt.InternalMsgEmitter),{width:r,height:n,dpr:i}=e,o={cameraOpt:{...zi.defaultCameraOpt,width:r,height:n}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;o.cameraOpt={...o.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:Fe,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:o.cameraOpt,viewData:a}),this.setFocuedViewId(Fe),e.createMainViewDisplayer(this.control.divMainView),this.control.notifyMainViewMounted()}}getViewInitData(e){var n,i;const r=this.getView(e);if(r){const{width:o,height:a,dpr:c}=r.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{...zi.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{...zi.defaultLayerOpt,width:o,height:a},cameraOpt:{...zi.defaultCameraOpt,width:o,height:a}};if(r.viewData){const{scale:u,...h}=r.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const r=this.getView(e);if(!r)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===r&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await r.displayer.resetRenderSurface(),!i())||(this.control.isUseOffscreenTransfer&&r.displayer.canvasBgRef.current&&r.displayer.canvasServiceFloatRef.current&&r.displayer.canvasFloatRef.current&&r.displayer.setTransferControlToOffscreenCanvas({bgCanvas:r.displayer.canvasBgRef.current,serviceCanvas:r.displayer.canvasServiceFloatRef.current,localCanvas:r.displayer.canvasFloatRef.current}),!i()))return;const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,r.displayer)),(c=this.control.worker)!=null&&c.isActive){const l=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(l==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}}class ir extends tt{constructor(e){super(e);E(this,"viewContainerManager");E(this,"divMainView");E(this,"bindMainViewListener",e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()});E(this,"onCameraChange",i1e(e=>{var n;const r=this.viewContainerManager.mainView;r&&r.cameraOpt&&(r.cameraOpt.width!==e.width||r.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},eh,{leading:!1}));const r={control:this,internalMsgEmitter:ir.InternalMsgEmitter,publicMsgEmitter:ir.PublicMsgEmitter};this.viewContainerManager=new zi(r)}init(){ir.InternalMsgEmitter.on(We.BindMainView,this.bindMainViewListener)}destroy(e={}){return ir.InternalMsgEmitter.off(We.BindMainView,this.bindMainViewListener),this.onCameraChange.cancel(),super.destroy(e)}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:r,diffScenePath:n,diffData:i}=e,o=new Map;if(r){let c;Object.keys(r).forEach(l=>{const u=r[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!0});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!0}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,T=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!T&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const x=o.get(y)||new Set;x.add(g),o.set(y,x),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var r;(r=this.collector)!=null&&r.serviceStorage&&this.viewContainerManager.getAllViews().forEach(n=>{var i,o,a,c,l,u;if(n&&n.focusScenePath&&((i=this.collector)!=null&&i.serviceStorage[n.id])&&((o=this.collector)!=null&&o.serviceStorage[n.id][n.focusScenePath])){const h=Object.keys((a=this.collector)==null?void 0:a.serviceStorage[n.id][n.focusScenePath]);for(const d of h){const f=(c=this.collector)==null?void 0:c.getUidFromKey(d);if(f&&!e.online.includes(f))if((l=this.collector)!=null&&l.isSelector(d))this.renderControl.isWritable&&((u=this.collector)==null||u.updateValue(d,void 0,{viewId:n.id,scenePath:n.focusScenePath,isSync:!0})),this.worker.blurSelector(n.id,n.focusScenePath,d);else{const g=this.textEditorManager.editors.get(d);g&&g.opt&&(g.opt.workState===de.Doing||g.opt.workState===de.Start)&&(Os(g.opt.text)?this.textEditorManager.unActive(d):this.textEditorManager.delete(d))}}}})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}}const ye=class ye extends De.InvisiblePlugin{constructor(){super(...arguments);E(this,"callbackDisplayer");E(this,"callbackStateName");E(this,"callbackOwnerManager");E(this,"ownedManager");E(this,"roomLifecycleDisposer");E(this,"roomLifecycleOwnerManager");E(this,"onPhaseChanged",e=>{var r;e===De.RoomPhase.Reconnecting&&((r=this.ownedManager)==null||r.setSnapshootData())});E(this,"updateRoomWritable",()=>{var r;const e=this.callbackDisplayer||this.displayer;(r=this.ownedManager)==null||r.onWritableChange(e.isWritable)});E(this,"roomStateChangeListener",async e=>{const r=this.ownedManager;r instanceof ir&&(e.cameraState&&r.onCameraChange(e.cameraState),e.sceneState&&r.onSceneChange(e.sceneState.scenePath,Fe)),e!=null&&e.roomMembers&&(r==null||r.onRoomMembersChange(e.roomMembers));const n=this.callbackDisplayer||this.displayer;De.isRoom(n)&&!n.isWritable||e.memberState&&(r==null||r.onMemberChange(e.memberState))})}static async getInstance(e,r){var C,L,S;const n=new qs(De.isRoom(e)&&e.logger||ye.logger),i=typeof navigator>"u"?"unknown":navigator.userAgent;n.info(`[Appliance]: [init-enter] version=${Ac} userAgent=${i}`),(p=>{var m,M;try{(M=(m=r.callbacks)==null?void 0:m.onInitLoadingChange)==null||M.call(m,p)}catch(v){ye.logger.error(`[ApplianceSinglePlugin] onInitLoadingChange error: ${(v==null?void 0:v.message)||v}`)}})({loading:!0,phase:"plugin",status:"start"});const a=e.callbacks.on,c=e.callbacks.off,l=e.callbacks.once,u=e.cleanCurrentScene.bind(e),h=e.setMemberState.bind(e);r!=null&&r.logger&&(ye.logger=new qs(r.logger));let d=e.getInvisiblePlugin(ye.kind);d||(d=await ye.createAppliancePlugin(e,ye.kind)),e&&d&&await ye.createCurrentManager(e,{cdn:r.options.cdn,extras:Gv(r.options.extras)},d,r.callbacks),d&&ye.currentManager&&(ye.currentManager.bindPlugin(d),d.init(e)),ye.effectInstance(r==null?void 0:r.cursorAdapter,ye.currentManager),(C=ye.currentManager)==null||C.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const f={displayer:e,currentManager:ye.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(p){var v;ye.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const m=e.getBoundingRect(p),M=await((v=ye.currentManager)==null?void 0:v.getBoundingRect(p));return!m.width||!m.height?M:fd(m,M)},screenshotToCanvasAsync:async function(p,m,M,v,R,b){var A;ye.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let P=M,D=v,z=R.scale;P>this.maxScreenshotWidth&&(z=this.maxScreenshotWidth/P*z,P=this.maxScreenshotWidth),D>this.maxScreenshotHeight&&(z=Math.min(this.maxScreenshotHeight/D*z,z),D=this.maxScreenshotHeight),R.scale=z;const j=document.createElement("canvas"),k=j.getContext("2d");j.width=P*(b||1),j.height=D*(b||1),k&&(e.screenshotToCanvas(k,m,P,D,R,b),p.drawImage(j,Math.floor((M-P)/2),Math.floor((v-D)/2),P*(b||1),D*(b||1),0,0,P,D),j.remove()),ye.currentManager&&await((A=ye.currentManager)==null?void 0:A.screenshotToCanvas(p,m,P,D,R,Math.floor((M-P)/2),Math.floor((v-D)/2)))},scenePreviewAsync:async function(p,m,M,v,R){ye.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(p,m,M,v,R);const b=document.createElement("img");b.className="appliance-plugin-fill-scene-snapshot-img",m.append(b),getComputedStyle(m).position||(m.style.position="relative"),ye.currentManager&&await ye.currentManager.scenePreview(p,b)},fillSceneSnapshotAsync:async function(p,m,M,v,R){var O,V;ye.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),m.innerHTML="",e.fillSceneSnapshot(p,m,M,v,R);const b=M||((O=e.state.cameraState)==null?void 0:O.width)||0,P=v||((V=e.state.cameraState)==null?void 0:V.height)||0;let D=await this.getBoundingRectAsync(p);D||(D={originX:0,originY:0,width:b,height:P});let z=Math.max(D==null?void 0:D.width,b),j=Math.max(D==null?void 0:D.height,P),k=1;const A=z>b&&Math.min(b/z,k)||k,N=j>P&&Math.min(P/j,k)||k;A<=N?(z=A<1&&b||z,j=Math.floor(j*A)+1,k=A):A>N&&(j=N<1&&P||j,z=Math.floor(z*N)+1,k=N);const W={scale:k,centerX:D.originX+D.width/2,centerY:D.originY+D.height/2},Y=document.createElement("canvas"),Q=Y.getContext("2d");Y.width=z,Y.height=j,Q&&await this.screenshotToCanvasAsync(Q,p,z,j,W,devicePixelRatio);const ie=document.createElement("img");ie.className="appliance-plugin-fill-scene-snapshot-img",ie.src=Y.toDataURL(),ie.onload=()=>{Y.remove()},ie.onerror=()=>{Y.remove(),ie.remove()},m.append(ie),getComputedStyle(m).position||(m.style.position="relative")},_callbacksOn:function(p,m){ye.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&De.isRoom(e)&&e.isWritable?ir.InternalMsgEmitter.on(p,m):a.call(e.callbacks,p,m))},_callbacksOnce:function(p,m){ye.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&De.isRoom(e)&&e.isWritable?ir.InternalMsgEmitter.on(p,m):l.call(e.callbacks,p,m))},_callbacksOff:function(p,m){ye.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&De.isRoom(e)&&e.isWritable?ir.InternalMsgEmitter.off(p,m):c.call(e.callbacks,p,m))},canRedoSteps(){if(ye.logger.info("[ApplianceSinglePlugin] canRedoSteps"),ye.currentManager&&De.isRoom(e)&&!e.disableSerialization){const p=ye.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.redoStack.filter(M=>M.scenePath===m).length}return 0},canUndoSteps(){if(ye.logger.info("[ApplianceSinglePlugin] canUndoSteps"),ye.currentManager&&De.isRoom(e)&&!e.disableSerialization){const p=ye.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.undoStack.filter(M=>M.scenePath===m).length}return 0},undo:function(){return ye.logger.info("[ApplianceSinglePlugin] undo"),ye.currentManager&&De.isRoom(e)&&!e.disableSerialization?ye.currentManager.viewContainerManager.undo():0},redo:function(){return ye.logger.info("[ApplianceSinglePlugin] redo"),ye.currentManager&&De.isRoom(e)&&!e.disableSerialization?ye.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(p){ye.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.cleanCurrentScene().then(m=>{m&&u.call(e,p)}).catch(m=>{var M;(M=ye.currentManager)==null||M.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)})},insertImage:function(p){ye.logger.info("[ApplianceSinglePlugin] insertImage"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.worker.insertImage(Fe,p)},lockImage:function(p,m){ye.logger.info("[ApplianceSinglePlugin] lockImage"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.worker.lockImage(Fe,p,m)},completeImageUpload:function(p,m){ye.logger.info("[ApplianceSinglePlugin] completeImageUpload"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.worker.completeImageUpload(Fe,p,m)},getImagesInformation:function(p){return ye.logger.info("[ApplianceSinglePlugin] completeImageUpload"),ye.currentManager&&De.isRoom(e)&&e.isWritable?ye.currentManager.worker.getImagesInformation(p):[]},insertText:function(p,m,M){if(ye.logger.info("[ApplianceSinglePlugin] insertText"),ye.currentManager&&De.isRoom(e)&&e.isWritable)return ye.currentManager.textEditorManager.insertText(Fe,p,m,M)},updateText:function(p,m){ye.logger.info("[ApplianceMultiPlugin] updateText"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.textEditorManager.updateText(p,m)},callbacks:()=>({...e.callbacks,on:f._callbacksOn.bind(f),once:f._callbacksOnce.bind(f),off:f._callbacksOff.bind(f)}),destroy(){return ye.logger.info("[ApplianceSinglePlugin] destroy"),d?d.destroyOwnedPluginInstance(f.currentManager):Promise.resolve()},setMemberState(p){var M,v,R;ye.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(p)}`);const m=Object.keys(p);if(De.isRoom(e)&&e.isWritable){if(m.includes("currentApplianceName"))if((M=ye.currentManager)==null||M.requestToolChange(p),p.currentApplianceName&&p.currentApplianceName===Le.laserPen){if((v=ye.currentManager)!=null&&v.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");p.currentApplianceName=Le.pencil,p.useLaserPen=!0}else p.currentApplianceName&&p.currentApplianceName===Le.pencil&&(p.useLaserPen=!1);try{h(p)}catch(b){throw(R=ye.currentManager)==null||R.setToolChangePending(!1,"set-member-state-error"),b}return}throw new Error("setMemberState must be called in writable room")},createMiniMap:async function(p,m){if(ye.logger.info("[ApplianceSinglePlugin] createMiniMap"),ye.currentManager&&De.isRoom(e)&&e.isWritable)return ye.currentManager.createMiniMap(p,m)},destroyMiniMap:async function(p){if(ye.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),ye.currentManager&&De.isRoom(e)&&e.isWritable)return ye.currentManager.destroyMiniMap(p)},filterRenderByUid(p,m,M){if(ye.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),ye.currentManager&&De.isRoom(e)&&e.isWritable)return ye.currentManager.filterRenderByUid(p,m,M)},cancelFilterRender(p,m){if(ye.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),ye.currentManager&&De.isRoom(e)&&e.isWritable)return ye.currentManager.cancelFilterRender(p,m)},addListener:(p,m)=>{ir.PublicMsgEmitter.on(p,m)},removeListener:(p,m)=>{ir.PublicMsgEmitter.off(p,m)},usePlugin:p=>{var m;ye.logger.info("[ApplianceSinglePlugin] usePlugin",p.kind),(m=ye.currentManager)==null||m.usePlugin(p)},getDisableDeviceInputs(){if(ye.currentManager&&De.isRoom(e))return ye.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){ye.logger.info(`[ApplianceSinglePlugin] setDisableDeviceInputs ${p}`),ye.currentManager&&De.isRoom(e)&&(ye.currentManager.disableDeviceInputs=p)},getDisableCameraTransform(){if(ye.currentManager&&De.isRoom(e))return ye.currentManager.disableCameraTransform},setDisableCameraTransform(p){ye.logger.info(`[ApplianceSinglePlugin] setDisableCameraTransform ${p}`),ye.currentManager&&De.isRoom(e)&&(ye.currentManager.disableCameraTransform=p)},getDisableEraseImage(){if(ye.currentManager&&De.isRoom(e))return ye.currentManager.disableEraseImage},setDisableEraseImage(p){ye.logger.info(`[ApplianceSinglePlugin] setDisableEraseImage ${p}`),ye.currentManager&&De.isRoom(e)&&(ye.currentManager.disableEraseImage=p)},setWritable:p=>f.setWritable(p),requestIdleCallback:(p,m)=>{const M=(m==null?void 0:m.timeout)||0,v=performance.now();let R;const b=new MessageChannel;let P;const D=z=>{try{p({didTimeout:z,timeRemaining:()=>{const k=performance.now()-v;return Math.max(0,M-k)}})}catch(j){ye.logger.error("[ApplianceSinglePlugin] requestIdleCallback error:",j)}finally{b.port1.close(),b.port2.close(),R!==void 0&&cancelAnimationFrame(R),P!==void 0&&clearTimeout(P)}};return b.port1.onmessage=()=>{R=requestAnimationFrame(()=>{M>0&&performance.now()-v>=M?D(!0):D(!1)})},b.port2.postMessage(null),M>0&&(P=setTimeout(()=>{D(!0)},M)),P||R||0},cancelIdleCallback:p=>{try{clearTimeout(p),cancelAnimationFrame(p)}catch(m){ye.logger.error("[ApplianceSinglePlugin] cancelIdleCallback error:",m)}},injectMethodToObject:(p,m)=>{if(typeof p[m]=="function"||typeof p[m]>"u"){const M=f[m];p[m]=function(...v){if(ye.currentManager===f.currentManager)return Reflect.apply(M,this,v)};return}m==="callbacks"&&(p.callbacks.on=f._callbacksOn.bind(f),p.callbacks.off=f._callbacksOff.bind(f),p.callbacks.once=f._callbacksOnce.bind(f))},blurText:()=>{ye.logger.info("[ApplianceSinglePlugin] blurText"),ye.currentManager&&De.isRoom(e)&&e.isWritable&&ye.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(p,m)=>{var M;if(ye.logger.info(`[ApplianceSinglePlugin] hasElements ${p}`),ye.currentManager&&De.isRoom(e)&&e.isWritable){let v=p;if(!v){const R=ye.currentManager.viewContainerManager.focuedView;v=R==null?void 0:R.focusScenePath}if(v){const R=(M=ye.currentManager.collector)==null?void 0:M.getScenePathData(v);if(R){const b=Object.values(R);return b.length>0?m?b.some(P=>m(P.toolsType)):!0:!1}return!1}return!1}},getElements:(p,m)=>{var M;if(ye.logger.info(`[ApplianceSinglePlugin] getElements ${p}`),ye.currentManager&&De.isRoom(e)&&e.isWritable){let v=p;if(!v){const R=ye.currentManager.viewContainerManager.focuedView;v=R==null?void 0:R.focusScenePath}if(v){const R=(M=ye.currentManager.collector)==null?void 0:M.getScenePathData(v),b=R&&Object.values(R)||[];return R&&b.length>0&&m?b.filter(P=>m(P.toolsType)):b}return[]}},hasBackgroundImage:p=>{var m,M;return nM((M=(m=ye.currentManager)==null?void 0:m.collector)==null?void 0:M.storage,p)},stopDraw:p=>{if(ye.logger.info(`[ApplianceSinglePlugin] stopDraw ${p}`),ye.currentManager&&De.isRoom(e))return ye.currentManager.stopDraw(p)},loadFontFaces:()=>{var p;return ye.logger.info("[ApplianceSinglePlugin] loadFontFaces"),((p=ye.currentManager)==null?void 0:p.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:p=>{var m;return ye.logger.info(`[ApplianceSinglePlugin] refreshViewRender ${p}`),((m=ye.currentManager)==null?void 0:m.refreshViewRender(p))||Promise.resolve({status:"error"})},refreshRender:()=>{var p;return ye.logger.info("[ApplianceSinglePlugin] refreshRender"),((p=ye.currentManager)==null?void 0:p.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:p=>{var m;return ye.logger.info(`[ApplianceSinglePlugin] refreshViewTextRender ${p}`),((m=ye.currentManager)==null?void 0:m.refreshViewTextRender(p))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var p;return ye.logger.info("[ApplianceSinglePlugin] refreshTextRender"),((p=ye.currentManager)==null?void 0:p.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(p,m)=>{ye.logger.info(`[ApplianceSinglePlugin] setViewLocalScenePathChange ${p} ${m}`),ye.currentManager&&await ye.currentManager.setViewLocalScenePathChange(p,m)},insertMarkmap:async(p,m)=>{if(ye.logger.info(`[ApplianceSinglePlugin] insertMarkmap: ${p}, info: ${JSON.stringify(m)}`),ye.currentManager&&ye.currentManager.isUseBackgroundThread)return ye.currentManager.worker.insertBackgroundMarkMap(p,m)},updateMarkmap:async(p,m,M)=>{if(ye.logger.info(`[ApplianceSinglePlugin] updateMarkmap: ${p}, markmapId: ${m}, info: ${JSON.stringify(M)}`),ye.currentManager&&ye.currentManager.isUseBackgroundThread)return ye.currentManager.worker.updateBackgroundMarkMap(p,m,M)},insertBackgroundImage:async(p,m)=>{if(ye.logger.info(`[ApplianceSinglePlugin] insertBackgroundImage: ${p}, info: ${JSON.stringify(m)}`),ye.currentManager&&ye.currentManager.isUseBackgroundThread)return ye.currentManager.worker.insertBackgroundSVG(p,m)},reloadBackgroundImage:async p=>{const m=ye.currentManager;return m?m.reloadBackgroundImage(p):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:p=>{var m,M;return(M=(m=ye.currentManager)==null?void 0:m.selectorApi)==null?void 0:M.getSelectedElements(p)},isElementPropertySupported:(p,m)=>{var M,v;return((v=(M=ye.currentManager)==null?void 0:M.selectorApi)==null?void 0:v.isElementPropertySupported(p,m))||!1},blurSelector:p=>{var m;if(ye.currentManager&&De.isRoom(e)&&e.isWritable){const M=(m=ye.currentManager)==null?void 0:m.selectorApi;return M?M.blurSelector(p):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},updateSelectedElements:p=>{var m;if(ye.currentManager&&De.isRoom(e)&&e.isWritable){const M=(m=ye.currentManager)==null?void 0:m.selectorApi;return M?M.updateSelectedElements(Fe,p):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-writable permission"})},updateElement:(p,m,M,v,R=!0)=>{var b;if(ye.currentManager&&De.isRoom(e)&&e.isWritable){const P=(b=ye.currentManager)==null?void 0:b.selectorApi;return P?P.updateElement(p,m,M,v,R):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:p=>{var m;if(ye.currentManager&&De.isRoom(e)&&e.isWritable){const M=(m=ye.currentManager)==null?void 0:m.selectorApi;return M?M.copySelectedElements(p):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},deleteSelectedElements:p=>{var m;if(ye.currentManager&&De.isRoom(e)&&e.isWritable){const M=(m=ye.currentManager)==null?void 0:m.selectorApi;return M?M.deleteSelectedElements(p):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},getFloatbarContainer:p=>{var m;return(m=ye.currentManager)==null?void 0:m.viewContainerManager.getFloatbarContainer(p)},getViewOffsetToContainer:(p,m)=>{var M;return(M=ye.currentManager)==null?void 0:M.viewContainerManager.getViewOffsetToContainer(p,m)}};f.injectMethodToObject(e,"undo"),f.injectMethodToObject(e,"redo"),f.injectMethodToObject(e,"cleanCurrentScene"),f.injectMethodToObject(e,"blurSelector"),f.injectMethodToObject(e,"updateElement"),f.injectMethodToObject(e,"insertImage"),f.injectMethodToObject(e,"completeImageUpload"),f.injectMethodToObject(e,"lockImage"),f.injectMethodToObject(e,"getImagesInformation"),f.injectMethodToObject(e,"insertText"),f.injectMethodToObject(e,"updateText"),f.injectMethodToObject(e,"callbacks"),f.injectMethodToObject(e,"screenshotToCanvasAsync"),f.injectMethodToObject(e,"getBoundingRectAsync"),f.injectMethodToObject(e,"scenePreviewAsync"),f.injectMethodToObject(e,"fillSceneSnapshotAsync"),f.injectMethodToObject(e,"setMemberState"),De.isRoom(e)&&d&&(d.disposeRoomLifecycleInterceptor(),d.roomLifecycleDisposer=om(e,()=>f.currentManager,ye.logger),d.roomLifecycleOwnerManager=f.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return f.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return f.canRedoSteps()}});const g={...f,callbacks:f.callbacks()};Object.defineProperty(g,"disableDeviceInputs",{set(p){f.setDisableDeviceInputs(p)},get(){return f.getDisableDeviceInputs()}}),Object.defineProperty(g,"disableEraseImage",{set(p){f.setDisableEraseImage(p)},get(){return f.getDisableEraseImage()}}),Object.defineProperty(g,"disableCameraTransform",{set(p){f.setDisableCameraTransform(p)},get(){return f.getDisableCameraTransform()}});const y=iM(g,f.currentManager,()=>ye.currentManager),T=ye.currentManager;e._appliancePlugin=y;const x=(L=ye.currentManager)==null?void 0:L.pluginOptions.extras.cursor;if(x&&((S=ye.currentManager)==null||S.worker.afterMainViewInitAck(()=>{rM(x)})),!T)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error("ApplianceSinglePlugin initialization was cancelled");if(T.startInitFontFaceLoadAndRender(),T.isMainViewMounted()){const p=await T.worker.waitForMainViewInitAck();if(p!=="ready"||ye.currentManager!==T)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error(`ApplianceSinglePlugin initialization ${p==="timeout"?"timed out":"was cancelled"}`)}else T.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),T.waitForMainViewMounted().then(p=>{if(!(p!=="ready"||ye.currentManager!==T))return T.worker.waitForMainViewInitAck().then(m=>{T.logger.info(`[Appliance]: deferred render-init ${m}`)})}).catch(p=>{T.logger.error(`[Appliance]: deferred render-init failed: ${(p==null?void 0:p.message)||p}`)});return y}static onCreate(e){e&&ye.currentManager&&(ye.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,r){try{await e.createInvisiblePlugin(ye,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const o=await this.createAppliancePlugin(e,r);return await e.setWritable(!1),o}throw i}let n=e.getInvisiblePlugin(r);return n||(n=await ye.createAppliancePlugin(e,r)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(ye.drainingManager===e&&ye.drainingPromise)return ye.drainingPromise;ye.currentManager===e&&(ye.currentManager=void 0),ye.drainingManager=e;const r=e.destroy({preserveStorage:!0}).finally(()=>{ye.drainingManager===e&&(ye.drainingManager=void 0),ye.drainingPromise===r&&(ye.drainingPromise=void 0)});return ye.drainingPromise=r,r}static effectInstance(e=ye.cursorAdapter,r=ye.currentManager){ye.disposeCursorAdapterBinding(),ye.cursorAdapter=e,ye.cursorAdapterOwnerManager=e?r:void 0;const n=e==null?void 0:e.onAddedCursor;if(e&&typeof n=="function"){const i=function(o){o.onCursorMemberChanged=a=>{try{a.appliance===Le.pencil||a.appliance===Le.shape||a.appliance===Le.text||a.appliance===Le.arrow||a.appliance===Le.straight||a.appliance===Le.rectangle||a.appliance===Le.ellipse||a.appliance===Le.eraser||a.appliance===Le.selector?o!=null&&o.divElement&&(o.divElement.style.display="none"):o!=null&&o.divElement&&(o.divElement.style.display="block")}catch(c){throw c}},n.call(e,o)};e.onAddedCursor=i,ye.cursorAdapterBinding={adapter:e,original:n,wrapper:i,owner:r}}}static disposeCursorAdapterBinding(e){const r=ye.cursorAdapterBinding;e!==void 0&&(r==null?void 0:r.owner)!==e&&ye.cursorAdapterOwnerManager!==e||(r&&r.adapter.onAddedCursor===r.wrapper&&(r.adapter.onAddedCursor=r.original),ye.cursorAdapterBinding=void 0,ye.cursorAdapter=void 0,ye.cursorAdapterOwnerManager=void 0)}init(e){this.unbindDisplayerCallbacks();const r=this.ownedManager,n=e.state;r==null||r.onRoomMembersChange(n.roomMembers),De.isRoom(e)&&n!=null&&n.memberState&&(r==null||r.onMemberChange(n.memberState));const i=De.isPlayer(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=r,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const r=this.callbackDisplayer,n=this.callbackStateName;r&&n&&(r.callbacks.off(n,this.roomStateChangeListener),r.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),r.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var r;e!==void 0&&this.roomLifecycleOwnerManager!==e||((r=this.roomLifecycleDisposer)==null||r.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),ye.disposeCursorAdapterBinding(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),ye.beginManagerDestroy(e)):Promise.resolve()}destroy(){ye.logger.info("[ApplianceSinglePlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),ye.disposeCursorAdapterBinding(),this.destroyOwnedManager()}};E(ye,"drainingManager"),E(ye,"drainingPromise"),E(ye,"kind","appliance-single-plugin"),E(ye,"cursorAdapter"),E(ye,"cursorAdapterOwnerManager"),E(ye,"cursorAdapterBinding"),E(ye,"currentManager"),E(ye,"logger",{info:console.log,warn:console.warn,error:console.error}),E(ye,"createCurrentManager",async(e,r,n,i)=>{ye.drainingPromise&&await ye.drainingPromise,ye.currentManager&&await ye.beginManagerDestroy(ye.currentManager);const o={plugin:n,displayer:e,options:r,callbacks:i},a=new ir(o);a.init(),ye.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),ye.currentManager=a,n&&(n.ownedManager=a)});let Zu=ye;const Fi=class Fi extends H.Component{constructor(){super(...arguments);E(this,"mainViewRef",null)}componentDidMount(){Fi.emiter||(Fi.emiter=ir.InternalMsgEmitter),Fi.emiter.emit(We.BindMainView,this.mainViewRef)}render(){return H.createElement(H.Fragment,null,this.props.children,H.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};E(Fi,"emiter");let Ku=Fi;exports.ActiveContainerType=im;exports.ApplianceMultiPlugin=qu;exports.ApplianceNames=Le;exports.AppliancePluginCursorNames=or;exports.ApplianceSigleWrapper=Ku;exports.ApplianceSinglePlugin=Zu;exports.Camera_Ack_Slow_Timeout=Jl;exports.Camera_Transport_Fallback_Timeout=na;exports.Camera_Update_Business_Timeout=sm;exports.Cursor_Hover_Id=mM;exports.DefaultAppliancePluginExtrasOptions=He;exports.ECanvasShowType=_e;exports.EDataType=Re;exports.EForceStopReason=pa;exports.EImageType=Sn;exports.EMatrixrRelationType=wn;exports.EOperationType=wt;exports.EPostMessageType=le;exports.ERenderFilterType=Mr;exports.ESVGType=ks;exports.EScaleType=Ye;exports.EStrokeType=Be;exports.EToolsKey=q;exports.ElayerType=In;exports.EmitEventType=Te;exports.EventMessageType=As;exports.EventWorkState=de;exports.FontFaceFallbackBlacklistLevel=Zs;exports.Group=ht;exports.InternalMsgEmitterType=We;exports.Main_View_Id=Fe;exports.MaxDelayBatchScheduler=R0;exports.ObserverMap=Ou;exports.Plugin=jwe;exports.Renderer_Business_Default_Timeout=Ga;exports.Scene=vc;exports.ServiceRenderScheduler=Hye;exports.ShapeType=Zt;exports.Storage_Selector_key=Ne;exports.Storage_Splitter=Bt;exports.Storage_ViewId_ALL=Lu;exports.Task_Time_Interval=eh;exports.VNodeManager=M0;exports.ViewContainerManager=Vi;exports.WorkerCanvasContextBlacklistLevel=Ya;exports.WorkerMaskTextureFormatBlacklistLevel=Ju;exports.WorkerMaskTextureUploadBlacklistLevel=_u;exports.WorkerRenderModeBlacklistLevel=vr;exports.acceptIncomingEraserGeometryDelta=Npe;exports.cancelDoingForGeometryMismatch=qv;exports.computRect=Ue;exports.flushServiceRenderBarrier=k0;exports.formatRendererBusinessError=x0;exports.geometryDigest=$s;exports.getEraserBatchDelay=A0;exports.getIconImageSrc=w0;exports.getOutgoingEraserGeometryDelta=xpe;exports.getRectMatrixrRelation=Nc;exports.getSafetyRect=vn;exports.getShapeInstance=hd;exports.hasDoingGeometryTransform=Ppe;exports.isCameraUpdateTimeoutError=jye;exports.isEqual=nn;exports.isIntersectForPoint=B0;exports.isNumber=yt;exports.normalizeCameraTaskError=S0;exports.removeAllChildren=ur;exports.removeTexture=hr;exports.resolveCursorToolName=Pc;exports.runCameraUpdateWithTimeout=C0;exports.toRendererBusinessError=Bu;exports.transformToNormalData=Nn;exports.transformToSerializableData=At;exports.waitForCameraUpdateTask=I0;exports.waitForRendererBusiness=zu;