@archilogic/floor-plan-sdk 4.4.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fpe.mjs +2 -2
- package/dist/fpe.umd.js +2 -2
- package/package.json +1 -1
- package/dist/fpe.es.js +0 -861
package/dist/fpe.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
Archilogic Floor Plan Engine SDK v4.4.
|
|
2
|
+
Archilogic Floor Plan Engine SDK v4.4.1 webgl build nightly-240315-154515-05dcc8
|
|
3
3
|
|
|
4
4
|
Copyright (c) 2024 Archilogic AG. All rights reserved.
|
|
5
5
|
|
|
@@ -31,7 +31,7 @@ Deprecated since v`+i):(r=r.split(`
|
|
|
31
31
|
`).splice(e).join(`
|
|
32
32
|
`),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",t+`
|
|
33
33
|
Deprecated since v`+i),console.warn(r),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",t+`
|
|
34
|
-
Deprecated since v`+i),console.warn(r))),Bs[t]=!0}}var ks={},bt=Object.create(null),Xt=Object.create(null);function Us(){var i;for(i in bt)delete bt[i];for(i in Xt)delete Xt[i]}var Xs=function(){function i(t,e,r){this.canvas=M.ADAPTER.createCanvas(),this.context=this.canvas.getContext("2d"),this.resolution=r||M.RESOLUTION,this.resize(t,e)}return i.prototype.clear=function(){this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.canvas.width,this.canvas.height)},i.prototype.resize=function(t,e){this.canvas.width=Math.round(t*this.resolution),this.canvas.height=Math.round(e*this.resolution)},i.prototype.destroy=function(){this.context=null,this.canvas=null},Object.defineProperty(i.prototype,"width",{get:function(){return this.canvas.width},set:function(t){this.canvas.width=Math.round(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this.canvas.height},set:function(t){this.canvas.height=Math.round(t)},enumerable:!1,configurable:!0}),i}();function cc(i){var t=i.width,e=i.height,r=i.getContext("2d",{willReadFrequently:!0}),n=r.getImageData(0,0,t,e),s=n.data,o=s.length,a={top:null,left:null,right:null,bottom:null},h=null,l,u,f;for(l=0;l<o;l+=4)s[l+3]!==0&&(u=l/4%t,f=~~(l/4/t),a.top===null&&(a.top=f),(a.left===null||u<a.left)&&(a.left=u),(a.right===null||a.right<u)&&(a.right=u+1),(a.bottom===null||a.bottom<f)&&(a.bottom=f));return a.top!==null&&(t=a.right-a.left,e=a.bottom-a.top+1,h=r.getImageData(a.left,a.top,t,e)),{height:e,width:t,data:h}}var Fi;function pc(i,t){if(t===void 0&&(t=globalThis.location),i.indexOf("data:")===0)return"";t=t||globalThis.location,Fi||(Fi=document.createElement("a")),Fi.href=i;var e=gl.parse(Fi.href),r=!e.port&&t.port===""||e.port===t.port;return e.hostname!==t.hostname||!r||e.protocol!==t.protocol?"anonymous":""}function Gs(i,t){var e=M.RETINA_PREFIX.exec(i);return e?parseFloat(e[1]):t!==void 0?t:1}class Je extends Error{code;data;constructor(t,e,r){super(t||"There was a problem. Please check your internet connection and try again."),this.name="SpaceApiError",this.stack=new Error().stack,this.code=e,this.data=r}}let dc="https://api.archilogic.com";const vc=()=>dc;function Ys(i){let t;if(i.secretAccessToken)t={type:"secret",secretAccessToken:i.secretAccessToken};else if(i.temporaryAccessToken||i.temporaryAccessTokenFunction)t={type:"temporary",temporaryAccessToken:i.temporaryAccessToken};else if(i.publishableAccessToken)t={type:"publishable",publishableAccessToken:i.publishableAccessToken};else throw new Je("Programming error: token is not provided.",void 0,void 0);return i.sdkVersion&&(t.sdkVersion=i.sdkVersion),t}function yc(i){const t=new Headers;switch(i.type){case"secret":t.set("authorization",`AL-Secret-Token ${i.secretAccessToken}`);break;case"temporary":t.set("authorization",`${i.temporaryAccessToken?.authorization}`)}return i.sdkVersion&&t.set("x-sdk-version",i.sdkVersion),t}function mc(i){return i.status>=200&&i.status<400?i:i.json().then(t=>{const e=t?.message||t?.error||t;switch(typeof e){case"string":return Promise.reject(new Je(e,i.status,void 0));case"object":return Promise.reject(new Je(e.message,i.status,e.data));default:return Promise.reject(new Je(null,null,t))}})}async function gc(i,t,e={},r){const n=new URL(vc()+t),s=yc(r);let o=!1;switch(r.type==="publishable"&&n.searchParams.set("pubtoken",r.publishableAccessToken),i){case"GET":e&&typeof e=="object"&&Object.entries(e).forEach(([a,h])=>{typeof h<"u"&&n.searchParams.set(a,h.toString())});break;case"POST":case"PUT":case"PATCH":s.set("content-type","application/json"),o=!0;break;case"DELETE":break;default:return Promise.reject(new Je("Programming error, unsupported method: "+i,void 0,void 0))}return fetch(n.toString(),{method:i,headers:s,body:o?JSON.stringify(e):void 0}).then(mc,a=>{throw a}).then(a=>a.json()).catch(a=>Promise.reject(a))}var c={};c.version="6.4.2.2",c.use_lines=!0,c.use_xyz=!1;var Hs=function(i,t){var e;if(typeof Object.getOwnPropertyNames>"u"){for(e in t.prototype)(typeof i.prototype[e]>"u"||i.prototype[e]===Object.prototype[e])&&(i.prototype[e]=t.prototype[e]);for(e in t)typeof i[e]>"u"&&(i[e]=t[e]);i.$baseCtor=t}else{for(var r=Object.getOwnPropertyNames(t.prototype),n=0;n<r.length;n++)typeof Object.getOwnPropertyDescriptor(i.prototype,r[n])>"u"&&Object.defineProperty(i.prototype,r[n],Object.getOwnPropertyDescriptor(t.prototype,r[n]));for(e in t)typeof i[e]>"u"&&(i[e]=t[e]);i.$baseCtor=t}};c.Path=function(){return[]},c.Path.prototype.push=Array.prototype.push,c.Paths=function(){return[]},c.Paths.prototype.push=Array.prototype.push,c.PolyNode=function(){this.m_Parent=null,this.m_polygon=new c.Path,this.m_Index=0,this.m_jointype=0,this.m_endtype=0,this.m_Childs=[],this.IsOpen=!1},c.PolyNode.prototype.IsHoleNode=function(){for(var i=!0,t=this.m_Parent;t!==null;)i=!i,t=t.m_Parent;return i},c.PolyNode.prototype.ChildCount=function(){return this.m_Childs.length},c.PolyNode.prototype.Contour=function(){return this.m_polygon},c.PolyNode.prototype.AddChild=function(i){var t=this.m_Childs.length;this.m_Childs.push(i),i.m_Parent=this,i.m_Index=t},c.PolyNode.prototype.GetNext=function(){return this.m_Childs.length>0?this.m_Childs[0]:this.GetNextSiblingUp()},c.PolyNode.prototype.GetNextSiblingUp=function(){return this.m_Parent===null?null:this.m_Index===this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]},c.PolyNode.prototype.Childs=function(){return this.m_Childs},c.PolyNode.prototype.Parent=function(){return this.m_Parent},c.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()},c.PolyTree=function(){this.m_AllPolys=[],c.PolyNode.call(this)},c.PolyTree.prototype.Clear=function(){for(var i=this,t=0,e=this.m_AllPolys.length;t<e;t++)i.m_AllPolys[t]=null;this.m_AllPolys.length=0,this.m_Childs.length=0},c.PolyTree.prototype.GetFirst=function(){return this.m_Childs.length>0?this.m_Childs[0]:null},c.PolyTree.prototype.Total=function(){var i=this.m_AllPolys.length;return i>0&&this.m_Childs[0]!==this.m_AllPolys[0]&&i--,i},Hs(c.PolyTree,c.PolyNode),c.Clear=function(i){i.length=0},c.PI=3.141592653589793,c.PI2=2*3.141592653589793,c.FPoint=function(){var i=arguments,t=i.length;if(this.X=0,this.Y=0,c.use_xyz)if(this.Z=0,t===3)this.X=i[0],this.Y=i[1],this.Z=i[2];else if(t===2)this.X=i[0],this.Y=i[1],this.Z=0;else if(t===1)if(i[0]instanceof c.FPoint){var e=i[0];this.X=e.X,this.Y=e.Y,this.Z=0}else{var r=i[0];typeof r.Z>"u"&&(r.Z=0),this.X=r.X,this.Y=r.Y,this.Z=r.Z}else this.X=0,this.Y=0,this.Z=0;else if(t===2)this.X=i[0],this.Y=i[1];else if(t===1)if(i[0]instanceof c.FPoint){var e=i[0];this.X=e.X,this.Y=e.Y}else{var r=i[0];this.X=r.X,this.Y=r.Y}else this.X=0,this.Y=0},c.FPoint.op_Equality=function(i,t){return i.X===t.X&&i.Y===t.Y},c.FPoint.op_Inequality=function(i,t){return i.X!==t.X||i.Y!==t.Y},c.FPoint0=function(){this.X=0,this.Y=0,c.use_xyz&&(this.Z=0)},c.FPoint0.prototype=c.FPoint.prototype,c.FPoint1=function(i){this.X=i.X,this.Y=i.Y,c.use_xyz&&(typeof i.Z>"u"?this.Z=0:this.Z=i.Z)},c.FPoint1.prototype=c.FPoint.prototype,c.FPoint1dp=function(i){this.X=i.X,this.Y=i.Y,c.use_xyz&&(this.Z=0)},c.FPoint1dp.prototype=c.FPoint.prototype,c.FPoint2=function(i,t,e){this.X=i,this.Y=t,c.use_xyz&&(typeof e>"u"?this.Z=0:this.Z=e)},c.FPoint2.prototype=c.FPoint.prototype,c.FRect=function(){var i=arguments,t=i.length;if(t===4)this.left=i[0],this.top=i[1],this.right=i[2],this.bottom=i[3];else if(t===1){var e=i[0];this.left=e.left,this.top=e.top,this.right=e.right,this.bottom=e.bottom}else this.left=0,this.top=0,this.right=0,this.bottom=0},c.FRect0=function(){this.left=0,this.top=0,this.right=0,this.bottom=0},c.FRect0.prototype=c.FRect.prototype,c.FRect1=function(i){this.left=i.left,this.top=i.top,this.right=i.right,this.bottom=i.bottom},c.FRect1.prototype=c.FRect.prototype,c.FRect4=function(i,t,e,r){this.left=i,this.top=t,this.right=e,this.bottom=r},c.FRect4.prototype=c.FRect.prototype,c.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},c.PolyType={ptSubject:0,ptClip:1},c.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},c.JoinType={jtSquare:0,jtRound:1,jtMiter:2},c.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},c.EdgeSide={esLeft:0,esRight:1},c.Direction={dRightToLeft:0,dLeftToRight:1},c.TEdge=function(){this.Bot=new c.FPoint0,this.Curr=new c.FPoint0,this.Top=new c.FPoint0,this.Delta=new c.FPoint0,this.Dx=0,this.PolyTyp=c.PolyType.ptSubject,this.Side=c.EdgeSide.esLeft,this.WindDelta=0,this.WindCnt=0,this.WindCnt2=0,this.OutIdx=0,this.Next=null,this.Prev=null,this.NextInLML=null,this.NextInAEL=null,this.PrevInAEL=null,this.NextInSEL=null,this.PrevInSEL=null},c.IntersectNode=function(){this.Edge1=null,this.Edge2=null,this.Pt=new c.FPoint0},c.MyIntersectNodeSort=function(){},c.MyIntersectNodeSort.Compare=function(i,t){var e=t.Pt.Y-i.Pt.Y;return e>0?1:e<0?-1:0},c.LocalMinima=function(){this.Y=0,this.LeftBound=null,this.RightBound=null,this.Next=null},c.Scanbeam=function(){this.Y=0,this.Next=null},c.Maxima=function(){this.X=0,this.Next=null,this.Prev=null},c.OutRec=function(){this.Idx=0,this.IsHole=!1,this.IsOpen=!1,this.FirstLeft=null,this.Pts=null,this.BottomPt=null,this.PolyNode=null},c.OutPt=function(){this.Idx=0,this.Pt=new c.FPoint0,this.Next=null,this.Prev=null},c.Join=function(){this.OutPt1=null,this.OutPt2=null,this.OffPt=new c.FPoint0},c.ClipperBase=function(){this.m_MinimaList=null,this.m_CurrentLM=null,this.m_edges=new Array,this.m_HasOpenPaths=!1,this.PreserveCollinear=!1,this.m_Scanbeam=null,this.m_PolyOuts=null,this.m_ActiveEdges=null},c.ClipperBase.horizontal=-34e37,c.ClipperBase.Skip=-2,c.ClipperBase.Unassigned=-1,c.ClipperBase.tolerance=1e-20,c.ClipperBase.maxValue=Math.sqrt(Number.MAX_VALUE),c.ClipperBase.minValue=Math.sqrt(Number.MIN_VALUE),c.ClipperBase.near_zero=function(i){return i>-c.ClipperBase.tolerance&&i<c.ClipperBase.tolerance},c.ClipperBase.IsHorizontal=function(i){return i.Delta.Y===0},c.ClipperBase.prototype.PointIsVertex=function(i,t){var e=t;do{if(c.FPoint.op_Equality(e.Pt,i))return!0;e=e.Next}while(e!==t);return!1},c.ClipperBase.prototype.PointOnLineSegment=function(i,t,e){return i.X===t.X&&i.Y===t.Y||i.X===e.X&&i.Y===e.Y||i.X>t.X==i.X<e.X&&i.Y>t.Y==i.Y<e.Y&&(i.X-t.X)*(e.Y-t.Y)===(e.X-t.X)*(i.Y-t.Y)},c.ClipperBase.prototype.PointOnPolygon=function(i,t){for(var e=this,r=t;;){if(e.PointOnLineSegment(i,r.Pt,r.Next.Pt))return!0;if(r=r.Next,r===t)break}return!1},c.ClipperBase.prototype.SlopesEqual=c.ClipperBase.SlopesEqual=function(){var i=arguments,t=i.length,e,r,n,s,o,a;return t===2?(e=i[0],r=i[1],e.Delta.Y*r.Delta.X===e.Delta.X*r.Delta.Y):t===3?(n=i[0],s=i[1],o=i[2],(n.Y-s.Y)*(s.X-o.X)-(n.X-s.X)*(s.Y-o.Y)===0):(n=i[0],s=i[1],o=i[2],a=i[3],(n.Y-s.Y)*(o.X-a.X)-(n.X-s.X)*(o.Y-a.Y)===0)},c.ClipperBase.SlopesEqual3=function(i,t){return i.Delta.Y*t.Delta.X===i.Delta.X*t.Delta.Y},c.ClipperBase.SlopesEqual4=function(i,t,e){return(i.Y-t.Y)*(t.X-e.X)-(i.X-t.X)*(t.Y-e.Y)===0},c.ClipperBase.SlopesEqual5=function(i,t,e,r){return(i.Y-t.Y)*(e.X-r.X)-(i.X-t.X)*(e.Y-r.Y)===0},c.ClipperBase.prototype.Clear=function(){var i=this;this.DisposeLocalMinimaList();for(var t=0,e=this.m_edges.length;t<e;++t){for(var r=0,n=this.m_edges[t].length;r<n;++r)i.m_edges[t][r]=null;c.Clear(i.m_edges[t])}c.Clear(this.m_edges),this.m_HasOpenPaths=!1},c.ClipperBase.prototype.DisposeLocalMinimaList=function(){for(var i=this;this.m_MinimaList!==null;){var t=i.m_MinimaList.Next;i.m_MinimaList=null,i.m_MinimaList=t}this.m_CurrentLM=null},c.ClipperBase.prototype.RangeTest=function(i){(i.X>c.ClipperBase.maxValue||i.X<-c.ClipperBase.maxValue||i.Y>c.ClipperBase.maxValue||i.Y<-c.ClipperBase.maxValue||i.X>0&&i.X<c.ClipperBase.minValue||i.Y>0&&i.Y<c.ClipperBase.minValue||i.X<0&&i.X>-c.ClipperBase.minValue||i.Y<0&&i.Y>-c.ClipperBase.minValue)&&c.Error("Coordinate outside allowed range in RangeTest().")},c.ClipperBase.prototype.InitEdge=function(i,t,e,r){i.Next=t,i.Prev=e,i.Curr.X=r.X,i.Curr.Y=r.Y,c.use_xyz&&(i.Curr.Z=r.Z),i.OutIdx=-1},c.ClipperBase.prototype.InitEdge2=function(i,t){i.Curr.Y>=i.Next.Curr.Y?(i.Bot.X=i.Curr.X,i.Bot.Y=i.Curr.Y,c.use_xyz&&(i.Bot.Z=i.Curr.Z),i.Top.X=i.Next.Curr.X,i.Top.Y=i.Next.Curr.Y,c.use_xyz&&(i.Top.Z=i.Next.Curr.Z)):(i.Top.X=i.Curr.X,i.Top.Y=i.Curr.Y,c.use_xyz&&(i.Top.Z=i.Curr.Z),i.Bot.X=i.Next.Curr.X,i.Bot.Y=i.Next.Curr.Y,c.use_xyz&&(i.Bot.Z=i.Next.Curr.Z)),this.SetDx(i),i.PolyTyp=t},c.ClipperBase.prototype.FindNextLocMin=function(i){for(var t;;){for(;c.FPoint.op_Inequality(i.Bot,i.Prev.Bot)||c.FPoint.op_Equality(i.Curr,i.Top);)i=i.Next;if(i.Dx!==c.ClipperBase.horizontal&&i.Prev.Dx!==c.ClipperBase.horizontal)break;for(;i.Prev.Dx===c.ClipperBase.horizontal;)i=i.Prev;for(t=i;i.Dx===c.ClipperBase.horizontal;)i=i.Next;if(i.Top.Y!==i.Prev.Bot.Y){t.Prev.Bot.X<i.Bot.X&&(i=t);break}}return i},c.ClipperBase.prototype.ProcessBound=function(i,t){var e=this,r,n=i,s;if(n.OutIdx===c.ClipperBase.Skip){if(i=n,t){for(;i.Top.Y===i.Next.Bot.Y;)i=i.Next;for(;i!==n&&i.Dx===c.ClipperBase.horizontal;)i=i.Prev}else{for(;i.Top.Y===i.Prev.Bot.Y;)i=i.Prev;for(;i!==n&&i.Dx===c.ClipperBase.horizontal;)i=i.Next}if(i===n)t?n=i.Next:n=i.Prev;else{t?i=n.Next:i=n.Prev;var o=new c.LocalMinima;o.Next=null,o.Y=i.Bot.Y,o.LeftBound=null,o.RightBound=i,i.WindDelta=0,n=this.ProcessBound(i,t),this.InsertLocalMinima(o)}return n}if(i.Dx===c.ClipperBase.horizontal&&(t?r=i.Prev:r=i.Next,r.Dx===c.ClipperBase.horizontal?r.Bot.X!==i.Bot.X&&r.Top.X!==i.Bot.X&&this.ReverseHorizontal(i):r.Bot.X!==i.Bot.X&&this.ReverseHorizontal(i)),r=i,t){for(;n.Top.Y===n.Next.Bot.Y&&n.Next.OutIdx!==c.ClipperBase.Skip;)n=n.Next;if(n.Dx===c.ClipperBase.horizontal&&n.Next.OutIdx!==c.ClipperBase.Skip){for(s=n;s.Prev.Dx===c.ClipperBase.horizontal;)s=s.Prev;s.Prev.Top.X>n.Next.Top.X&&(n=s.Prev)}for(;i!==n;)i.NextInLML=i.Next,i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Prev.Top.X&&e.ReverseHorizontal(i),i=i.Next;i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Prev.Top.X&&this.ReverseHorizontal(i),n=n.Next}else{for(;n.Top.Y===n.Prev.Bot.Y&&n.Prev.OutIdx!==c.ClipperBase.Skip;)n=n.Prev;if(n.Dx===c.ClipperBase.horizontal&&n.Prev.OutIdx!==c.ClipperBase.Skip){for(s=n;s.Next.Dx===c.ClipperBase.horizontal;)s=s.Next;(s.Next.Top.X===n.Prev.Top.X||s.Next.Top.X>n.Prev.Top.X)&&(n=s.Next)}for(;i!==n;)i.NextInLML=i.Prev,i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Next.Top.X&&e.ReverseHorizontal(i),i=i.Prev;i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Next.Top.X&&this.ReverseHorizontal(i),n=n.Prev}return n},c.ClipperBase.prototype.AddPath=function(i,t,e){var r=this;c.use_lines?!e&&t===c.PolyType.ptClip&&c.Error("AddPath: Open paths must be subject."):e||c.Error("AddPath: Open paths have been disabled.");var n=i.length-1;if(e)for(;n>0&&c.FPoint.op_Equality(i[n],i[0]);)--n;for(;n>0&&c.FPoint.op_Equality(i[n],i[n-1]);)--n;if(e&&n<2||!e&&n<1)return!1;for(var s=new Array,o=0;o<=n;o++)s.push(new c.TEdge);var a=!0;s[1].Curr.X=i[1].X,s[1].Curr.Y=i[1].Y,c.use_xyz&&(s[1].Curr.Z=i[1].Z),this.RangeTest(i[0]),this.RangeTest(i[n]),this.InitEdge(s[0],s[1],s[n],i[0]),this.InitEdge(s[n],s[0],s[n-1],i[n]);for(var o=n-1;o>=1;--o)r.RangeTest(i[o]),r.InitEdge(s[o],s[o+1],s[o-1],i[o]);for(var h=s[0],l=h,u=h;;){if(l.Curr===l.Next.Curr&&(e||l.Next!==h)){if(l===l.Next)break;l===h&&(h=l.Next),l=r.RemoveEdge(l),u=l;continue}if(l.Prev===l.Next)break;if(e&&c.ClipperBase.SlopesEqual4(l.Prev.Curr,l.Curr,l.Next.Curr)&&(!r.PreserveCollinear||!r.Pt2IsBetweenPt1AndPt3(l.Prev.Curr,l.Curr,l.Next.Curr))){l===h&&(h=l.Next),l=r.RemoveEdge(l),l=l.Prev,u=l;continue}if(l=l.Next,l===u||!e&&l.Next===h)break}if(!e&&l===l.Next||e&&l.Prev===l.Next)return!1;e||(this.m_HasOpenPaths=!0,h.Prev.OutIdx=c.ClipperBase.Skip),l=h;do r.InitEdge2(l,t),l=l.Next,a&&l.Curr.Y!==h.Curr.Y&&(a=!1);while(l!==h);if(a){if(e)return!1;l.Prev.OutIdx=c.ClipperBase.Skip;var f=new c.LocalMinima;for(f.Next=null,f.Y=l.Bot.Y,f.LeftBound=null,f.RightBound=l,f.RightBound.Side=c.EdgeSide.esRight,f.RightBound.WindDelta=0;l.Bot.X!==l.Prev.Top.X&&r.ReverseHorizontal(l),l.Next.OutIdx!==c.ClipperBase.Skip;)l.NextInLML=l.Next,l=l.Next;return this.InsertLocalMinima(f),this.m_edges.push(s),!0}this.m_edges.push(s);var p,d=null;for(c.FPoint.op_Equality(l.Prev.Bot,l.Prev.Top)&&(l=l.Next);l=r.FindNextLocMin(l),l!==d;){d===null&&(d=l);var f=new c.LocalMinima;f.Next=null,f.Y=l.Bot.Y,l.Dx<l.Prev.Dx?(f.LeftBound=l.Prev,f.RightBound=l,p=!1):(f.LeftBound=l,f.RightBound=l.Prev,p=!0),f.LeftBound.Side=c.EdgeSide.esLeft,f.RightBound.Side=c.EdgeSide.esRight,e?f.LeftBound.Next===f.RightBound?f.LeftBound.WindDelta=-1:f.LeftBound.WindDelta=1:f.LeftBound.WindDelta=0,f.RightBound.WindDelta=-f.LeftBound.WindDelta,l=r.ProcessBound(f.LeftBound,p),l.OutIdx===c.ClipperBase.Skip&&(l=r.ProcessBound(l,p));var v=r.ProcessBound(f.RightBound,!p);v.OutIdx===c.ClipperBase.Skip&&(v=r.ProcessBound(v,!p)),f.LeftBound.OutIdx===c.ClipperBase.Skip?f.LeftBound=null:f.RightBound.OutIdx===c.ClipperBase.Skip&&(f.RightBound=null),r.InsertLocalMinima(f),p||(l=v)}return!0},c.ClipperBase.prototype.AddPaths=function(i,t,e){for(var r=this,n=!1,s=0,o=i.length;s<o;++s)r.AddPath(i[s],t,e)&&(n=!0);return n},c.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3=function(i,t,e){return c.FPoint.op_Equality(i,e)||c.FPoint.op_Equality(i,t)||c.FPoint.op_Equality(e,t)?!1:i.X!==e.X?t.X>i.X==t.X<e.X:t.Y>i.Y==t.Y<e.Y},c.ClipperBase.prototype.RemoveEdge=function(i){i.Prev.Next=i.Next,i.Next.Prev=i.Prev;var t=i.Next;return i.Prev=null,t},c.ClipperBase.prototype.SetDx=function(i){i.Delta.X=i.Top.X-i.Bot.X,i.Delta.Y=i.Top.Y-i.Bot.Y,i.Delta.Y===0?i.Dx=c.ClipperBase.horizontal:i.Dx=i.Delta.X/i.Delta.Y},c.ClipperBase.prototype.InsertLocalMinima=function(i){if(this.m_MinimaList===null)this.m_MinimaList=i;else if(i.Y>=this.m_MinimaList.Y)i.Next=this.m_MinimaList,this.m_MinimaList=i;else{for(var t=this.m_MinimaList;t.Next!==null&&i.Y<t.Next.Y;)t=t.Next;i.Next=t.Next,t.Next=i}},c.ClipperBase.prototype.PopLocalMinima=function(i,t){return t.v=this.m_CurrentLM,this.m_CurrentLM!==null&&this.m_CurrentLM.Y===i?(this.m_CurrentLM=this.m_CurrentLM.Next,!0):!1},c.ClipperBase.prototype.ReverseHorizontal=function(i){var t=i.Top.X;i.Top.X=i.Bot.X,i.Bot.X=t,c.use_xyz&&(t=i.Top.Z,i.Top.Z=i.Bot.Z,i.Bot.Z=t)},c.ClipperBase.prototype.Reset=function(){var i=this;if(this.m_CurrentLM=this.m_MinimaList,this.m_CurrentLM!==null){this.m_Scanbeam=null;for(var t=this.m_MinimaList;t!==null;){i.InsertScanbeam(t.Y);var e=t.LeftBound;e!==null&&(e.Curr.X=e.Bot.X,e.Curr.Y=e.Bot.Y,c.use_xyz&&(e.Curr.Z=e.Bot.Z),e.OutIdx=c.ClipperBase.Unassigned),e=t.RightBound,e!==null&&(e.Curr.X=e.Bot.X,e.Curr.Y=e.Bot.Y,c.use_xyz&&(e.Curr.Z=e.Bot.Z),e.OutIdx=c.ClipperBase.Unassigned),t=t.Next}this.m_ActiveEdges=null}},c.ClipperBase.prototype.InsertScanbeam=function(i){if(this.m_Scanbeam===null)this.m_Scanbeam=new c.Scanbeam,this.m_Scanbeam.Next=null,this.m_Scanbeam.Y=i;else if(i>this.m_Scanbeam.Y){var t=new c.Scanbeam;t.Y=i,t.Next=this.m_Scanbeam,this.m_Scanbeam=t}else{for(var e=this.m_Scanbeam;e.Next!==null&&i<=e.Next.Y;)e=e.Next;if(i===e.Y)return;var r=new c.Scanbeam;r.Y=i,r.Next=e.Next,e.Next=r}},c.ClipperBase.prototype.PopScanbeam=function(i){return this.m_Scanbeam===null?(i.v=0,!1):(i.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},c.ClipperBase.prototype.LocalMinimaPending=function(){return this.m_CurrentLM!==null},c.ClipperBase.prototype.CreateOutRec=function(){var i=new c.OutRec;return i.Idx=c.ClipperBase.Unassigned,i.IsHole=!1,i.IsOpen=!1,i.FirstLeft=null,i.Pts=null,i.BottomPt=null,i.PolyNode=null,this.m_PolyOuts.push(i),i.Idx=this.m_PolyOuts.length-1,i},c.ClipperBase.prototype.DisposeOutRec=function(i){var t=this.m_PolyOuts[i];t.Pts=null,t=null,this.m_PolyOuts[i]=null},c.ClipperBase.prototype.UpdateEdgeIntoAEL=function(i){i.NextInLML===null&&c.Error("UpdateEdgeIntoAEL: invalid call");var t=i.PrevInAEL,e=i.NextInAEL;return i.NextInLML.OutIdx=i.OutIdx,t!==null?t.NextInAEL=i.NextInLML:this.m_ActiveEdges=i.NextInLML,e!==null&&(e.PrevInAEL=i.NextInLML),i.NextInLML.Side=i.Side,i.NextInLML.WindDelta=i.WindDelta,i.NextInLML.WindCnt=i.WindCnt,i.NextInLML.WindCnt2=i.WindCnt2,i=i.NextInLML,i.Curr.X=i.Bot.X,i.Curr.Y=i.Bot.Y,i.PrevInAEL=t,i.NextInAEL=e,c.ClipperBase.IsHorizontal(i)||this.InsertScanbeam(i.Top.Y),i},c.ClipperBase.prototype.SwapPositionsInAEL=function(i,t){if(!(i.NextInAEL===i.PrevInAEL||t.NextInAEL===t.PrevInAEL)){if(i.NextInAEL===t){var e=t.NextInAEL;e!==null&&(e.PrevInAEL=i);var r=i.PrevInAEL;r!==null&&(r.NextInAEL=t),t.PrevInAEL=r,t.NextInAEL=i,i.PrevInAEL=t,i.NextInAEL=e}else if(t.NextInAEL===i){var n=i.NextInAEL;n!==null&&(n.PrevInAEL=t);var s=t.PrevInAEL;s!==null&&(s.NextInAEL=i),i.PrevInAEL=s,i.NextInAEL=t,t.PrevInAEL=i,t.NextInAEL=n}else{var o=i.NextInAEL,a=i.PrevInAEL;i.NextInAEL=t.NextInAEL,i.NextInAEL!==null&&(i.NextInAEL.PrevInAEL=i),i.PrevInAEL=t.PrevInAEL,i.PrevInAEL!==null&&(i.PrevInAEL.NextInAEL=i),t.NextInAEL=o,t.NextInAEL!==null&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=a,t.PrevInAEL!==null&&(t.PrevInAEL.NextInAEL=t)}i.PrevInAEL===null?this.m_ActiveEdges=i:t.PrevInAEL===null&&(this.m_ActiveEdges=t)}},c.ClipperBase.prototype.DeleteFromAEL=function(i){var t=i.PrevInAEL,e=i.NextInAEL;t===null&&e===null&&i!==this.m_ActiveEdges||(t!==null?t.NextInAEL=e:this.m_ActiveEdges=e,e!==null&&(e.PrevInAEL=t),i.NextInAEL=null,i.PrevInAEL=null)},c.Clipper=function(i){typeof i>"u"&&(i=0),this.m_PolyOuts=null,this.m_ClipType=c.ClipType.ctIntersection,this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=null,this.m_IntersectNodeComparer=null,this.m_ExecuteLocked=!1,this.m_ClipFillType=c.PolyFillType.pftEvenOdd,this.m_SubjFillType=c.PolyFillType.pftEvenOdd,this.m_Joins=null,this.m_GhostJoins=null,this.m_UsingPolyTree=!1,this.ReverseSolution=!1,this.StrictlySimple=!1,c.ClipperBase.call(this),this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=new Array,this.m_IntersectNodeComparer=c.MyIntersectNodeSort.Compare,this.m_ExecuteLocked=!1,this.m_UsingPolyTree=!1,this.m_PolyOuts=new Array,this.m_Joins=new Array,this.m_GhostJoins=new Array,this.ReverseSolution=(1&i)!==0,this.StrictlySimple=(2&i)!==0,this.PreserveCollinear=(4&i)!==0,c.use_xyz&&(this.ZFillFunction=null)},c.Clipper.ioReverseSolution=1,c.Clipper.ioStrictlySimple=2,c.Clipper.ioPreserveCollinear=4,c.Clipper.prototype.Clear=function(){this.m_edges.length!==0&&(this.DisposeAllPolyPts(),c.ClipperBase.prototype.Clear.call(this))},c.Clipper.prototype.InsertMaxima=function(i){var t=new c.Maxima;if(t.X=i,this.m_Maxima===null)this.m_Maxima=t,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(i<this.m_Maxima.X)t.Next=this.m_Maxima,t.Prev=null,this.m_Maxima=t;else{for(var e=this.m_Maxima;e.Next!==null&&i>=e.Next.X;)e=e.Next;if(i===e.X)return;t.Next=e.Next,t.Prev=e,e.Next!==null&&(e.Next.Prev=t),e.Next=t}},c.Clipper.prototype.Execute=function(){var i=arguments,t=i.length,e=i[1]instanceof c.PolyTree;if(t===4&&!e){var r=i[0],n=i[1],s=i[2],o=i[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&c.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,c.Clear(n),this.m_SubjFillType=s,this.m_ClipFillType=o,this.m_ClipType=r,this.m_UsingPolyTree=!1;try{var a=this.ExecuteInternal();a&&this.BuildResult(n)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}else if(t===4&&e){var r=i[0],h=i[1],s=i[2],o=i[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=s,this.m_ClipFillType=o,this.m_ClipType=r,this.m_UsingPolyTree=!0;try{var a=this.ExecuteInternal();a&&this.BuildResult2(h)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}else if(t===2&&!e){var r=i[0],n=i[1];return this.Execute(r,n,c.PolyFillType.pftEvenOdd,c.PolyFillType.pftEvenOdd)}else if(t===2&&e){var r=i[0],h=i[1];return this.Execute(r,h,c.PolyFillType.pftEvenOdd,c.PolyFillType.pftEvenOdd)}},c.Clipper.prototype.FixHoleLinkage=function(i){if(!(i.FirstLeft===null||i.IsHole!==i.FirstLeft.IsHole&&i.FirstLeft.Pts!==null)){for(var t=i.FirstLeft;t!==null&&(t.IsHole===i.IsHole||t.Pts===null);)t=t.FirstLeft;i.FirstLeft=t}},c.Clipper.prototype.ExecuteInternal=function(){var i=this;try{this.Reset(),this.m_SortedEdges=null,this.m_Maxima=null;var t={},e={};if(!this.PopScanbeam(t))return!1;for(this.InsertLocalMinimaIntoAEL(t.v);this.PopScanbeam(e)||this.LocalMinimaPending();){if(i.ProcessHorizontals(),i.m_GhostJoins.length=0,!i.ProcessIntersections(e.v))return!1;i.ProcessEdgesAtTopOfScanbeam(e.v),t.v=e.v,i.InsertLocalMinimaIntoAEL(t.v)}var r,n,s;for(n=0,s=this.m_PolyOuts.length;n<s;n++)r=i.m_PolyOuts[n],!(r.Pts===null||r.IsOpen)&&(r.IsHole^i.ReverseSolution)==i.Area$1(r)>0&&i.ReversePolyPtLinks(r.Pts);for(this.JoinCommonEdges(),n=0,s=this.m_PolyOuts.length;n<s;n++)r=i.m_PolyOuts[n],r.Pts!==null&&(r.IsOpen?i.FixupOutPolyline(r):i.FixupOutPolygon(r));return this.StrictlySimple&&this.DoSimplePolygons(),!0}finally{this.m_Joins.length=0,this.m_GhostJoins.length=0}},c.Clipper.prototype.DisposeAllPolyPts=function(){for(var i=this,t=0,e=this.m_PolyOuts.length;t<e;++t)i.DisposeOutRec(t);c.Clear(this.m_PolyOuts)},c.Clipper.prototype.AddJoin=function(i,t,e){var r=new c.Join;r.OutPt1=i,r.OutPt2=t,r.OffPt.X=e.X,r.OffPt.Y=e.Y,c.use_xyz&&(r.OffPt.Z=e.Z),this.m_Joins.push(r)},c.Clipper.prototype.AddGhostJoin=function(i,t){var e=new c.Join;e.OutPt1=i,e.OffPt.X=t.X,e.OffPt.Y=t.Y,c.use_xyz&&(e.OffPt.Z=t.Z),this.m_GhostJoins.push(e)},c.Clipper.prototype.SetZ=function(i,t,e){if(this.ZFillFunction!==null){if(i.Z!==0||this.ZFillFunction===null)return;c.FPoint.op_Equality(i,t.Bot)?i.Z=t.Bot.Z:c.FPoint.op_Equality(i,t.Top)?i.Z=t.Top.Z:c.FPoint.op_Equality(i,e.Bot)?i.Z=e.Bot.Z:c.FPoint.op_Equality(i,e.Top)?i.Z=e.Top.Z:this.ZFillFunction(t.Bot,t.Top,e.Bot,e.Top,i)}},c.Clipper.prototype.InsertLocalMinimaIntoAEL=function(i){for(var t=this,e={},r,n;this.PopLocalMinima(i,e);){r=e.v.LeftBound,n=e.v.RightBound;var s=null;if(r===null?(t.InsertEdgeIntoAEL(n,null),t.SetWindingCount(n),t.IsContributing(n)&&(s=t.AddOutPt(n,n.Bot))):n===null?(t.InsertEdgeIntoAEL(r,null),t.SetWindingCount(r),t.IsContributing(r)&&(s=t.AddOutPt(r,r.Bot)),t.InsertScanbeam(r.Top.Y)):(t.InsertEdgeIntoAEL(r,null),t.InsertEdgeIntoAEL(n,r),t.SetWindingCount(r),n.WindCnt=r.WindCnt,n.WindCnt2=r.WindCnt2,t.IsContributing(r)&&(s=t.AddLocalMinPoly(r,n,r.Bot)),t.InsertScanbeam(r.Top.Y)),n!==null&&(c.ClipperBase.IsHorizontal(n)?(n.NextInLML!==null&&t.InsertScanbeam(n.NextInLML.Top.Y),t.AddEdgeToSEL(n)):t.InsertScanbeam(n.Top.Y)),!(r===null||n===null)){if(s!==null&&c.ClipperBase.IsHorizontal(n)&&t.m_GhostJoins.length>0&&n.WindDelta!==0)for(var o=0,a=this.m_GhostJoins.length;o<a;o++){var h=t.m_GhostJoins[o];t.HorzSegmentsOverlap(h.OutPt1.Pt.X,h.OffPt.X,n.Bot.X,n.Top.X)&&t.AddJoin(h.OutPt1,s,h.OffPt)}if(r.OutIdx>=0&&r.PrevInAEL!==null&&r.PrevInAEL.Curr.X===r.Bot.X&&r.PrevInAEL.OutIdx>=0&&c.ClipperBase.SlopesEqual5(r.PrevInAEL.Curr,r.PrevInAEL.Top,r.Curr,r.Top)&&r.WindDelta!==0&&r.PrevInAEL.WindDelta!==0){var l=t.AddOutPt(r.PrevInAEL,r.Bot);t.AddJoin(s,l,r.Top)}if(r.NextInAEL!==n){if(n.OutIdx>=0&&n.PrevInAEL.OutIdx>=0&&c.ClipperBase.SlopesEqual5(n.PrevInAEL.Curr,n.PrevInAEL.Top,n.Curr,n.Top)&&n.WindDelta!==0&&n.PrevInAEL.WindDelta!==0){var l=t.AddOutPt(n.PrevInAEL,n.Bot);t.AddJoin(s,l,n.Top)}var u=r.NextInAEL;if(u!==null)for(;u!==n;)t.IntersectEdges(n,u,r.Curr),u=u.NextInAEL}}}},c.Clipper.prototype.InsertEdgeIntoAEL=function(i,t){if(this.m_ActiveEdges===null)i.PrevInAEL=null,i.NextInAEL=null,this.m_ActiveEdges=i;else if(t===null&&this.E2InsertsBeforeE1(this.m_ActiveEdges,i))i.PrevInAEL=null,i.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges.PrevInAEL=i,this.m_ActiveEdges=i;else{for(t===null&&(t=this.m_ActiveEdges);t.NextInAEL!==null&&!this.E2InsertsBeforeE1(t.NextInAEL,i);)t=t.NextInAEL;i.NextInAEL=t.NextInAEL,t.NextInAEL!==null&&(t.NextInAEL.PrevInAEL=i),i.PrevInAEL=t,t.NextInAEL=i}},c.Clipper.prototype.E2InsertsBeforeE1=function(i,t){return t.Curr.X===i.Curr.X?t.Top.Y>i.Top.Y?t.Top.X<c.Clipper.TopX(i,t.Top.Y):i.Top.X>c.Clipper.TopX(t,i.Top.Y):t.Curr.X<i.Curr.X},c.Clipper.prototype.IsEvenOddFillType=function(i){return i.PolyTyp===c.PolyType.ptSubject?this.m_SubjFillType===c.PolyFillType.pftEvenOdd:this.m_ClipFillType===c.PolyFillType.pftEvenOdd},c.Clipper.prototype.IsEvenOddAltFillType=function(i){return i.PolyTyp===c.PolyType.ptSubject?this.m_ClipFillType===c.PolyFillType.pftEvenOdd:this.m_SubjFillType===c.PolyFillType.pftEvenOdd},c.Clipper.prototype.IsContributing=function(i){var t,e;switch(i.PolyTyp===c.PolyType.ptSubject?(t=this.m_SubjFillType,e=this.m_ClipFillType):(t=this.m_ClipFillType,e=this.m_SubjFillType),t){case c.PolyFillType.pftEvenOdd:if(i.WindDelta===0&&i.WindCnt!==1)return!1;break;case c.PolyFillType.pftNonZero:if(Math.abs(i.WindCnt)!==1)return!1;break;case c.PolyFillType.pftPositive:if(i.WindCnt!==1)return!1;break;default:if(i.WindCnt!==-1)return!1;break}switch(this.m_ClipType){case c.ClipType.ctIntersection:switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2!==0;case c.PolyFillType.pftPositive:return i.WindCnt2>0;default:return i.WindCnt2<0}case c.ClipType.ctUnion:switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}case c.ClipType.ctDifference:if(i.PolyTyp===c.PolyType.ptSubject)switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}else switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2!==0;case c.PolyFillType.pftPositive:return i.WindCnt2>0;default:return i.WindCnt2<0}case c.ClipType.ctXor:if(i.WindDelta===0)switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}else return!0}return!0},c.Clipper.prototype.SetWindingCount=function(i){for(var t=i.PrevInAEL;t!==null&&(t.PolyTyp!==i.PolyTyp||t.WindDelta===0);)t=t.PrevInAEL;if(t===null){var e=i.PolyTyp===c.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType;i.WindDelta===0?i.WindCnt=e===c.PolyFillType.pftNegative?-1:1:i.WindCnt=i.WindDelta,i.WindCnt2=0,t=this.m_ActiveEdges}else if(i.WindDelta===0&&this.m_ClipType!==c.ClipType.ctUnion)i.WindCnt=1,i.WindCnt2=t.WindCnt2,t=t.NextInAEL;else if(this.IsEvenOddFillType(i)){if(i.WindDelta===0){for(var r=!0,n=t.PrevInAEL;n!==null;)n.PolyTyp===t.PolyTyp&&n.WindDelta!==0&&(r=!r),n=n.PrevInAEL;i.WindCnt=r?0:1}else i.WindCnt=i.WindDelta;i.WindCnt2=t.WindCnt2,t=t.NextInAEL}else t.WindCnt*t.WindDelta<0?Math.abs(t.WindCnt)>1?t.WindDelta*i.WindDelta<0?i.WindCnt=t.WindCnt:i.WindCnt=t.WindCnt+i.WindDelta:i.WindCnt=i.WindDelta===0?1:i.WindDelta:i.WindDelta===0?i.WindCnt=t.WindCnt<0?t.WindCnt-1:t.WindCnt+1:t.WindDelta*i.WindDelta<0?i.WindCnt=t.WindCnt:i.WindCnt=t.WindCnt+i.WindDelta,i.WindCnt2=t.WindCnt2,t=t.NextInAEL;if(this.IsEvenOddAltFillType(i))for(;t!==i;)t.WindDelta!==0&&(i.WindCnt2=i.WindCnt2===0?1:0),t=t.NextInAEL;else for(;t!==i;)i.WindCnt2+=t.WindDelta,t=t.NextInAEL},c.Clipper.prototype.AddEdgeToSEL=function(i){this.m_SortedEdges===null?(this.m_SortedEdges=i,i.PrevInSEL=null,i.NextInSEL=null):(i.NextInSEL=this.m_SortedEdges,i.PrevInSEL=null,this.m_SortedEdges.PrevInSEL=i,this.m_SortedEdges=i)},c.Clipper.prototype.PopEdgeFromSEL=function(i){if(i.v=this.m_SortedEdges,i.v===null)return!1;var t=i.v;return this.m_SortedEdges=i.v.NextInSEL,this.m_SortedEdges!==null&&(this.m_SortedEdges.PrevInSEL=null),t.NextInSEL=null,t.PrevInSEL=null,!0},c.Clipper.prototype.CopyAELToSEL=function(){var i=this.m_ActiveEdges;for(this.m_SortedEdges=i;i!==null;)i.PrevInSEL=i.PrevInAEL,i.NextInSEL=i.NextInAEL,i=i.NextInAEL},c.Clipper.prototype.SwapPositionsInSEL=function(i,t){if(!(i.NextInSEL===null&&i.PrevInSEL===null)&&!(t.NextInSEL===null&&t.PrevInSEL===null)){if(i.NextInSEL===t){var e=t.NextInSEL;e!==null&&(e.PrevInSEL=i);var r=i.PrevInSEL;r!==null&&(r.NextInSEL=t),t.PrevInSEL=r,t.NextInSEL=i,i.PrevInSEL=t,i.NextInSEL=e}else if(t.NextInSEL===i){var e=i.NextInSEL;e!==null&&(e.PrevInSEL=t);var r=t.PrevInSEL;r!==null&&(r.NextInSEL=i),i.PrevInSEL=r,i.NextInSEL=t,t.PrevInSEL=i,t.NextInSEL=e}else{var e=i.NextInSEL,r=i.PrevInSEL;i.NextInSEL=t.NextInSEL,i.NextInSEL!==null&&(i.NextInSEL.PrevInSEL=i),i.PrevInSEL=t.PrevInSEL,i.PrevInSEL!==null&&(i.PrevInSEL.NextInSEL=i),t.NextInSEL=e,t.NextInSEL!==null&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=r,t.PrevInSEL!==null&&(t.PrevInSEL.NextInSEL=t)}i.PrevInSEL===null?this.m_SortedEdges=i:t.PrevInSEL===null&&(this.m_SortedEdges=t)}},c.Clipper.prototype.AddLocalMaxPoly=function(i,t,e){this.AddOutPt(i,e),t.WindDelta===0&&this.AddOutPt(t,e),i.OutIdx===t.OutIdx?(i.OutIdx=-1,t.OutIdx=-1):i.OutIdx<t.OutIdx?this.AppendPolygon(i,t):this.AppendPolygon(t,i)},c.Clipper.prototype.AddLocalMinPoly=function(i,t,e){var r,n,s;if(c.ClipperBase.IsHorizontal(t)||i.Dx>t.Dx?(r=this.AddOutPt(i,e),t.OutIdx=i.OutIdx,i.Side=c.EdgeSide.esLeft,t.Side=c.EdgeSide.esRight,n=i,n.PrevInAEL===t?s=t.PrevInAEL:s=n.PrevInAEL):(r=this.AddOutPt(t,e),i.OutIdx=t.OutIdx,i.Side=c.EdgeSide.esRight,t.Side=c.EdgeSide.esLeft,n=t,n.PrevInAEL===i?s=i.PrevInAEL:s=n.PrevInAEL),s!==null&&s.OutIdx>=0&&s.Top.Y<e.Y&&n.Top.Y<e.Y){var o=c.Clipper.TopX(s,e.Y),a=c.Clipper.TopX(n,e.Y);if(o===a&&n.WindDelta!==0&&s.WindDelta!==0&&c.ClipperBase.SlopesEqual5(new c.FPoint2(o,e.Y),s.Top,new c.FPoint2(a,e.Y),n.Top)){var h=this.AddOutPt(s,e);this.AddJoin(r,h,n.Top)}}return r},c.Clipper.prototype.AddOutPt=function(i,t){if(i.OutIdx<0){var e=this.CreateOutRec();e.IsOpen=i.WindDelta===0;var r=new c.OutPt;return e.Pts=r,r.Idx=e.Idx,r.Pt.X=t.X,r.Pt.Y=t.Y,c.use_xyz&&(r.Pt.Z=t.Z),r.Next=r,r.Prev=r,e.IsOpen||this.SetHoleState(i,e),i.OutIdx=e.Idx,r}else{var e=this.m_PolyOuts[i.OutIdx],n=e.Pts,s=i.Side===c.EdgeSide.esLeft;if(s&&c.FPoint.op_Equality(t,n.Pt))return n;if(!s&&c.FPoint.op_Equality(t,n.Prev.Pt))return n.Prev;var r=new c.OutPt;return r.Idx=e.Idx,r.Pt.X=t.X,r.Pt.Y=t.Y,c.use_xyz&&(r.Pt.Z=t.Z),r.Next=n,r.Prev=n.Prev,r.Prev.Next=r,n.Prev=r,s&&(e.Pts=r),r}},c.Clipper.prototype.GetLastOutPt=function(i){var t=this.m_PolyOuts[i.OutIdx];return i.Side===c.EdgeSide.esLeft?t.Pts:t.Pts.Prev},c.Clipper.prototype.SwapPoints=function(i,t){var e=new c.FPoint1(i.Value);i.Value.X=t.Value.X,i.Value.Y=t.Value.Y,c.use_xyz&&(i.Value.Z=t.Value.Z),t.Value.X=e.X,t.Value.Y=e.Y,c.use_xyz&&(t.Value.Z=e.Z)},c.Clipper.prototype.HorzSegmentsOverlap=function(i,t,e,r){var n;return i>t&&(n=i,i=t,t=n),e>r&&(n=e,e=r,r=n),i<r&&e<t},c.Clipper.prototype.SetHoleState=function(i,t){for(var e=i.PrevInAEL,r=null;e!==null;)e.OutIdx>=0&&e.WindDelta!==0&&(r===null?r=e:r.OutIdx===e.OutIdx&&(r=null)),e=e.PrevInAEL;r===null?(t.FirstLeft=null,t.IsHole=!1):(t.FirstLeft=this.m_PolyOuts[r.OutIdx],t.IsHole=!t.FirstLeft.IsHole)},c.Clipper.prototype.GetDx=function(i,t){return i.Y===t.Y?c.ClipperBase.horizontal:(t.X-i.X)/(t.Y-i.Y)},c.Clipper.prototype.FirstIsBottomPt=function(i,t){for(var e=i.Prev;c.FPoint.op_Equality(e.Pt,i.Pt)&&e!==i;)e=e.Prev;var r=Math.abs(this.GetDx(i.Pt,e.Pt));for(e=i.Next;c.FPoint.op_Equality(e.Pt,i.Pt)&&e!==i;)e=e.Next;var n=Math.abs(this.GetDx(i.Pt,e.Pt));for(e=t.Prev;c.FPoint.op_Equality(e.Pt,t.Pt)&&e!==t;)e=e.Prev;var s=Math.abs(this.GetDx(t.Pt,e.Pt));for(e=t.Next;c.FPoint.op_Equality(e.Pt,t.Pt)&&e!==t;)e=e.Next;var o=Math.abs(this.GetDx(t.Pt,e.Pt));return Math.max(r,n)===Math.max(s,o)&&Math.min(r,n)===Math.min(s,o)?this.Area(i)>0:r>=s&&r>=o||n>=s&&n>=o},c.Clipper.prototype.GetBottomPt=function(i){for(var t=this,e=null,r=i.Next;r!==i;)r.Pt.Y>i.Pt.Y?(i=r,e=null):r.Pt.Y===i.Pt.Y&&r.Pt.X<=i.Pt.X&&(r.Pt.X<i.Pt.X?(e=null,i=r):r.Next!==i&&r.Prev!==i&&(e=r)),r=r.Next;if(e!==null)for(;e!==r;)for(t.FirstIsBottomPt(r,e)||(i=e),e=e.Next;c.FPoint.op_Inequality(e.Pt,i.Pt);)e=e.Next;return i},c.Clipper.prototype.GetLowermostRec=function(i,t){i.BottomPt===null&&(i.BottomPt=this.GetBottomPt(i.Pts)),t.BottomPt===null&&(t.BottomPt=this.GetBottomPt(t.Pts));var e=i.BottomPt,r=t.BottomPt;return e.Pt.Y>r.Pt.Y?i:e.Pt.Y<r.Pt.Y?t:e.Pt.X<r.Pt.X?i:e.Pt.X>r.Pt.X||e.Next===e?t:r.Next===r||this.FirstIsBottomPt(e,r)?i:t},c.Clipper.prototype.OutRec1RightOfOutRec2=function(i,t){do if(i=i.FirstLeft,i===t)return!0;while(i!==null);return!1},c.Clipper.prototype.GetOutRec=function(i){for(var t=this,e=this.m_PolyOuts[i];e!==this.m_PolyOuts[e.Idx];)e=t.m_PolyOuts[e.Idx];return e},c.Clipper.prototype.AppendPolygon=function(i,t){var e=this.m_PolyOuts[i.OutIdx],r=this.m_PolyOuts[t.OutIdx],n;this.OutRec1RightOfOutRec2(e,r)?n=r:this.OutRec1RightOfOutRec2(r,e)?n=e:n=this.GetLowermostRec(e,r);var s=e.Pts,o=s.Prev,a=r.Pts,h=a.Prev;i.Side===c.EdgeSide.esLeft?t.Side===c.EdgeSide.esLeft?(this.ReversePolyPtLinks(a),a.Next=s,s.Prev=a,o.Next=h,h.Prev=o,e.Pts=h):(h.Next=s,s.Prev=h,a.Prev=o,o.Next=a,e.Pts=a):t.Side===c.EdgeSide.esRight?(this.ReversePolyPtLinks(a),o.Next=h,h.Prev=o,a.Next=s,s.Prev=a):(o.Next=a,a.Prev=o,s.Prev=h,h.Next=s),e.BottomPt=null,n===r&&(r.FirstLeft!==e&&(e.FirstLeft=r.FirstLeft),e.IsHole=r.IsHole),r.Pts=null,r.BottomPt=null,r.FirstLeft=e;var l=i.OutIdx,u=t.OutIdx;i.OutIdx=-1,t.OutIdx=-1;for(var f=this.m_ActiveEdges;f!==null;){if(f.OutIdx===u){f.OutIdx=l,f.Side=i.Side;break}f=f.NextInAEL}r.Idx=e.Idx},c.Clipper.prototype.ReversePolyPtLinks=function(i){if(i!==null){var t,e;t=i;do e=t.Next,t.Next=t.Prev,t.Prev=e,t=e;while(t!==i)}},c.Clipper.SwapSides=function(i,t){var e=i.Side;i.Side=t.Side,t.Side=e},c.Clipper.SwapPolyIndexes=function(i,t){var e=i.OutIdx;i.OutIdx=t.OutIdx,t.OutIdx=e},c.Clipper.prototype.IntersectEdges=function(i,t,e){var r=i.OutIdx>=0,n=t.OutIdx>=0;if(c.use_xyz&&this.SetZ(e,i,t),c.use_lines&&(i.WindDelta===0||t.WindDelta===0)){if(i.WindDelta===0&&t.WindDelta===0)return;i.PolyTyp===t.PolyTyp&&i.WindDelta!==t.WindDelta&&this.m_ClipType===c.ClipType.ctUnion?i.WindDelta===0?n&&(this.AddOutPt(i,e),r&&(i.OutIdx=-1)):r&&(this.AddOutPt(t,e),n&&(t.OutIdx=-1)):i.PolyTyp!==t.PolyTyp&&(i.WindDelta===0&&Math.abs(t.WindCnt)===1&&(this.m_ClipType!==c.ClipType.ctUnion||t.WindCnt2===0)?(this.AddOutPt(i,e),r&&(i.OutIdx=-1)):t.WindDelta===0&&Math.abs(i.WindCnt)===1&&(this.m_ClipType!==c.ClipType.ctUnion||i.WindCnt2===0)&&(this.AddOutPt(t,e),n&&(t.OutIdx=-1)));return}if(i.PolyTyp===t.PolyTyp)if(this.IsEvenOddFillType(i)){var s=i.WindCnt;i.WindCnt=t.WindCnt,t.WindCnt=s}else i.WindCnt+t.WindDelta===0?i.WindCnt=-i.WindCnt:i.WindCnt+=t.WindDelta,t.WindCnt-i.WindDelta===0?t.WindCnt=-t.WindCnt:t.WindCnt-=i.WindDelta;else this.IsEvenOddFillType(t)?i.WindCnt2=i.WindCnt2===0?1:0:i.WindCnt2+=t.WindDelta,this.IsEvenOddFillType(i)?t.WindCnt2=t.WindCnt2===0?1:0:t.WindCnt2-=i.WindDelta;var o,a,h,l;i.PolyTyp===c.PolyType.ptSubject?(o=this.m_SubjFillType,h=this.m_ClipFillType):(o=this.m_ClipFillType,h=this.m_SubjFillType),t.PolyTyp===c.PolyType.ptSubject?(a=this.m_SubjFillType,l=this.m_ClipFillType):(a=this.m_ClipFillType,l=this.m_SubjFillType);var u,f;switch(o){case c.PolyFillType.pftPositive:u=i.WindCnt;break;case c.PolyFillType.pftNegative:u=-i.WindCnt;break;default:u=Math.abs(i.WindCnt);break}switch(a){case c.PolyFillType.pftPositive:f=t.WindCnt;break;case c.PolyFillType.pftNegative:f=-t.WindCnt;break;default:f=Math.abs(t.WindCnt);break}if(r&&n)u!==0&&u!==1||f!==0&&f!==1||i.PolyTyp!==t.PolyTyp&&this.m_ClipType!==c.ClipType.ctXor?this.AddLocalMaxPoly(i,t,e):(this.AddOutPt(i,e),this.AddOutPt(t,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if(r)(f===0||f===1)&&(this.AddOutPt(i,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if(n)(u===0||u===1)&&(this.AddOutPt(t,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if((u===0||u===1)&&(f===0||f===1)){var p,d;switch(h){case c.PolyFillType.pftPositive:p=i.WindCnt2;break;case c.PolyFillType.pftNegative:p=-i.WindCnt2;break;default:p=Math.abs(i.WindCnt2);break}switch(l){case c.PolyFillType.pftPositive:d=t.WindCnt2;break;case c.PolyFillType.pftNegative:d=-t.WindCnt2;break;default:d=Math.abs(t.WindCnt2);break}if(i.PolyTyp!==t.PolyTyp)this.AddLocalMinPoly(i,t,e);else if(u===1&&f===1)switch(this.m_ClipType){case c.ClipType.ctIntersection:p>0&&d>0&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctUnion:p<=0&&d<=0&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctDifference:(i.PolyTyp===c.PolyType.ptClip&&p>0&&d>0||i.PolyTyp===c.PolyType.ptSubject&&p<=0&&d<=0)&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctXor:this.AddLocalMinPoly(i,t,e);break}else c.Clipper.SwapSides(i,t)}},c.Clipper.prototype.DeleteFromSEL=function(i){var t=i.PrevInSEL,e=i.NextInSEL;t===null&&e===null&&i!==this.m_SortedEdges||(t!==null?t.NextInSEL=e:this.m_SortedEdges=e,e!==null&&(e.PrevInSEL=t),i.NextInSEL=null,i.PrevInSEL=null)},c.Clipper.prototype.ProcessHorizontals=function(){for(var i=this,t={};this.PopEdgeFromSEL(t);)i.ProcessHorizontal(t.v)},c.Clipper.prototype.GetHorzDirection=function(i,t){i.Bot.X<i.Top.X?(t.Left=i.Bot.X,t.Right=i.Top.X,t.Dir=c.Direction.dLeftToRight):(t.Left=i.Top.X,t.Right=i.Bot.X,t.Dir=c.Direction.dRightToLeft)},c.Clipper.prototype.ProcessHorizontal=function(i){var t=this,e={Dir:null,Left:null,Right:null};this.GetHorzDirection(i,e);for(var r=e.Dir,n=e.Left,s=e.Right,o=i.WindDelta===0,a=i,h=null;a.NextInLML!==null&&c.ClipperBase.IsHorizontal(a.NextInLML);)a=a.NextInLML;a.NextInLML===null&&(h=this.GetMaximaPair(a));var l=this.m_Maxima;if(l!==null)if(r===c.Direction.dLeftToRight){for(;l!==null&&l.X<=i.Bot.X;)l=l.Next;l!==null&&l.X>=a.Top.X&&(l=null)}else{for(;l.Next!==null&&l.Next.X<i.Bot.X;)l=l.Next;l.X<=a.Top.X&&(l=null)}for(var u=null;;){for(var f=i===a,p=t.GetNextInAEL(i,r);p!==null;){if(l!==null)if(r===c.Direction.dLeftToRight)for(;l!==null&&l.X<p.Curr.X;)i.OutIdx>=0&&!o&&t.AddOutPt(i,new c.FPoint2(l.X,i.Bot.Y)),l=l.Next;else for(;l!==null&&l.X>p.Curr.X;)i.OutIdx>=0&&!o&&t.AddOutPt(i,new c.FPoint2(l.X,i.Bot.Y)),l=l.Prev;if(r===c.Direction.dLeftToRight&&p.Curr.X>s||r===c.Direction.dRightToLeft&&p.Curr.X<n||p.Curr.X===i.Top.X&&i.NextInLML!==null&&p.Dx<i.NextInLML.Dx)break;if(i.OutIdx>=0&&!o){c.use_xyz&&(r===c.Direction.dLeftToRight?t.SetZ(p.Curr,i,p):t.SetZ(p.Curr,p,i)),u=t.AddOutPt(i,p.Curr);for(var d=t.m_SortedEdges;d!==null;){if(d.OutIdx>=0&&t.HorzSegmentsOverlap(i.Bot.X,i.Top.X,d.Bot.X,d.Top.X)){var v=t.GetLastOutPt(d);t.AddJoin(v,u,d.Top)}d=d.NextInSEL}t.AddGhostJoin(u,i.Bot)}if(p===h&&f){i.OutIdx>=0&&t.AddLocalMaxPoly(i,h,i.Top),t.DeleteFromAEL(i),t.DeleteFromAEL(h);return}if(r===c.Direction.dLeftToRight){var m=new c.FPoint2(p.Curr.X,i.Curr.Y);t.IntersectEdges(i,p,m)}else{var m=new c.FPoint2(p.Curr.X,i.Curr.Y);t.IntersectEdges(p,i,m)}var y=t.GetNextInAEL(p,r);t.SwapPositionsInAEL(i,p),p=y}if(i.NextInLML===null||!c.ClipperBase.IsHorizontal(i.NextInLML))break;i=t.UpdateEdgeIntoAEL(i),i.OutIdx>=0&&t.AddOutPt(i,i.Bot),e={Dir:r,Left:n,Right:s},t.GetHorzDirection(i,e),r=e.Dir,n=e.Left,s=e.Right}if(i.OutIdx>=0&&u===null){u=this.GetLastOutPt(i);for(var d=this.m_SortedEdges;d!==null;){if(d.OutIdx>=0&&t.HorzSegmentsOverlap(i.Bot.X,i.Top.X,d.Bot.X,d.Top.X)){var v=t.GetLastOutPt(d);t.AddJoin(v,u,d.Top)}d=d.NextInSEL}this.AddGhostJoin(u,i.Top)}if(i.NextInLML!==null)if(i.OutIdx>=0){if(u=this.AddOutPt(i,i.Top),i=this.UpdateEdgeIntoAEL(i),i.WindDelta===0)return;var g=i.PrevInAEL,y=i.NextInAEL;if(g!==null&&g.Curr.X===i.Bot.X&&g.Curr.Y===i.Bot.Y&&g.WindDelta===0&&g.OutIdx>=0&&g.Curr.Y>g.Top.Y&&c.ClipperBase.SlopesEqual3(i,g)){var v=this.AddOutPt(g,i.Bot);this.AddJoin(u,v,i.Top)}else if(y!==null&&y.Curr.X===i.Bot.X&&y.Curr.Y===i.Bot.Y&&y.WindDelta!==0&&y.OutIdx>=0&&y.Curr.Y>y.Top.Y&&c.ClipperBase.SlopesEqual3(i,y)){var v=this.AddOutPt(y,i.Bot);this.AddJoin(u,v,i.Top)}}else i=this.UpdateEdgeIntoAEL(i);else i.OutIdx>=0&&this.AddOutPt(i,i.Top),this.DeleteFromAEL(i)},c.Clipper.prototype.GetNextInAEL=function(i,t){return t===c.Direction.dLeftToRight?i.NextInAEL:i.PrevInAEL},c.Clipper.prototype.IsMinima=function(i){return i!==null&&i.Prev.NextInLML!==i&&i.Next.NextInLML!==i},c.Clipper.prototype.IsMaxima=function(i,t){return i!==null&&i.Top.Y===t&&i.NextInLML===null},c.Clipper.prototype.IsIntermediate=function(i,t){return i.Top.Y===t&&i.NextInLML!==null},c.Clipper.prototype.GetMaximaPair=function(i){return c.FPoint.op_Equality(i.Next.Top,i.Top)&&i.Next.NextInLML===null?i.Next:c.FPoint.op_Equality(i.Prev.Top,i.Top)&&i.Prev.NextInLML===null?i.Prev:null},c.Clipper.prototype.GetMaximaPairEx=function(i){var t=this.GetMaximaPair(i);return t===null||t.OutIdx===c.ClipperBase.Skip||t.NextInAEL===t.PrevInAEL&&!c.ClipperBase.IsHorizontal(t)?null:t},c.Clipper.prototype.ProcessIntersections=function(i){if(this.m_ActiveEdges===null)return!0;try{if(this.BuildIntersectList(i),this.m_IntersectList.length===0)return!0;if(this.m_IntersectList.length===1||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch{this.m_SortedEdges=null,this.m_IntersectList.length=0,c.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},c.Clipper.prototype.BuildIntersectList=function(i){var t=this;if(this.m_ActiveEdges!==null){var e=this.m_ActiveEdges;for(this.m_SortedEdges=e;e!==null;)e.PrevInSEL=e.PrevInAEL,e.NextInSEL=e.NextInAEL,e.Curr.X=c.Clipper.TopX(e,i),e=e.NextInAEL;for(var r=!0;r&&this.m_SortedEdges!==null;){for(r=!1,e=t.m_SortedEdges;e.NextInSEL!==null;){var n=e.NextInSEL,s=new c.FPoint0;if(e.Curr.X>n.Curr.X){t.IntersectPoint(e,n,s),s.Y<i&&(s=new c.FPoint2(c.Clipper.TopX(e,i),i));var o=new c.IntersectNode;o.Edge1=e,o.Edge2=n,o.Pt.X=s.X,o.Pt.Y=s.Y,c.use_xyz&&(o.Pt.Z=s.Z),t.m_IntersectList.push(o),t.SwapPositionsInSEL(e,n),r=!0}else e=n}if(e.PrevInSEL!==null)e.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}},c.Clipper.prototype.EdgesAdjacent=function(i){return i.Edge1.NextInSEL===i.Edge2||i.Edge1.PrevInSEL===i.Edge2},c.Clipper.IntersectNodeSort=function(i,t){return t.Pt.Y-i.Pt.Y},c.Clipper.prototype.FixupIntersectionOrder=function(){var i=this;this.m_IntersectList.sort(this.m_IntersectNodeComparer),this.CopyAELToSEL();for(var t=this.m_IntersectList.length,e=0;e<t;e++){if(!i.EdgesAdjacent(i.m_IntersectList[e])){for(var r=e+1;r<t&&!this.EdgesAdjacent(this.m_IntersectList[r]);)r++;if(r===t)return!1;var n=i.m_IntersectList[e];i.m_IntersectList[e]=i.m_IntersectList[r],i.m_IntersectList[r]=n}i.SwapPositionsInSEL(i.m_IntersectList[e].Edge1,i.m_IntersectList[e].Edge2)}return!0},c.Clipper.prototype.ProcessIntersectList=function(){for(var i=this,t=0,e=this.m_IntersectList.length;t<e;t++){var r=i.m_IntersectList[t];i.IntersectEdges(r.Edge1,r.Edge2,r.Pt),i.SwapPositionsInAEL(r.Edge1,r.Edge2)}this.m_IntersectList.length=0},c.Clipper.TopX=function(i,t){return t===i.Top.Y?i.Top.X:i.Bot.X+i.Dx*(t-i.Bot.Y)},c.Clipper.prototype.IntersectPoint=function(i,t,e){e.X=0,e.Y=0;var r,n;if(i.Dx===t.Dx){e.Y=i.Curr.Y,e.X=c.Clipper.TopX(i,e.Y);return}if(i.Delta.X===0)e.X=i.Bot.X,c.ClipperBase.IsHorizontal(t)?e.Y=t.Bot.Y:(n=t.Bot.Y-t.Bot.X/t.Dx,e.Y=e.X/t.Dx+n);else if(t.Delta.X===0)e.X=t.Bot.X,c.ClipperBase.IsHorizontal(i)?e.Y=i.Bot.Y:(r=i.Bot.Y-i.Bot.X/i.Dx,e.Y=e.X/i.Dx+r);else{r=i.Bot.X-i.Bot.Y*i.Dx,n=t.Bot.X-t.Bot.Y*t.Dx;var s=(n-r)/(i.Dx-t.Dx);e.Y=s,Math.abs(i.Dx)<Math.abs(t.Dx)?e.X=i.Dx*s+r:e.X=t.Dx*s+n}if(e.Y<i.Top.Y||e.Y<t.Top.Y){if(i.Top.Y>t.Top.Y)return e.Y=i.Top.Y,e.X=c.Clipper.TopX(t,i.Top.Y),e.X<i.Top.X;e.Y=t.Top.Y,Math.abs(i.Dx)<Math.abs(t.Dx)?e.X=c.Clipper.TopX(i,e.Y):e.X=c.Clipper.TopX(t,e.Y)}e.Y>i.Curr.Y&&(e.Y=i.Curr.Y,Math.abs(i.Dx)>Math.abs(t.Dx)?e.X=c.Clipper.TopX(t,e.Y):e.X=c.Clipper.TopX(i,e.Y))},c.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(i){for(var t=this,e=this.m_ActiveEdges;e!==null;){var r=t.IsMaxima(e,i);if(r){var n=t.GetMaximaPairEx(e);r=n===null||!c.ClipperBase.IsHorizontal(n)}if(r){t.StrictlySimple&&t.InsertMaxima(e.Top.X);var s=e.PrevInAEL;t.DoMaxima(e),s===null?e=t.m_ActiveEdges:e=s.NextInAEL}else{if(t.IsIntermediate(e,i)&&c.ClipperBase.IsHorizontal(e.NextInLML)?(e=t.UpdateEdgeIntoAEL(e),e.OutIdx>=0&&t.AddOutPt(e,e.Bot),t.AddEdgeToSEL(e)):(e.Curr.X=c.Clipper.TopX(e,i),e.Curr.Y=i),c.use_xyz&&(e.Top.Y===i?e.Curr.Z=e.Top.Z:e.Bot.Y===i?e.Curr.Z=e.Bot.Z:e.Curr.Z=0),t.StrictlySimple){var s=e.PrevInAEL;if(e.OutIdx>=0&&e.WindDelta!==0&&s!==null&&s.OutIdx>=0&&s.Curr.X===e.Curr.X&&s.WindDelta!==0){var o=new c.FPoint1(e.Curr);c.use_xyz&&t.SetZ(o,s,e);var a=t.AddOutPt(s,o),h=t.AddOutPt(e,o);t.AddJoin(a,h,o)}}e=e.NextInAEL}}for(this.ProcessHorizontals(),this.m_Maxima=null,e=this.m_ActiveEdges;e!==null;){if(t.IsIntermediate(e,i)){var a=null;e.OutIdx>=0&&(a=t.AddOutPt(e,e.Top)),e=t.UpdateEdgeIntoAEL(e);var s=e.PrevInAEL,l=e.NextInAEL;if(s!==null&&s.Curr.X===e.Bot.X&&s.Curr.Y===e.Bot.Y&&a!==null&&s.OutIdx>=0&&s.Curr.Y===s.Top.Y&&c.ClipperBase.SlopesEqual5(e.Curr,e.Top,s.Curr,s.Top)&&e.WindDelta!==0&&s.WindDelta!==0){var h=t.AddOutPt(ePrev2,e.Bot);t.AddJoin(a,h,e.Top)}else if(l!==null&&l.Curr.X===e.Bot.X&&l.Curr.Y===e.Bot.Y&&a!==null&&l.OutIdx>=0&&l.Curr.Y===l.Top.Y&&c.ClipperBase.SlopesEqual5(e.Curr,e.Top,l.Curr,l.Top)&&e.WindDelta!==0&&l.WindDelta!==0){var h=t.AddOutPt(l,e.Bot);t.AddJoin(a,h,e.Top)}}e=e.NextInAEL}},c.Clipper.prototype.DoMaxima=function(i){var t=this,e=this.GetMaximaPairEx(i);if(e===null){i.OutIdx>=0&&this.AddOutPt(i,i.Top),this.DeleteFromAEL(i);return}for(var r=i.NextInAEL;r!==null&&r!==e;)t.IntersectEdges(i,r,i.Top),t.SwapPositionsInAEL(i,r),r=i.NextInAEL;i.OutIdx===-1&&e.OutIdx===-1?(this.DeleteFromAEL(i),this.DeleteFromAEL(e)):i.OutIdx>=0&&e.OutIdx>=0?(i.OutIdx>=0&&this.AddLocalMaxPoly(i,e,i.Top),this.DeleteFromAEL(i),this.DeleteFromAEL(e)):c.use_lines&&i.WindDelta===0?(i.OutIdx>=0&&(this.AddOutPt(i,i.Top),i.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(i),e.OutIdx>=0&&(this.AddOutPt(e,i.Top),e.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(e)):c.Error("DoMaxima error")},c.Clipper.ReversePaths=function(i){for(var t=0,e=i.length;t<e;t++)i[t].reverse()},c.Clipper.Orientation=function(i){return c.Clipper.Area(i)>=0},c.Clipper.prototype.PointCount=function(i){if(i===null)return 0;var t=0,e=i;do t++,e=e.Next;while(e!==i);return t},c.Clipper.prototype.BuildResult=function(i){var t=this;c.Clear(i);for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e];if(n.Pts!==null){var s=n.Pts.Prev,o=t.PointCount(s);if(!(o<2)){for(var a=new Array(o),h=0;h<o;h++)a[h]=s.Pt,s=s.Prev;i.push(a)}}}},c.Clipper.prototype.BuildResult2=function(i){var t=this;i.Clear();for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e],s=t.PointCount(n.Pts);if(!(n.IsOpen&&s<2||!n.IsOpen&&s<3)){t.FixHoleLinkage(n);var o=new c.PolyNode;i.m_AllPolys.push(o),n.PolyNode=o,o.m_polygon.length=s;for(var a=n.Pts.Prev,h=0;h<s;h++)o.m_polygon[h]=a.Pt,a=a.Prev}}for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e];n.PolyNode!==null&&(n.IsOpen?(n.PolyNode.IsOpen=!0,i.AddChild(n.PolyNode)):n.FirstLeft!==null&&n.FirstLeft.PolyNode!==null?n.FirstLeft.PolyNode.AddChild(n.PolyNode):i.AddChild(n.PolyNode))}},c.Clipper.prototype.FixupOutPolyline=function(i){for(var t=i.Pts,e=t.Prev;t!==e;)if(t=t.Next,c.FPoint.op_Equality(t.Pt,t.Prev.Pt)){t===e&&(e=t.Prev);var r=t.Prev;r.Next=t.Next,t.Next.Prev=r,t=r}t===t.Prev&&(i.Pts=null)},c.Clipper.prototype.FixupOutPolygon=function(i){var t=this,e=null;i.BottomPt=null;for(var r=i.Pts,n=this.PreserveCollinear||this.StrictlySimple;;){if(r.Prev===r||r.Prev===r.Next){i.Pts=null;return}if(c.FPoint.op_Equality(r.Pt,r.Next.Pt)||c.FPoint.op_Equality(r.Pt,r.Prev.Pt)||c.ClipperBase.SlopesEqual4(r.Prev.Pt,r.Pt,r.Next.Pt)&&(!n||!t.Pt2IsBetweenPt1AndPt3(r.Prev.Pt,r.Pt,r.Next.Pt)))e=null,r.Prev.Next=r.Next,r.Next.Prev=r.Prev,r=r.Prev;else{if(r===e)break;e===null&&(e=r),r=r.Next}}i.Pts=r},c.Clipper.prototype.DupOutPt=function(i,t){var e=new c.OutPt;return e.Pt.X=i.Pt.X,e.Pt.Y=i.Pt.Y,c.use_xyz&&(e.Pt.Z=i.Pt.Z),e.Idx=i.Idx,t?(e.Next=i.Next,e.Prev=i,i.Next.Prev=e,i.Next=e):(e.Prev=i.Prev,e.Next=i,i.Prev.Next=e,i.Prev=e),e},c.Clipper.prototype.GetOverlap=function(i,t,e,r,n){return i<t?e<r?(n.Left=Math.max(i,e),n.Right=Math.min(t,r)):(n.Left=Math.max(i,r),n.Right=Math.min(t,e)):e<r?(n.Left=Math.max(t,e),n.Right=Math.min(i,r)):(n.Left=Math.max(t,r),n.Right=Math.min(i,e)),n.Left<n.Right},c.Clipper.prototype.JoinHorz=function(i,t,e,r,n,s){var o=i.Pt.X>t.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight,a=e.Pt.X>r.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight;if(o===a)return!1;if(o===c.Direction.dLeftToRight){for(;i.Next.Pt.X<=n.X&&i.Next.Pt.X>=i.Pt.X&&i.Next.Pt.Y===n.Y;)i=i.Next;s&&i.Pt.X!==n.X&&(i=i.Next),t=this.DupOutPt(i,!s),c.FPoint.op_Inequality(t.Pt,n)&&(i=t,i.Pt.X=n.X,i.Pt.Y=n.Y,c.use_xyz&&(i.Pt.Z=n.Z),t=this.DupOutPt(i,!s))}else{for(;i.Next.Pt.X>=n.X&&i.Next.Pt.X<=i.Pt.X&&i.Next.Pt.Y===n.Y;)i=i.Next;!s&&i.Pt.X!==n.X&&(i=i.Next),t=this.DupOutPt(i,s),c.FPoint.op_Inequality(t.Pt,n)&&(i=t,i.Pt.X=n.X,i.Pt.Y=n.Y,c.use_xyz&&(i.Pt.Z=n.Z),t=this.DupOutPt(i,s))}if(a===c.Direction.dLeftToRight){for(;e.Next.Pt.X<=n.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y===n.Y;)e=e.Next;s&&e.Pt.X!==n.X&&(e=e.Next),r=this.DupOutPt(e,!s),c.FPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,c.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,!s))}else{for(;e.Next.Pt.X>=n.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y===n.Y;)e=e.Next;!s&&e.Pt.X!==n.X&&(e=e.Next),r=this.DupOutPt(e,s),c.FPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,c.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,s))}return o===c.Direction.dLeftToRight===s?(i.Prev=e,e.Next=i,t.Next=r,r.Prev=t):(i.Next=e,e.Prev=i,t.Prev=r,r.Next=t),!0},c.Clipper.prototype.JoinPoints=function(i,t,e){var r=i.OutPt1,n=new c.OutPt,s=i.OutPt2,o=new c.OutPt,a=i.OutPt1.Pt.Y===i.OffPt.Y;if(a&&c.FPoint.op_Equality(i.OffPt,i.OutPt1.Pt)&&c.FPoint.op_Equality(i.OffPt,i.OutPt2.Pt)){if(t!==e)return!1;for(n=i.OutPt1.Next;n!==r&&c.FPoint.op_Equality(n.Pt,i.OffPt);)n=n.Next;var h=n.Pt.Y>i.OffPt.Y;for(o=i.OutPt2.Next;o!==s&&c.FPoint.op_Equality(o.Pt,i.OffPt);)o=o.Next;var l=o.Pt.Y>i.OffPt.Y;return h===l?!1:h?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n,i.OutPt1=r,i.OutPt2=n,!0):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n,i.OutPt1=r,i.OutPt2=n,!0)}else if(a){for(n=r;r.Prev.Pt.Y===r.Pt.Y&&r.Prev!==n&&r.Prev!==s;)r=r.Prev;for(;n.Next.Pt.Y===n.Pt.Y&&n.Next!==r&&n.Next!==s;)n=n.Next;if(n.Next===r||n.Next===s)return!1;for(o=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==o&&s.Prev!==n;)s=s.Prev;for(;o.Next.Pt.Y===o.Pt.Y&&o.Next!==s&&o.Next!==r;)o=o.Next;if(o.Next===s||o.Next===r)return!1;var u={Left:null,Right:null};if(!this.GetOverlap(r.Pt.X,n.Pt.X,s.Pt.X,o.Pt.X,u))return!1;var f=u.Left,p=u.Right,d=new c.FPoint0,v;return r.Pt.X>=f&&r.Pt.X<=p?(d.X=r.Pt.X,d.Y=r.Pt.Y,c.use_xyz&&(d.Z=r.Pt.Z),v=r.Pt.X>n.Pt.X):s.Pt.X>=f&&s.Pt.X<=p?(d.X=s.Pt.X,d.Y=s.Pt.Y,c.use_xyz&&(d.Z=s.Pt.Z),v=s.Pt.X>o.Pt.X):n.Pt.X>=f&&n.Pt.X<=p?(d.X=n.Pt.X,d.Y=n.Pt.Y,c.use_xyz&&(d.Z=n.Pt.Z),v=n.Pt.X>r.Pt.X):(d.X=o.Pt.X,d.Y=o.Pt.Y,c.use_xyz&&(d.Z=o.Pt.Z),v=o.Pt.X>s.Pt.X),i.OutPt1=r,i.OutPt2=s,this.JoinHorz(r,n,s,o,d,v)}else{for(n=r.Next;c.FPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Next;var m=n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,i.OffPt);if(m){for(n=r.Prev;c.FPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,i.OffPt))return!1}for(o=s.Next;c.FPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Next;var y=o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,i.OffPt);if(y){for(o=s.Prev;c.FPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Prev;if(o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,i.OffPt))return!1}return n===r||o===s||n===o||t===e&&m===y?!1:m?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n,i.OutPt1=r,i.OutPt2=n,!0):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n,i.OutPt1=r,i.OutPt2=n,!0)}},c.Clipper.GetBounds=function(i){for(var t=0,e=i.length;t<e&&i[t].length===0;)t++;if(t===e)return new c.FRect(0,0,0,0);var r=new c.FRect;for(r.left=i[t][0].X,r.right=r.left,r.top=i[t][0].Y,r.bottom=r.top;t<e;t++)for(var n=0,s=i[t].length;n<s;n++)i[t][n].X<r.left?r.left=i[t][n].X:i[t][n].X>r.right&&(r.right=i[t][n].X),i[t][n].Y<r.top?r.top=i[t][n].Y:i[t][n].Y>r.bottom&&(r.bottom=i[t][n].Y);return r},c.Clipper.prototype.GetBounds2=function(i){var t=i,e=new c.FRect;for(e.left=i.Pt.X,e.right=i.Pt.X,e.top=i.Pt.Y,e.bottom=i.Pt.Y,i=i.Next;i!==t;)i.Pt.X<e.left&&(e.left=i.Pt.X),i.Pt.X>e.right&&(e.right=i.Pt.X),i.Pt.Y<e.top&&(e.top=i.Pt.Y),i.Pt.Y>e.bottom&&(e.bottom=i.Pt.Y),i=i.Next;return e},c.Clipper.PointInPolygon=function(i,t){var e=0,r=t.length;if(r<3)return 0;for(var n=t[0],s=1;s<=r;++s){var o=s===r?t[0]:t[s];if(o.Y===i.Y&&(o.X===i.X||n.Y===i.Y&&o.X>i.X==n.X<i.X))return-1;if(n.Y<i.Y!=o.Y<i.Y){if(n.X>=i.X)if(o.X>i.X)e=1-e;else{var a=(n.X-i.X)*(o.Y-i.Y)-(o.X-i.X)*(n.Y-i.Y);if(a===0)return-1;a>0==o.Y>n.Y&&(e=1-e)}else if(o.X>i.X){var a=(n.X-i.X)*(o.Y-i.Y)-(o.X-i.X)*(n.Y-i.Y);if(a===0)return-1;a>0==o.Y>n.Y&&(e=1-e)}}n=o}return e},c.Clipper.prototype.PointInPolygon=function(i,t){var e=0,r=t,n=i.X,s=i.Y,o=t.Pt.X,a=t.Pt.Y;do{t=t.Next;var h=t.Pt.X,l=t.Pt.Y;if(l===s&&(h===n||a===s&&h>n==o<n))return-1;if(a<s!=l<s){if(o>=n)if(h>n)e=1-e;else{var u=(o-n)*(l-s)-(h-n)*(a-s);if(u===0)return-1;u>0==l>a&&(e=1-e)}else if(h>n){var u=(o-n)*(l-s)-(h-n)*(a-s);if(u===0)return-1;u>0==l>a&&(e=1-e)}}o=h,a=l}while(r!==t);return e},c.Clipper.prototype.Poly2ContainsPoly1=function(i,t){var e=this,r=i;do{var n=e.PointInPolygon(r.Pt,t);if(n>=0)return n>0;r=r.Next}while(r!==i);return!0},c.Clipper.prototype.FixupFirstLefts1=function(i,t){for(var e=this,r,n,s=0,o=this.m_PolyOuts.length;s<o;s++)r=e.m_PolyOuts[s],n=c.Clipper.ParseFirstLeft(r.FirstLeft),r.Pts!==null&&n===i&&e.Poly2ContainsPoly1(r.Pts,t.Pts)&&(r.FirstLeft=t)},c.Clipper.prototype.FixupFirstLefts2=function(i,t){for(var e=this,r=t.FirstLeft,n,s,o=0,a=this.m_PolyOuts.length;o<a;o++)n=e.m_PolyOuts[o],!(n.Pts===null||n===t||n===i)&&(s=c.Clipper.ParseFirstLeft(n.FirstLeft),!(s!==r&&s!==i&&s!==t)&&(e.Poly2ContainsPoly1(n.Pts,i.Pts)?n.FirstLeft=i:e.Poly2ContainsPoly1(n.Pts,t.Pts)?n.FirstLeft=t:(n.FirstLeft===i||n.FirstLeft===t)&&(n.FirstLeft=r)))},c.Clipper.prototype.FixupFirstLefts3=function(i,t){for(var e=this,r,n,s=0,o=this.m_PolyOuts.length;s<o;s++)r=e.m_PolyOuts[s],n=c.Clipper.ParseFirstLeft(r.FirstLeft),r.Pts!==null&&n===i&&(r.FirstLeft=t)},c.Clipper.ParseFirstLeft=function(i){for(;i!==null&&i.Pts===null;)i=i.FirstLeft;return i},c.Clipper.prototype.JoinCommonEdges=function(){for(var i=this,t=0,e=this.m_Joins.length;t<e;t++){var r=i.m_Joins[t],n=i.GetOutRec(r.OutPt1.Idx),s=i.GetOutRec(r.OutPt2.Idx);if(!(n.Pts===null||s.Pts===null)&&!(n.IsOpen||s.IsOpen)){var o;n===s?o=n:i.OutRec1RightOfOutRec2(n,s)?o=s:i.OutRec1RightOfOutRec2(s,n)?o=n:o=i.GetLowermostRec(n,s),i.JoinPoints(r,n,s)&&(n===s?(n.Pts=r.OutPt1,n.BottomPt=null,s=i.CreateOutRec(),s.Pts=r.OutPt2,i.UpdateOutPtIdxs(s),i.Poly2ContainsPoly1(s.Pts,n.Pts)?(s.IsHole=!n.IsHole,s.FirstLeft=n,i.m_UsingPolyTree&&i.FixupFirstLefts2(s,n),(s.IsHole^i.ReverseSolution)==i.Area$1(s)>0&&i.ReversePolyPtLinks(s.Pts)):i.Poly2ContainsPoly1(n.Pts,s.Pts)?(s.IsHole=n.IsHole,n.IsHole=!s.IsHole,s.FirstLeft=n.FirstLeft,n.FirstLeft=s,i.m_UsingPolyTree&&i.FixupFirstLefts2(n,s),(n.IsHole^i.ReverseSolution)==i.Area$1(n)>0&&i.ReversePolyPtLinks(n.Pts)):(s.IsHole=n.IsHole,s.FirstLeft=n.FirstLeft,i.m_UsingPolyTree&&i.FixupFirstLefts1(n,s))):(s.Pts=null,s.BottomPt=null,s.Idx=n.Idx,n.IsHole=o.IsHole,o===s&&(n.FirstLeft=s.FirstLeft),s.FirstLeft=n,i.m_UsingPolyTree&&i.FixupFirstLefts3(s,n)))}}},c.Clipper.prototype.UpdateOutPtIdxs=function(i){var t=i.Pts;do t.Idx=i.Idx,t=t.Prev;while(t!==i.Pts)},c.Clipper.prototype.DoSimplePolygons=function(){for(var i=this,t=0;t<this.m_PolyOuts.length;){var e=i.m_PolyOuts[t++],r=e.Pts;if(!(r===null||e.IsOpen))do{for(var n=r.Next;n!==e.Pts;){if(c.FPoint.op_Equality(r.Pt,n.Pt)&&n.Next!==r&&n.Prev!==r){var s=r.Prev,o=n.Prev;r.Prev=o,o.Next=r,n.Prev=s,s.Next=n,e.Pts=r;var a=i.CreateOutRec();a.Pts=n,i.UpdateOutPtIdxs(a),i.Poly2ContainsPoly1(a.Pts,e.Pts)?(a.IsHole=!e.IsHole,a.FirstLeft=e,i.m_UsingPolyTree&&i.FixupFirstLefts2(a,e)):i.Poly2ContainsPoly1(e.Pts,a.Pts)?(a.IsHole=e.IsHole,e.IsHole=!a.IsHole,a.FirstLeft=e.FirstLeft,e.FirstLeft=a,i.m_UsingPolyTree&&i.FixupFirstLefts2(e,a)):(a.IsHole=e.IsHole,a.FirstLeft=e.FirstLeft,i.m_UsingPolyTree&&i.FixupFirstLefts1(e,a)),n=r}n=n.Next}r=r.Next}while(r!==e.Pts)}},c.Clipper.Area=function(i){if(!Array.isArray(i))return 0;var t=i.length;if(t<3)return 0;for(var e=0,r=0,n=t-1;r<t;++r)e+=(i[n].X+i[r].X)*(i[n].Y-i[r].Y),n=r;return-e*.5},c.Clipper.prototype.Area=function(i){var t=i;if(i===null)return 0;var e=0;do e=e+(i.Prev.Pt.X+i.Pt.X)*(i.Prev.Pt.Y-i.Pt.Y),i=i.Next;while(i!==t);return e*.5},c.Clipper.prototype.Area$1=function(i){return this.Area(i.Pts)},c.Clipper.SimplifyPolygon=function(i,t){var e=new Array,r=new c.Clipper(0);return r.StrictlySimple=!0,r.AddPath(i,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,t,t),e},c.Clipper.SimplifyPolygons=function(i,t){typeof t>"u"&&(t=c.PolyFillType.pftEvenOdd);var e=new Array,r=new c.Clipper(0);return r.StrictlySimple=!0,r.AddPaths(i,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,t,t),e},c.Clipper.DistanceSqrd=function(i,t){var e=i.X-t.X,r=i.Y-t.Y;return e*e+r*r},c.Clipper.DistanceFromLineSqrd=function(i,t,e){var r=t.Y-e.Y,n=e.X-t.X,s=r*t.X+n*t.Y;return s=r*i.X+n*i.Y-s,s*s/(r*r+n*n)},c.Clipper.SlopesNearCollinear=function(i,t,e,r){return Math.abs(i.X-t.X)>Math.abs(i.Y-t.Y)?i.X>t.X==i.X<e.X?c.Clipper.DistanceFromLineSqrd(i,t,e)<r:t.X>i.X==t.X<e.X?c.Clipper.DistanceFromLineSqrd(t,i,e)<r:c.Clipper.DistanceFromLineSqrd(e,i,t)<r:i.Y>t.Y==i.Y<e.Y?c.Clipper.DistanceFromLineSqrd(i,t,e)<r:t.Y>i.Y==t.Y<e.Y?c.Clipper.DistanceFromLineSqrd(t,i,e)<r:c.Clipper.DistanceFromLineSqrd(e,i,t)<r},c.Clipper.PointsAreClose=function(i,t,e){var r=i.X-t.X,n=i.Y-t.Y;return r*r+n*n<=e},c.Clipper.ExcludeOp=function(i){var t=i.Prev;return t.Next=i.Next,i.Next.Prev=t,t.Idx=0,t},c.Clipper.CleanPolygon=function(i,t){typeof t>"u"&&(t=1.415);var e=i.length;if(e===0)return new Array;for(var r=new Array(e),n=0;n<e;++n)r[n]=new c.OutPt;for(var n=0;n<e;++n)r[n].Pt=i[n],r[n].Next=r[(n+1)%e],r[n].Next.Prev=r[n],r[n].Idx=0;for(var s=t*t,o=r[0];o.Idx===0&&o.Next!==o.Prev;)c.Clipper.PointsAreClose(o.Pt,o.Prev.Pt,s)?(o=c.Clipper.ExcludeOp(o),e--):c.Clipper.PointsAreClose(o.Prev.Pt,o.Next.Pt,s)?(c.Clipper.ExcludeOp(o.Next),o=c.Clipper.ExcludeOp(o),e-=2):c.Clipper.SlopesNearCollinear(o.Prev.Pt,o.Pt,o.Next.Pt,s)?(o=c.Clipper.ExcludeOp(o),e--):(o.Idx=1,o=o.Next);e<3&&(e=0);for(var a=new Array(e),n=0;n<e;++n)a[n]=new c.FPoint1(o.Pt),o=o.Next;return r=null,a},c.Clipper.CleanPolygons=function(i,t){for(var e=new Array(i.length),r=0,n=i.length;r<n;r++)e[r]=c.Clipper.CleanPolygon(i[r],t);return e},c.Clipper.Minkowski=function(i,t,e,r){var n=r?1:0,s=i.length,o=t.length,a=new Array;if(e)for(var h=0;h<o;h++){for(var l=new Array(s),u=0,f=i.length,p=i[u];u<f;u++,p=i[u])l[u]=new c.FPoint2(t[h].X+p.X,t[h].Y+p.Y);a.push(l)}else for(var h=0;h<o;h++){for(var l=new Array(s),u=0,f=i.length,p=i[u];u<f;u++,p=i[u])l[u]=new c.FPoint2(t[h].X-p.X,t[h].Y-p.Y);a.push(l)}for(var d=new Array,h=0;h<o-1+n;h++)for(var u=0;u<s;u++){var v=new Array;v.push(a[h%o][u%s]),v.push(a[(h+1)%o][u%s]),v.push(a[(h+1)%o][(u+1)%s]),v.push(a[h%o][(u+1)%s]),c.Clipper.Orientation(v)||v.reverse(),d.push(v)}return d},c.Clipper.MinkowskiSum=function(i,t,e){if(t[0]instanceof Array){for(var n=t,o=new c.Paths,s=new c.Clipper,a=0;a<n.length;++a){var h=c.Clipper.Minkowski(i,n[a],!0,e);if(s.AddPaths(h,c.PolyType.ptSubject,!0),e){var r=c.Clipper.TranslatePath(n[a],i[0]);s.AddPath(r,c.PolyType.ptClip,!0)}}return s.Execute(c.ClipType.ctUnion,o,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),o}else{var r=t,n=c.Clipper.Minkowski(i,r,!0,e),s=new c.Clipper;return s.AddPaths(n,c.PolyType.ptSubject,!0),s.Execute(c.ClipType.ctUnion,n,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),n}},c.Clipper.TranslatePath=function(i,t){for(var e=new c.Path,r=0;r<i.length;r++)e.push(new c.FPoint2(i[r].X+t.X,i[r].Y+t.Y));return e},c.Clipper.MinkowskiDiff=function(i,t){var e=c.Clipper.Minkowski(i,t,!1,!0),r=new c.Clipper;return r.AddPaths(e,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),e},c.Clipper.PolyTreeToPaths=function(i){var t=new Array;return c.Clipper.AddPolyNodeToPaths(i,c.Clipper.NodeType.ntAny,t),t},c.Clipper.AddPolyNodeToPaths=function(i,t,e){var r=!0;switch(t){case c.Clipper.NodeType.ntOpen:return;case c.Clipper.NodeType.ntClosed:r=!i.IsOpen;break}i.m_polygon.length>0&&r&&e.push(i.m_polygon);for(var n=0,s=i.Childs(),o=s.length,a=s[n];n<o;n++,a=s[n])c.Clipper.AddPolyNodeToPaths(a,t,e)},c.Clipper.OpenPathsFromPolyTree=function(i){for(var t=new c.Paths,e=0,r=i.ChildCount();e<r;e++)i.Childs()[e].IsOpen&&t.push(i.Childs()[e].m_polygon);return t},c.Clipper.ClosedPathsFromPolyTree=function(i){var t=new c.Paths;return c.Clipper.AddPolyNodeToPaths(i,c.Clipper.NodeType.ntClosed,t),t},Hs(c.Clipper,c.ClipperBase),c.Clipper.NodeType={ntAny:0,ntOpen:1,ntClosed:2},c.ClipperOffset=function(i,t){typeof i>"u"&&(i=2),typeof t>"u"&&(t=c.ClipperOffset.def_arc_tolerance),this.m_destPolys=new c.Paths,this.m_srcPoly=new c.Path,this.m_destPoly=new c.Path,this.m_normals=new Array,this.m_delta=0,this.m_sinA=0,this.m_sin=0,this.m_cos=0,this.m_miterLim=0,this.m_StepsPerRad=0,this.m_lowest=new c.FPoint0,this.m_polyNodes=new c.PolyNode,this.MiterLimit=i,this.ArcTolerance=t,this.m_lowest.X=-1},c.ClipperOffset.two_pi=6.28318530717959,c.ClipperOffset.def_arc_tolerance=.25,c.ClipperOffset.prototype.Clear=function(){c.Clear(this.m_polyNodes.Childs()),this.m_lowest.X=-1},c.ClipperOffset.prototype.AddPath=function(i,t,e){var r=i.length-1;if(!(r<0)){var n=new c.PolyNode;if(n.m_jointype=t,n.m_endtype=e,e===c.EndType.etClosedLine||e===c.EndType.etClosedPolygon)for(;r>0&&c.FPoint.op_Equality(i[0],i[r]);)r--;n.m_polygon.push(i[0]);for(var s=0,o=0,a=1;a<=r;a++)c.FPoint.op_Inequality(n.m_polygon[s],i[a])&&(s++,n.m_polygon.push(i[a]),(i[a].Y>n.m_polygon[o].Y||i[a].Y===n.m_polygon[o].Y&&i[a].X<n.m_polygon[o].X)&&(o=s));if(!(e===c.EndType.etClosedPolygon&&s<2)&&(this.m_polyNodes.AddChild(n),e===c.EndType.etClosedPolygon))if(this.m_lowest.X<0)this.m_lowest=new c.FPoint2(this.m_polyNodes.ChildCount()-1,o);else{var h=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y];(n.m_polygon[o].Y>h.Y||n.m_polygon[o].Y===h.Y&&n.m_polygon[o].X<h.X)&&(this.m_lowest=new c.FPoint2(this.m_polyNodes.ChildCount()-1,o))}}},c.ClipperOffset.prototype.AddPaths=function(i,t,e){for(var r=this,n=0,s=i.length;n<s;n++)r.AddPath(i[n],t,e)},c.ClipperOffset.prototype.FixOrientations=function(){var i=this;if(this.m_lowest.X>=0&&!c.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var t=0;t<this.m_polyNodes.ChildCount();t++){var e=i.m_polyNodes.Childs()[t];(e.m_endtype===c.EndType.etClosedPolygon||e.m_endtype===c.EndType.etClosedLine&&c.Clipper.Orientation(e.m_polygon))&&e.m_polygon.reverse()}else for(var t=0;t<this.m_polyNodes.ChildCount();t++){var e=i.m_polyNodes.Childs()[t];e.m_endtype===c.EndType.etClosedLine&&!c.Clipper.Orientation(e.m_polygon)&&e.m_polygon.reverse()}},c.ClipperOffset.GetUnitNormal=function(i,t){var e=t.X-i.X,r=t.Y-i.Y;if(e===0&&r===0)return new c.FPoint2(0,0);var n=1/Math.sqrt(e*e+r*r);return e*=n,r*=n,new c.FPoint2(r,-e)},c.ClipperOffset.prototype.DoOffset=function(i){var t=this;if(this.m_destPolys=new Array,this.m_delta=i,c.ClipperBase.near_zero(i)){for(var e=0;e<this.m_polyNodes.ChildCount();e++){var r=t.m_polyNodes.Childs()[e];r.m_endtype===c.EndType.etClosedPolygon&&t.m_destPolys.push(r.m_polygon)}return}this.MiterLimit>2?this.m_miterLim=2/(this.MiterLimit*this.MiterLimit):this.m_miterLim=.5;var n;this.ArcTolerance<=0?n=c.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(i)*c.ClipperOffset.def_arc_tolerance?n=Math.abs(i)*c.ClipperOffset.def_arc_tolerance:n=this.ArcTolerance;var s=3.14159265358979/Math.acos(1-n/Math.abs(i));this.m_sin=Math.sin(c.ClipperOffset.two_pi/s),this.m_cos=Math.cos(c.ClipperOffset.two_pi/s),this.m_StepsPerRad=s/c.ClipperOffset.two_pi,i<0&&(this.m_sin=-this.m_sin);for(var e=0;e<this.m_polyNodes.ChildCount();e++){var r=t.m_polyNodes.Childs()[e];t.m_srcPoly=r.m_polygon;var o=t.m_srcPoly.length;if(!(o===0||i<=0&&(o<3||r.m_endtype!==c.EndType.etClosedPolygon))){if(t.m_destPoly=new Array,o===1){if(r.m_jointype===c.JoinType.jtRound)for(var a=1,h=0,l=1;l<=s;l++){t.m_destPoly.push(new c.FPoint2(t.m_srcPoly[0].X+a*i,t.m_srcPoly[0].Y+h*i));var u=a;a=a*t.m_cos-t.m_sin*h,h=u*t.m_sin+h*t.m_cos}else for(var a=-1,h=-1,l=0;l<4;++l)t.m_destPoly.push(new c.FPoint2(t.m_srcPoly[0].X+a*i,t.m_srcPoly[0].Y+h*i)),a<0?a=1:h<0?h=1:a=-1;t.m_destPolys.push(t.m_destPoly);continue}t.m_normals.length=0;for(var l=0;l<o-1;l++)t.m_normals.push(c.ClipperOffset.GetUnitNormal(t.m_srcPoly[l],t.m_srcPoly[l+1]));if(r.m_endtype===c.EndType.etClosedLine||r.m_endtype===c.EndType.etClosedPolygon?t.m_normals.push(c.ClipperOffset.GetUnitNormal(t.m_srcPoly[o-1],t.m_srcPoly[0])):t.m_normals.push(new c.FPoint1(t.m_normals[o-2])),r.m_endtype===c.EndType.etClosedPolygon){for(var f=o-1,l=0;l<o;l++)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly)}else if(r.m_endtype===c.EndType.etClosedLine){for(var f=o-1,l=0;l<o;l++)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly),t.m_destPoly=new Array;for(var p=t.m_normals[o-1],l=o-1;l>0;l--)t.m_normals[l]=new c.FPoint2(-t.m_normals[l-1].X,-t.m_normals[l-1].Y);t.m_normals[0]=new c.FPoint2(-p.X,-p.Y),f=0;for(var l=o-1;l>=0;l--)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly)}else{for(var f=0,l=1;l<o-1;++l)f=t.OffsetPoint(l,f,r.m_jointype);var d;if(r.m_endtype===c.EndType.etOpenButt){var l=o-1;d=new c.FPoint2(t.m_srcPoly[l].X+t.m_normals[l].X*i,t.m_srcPoly[l].Y+t.m_normals[l].Y*i),t.m_destPoly.push(d),d=new c.FPoint2(t.m_srcPoly[l].X-t.m_normals[l].X*i,t.m_srcPoly[l].Y-t.m_normals[l].Y*i),t.m_destPoly.push(d)}else{var l=o-1;f=o-2,t.m_sinA=0,t.m_normals[l]=new c.FPoint2(-t.m_normals[l].X,-t.m_normals[l].Y),r.m_endtype===c.EndType.etOpenSquare?t.DoSquare(l,f):t.DoRound(l,f)}for(var l=o-1;l>0;l--)t.m_normals[l]=new c.FPoint2(-t.m_normals[l-1].X,-t.m_normals[l-1].Y);t.m_normals[0]=new c.FPoint2(-t.m_normals[1].X,-t.m_normals[1].Y),f=o-1;for(var l=f-1;l>0;--l)f=t.OffsetPoint(l,f,r.m_jointype);r.m_endtype===c.EndType.etOpenButt?(d=new c.FPoint2(t.m_srcPoly[0].X-t.m_normals[0].X*i,t.m_srcPoly[0].Y-t.m_normals[0].Y*i),t.m_destPoly.push(d),d=new c.FPoint2(t.m_srcPoly[0].X+t.m_normals[0].X*i,t.m_srcPoly[0].Y+t.m_normals[0].Y*i),t.m_destPoly.push(d)):(f=1,t.m_sinA=0,r.m_endtype===c.EndType.etOpenSquare?t.DoSquare(0,1):t.DoRound(0,1)),t.m_destPolys.push(t.m_destPoly)}}}},c.ClipperOffset.prototype.Execute=function(){var i=arguments,t=i[0]instanceof c.PolyTree;if(t){var e=i[0],r=i[1];e.Clear(),this.FixOrientations(),this.DoOffset(r);var n=new c.Clipper(0);if(n.AddPaths(this.m_destPolys,c.PolyType.ptSubject,!0),r>0)n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftPositive,c.PolyFillType.pftPositive);else{var s=c.Clipper.GetBounds(this.m_destPolys),o=new c.Path;if(o.push(new c.FPoint2(s.left-10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.top-10)),o.push(new c.FPoint2(s.left-10,s.top-10)),n.AddPath(o,c.PolyType.ptSubject,!0),n.ReverseSolution=!0,n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNegative,c.PolyFillType.pftNegative),e.ChildCount()===1&&e.Childs()[0].ChildCount()>0){var a=e.Childs()[0];e.Childs()[0]=a.Childs()[0],e.Childs()[0].m_Parent=e;for(var h=1;h<a.ChildCount();h++)e.AddChild(a.Childs()[h])}else e.Clear()}}else{var e=i[0],r=i[1];c.Clear(e),this.FixOrientations(),this.DoOffset(r);var n=new c.Clipper(0);if(n.AddPaths(this.m_destPolys,c.PolyType.ptSubject,!0),r>0)n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftPositive,c.PolyFillType.pftPositive);else{var s=c.Clipper.GetBounds(this.m_destPolys),o=new c.Path;o.push(new c.FPoint2(s.left-10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.top-10)),o.push(new c.FPoint2(s.left-10,s.top-10)),n.AddPath(o,c.PolyType.ptSubject,!0),n.ReverseSolution=!0,n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNegative,c.PolyFillType.pftNegative),e.length>0&&e.splice(0,1)}}},c.ClipperOffset.prototype.OffsetPoint=function(i,t,e){if(this.m_sinA=this.m_normals[t].X*this.m_normals[i].Y-this.m_normals[i].X*this.m_normals[t].Y,this.m_sinA===0)return t;if(this.m_sinA>1?this.m_sinA=1:this.m_sinA<-1&&(this.m_sinA=-1),this.m_sinA*this.m_delta<0)this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[t].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[t].Y*this.m_delta)),this.m_destPoly.push(new c.FPoint1(this.m_srcPoly[i])),this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[i].Y*this.m_delta));else switch(e){case c.JoinType.jtMiter:var r=1+(this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y);r>=this.m_miterLim?this.DoMiter(i,t,r):this.DoSquare(i,t);break;case c.JoinType.jtSquare:this.DoSquare(i,t);break;case c.JoinType.jtRound:this.DoRound(i,t);break}return t=i,t},c.ClipperOffset.prototype.DoSquare=function(i,t){var e=Math.tan(Math.atan2(this.m_sinA,this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y)/4);this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_delta*(this.m_normals[t].X-this.m_normals[t].Y*e),this.m_srcPoly[i].Y+this.m_delta*(this.m_normals[t].Y+this.m_normals[t].X*e))),this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_delta*(this.m_normals[i].X+this.m_normals[i].Y*e),this.m_srcPoly[i].Y+this.m_delta*(this.m_normals[i].Y-this.m_normals[i].X*e)))},c.ClipperOffset.prototype.DoMiter=function(i,t,e){var r=this.m_delta/e;this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+(this.m_normals[t].X+this.m_normals[i].X)*r,this.m_srcPoly[i].Y+(this.m_normals[t].Y+this.m_normals[i].Y)*r))},c.ClipperOffset.prototype.DoRound=function(i,t){for(var e=this,r=Math.atan2(this.m_sinA,this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y),n=Math.max(Math.round(this.m_StepsPerRad*Math.abs(r)),1),s=this.m_normals[t].X,o=this.m_normals[t].Y,a,h=0;h<n;++h)e.m_destPoly.push(new c.FPoint2(e.m_srcPoly[i].X+s*e.m_delta,e.m_srcPoly[i].Y+o*e.m_delta)),a=s,s=s*e.m_cos-e.m_sin*o,o=a*e.m_sin+o*e.m_cos;this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[i].Y*this.m_delta))},c.Error=function(i){try{throw new Error(i)}catch(t){alert(t.message)}},c.JS={},c.JS.AreaOfPolygon=function(i){return c.Clipper.Area(i)},c.JS.AreaOfPolygons=function(i){for(var t=0,e=0;e<i.length;e++)t+=c.Clipper.Area(i[e]);return t},c.JS.BoundsOfPath=function(i){return c.JS.BoundsOfPaths([i])},c.JS.BoundsOfPaths=function(i){var t=c.Clipper.GetBounds(i);return t},c.JS.Clean=function(r,t){if(!(r instanceof Array))return[];var e=r[0]instanceof Array,r=c.JS.Clone(r);if(typeof t!="number"||t===null)return c.Error("Delta is not a number in Clean()."),r;if(r.length===0||r.length===1&&r[0].length===0||t<0)return r;e||(r=[r]);for(var n=r.length,s,o,a,h,l,u,f,p=[],d=0;d<n;d++)if(o=r[d],s=o.length,s!==0){if(s<3){a=o,p.push(a);continue}for(a=o,h=t*t,l=o[0],u=1,f=1;f<s;f++)(o[f].X-l.X)*(o[f].X-l.X)+(o[f].Y-l.Y)*(o[f].Y-l.Y)<=h||(a[u]=o[f],l=o[f],u++);l=o[u-1],(o[0].X-l.X)*(o[0].X-l.X)+(o[0].Y-l.Y)*(o[0].Y-l.Y)<=h&&u--,u<s&&a.splice(u,s-u),a.length&&p.push(a)}return!e&&p.length?p=p[0]:!e&&p.length===0?p=[]:e&&p.length===0&&(p=[[]]),p},c.JS.Clone=function(i){if(!(i instanceof Array))return[];if(i.length===0)return[];if(i.length===1&&i[0].length===0)return[[]];var t=i[0]instanceof Array;t||(i=[i]);var e=i.length,r,n,s,o,a=new Array(e);for(n=0;n<e;n++){for(r=i[n].length,o=new Array(r),s=0;s<r;s++)o[s]={X:i[n][s].X,Y:i[n][s].Y};a[n]=o}return t||(a=a[0]),a},c.JS.Lighten=function(i,t){if(!(i instanceof Array))return[];if(typeof t!="number"||t===null)return c.Error("Tolerance is not a number in Lighten()."),c.JS.Clone(i);if(i.length===0||i.length===1&&i[0].length===0||t<0)return c.JS.Clone(i);var e=i[0]instanceof Array;e||(i=[i]);var r,n,s,o,a,h,l,u,f,p,d,v,m,y,g,w,_,b=i.length,x=t*t,P=[];for(r=0;r<b;r++)if(s=i[r],h=s.length,h!==0){for(o=0;o<1e6;o++){for(a=[],h=s.length,s[h-1].X!==s[0].X||s[h-1].Y!==s[0].Y?(v=1,s.push({X:s[0].X,Y:s[0].Y}),h=s.length):v=0,d=[],n=0;n<h-2;n++)l=s[n],f=s[n+1],u=s[n+2],w=l.X,_=l.Y,m=u.X-w,y=u.Y-_,(m!==0||y!==0)&&(g=((f.X-w)*m+(f.Y-_)*y)/(m*m+y*y),g>1?(w=u.X,_=u.Y):g>0&&(w+=m*g,_+=y*g)),m=f.X-w,y=f.Y-_,p=m*m+y*y,p<=x&&(d[n+1]=1,n++);for(a.push({X:s[0].X,Y:s[0].Y}),n=1;n<h-1;n++)d[n]||a.push({X:s[n].X,Y:s[n].Y});if(a.push({X:s[h-1].X,Y:s[h-1].Y}),v&&s.pop(),d.length)s=a;else break}h=a.length,a[h-1].X===a[0].X&&a[h-1].Y===a[0].Y&&a.pop(),a.length>2&&P.push(a)}return e||(P=P[0]),typeof P>"u"&&(P=[]),P},c.JS.PerimeterOfPath=function(i,t){if(typeof i>"u")return 0;var e=Math.sqrt,r=0,n,s,o=0,a=0,h=0,l=0,u=i.length;if(u<2)return 0;for(t&&(i[u]=i[0],u++);--u;)n=i[u],o=n.X,a=n.Y,s=i[u-1],h=s.X,l=s.Y,r+=e((o-h)*(o-h)+(a-l)*(a-l));return t&&i.pop(),r},c.JS.PerimeterOfPaths=function(i,t){for(var e=0,r=0;r<i.length;r++)e+=c.JS.PerimeterOfPath(i[r],t);return e},c.ExPolygons=function(){return[]},c.ExPolygon=function(){this.outer=null,this.holes=null},c.JS.AddOuterPolyNodeToExPolygons=function(i,t){var e=new c.ExPolygon;e.outer=i.Contour();var r=i.Childs(),n=r.length;e.holes=new Array(n);var s,o,a,h,l,u;for(a=0;a<n;a++)for(s=r[a],e.holes[a]=s.Contour(),h=0,l=s.Childs(),u=l.length;h<u;h++)o=l[h],c.JS.AddOuterPolyNodeToExPolygons(o,t);t.push(e)},c.JS.ExPolygonsToPaths=function(i){var t,e,r,n,s=new c.Paths;for(t=0,r=i.length;t<r;t++)for(s.push(i[t].outer),e=0,n=i[t].holes.length;e<n;e++)s.push(i[t].holes[e]);return s},c.JS.PolyTreeToExPolygons=function(i){var t=new c.ExPolygons,e,r,n,s;for(r=0,n=i.Childs(),s=n.length;r<s;r++)e=n[r],c.JS.AddOuterPolyNodeToExPolygons(e,t);return t};var _c=c,k=Ie(_c),Xr={exports:{}};class xc{constructor(t=[],e=wc){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const s=t-1>>1,o=e[s];if(r(n,o)>=0)break;e[t]=o,t=s}e[t]=n}_down(t){const{data:e,compare:r}=this,n=this.length>>1,s=e[t];for(;t<n;){let o=(t<<1)+1,a=e[o];const h=o+1;if(h<this.length&&r(e[h],a)<0&&(o=h,a=e[h]),r(a,s)>=0)break;e[t]=a,t=o}e[t]=s}}function wc(i,t){return i<t?-1:i>t?1:0}var Pc=Object.freeze({__proto__:null,default:xc}),bc=Ih(Pc),Ri=bc;Ri.default&&(Ri=Ri.default),Xr.exports=Ws,Xr.exports.default=Ws;function Ws(i,t,e){t=t||1;for(var r,n,s,o,a=0;a<i[0].length;a++){var h=i[0][a];(!a||h[0]<r)&&(r=h[0]),(!a||h[1]<n)&&(n=h[1]),(!a||h[0]>s)&&(s=h[0]),(!a||h[1]>o)&&(o=h[1])}var l=s-r,u=o-n,f=Math.min(l,u),p=f/2;if(f===0){var d=[r,n];return d.distance=0,d}for(var v=new Ri(void 0,Tc),m=r;m<s;m+=f)for(var y=n;y<o;y+=f)v.push(new Qt(m+p,y+p,p,i));var g=Ic(i),w=new Qt(r+l/2,n+u/2,0,i);w.d>g.d&&(g=w);for(var _=v.length;v.length;){var b=v.pop();b.d>g.d&&(g=b,e&&console.log("found best %d after %d probes",Math.round(1e4*b.d)/1e4,_)),!(b.max-g.d<=t)&&(p=b.h/2,v.push(new Qt(b.x-p,b.y-p,p,i)),v.push(new Qt(b.x+p,b.y-p,p,i)),v.push(new Qt(b.x-p,b.y+p,p,i)),v.push(new Qt(b.x+p,b.y+p,p,i)),_+=4)}e&&(console.log("num probes: "+_),console.log("best distance: "+g.d));var x=[g.x,g.y];return x.distance=g.d,x}function Tc(i,t){return t.max-i.max}function Qt(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=Cc(i,t,r),this.max=this.d+this.h*Math.SQRT2}function Cc(i,t,e){for(var r=!1,n=1/0,s=0;s<e.length;s++)for(var o=e[s],a=0,h=o.length,l=h-1;a<h;l=a++){var u=o[a],f=o[l];u[1]>t!=f[1]>t&&i<(f[0]-u[0])*(t-u[1])/(f[1]-u[1])+u[0]&&(r=!r),n=Math.min(n,Ec(i,t,u,f))}return n===0?0:(r?1:-1)*Math.sqrt(n)}function Ic(i){for(var t=0,e=0,r=0,n=i[0],s=0,o=n.length,a=o-1;s<o;a=s++){var h=n[s],l=n[a],u=h[0]*l[1]-l[0]*h[1];e+=(h[0]+l[0])*u,r+=(h[1]+l[1])*u,t+=u*3}return t===0?new Qt(n[0][0],n[0][1],0,i):new Qt(e/t,r/t,0,i)}function Ec(i,t,e,r){var n=e[0],s=e[1],o=r[0]-n,a=r[1]-s;if(o!==0||a!==0){var h=((i-n)*o+(t-s)*a)/(o*o+a*a);h>1?(n=r[0],s=r[1]):h>0&&(n+=o*h,s+=a*h)}return o=i-n,a=t-s,o*o+a*a}var Sc=Xr.exports,Ac=Ie(Sc),Qe=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var i=0,t=arguments.length;t--;)i+=arguments[t]*arguments[t];return Math.sqrt(i)});function zs(){var i=new Qe(6);return Qe!=Float32Array&&(i[1]=0,i[2]=0,i[4]=0,i[5]=0),i[0]=1,i[3]=1,i}function Oc(i,t,e){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],h=t[5],l=Math.sin(e),u=Math.cos(e);return i[0]=r*u+s*l,i[1]=n*u+o*l,i[2]=r*-l+s*u,i[3]=n*-l+o*u,i[4]=a,i[5]=h,i}function Lc(i,t,e){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],h=t[5],l=e[0],u=e[1];return i[0]=r,i[1]=n,i[2]=s,i[3]=o,i[4]=r*l+s*u+a,i[5]=n*l+o*u+h,i}function Mc(i,t){var e=Math.sin(t),r=Math.cos(t);return i[0]=r,i[1]=e,i[2]=-e,i[3]=r,i[4]=0,i[5]=0,i}function Nc(i,t){return i[0]=1,i[1]=0,i[2]=0,i[3]=1,i[4]=t[0],i[5]=t[1],i}function Di(){var i=new Qe(2);return Qe!=Float32Array&&(i[0]=0,i[1]=0),i}function Bi(i,t){var e=new Qe(2);return e[0]=i,e[1]=t,e}function Fc(i,t){return i[0]=-t[0],i[1]=-t[1],i}function $s(i,t,e){var r=t[0],n=t[1];return i[0]=e[0]*r+e[2]*n+e[4],i[1]=e[1]*r+e[3]*n+e[5],i}(function(){var i=Di();return function(t,e,r,n,s,o){var a,h;for(e||(e=2),r||(r=0),n?h=Math.min(n*e+r,t.length):h=t.length,a=r;a<h;a+=e)i[0]=t[a],i[1]=t[a+1],s(i,i,o),t[a]=i[0],t[a+1]=i[1];return t}})();var Vs={exports:{}};function Gr(){}Gr.prototype={on:function(i,t,e){var r=this.e||(this.e={});return(r[i]||(r[i]=[])).push({fn:t,ctx:e}),this},once:function(i,t,e){var r=this;function n(){r.off(i,n),t.apply(e,arguments)}return n._=t,this.on(i,n,e)},emit:function(i){var t=[].slice.call(arguments,1),e=((this.e||(this.e={}))[i]||[]).slice(),r=0,n=e.length;for(r;r<n;r++)e[r].fn.apply(e[r].ctx,t);return this},off:function(i,t){var e=this.e||(this.e={}),r=e[i],n=[];if(r&&t)for(var s=0,o=r.length;s<o;s++)r[s].fn!==t&&r[s].fn._!==t&&n.push(r[s]);return n.length?e[i]=n:delete e[i],this}},Vs.exports=Gr;var Yr=Vs.exports.TinyEmitter=Gr,js={exports:{}};(function(i,t){var e=function(){var r={},n=Math.PI/180,s=180/Math.PI,o=6378137,a=20037508342789244e-9;function h(u){return Number(u)===u&&u%1!==0}function l(u){if(u=u||{},this.size=u.size||256,this.expansion=u.antimeridian===!0?2:1,!r[this.size]){var f=this.size,p=r[this.size]={};p.Bc=[],p.Cc=[],p.zc=[],p.Ac=[];for(var d=0;d<30;d++)p.Bc.push(f/360),p.Cc.push(f/(2*Math.PI)),p.zc.push(f/2),p.Ac.push(f),f*=2}this.Bc=r[this.size].Bc,this.Cc=r[this.size].Cc,this.zc=r[this.size].zc,this.Ac=r[this.size].Ac}return l.prototype.px=function(u,f){if(h(f)){var p=this.size*Math.pow(2,f),d=p/2,v=p/360,m=p/(2*Math.PI),y=p,g=Math.min(Math.max(Math.sin(n*u[1]),-.9999),.9999),w=d+u[0]*v,_=d+.5*Math.log((1+g)/(1-g))*-m;return w>y*this.expansion&&(w=y*this.expansion),_>y&&(_=y),[w,_]}else{var d=this.zc[f],g=Math.min(Math.max(Math.sin(n*u[1]),-.9999),.9999),w=Math.round(d+u[0]*this.Bc[f]),_=Math.round(d+.5*Math.log((1+g)/(1-g))*-this.Cc[f]);return w>this.Ac[f]*this.expansion&&(w=this.Ac[f]*this.expansion),_>this.Ac[f]&&(_=this.Ac[f]),[w,_]}},l.prototype.ll=function(u,f){if(h(f)){var p=this.size*Math.pow(2,f),d=p/360,v=p/(2*Math.PI),m=p/2,y=(u[1]-m)/-v,g=(u[0]-m)/d,w=s*(2*Math.atan(Math.exp(y))-.5*Math.PI);return[g,w]}else{var y=(u[1]-this.zc[f])/-this.Cc[f],g=(u[0]-this.zc[f])/this.Bc[f],w=s*(2*Math.atan(Math.exp(y))-.5*Math.PI);return[g,w]}},l.prototype.bbox=function(u,f,p,d,v){d&&(f=Math.pow(2,p)-1-f);var m=[u*this.size,(+f+1)*this.size],y=[(+u+1)*this.size,f*this.size],g=this.ll(m,p).concat(this.ll(y,p));return v==="900913"?this.convert(g,"900913"):g},l.prototype.xyz=function(u,f,p,d){d==="900913"&&(u=this.convert(u,"WGS84"));var v=[u[0],u[1]],m=[u[2],u[3]],y=this.px(v,f),g=this.px(m,f),w=[Math.floor(y[0]/this.size),Math.floor((g[0]-1)/this.size)],_=[Math.floor(g[1]/this.size),Math.floor((y[1]-1)/this.size)],b={minX:Math.min.apply(Math,w)<0?0:Math.min.apply(Math,w),minY:Math.min.apply(Math,_)<0?0:Math.min.apply(Math,_),maxX:Math.max.apply(Math,w),maxY:Math.max.apply(Math,_)};if(p){var x={minY:Math.pow(2,f)-1-b.maxY,maxY:Math.pow(2,f)-1-b.minY};b.minY=x.minY,b.maxY=x.maxY}return b},l.prototype.convert=function(u,f){return f==="900913"?this.forward(u.slice(0,2)).concat(this.forward(u.slice(2,4))):this.inverse(u.slice(0,2)).concat(this.inverse(u.slice(2,4)))},l.prototype.forward=function(u){var f=[o*u[0]*n,o*Math.log(Math.tan(Math.PI*.25+.5*u[1]*n))];return f[0]>a&&(f[0]=a),f[0]<-a&&(f[0]=-a),f[1]>a&&(f[1]=a),f[1]<-a&&(f[1]=-a),f},l.prototype.inverse=function(u){return[u[0]*s/o,(Math.PI*.5-2*Math.atan(Math.exp(-u[1]/o)))*s]},l}();i.exports=e})(js);var Rc=js.exports,Dc=Ie(Rc);function qs(i,t){t||(t={x:0,z:0});const e=kc(t,i);return Math.sqrt(e.x*e.x+e.z*e.z)}function Zs(i){const t=qs(i);return{x:i.x/t,z:i.z/t}}function Bc(i,t){return i||(i={x:0,z:0}),Uc(Math.atan2(-t.z+i.z,t.x-i.x)*180/Math.PI,2)}function kc(i,t){return{x:i.x-t.x,z:i.z-t.z}}function Uc(i,t=0){const e=Math.pow(10,t);return Math.round(i*e)/e}function ki(i){const t=St(i),e=k.Clipper.GetBounds(t);return{x:e.left,x2:e.right,z:e.top,z2:e.bottom,length:e.right-e.left,width:e.bottom-e.top}}function Hr(i){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Union failed, empty Array")}else throw new Error("Union failed, input not Array");const t=St(i),e=[t[0]],r=t.slice(1),n=new k.Clipper;n.AddPaths(e,k.PolyType.ptSubject,!0),n.AddPaths(r,k.PolyType.ptClip,!0);var s=new k.Paths;return n.Execute(k.ClipType.ctUnion,s,k.PolyFillType.pftNonZero,k.PolyFillType.pftNonZero),ei(s)}function Ke(i,t=.1,e,r){if(e===void 0&&(e=k.EndType.etClosedPolygon),i=r?i:Qs(i),!i.length||!i[0].length)return[];t=t&&typeof t=="number"?t:.1;const n=St(i),s=new k.ClipperOffset(2),o=new k.Paths;return s.AddPaths(n,k.JoinType.jtMiter,e),s.Execute(o,t),ei(o)}function Xc(i,t,e,r){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Difference failed, empty Array")}else throw new Error("Difference failed, input not Array");const n=St(i),s=St(e?Ke(t,e):t),o=new k.Clipper;o.AddPaths(n,k.PolyType.ptSubject,!r),o.AddPaths(s,k.PolyType.ptClip,!0);var a=r?new k.PolyTree:new k.Paths;o.Execute(k.ClipType.ctDifference,a,k.PolyFillType.pftNonZero,k.PolyFillType.pftNonZero);var h=r?k.Clipper.PolyTreeToPaths(a):a;return ei(h)}function Js(i=[],t=[],e=!1){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Intersection failed, empty Array")}else throw new Error("Intersection failed, input not Array");const r=St(i),n=t.length&&St(t),s=n?r:[r[0]],o=n||r.slice(1),a=new k.Clipper;a.AddPaths(s,k.PolyType.ptSubject,!e),a.AddPaths(o,k.PolyType.ptClip,!0);var h=k.PolyFillType.pftNonZero,l=k.PolyFillType.pftNonZero,u=k.ClipType.ctIntersection,f=e?new k.PolyTree:new k.Paths;a.Execute(u,f,h,l);var p=e?k.Clipper.PolyTreeToPaths(f):f;return ei(p)}function Fe(i,t,e=[]){const r=new k.FPoint(i[0],i[1]),n=St([t])[0];let s=k.Clipper.PointInPolygon(r,n);return e.forEach(o=>{let a=Fe(i,o);a===1?s=0:a===-1&&(s=-1)}),s}function le(i){let t=St([i]);return k.JS.AreaOfPolygon(t[0])}function ti(i){return Math.abs(le(i))}function Qs(i,t=.01){let e=St(i);const r=k.Clipper.CleanPolygons(e,t);return ei(r)}function Ks(i,t=.01){return Qs([i],t)[0]}function St(i=[]){let t=[];for(var e=0;e<i.length;e++){var r=i[e]||[];t[e]=[];for(var n=0;n<r.length;n++){var s=r[n];Number.isFinite(s[0])&&Number.isFinite(s[1])?t[e][n]={X:s[0],Y:s[1]}:console.warn("invalid number",s[0],s[1])}}const o=[];for(const a of t)a.length?o.push(a):console.warn("empty polygon");if(!o.length)throw new Error("empty polygon invalid input");return o}function ei(i){let t=[];for(var e=0;e<i.length;e++){var r=i[e]||[];t[e]=[];for(var n=0;n<r.length;n++){var s=r[n];t[e][n]=[s.X,s.Y]}}return t}function Gc(i){let t=[1/0,1/0],e=[-1/0,-1/0];return i.forEach(r=>{r[0]<t[0]&&(t[0]=r[0]),r[1]<t[1]&&(t[1]=r[1]),r[0]>e[0]&&(e[0]=r[0]),r[1]>e[1]&&(e[1]=r[1])}),{min:t,max:e}}function Yc(i,t=!0){let e=0;const r=t?i.length:i.length-1;for(var n=0;n<r;n++){let s={x:i[n][0],z:i[n][1]},o={x:i[n<i.length-1?n+1:0][0],z:i[n<i.length-1?n+1:0][1]};e+=qs(s,o)}return e}function Hc(i){const{min:t,max:e}=Gc(i);return[t[0]+(e[0]-t[0])/2,t[1]+(e[1]-t[1])/2]}function to(i,t=[]){return ti(i)<.1?Hc(i):Ac([i,...t],.1)}function Wr(i,t,e=!1){let r=0,n=t.x,s=t.z;if(t.controlLine&&t.w&&(r=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),r){let v=t.ry/180*Math.PI;n-=r*Math.sin(v),s-=r*Math.cos(v)}const o=i.ry||0,a=t.ry||0,h=Bi(i.x,i.z),l=Bi(n,s),u=-a*Math.PI/180;let f=zs(),p=Di();Nc(f,l),Oc(f,f,u),$s(p,h,f);const d={x:p[0],z:p[1],y:i.y+t.y||0,ry:o+a};return e?Object.assign(i,d):Object.assign({},i,d)}function Wc(i,t,e=!1){let r=0,n=t.x,s=t.z;if(t.controlLine&&t.w&&(r=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),r){let m=t.ry/180*Math.PI;n-=r*Math.sin(m),s-=r*Math.cos(m)}const o=i.ry||0,a=t.ry||0,h=Bi(i.x,i.z),l=Bi(n,s),u=a*Math.PI/180;let f=zs(),p=Di(),d=Di();Fc(d,l),Mc(f,u),Lc(f,f,d),$s(p,h,f);const v={x:p[0],z:p[1],y:i.y-t.y||0,ry:o-a};return e?Object.assign(i,v):Object.assign({},i,v)}function zc(i){if(typeof i!="object")throw new Error("Get el data, invalid type");let{x:t,z:e,l:r,ry:n}={...i},s=i.type==="a:helper:spaceDivider";if(!s&&!Number.isFinite(i.w)||!Number.isFinite(r)||!Number.isFinite(t)||!Number.isFinite(e)){let x={type:i.type,id:i.id,x:t,z:e,l:r,ry:n,w:i.w};throw new Error(`Get el vectors, params missing ${JSON.stringify(x)}`)}let o,a,h,l,u,f,p,d,v,m,y,g,w,_,b;return o=n/180*Math.PI,a=i.barCounter?i.w+.25:i.w,s&&(a=0),u={x:a*Math.sin(o),z:a*Math.cos(o)},f=s?u:Zs(u),p={x:r*Math.cos(o),z:-r*Math.sin(o)},d=Zs(p),h=i.barCounter?t+f.x*-.25:t,l=i.barCounter?e+f.z*-.25:e,b=0,i.controlLine==="front"?b=-i.w:i.controlLine==="center"&&(b=-i.w/2),w={x:h,z:l},_={x:h+p.x,z:l+p.z},v={x:w.x+f.x*b,z:w.z+f.z*b},m={x:v.x+p.x,z:v.z+p.z},y={x:v.x+u.x,z:v.z+u.z},g={x:m.x+u.x,z:m.z+u.z},{l1:w,l2:_,p1:v,p2:m,p3:y,p4:g,w:u,l:p,nW:f,nL:d}}function $c(i){if(i.type!=="column")return;let t=[];if(i.shape==="square"){let e=i.l/2;t=[[-e,-e],[e,-e],[e,e],[-e,e]],t=At(i,t)}else if(i.shape==="circle"){const e=Math.PI*2/25;let r=0,n=i.l/2;for(let s=0;s<25;s++)t.push([i.x-n*Math.cos(r),i.z+n*Math.sin(r)]),r+=e}else i.shape==="polygon"&&(t=At(i,i.polygon));return t}function zr(i){let t,e,r;return i.type==="column"?e=$c(i):(t=zc(i),i.type==="a:helper:spaceDivider"?r=[t.l1,t.l2]:r=[t.p1,t.p2,t.p4,t.p3],e=r.map(n=>[n.x,n.z])),e}function At(i,t){return t.map(e=>{let r=Wr({x:e[0],z:e[1]},i);return[r.x,r.z]})}const $r=(i,t={})=>{let e={};const r=t.keepTransient;return Object.keys(i).forEach(n=>{let s=n.slice(0,1)==="_";if(n==="_ryOrg"){e.ry=i[n];return}else{if(s&&!r||i[n]===null||i[n]===void 0)return;n!=="children"&&(e[n]=i[n])}}),i.children?e.children=i.children.map(n=>$r(n,t)):e.children=[],e};function Vc(i,t){const e=[],r=i.map(ti),n=t.map(ti);for(let o=0;o<i.length;o++){let a=i[o];for(let h=0;h<t.length;h++)if(r[o]>n[h]+.1&&Fe(t[h][0],a))if(e[h]){const l=r[e[h]],u=r[o];l>u&&(e[h]=o)}else e[h]=o}const s=[];return e.forEach((o,a)=>{s[o]||(s[o]=[]),s[o].push(t[a])}),s}function jc(i){let t=i.filter(r=>le(r)>0),e=i.filter(r=>le(r)<0);return{counterClockwise:t,clockwise:e}}function qc(i){let t=[...i];return le(t)<0?t:t.reverse()}function Zc(i){let t=[...i];return le(t)>0?t:t.reverse()}function eo({uuid:i,scene:t,node:e}){if(e=e||t.nodesById[i],!e)return[];let r=e.getWorldPosition();if(!r.polygon||!r.polygon.length)throw new Error("Invalid space"+JSON.stringify(r,null,2));let n=Zc(r.polygon);if(n=Ks(n),!n||!n.length)return[];let s=r.polygonHoles||[];s=s.map(h=>{let l=qc(h);return Ks(l)}).filter(h=>h.length),s=s.filter(h=>h.length);let o=At(r,n),a=s.map(h=>At(r,h));return[o,...a]}function Jc(i){let t=$r(i);return Pe(t)}function io(i,t="",e=!1,r,n){const s={"a:helper:spaceDivider":["plan","level","group"],wall:["plan","level","group"],interior:["plan","level","interior","group","level"],window:["plan","level","wall"],door:["plan","level","wall"],polyfloor:["plan","level"],group:["plan","level","group"]};let o=e?Jc(i):i;var a=[],h;if(e&&r&&(o=Wr(o,r)),!n&&o.type===t)a.push(o);else if(n&&o.id===n)return[o];let l=0;if(o.children&&(!s[t]||s[t].includes(o.type)))for(var u=0;u<o.children.length;u++){const f=o.children[u];f.type==="level"&&l++,!(l>1)&&(h=io(f,t,e,o,n),a=a.concat(h))}return a}function ro(i,t){return io(i,t,!0)}const Ui=["a:helper:spaceDivider","a:reference:externalId","a:reference:ifcElement","a:reference:ifcFile","a:relation:wall","a:settings:display","a:settings:generatedGroup","box","camera-bookmark","closet","column","curtain","door","floor","floorplan","floorplanDxf","group","interior","kitchen","level","object","pic","plan","polybox","polyfloor","railing","stairs","tag","wall","window"],no=()=>Ui.reduce((i,t)=>({...i,[t]:[]}),{}),so=(i,t)=>{if(!t||!t.properties){console.warn(`schema is missing for type ${i}`);return}const e={};return Object.keys(t.properties).forEach(r=>{const n=t.properties[r],s=n.const||n.default;s!==void 0&&(e[r]=s)}),i==="interior"&&!e.src&&(e.src="!7dddc882-1def-4497-80e3-d1de834a1a7b"),Pe(e)};function Qc(i,t={}){const e=oo(i,{});return ho(i,null,null,e),t.exportIdMap&&(i.idMap=e),i}function oo(i,t){return i.id!==void 0&&(t[i.id]=se()),i.children.forEach(e=>oo(e,t)),t}const ao=i=>Object.prototype.toString.call(i)==="[object Object]",Kc=i=>Object.prototype.toString.call(i)==="[object Array]";function ho(i,t,e,r){typeof i=="string"?(t!==void 0&&e!==void 0&&r[i]&&(t[e]=r[i]),typeof e=="string"&&t!==void 0&&e!==void 0&&r[e]&&(t[r[e]]=i,delete t[e])):(ao(i)||Kc(i))&&(ao(i)&&i.type&&i.id===void 0&&(i.id=se()),Object.entries(i).forEach(([n,s])=>ho(s,i,n,r)))}const tp={properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"},ry:{type:"number"},id:{type:"string"}}},ep=(i,t,e,r)=>{let n=e;if(typeof e=="string"&&(n=Number(n),console.log(i.type+"."+t,"converted from string to number")),!Number.isFinite(n))throw new Error(`${i.type}.${t} = ${e} is invalid`);const{minimum:s,maximum:o}=r,a=Number.isFinite(s)&&n<s,h=Number.isFinite(o)&&n>o;if(a||h){let l=a?"min:"+s:"max:"+o;throw new Error(`${i.type}.${t} = ${n} is out of range ${l}`)}return n},ip=(i,t,e,r)=>{if(typeof e!="string")throw new Error(`${i.type}.${t} = '${e}' is invalid`);if(r.enum&&!r.enum.includes(e))throw new Error(`${i.type}.${t} = '${e}' is invalid`);return e},rp=(i,t,e,r)=>r.type==="number"?ep(i,t,e,r):r.type==="string"?ip(i,t,e,r):e,lo=(i,t,e)=>{const{properties:r}=e||tp;for(const n in t){const s=r?.[n],o=e&&!s,a=n.startsWith("_");if(o&&!a){delete t[n];continue}i[n]=rp(i,n,t[n],s||{type:void 0}),a&&!i[n]&&delete i[n]}return i};function np({uuid:i,polygons:t,scene:e,interiors:r}){let n;t&&t.length?n=t:n=eo({uuid:i,scene:e});let s=n[0],o=n.slice(1);return s=Ke([s],.05)[0],r||(r=e.nodesByType.interior.map(a=>a.getWorldPosition())),{interiors:r.filter(a=>{if(!(!a.src||!a.x||!a.z))return Fe([a.x,a.z],s,o)})}}const sp=i=>{var t;return((t=i.src)==null?void 0:t.substring(1))||""},uo={colorDiffuse:{type:"array"},colorSpecular:{type:"array"},wireframeColor:{type:"array"},size:{type:"array"},specularCoef:{type:"number"},opacity:{type:"number"},wireframeOpacity:{type:"number"},wireframeThickness:{type:"number"},wireframeThresholdAngle:{type:"number"},lightEmissionCoef:{type:"number"},bsdfType:{type:"string"},wrap:{type:"string"},receiveRealTimeShadows:{type:"boolean"},hideAfterBaking:{type:"boolean"},castRealTimeShadows:{type:"boolean"},no2dOutline:{type:"boolean"},mapDiffuse:{type:"string"},mapDiffusePreview:{type:"string"},mapDiffuseSource:{type:"string"},mapDiffuseKey:{type:"string"},mapSpecular:{type:"string"},mapSpecularPreview:{type:"string"},mapSpecularSource:{type:"string"},mapSpecularKey:{type:"string"},mapNormal:{type:"string"},mapNormalPreview:{type:"string"},mapNormalSource:{type:"string"},mapNormalKey:{type:"string"},mapAlpha:{type:"string"},mapAlphaPreview:{type:"string"},mapAlphaSource:{type:"string"},mapAlphaKey:{type:"string"}},fo=i=>{let t=typeof i;return i===null?"null":t==="object"&&Array.isArray(i)?"array":t==="number"&&!Number.isFinite(i)?"undefined":t},op=Object.keys(uo),ap=i=>{const t=fo(i),e=t==="string",r=t==="object"&&Object.keys(i).every(n=>{var s;const o=op.includes(n),a=o&&fo(i[n])===((s=uo[n])==null?void 0:s.type);return o&&a});return e||r};function co(i,t){let e=hp(i.materials,t?.colours);return e&&po(i.materials[e])}function po(i){return!i||typeof i!="string"?"":i.toLowerCase().replace(/[()+&!?;,:_)]/g,"").replace(/\s+/g,"-")}function hp(i={},t=[]){let e=t?.length&&t[0].split(":")[0],r=Object.keys(i);return e&&e!=="default"&&(r=r.filter(n=>n===e)),r.length===1?r[0]:r.filter(n=>!n.toLowerCase().includes("base"))[0]}function lp(i,t){let e=sp(i),r=co(i,t);return r?r="_"+r:r="",e+r}const up={group:"a:settings:generatedGroup"};class fp{}class mi extends fp{constructor({node:t,parent:e,scene:r,emitter:n,options:s={}}){var o;if(super(),typeof t!="object")throw new Error("node has to be type object: "+t);if(!t.type)throw new Error("node invalid, type is missing: "+JSON.stringify(t));s.setDefaults===void 0&&(s.setDefaults=!1),s.regenerateIds===void 0&&(s.regenerateIds=!1),this._scene=r,this._emitter=n;const a=t.children||[];t.children=[],!t.id||s.setDefaults||s.regenerateIds?this._update(cp(t,this.schema,s)):this._update(t),this._parent=e,e&&e.children.push(this),(o=this._scene)!=null&&o.registerNode&&this._scene.registerNode(this);const h="add-child";this._emitter&&this._emitter.emit(h,{node:e,args:this,options:s,event:h}),a.filter(l=>(l.type||console.warn("Prevent import from scene structure: Invalid type",l.type+""),l.type)).forEach(l=>this.addChild(l,s))}get parent(){return this._parent}get scene(){return this._scene}get schema(){var t;return(t=this._scene)==null?void 0:t.schema}_update(t={}){var e,r;lo(this,t,(r=(e=this._scene)==null?void 0:e.schema)==null?void 0:r[this.type])}set(t={},e={}){if(this.locked&&!e.force){let n=[];for(let s in t)switch(s){case"locked":case"_highlight":case"_isSelected":n.push(s)}if(n.length>0){let s={};for(const o of n)s[o]=t[o];t=s}else{console.log(`Node ID ${this.id} is locked and cannot be altered.`);return}}t.id&&delete t.id,t.src&&delete t.src,t.children&&delete t.children;let r={};for(let n in t)r[n]=this[n];try{this._update(t)}catch(n){console.warn(n.message);return}if(this._emitter){let n=0,s=0;for(let a in t)switch(t[a]===r[a]&&(delete t[a],delete r[a]),n++,a){case"x":case"y":case"z":case"ry":s++;break}const o=s===n?"set-transform":"set";Object.keys(t).length&&this._emitter.emit(o,{node:this,args:t,prevState:r,options:e,event:o})}}setTransform({x:t,y:e,z:r,ry:n}={},s={}){if(this.locked&&!s.force){console.log(`Node ID ${this.id} is locked and cannot be altered.`);return}let o={},a={};if(t!==void 0){let l=Number(t);this.x!==l&&Number.isFinite(l)&&(a.x=this.x,o.x=this.x=l)}if(e!==void 0){let l=Number(e);this.y!==l&&Number.isFinite(l)&&(a.y=this.y,o.y=this.y=l)}if(r!==void 0){let l=Number(r);this.z!==l&&Number.isFinite(l)&&(a.z=this.z,o.z=this.z=l)}if(n!==void 0){let l=Number(n);this.ry!==l&&Number.isFinite(l)&&(a.ry=this.ry,o.ry=this.ry=l)}const h="set-transform";this._emitter&&Object.keys(o).length&&this._emitter.emit(h,{node:this,args:o,prevState:a,options:s,event:h})}setMaterials(t={},e={}){if(this.locked&&!e.force){console.log(`Node ID ${this.id} is locked and cannot set materials.`);return}let r=0,n={};for(let a in t){const h=t[a];ap(h)&&(n[a]=(this.materials||{})[a],t[a],r++)}if(r<1){console.log("no valid material definitions in",t);return}const s={...this.materials||{},...t};try{this._update({materials:s})}catch(a){console.warn(a.message);return}const o="set-materials";this._emitter&&this._emitter.emit(o,{node:this,args:t,prevState:n,options:e,event:o})}setTransient(t={},e={}){let r={},n=0,s={};for(let a in t)a[0]==="_"&&(s[a]=this[a],r[a]=t[a],n++);if(n<1){console.log("no transient values in",t,"use underscore");return}try{this._update({...r})}catch(a){console.warn(a.message);return}const o="set-transient";this._emitter&&this._emitter.emit(o,{node:this,args:t,prevState:s,options:e,event:o})}setHighlight(t={},e={}){let r={_highlight:this._highlight};const{fill:n,fillOpacity:s,outline:o,outlineWidth:a}=t;let h;n&&Array.isArray(n)&&(h={fill:n,fillOpacity:s}),o&&Array.isArray(o)&&(h={...h||{},outline:o,outlineWidth:a});const l={_highlight:h};try{this._update(l)}catch(f){console.warn(f.message);return}const u="set-transient";this._emitter&&this._emitter.emit(u,{node:this,args:l,prevState:r,options:e,event:u})}find(t={}){if(!t.id&&(!t.type||typeof t.type!="string"||!Ui.includes(t.type)))return console.warn("type missing or invalid"),null;let e;return this.traverse(r=>{e||(t.id&&r.id===t.id||t.type&&r.type===t.type)&&(e=r)}),e}findAll(t={}){if(!t.type||typeof t.type!="string"||!Ui.includes(t.type))return console.warn("type missing or invalid"),[];let e=[];return this.traverse(r=>r.type===t.type&&e.push(r)),e}addChild(t,e={}){var r,n,s;if(!t.type||typeof t.type!="string"||!Ui.includes(t.type)){console.warn("type missing or invalid");return}else if(this.locked&&!["level","plan"].includes(this.type)&&!e.force){console.log(`Node ID ${this.id} is locked and cannot add children.`);return}if(t.id&&(n=(r=this.scene)==null?void 0:r.nodesById)!=null&&n[t.id]&&!e.regenerateIds){console.warn(`Node with id ${t.id} already exists and can not be added - use options.regenerateIds = true`);return}const o=e.setDefaults!==!1;let a;if(o){const h=(s=this.schema)==null?void 0:s[t.type],l=so(t.type,h)||{};a=lo(l,t,h)}else a=t;return new mi({node:a,parent:this,scene:this._scene,emitter:this._emitter,options:{...e,setDefaults:o}})}removeChild(t,e={}){var r;if(t.id){if(this.locked&&!["level","plan"].includes(this.type)&&!e.force){console.log(`Node ID ${this.id} is locked and cannot remove children.`);return}}else{console.error("not valid");return}let n;for(let a=0;a<this.children.length;a++)if(this.children[a].id===t.id){n=a;break}if(!Number.isFinite(n)){console.warn("Node does not exist or is already removed",t);return}let s=t.children||[];for(let a=s.length-1;a>=0;a--)t instanceof mi&&s[a]&&t.removeChild(s[a],e);(r=this._scene)!=null&&r.unregisterNode&&this._scene.unregisterNode(t),this.children.splice(n,1);const o="remove-child";this._emitter&&this._emitter.emit(o,{node:this,args:t,options:e,event:o}),(t!=null&&t.getReferringNodes?t.getReferringNodes():[]).forEach(a=>a.remove(e))}remove(t){if(this.locked&&!t.force){console.warn(`Node ID ${this.id} is locked and cannot be removed.`);return}else this.parent.removeChild(this,t)}getReferringNodes(){var t,e;let r=[],n=(t=this._scene)==null?void 0:t.nodesByType["a:relation:"+this.type];n&&n.forEach(a=>{var h;(h=a?.nodeIds)!=null&&h.hasOwnProperty(this.id)&&r.push(a)});let s=up[this.type]||"a:settings:"+this.type,o=(e=this._scene)==null?void 0:e.nodesByType[s];return o&&o.forEach(a=>{a?.nodeId==this.id&&r.push(a)}),r}getWorldPosition(){return vo(this)}getLocalPositionFromWorld(t){const e=this.getParents();return e!=null&&e.length&&e.reverse().forEach(r=>{t=Wc(t,r)}),t}getParents(){return yo(this)}toJson(t={}){let e=$r(this,t),r=Pe(e);return t.regenerateIds&&Qc(r,t),r}traverse(t){typeof t=="function"&&(t(this),this.children.forEach(e=>{e.traverse(t)}))}}const vo=(i,t)=>{const e=t?t.parent:i.parent;if(!e)return console.warn("no parent found"),i;let r=Wr(i,e);return e.parent&&(r=vo(r,e)),r},yo=i=>{let t=[];const e=i.parent;return e&&t.push(e),e!=null&&e.parent&&(t=t.concat(yo(e))),t},cp=(i,t,{setDefaults:e,regenerateIds:r})=>{if(!t&&e)throw new Error("schema is missing");if(!i)throw new Error("node missing");const n=t&&t[i.type];let s;if(n&&e){if(s=so(i.type,n),!s)throw new Error("no defaults found")}else s={};let o=Object.assign({},s,i);if(!o)throw new Error("applying defaults failed");return(!i.id||r)&&(o.id=se()),o};var yt=(i=>(i.residential="residential",i.office="office",i.parking="parking",i.lightIndustrial="lightIndustrial",i))(yt||{});const Xi={work:{name:"Work",isHidden:!0,description:"space for individual head-down work",spaceUsage:{privateOffice:{name:"Private office",category:["office"]},focusRoom:{name:"Focus room",category:["office"]},openWorkspace:{name:"Open workspace",category:["office"]},enclosedWorkspace:{name:"Enclosed workspace",category:["office"]},closedWorkspace:{name:"Closed workspace",isDeprecated:!0,category:["office"]},executiveOffice:{name:"Executive office",isDeprecated:!0,category:["office"]}}},meet:{name:"Meet",isHidden:!0,spaceUsage:{meetingRoom:{name:"Meeting room",category:["office"]},hub:{name:"Hub",category:["office"]},assembly:{name:"Assembly",category:["office"]},boardRoom:{name:"Board room",category:["office"]},trainingRoom:{name:"Training room",category:["office"]},collaboration:{name:"Collaboration",isDeprecated:!0,category:["office"]}}},live:{name:"live",isHidden:!0,spaceUsage:{living:{name:"Living",category:["residential"]},dining:{name:"Dining",category:["residential"]},dining_living:{name:"Living & Dining",category:["residential"]},homeOffice:{name:"Home office",category:["residential"]},bedroom:{name:"Bedroom",category:["residential"]}}},socialize:{name:"Socialize",isHidden:!0,spaceUsage:{lobby:{name:"Lobby",category:["office","residential"]},reception:{name:"Reception",category:["office"]},lounge:{name:"Lounge",category:["office"]},cafe:{name:"Cafe",category:["office"]},canteen:{name:"Canteen",category:["office"]},pantry:{name:"Pantry",category:["office"]},terrace:{name:"Terrace",isOutdoor:!0,category:["office","residential"]},balcony:{name:"Balcony",isOutdoor:!0,category:["office","residential"]},rooftop:{name:"Rooftop",isOutdoor:!0,category:["office","residential"]},courtyard:{name:"Courtyard",isOutdoor:!0,category:["office","residential"]},garden:{name:"Garden",isOutdoor:!0,category:["residential"]},common:{name:"Common",isDeprecated:!0,category:["office"]}}},support:{name:"Support",isHidden:!0,spaceUsage:{serviceKitchen:{name:"Service kitchen",category:["office"]},printStation:{name:"Print station",category:["office"]},storage:{name:"Storage",category:["lightIndustrial","residential","office","parking"]},mailRoom:{name:"Mail room",category:["office"]},operationalRoom:{name:"Operational room",category:["lightIndustrial","office","parking"]},serviceRoom:{name:"Service room",category:["office"]},laundryRoom:{name:"Laundry room",category:["residential"]},loadingDock:{name:"Loading dock",category:["lightIndustrial"]},operate:{name:"Operate",isDeprecated:!0,category:["office"]},services:{name:"Services",isDeprecated:!0,category:["office","residential"]}}},care:{name:"Care",isHidden:!0,spaceUsage:{kitchen:{name:"Kitchen",category:["residential"]},wellnessRoom:{name:"Wellness room",category:["lightIndustrial","office"]},restroom:{name:"Restroom",category:["lightIndustrial","office","parking"]},bathroom:{name:"Bathroom",category:["residential"]},shower:{name:"Shower",category:["lightIndustrial","office","residential"]},toilet:{name:"Toilet",category:["residential"]}}},circulate:{name:"Circulate",isHidden:!0,spaceUsage:{corridor:{name:"Corridor",category:["lightIndustrial","residential","office","parking"]},foyer:{name:"Foyer",category:["lightIndustrial","residential","office","parking"]},staircase:{name:"Staircase",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},elevator:{name:"Elevator",isVertical:!0,category:["lightIndustrial","residential","office","parking"]}}},drive:{name:"Drive",isHidden:!0,spaceUsage:{parkingSpot:{name:"Parking spot",category:["parking"]},driveway:{name:"Driveway",category:["parking"]},garage:{name:"Garage",category:["residential"]}}},produce:{name:"Produce",isHidden:!0,spaceUsage:{productionArea:{name:"Production area",category:["lightIndustrial"]}}},void:{isHidden:!0,name:"Void",spaceUsage:{shaft:{name:"Shaft",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},buildingOpening:{name:"Building opening",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},floorOpening:{name:"Floor opening",isVertical:!0,category:["lightIndustrial","residential","office","parking"]}}},undefined:{isHidden:!0,spaceUsage:{undefined:{name:"Undefined",category:["residential","office"],isHidden:!0}}}},ue={};Object.keys(Xi).forEach(i=>{const t=Xi[i];ue[i]={name:t.name,type:"program",category:[]},t.isHidden&&(ue[i].isHidden=t.isHidden);const e={};Object.keys(Xi[i].spaceUsage).forEach(r=>{const n=Xi[i].spaceUsage[r];ue[r]={...n,type:"space",program:i},n.category.forEach(s=>{e[s]=!0})}),ue[i].category=Object.keys(e)});const mo=(i="")=>{i==="officeWorking"?i="work":i==="officeMeeting"&&(i="meet");let t=ue[i];return t?t.name:""},Gi=(i="")=>{const t=ue[i];let e;return t&&(e=t.type==="program"?i:t.program),e};function go({scene:i,uuid:t}){let e=i.nodesByType.polyfloor;t&&(e=e.filter(n=>n.id===t));const r=i.nodesByType.interior.map(n=>n.getWorldPosition());return e.map(n=>{let s=eo({node:n});if(!s.length)return;const o=Math.abs(s.reduce((u,f)=>u+le(f),0)),a=to(s[0],s.slice(1)),h=ki(s),{interiors:l}=np({polygons:s,scene:i,interiors:r});return{node:n,boundingBox:h,id:n.id,usage:n.usage,usageName:mo(n.usage),program:Gi(n.usage),polygons:s,interiors:l,area:o,center:a,customId:n.customId,name:n.name}}).flatMap(n=>n?[n]:[])}const Vr=(i,t=!0,e=!1)=>{const r=i.nodesByType.column.map(f=>f.getWorldPosition()),n=i.nodesByType.wall.map(f=>f.getWorldPosition()),s=.001,o=[...n,...r].map(f=>{let p=zr(f);if(t&&(p=Ke([p],s)[0]),e)return[p];let d=ro(f,"window"),v=ro(f,"door"),m=d.concat(v);if(m=m.map(y=>(y.w=f.w,y)),m!=null&&m.length){let y=m.map(zr);return Xc([p],y,s*2)}else return[p]}).reduce((f,p)=>f.concat(p),[]),a=o.length?Hr(o):[],{counterClockwise:h,clockwise:l}=jc(a),u=Vc(h,l);return h.map((f,p)=>[f,...u[p]||[]])},pp={spaceContourAreaThreshold:.1};class dp{constructor({schema:t,options:e={}}={}){this.sceneId=null,this.node=null,this._apiVersion="3.7.0",this.nodesById={},this.nodesByType=no(),this.nodesByName={},this.options={...pp,...e},this._schema=t||{},this._emitter=new Yr}get emitter(){return this._emitter}get schema(){return this._schema}set schema(t){typeof t=="object"&&(this._schema=t)}loadSceneStructure(t,e={}){if(this._emitter.emit("scene-structure-loading",this),!t||t.type!=="plan")throw new Error("invalid sceneStructure");this.nodesById={},this.nodesByType=no(),this.node=null;let r=Pe(t);return Number.isFinite(e.planRotation)&&(r._ryOrg=t.ry,r.ry=e.planRotation),this.node=new mi({node:r,scene:this,emitter:this.emitter,options:e}),this.setSpaceCategories(),this._emitter.emit("scene-structure-loaded",this),this.node}setSceneType(){this.setSpaceCategories()}_setSceneType(){const t=this.node.class;if(t!=null&&t.length)t.includes(yt.residential)?this.type=yt.residential:t.includes("commercial")||t.includes(yt.office)?this.type=yt.office:t.includes(yt.parking)&&(this.type=yt.parking);else{const e=this.nodesByType.polyfloor.map(r=>r.usage);e.includes("bedroom")?this.type=yt.residential:(e.includes("work")||e.includes("meetingRoom")||e.includes("openWorkspace"))&&(this.type=yt.office)}}setSpaceCategories(){let t=[];const e=this.node.class;if(e!=null&&e.length)t=Array.from(e.reduce((r,n)=>(n==="commercial"?r.add(yt.office):yt[n]&&r.add(yt[n]),r),new Set));else{const r=this.nodesByType.polyfloor.map(n=>n.usage);r.includes("bedroom")&&t.push(yt.residential),(r.includes("work")||r.includes("meetingRoom")||r.includes("openWorkspace"))&&t.push(yt.office)}this.spaceCategories=t,this._setSceneType()}getFloorArea(){const t=go({scene:this}).reduce((e,r)=>r.program==="void"?e:e+r.area,0);return Math.round(t*10)/10}registerNode(t){this.nodesById[t.id]&&console.error("Duplicate id",t.id),this.nodesById[t.id]=t,this.nodesByType[t.type]=this.nodesByType[t.type]||[],this.nodesByType[t.type].push(t),t.name&&(this.nodesByName[t.name]=this.nodesByName[t.name]||[],this.nodesByName[t.name].push(t))}unregisterNode(t){t.id&&delete this.nodesById[t.id];const e=(r,n)=>{if(r[t[n]]){let s=r[t[n]].findIndex(o=>o.id===t.id);Number.isFinite(s)&&r[t[n]].splice(s,1)}};e(this.nodesByType,"type"),e(this.nodesByName,"name")}on(t,e,r){t&&e?this._emitter.on(t,e,r):console.log("invalid event listener")}once(t,e,r){t&&e?this._emitter.once(t,e,r):console.log("invalid event listener")}off(t,e){t?this._emitter.off(t,e):console.log("invalid request")}emit(t,e,r,n,s){this._emitter.emit(t,e,r,n,s)}get apiVersion(){return this._apiVersion}}function vp(i){let t=[];return i.shape==="square"?t.push({type:"rectangle",position:[-i.l/2,-i.l/2],dimensions:[i.l,i.l]}):i.shape==="circle"?t.push({type:"circle",position:[0,0],radius:i.l/2}):i.shape==="polygon"&&t.push({type:"polygon",points:i.polygon}),t}function yp(i,t){const e=i.doorType||"singleSwing",r=i.l,n=t.w;let s=[],o=i.doorAngle;const a=i.hinge==="right",h=i.side==="back",l=t.controlLine==="front"?-n:t.controlLine==="center"?-n/2:0;if(o<20&&(o=20),e==="singleSwing"){let u=o*Math.PI/180,f,p,d,v;h?(f=a?0:180-o,p=a?o:180,d=a?[0,l]:[r,l],v=[d[0]+r*Math.cos(u)*(a?1:-1),d[1]+-r*Math.sin(u)]):(f=a?-180:360-o,p=a?-180+o:360,d=a?[r,n+l]:[0,n+l],v=[d[0]+r*Math.cos(u)*(a?-1:1),d[1]+r*Math.sin(u)]),s.push({type:"arc",radius:r,position:d,startAngle:f,endAngle:p},{type:"line",start:d,end:v})}else if(e==="doubleSwing"){const u=o*Math.PI/180;let f,p,d,v,m,y,g,w;h?(f=0,p=o,d=[0,l],v=[d[0]+r/2*Math.cos(u),d[1]+-r/2*Math.sin(u)],g=[r,l],w=[g[0]+-r/2*Math.cos(u),g[1]+-r/2*Math.sin(u)],m=180-o,y=180):(f=360-o,p=360,d=[0,n+l],v=[d[0]+r/2*Math.cos(u),d[1]+r/2*Math.sin(u)],g=[r,n+l],w=[g[0]+-r/2*Math.cos(u),g[1]+r/2*Math.sin(u)],m=180,y=180+o),s.push({type:"arc",radius:r/2,position:d,startAngle:f,endAngle:p},{type:"line",start:d,end:v}),s.push({type:"arc",radius:r/2,position:g,startAngle:m,endAngle:y},{type:"line",start:g,end:w})}return s.push({type:"rectangle",position:[0,l],dimensions:[i.l,n]}),s}function mp(i){let t=[];const e=/90$/g.test(i.cooktopType),r=gp(i),n=_p(i,r,e),s=xp(i,n),o=wp(i,n),a=Pp(i,n),h=.25,l=.6;t.push(Re([0,i.barCounter?-h:0],i.l,i.barCounter?i.w+h:i.w)),n.forEach(f=>{t.push(Tt([f,i.w],[f,i.w-.075]))}),r&&i.barCounter&&t.push(Tt([i.highCabinetLeft*i.elementLength,0],[i.l-i.highCabinetRight*i.elementLength,0]));for(let f of s){const p=n[f],d=p-l;t.push(Tt([d||0,i.w],[d||0,0]),Tt([d||0,0],[p,i.w]),Tt([d||0,i.w],[p,0]),Tt([p,i.w],[p,0]))}const u={fill:!1};if(o&&n[o-2]){let f={type:"group",position:[n[o-2],0],children:[Re([.05,i.w-.5],i.sinkType!=="double"?.5:1.1,.45,u),Re([.1,i.w-.4],i.sinkType!=="double"?.4:.35,.3,u),Re([i.sinkType!=="double"?i.elementLength/2-.02:.48,i.w-.45],.04,.18,u)]};i.sinkType==="double"&&f.children.push(Re([.55,i.w-.4],.35,.3,u),Tt([.95,i.w-.4],[.95,i.w-.1]),Tt([1,i.w-.4],[1,i.w-.1]),Tt([1.05,i.w-.4],[1.05,i.w-.1]),Tt([1.1,i.w-.4],[1.1,i.w-.1])),t.push(f)}if(a&&n[a-2]){let f={type:"group",position:[n[a-2],0],children:[Re([.05,i.w-.55],e?.8:.5,.5,u)]};e?f.children.push(Gt([.225,i.w-.4],.08,u),Gt([.675,i.w-.4],.08,u),Gt([.45,i.w-.3],.08,u),Gt([.225,i.w-.2],.08,u),Gt([.675,i.w-.2],.08,u)):f.children.push(Gt([.2,i.w-.4],.08,u),Gt([.4,i.w-.4],.08,u),Gt([.2,i.w-.2],.08,u),Gt([.4,i.w-.2],.08,u)),t.push(f)}return r&&i.wallCabinet&&t.push(Tt([i.highCabinetLeft*i.elementLength,i.wallCabinetWidth],[i.l-i.highCabinetRight*i.elementLength,i.wallCabinetWidth])),t}function gp(i){const t=i.elementLength,e=i.highCabinetLeft*t,r=i.highCabinetRight*t;return Math.max(0,i.l-e-r)}function _p(i,t,e){const r=i.elementLength,n=.9,s=i.highCabinetLeft*r;let o,a=[],h=0,l=0;for(o=0;o<i.highCabinetLeft;o++){let u=i.l-h;h+=u>r?r:u,a[o]=h,l++}for(;h+r<s+t;){let u=l===i.cooktopPos-1&&i.cooktopType!=="none"&&e;h+=u?n:r,l++,a.push(h)}for(o=i.highCabinetRight;o>0;o--)h=i.l-r*o+r,a.push(h);return a=a.map(u=>Math.round(u*10)/10),a}function xp(i,t){let e,r=[];for(e=0;e<i.highCabinetLeft;e++)r.push(e);for(e=0;e<i.highCabinetRight;e++)r.push(t.length-1-e);return r}function wp(i,t){return typeof i.sinkPos=="number"&&i.sinkPos>i.highCabinetLeft&&i.sinkPos<=t.length-i.highCabinetRight&&i.sinkType!=="none"?i.sinkPos:null}function Pp(i,t){return typeof i.cooktopPos=="number"&&i.cooktopPos>i.highCabinetLeft&&i.cooktopPos<=t.length-i.highCabinetRight&&i.cooktopType!=="none"?i.cooktopPos:null}function Tt(i,t){return{type:"line",start:i,end:t}}function Re(i,t,e,r){return{type:"rectangle",position:i,dimensions:[t,e],style:r}}function Gt(i,t,e){return{type:"circle",position:i,radius:t,style:e}}function bp(i){let t;return i.controlLine==="center"?t=-i.w/2:i.controlLine==="front"?t=-i.w:t=0,[{type:"rectangle",position:[0,t],dimensions:[i.l,i.w]}]}function ii(i,t,e=.5){let r=[t[0]-i[0],t[1]-i[1]];return[i[0]+r[0]*e,i[1]+r[1]*e]}function Tp(i,t,e,r=5){const n=[];let s,o,a,h=0;for(let l=0;l<=r;++l)h=l/r,s=ii(i,t,h),o=ii(t,e,h),a=ii(s,o,h),n.push(a);return n}const Cp=48,Ip=12,Ep=100,_o=(i,t)=>{const e=Math.ceil(Cp/(Math.PI*2)*i*t),r=Math.ceil(Ip/(Math.PI*2)*i);return Math.min(Ep,Math.max(r,e))},xo=i=>{const t={type:"polygon",points:[]};switch(i.type){case"circle":const e=i.radius,r=_o(Math.PI*2,e),n=i.position,s=Math.PI*2/r;let o=0;for(let h=0;h<r;h++)t.points.push([e*Math.cos(o)+n[0],-e*Math.sin(o)+n[1]]),o+=s;break;case"polygon":t.points=i.points;break;case"rectangle":const a=i.dimensions;t.points=[[0,0],[0,a[1]],[a[0],a[1]],[a[0],0]];break;case"composite":for(const h of i.segments){let l=jr(h);t.points.push(...l.points)}break}return t},jr=i=>{const t={type:"polyline",points:[]};switch(i.type){case"line":t.points=[i.start,i.end];break;case"arc":const e=i.startAngle/180*Math.PI,r=i.endAngle/180*Math.PI-e,n=i.radius,s=_o(Math.abs(r),n),o=i.position,a=r/s;let h=e;for(let l=0;l<s+1;l++)t.points.push([n*Math.cos(h)+o[0],-n*Math.sin(h)+o[1]]),h+=a;break;case"polyline":t.points=i.points;break;case"quadraticBezier":t.points.push(i.points[0]);for(let l=0;l<=i.points.length-3;l++){let u=i.points[l],f=i.points[l+1],p=i.points[l+2],d=l===0?u:ii(u,f),v=l===i.points.length-3?p:ii(f,p),m=Tp(d,f,v);t.points.push(...m.slice(1))}break}return t};function Sp(i,t={}){const e="straight",r=t.style!=="labelled",n=i.circulation==="left",s=.3;let o=i.stairType||e,a=i.l;const h=i.stepWidth;i.stairType==="straightLanding"?a=i.l-1:i.stairType==="lShaped"?a=i.l+i.w-2*h:i.stairType==="winder"?a=i.l+i.w-h:i.stairType==="halfLanding"?a=(i.l-h)*2:i.stairType==="2QuarterLanding"?a=(i.l-h)*2+i.w-h*2:i.stairType==="doubleWinder"&&(a=i.l*2+i.w-h*2);const l=(a/i.h+1.2321)/.10357/100,u=Math.round(a/l),f=!n&&i.railing==="left"||n&&i.railing==="right"||i.railing==="both",p=!n&&i.railing==="right"||n&&i.railing==="left"||i.railing==="both",d=.05;let v=a/u,m={shape:[],runs:[],railings:[]},y,g,w;switch(o){case"straight":case"straightLanding":m.shape=[[0,0],[i.l,0],[i.l,i.w],[0,i.w]];break;case"lShaped":case"winder":m.shape=[[0,0],[i.l,0],[i.l,i.w],[i.l-h,i.w],[i.l-h,h],[0,h]];break;case"halfLanding":case"2QuarterLanding":case"doubleWinder":m.shape=[[0,0],[i.l,0],[i.l,i.w],[0,i.w],[0,i.w-h],[i.l-h,i.w-h],[i.l-h,h],[0,h]];break}if(m.railings=Lp(m.shape,d,f,p),r)switch(o){case"straight":m.runs=[{type:"straight",data:[0,0,u,v,0]}];break;case"straightLanding":y=Math.ceil(u/2),g=u-y,m.runs=[{type:"straight",data:[0,0,y,v,0]},{type:"straight",data:[y*v+1,0,g,v,0]}];break;case"lShaped":y=Math.floor((i.l-h)/v),g=u-y,m.runs=[{type:"straight",data:[0,0,y,(i.l-h)/y,0]},{type:"straight",data:[i.l,h,g,(i.w-h)/g,-90]}];break;case"winder":g=2*Math.round((h/2+s)/v),y=Math.round((i.l-h-s)/v),w=u-y-g,m.runs=[{type:"straight",data:[0,0,y,(i.l-h-s)/y,0]},{type:"winder",data:[i.l-h-s,0,g,0]}],w>0&&m.runs.push({type:"straight",data:[i.l,h+s,w,(i.w-h-s)/w,-90]});break;case"halfLanding":y=u/2,g=u/2,m.runs=[{type:"straight",data:[0,0,y,v,0]},{type:"straight",data:[y*v,i.w,g,v,180]}];break;case"2QuarterLanding":y=Math.round((i.l-h)/v),w=y,g=u-y*2,v=(i.l-h)/y,m.runs=[{type:"straight",data:[0,0,y,(i.l-h)/y,0]},{type:"straight",data:[i.l,h,g,(i.w-h*2)/g,-90]},{type:"straight",data:[y*v,i.w,w,(i.l-h)/y,180]}];break;case"doubleWinder":g=4*Math.round((h/2+s)/v),w=Math.round((i.w-(h+s)*2)/v),y=Math.round((u-g-w)/2),m.runs=[],y>0&&m.runs.push({type:"straight",data:[0,0,y,(i.l-h-s)/y,0]}),m.runs.push({type:"winder",data:[i.l-h-s,0,g/2,0]}),w>0&&m.runs.push({type:"straight",data:[i.l,h+s,w,(i.w-(h+s)*2)/w,-90]}),m.runs.push({type:"winder",data:[i.l,i.w-h-s,g/2,-90]}),y>0&&m.runs.push({type:"straight",data:[i.l-h-s,i.w,y,(i.l-h-s)/y,180]});break}let _,b=[];if(t.style!=="labelled"){let I=[[v/2-.06,h/2+.12],[v/2+.06,h/2],[v/2-.06,h/2-.12]];b.push({type:"polyline",points:I})}if(o!=="spiral")_={type:"polygon",points:m.shape},m.runs.forEach(I=>{I.type==="straight"?b=b.concat(Ap(...I.data,h)):I.type==="winder"&&(b=b.concat(Op(...I.data,h,s)))});else if(o==="spiral"){const I=i.w,N=I-h,C=N+h/2;let E=i.l/C;const F=E/u;E>2*Math.PI&&(E=2*Math.PI-.01);let O=[0,i.w],R=E/Math.PI*180-90;_={type:"composite",segments:[{type:"arc",radius:I,position:O,startAngle:-R,endAngle:90},{type:"arc",radius:N,position:O,startAngle:90,endAngle:-R}]},m.railings=[];const H=I-d,S=N+d;if(f&&m.railings.push({type:"arc",radius:H,position:O,startAngle:-R,endAngle:90}),p&&m.railings.push({type:"arc",radius:S,position:O,startAngle:-R,endAngle:90}),r){let A=0;for(var x=0;x<u&&!(A>=E);x++){const D=[Math.sin(A)*I,Math.cos(A)*I-I],it=[Math.sin(A)*N,Math.cos(A)*N-I];b.push({type:"polyline",points:[[D[0],-D[1]],[it[0],-it[1]]]}),A+=F}}}let P=[_,...b,...m.railings];return n&&(P=P.map(I=>(I.type==="composite"&&(I=xo(I)),I.type==="arc"&&(I=jr(I)),(I.type==="polygon"||I.type==="polyline")&&I.points.forEach(N=>{N[1]=-N[1]+i.w}),I))),P}function Ap(i,t,e,r,n=0,s){n=n||0;const o=[];for(var a=0;a<e;a++){let h=[[a*r,0],[a*r,s]];h=At({x:i,z:t,ry:n},h),o.push({type:"polyline",points:h})}return o}function Op(i,t,e,r,n,s){let o=0,a=0;r=r||0;const h=[];let l=s,u=e/2,f=(n+l)/u,p=l/u,d=0,v=0;for(var m=0;m<u;m++){let y=[[o+d,a+n],[o+v,a]];y=At({x:i,z:t,ry:r},y),h.push({type:"polyline",points:y}),d+=p,v+=f}for(o+=d,d=0,v=0,m=0;m<u;m++){let y=[[o,a+n+d],[o+n,a+v]];y=At({x:i,z:t,ry:r},y),h.push({type:"polyline",points:y}),d+=p,v+=f}return h}function Lp(i,t,e,r){const n=[];if(!e&&!r)return[];let s=[];i.length===4?s=i.map((h,l)=>[h[0],h[1]+(l<2?t:-t)]):i.length===6?s=i.map((h,l)=>{let u=[...h];return l<2?u[1]+=t:l>3&&(u[1]-=t),l===1||l===2?u[0]-=t:(l===3||l===4)&&(u[0]+=t),u}):i.length===8&&(s=i.map((h,l)=>{let u=[...h];return l<2||l>3&&l<6?u[1]+=t:(l<4||l>5)&&(u[1]-=t),(l===1||l===2)&&(u[0]-=t),(l===5||l===6)&&(u[0]+=t),u}));const o=s.slice(0,s.length/2),a=s.slice(s.length/2,s.length);return e&&n.push({type:"polyline",points:o}),r&&n.push({type:"polyline",points:a}),n}new Dc({size:256});function qr(i){return new Promise((t,e)=>{i.oncomplete=i.onsuccess=()=>t(i.result),i.onabort=i.onerror=()=>e(i.error)})}function wo(i,t){const e=indexedDB.open(i);e.onupgradeneeded=()=>e.result.createObjectStore(t);const r=qr(e);return(n,s)=>r.then(o=>s(o.transaction(t,n).objectStore(t)))}let Zr;function Po(){return Zr||(Zr=wo("keyval-store","keyval")),Zr}function Mp(i,t=Po()){return t("readonly",e=>qr(e.get(i)))}function Np(i,t,e=Po()){return e("readwrite",r=>(r.put(t,i),qr(r.transaction)))}const G={new_york:"#0c1829",stone:"#4d586b",warsaw:"#929baa",oslo:"#72849e",athens:"#e8ebef",gray:"#cfd5de",stone_08:"#f1f2f3",whisper:"#f7f8fa",white:"#ffffff",zurich:"#bdd8ff",zurich_48:"#dfecff",blue_ribbon:"#3355ff",flamingo:"#ef5533"},Yt={api:{productDataCacheAge:24*3600*1e3,productContourCacheAge:10*24*3600*1e3},hideElements:[],panZoom:!0,planRotation:0,preserveViewbox:"center-center",roomStampSize:null,showCeilingLamps:!1,xrayMode:!1,destroyOnDomRemove:!1,ui:{scale:!0,coordinates:!1},spaceLabelMapping:{},theme:{fontFamily:"Avenir, Verdana, sans-serif",background:{color:G.whisper,showGrid:!1},wallContours:!1,showAssetTextures:!1,elements:{floorPlan:{grayscale:!1},roomStamp:{showArea:!0,showUsage:!0}}},units:{system:"metric",areaDecimals:0,lengthDecimals:3,roomDimensions:"area"},zoomRange:[3,300]},Fp=i=>"publishableToken"in i?(console.warn("token.publishableToken is deprecated, please use the token.publishableAccessToken option"),Ys({publishableAccessToken:i.publishableToken,...i})):Ys(i);let Jr="archilogic/product",Yi="https://storage.3d.io";const Rp=i=>{i&&typeof i=="object"&&(Yt.api={...Yt.api,...i})};async function Dp(i,t){return gc("GET",`/v2/floor/${i}/scene-structure?includeMetadata=true`,{},t)}function Bp(i){return To(`${Yi}/${Jr}/outline/${i}.json`)}function bo(i){return`${Yi}/${Jr}/thumb/${i}.png`}function kp(i){return To(`${Yi}/${Jr}/json/${i}.json`)}function To(i){return fetch(i).then(t=>{if(t.ok)return t.json();throw Error(t.statusText)})}function Up(i){const t=document.createElement("div"),e=document.createElement("div"),r=document.createElement("div"),n=document.createElement("div");return t.classList.add("fpe-err"),e.classList.add("fpe-err__box"),r.classList.add("fpe-err__title"),n.classList.add("fpe-err__msg"),i.append(t),t.append(e),e.append(r),e.append(n),r.textContent="Something went wrong",i.append(t),i}function Xp(i,t="Floor plan engine couldn't load properly on this page. For technical details check the browser console."){const e=document.getElementById(i),r=e.querySelector(".fpe-err")??Up(e);r.querySelector(".fpe-err__msg").textContent=t}function Gp(i){var t;(t=document.querySelector(`#${i} .fpe-err`))==null||t.remove()}const Yp="al-kvs",Hp="al-keyval",Qr=typeof window>"u"||typeof process<"u",Co=!Qr&&wo(Yp,Hp);let Io=!0;async function Eo(i,t,e){if(Qr)return Promise.resolve();e=e||30*24*3600*1e3;try{const r={timeStamp:new Date().getTime(),content:t,maxAge:e};return Io&&await Np(i,r,Co),i}catch{return}}async function So(i,t){if(Qr)return Promise.resolve();const e=t||30*24*3600*1e3,r=new Date().getTime();let n;try{Io&&(n=await Mp(i,Co));const s=r-n.timeStamp,o=Math.min(n.maxAge,e);if(s>o)return;if(n.content)return n.content}catch{return}}function Wp(i){const t={10:["ceilingLight","wallLight"],9:["modularMeetingRoom","phoneBooth"],8:["floorLamp","tableLamp","deskDivider","cushion","plant","officeSupply","tableware","decoration","laundry","electronics","kitchen","car"],7:["shelf","cabinet","wardrobe","storageCombination","outdoor","bicycle","people","sink"],6:["highTable","diningTable","conferenceTable","desk"],5:["sofa","armchair","loungeChair","ottoman","sideboard","pedestal"],4:["taskChair","diningChair","conferenceChair","stool","barStool","bench"],3:["shower"],2:["singleBed","doubleBed","daybed","toilet","bathtub"],1:["sideTable","coffeeTable","radiator","nightstand"],0:["rug"]};let e=0;return i.subCategories.forEach(r=>{Object.keys(t).forEach(n=>{let s=parseInt(n);t[n].includes(r)&&s>e&&(e=s)})}),e===1&&i.categories.includes("tables")&&i.boundingBox.height>.6&&(e=6),e}const Ao={kitchen:mp,column:vp,stairs:Sp,wall:bp,door:yp};function zp(i,t,e){if(Ao[i.type])return Ao[i.type](i,t);if(Kr[i.type])return Kr[i.type](i,t,e)}const Kr={box:i=>ri(i),curtain:i=>{const t=Math.min(Math.max(i.folds||10,Math.round(i.l*5)),Math.max(1,Math.round(i.l*15))),e=.05,r=i.w,n=i.l/t;let s=[],o=[];var a,h,l,u=0,f=r/2,p=e/2;let d=i.id.replace(/-/gi,""),v=d.length;for(var m=0;m<t;m++){h=p,l=f;let y=parseInt(d[m%v],16)/20;p=e/2+y*e/2*(m%2===0?-1:1),f=r/2+y*r/2*(m%2===0?-1:1),a=u,u=n*(m+1),o.push([a,l]),s.push([a,h]),m===t-1&&(o.push([u,f]),s.push([u,p]))}return[{type:"composite",segments:[{type:"quadraticBezier",points:s},{type:"quadraticBezier",points:o.reverse()}]}]},railing:i=>ri(i),floor:i=>ri(i),window:(i,t)=>ri(i,t),closet:i=>ri(i),interior:(i,t,e)=>{if(!e)return[{type:"circle",position:[0,0],radius:.01}];if(e=e.sort((r,n)=>ti(r)>ti(n)?-1:1),!(!e||!e.length))return[{type:"polygon",points:e[0],holes:e.slice(1)}]},polyfloor:i=>[{type:"polygon",points:i.polygon,holes:i.polygonHoles||[]}],polybox:i=>[{type:"polygon",points:i.polygon}],"a:helper:spaceDivider":i=>[{type:"rectangle",position:[0,-.02],dimensions:[i.l,.04]}],floorplan:i=>[{type:"rectangle",position:[-i.l/2,-i.w/2],dimensions:[i.l,i.w],style:{fill:!1}}]};function ri(i,t){let e=0,r=i.w;return i.type==="wall"&&(e=i.controlLine==="front"?i.w:i.controlLine==="center"?i.w/2:0),i.type==="window"&&(r=t.w,e=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),[{type:"polygon",points:[[0,0-e],[i.l,0-e],[i.l,r-e],[0,r-e]]}]}const fe=i=>{var t;return((t=i.src)==null?void 0:t.substring(1))||""},$p="fpe-pr1-",Oo="fpe-dc2-";var De=(i=>(i[i.None=0]="None",i[i.Default=1]="Default",i[i.Grayscale=2]="Grayscale",i))(De||{});let Vp=class extends Yr{constructor(t,e){var r,n,s;super(),this.productQueue={},this.textureQueue={},this.promiseCache=new Map,this.loadStages={product:!0,productContour:!0,productTexture:!1},this.isSceneStructureLoaded=!1,this.initialLoading=!0,this._loadCounter=0,this.resources=t,this.productContourCacheAge=(r=e.api)==null?void 0:r.productContourCacheAge,this.productDataCacheAge=(n=e.api)==null?void 0:n.productDataCacheAge,this.loadStages.productTexture=!!((s=e.theme)!=null&&s.showAssetTextures)&&e.loadTextures!==!1,this.on("product-load-stage",this.loadStatus,this)}loadStatus({args:t}){const e=Object.values(this.textureQueue).reduce((s,o)=>s+o.nodes.size,0),r=Object.values(this.productQueue).reduce((s,o)=>s+o.nodes.size,0),n=e+r;this._loadCounter++,this.emit("loading-status",{totalCount:n,doneCount:this._loadCounter}),n===this._loadCounter&&this.emit("loading-done",{totalCount:n})}reset(){this.resources.spaces=[],this.resources.assets=[],this.resources.products={},this.resources.productContours={},this.resources.productBoundingBoxes={},this.textureQueue={},this.productQueue={},this._loadCounter=0,this.promiseCache=new Map,this.initialLoading=!0}};async function jp(i,t){if(t.promiseCache||(t.promiseCache=new Map),!i||!i.src)return;const e=fe(i);t.productQueue[e]||(t.productQueue[e]={loadStage:0,nodes:new Set}),t.productQueue[e].nodes.add(i),t.productQueue[e].loadStage<1&&await td(e,t),t.loadStages.productContour&&qp(i,t)}async function qp(i,t){const e=fe(i),r=t.resources.products[e];if(!r||!t.productQueue[e])return;const n=lp(i,r);if(Kp(t.resources,i),!t.textureQueue[n]){const s=bo(n);t.textureQueue[n]={productId:e,loadStage:0,nodes:new Set,textureUrl:s,applyFilter:1},t.loadStages.productTexture&&t.emit("product-load-texture",{textureId:n,productData:r})}if(t.textureQueue[n].nodes.add(i),t.textureQueue[n].loadStage===2){t.emit("product-load-stage",{node:i,args:{_loadStage:3,_textureId:n}});return}t.resources.productBoundingBoxes[e]||(t.resources.productBoundingBoxes[e]=Zp(r),t.productQueue[e].loadStage=2),t.productQueue[e].loadStage===2&&t.emit("product-load-stage",{node:i,args:{_loadStage:2}}),t.resources.productContours[e]||Jp(r,t).then(()=>{var s,o;((s=t.textureQueue[n])==null?void 0:s.loadStage)===1||(o=t.textureQueue[n])!=null&&o.error?t.emit("product-contour",n):t.loadStages.productTexture||t.emit("product-load-stage",{node:i,args:{_loadStage:3}})})}const Zp=i=>{const t=i.boundingPoints;let e;if(t)return e=[[t.min[0],t.min[2]],[t.min[0],t.max[2]],[t.max[0],t.max[2]],[t.max[0],t.min[2]]],i._loadStage=1,[e]},Jp=async(i,t)=>{const{productId:e}=i,r=Oo+e,n=t.promiseCache.get(r);if(n)return n;const s=ed(e,t).then(o=>{const a=o;t.resources.productContours[e]=a,t.resources.products[e]._shapes=Kr.interior({type:"interior"},null,a),t.productQueue[e].loadStage=3}).catch(()=>{});return t.promiseCache.set(r,s),s};function Qp(i){if(!i)return;const t=i.subCategories.includes("ceilingLight"),e=i.subCategories.includes("rug"),r=i.productResourceId,n=bo(r);return{preview:i.preview,manufacturer:i.manufacturer,productId:r,name:i.productDisplayName,fileKey:i.fileKey,tags:i.tags,categories:i.categories,subCategories:i.subCategories,boundingPoints:i.boundingPoints,boundingBox:i.boundingBox,seatCapacity:i.seatCapacity,texture:n,materials:[],matColors:i.matColors,colours:i.colours,order:Wp(i),isCeilingLamp:t,isCarpet:e,createdAt:i.createdAt,updatedAt:i.updatedAt,link:i.link}}function Kp(i,t){if(!t||t.type!=="interior")return;let e=fe(t);if(!e)return;let r=co(t,i.products[e]);r&&!i.products[e].materials.includes(r)&&i.products[e].materials.splice(0,0,r)}function td(i,t){const e=t.productDataCacheAge,r=e||24*3600*1e3;if(!i)return Promise.reject("product id missing");const n=$p+i,s=t.promiseCache.get(n);if(s)return s;const o=So(n,e).then(a=>!a||!a.matColors?kp(i).then(h=>(h.matColors={},h.colours&&h.colours.length&&h.colours.forEach(l=>{if(!l.includes(":"))return;let u=l.split(":"),f=po(u[1]);h.matColors[f]=u[2]}),Eo(n,h,r),h)):a).then(a=>{const h=Qp(a);t.resources.products[i]=h,t.productQueue[i].loadStage=1,t.emit("product-data",{productId:i,data:h})}).catch(a=>{console.warn(a.message)});return t.promiseCache.set(n,o),o}function ed(i,t){const e=t.productContourCacheAge,r=e||10*24*3600*1e3;if(!i)return Promise.reject("product id missing");const n=Oo+i,s=t.promiseCache.get(n);if(s)return s;const o=So(n,e).then(a=>a||Bp(i).then(h=>(Eo(n,h,r),h))).catch(a=>{console.warn(a)});return t.promiseCache.set(n,o),o}function Lo(i,t){const{node:e,...r}=t;return{...r,resourceType:i,setHighlight:n=>{e.setHighlight(n)},node:e}}function id(i){return Lo("space",i)}function rd(i){return Lo("asset",i)}const Mo=i=>{const t=i.scene.nodesByType.interior;return Promise.all(t.map(e=>jp(e,i.loader).catch(r=>console.error(r)))).then(()=>{i.resources.assets=t.map(e=>{const r=od(e,i.resources);return r&&rd(r)}).filter(e=>e)})};function nd(i,t){!i||t.type!=="polyfloor"||(i.usage=t.usage,i.usageName=mo(t.usage),i.program=Gi(t.usage),i.name=t.name,i.customId=t.customId)}function sd(i,t){if(!i)return null;const e=fe(i),r=t.products[e];if(!r)return null;const{boundingPoints:n}=r;if(n){const{min:s,max:o}=n,a=[[s[0],s[2]],[s[0],o[2]],[o[0],o[2]],[o[0],s[2]]];return At(i.getWorldPosition(),a)}return null}function od(i,t){if(!i)return;const e=fe(i),r=t.products[e];if(!r){console.error("no productData",e,i);return}const n=i.getWorldPosition(),s=sd(i,t),o=s&&ki([s]);return{id:i.id,node:i,polygon:s,boundingBox:o,name:r.name,manufacturer:r.manufacturer,productId:e,tags:r.tags,categories:r.categories,subCategories:r.subCategories,dimensions:r.boundingBox,seatCapacity:r.seatCapacity,position:{x:n.x,y:n.y,z:n.z},rotation:n.ry}}const No=class{constructor({options:t={},scene:e}={}){this.settings=Pe(Yt),this.fpeId="fpe-"+Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,3),this.resources={spaces:[],assets:[],products:{},productContours:{},productBoundingBoxes:{}},this.computed={wallContours:[],relations:{spaces:[]},snapPoints:[],snapMargin:0},this.isBrowser=typeof process!="object"&&typeof window<"u",this.location={latitude:0,longitude:0},this._emitter=new Yr,this.set(t),this.loader=new Vp(this.resources,this.settings),this.scene=e||new dp,e&&this.initScene(e),this.utils={polygonOffset:Ke,polygonIntersection:Js,pointInPolygon:Fe,polygonUnion:Hr},this.scene.on("scene-structure-loading",()=>{this.loader.isSceneStructureLoaded=!1}),this.scene.on("scene-structure-loaded",this.initScene,this)}on(t,e,r){return this._emitter.on(t,e,r),this}once(t,e,r){return this._emitter.once(t,e,r),this}off(t,e){return this._emitter.off(t,e),this}emit(t,...e){return this._emitter.emit(t,...e),this}initScene(t){this.loader.initialLoading||this.loader.reset(),this.scene||(this.scene=t),this.loader.isSceneStructureLoaded=!0,this.settings.theme.wallContours&&(this.computed.wallContours=Vr(this.scene)),this.getSpaces(),this.loader.emit("spaces-loaded",!0),Mo(this).then(()=>{const e=this.settings.hideElements.includes("interior"),r=this.scene.nodesByType.interior.length===0;this.loader.emit("assets-loaded",!0),(e||r)&&this.loader.emit("loading-done",{totalCount:0})}),this.loader.initialLoading=!1}loadScene(t,e=this.settings.api){return new Promise((r,n)=>{(!t||typeof t!="string")&&n(`Expected non-empty string sceneId parameter instead got: "${t}"`);let s;try{s=Fp({...e,sdkVersion:No.version})}catch(o){n(o)}return this.loader.once("assets-loaded",r),Dp(t,s).then(o=>{var a;Gp(this.fpeId);let h=(a=o.metadata)==null?void 0:a.postalAddress;return h!=null&&h.latitude&&(this.location.latitude=h.latitude,this.location.longitude=h.longitude),this.scene.loadSceneStructure(o.structure,{planRotation:this.settings.planRotation})}).catch(o=>{const a=typeof o=="string"?o:o&&o.message;n(a)})}).catch(r=>{throw Xp(this.fpeId,r),r})}getSpaces(){let t=go({scene:this.scene});this.resources.spaces=t.map(e=>{let r=e.interiors;return delete e.interiors,id({...e,assets:r.map(n=>n.id)})})}set(t={}){var e,r,n,s,o,a,h;const l=(e=this.settings.hideElements)==null?void 0:e.includes("interior");let u=Pe(t);u.theme&&(u.theme=Kn(Yt.theme,u.theme)),u.ui&&(u.ui={...Yt.ui,...u.ui}),u.api&&(u.api={...Yt.api,...u.api}),u.units&&(u.units={...Yt.units,...u.units});const f=!((r=u.hideElements)!=null&&r.includes("interior"));for(let p in u)this.settings[p]=u[p];if((o=(s=(n=this.settings.theme)==null?void 0:n.elements)==null?void 0:s.space)!=null&&o.program){const p=this.settings.theme.elements.space.program,d={wash:"care",operate:"support",common:"socialize"};Object.keys(p).forEach(v=>{Object.keys(d).includes(v)&&(p[d[v]]=p[v],delete p[v])})}this.scene&&this.scene.node&&(l&&f&&Mo(this),(a=u.theme)!=null&&a.wallContours&&!((h=this.computed.wallContours)!=null&&h.length)&&(this.computed.wallContours=Vr(this.scene)),this.scene.node.ry!==u.planRotation&&Number.isFinite(u.planRotation)&&(this.scene.node.set({ry:u.planRotation}),this.computed.wallContours&&(this.computed.wallContours=Vr(this.scene))),this.getSpaces()),this.emit("update-settings",this.settings)}getResourcesFromPosition(t){const e=this.resources.spaces.filter(n=>Fe(t,n.polygons[0],n.polygons.slice(1))),r=[];return e.forEach(n=>{let s=this.resources.assets.filter(o=>n.assets.includes(o.id)).filter(o=>{var a;if(!((a=this.resources.products[o.productId])!=null&&a.isCeilingLamp&&!this.settings.showCeilingLamps)&&!(!o.polygon||!o.polygon.length))return Fe(t,o.polygon)});r.push(...s)}),{spaces:e,assets:r}}getElementBoundingBox(t,e=0){if(!t)return;let r,n;if(t instanceof mi?n=t.getWorldPosition():typeof t=="string"&&(r=this.scene.nodesById[t].find({id:t}),n=r&&r.getWorldPosition()),!n)return;let s;if(n.type==="interior"&&n.src){let a=fe(n),h=this.resources.productBoundingBoxes[a]||this.resources.productContours[a];s=h&&At(n,h[0])}else n.type==="polyfloor"?s=At(n,n.polygon):n.type!=="group"?s=zr(n):s=[[n.x-2,n.z-2],[n.x+2,n.z-2],[n.x+2,n.z+2],[n.x-2,n.z+2]];const o=ki([s]);return{x:o.x-e,z:o.z-e,x2:o.x2+e,z2:o.z2+e,length:o.length+e*2,width:o.width+e*2}}destroy(){delete this.scene,delete this.resources,delete this.settings,delete this.utils}};let Fo=No;Fo.version="4.4.0";const Ro=(i,t,e=.15)=>{let r,n,s;for(const o of t)if(r=Math.abs(i[0]-o[0]),!(r>e)&&(n=Math.abs(i[1]-o[1]),r<e&&n<e)){s=o;break}return s};function ad(i,t,e){const r=new MutationObserver(()=>{function n(s){return s.parentNode===t?!1:s.parentNode===null?!0:n(s.parentNode)}n(i)&&(r.disconnect(),e())});r.observe(t,{childList:!0,subtree:!0})}function hd(i,t,e){let{x:r,z:n,x2:s,z2:o,length:a,width:h}=i;const l=t/e;if(a/h>l){const u=h;h=a/l;const f=(u-h)/2;n+=f,o-=f}else{const u=a;a=h*l;const f=(u-a)/2;r+=f,s-=f}return{x:r,x2:s,z:n,z2:o,length:a,width:h}}function ld(i,t){var e,r;if(Gi(i.usage)==="void")return[];let{showUsage:n,showArea:s,roomStampDisplay:o}=((e=t.theme.elements)==null?void 0:e.roomStamp)||{};const a=t.spaceLabelMapping||{};let h;a[i.usage]!==void 0&&(h=a[i.usage]),a[i.id]!==void 0&&(h=a[i.id]);let l;switch(t.units.roomDimensions){case"area":l=Jn(i.area,t.units.system,t.units.areaDecimals);break;case"boundingBox":const{length:p,width:d}=i.boundingBox;l=`${We(p,t.units.system,t.units.lengthDecimals)} x ${We(d,t.units.system,t.units.lengthDecimals)}`;break;default:l="";break}let u=i.usageName;if(!u&&i.usage!=="undefined"&&(u=hh(i.usage||"")),h!==void 0&&(typeof h!="string"?console.warn("space label mapping has to be a string"):h.length>50?console.warn("space label mapping has to be less than 50 characters"):u=h),!o){const p=((r=t.theme.elements)==null?void 0:r.roomStamp)!==!1,d=n!==void 0||s!==void 0;o=[],p&&d?(n&&o.push("usage"),s&&o.push("area")):p&&o.push("usage","area")}const f=[];return o.forEach(p=>{var d,v;switch(p){case"name":(d=i.node)!=null&&d.name&&f.push(i.node.name);break;case"customId":(v=i.node)!=null&&v.customId&&f.push(i.node.customId);break;case"usage":f.push(u);break;case"area":f.push(l);break}}),f}function Do(i,t=0){return({door:31,window:31,column:30,wall:30,closet:20,railing:20,curtain:20,kitchen:20,group:12,box:11,polybox:11,interior:10,"a:helper:spaceDivider":5,stairs:5,floor:1,polyfloor:1,floorplan:0,floorplanDxf:0}[i]||0)+t}/*!
|
|
34
|
+
Deprecated since v`+i),console.warn(r))),Bs[t]=!0}}var ks={},bt=Object.create(null),Xt=Object.create(null);function Us(){var i;for(i in bt)delete bt[i];for(i in Xt)delete Xt[i]}var Xs=function(){function i(t,e,r){this.canvas=M.ADAPTER.createCanvas(),this.context=this.canvas.getContext("2d"),this.resolution=r||M.RESOLUTION,this.resize(t,e)}return i.prototype.clear=function(){this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.canvas.width,this.canvas.height)},i.prototype.resize=function(t,e){this.canvas.width=Math.round(t*this.resolution),this.canvas.height=Math.round(e*this.resolution)},i.prototype.destroy=function(){this.context=null,this.canvas=null},Object.defineProperty(i.prototype,"width",{get:function(){return this.canvas.width},set:function(t){this.canvas.width=Math.round(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){return this.canvas.height},set:function(t){this.canvas.height=Math.round(t)},enumerable:!1,configurable:!0}),i}();function cc(i){var t=i.width,e=i.height,r=i.getContext("2d",{willReadFrequently:!0}),n=r.getImageData(0,0,t,e),s=n.data,o=s.length,a={top:null,left:null,right:null,bottom:null},h=null,l,u,f;for(l=0;l<o;l+=4)s[l+3]!==0&&(u=l/4%t,f=~~(l/4/t),a.top===null&&(a.top=f),(a.left===null||u<a.left)&&(a.left=u),(a.right===null||a.right<u)&&(a.right=u+1),(a.bottom===null||a.bottom<f)&&(a.bottom=f));return a.top!==null&&(t=a.right-a.left,e=a.bottom-a.top+1,h=r.getImageData(a.left,a.top,t,e)),{height:e,width:t,data:h}}var Fi;function pc(i,t){if(t===void 0&&(t=globalThis.location),i.indexOf("data:")===0)return"";t=t||globalThis.location,Fi||(Fi=document.createElement("a")),Fi.href=i;var e=gl.parse(Fi.href),r=!e.port&&t.port===""||e.port===t.port;return e.hostname!==t.hostname||!r||e.protocol!==t.protocol?"anonymous":""}function Gs(i,t){var e=M.RETINA_PREFIX.exec(i);return e?parseFloat(e[1]):t!==void 0?t:1}class Je extends Error{code;data;constructor(t,e,r){super(t||"There was a problem. Please check your internet connection and try again."),this.name="SpaceApiError",this.stack=new Error().stack,this.code=e,this.data=r}}let dc="https://api.archilogic.com";const vc=()=>dc;function Ys(i){let t;if(i.secretAccessToken)t={type:"secret",secretAccessToken:i.secretAccessToken};else if(i.temporaryAccessToken||i.temporaryAccessTokenFunction)t={type:"temporary",temporaryAccessToken:i.temporaryAccessToken};else if(i.publishableAccessToken)t={type:"publishable",publishableAccessToken:i.publishableAccessToken};else throw new Je("Programming error: token is not provided.",void 0,void 0);return i.sdkVersion&&(t.sdkVersion=i.sdkVersion),t}function yc(i){const t=new Headers;switch(i.type){case"secret":t.set("authorization",`AL-Secret-Token ${i.secretAccessToken}`);break;case"temporary":t.set("authorization",`${i.temporaryAccessToken?.authorization}`)}return i.sdkVersion&&t.set("x-sdk-version",i.sdkVersion),t}function mc(i){return i.status>=200&&i.status<400?i:i.json().then(t=>{const e=t?.message||t?.error||t;switch(typeof e){case"string":return Promise.reject(new Je(e,i.status,void 0));case"object":return Promise.reject(new Je(e.message,i.status,e.data));default:return Promise.reject(new Je(null,null,t))}})}async function gc(i,t,e={},r){const n=new URL(vc()+t),s=yc(r);let o=!1;switch(r.type==="publishable"&&n.searchParams.set("pubtoken",r.publishableAccessToken),i){case"GET":e&&typeof e=="object"&&Object.entries(e).forEach(([a,h])=>{typeof h<"u"&&n.searchParams.set(a,h.toString())});break;case"POST":case"PUT":case"PATCH":s.set("content-type","application/json"),o=!0;break;case"DELETE":break;default:return Promise.reject(new Je("Programming error, unsupported method: "+i,void 0,void 0))}return fetch(n.toString(),{method:i,headers:s,body:o?JSON.stringify(e):void 0}).then(mc,a=>{throw a}).then(a=>a.json()).catch(a=>Promise.reject(a))}var c={};c.version="6.4.2.2",c.use_lines=!0,c.use_xyz=!1;var Hs=function(i,t){var e;if(typeof Object.getOwnPropertyNames>"u"){for(e in t.prototype)(typeof i.prototype[e]>"u"||i.prototype[e]===Object.prototype[e])&&(i.prototype[e]=t.prototype[e]);for(e in t)typeof i[e]>"u"&&(i[e]=t[e]);i.$baseCtor=t}else{for(var r=Object.getOwnPropertyNames(t.prototype),n=0;n<r.length;n++)typeof Object.getOwnPropertyDescriptor(i.prototype,r[n])>"u"&&Object.defineProperty(i.prototype,r[n],Object.getOwnPropertyDescriptor(t.prototype,r[n]));for(e in t)typeof i[e]>"u"&&(i[e]=t[e]);i.$baseCtor=t}};c.Path=function(){return[]},c.Path.prototype.push=Array.prototype.push,c.Paths=function(){return[]},c.Paths.prototype.push=Array.prototype.push,c.PolyNode=function(){this.m_Parent=null,this.m_polygon=new c.Path,this.m_Index=0,this.m_jointype=0,this.m_endtype=0,this.m_Childs=[],this.IsOpen=!1},c.PolyNode.prototype.IsHoleNode=function(){for(var i=!0,t=this.m_Parent;t!==null;)i=!i,t=t.m_Parent;return i},c.PolyNode.prototype.ChildCount=function(){return this.m_Childs.length},c.PolyNode.prototype.Contour=function(){return this.m_polygon},c.PolyNode.prototype.AddChild=function(i){var t=this.m_Childs.length;this.m_Childs.push(i),i.m_Parent=this,i.m_Index=t},c.PolyNode.prototype.GetNext=function(){return this.m_Childs.length>0?this.m_Childs[0]:this.GetNextSiblingUp()},c.PolyNode.prototype.GetNextSiblingUp=function(){return this.m_Parent===null?null:this.m_Index===this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]},c.PolyNode.prototype.Childs=function(){return this.m_Childs},c.PolyNode.prototype.Parent=function(){return this.m_Parent},c.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()},c.PolyTree=function(){this.m_AllPolys=[],c.PolyNode.call(this)},c.PolyTree.prototype.Clear=function(){for(var i=this,t=0,e=this.m_AllPolys.length;t<e;t++)i.m_AllPolys[t]=null;this.m_AllPolys.length=0,this.m_Childs.length=0},c.PolyTree.prototype.GetFirst=function(){return this.m_Childs.length>0?this.m_Childs[0]:null},c.PolyTree.prototype.Total=function(){var i=this.m_AllPolys.length;return i>0&&this.m_Childs[0]!==this.m_AllPolys[0]&&i--,i},Hs(c.PolyTree,c.PolyNode),c.Clear=function(i){i.length=0},c.PI=3.141592653589793,c.PI2=2*3.141592653589793,c.FPoint=function(){var i=arguments,t=i.length;if(this.X=0,this.Y=0,c.use_xyz)if(this.Z=0,t===3)this.X=i[0],this.Y=i[1],this.Z=i[2];else if(t===2)this.X=i[0],this.Y=i[1],this.Z=0;else if(t===1)if(i[0]instanceof c.FPoint){var e=i[0];this.X=e.X,this.Y=e.Y,this.Z=0}else{var r=i[0];typeof r.Z>"u"&&(r.Z=0),this.X=r.X,this.Y=r.Y,this.Z=r.Z}else this.X=0,this.Y=0,this.Z=0;else if(t===2)this.X=i[0],this.Y=i[1];else if(t===1)if(i[0]instanceof c.FPoint){var e=i[0];this.X=e.X,this.Y=e.Y}else{var r=i[0];this.X=r.X,this.Y=r.Y}else this.X=0,this.Y=0},c.FPoint.op_Equality=function(i,t){return i.X===t.X&&i.Y===t.Y},c.FPoint.op_Inequality=function(i,t){return i.X!==t.X||i.Y!==t.Y},c.FPoint0=function(){this.X=0,this.Y=0,c.use_xyz&&(this.Z=0)},c.FPoint0.prototype=c.FPoint.prototype,c.FPoint1=function(i){this.X=i.X,this.Y=i.Y,c.use_xyz&&(typeof i.Z>"u"?this.Z=0:this.Z=i.Z)},c.FPoint1.prototype=c.FPoint.prototype,c.FPoint1dp=function(i){this.X=i.X,this.Y=i.Y,c.use_xyz&&(this.Z=0)},c.FPoint1dp.prototype=c.FPoint.prototype,c.FPoint2=function(i,t,e){this.X=i,this.Y=t,c.use_xyz&&(typeof e>"u"?this.Z=0:this.Z=e)},c.FPoint2.prototype=c.FPoint.prototype,c.FRect=function(){var i=arguments,t=i.length;if(t===4)this.left=i[0],this.top=i[1],this.right=i[2],this.bottom=i[3];else if(t===1){var e=i[0];this.left=e.left,this.top=e.top,this.right=e.right,this.bottom=e.bottom}else this.left=0,this.top=0,this.right=0,this.bottom=0},c.FRect0=function(){this.left=0,this.top=0,this.right=0,this.bottom=0},c.FRect0.prototype=c.FRect.prototype,c.FRect1=function(i){this.left=i.left,this.top=i.top,this.right=i.right,this.bottom=i.bottom},c.FRect1.prototype=c.FRect.prototype,c.FRect4=function(i,t,e,r){this.left=i,this.top=t,this.right=e,this.bottom=r},c.FRect4.prototype=c.FRect.prototype,c.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},c.PolyType={ptSubject:0,ptClip:1},c.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},c.JoinType={jtSquare:0,jtRound:1,jtMiter:2},c.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},c.EdgeSide={esLeft:0,esRight:1},c.Direction={dRightToLeft:0,dLeftToRight:1},c.TEdge=function(){this.Bot=new c.FPoint0,this.Curr=new c.FPoint0,this.Top=new c.FPoint0,this.Delta=new c.FPoint0,this.Dx=0,this.PolyTyp=c.PolyType.ptSubject,this.Side=c.EdgeSide.esLeft,this.WindDelta=0,this.WindCnt=0,this.WindCnt2=0,this.OutIdx=0,this.Next=null,this.Prev=null,this.NextInLML=null,this.NextInAEL=null,this.PrevInAEL=null,this.NextInSEL=null,this.PrevInSEL=null},c.IntersectNode=function(){this.Edge1=null,this.Edge2=null,this.Pt=new c.FPoint0},c.MyIntersectNodeSort=function(){},c.MyIntersectNodeSort.Compare=function(i,t){var e=t.Pt.Y-i.Pt.Y;return e>0?1:e<0?-1:0},c.LocalMinima=function(){this.Y=0,this.LeftBound=null,this.RightBound=null,this.Next=null},c.Scanbeam=function(){this.Y=0,this.Next=null},c.Maxima=function(){this.X=0,this.Next=null,this.Prev=null},c.OutRec=function(){this.Idx=0,this.IsHole=!1,this.IsOpen=!1,this.FirstLeft=null,this.Pts=null,this.BottomPt=null,this.PolyNode=null},c.OutPt=function(){this.Idx=0,this.Pt=new c.FPoint0,this.Next=null,this.Prev=null},c.Join=function(){this.OutPt1=null,this.OutPt2=null,this.OffPt=new c.FPoint0},c.ClipperBase=function(){this.m_MinimaList=null,this.m_CurrentLM=null,this.m_edges=new Array,this.m_HasOpenPaths=!1,this.PreserveCollinear=!1,this.m_Scanbeam=null,this.m_PolyOuts=null,this.m_ActiveEdges=null},c.ClipperBase.horizontal=-34e37,c.ClipperBase.Skip=-2,c.ClipperBase.Unassigned=-1,c.ClipperBase.tolerance=1e-20,c.ClipperBase.maxValue=Math.sqrt(Number.MAX_VALUE),c.ClipperBase.minValue=Math.sqrt(Number.MIN_VALUE),c.ClipperBase.near_zero=function(i){return i>-c.ClipperBase.tolerance&&i<c.ClipperBase.tolerance},c.ClipperBase.IsHorizontal=function(i){return i.Delta.Y===0},c.ClipperBase.prototype.PointIsVertex=function(i,t){var e=t;do{if(c.FPoint.op_Equality(e.Pt,i))return!0;e=e.Next}while(e!==t);return!1},c.ClipperBase.prototype.PointOnLineSegment=function(i,t,e){return i.X===t.X&&i.Y===t.Y||i.X===e.X&&i.Y===e.Y||i.X>t.X==i.X<e.X&&i.Y>t.Y==i.Y<e.Y&&(i.X-t.X)*(e.Y-t.Y)===(e.X-t.X)*(i.Y-t.Y)},c.ClipperBase.prototype.PointOnPolygon=function(i,t){for(var e=this,r=t;;){if(e.PointOnLineSegment(i,r.Pt,r.Next.Pt))return!0;if(r=r.Next,r===t)break}return!1},c.ClipperBase.prototype.SlopesEqual=c.ClipperBase.SlopesEqual=function(){var i=arguments,t=i.length,e,r,n,s,o,a;return t===2?(e=i[0],r=i[1],e.Delta.Y*r.Delta.X===e.Delta.X*r.Delta.Y):t===3?(n=i[0],s=i[1],o=i[2],(n.Y-s.Y)*(s.X-o.X)-(n.X-s.X)*(s.Y-o.Y)===0):(n=i[0],s=i[1],o=i[2],a=i[3],(n.Y-s.Y)*(o.X-a.X)-(n.X-s.X)*(o.Y-a.Y)===0)},c.ClipperBase.SlopesEqual3=function(i,t){return i.Delta.Y*t.Delta.X===i.Delta.X*t.Delta.Y},c.ClipperBase.SlopesEqual4=function(i,t,e){return(i.Y-t.Y)*(t.X-e.X)-(i.X-t.X)*(t.Y-e.Y)===0},c.ClipperBase.SlopesEqual5=function(i,t,e,r){return(i.Y-t.Y)*(e.X-r.X)-(i.X-t.X)*(e.Y-r.Y)===0},c.ClipperBase.prototype.Clear=function(){var i=this;this.DisposeLocalMinimaList();for(var t=0,e=this.m_edges.length;t<e;++t){for(var r=0,n=this.m_edges[t].length;r<n;++r)i.m_edges[t][r]=null;c.Clear(i.m_edges[t])}c.Clear(this.m_edges),this.m_HasOpenPaths=!1},c.ClipperBase.prototype.DisposeLocalMinimaList=function(){for(var i=this;this.m_MinimaList!==null;){var t=i.m_MinimaList.Next;i.m_MinimaList=null,i.m_MinimaList=t}this.m_CurrentLM=null},c.ClipperBase.prototype.RangeTest=function(i){(i.X>c.ClipperBase.maxValue||i.X<-c.ClipperBase.maxValue||i.Y>c.ClipperBase.maxValue||i.Y<-c.ClipperBase.maxValue||i.X>0&&i.X<c.ClipperBase.minValue||i.Y>0&&i.Y<c.ClipperBase.minValue||i.X<0&&i.X>-c.ClipperBase.minValue||i.Y<0&&i.Y>-c.ClipperBase.minValue)&&c.Error("Coordinate outside allowed range in RangeTest().")},c.ClipperBase.prototype.InitEdge=function(i,t,e,r){i.Next=t,i.Prev=e,i.Curr.X=r.X,i.Curr.Y=r.Y,c.use_xyz&&(i.Curr.Z=r.Z),i.OutIdx=-1},c.ClipperBase.prototype.InitEdge2=function(i,t){i.Curr.Y>=i.Next.Curr.Y?(i.Bot.X=i.Curr.X,i.Bot.Y=i.Curr.Y,c.use_xyz&&(i.Bot.Z=i.Curr.Z),i.Top.X=i.Next.Curr.X,i.Top.Y=i.Next.Curr.Y,c.use_xyz&&(i.Top.Z=i.Next.Curr.Z)):(i.Top.X=i.Curr.X,i.Top.Y=i.Curr.Y,c.use_xyz&&(i.Top.Z=i.Curr.Z),i.Bot.X=i.Next.Curr.X,i.Bot.Y=i.Next.Curr.Y,c.use_xyz&&(i.Bot.Z=i.Next.Curr.Z)),this.SetDx(i),i.PolyTyp=t},c.ClipperBase.prototype.FindNextLocMin=function(i){for(var t;;){for(;c.FPoint.op_Inequality(i.Bot,i.Prev.Bot)||c.FPoint.op_Equality(i.Curr,i.Top);)i=i.Next;if(i.Dx!==c.ClipperBase.horizontal&&i.Prev.Dx!==c.ClipperBase.horizontal)break;for(;i.Prev.Dx===c.ClipperBase.horizontal;)i=i.Prev;for(t=i;i.Dx===c.ClipperBase.horizontal;)i=i.Next;if(i.Top.Y!==i.Prev.Bot.Y){t.Prev.Bot.X<i.Bot.X&&(i=t);break}}return i},c.ClipperBase.prototype.ProcessBound=function(i,t){var e=this,r,n=i,s;if(n.OutIdx===c.ClipperBase.Skip){if(i=n,t){for(;i.Top.Y===i.Next.Bot.Y;)i=i.Next;for(;i!==n&&i.Dx===c.ClipperBase.horizontal;)i=i.Prev}else{for(;i.Top.Y===i.Prev.Bot.Y;)i=i.Prev;for(;i!==n&&i.Dx===c.ClipperBase.horizontal;)i=i.Next}if(i===n)t?n=i.Next:n=i.Prev;else{t?i=n.Next:i=n.Prev;var o=new c.LocalMinima;o.Next=null,o.Y=i.Bot.Y,o.LeftBound=null,o.RightBound=i,i.WindDelta=0,n=this.ProcessBound(i,t),this.InsertLocalMinima(o)}return n}if(i.Dx===c.ClipperBase.horizontal&&(t?r=i.Prev:r=i.Next,r.Dx===c.ClipperBase.horizontal?r.Bot.X!==i.Bot.X&&r.Top.X!==i.Bot.X&&this.ReverseHorizontal(i):r.Bot.X!==i.Bot.X&&this.ReverseHorizontal(i)),r=i,t){for(;n.Top.Y===n.Next.Bot.Y&&n.Next.OutIdx!==c.ClipperBase.Skip;)n=n.Next;if(n.Dx===c.ClipperBase.horizontal&&n.Next.OutIdx!==c.ClipperBase.Skip){for(s=n;s.Prev.Dx===c.ClipperBase.horizontal;)s=s.Prev;s.Prev.Top.X>n.Next.Top.X&&(n=s.Prev)}for(;i!==n;)i.NextInLML=i.Next,i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Prev.Top.X&&e.ReverseHorizontal(i),i=i.Next;i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Prev.Top.X&&this.ReverseHorizontal(i),n=n.Next}else{for(;n.Top.Y===n.Prev.Bot.Y&&n.Prev.OutIdx!==c.ClipperBase.Skip;)n=n.Prev;if(n.Dx===c.ClipperBase.horizontal&&n.Prev.OutIdx!==c.ClipperBase.Skip){for(s=n;s.Next.Dx===c.ClipperBase.horizontal;)s=s.Next;(s.Next.Top.X===n.Prev.Top.X||s.Next.Top.X>n.Prev.Top.X)&&(n=s.Next)}for(;i!==n;)i.NextInLML=i.Prev,i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Next.Top.X&&e.ReverseHorizontal(i),i=i.Prev;i.Dx===c.ClipperBase.horizontal&&i!==r&&i.Bot.X!==i.Next.Top.X&&this.ReverseHorizontal(i),n=n.Prev}return n},c.ClipperBase.prototype.AddPath=function(i,t,e){var r=this;c.use_lines?!e&&t===c.PolyType.ptClip&&c.Error("AddPath: Open paths must be subject."):e||c.Error("AddPath: Open paths have been disabled.");var n=i.length-1;if(e)for(;n>0&&c.FPoint.op_Equality(i[n],i[0]);)--n;for(;n>0&&c.FPoint.op_Equality(i[n],i[n-1]);)--n;if(e&&n<2||!e&&n<1)return!1;for(var s=new Array,o=0;o<=n;o++)s.push(new c.TEdge);var a=!0;s[1].Curr.X=i[1].X,s[1].Curr.Y=i[1].Y,c.use_xyz&&(s[1].Curr.Z=i[1].Z),this.RangeTest(i[0]),this.RangeTest(i[n]),this.InitEdge(s[0],s[1],s[n],i[0]),this.InitEdge(s[n],s[0],s[n-1],i[n]);for(var o=n-1;o>=1;--o)r.RangeTest(i[o]),r.InitEdge(s[o],s[o+1],s[o-1],i[o]);for(var h=s[0],l=h,u=h;;){if(l.Curr===l.Next.Curr&&(e||l.Next!==h)){if(l===l.Next)break;l===h&&(h=l.Next),l=r.RemoveEdge(l),u=l;continue}if(l.Prev===l.Next)break;if(e&&c.ClipperBase.SlopesEqual4(l.Prev.Curr,l.Curr,l.Next.Curr)&&(!r.PreserveCollinear||!r.Pt2IsBetweenPt1AndPt3(l.Prev.Curr,l.Curr,l.Next.Curr))){l===h&&(h=l.Next),l=r.RemoveEdge(l),l=l.Prev,u=l;continue}if(l=l.Next,l===u||!e&&l.Next===h)break}if(!e&&l===l.Next||e&&l.Prev===l.Next)return!1;e||(this.m_HasOpenPaths=!0,h.Prev.OutIdx=c.ClipperBase.Skip),l=h;do r.InitEdge2(l,t),l=l.Next,a&&l.Curr.Y!==h.Curr.Y&&(a=!1);while(l!==h);if(a){if(e)return!1;l.Prev.OutIdx=c.ClipperBase.Skip;var f=new c.LocalMinima;for(f.Next=null,f.Y=l.Bot.Y,f.LeftBound=null,f.RightBound=l,f.RightBound.Side=c.EdgeSide.esRight,f.RightBound.WindDelta=0;l.Bot.X!==l.Prev.Top.X&&r.ReverseHorizontal(l),l.Next.OutIdx!==c.ClipperBase.Skip;)l.NextInLML=l.Next,l=l.Next;return this.InsertLocalMinima(f),this.m_edges.push(s),!0}this.m_edges.push(s);var p,d=null;for(c.FPoint.op_Equality(l.Prev.Bot,l.Prev.Top)&&(l=l.Next);l=r.FindNextLocMin(l),l!==d;){d===null&&(d=l);var f=new c.LocalMinima;f.Next=null,f.Y=l.Bot.Y,l.Dx<l.Prev.Dx?(f.LeftBound=l.Prev,f.RightBound=l,p=!1):(f.LeftBound=l,f.RightBound=l.Prev,p=!0),f.LeftBound.Side=c.EdgeSide.esLeft,f.RightBound.Side=c.EdgeSide.esRight,e?f.LeftBound.Next===f.RightBound?f.LeftBound.WindDelta=-1:f.LeftBound.WindDelta=1:f.LeftBound.WindDelta=0,f.RightBound.WindDelta=-f.LeftBound.WindDelta,l=r.ProcessBound(f.LeftBound,p),l.OutIdx===c.ClipperBase.Skip&&(l=r.ProcessBound(l,p));var v=r.ProcessBound(f.RightBound,!p);v.OutIdx===c.ClipperBase.Skip&&(v=r.ProcessBound(v,!p)),f.LeftBound.OutIdx===c.ClipperBase.Skip?f.LeftBound=null:f.RightBound.OutIdx===c.ClipperBase.Skip&&(f.RightBound=null),r.InsertLocalMinima(f),p||(l=v)}return!0},c.ClipperBase.prototype.AddPaths=function(i,t,e){for(var r=this,n=!1,s=0,o=i.length;s<o;++s)r.AddPath(i[s],t,e)&&(n=!0);return n},c.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3=function(i,t,e){return c.FPoint.op_Equality(i,e)||c.FPoint.op_Equality(i,t)||c.FPoint.op_Equality(e,t)?!1:i.X!==e.X?t.X>i.X==t.X<e.X:t.Y>i.Y==t.Y<e.Y},c.ClipperBase.prototype.RemoveEdge=function(i){i.Prev.Next=i.Next,i.Next.Prev=i.Prev;var t=i.Next;return i.Prev=null,t},c.ClipperBase.prototype.SetDx=function(i){i.Delta.X=i.Top.X-i.Bot.X,i.Delta.Y=i.Top.Y-i.Bot.Y,i.Delta.Y===0?i.Dx=c.ClipperBase.horizontal:i.Dx=i.Delta.X/i.Delta.Y},c.ClipperBase.prototype.InsertLocalMinima=function(i){if(this.m_MinimaList===null)this.m_MinimaList=i;else if(i.Y>=this.m_MinimaList.Y)i.Next=this.m_MinimaList,this.m_MinimaList=i;else{for(var t=this.m_MinimaList;t.Next!==null&&i.Y<t.Next.Y;)t=t.Next;i.Next=t.Next,t.Next=i}},c.ClipperBase.prototype.PopLocalMinima=function(i,t){return t.v=this.m_CurrentLM,this.m_CurrentLM!==null&&this.m_CurrentLM.Y===i?(this.m_CurrentLM=this.m_CurrentLM.Next,!0):!1},c.ClipperBase.prototype.ReverseHorizontal=function(i){var t=i.Top.X;i.Top.X=i.Bot.X,i.Bot.X=t,c.use_xyz&&(t=i.Top.Z,i.Top.Z=i.Bot.Z,i.Bot.Z=t)},c.ClipperBase.prototype.Reset=function(){var i=this;if(this.m_CurrentLM=this.m_MinimaList,this.m_CurrentLM!==null){this.m_Scanbeam=null;for(var t=this.m_MinimaList;t!==null;){i.InsertScanbeam(t.Y);var e=t.LeftBound;e!==null&&(e.Curr.X=e.Bot.X,e.Curr.Y=e.Bot.Y,c.use_xyz&&(e.Curr.Z=e.Bot.Z),e.OutIdx=c.ClipperBase.Unassigned),e=t.RightBound,e!==null&&(e.Curr.X=e.Bot.X,e.Curr.Y=e.Bot.Y,c.use_xyz&&(e.Curr.Z=e.Bot.Z),e.OutIdx=c.ClipperBase.Unassigned),t=t.Next}this.m_ActiveEdges=null}},c.ClipperBase.prototype.InsertScanbeam=function(i){if(this.m_Scanbeam===null)this.m_Scanbeam=new c.Scanbeam,this.m_Scanbeam.Next=null,this.m_Scanbeam.Y=i;else if(i>this.m_Scanbeam.Y){var t=new c.Scanbeam;t.Y=i,t.Next=this.m_Scanbeam,this.m_Scanbeam=t}else{for(var e=this.m_Scanbeam;e.Next!==null&&i<=e.Next.Y;)e=e.Next;if(i===e.Y)return;var r=new c.Scanbeam;r.Y=i,r.Next=e.Next,e.Next=r}},c.ClipperBase.prototype.PopScanbeam=function(i){return this.m_Scanbeam===null?(i.v=0,!1):(i.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},c.ClipperBase.prototype.LocalMinimaPending=function(){return this.m_CurrentLM!==null},c.ClipperBase.prototype.CreateOutRec=function(){var i=new c.OutRec;return i.Idx=c.ClipperBase.Unassigned,i.IsHole=!1,i.IsOpen=!1,i.FirstLeft=null,i.Pts=null,i.BottomPt=null,i.PolyNode=null,this.m_PolyOuts.push(i),i.Idx=this.m_PolyOuts.length-1,i},c.ClipperBase.prototype.DisposeOutRec=function(i){var t=this.m_PolyOuts[i];t.Pts=null,t=null,this.m_PolyOuts[i]=null},c.ClipperBase.prototype.UpdateEdgeIntoAEL=function(i){i.NextInLML===null&&c.Error("UpdateEdgeIntoAEL: invalid call");var t=i.PrevInAEL,e=i.NextInAEL;return i.NextInLML.OutIdx=i.OutIdx,t!==null?t.NextInAEL=i.NextInLML:this.m_ActiveEdges=i.NextInLML,e!==null&&(e.PrevInAEL=i.NextInLML),i.NextInLML.Side=i.Side,i.NextInLML.WindDelta=i.WindDelta,i.NextInLML.WindCnt=i.WindCnt,i.NextInLML.WindCnt2=i.WindCnt2,i=i.NextInLML,i.Curr.X=i.Bot.X,i.Curr.Y=i.Bot.Y,i.PrevInAEL=t,i.NextInAEL=e,c.ClipperBase.IsHorizontal(i)||this.InsertScanbeam(i.Top.Y),i},c.ClipperBase.prototype.SwapPositionsInAEL=function(i,t){if(!(i.NextInAEL===i.PrevInAEL||t.NextInAEL===t.PrevInAEL)){if(i.NextInAEL===t){var e=t.NextInAEL;e!==null&&(e.PrevInAEL=i);var r=i.PrevInAEL;r!==null&&(r.NextInAEL=t),t.PrevInAEL=r,t.NextInAEL=i,i.PrevInAEL=t,i.NextInAEL=e}else if(t.NextInAEL===i){var n=i.NextInAEL;n!==null&&(n.PrevInAEL=t);var s=t.PrevInAEL;s!==null&&(s.NextInAEL=i),i.PrevInAEL=s,i.NextInAEL=t,t.PrevInAEL=i,t.NextInAEL=n}else{var o=i.NextInAEL,a=i.PrevInAEL;i.NextInAEL=t.NextInAEL,i.NextInAEL!==null&&(i.NextInAEL.PrevInAEL=i),i.PrevInAEL=t.PrevInAEL,i.PrevInAEL!==null&&(i.PrevInAEL.NextInAEL=i),t.NextInAEL=o,t.NextInAEL!==null&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=a,t.PrevInAEL!==null&&(t.PrevInAEL.NextInAEL=t)}i.PrevInAEL===null?this.m_ActiveEdges=i:t.PrevInAEL===null&&(this.m_ActiveEdges=t)}},c.ClipperBase.prototype.DeleteFromAEL=function(i){var t=i.PrevInAEL,e=i.NextInAEL;t===null&&e===null&&i!==this.m_ActiveEdges||(t!==null?t.NextInAEL=e:this.m_ActiveEdges=e,e!==null&&(e.PrevInAEL=t),i.NextInAEL=null,i.PrevInAEL=null)},c.Clipper=function(i){typeof i>"u"&&(i=0),this.m_PolyOuts=null,this.m_ClipType=c.ClipType.ctIntersection,this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=null,this.m_IntersectNodeComparer=null,this.m_ExecuteLocked=!1,this.m_ClipFillType=c.PolyFillType.pftEvenOdd,this.m_SubjFillType=c.PolyFillType.pftEvenOdd,this.m_Joins=null,this.m_GhostJoins=null,this.m_UsingPolyTree=!1,this.ReverseSolution=!1,this.StrictlySimple=!1,c.ClipperBase.call(this),this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=new Array,this.m_IntersectNodeComparer=c.MyIntersectNodeSort.Compare,this.m_ExecuteLocked=!1,this.m_UsingPolyTree=!1,this.m_PolyOuts=new Array,this.m_Joins=new Array,this.m_GhostJoins=new Array,this.ReverseSolution=(1&i)!==0,this.StrictlySimple=(2&i)!==0,this.PreserveCollinear=(4&i)!==0,c.use_xyz&&(this.ZFillFunction=null)},c.Clipper.ioReverseSolution=1,c.Clipper.ioStrictlySimple=2,c.Clipper.ioPreserveCollinear=4,c.Clipper.prototype.Clear=function(){this.m_edges.length!==0&&(this.DisposeAllPolyPts(),c.ClipperBase.prototype.Clear.call(this))},c.Clipper.prototype.InsertMaxima=function(i){var t=new c.Maxima;if(t.X=i,this.m_Maxima===null)this.m_Maxima=t,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(i<this.m_Maxima.X)t.Next=this.m_Maxima,t.Prev=null,this.m_Maxima=t;else{for(var e=this.m_Maxima;e.Next!==null&&i>=e.Next.X;)e=e.Next;if(i===e.X)return;t.Next=e.Next,t.Prev=e,e.Next!==null&&(e.Next.Prev=t),e.Next=t}},c.Clipper.prototype.Execute=function(){var i=arguments,t=i.length,e=i[1]instanceof c.PolyTree;if(t===4&&!e){var r=i[0],n=i[1],s=i[2],o=i[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&c.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,c.Clear(n),this.m_SubjFillType=s,this.m_ClipFillType=o,this.m_ClipType=r,this.m_UsingPolyTree=!1;try{var a=this.ExecuteInternal();a&&this.BuildResult(n)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}else if(t===4&&e){var r=i[0],h=i[1],s=i[2],o=i[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=s,this.m_ClipFillType=o,this.m_ClipType=r,this.m_UsingPolyTree=!0;try{var a=this.ExecuteInternal();a&&this.BuildResult2(h)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}else if(t===2&&!e){var r=i[0],n=i[1];return this.Execute(r,n,c.PolyFillType.pftEvenOdd,c.PolyFillType.pftEvenOdd)}else if(t===2&&e){var r=i[0],h=i[1];return this.Execute(r,h,c.PolyFillType.pftEvenOdd,c.PolyFillType.pftEvenOdd)}},c.Clipper.prototype.FixHoleLinkage=function(i){if(!(i.FirstLeft===null||i.IsHole!==i.FirstLeft.IsHole&&i.FirstLeft.Pts!==null)){for(var t=i.FirstLeft;t!==null&&(t.IsHole===i.IsHole||t.Pts===null);)t=t.FirstLeft;i.FirstLeft=t}},c.Clipper.prototype.ExecuteInternal=function(){var i=this;try{this.Reset(),this.m_SortedEdges=null,this.m_Maxima=null;var t={},e={};if(!this.PopScanbeam(t))return!1;for(this.InsertLocalMinimaIntoAEL(t.v);this.PopScanbeam(e)||this.LocalMinimaPending();){if(i.ProcessHorizontals(),i.m_GhostJoins.length=0,!i.ProcessIntersections(e.v))return!1;i.ProcessEdgesAtTopOfScanbeam(e.v),t.v=e.v,i.InsertLocalMinimaIntoAEL(t.v)}var r,n,s;for(n=0,s=this.m_PolyOuts.length;n<s;n++)r=i.m_PolyOuts[n],!(r.Pts===null||r.IsOpen)&&(r.IsHole^i.ReverseSolution)==i.Area$1(r)>0&&i.ReversePolyPtLinks(r.Pts);for(this.JoinCommonEdges(),n=0,s=this.m_PolyOuts.length;n<s;n++)r=i.m_PolyOuts[n],r.Pts!==null&&(r.IsOpen?i.FixupOutPolyline(r):i.FixupOutPolygon(r));return this.StrictlySimple&&this.DoSimplePolygons(),!0}finally{this.m_Joins.length=0,this.m_GhostJoins.length=0}},c.Clipper.prototype.DisposeAllPolyPts=function(){for(var i=this,t=0,e=this.m_PolyOuts.length;t<e;++t)i.DisposeOutRec(t);c.Clear(this.m_PolyOuts)},c.Clipper.prototype.AddJoin=function(i,t,e){var r=new c.Join;r.OutPt1=i,r.OutPt2=t,r.OffPt.X=e.X,r.OffPt.Y=e.Y,c.use_xyz&&(r.OffPt.Z=e.Z),this.m_Joins.push(r)},c.Clipper.prototype.AddGhostJoin=function(i,t){var e=new c.Join;e.OutPt1=i,e.OffPt.X=t.X,e.OffPt.Y=t.Y,c.use_xyz&&(e.OffPt.Z=t.Z),this.m_GhostJoins.push(e)},c.Clipper.prototype.SetZ=function(i,t,e){if(this.ZFillFunction!==null){if(i.Z!==0||this.ZFillFunction===null)return;c.FPoint.op_Equality(i,t.Bot)?i.Z=t.Bot.Z:c.FPoint.op_Equality(i,t.Top)?i.Z=t.Top.Z:c.FPoint.op_Equality(i,e.Bot)?i.Z=e.Bot.Z:c.FPoint.op_Equality(i,e.Top)?i.Z=e.Top.Z:this.ZFillFunction(t.Bot,t.Top,e.Bot,e.Top,i)}},c.Clipper.prototype.InsertLocalMinimaIntoAEL=function(i){for(var t=this,e={},r,n;this.PopLocalMinima(i,e);){r=e.v.LeftBound,n=e.v.RightBound;var s=null;if(r===null?(t.InsertEdgeIntoAEL(n,null),t.SetWindingCount(n),t.IsContributing(n)&&(s=t.AddOutPt(n,n.Bot))):n===null?(t.InsertEdgeIntoAEL(r,null),t.SetWindingCount(r),t.IsContributing(r)&&(s=t.AddOutPt(r,r.Bot)),t.InsertScanbeam(r.Top.Y)):(t.InsertEdgeIntoAEL(r,null),t.InsertEdgeIntoAEL(n,r),t.SetWindingCount(r),n.WindCnt=r.WindCnt,n.WindCnt2=r.WindCnt2,t.IsContributing(r)&&(s=t.AddLocalMinPoly(r,n,r.Bot)),t.InsertScanbeam(r.Top.Y)),n!==null&&(c.ClipperBase.IsHorizontal(n)?(n.NextInLML!==null&&t.InsertScanbeam(n.NextInLML.Top.Y),t.AddEdgeToSEL(n)):t.InsertScanbeam(n.Top.Y)),!(r===null||n===null)){if(s!==null&&c.ClipperBase.IsHorizontal(n)&&t.m_GhostJoins.length>0&&n.WindDelta!==0)for(var o=0,a=this.m_GhostJoins.length;o<a;o++){var h=t.m_GhostJoins[o];t.HorzSegmentsOverlap(h.OutPt1.Pt.X,h.OffPt.X,n.Bot.X,n.Top.X)&&t.AddJoin(h.OutPt1,s,h.OffPt)}if(r.OutIdx>=0&&r.PrevInAEL!==null&&r.PrevInAEL.Curr.X===r.Bot.X&&r.PrevInAEL.OutIdx>=0&&c.ClipperBase.SlopesEqual5(r.PrevInAEL.Curr,r.PrevInAEL.Top,r.Curr,r.Top)&&r.WindDelta!==0&&r.PrevInAEL.WindDelta!==0){var l=t.AddOutPt(r.PrevInAEL,r.Bot);t.AddJoin(s,l,r.Top)}if(r.NextInAEL!==n){if(n.OutIdx>=0&&n.PrevInAEL.OutIdx>=0&&c.ClipperBase.SlopesEqual5(n.PrevInAEL.Curr,n.PrevInAEL.Top,n.Curr,n.Top)&&n.WindDelta!==0&&n.PrevInAEL.WindDelta!==0){var l=t.AddOutPt(n.PrevInAEL,n.Bot);t.AddJoin(s,l,n.Top)}var u=r.NextInAEL;if(u!==null)for(;u!==n;)t.IntersectEdges(n,u,r.Curr),u=u.NextInAEL}}}},c.Clipper.prototype.InsertEdgeIntoAEL=function(i,t){if(this.m_ActiveEdges===null)i.PrevInAEL=null,i.NextInAEL=null,this.m_ActiveEdges=i;else if(t===null&&this.E2InsertsBeforeE1(this.m_ActiveEdges,i))i.PrevInAEL=null,i.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges.PrevInAEL=i,this.m_ActiveEdges=i;else{for(t===null&&(t=this.m_ActiveEdges);t.NextInAEL!==null&&!this.E2InsertsBeforeE1(t.NextInAEL,i);)t=t.NextInAEL;i.NextInAEL=t.NextInAEL,t.NextInAEL!==null&&(t.NextInAEL.PrevInAEL=i),i.PrevInAEL=t,t.NextInAEL=i}},c.Clipper.prototype.E2InsertsBeforeE1=function(i,t){return t.Curr.X===i.Curr.X?t.Top.Y>i.Top.Y?t.Top.X<c.Clipper.TopX(i,t.Top.Y):i.Top.X>c.Clipper.TopX(t,i.Top.Y):t.Curr.X<i.Curr.X},c.Clipper.prototype.IsEvenOddFillType=function(i){return i.PolyTyp===c.PolyType.ptSubject?this.m_SubjFillType===c.PolyFillType.pftEvenOdd:this.m_ClipFillType===c.PolyFillType.pftEvenOdd},c.Clipper.prototype.IsEvenOddAltFillType=function(i){return i.PolyTyp===c.PolyType.ptSubject?this.m_ClipFillType===c.PolyFillType.pftEvenOdd:this.m_SubjFillType===c.PolyFillType.pftEvenOdd},c.Clipper.prototype.IsContributing=function(i){var t,e;switch(i.PolyTyp===c.PolyType.ptSubject?(t=this.m_SubjFillType,e=this.m_ClipFillType):(t=this.m_ClipFillType,e=this.m_SubjFillType),t){case c.PolyFillType.pftEvenOdd:if(i.WindDelta===0&&i.WindCnt!==1)return!1;break;case c.PolyFillType.pftNonZero:if(Math.abs(i.WindCnt)!==1)return!1;break;case c.PolyFillType.pftPositive:if(i.WindCnt!==1)return!1;break;default:if(i.WindCnt!==-1)return!1;break}switch(this.m_ClipType){case c.ClipType.ctIntersection:switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2!==0;case c.PolyFillType.pftPositive:return i.WindCnt2>0;default:return i.WindCnt2<0}case c.ClipType.ctUnion:switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}case c.ClipType.ctDifference:if(i.PolyTyp===c.PolyType.ptSubject)switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}else switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2!==0;case c.PolyFillType.pftPositive:return i.WindCnt2>0;default:return i.WindCnt2<0}case c.ClipType.ctXor:if(i.WindDelta===0)switch(e){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return i.WindCnt2===0;case c.PolyFillType.pftPositive:return i.WindCnt2<=0;default:return i.WindCnt2>=0}else return!0}return!0},c.Clipper.prototype.SetWindingCount=function(i){for(var t=i.PrevInAEL;t!==null&&(t.PolyTyp!==i.PolyTyp||t.WindDelta===0);)t=t.PrevInAEL;if(t===null){var e=i.PolyTyp===c.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType;i.WindDelta===0?i.WindCnt=e===c.PolyFillType.pftNegative?-1:1:i.WindCnt=i.WindDelta,i.WindCnt2=0,t=this.m_ActiveEdges}else if(i.WindDelta===0&&this.m_ClipType!==c.ClipType.ctUnion)i.WindCnt=1,i.WindCnt2=t.WindCnt2,t=t.NextInAEL;else if(this.IsEvenOddFillType(i)){if(i.WindDelta===0){for(var r=!0,n=t.PrevInAEL;n!==null;)n.PolyTyp===t.PolyTyp&&n.WindDelta!==0&&(r=!r),n=n.PrevInAEL;i.WindCnt=r?0:1}else i.WindCnt=i.WindDelta;i.WindCnt2=t.WindCnt2,t=t.NextInAEL}else t.WindCnt*t.WindDelta<0?Math.abs(t.WindCnt)>1?t.WindDelta*i.WindDelta<0?i.WindCnt=t.WindCnt:i.WindCnt=t.WindCnt+i.WindDelta:i.WindCnt=i.WindDelta===0?1:i.WindDelta:i.WindDelta===0?i.WindCnt=t.WindCnt<0?t.WindCnt-1:t.WindCnt+1:t.WindDelta*i.WindDelta<0?i.WindCnt=t.WindCnt:i.WindCnt=t.WindCnt+i.WindDelta,i.WindCnt2=t.WindCnt2,t=t.NextInAEL;if(this.IsEvenOddAltFillType(i))for(;t!==i;)t.WindDelta!==0&&(i.WindCnt2=i.WindCnt2===0?1:0),t=t.NextInAEL;else for(;t!==i;)i.WindCnt2+=t.WindDelta,t=t.NextInAEL},c.Clipper.prototype.AddEdgeToSEL=function(i){this.m_SortedEdges===null?(this.m_SortedEdges=i,i.PrevInSEL=null,i.NextInSEL=null):(i.NextInSEL=this.m_SortedEdges,i.PrevInSEL=null,this.m_SortedEdges.PrevInSEL=i,this.m_SortedEdges=i)},c.Clipper.prototype.PopEdgeFromSEL=function(i){if(i.v=this.m_SortedEdges,i.v===null)return!1;var t=i.v;return this.m_SortedEdges=i.v.NextInSEL,this.m_SortedEdges!==null&&(this.m_SortedEdges.PrevInSEL=null),t.NextInSEL=null,t.PrevInSEL=null,!0},c.Clipper.prototype.CopyAELToSEL=function(){var i=this.m_ActiveEdges;for(this.m_SortedEdges=i;i!==null;)i.PrevInSEL=i.PrevInAEL,i.NextInSEL=i.NextInAEL,i=i.NextInAEL},c.Clipper.prototype.SwapPositionsInSEL=function(i,t){if(!(i.NextInSEL===null&&i.PrevInSEL===null)&&!(t.NextInSEL===null&&t.PrevInSEL===null)){if(i.NextInSEL===t){var e=t.NextInSEL;e!==null&&(e.PrevInSEL=i);var r=i.PrevInSEL;r!==null&&(r.NextInSEL=t),t.PrevInSEL=r,t.NextInSEL=i,i.PrevInSEL=t,i.NextInSEL=e}else if(t.NextInSEL===i){var e=i.NextInSEL;e!==null&&(e.PrevInSEL=t);var r=t.PrevInSEL;r!==null&&(r.NextInSEL=i),i.PrevInSEL=r,i.NextInSEL=t,t.PrevInSEL=i,t.NextInSEL=e}else{var e=i.NextInSEL,r=i.PrevInSEL;i.NextInSEL=t.NextInSEL,i.NextInSEL!==null&&(i.NextInSEL.PrevInSEL=i),i.PrevInSEL=t.PrevInSEL,i.PrevInSEL!==null&&(i.PrevInSEL.NextInSEL=i),t.NextInSEL=e,t.NextInSEL!==null&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=r,t.PrevInSEL!==null&&(t.PrevInSEL.NextInSEL=t)}i.PrevInSEL===null?this.m_SortedEdges=i:t.PrevInSEL===null&&(this.m_SortedEdges=t)}},c.Clipper.prototype.AddLocalMaxPoly=function(i,t,e){this.AddOutPt(i,e),t.WindDelta===0&&this.AddOutPt(t,e),i.OutIdx===t.OutIdx?(i.OutIdx=-1,t.OutIdx=-1):i.OutIdx<t.OutIdx?this.AppendPolygon(i,t):this.AppendPolygon(t,i)},c.Clipper.prototype.AddLocalMinPoly=function(i,t,e){var r,n,s;if(c.ClipperBase.IsHorizontal(t)||i.Dx>t.Dx?(r=this.AddOutPt(i,e),t.OutIdx=i.OutIdx,i.Side=c.EdgeSide.esLeft,t.Side=c.EdgeSide.esRight,n=i,n.PrevInAEL===t?s=t.PrevInAEL:s=n.PrevInAEL):(r=this.AddOutPt(t,e),i.OutIdx=t.OutIdx,i.Side=c.EdgeSide.esRight,t.Side=c.EdgeSide.esLeft,n=t,n.PrevInAEL===i?s=i.PrevInAEL:s=n.PrevInAEL),s!==null&&s.OutIdx>=0&&s.Top.Y<e.Y&&n.Top.Y<e.Y){var o=c.Clipper.TopX(s,e.Y),a=c.Clipper.TopX(n,e.Y);if(o===a&&n.WindDelta!==0&&s.WindDelta!==0&&c.ClipperBase.SlopesEqual5(new c.FPoint2(o,e.Y),s.Top,new c.FPoint2(a,e.Y),n.Top)){var h=this.AddOutPt(s,e);this.AddJoin(r,h,n.Top)}}return r},c.Clipper.prototype.AddOutPt=function(i,t){if(i.OutIdx<0){var e=this.CreateOutRec();e.IsOpen=i.WindDelta===0;var r=new c.OutPt;return e.Pts=r,r.Idx=e.Idx,r.Pt.X=t.X,r.Pt.Y=t.Y,c.use_xyz&&(r.Pt.Z=t.Z),r.Next=r,r.Prev=r,e.IsOpen||this.SetHoleState(i,e),i.OutIdx=e.Idx,r}else{var e=this.m_PolyOuts[i.OutIdx],n=e.Pts,s=i.Side===c.EdgeSide.esLeft;if(s&&c.FPoint.op_Equality(t,n.Pt))return n;if(!s&&c.FPoint.op_Equality(t,n.Prev.Pt))return n.Prev;var r=new c.OutPt;return r.Idx=e.Idx,r.Pt.X=t.X,r.Pt.Y=t.Y,c.use_xyz&&(r.Pt.Z=t.Z),r.Next=n,r.Prev=n.Prev,r.Prev.Next=r,n.Prev=r,s&&(e.Pts=r),r}},c.Clipper.prototype.GetLastOutPt=function(i){var t=this.m_PolyOuts[i.OutIdx];return i.Side===c.EdgeSide.esLeft?t.Pts:t.Pts.Prev},c.Clipper.prototype.SwapPoints=function(i,t){var e=new c.FPoint1(i.Value);i.Value.X=t.Value.X,i.Value.Y=t.Value.Y,c.use_xyz&&(i.Value.Z=t.Value.Z),t.Value.X=e.X,t.Value.Y=e.Y,c.use_xyz&&(t.Value.Z=e.Z)},c.Clipper.prototype.HorzSegmentsOverlap=function(i,t,e,r){var n;return i>t&&(n=i,i=t,t=n),e>r&&(n=e,e=r,r=n),i<r&&e<t},c.Clipper.prototype.SetHoleState=function(i,t){for(var e=i.PrevInAEL,r=null;e!==null;)e.OutIdx>=0&&e.WindDelta!==0&&(r===null?r=e:r.OutIdx===e.OutIdx&&(r=null)),e=e.PrevInAEL;r===null?(t.FirstLeft=null,t.IsHole=!1):(t.FirstLeft=this.m_PolyOuts[r.OutIdx],t.IsHole=!t.FirstLeft.IsHole)},c.Clipper.prototype.GetDx=function(i,t){return i.Y===t.Y?c.ClipperBase.horizontal:(t.X-i.X)/(t.Y-i.Y)},c.Clipper.prototype.FirstIsBottomPt=function(i,t){for(var e=i.Prev;c.FPoint.op_Equality(e.Pt,i.Pt)&&e!==i;)e=e.Prev;var r=Math.abs(this.GetDx(i.Pt,e.Pt));for(e=i.Next;c.FPoint.op_Equality(e.Pt,i.Pt)&&e!==i;)e=e.Next;var n=Math.abs(this.GetDx(i.Pt,e.Pt));for(e=t.Prev;c.FPoint.op_Equality(e.Pt,t.Pt)&&e!==t;)e=e.Prev;var s=Math.abs(this.GetDx(t.Pt,e.Pt));for(e=t.Next;c.FPoint.op_Equality(e.Pt,t.Pt)&&e!==t;)e=e.Next;var o=Math.abs(this.GetDx(t.Pt,e.Pt));return Math.max(r,n)===Math.max(s,o)&&Math.min(r,n)===Math.min(s,o)?this.Area(i)>0:r>=s&&r>=o||n>=s&&n>=o},c.Clipper.prototype.GetBottomPt=function(i){for(var t=this,e=null,r=i.Next;r!==i;)r.Pt.Y>i.Pt.Y?(i=r,e=null):r.Pt.Y===i.Pt.Y&&r.Pt.X<=i.Pt.X&&(r.Pt.X<i.Pt.X?(e=null,i=r):r.Next!==i&&r.Prev!==i&&(e=r)),r=r.Next;if(e!==null)for(;e!==r;)for(t.FirstIsBottomPt(r,e)||(i=e),e=e.Next;c.FPoint.op_Inequality(e.Pt,i.Pt);)e=e.Next;return i},c.Clipper.prototype.GetLowermostRec=function(i,t){i.BottomPt===null&&(i.BottomPt=this.GetBottomPt(i.Pts)),t.BottomPt===null&&(t.BottomPt=this.GetBottomPt(t.Pts));var e=i.BottomPt,r=t.BottomPt;return e.Pt.Y>r.Pt.Y?i:e.Pt.Y<r.Pt.Y?t:e.Pt.X<r.Pt.X?i:e.Pt.X>r.Pt.X||e.Next===e?t:r.Next===r||this.FirstIsBottomPt(e,r)?i:t},c.Clipper.prototype.OutRec1RightOfOutRec2=function(i,t){do if(i=i.FirstLeft,i===t)return!0;while(i!==null);return!1},c.Clipper.prototype.GetOutRec=function(i){for(var t=this,e=this.m_PolyOuts[i];e!==this.m_PolyOuts[e.Idx];)e=t.m_PolyOuts[e.Idx];return e},c.Clipper.prototype.AppendPolygon=function(i,t){var e=this.m_PolyOuts[i.OutIdx],r=this.m_PolyOuts[t.OutIdx],n;this.OutRec1RightOfOutRec2(e,r)?n=r:this.OutRec1RightOfOutRec2(r,e)?n=e:n=this.GetLowermostRec(e,r);var s=e.Pts,o=s.Prev,a=r.Pts,h=a.Prev;i.Side===c.EdgeSide.esLeft?t.Side===c.EdgeSide.esLeft?(this.ReversePolyPtLinks(a),a.Next=s,s.Prev=a,o.Next=h,h.Prev=o,e.Pts=h):(h.Next=s,s.Prev=h,a.Prev=o,o.Next=a,e.Pts=a):t.Side===c.EdgeSide.esRight?(this.ReversePolyPtLinks(a),o.Next=h,h.Prev=o,a.Next=s,s.Prev=a):(o.Next=a,a.Prev=o,s.Prev=h,h.Next=s),e.BottomPt=null,n===r&&(r.FirstLeft!==e&&(e.FirstLeft=r.FirstLeft),e.IsHole=r.IsHole),r.Pts=null,r.BottomPt=null,r.FirstLeft=e;var l=i.OutIdx,u=t.OutIdx;i.OutIdx=-1,t.OutIdx=-1;for(var f=this.m_ActiveEdges;f!==null;){if(f.OutIdx===u){f.OutIdx=l,f.Side=i.Side;break}f=f.NextInAEL}r.Idx=e.Idx},c.Clipper.prototype.ReversePolyPtLinks=function(i){if(i!==null){var t,e;t=i;do e=t.Next,t.Next=t.Prev,t.Prev=e,t=e;while(t!==i)}},c.Clipper.SwapSides=function(i,t){var e=i.Side;i.Side=t.Side,t.Side=e},c.Clipper.SwapPolyIndexes=function(i,t){var e=i.OutIdx;i.OutIdx=t.OutIdx,t.OutIdx=e},c.Clipper.prototype.IntersectEdges=function(i,t,e){var r=i.OutIdx>=0,n=t.OutIdx>=0;if(c.use_xyz&&this.SetZ(e,i,t),c.use_lines&&(i.WindDelta===0||t.WindDelta===0)){if(i.WindDelta===0&&t.WindDelta===0)return;i.PolyTyp===t.PolyTyp&&i.WindDelta!==t.WindDelta&&this.m_ClipType===c.ClipType.ctUnion?i.WindDelta===0?n&&(this.AddOutPt(i,e),r&&(i.OutIdx=-1)):r&&(this.AddOutPt(t,e),n&&(t.OutIdx=-1)):i.PolyTyp!==t.PolyTyp&&(i.WindDelta===0&&Math.abs(t.WindCnt)===1&&(this.m_ClipType!==c.ClipType.ctUnion||t.WindCnt2===0)?(this.AddOutPt(i,e),r&&(i.OutIdx=-1)):t.WindDelta===0&&Math.abs(i.WindCnt)===1&&(this.m_ClipType!==c.ClipType.ctUnion||i.WindCnt2===0)&&(this.AddOutPt(t,e),n&&(t.OutIdx=-1)));return}if(i.PolyTyp===t.PolyTyp)if(this.IsEvenOddFillType(i)){var s=i.WindCnt;i.WindCnt=t.WindCnt,t.WindCnt=s}else i.WindCnt+t.WindDelta===0?i.WindCnt=-i.WindCnt:i.WindCnt+=t.WindDelta,t.WindCnt-i.WindDelta===0?t.WindCnt=-t.WindCnt:t.WindCnt-=i.WindDelta;else this.IsEvenOddFillType(t)?i.WindCnt2=i.WindCnt2===0?1:0:i.WindCnt2+=t.WindDelta,this.IsEvenOddFillType(i)?t.WindCnt2=t.WindCnt2===0?1:0:t.WindCnt2-=i.WindDelta;var o,a,h,l;i.PolyTyp===c.PolyType.ptSubject?(o=this.m_SubjFillType,h=this.m_ClipFillType):(o=this.m_ClipFillType,h=this.m_SubjFillType),t.PolyTyp===c.PolyType.ptSubject?(a=this.m_SubjFillType,l=this.m_ClipFillType):(a=this.m_ClipFillType,l=this.m_SubjFillType);var u,f;switch(o){case c.PolyFillType.pftPositive:u=i.WindCnt;break;case c.PolyFillType.pftNegative:u=-i.WindCnt;break;default:u=Math.abs(i.WindCnt);break}switch(a){case c.PolyFillType.pftPositive:f=t.WindCnt;break;case c.PolyFillType.pftNegative:f=-t.WindCnt;break;default:f=Math.abs(t.WindCnt);break}if(r&&n)u!==0&&u!==1||f!==0&&f!==1||i.PolyTyp!==t.PolyTyp&&this.m_ClipType!==c.ClipType.ctXor?this.AddLocalMaxPoly(i,t,e):(this.AddOutPt(i,e),this.AddOutPt(t,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if(r)(f===0||f===1)&&(this.AddOutPt(i,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if(n)(u===0||u===1)&&(this.AddOutPt(t,e),c.Clipper.SwapSides(i,t),c.Clipper.SwapPolyIndexes(i,t));else if((u===0||u===1)&&(f===0||f===1)){var p,d;switch(h){case c.PolyFillType.pftPositive:p=i.WindCnt2;break;case c.PolyFillType.pftNegative:p=-i.WindCnt2;break;default:p=Math.abs(i.WindCnt2);break}switch(l){case c.PolyFillType.pftPositive:d=t.WindCnt2;break;case c.PolyFillType.pftNegative:d=-t.WindCnt2;break;default:d=Math.abs(t.WindCnt2);break}if(i.PolyTyp!==t.PolyTyp)this.AddLocalMinPoly(i,t,e);else if(u===1&&f===1)switch(this.m_ClipType){case c.ClipType.ctIntersection:p>0&&d>0&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctUnion:p<=0&&d<=0&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctDifference:(i.PolyTyp===c.PolyType.ptClip&&p>0&&d>0||i.PolyTyp===c.PolyType.ptSubject&&p<=0&&d<=0)&&this.AddLocalMinPoly(i,t,e);break;case c.ClipType.ctXor:this.AddLocalMinPoly(i,t,e);break}else c.Clipper.SwapSides(i,t)}},c.Clipper.prototype.DeleteFromSEL=function(i){var t=i.PrevInSEL,e=i.NextInSEL;t===null&&e===null&&i!==this.m_SortedEdges||(t!==null?t.NextInSEL=e:this.m_SortedEdges=e,e!==null&&(e.PrevInSEL=t),i.NextInSEL=null,i.PrevInSEL=null)},c.Clipper.prototype.ProcessHorizontals=function(){for(var i=this,t={};this.PopEdgeFromSEL(t);)i.ProcessHorizontal(t.v)},c.Clipper.prototype.GetHorzDirection=function(i,t){i.Bot.X<i.Top.X?(t.Left=i.Bot.X,t.Right=i.Top.X,t.Dir=c.Direction.dLeftToRight):(t.Left=i.Top.X,t.Right=i.Bot.X,t.Dir=c.Direction.dRightToLeft)},c.Clipper.prototype.ProcessHorizontal=function(i){var t=this,e={Dir:null,Left:null,Right:null};this.GetHorzDirection(i,e);for(var r=e.Dir,n=e.Left,s=e.Right,o=i.WindDelta===0,a=i,h=null;a.NextInLML!==null&&c.ClipperBase.IsHorizontal(a.NextInLML);)a=a.NextInLML;a.NextInLML===null&&(h=this.GetMaximaPair(a));var l=this.m_Maxima;if(l!==null)if(r===c.Direction.dLeftToRight){for(;l!==null&&l.X<=i.Bot.X;)l=l.Next;l!==null&&l.X>=a.Top.X&&(l=null)}else{for(;l.Next!==null&&l.Next.X<i.Bot.X;)l=l.Next;l.X<=a.Top.X&&(l=null)}for(var u=null;;){for(var f=i===a,p=t.GetNextInAEL(i,r);p!==null;){if(l!==null)if(r===c.Direction.dLeftToRight)for(;l!==null&&l.X<p.Curr.X;)i.OutIdx>=0&&!o&&t.AddOutPt(i,new c.FPoint2(l.X,i.Bot.Y)),l=l.Next;else for(;l!==null&&l.X>p.Curr.X;)i.OutIdx>=0&&!o&&t.AddOutPt(i,new c.FPoint2(l.X,i.Bot.Y)),l=l.Prev;if(r===c.Direction.dLeftToRight&&p.Curr.X>s||r===c.Direction.dRightToLeft&&p.Curr.X<n||p.Curr.X===i.Top.X&&i.NextInLML!==null&&p.Dx<i.NextInLML.Dx)break;if(i.OutIdx>=0&&!o){c.use_xyz&&(r===c.Direction.dLeftToRight?t.SetZ(p.Curr,i,p):t.SetZ(p.Curr,p,i)),u=t.AddOutPt(i,p.Curr);for(var d=t.m_SortedEdges;d!==null;){if(d.OutIdx>=0&&t.HorzSegmentsOverlap(i.Bot.X,i.Top.X,d.Bot.X,d.Top.X)){var v=t.GetLastOutPt(d);t.AddJoin(v,u,d.Top)}d=d.NextInSEL}t.AddGhostJoin(u,i.Bot)}if(p===h&&f){i.OutIdx>=0&&t.AddLocalMaxPoly(i,h,i.Top),t.DeleteFromAEL(i),t.DeleteFromAEL(h);return}if(r===c.Direction.dLeftToRight){var m=new c.FPoint2(p.Curr.X,i.Curr.Y);t.IntersectEdges(i,p,m)}else{var m=new c.FPoint2(p.Curr.X,i.Curr.Y);t.IntersectEdges(p,i,m)}var y=t.GetNextInAEL(p,r);t.SwapPositionsInAEL(i,p),p=y}if(i.NextInLML===null||!c.ClipperBase.IsHorizontal(i.NextInLML))break;i=t.UpdateEdgeIntoAEL(i),i.OutIdx>=0&&t.AddOutPt(i,i.Bot),e={Dir:r,Left:n,Right:s},t.GetHorzDirection(i,e),r=e.Dir,n=e.Left,s=e.Right}if(i.OutIdx>=0&&u===null){u=this.GetLastOutPt(i);for(var d=this.m_SortedEdges;d!==null;){if(d.OutIdx>=0&&t.HorzSegmentsOverlap(i.Bot.X,i.Top.X,d.Bot.X,d.Top.X)){var v=t.GetLastOutPt(d);t.AddJoin(v,u,d.Top)}d=d.NextInSEL}this.AddGhostJoin(u,i.Top)}if(i.NextInLML!==null)if(i.OutIdx>=0){if(u=this.AddOutPt(i,i.Top),i=this.UpdateEdgeIntoAEL(i),i.WindDelta===0)return;var g=i.PrevInAEL,y=i.NextInAEL;if(g!==null&&g.Curr.X===i.Bot.X&&g.Curr.Y===i.Bot.Y&&g.WindDelta===0&&g.OutIdx>=0&&g.Curr.Y>g.Top.Y&&c.ClipperBase.SlopesEqual3(i,g)){var v=this.AddOutPt(g,i.Bot);this.AddJoin(u,v,i.Top)}else if(y!==null&&y.Curr.X===i.Bot.X&&y.Curr.Y===i.Bot.Y&&y.WindDelta!==0&&y.OutIdx>=0&&y.Curr.Y>y.Top.Y&&c.ClipperBase.SlopesEqual3(i,y)){var v=this.AddOutPt(y,i.Bot);this.AddJoin(u,v,i.Top)}}else i=this.UpdateEdgeIntoAEL(i);else i.OutIdx>=0&&this.AddOutPt(i,i.Top),this.DeleteFromAEL(i)},c.Clipper.prototype.GetNextInAEL=function(i,t){return t===c.Direction.dLeftToRight?i.NextInAEL:i.PrevInAEL},c.Clipper.prototype.IsMinima=function(i){return i!==null&&i.Prev.NextInLML!==i&&i.Next.NextInLML!==i},c.Clipper.prototype.IsMaxima=function(i,t){return i!==null&&i.Top.Y===t&&i.NextInLML===null},c.Clipper.prototype.IsIntermediate=function(i,t){return i.Top.Y===t&&i.NextInLML!==null},c.Clipper.prototype.GetMaximaPair=function(i){return c.FPoint.op_Equality(i.Next.Top,i.Top)&&i.Next.NextInLML===null?i.Next:c.FPoint.op_Equality(i.Prev.Top,i.Top)&&i.Prev.NextInLML===null?i.Prev:null},c.Clipper.prototype.GetMaximaPairEx=function(i){var t=this.GetMaximaPair(i);return t===null||t.OutIdx===c.ClipperBase.Skip||t.NextInAEL===t.PrevInAEL&&!c.ClipperBase.IsHorizontal(t)?null:t},c.Clipper.prototype.ProcessIntersections=function(i){if(this.m_ActiveEdges===null)return!0;try{if(this.BuildIntersectList(i),this.m_IntersectList.length===0)return!0;if(this.m_IntersectList.length===1||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch{this.m_SortedEdges=null,this.m_IntersectList.length=0,c.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},c.Clipper.prototype.BuildIntersectList=function(i){var t=this;if(this.m_ActiveEdges!==null){var e=this.m_ActiveEdges;for(this.m_SortedEdges=e;e!==null;)e.PrevInSEL=e.PrevInAEL,e.NextInSEL=e.NextInAEL,e.Curr.X=c.Clipper.TopX(e,i),e=e.NextInAEL;for(var r=!0;r&&this.m_SortedEdges!==null;){for(r=!1,e=t.m_SortedEdges;e.NextInSEL!==null;){var n=e.NextInSEL,s=new c.FPoint0;if(e.Curr.X>n.Curr.X){t.IntersectPoint(e,n,s),s.Y<i&&(s=new c.FPoint2(c.Clipper.TopX(e,i),i));var o=new c.IntersectNode;o.Edge1=e,o.Edge2=n,o.Pt.X=s.X,o.Pt.Y=s.Y,c.use_xyz&&(o.Pt.Z=s.Z),t.m_IntersectList.push(o),t.SwapPositionsInSEL(e,n),r=!0}else e=n}if(e.PrevInSEL!==null)e.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}},c.Clipper.prototype.EdgesAdjacent=function(i){return i.Edge1.NextInSEL===i.Edge2||i.Edge1.PrevInSEL===i.Edge2},c.Clipper.IntersectNodeSort=function(i,t){return t.Pt.Y-i.Pt.Y},c.Clipper.prototype.FixupIntersectionOrder=function(){var i=this;this.m_IntersectList.sort(this.m_IntersectNodeComparer),this.CopyAELToSEL();for(var t=this.m_IntersectList.length,e=0;e<t;e++){if(!i.EdgesAdjacent(i.m_IntersectList[e])){for(var r=e+1;r<t&&!this.EdgesAdjacent(this.m_IntersectList[r]);)r++;if(r===t)return!1;var n=i.m_IntersectList[e];i.m_IntersectList[e]=i.m_IntersectList[r],i.m_IntersectList[r]=n}i.SwapPositionsInSEL(i.m_IntersectList[e].Edge1,i.m_IntersectList[e].Edge2)}return!0},c.Clipper.prototype.ProcessIntersectList=function(){for(var i=this,t=0,e=this.m_IntersectList.length;t<e;t++){var r=i.m_IntersectList[t];i.IntersectEdges(r.Edge1,r.Edge2,r.Pt),i.SwapPositionsInAEL(r.Edge1,r.Edge2)}this.m_IntersectList.length=0},c.Clipper.TopX=function(i,t){return t===i.Top.Y?i.Top.X:i.Bot.X+i.Dx*(t-i.Bot.Y)},c.Clipper.prototype.IntersectPoint=function(i,t,e){e.X=0,e.Y=0;var r,n;if(i.Dx===t.Dx){e.Y=i.Curr.Y,e.X=c.Clipper.TopX(i,e.Y);return}if(i.Delta.X===0)e.X=i.Bot.X,c.ClipperBase.IsHorizontal(t)?e.Y=t.Bot.Y:(n=t.Bot.Y-t.Bot.X/t.Dx,e.Y=e.X/t.Dx+n);else if(t.Delta.X===0)e.X=t.Bot.X,c.ClipperBase.IsHorizontal(i)?e.Y=i.Bot.Y:(r=i.Bot.Y-i.Bot.X/i.Dx,e.Y=e.X/i.Dx+r);else{r=i.Bot.X-i.Bot.Y*i.Dx,n=t.Bot.X-t.Bot.Y*t.Dx;var s=(n-r)/(i.Dx-t.Dx);e.Y=s,Math.abs(i.Dx)<Math.abs(t.Dx)?e.X=i.Dx*s+r:e.X=t.Dx*s+n}if(e.Y<i.Top.Y||e.Y<t.Top.Y){if(i.Top.Y>t.Top.Y)return e.Y=i.Top.Y,e.X=c.Clipper.TopX(t,i.Top.Y),e.X<i.Top.X;e.Y=t.Top.Y,Math.abs(i.Dx)<Math.abs(t.Dx)?e.X=c.Clipper.TopX(i,e.Y):e.X=c.Clipper.TopX(t,e.Y)}e.Y>i.Curr.Y&&(e.Y=i.Curr.Y,Math.abs(i.Dx)>Math.abs(t.Dx)?e.X=c.Clipper.TopX(t,e.Y):e.X=c.Clipper.TopX(i,e.Y))},c.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(i){for(var t=this,e=this.m_ActiveEdges;e!==null;){var r=t.IsMaxima(e,i);if(r){var n=t.GetMaximaPairEx(e);r=n===null||!c.ClipperBase.IsHorizontal(n)}if(r){t.StrictlySimple&&t.InsertMaxima(e.Top.X);var s=e.PrevInAEL;t.DoMaxima(e),s===null?e=t.m_ActiveEdges:e=s.NextInAEL}else{if(t.IsIntermediate(e,i)&&c.ClipperBase.IsHorizontal(e.NextInLML)?(e=t.UpdateEdgeIntoAEL(e),e.OutIdx>=0&&t.AddOutPt(e,e.Bot),t.AddEdgeToSEL(e)):(e.Curr.X=c.Clipper.TopX(e,i),e.Curr.Y=i),c.use_xyz&&(e.Top.Y===i?e.Curr.Z=e.Top.Z:e.Bot.Y===i?e.Curr.Z=e.Bot.Z:e.Curr.Z=0),t.StrictlySimple){var s=e.PrevInAEL;if(e.OutIdx>=0&&e.WindDelta!==0&&s!==null&&s.OutIdx>=0&&s.Curr.X===e.Curr.X&&s.WindDelta!==0){var o=new c.FPoint1(e.Curr);c.use_xyz&&t.SetZ(o,s,e);var a=t.AddOutPt(s,o),h=t.AddOutPt(e,o);t.AddJoin(a,h,o)}}e=e.NextInAEL}}for(this.ProcessHorizontals(),this.m_Maxima=null,e=this.m_ActiveEdges;e!==null;){if(t.IsIntermediate(e,i)){var a=null;e.OutIdx>=0&&(a=t.AddOutPt(e,e.Top)),e=t.UpdateEdgeIntoAEL(e);var s=e.PrevInAEL,l=e.NextInAEL;if(s!==null&&s.Curr.X===e.Bot.X&&s.Curr.Y===e.Bot.Y&&a!==null&&s.OutIdx>=0&&s.Curr.Y===s.Top.Y&&c.ClipperBase.SlopesEqual5(e.Curr,e.Top,s.Curr,s.Top)&&e.WindDelta!==0&&s.WindDelta!==0){var h=t.AddOutPt(ePrev2,e.Bot);t.AddJoin(a,h,e.Top)}else if(l!==null&&l.Curr.X===e.Bot.X&&l.Curr.Y===e.Bot.Y&&a!==null&&l.OutIdx>=0&&l.Curr.Y===l.Top.Y&&c.ClipperBase.SlopesEqual5(e.Curr,e.Top,l.Curr,l.Top)&&e.WindDelta!==0&&l.WindDelta!==0){var h=t.AddOutPt(l,e.Bot);t.AddJoin(a,h,e.Top)}}e=e.NextInAEL}},c.Clipper.prototype.DoMaxima=function(i){var t=this,e=this.GetMaximaPairEx(i);if(e===null){i.OutIdx>=0&&this.AddOutPt(i,i.Top),this.DeleteFromAEL(i);return}for(var r=i.NextInAEL;r!==null&&r!==e;)t.IntersectEdges(i,r,i.Top),t.SwapPositionsInAEL(i,r),r=i.NextInAEL;i.OutIdx===-1&&e.OutIdx===-1?(this.DeleteFromAEL(i),this.DeleteFromAEL(e)):i.OutIdx>=0&&e.OutIdx>=0?(i.OutIdx>=0&&this.AddLocalMaxPoly(i,e,i.Top),this.DeleteFromAEL(i),this.DeleteFromAEL(e)):c.use_lines&&i.WindDelta===0?(i.OutIdx>=0&&(this.AddOutPt(i,i.Top),i.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(i),e.OutIdx>=0&&(this.AddOutPt(e,i.Top),e.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(e)):c.Error("DoMaxima error")},c.Clipper.ReversePaths=function(i){for(var t=0,e=i.length;t<e;t++)i[t].reverse()},c.Clipper.Orientation=function(i){return c.Clipper.Area(i)>=0},c.Clipper.prototype.PointCount=function(i){if(i===null)return 0;var t=0,e=i;do t++,e=e.Next;while(e!==i);return t},c.Clipper.prototype.BuildResult=function(i){var t=this;c.Clear(i);for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e];if(n.Pts!==null){var s=n.Pts.Prev,o=t.PointCount(s);if(!(o<2)){for(var a=new Array(o),h=0;h<o;h++)a[h]=s.Pt,s=s.Prev;i.push(a)}}}},c.Clipper.prototype.BuildResult2=function(i){var t=this;i.Clear();for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e],s=t.PointCount(n.Pts);if(!(n.IsOpen&&s<2||!n.IsOpen&&s<3)){t.FixHoleLinkage(n);var o=new c.PolyNode;i.m_AllPolys.push(o),n.PolyNode=o,o.m_polygon.length=s;for(var a=n.Pts.Prev,h=0;h<s;h++)o.m_polygon[h]=a.Pt,a=a.Prev}}for(var e=0,r=this.m_PolyOuts.length;e<r;e++){var n=t.m_PolyOuts[e];n.PolyNode!==null&&(n.IsOpen?(n.PolyNode.IsOpen=!0,i.AddChild(n.PolyNode)):n.FirstLeft!==null&&n.FirstLeft.PolyNode!==null?n.FirstLeft.PolyNode.AddChild(n.PolyNode):i.AddChild(n.PolyNode))}},c.Clipper.prototype.FixupOutPolyline=function(i){for(var t=i.Pts,e=t.Prev;t!==e;)if(t=t.Next,c.FPoint.op_Equality(t.Pt,t.Prev.Pt)){t===e&&(e=t.Prev);var r=t.Prev;r.Next=t.Next,t.Next.Prev=r,t=r}t===t.Prev&&(i.Pts=null)},c.Clipper.prototype.FixupOutPolygon=function(i){var t=this,e=null;i.BottomPt=null;for(var r=i.Pts,n=this.PreserveCollinear||this.StrictlySimple;;){if(r.Prev===r||r.Prev===r.Next){i.Pts=null;return}if(c.FPoint.op_Equality(r.Pt,r.Next.Pt)||c.FPoint.op_Equality(r.Pt,r.Prev.Pt)||c.ClipperBase.SlopesEqual4(r.Prev.Pt,r.Pt,r.Next.Pt)&&(!n||!t.Pt2IsBetweenPt1AndPt3(r.Prev.Pt,r.Pt,r.Next.Pt)))e=null,r.Prev.Next=r.Next,r.Next.Prev=r.Prev,r=r.Prev;else{if(r===e)break;e===null&&(e=r),r=r.Next}}i.Pts=r},c.Clipper.prototype.DupOutPt=function(i,t){var e=new c.OutPt;return e.Pt.X=i.Pt.X,e.Pt.Y=i.Pt.Y,c.use_xyz&&(e.Pt.Z=i.Pt.Z),e.Idx=i.Idx,t?(e.Next=i.Next,e.Prev=i,i.Next.Prev=e,i.Next=e):(e.Prev=i.Prev,e.Next=i,i.Prev.Next=e,i.Prev=e),e},c.Clipper.prototype.GetOverlap=function(i,t,e,r,n){return i<t?e<r?(n.Left=Math.max(i,e),n.Right=Math.min(t,r)):(n.Left=Math.max(i,r),n.Right=Math.min(t,e)):e<r?(n.Left=Math.max(t,e),n.Right=Math.min(i,r)):(n.Left=Math.max(t,r),n.Right=Math.min(i,e)),n.Left<n.Right},c.Clipper.prototype.JoinHorz=function(i,t,e,r,n,s){var o=i.Pt.X>t.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight,a=e.Pt.X>r.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight;if(o===a)return!1;if(o===c.Direction.dLeftToRight){for(;i.Next.Pt.X<=n.X&&i.Next.Pt.X>=i.Pt.X&&i.Next.Pt.Y===n.Y;)i=i.Next;s&&i.Pt.X!==n.X&&(i=i.Next),t=this.DupOutPt(i,!s),c.FPoint.op_Inequality(t.Pt,n)&&(i=t,i.Pt.X=n.X,i.Pt.Y=n.Y,c.use_xyz&&(i.Pt.Z=n.Z),t=this.DupOutPt(i,!s))}else{for(;i.Next.Pt.X>=n.X&&i.Next.Pt.X<=i.Pt.X&&i.Next.Pt.Y===n.Y;)i=i.Next;!s&&i.Pt.X!==n.X&&(i=i.Next),t=this.DupOutPt(i,s),c.FPoint.op_Inequality(t.Pt,n)&&(i=t,i.Pt.X=n.X,i.Pt.Y=n.Y,c.use_xyz&&(i.Pt.Z=n.Z),t=this.DupOutPt(i,s))}if(a===c.Direction.dLeftToRight){for(;e.Next.Pt.X<=n.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y===n.Y;)e=e.Next;s&&e.Pt.X!==n.X&&(e=e.Next),r=this.DupOutPt(e,!s),c.FPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,c.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,!s))}else{for(;e.Next.Pt.X>=n.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y===n.Y;)e=e.Next;!s&&e.Pt.X!==n.X&&(e=e.Next),r=this.DupOutPt(e,s),c.FPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,c.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,s))}return o===c.Direction.dLeftToRight===s?(i.Prev=e,e.Next=i,t.Next=r,r.Prev=t):(i.Next=e,e.Prev=i,t.Prev=r,r.Next=t),!0},c.Clipper.prototype.JoinPoints=function(i,t,e){var r=i.OutPt1,n=new c.OutPt,s=i.OutPt2,o=new c.OutPt,a=i.OutPt1.Pt.Y===i.OffPt.Y;if(a&&c.FPoint.op_Equality(i.OffPt,i.OutPt1.Pt)&&c.FPoint.op_Equality(i.OffPt,i.OutPt2.Pt)){if(t!==e)return!1;for(n=i.OutPt1.Next;n!==r&&c.FPoint.op_Equality(n.Pt,i.OffPt);)n=n.Next;var h=n.Pt.Y>i.OffPt.Y;for(o=i.OutPt2.Next;o!==s&&c.FPoint.op_Equality(o.Pt,i.OffPt);)o=o.Next;var l=o.Pt.Y>i.OffPt.Y;return h===l?!1:h?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n,i.OutPt1=r,i.OutPt2=n,!0):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n,i.OutPt1=r,i.OutPt2=n,!0)}else if(a){for(n=r;r.Prev.Pt.Y===r.Pt.Y&&r.Prev!==n&&r.Prev!==s;)r=r.Prev;for(;n.Next.Pt.Y===n.Pt.Y&&n.Next!==r&&n.Next!==s;)n=n.Next;if(n.Next===r||n.Next===s)return!1;for(o=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==o&&s.Prev!==n;)s=s.Prev;for(;o.Next.Pt.Y===o.Pt.Y&&o.Next!==s&&o.Next!==r;)o=o.Next;if(o.Next===s||o.Next===r)return!1;var u={Left:null,Right:null};if(!this.GetOverlap(r.Pt.X,n.Pt.X,s.Pt.X,o.Pt.X,u))return!1;var f=u.Left,p=u.Right,d=new c.FPoint0,v;return r.Pt.X>=f&&r.Pt.X<=p?(d.X=r.Pt.X,d.Y=r.Pt.Y,c.use_xyz&&(d.Z=r.Pt.Z),v=r.Pt.X>n.Pt.X):s.Pt.X>=f&&s.Pt.X<=p?(d.X=s.Pt.X,d.Y=s.Pt.Y,c.use_xyz&&(d.Z=s.Pt.Z),v=s.Pt.X>o.Pt.X):n.Pt.X>=f&&n.Pt.X<=p?(d.X=n.Pt.X,d.Y=n.Pt.Y,c.use_xyz&&(d.Z=n.Pt.Z),v=n.Pt.X>r.Pt.X):(d.X=o.Pt.X,d.Y=o.Pt.Y,c.use_xyz&&(d.Z=o.Pt.Z),v=o.Pt.X>s.Pt.X),i.OutPt1=r,i.OutPt2=s,this.JoinHorz(r,n,s,o,d,v)}else{for(n=r.Next;c.FPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Next;var m=n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,i.OffPt);if(m){for(n=r.Prev;c.FPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,i.OffPt))return!1}for(o=s.Next;c.FPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Next;var y=o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,i.OffPt);if(y){for(o=s.Prev;c.FPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Prev;if(o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,i.OffPt))return!1}return n===r||o===s||n===o||t===e&&m===y?!1:m?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n,i.OutPt1=r,i.OutPt2=n,!0):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n,i.OutPt1=r,i.OutPt2=n,!0)}},c.Clipper.GetBounds=function(i){for(var t=0,e=i.length;t<e&&i[t].length===0;)t++;if(t===e)return new c.FRect(0,0,0,0);var r=new c.FRect;for(r.left=i[t][0].X,r.right=r.left,r.top=i[t][0].Y,r.bottom=r.top;t<e;t++)for(var n=0,s=i[t].length;n<s;n++)i[t][n].X<r.left?r.left=i[t][n].X:i[t][n].X>r.right&&(r.right=i[t][n].X),i[t][n].Y<r.top?r.top=i[t][n].Y:i[t][n].Y>r.bottom&&(r.bottom=i[t][n].Y);return r},c.Clipper.prototype.GetBounds2=function(i){var t=i,e=new c.FRect;for(e.left=i.Pt.X,e.right=i.Pt.X,e.top=i.Pt.Y,e.bottom=i.Pt.Y,i=i.Next;i!==t;)i.Pt.X<e.left&&(e.left=i.Pt.X),i.Pt.X>e.right&&(e.right=i.Pt.X),i.Pt.Y<e.top&&(e.top=i.Pt.Y),i.Pt.Y>e.bottom&&(e.bottom=i.Pt.Y),i=i.Next;return e},c.Clipper.PointInPolygon=function(i,t){var e=0,r=t.length;if(r<3)return 0;for(var n=t[0],s=1;s<=r;++s){var o=s===r?t[0]:t[s];if(o.Y===i.Y&&(o.X===i.X||n.Y===i.Y&&o.X>i.X==n.X<i.X))return-1;if(n.Y<i.Y!=o.Y<i.Y){if(n.X>=i.X)if(o.X>i.X)e=1-e;else{var a=(n.X-i.X)*(o.Y-i.Y)-(o.X-i.X)*(n.Y-i.Y);if(a===0)return-1;a>0==o.Y>n.Y&&(e=1-e)}else if(o.X>i.X){var a=(n.X-i.X)*(o.Y-i.Y)-(o.X-i.X)*(n.Y-i.Y);if(a===0)return-1;a>0==o.Y>n.Y&&(e=1-e)}}n=o}return e},c.Clipper.prototype.PointInPolygon=function(i,t){var e=0,r=t,n=i.X,s=i.Y,o=t.Pt.X,a=t.Pt.Y;do{t=t.Next;var h=t.Pt.X,l=t.Pt.Y;if(l===s&&(h===n||a===s&&h>n==o<n))return-1;if(a<s!=l<s){if(o>=n)if(h>n)e=1-e;else{var u=(o-n)*(l-s)-(h-n)*(a-s);if(u===0)return-1;u>0==l>a&&(e=1-e)}else if(h>n){var u=(o-n)*(l-s)-(h-n)*(a-s);if(u===0)return-1;u>0==l>a&&(e=1-e)}}o=h,a=l}while(r!==t);return e},c.Clipper.prototype.Poly2ContainsPoly1=function(i,t){var e=this,r=i;do{var n=e.PointInPolygon(r.Pt,t);if(n>=0)return n>0;r=r.Next}while(r!==i);return!0},c.Clipper.prototype.FixupFirstLefts1=function(i,t){for(var e=this,r,n,s=0,o=this.m_PolyOuts.length;s<o;s++)r=e.m_PolyOuts[s],n=c.Clipper.ParseFirstLeft(r.FirstLeft),r.Pts!==null&&n===i&&e.Poly2ContainsPoly1(r.Pts,t.Pts)&&(r.FirstLeft=t)},c.Clipper.prototype.FixupFirstLefts2=function(i,t){for(var e=this,r=t.FirstLeft,n,s,o=0,a=this.m_PolyOuts.length;o<a;o++)n=e.m_PolyOuts[o],!(n.Pts===null||n===t||n===i)&&(s=c.Clipper.ParseFirstLeft(n.FirstLeft),!(s!==r&&s!==i&&s!==t)&&(e.Poly2ContainsPoly1(n.Pts,i.Pts)?n.FirstLeft=i:e.Poly2ContainsPoly1(n.Pts,t.Pts)?n.FirstLeft=t:(n.FirstLeft===i||n.FirstLeft===t)&&(n.FirstLeft=r)))},c.Clipper.prototype.FixupFirstLefts3=function(i,t){for(var e=this,r,n,s=0,o=this.m_PolyOuts.length;s<o;s++)r=e.m_PolyOuts[s],n=c.Clipper.ParseFirstLeft(r.FirstLeft),r.Pts!==null&&n===i&&(r.FirstLeft=t)},c.Clipper.ParseFirstLeft=function(i){for(;i!==null&&i.Pts===null;)i=i.FirstLeft;return i},c.Clipper.prototype.JoinCommonEdges=function(){for(var i=this,t=0,e=this.m_Joins.length;t<e;t++){var r=i.m_Joins[t],n=i.GetOutRec(r.OutPt1.Idx),s=i.GetOutRec(r.OutPt2.Idx);if(!(n.Pts===null||s.Pts===null)&&!(n.IsOpen||s.IsOpen)){var o;n===s?o=n:i.OutRec1RightOfOutRec2(n,s)?o=s:i.OutRec1RightOfOutRec2(s,n)?o=n:o=i.GetLowermostRec(n,s),i.JoinPoints(r,n,s)&&(n===s?(n.Pts=r.OutPt1,n.BottomPt=null,s=i.CreateOutRec(),s.Pts=r.OutPt2,i.UpdateOutPtIdxs(s),i.Poly2ContainsPoly1(s.Pts,n.Pts)?(s.IsHole=!n.IsHole,s.FirstLeft=n,i.m_UsingPolyTree&&i.FixupFirstLefts2(s,n),(s.IsHole^i.ReverseSolution)==i.Area$1(s)>0&&i.ReversePolyPtLinks(s.Pts)):i.Poly2ContainsPoly1(n.Pts,s.Pts)?(s.IsHole=n.IsHole,n.IsHole=!s.IsHole,s.FirstLeft=n.FirstLeft,n.FirstLeft=s,i.m_UsingPolyTree&&i.FixupFirstLefts2(n,s),(n.IsHole^i.ReverseSolution)==i.Area$1(n)>0&&i.ReversePolyPtLinks(n.Pts)):(s.IsHole=n.IsHole,s.FirstLeft=n.FirstLeft,i.m_UsingPolyTree&&i.FixupFirstLefts1(n,s))):(s.Pts=null,s.BottomPt=null,s.Idx=n.Idx,n.IsHole=o.IsHole,o===s&&(n.FirstLeft=s.FirstLeft),s.FirstLeft=n,i.m_UsingPolyTree&&i.FixupFirstLefts3(s,n)))}}},c.Clipper.prototype.UpdateOutPtIdxs=function(i){var t=i.Pts;do t.Idx=i.Idx,t=t.Prev;while(t!==i.Pts)},c.Clipper.prototype.DoSimplePolygons=function(){for(var i=this,t=0;t<this.m_PolyOuts.length;){var e=i.m_PolyOuts[t++],r=e.Pts;if(!(r===null||e.IsOpen))do{for(var n=r.Next;n!==e.Pts;){if(c.FPoint.op_Equality(r.Pt,n.Pt)&&n.Next!==r&&n.Prev!==r){var s=r.Prev,o=n.Prev;r.Prev=o,o.Next=r,n.Prev=s,s.Next=n,e.Pts=r;var a=i.CreateOutRec();a.Pts=n,i.UpdateOutPtIdxs(a),i.Poly2ContainsPoly1(a.Pts,e.Pts)?(a.IsHole=!e.IsHole,a.FirstLeft=e,i.m_UsingPolyTree&&i.FixupFirstLefts2(a,e)):i.Poly2ContainsPoly1(e.Pts,a.Pts)?(a.IsHole=e.IsHole,e.IsHole=!a.IsHole,a.FirstLeft=e.FirstLeft,e.FirstLeft=a,i.m_UsingPolyTree&&i.FixupFirstLefts2(e,a)):(a.IsHole=e.IsHole,a.FirstLeft=e.FirstLeft,i.m_UsingPolyTree&&i.FixupFirstLefts1(e,a)),n=r}n=n.Next}r=r.Next}while(r!==e.Pts)}},c.Clipper.Area=function(i){if(!Array.isArray(i))return 0;var t=i.length;if(t<3)return 0;for(var e=0,r=0,n=t-1;r<t;++r)e+=(i[n].X+i[r].X)*(i[n].Y-i[r].Y),n=r;return-e*.5},c.Clipper.prototype.Area=function(i){var t=i;if(i===null)return 0;var e=0;do e=e+(i.Prev.Pt.X+i.Pt.X)*(i.Prev.Pt.Y-i.Pt.Y),i=i.Next;while(i!==t);return e*.5},c.Clipper.prototype.Area$1=function(i){return this.Area(i.Pts)},c.Clipper.SimplifyPolygon=function(i,t){var e=new Array,r=new c.Clipper(0);return r.StrictlySimple=!0,r.AddPath(i,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,t,t),e},c.Clipper.SimplifyPolygons=function(i,t){typeof t>"u"&&(t=c.PolyFillType.pftEvenOdd);var e=new Array,r=new c.Clipper(0);return r.StrictlySimple=!0,r.AddPaths(i,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,t,t),e},c.Clipper.DistanceSqrd=function(i,t){var e=i.X-t.X,r=i.Y-t.Y;return e*e+r*r},c.Clipper.DistanceFromLineSqrd=function(i,t,e){var r=t.Y-e.Y,n=e.X-t.X,s=r*t.X+n*t.Y;return s=r*i.X+n*i.Y-s,s*s/(r*r+n*n)},c.Clipper.SlopesNearCollinear=function(i,t,e,r){return Math.abs(i.X-t.X)>Math.abs(i.Y-t.Y)?i.X>t.X==i.X<e.X?c.Clipper.DistanceFromLineSqrd(i,t,e)<r:t.X>i.X==t.X<e.X?c.Clipper.DistanceFromLineSqrd(t,i,e)<r:c.Clipper.DistanceFromLineSqrd(e,i,t)<r:i.Y>t.Y==i.Y<e.Y?c.Clipper.DistanceFromLineSqrd(i,t,e)<r:t.Y>i.Y==t.Y<e.Y?c.Clipper.DistanceFromLineSqrd(t,i,e)<r:c.Clipper.DistanceFromLineSqrd(e,i,t)<r},c.Clipper.PointsAreClose=function(i,t,e){var r=i.X-t.X,n=i.Y-t.Y;return r*r+n*n<=e},c.Clipper.ExcludeOp=function(i){var t=i.Prev;return t.Next=i.Next,i.Next.Prev=t,t.Idx=0,t},c.Clipper.CleanPolygon=function(i,t){typeof t>"u"&&(t=1.415);var e=i.length;if(e===0)return new Array;for(var r=new Array(e),n=0;n<e;++n)r[n]=new c.OutPt;for(var n=0;n<e;++n)r[n].Pt=i[n],r[n].Next=r[(n+1)%e],r[n].Next.Prev=r[n],r[n].Idx=0;for(var s=t*t,o=r[0];o.Idx===0&&o.Next!==o.Prev;)c.Clipper.PointsAreClose(o.Pt,o.Prev.Pt,s)?(o=c.Clipper.ExcludeOp(o),e--):c.Clipper.PointsAreClose(o.Prev.Pt,o.Next.Pt,s)?(c.Clipper.ExcludeOp(o.Next),o=c.Clipper.ExcludeOp(o),e-=2):c.Clipper.SlopesNearCollinear(o.Prev.Pt,o.Pt,o.Next.Pt,s)?(o=c.Clipper.ExcludeOp(o),e--):(o.Idx=1,o=o.Next);e<3&&(e=0);for(var a=new Array(e),n=0;n<e;++n)a[n]=new c.FPoint1(o.Pt),o=o.Next;return r=null,a},c.Clipper.CleanPolygons=function(i,t){for(var e=new Array(i.length),r=0,n=i.length;r<n;r++)e[r]=c.Clipper.CleanPolygon(i[r],t);return e},c.Clipper.Minkowski=function(i,t,e,r){var n=r?1:0,s=i.length,o=t.length,a=new Array;if(e)for(var h=0;h<o;h++){for(var l=new Array(s),u=0,f=i.length,p=i[u];u<f;u++,p=i[u])l[u]=new c.FPoint2(t[h].X+p.X,t[h].Y+p.Y);a.push(l)}else for(var h=0;h<o;h++){for(var l=new Array(s),u=0,f=i.length,p=i[u];u<f;u++,p=i[u])l[u]=new c.FPoint2(t[h].X-p.X,t[h].Y-p.Y);a.push(l)}for(var d=new Array,h=0;h<o-1+n;h++)for(var u=0;u<s;u++){var v=new Array;v.push(a[h%o][u%s]),v.push(a[(h+1)%o][u%s]),v.push(a[(h+1)%o][(u+1)%s]),v.push(a[h%o][(u+1)%s]),c.Clipper.Orientation(v)||v.reverse(),d.push(v)}return d},c.Clipper.MinkowskiSum=function(i,t,e){if(t[0]instanceof Array){for(var n=t,o=new c.Paths,s=new c.Clipper,a=0;a<n.length;++a){var h=c.Clipper.Minkowski(i,n[a],!0,e);if(s.AddPaths(h,c.PolyType.ptSubject,!0),e){var r=c.Clipper.TranslatePath(n[a],i[0]);s.AddPath(r,c.PolyType.ptClip,!0)}}return s.Execute(c.ClipType.ctUnion,o,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),o}else{var r=t,n=c.Clipper.Minkowski(i,r,!0,e),s=new c.Clipper;return s.AddPaths(n,c.PolyType.ptSubject,!0),s.Execute(c.ClipType.ctUnion,n,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),n}},c.Clipper.TranslatePath=function(i,t){for(var e=new c.Path,r=0;r<i.length;r++)e.push(new c.FPoint2(i[r].X+t.X,i[r].Y+t.Y));return e},c.Clipper.MinkowskiDiff=function(i,t){var e=c.Clipper.Minkowski(i,t,!1,!0),r=new c.Clipper;return r.AddPaths(e,c.PolyType.ptSubject,!0),r.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNonZero,c.PolyFillType.pftNonZero),e},c.Clipper.PolyTreeToPaths=function(i){var t=new Array;return c.Clipper.AddPolyNodeToPaths(i,c.Clipper.NodeType.ntAny,t),t},c.Clipper.AddPolyNodeToPaths=function(i,t,e){var r=!0;switch(t){case c.Clipper.NodeType.ntOpen:return;case c.Clipper.NodeType.ntClosed:r=!i.IsOpen;break}i.m_polygon.length>0&&r&&e.push(i.m_polygon);for(var n=0,s=i.Childs(),o=s.length,a=s[n];n<o;n++,a=s[n])c.Clipper.AddPolyNodeToPaths(a,t,e)},c.Clipper.OpenPathsFromPolyTree=function(i){for(var t=new c.Paths,e=0,r=i.ChildCount();e<r;e++)i.Childs()[e].IsOpen&&t.push(i.Childs()[e].m_polygon);return t},c.Clipper.ClosedPathsFromPolyTree=function(i){var t=new c.Paths;return c.Clipper.AddPolyNodeToPaths(i,c.Clipper.NodeType.ntClosed,t),t},Hs(c.Clipper,c.ClipperBase),c.Clipper.NodeType={ntAny:0,ntOpen:1,ntClosed:2},c.ClipperOffset=function(i,t){typeof i>"u"&&(i=2),typeof t>"u"&&(t=c.ClipperOffset.def_arc_tolerance),this.m_destPolys=new c.Paths,this.m_srcPoly=new c.Path,this.m_destPoly=new c.Path,this.m_normals=new Array,this.m_delta=0,this.m_sinA=0,this.m_sin=0,this.m_cos=0,this.m_miterLim=0,this.m_StepsPerRad=0,this.m_lowest=new c.FPoint0,this.m_polyNodes=new c.PolyNode,this.MiterLimit=i,this.ArcTolerance=t,this.m_lowest.X=-1},c.ClipperOffset.two_pi=6.28318530717959,c.ClipperOffset.def_arc_tolerance=.25,c.ClipperOffset.prototype.Clear=function(){c.Clear(this.m_polyNodes.Childs()),this.m_lowest.X=-1},c.ClipperOffset.prototype.AddPath=function(i,t,e){var r=i.length-1;if(!(r<0)){var n=new c.PolyNode;if(n.m_jointype=t,n.m_endtype=e,e===c.EndType.etClosedLine||e===c.EndType.etClosedPolygon)for(;r>0&&c.FPoint.op_Equality(i[0],i[r]);)r--;n.m_polygon.push(i[0]);for(var s=0,o=0,a=1;a<=r;a++)c.FPoint.op_Inequality(n.m_polygon[s],i[a])&&(s++,n.m_polygon.push(i[a]),(i[a].Y>n.m_polygon[o].Y||i[a].Y===n.m_polygon[o].Y&&i[a].X<n.m_polygon[o].X)&&(o=s));if(!(e===c.EndType.etClosedPolygon&&s<2)&&(this.m_polyNodes.AddChild(n),e===c.EndType.etClosedPolygon))if(this.m_lowest.X<0)this.m_lowest=new c.FPoint2(this.m_polyNodes.ChildCount()-1,o);else{var h=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y];(n.m_polygon[o].Y>h.Y||n.m_polygon[o].Y===h.Y&&n.m_polygon[o].X<h.X)&&(this.m_lowest=new c.FPoint2(this.m_polyNodes.ChildCount()-1,o))}}},c.ClipperOffset.prototype.AddPaths=function(i,t,e){for(var r=this,n=0,s=i.length;n<s;n++)r.AddPath(i[n],t,e)},c.ClipperOffset.prototype.FixOrientations=function(){var i=this;if(this.m_lowest.X>=0&&!c.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var t=0;t<this.m_polyNodes.ChildCount();t++){var e=i.m_polyNodes.Childs()[t];(e.m_endtype===c.EndType.etClosedPolygon||e.m_endtype===c.EndType.etClosedLine&&c.Clipper.Orientation(e.m_polygon))&&e.m_polygon.reverse()}else for(var t=0;t<this.m_polyNodes.ChildCount();t++){var e=i.m_polyNodes.Childs()[t];e.m_endtype===c.EndType.etClosedLine&&!c.Clipper.Orientation(e.m_polygon)&&e.m_polygon.reverse()}},c.ClipperOffset.GetUnitNormal=function(i,t){var e=t.X-i.X,r=t.Y-i.Y;if(e===0&&r===0)return new c.FPoint2(0,0);var n=1/Math.sqrt(e*e+r*r);return e*=n,r*=n,new c.FPoint2(r,-e)},c.ClipperOffset.prototype.DoOffset=function(i){var t=this;if(this.m_destPolys=new Array,this.m_delta=i,c.ClipperBase.near_zero(i)){for(var e=0;e<this.m_polyNodes.ChildCount();e++){var r=t.m_polyNodes.Childs()[e];r.m_endtype===c.EndType.etClosedPolygon&&t.m_destPolys.push(r.m_polygon)}return}this.MiterLimit>2?this.m_miterLim=2/(this.MiterLimit*this.MiterLimit):this.m_miterLim=.5;var n;this.ArcTolerance<=0?n=c.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(i)*c.ClipperOffset.def_arc_tolerance?n=Math.abs(i)*c.ClipperOffset.def_arc_tolerance:n=this.ArcTolerance;var s=3.14159265358979/Math.acos(1-n/Math.abs(i));this.m_sin=Math.sin(c.ClipperOffset.two_pi/s),this.m_cos=Math.cos(c.ClipperOffset.two_pi/s),this.m_StepsPerRad=s/c.ClipperOffset.two_pi,i<0&&(this.m_sin=-this.m_sin);for(var e=0;e<this.m_polyNodes.ChildCount();e++){var r=t.m_polyNodes.Childs()[e];t.m_srcPoly=r.m_polygon;var o=t.m_srcPoly.length;if(!(o===0||i<=0&&(o<3||r.m_endtype!==c.EndType.etClosedPolygon))){if(t.m_destPoly=new Array,o===1){if(r.m_jointype===c.JoinType.jtRound)for(var a=1,h=0,l=1;l<=s;l++){t.m_destPoly.push(new c.FPoint2(t.m_srcPoly[0].X+a*i,t.m_srcPoly[0].Y+h*i));var u=a;a=a*t.m_cos-t.m_sin*h,h=u*t.m_sin+h*t.m_cos}else for(var a=-1,h=-1,l=0;l<4;++l)t.m_destPoly.push(new c.FPoint2(t.m_srcPoly[0].X+a*i,t.m_srcPoly[0].Y+h*i)),a<0?a=1:h<0?h=1:a=-1;t.m_destPolys.push(t.m_destPoly);continue}t.m_normals.length=0;for(var l=0;l<o-1;l++)t.m_normals.push(c.ClipperOffset.GetUnitNormal(t.m_srcPoly[l],t.m_srcPoly[l+1]));if(r.m_endtype===c.EndType.etClosedLine||r.m_endtype===c.EndType.etClosedPolygon?t.m_normals.push(c.ClipperOffset.GetUnitNormal(t.m_srcPoly[o-1],t.m_srcPoly[0])):t.m_normals.push(new c.FPoint1(t.m_normals[o-2])),r.m_endtype===c.EndType.etClosedPolygon){for(var f=o-1,l=0;l<o;l++)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly)}else if(r.m_endtype===c.EndType.etClosedLine){for(var f=o-1,l=0;l<o;l++)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly),t.m_destPoly=new Array;for(var p=t.m_normals[o-1],l=o-1;l>0;l--)t.m_normals[l]=new c.FPoint2(-t.m_normals[l-1].X,-t.m_normals[l-1].Y);t.m_normals[0]=new c.FPoint2(-p.X,-p.Y),f=0;for(var l=o-1;l>=0;l--)f=t.OffsetPoint(l,f,r.m_jointype);t.m_destPolys.push(t.m_destPoly)}else{for(var f=0,l=1;l<o-1;++l)f=t.OffsetPoint(l,f,r.m_jointype);var d;if(r.m_endtype===c.EndType.etOpenButt){var l=o-1;d=new c.FPoint2(t.m_srcPoly[l].X+t.m_normals[l].X*i,t.m_srcPoly[l].Y+t.m_normals[l].Y*i),t.m_destPoly.push(d),d=new c.FPoint2(t.m_srcPoly[l].X-t.m_normals[l].X*i,t.m_srcPoly[l].Y-t.m_normals[l].Y*i),t.m_destPoly.push(d)}else{var l=o-1;f=o-2,t.m_sinA=0,t.m_normals[l]=new c.FPoint2(-t.m_normals[l].X,-t.m_normals[l].Y),r.m_endtype===c.EndType.etOpenSquare?t.DoSquare(l,f):t.DoRound(l,f)}for(var l=o-1;l>0;l--)t.m_normals[l]=new c.FPoint2(-t.m_normals[l-1].X,-t.m_normals[l-1].Y);t.m_normals[0]=new c.FPoint2(-t.m_normals[1].X,-t.m_normals[1].Y),f=o-1;for(var l=f-1;l>0;--l)f=t.OffsetPoint(l,f,r.m_jointype);r.m_endtype===c.EndType.etOpenButt?(d=new c.FPoint2(t.m_srcPoly[0].X-t.m_normals[0].X*i,t.m_srcPoly[0].Y-t.m_normals[0].Y*i),t.m_destPoly.push(d),d=new c.FPoint2(t.m_srcPoly[0].X+t.m_normals[0].X*i,t.m_srcPoly[0].Y+t.m_normals[0].Y*i),t.m_destPoly.push(d)):(f=1,t.m_sinA=0,r.m_endtype===c.EndType.etOpenSquare?t.DoSquare(0,1):t.DoRound(0,1)),t.m_destPolys.push(t.m_destPoly)}}}},c.ClipperOffset.prototype.Execute=function(){var i=arguments,t=i[0]instanceof c.PolyTree;if(t){var e=i[0],r=i[1];e.Clear(),this.FixOrientations(),this.DoOffset(r);var n=new c.Clipper(0);if(n.AddPaths(this.m_destPolys,c.PolyType.ptSubject,!0),r>0)n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftPositive,c.PolyFillType.pftPositive);else{var s=c.Clipper.GetBounds(this.m_destPolys),o=new c.Path;if(o.push(new c.FPoint2(s.left-10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.top-10)),o.push(new c.FPoint2(s.left-10,s.top-10)),n.AddPath(o,c.PolyType.ptSubject,!0),n.ReverseSolution=!0,n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNegative,c.PolyFillType.pftNegative),e.ChildCount()===1&&e.Childs()[0].ChildCount()>0){var a=e.Childs()[0];e.Childs()[0]=a.Childs()[0],e.Childs()[0].m_Parent=e;for(var h=1;h<a.ChildCount();h++)e.AddChild(a.Childs()[h])}else e.Clear()}}else{var e=i[0],r=i[1];c.Clear(e),this.FixOrientations(),this.DoOffset(r);var n=new c.Clipper(0);if(n.AddPaths(this.m_destPolys,c.PolyType.ptSubject,!0),r>0)n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftPositive,c.PolyFillType.pftPositive);else{var s=c.Clipper.GetBounds(this.m_destPolys),o=new c.Path;o.push(new c.FPoint2(s.left-10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.bottom+10)),o.push(new c.FPoint2(s.right+10,s.top-10)),o.push(new c.FPoint2(s.left-10,s.top-10)),n.AddPath(o,c.PolyType.ptSubject,!0),n.ReverseSolution=!0,n.Execute(c.ClipType.ctUnion,e,c.PolyFillType.pftNegative,c.PolyFillType.pftNegative),e.length>0&&e.splice(0,1)}}},c.ClipperOffset.prototype.OffsetPoint=function(i,t,e){if(this.m_sinA=this.m_normals[t].X*this.m_normals[i].Y-this.m_normals[i].X*this.m_normals[t].Y,this.m_sinA===0)return t;if(this.m_sinA>1?this.m_sinA=1:this.m_sinA<-1&&(this.m_sinA=-1),this.m_sinA*this.m_delta<0)this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[t].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[t].Y*this.m_delta)),this.m_destPoly.push(new c.FPoint1(this.m_srcPoly[i])),this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[i].Y*this.m_delta));else switch(e){case c.JoinType.jtMiter:var r=1+(this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y);r>=this.m_miterLim?this.DoMiter(i,t,r):this.DoSquare(i,t);break;case c.JoinType.jtSquare:this.DoSquare(i,t);break;case c.JoinType.jtRound:this.DoRound(i,t);break}return t=i,t},c.ClipperOffset.prototype.DoSquare=function(i,t){var e=Math.tan(Math.atan2(this.m_sinA,this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y)/4);this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_delta*(this.m_normals[t].X-this.m_normals[t].Y*e),this.m_srcPoly[i].Y+this.m_delta*(this.m_normals[t].Y+this.m_normals[t].X*e))),this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_delta*(this.m_normals[i].X+this.m_normals[i].Y*e),this.m_srcPoly[i].Y+this.m_delta*(this.m_normals[i].Y-this.m_normals[i].X*e)))},c.ClipperOffset.prototype.DoMiter=function(i,t,e){var r=this.m_delta/e;this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+(this.m_normals[t].X+this.m_normals[i].X)*r,this.m_srcPoly[i].Y+(this.m_normals[t].Y+this.m_normals[i].Y)*r))},c.ClipperOffset.prototype.DoRound=function(i,t){for(var e=this,r=Math.atan2(this.m_sinA,this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y),n=Math.max(Math.round(this.m_StepsPerRad*Math.abs(r)),1),s=this.m_normals[t].X,o=this.m_normals[t].Y,a,h=0;h<n;++h)e.m_destPoly.push(new c.FPoint2(e.m_srcPoly[i].X+s*e.m_delta,e.m_srcPoly[i].Y+o*e.m_delta)),a=s,s=s*e.m_cos-e.m_sin*o,o=a*e.m_sin+o*e.m_cos;this.m_destPoly.push(new c.FPoint2(this.m_srcPoly[i].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[i].Y+this.m_normals[i].Y*this.m_delta))},c.Error=function(i){try{throw new Error(i)}catch(t){alert(t.message)}},c.JS={},c.JS.AreaOfPolygon=function(i){return c.Clipper.Area(i)},c.JS.AreaOfPolygons=function(i){for(var t=0,e=0;e<i.length;e++)t+=c.Clipper.Area(i[e]);return t},c.JS.BoundsOfPath=function(i){return c.JS.BoundsOfPaths([i])},c.JS.BoundsOfPaths=function(i){var t=c.Clipper.GetBounds(i);return t},c.JS.Clean=function(r,t){if(!(r instanceof Array))return[];var e=r[0]instanceof Array,r=c.JS.Clone(r);if(typeof t!="number"||t===null)return c.Error("Delta is not a number in Clean()."),r;if(r.length===0||r.length===1&&r[0].length===0||t<0)return r;e||(r=[r]);for(var n=r.length,s,o,a,h,l,u,f,p=[],d=0;d<n;d++)if(o=r[d],s=o.length,s!==0){if(s<3){a=o,p.push(a);continue}for(a=o,h=t*t,l=o[0],u=1,f=1;f<s;f++)(o[f].X-l.X)*(o[f].X-l.X)+(o[f].Y-l.Y)*(o[f].Y-l.Y)<=h||(a[u]=o[f],l=o[f],u++);l=o[u-1],(o[0].X-l.X)*(o[0].X-l.X)+(o[0].Y-l.Y)*(o[0].Y-l.Y)<=h&&u--,u<s&&a.splice(u,s-u),a.length&&p.push(a)}return!e&&p.length?p=p[0]:!e&&p.length===0?p=[]:e&&p.length===0&&(p=[[]]),p},c.JS.Clone=function(i){if(!(i instanceof Array))return[];if(i.length===0)return[];if(i.length===1&&i[0].length===0)return[[]];var t=i[0]instanceof Array;t||(i=[i]);var e=i.length,r,n,s,o,a=new Array(e);for(n=0;n<e;n++){for(r=i[n].length,o=new Array(r),s=0;s<r;s++)o[s]={X:i[n][s].X,Y:i[n][s].Y};a[n]=o}return t||(a=a[0]),a},c.JS.Lighten=function(i,t){if(!(i instanceof Array))return[];if(typeof t!="number"||t===null)return c.Error("Tolerance is not a number in Lighten()."),c.JS.Clone(i);if(i.length===0||i.length===1&&i[0].length===0||t<0)return c.JS.Clone(i);var e=i[0]instanceof Array;e||(i=[i]);var r,n,s,o,a,h,l,u,f,p,d,v,m,y,g,w,_,b=i.length,x=t*t,P=[];for(r=0;r<b;r++)if(s=i[r],h=s.length,h!==0){for(o=0;o<1e6;o++){for(a=[],h=s.length,s[h-1].X!==s[0].X||s[h-1].Y!==s[0].Y?(v=1,s.push({X:s[0].X,Y:s[0].Y}),h=s.length):v=0,d=[],n=0;n<h-2;n++)l=s[n],f=s[n+1],u=s[n+2],w=l.X,_=l.Y,m=u.X-w,y=u.Y-_,(m!==0||y!==0)&&(g=((f.X-w)*m+(f.Y-_)*y)/(m*m+y*y),g>1?(w=u.X,_=u.Y):g>0&&(w+=m*g,_+=y*g)),m=f.X-w,y=f.Y-_,p=m*m+y*y,p<=x&&(d[n+1]=1,n++);for(a.push({X:s[0].X,Y:s[0].Y}),n=1;n<h-1;n++)d[n]||a.push({X:s[n].X,Y:s[n].Y});if(a.push({X:s[h-1].X,Y:s[h-1].Y}),v&&s.pop(),d.length)s=a;else break}h=a.length,a[h-1].X===a[0].X&&a[h-1].Y===a[0].Y&&a.pop(),a.length>2&&P.push(a)}return e||(P=P[0]),typeof P>"u"&&(P=[]),P},c.JS.PerimeterOfPath=function(i,t){if(typeof i>"u")return 0;var e=Math.sqrt,r=0,n,s,o=0,a=0,h=0,l=0,u=i.length;if(u<2)return 0;for(t&&(i[u]=i[0],u++);--u;)n=i[u],o=n.X,a=n.Y,s=i[u-1],h=s.X,l=s.Y,r+=e((o-h)*(o-h)+(a-l)*(a-l));return t&&i.pop(),r},c.JS.PerimeterOfPaths=function(i,t){for(var e=0,r=0;r<i.length;r++)e+=c.JS.PerimeterOfPath(i[r],t);return e},c.ExPolygons=function(){return[]},c.ExPolygon=function(){this.outer=null,this.holes=null},c.JS.AddOuterPolyNodeToExPolygons=function(i,t){var e=new c.ExPolygon;e.outer=i.Contour();var r=i.Childs(),n=r.length;e.holes=new Array(n);var s,o,a,h,l,u;for(a=0;a<n;a++)for(s=r[a],e.holes[a]=s.Contour(),h=0,l=s.Childs(),u=l.length;h<u;h++)o=l[h],c.JS.AddOuterPolyNodeToExPolygons(o,t);t.push(e)},c.JS.ExPolygonsToPaths=function(i){var t,e,r,n,s=new c.Paths;for(t=0,r=i.length;t<r;t++)for(s.push(i[t].outer),e=0,n=i[t].holes.length;e<n;e++)s.push(i[t].holes[e]);return s},c.JS.PolyTreeToExPolygons=function(i){var t=new c.ExPolygons,e,r,n,s;for(r=0,n=i.Childs(),s=n.length;r<s;r++)e=n[r],c.JS.AddOuterPolyNodeToExPolygons(e,t);return t};var _c=c,k=Ie(_c),Xr={exports:{}};class xc{constructor(t=[],e=wc){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const s=t-1>>1,o=e[s];if(r(n,o)>=0)break;e[t]=o,t=s}e[t]=n}_down(t){const{data:e,compare:r}=this,n=this.length>>1,s=e[t];for(;t<n;){let o=(t<<1)+1,a=e[o];const h=o+1;if(h<this.length&&r(e[h],a)<0&&(o=h,a=e[h]),r(a,s)>=0)break;e[t]=a,t=o}e[t]=s}}function wc(i,t){return i<t?-1:i>t?1:0}var Pc=Object.freeze({__proto__:null,default:xc}),bc=Ih(Pc),Ri=bc;Ri.default&&(Ri=Ri.default),Xr.exports=Ws,Xr.exports.default=Ws;function Ws(i,t,e){t=t||1;for(var r,n,s,o,a=0;a<i[0].length;a++){var h=i[0][a];(!a||h[0]<r)&&(r=h[0]),(!a||h[1]<n)&&(n=h[1]),(!a||h[0]>s)&&(s=h[0]),(!a||h[1]>o)&&(o=h[1])}var l=s-r,u=o-n,f=Math.min(l,u),p=f/2;if(f===0){var d=[r,n];return d.distance=0,d}for(var v=new Ri(void 0,Tc),m=r;m<s;m+=f)for(var y=n;y<o;y+=f)v.push(new Qt(m+p,y+p,p,i));var g=Ic(i),w=new Qt(r+l/2,n+u/2,0,i);w.d>g.d&&(g=w);for(var _=v.length;v.length;){var b=v.pop();b.d>g.d&&(g=b,e&&console.log("found best %d after %d probes",Math.round(1e4*b.d)/1e4,_)),!(b.max-g.d<=t)&&(p=b.h/2,v.push(new Qt(b.x-p,b.y-p,p,i)),v.push(new Qt(b.x+p,b.y-p,p,i)),v.push(new Qt(b.x-p,b.y+p,p,i)),v.push(new Qt(b.x+p,b.y+p,p,i)),_+=4)}e&&(console.log("num probes: "+_),console.log("best distance: "+g.d));var x=[g.x,g.y];return x.distance=g.d,x}function Tc(i,t){return t.max-i.max}function Qt(i,t,e,r){this.x=i,this.y=t,this.h=e,this.d=Cc(i,t,r),this.max=this.d+this.h*Math.SQRT2}function Cc(i,t,e){for(var r=!1,n=1/0,s=0;s<e.length;s++)for(var o=e[s],a=0,h=o.length,l=h-1;a<h;l=a++){var u=o[a],f=o[l];u[1]>t!=f[1]>t&&i<(f[0]-u[0])*(t-u[1])/(f[1]-u[1])+u[0]&&(r=!r),n=Math.min(n,Ec(i,t,u,f))}return n===0?0:(r?1:-1)*Math.sqrt(n)}function Ic(i){for(var t=0,e=0,r=0,n=i[0],s=0,o=n.length,a=o-1;s<o;a=s++){var h=n[s],l=n[a],u=h[0]*l[1]-l[0]*h[1];e+=(h[0]+l[0])*u,r+=(h[1]+l[1])*u,t+=u*3}return t===0?new Qt(n[0][0],n[0][1],0,i):new Qt(e/t,r/t,0,i)}function Ec(i,t,e,r){var n=e[0],s=e[1],o=r[0]-n,a=r[1]-s;if(o!==0||a!==0){var h=((i-n)*o+(t-s)*a)/(o*o+a*a);h>1?(n=r[0],s=r[1]):h>0&&(n+=o*h,s+=a*h)}return o=i-n,a=t-s,o*o+a*a}var Sc=Xr.exports,Ac=Ie(Sc),Qe=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var i=0,t=arguments.length;t--;)i+=arguments[t]*arguments[t];return Math.sqrt(i)});function zs(){var i=new Qe(6);return Qe!=Float32Array&&(i[1]=0,i[2]=0,i[4]=0,i[5]=0),i[0]=1,i[3]=1,i}function Oc(i,t,e){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],h=t[5],l=Math.sin(e),u=Math.cos(e);return i[0]=r*u+s*l,i[1]=n*u+o*l,i[2]=r*-l+s*u,i[3]=n*-l+o*u,i[4]=a,i[5]=h,i}function Lc(i,t,e){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],h=t[5],l=e[0],u=e[1];return i[0]=r,i[1]=n,i[2]=s,i[3]=o,i[4]=r*l+s*u+a,i[5]=n*l+o*u+h,i}function Mc(i,t){var e=Math.sin(t),r=Math.cos(t);return i[0]=r,i[1]=e,i[2]=-e,i[3]=r,i[4]=0,i[5]=0,i}function Nc(i,t){return i[0]=1,i[1]=0,i[2]=0,i[3]=1,i[4]=t[0],i[5]=t[1],i}function Di(){var i=new Qe(2);return Qe!=Float32Array&&(i[0]=0,i[1]=0),i}function Bi(i,t){var e=new Qe(2);return e[0]=i,e[1]=t,e}function Fc(i,t){return i[0]=-t[0],i[1]=-t[1],i}function $s(i,t,e){var r=t[0],n=t[1];return i[0]=e[0]*r+e[2]*n+e[4],i[1]=e[1]*r+e[3]*n+e[5],i}(function(){var i=Di();return function(t,e,r,n,s,o){var a,h;for(e||(e=2),r||(r=0),n?h=Math.min(n*e+r,t.length):h=t.length,a=r;a<h;a+=e)i[0]=t[a],i[1]=t[a+1],s(i,i,o),t[a]=i[0],t[a+1]=i[1];return t}})();var Vs={exports:{}};function Gr(){}Gr.prototype={on:function(i,t,e){var r=this.e||(this.e={});return(r[i]||(r[i]=[])).push({fn:t,ctx:e}),this},once:function(i,t,e){var r=this;function n(){r.off(i,n),t.apply(e,arguments)}return n._=t,this.on(i,n,e)},emit:function(i){var t=[].slice.call(arguments,1),e=((this.e||(this.e={}))[i]||[]).slice(),r=0,n=e.length;for(r;r<n;r++)e[r].fn.apply(e[r].ctx,t);return this},off:function(i,t){var e=this.e||(this.e={}),r=e[i],n=[];if(r&&t)for(var s=0,o=r.length;s<o;s++)r[s].fn!==t&&r[s].fn._!==t&&n.push(r[s]);return n.length?e[i]=n:delete e[i],this}},Vs.exports=Gr;var Yr=Vs.exports.TinyEmitter=Gr,js={exports:{}};(function(i,t){var e=function(){var r={},n=Math.PI/180,s=180/Math.PI,o=6378137,a=20037508342789244e-9;function h(u){return Number(u)===u&&u%1!==0}function l(u){if(u=u||{},this.size=u.size||256,this.expansion=u.antimeridian===!0?2:1,!r[this.size]){var f=this.size,p=r[this.size]={};p.Bc=[],p.Cc=[],p.zc=[],p.Ac=[];for(var d=0;d<30;d++)p.Bc.push(f/360),p.Cc.push(f/(2*Math.PI)),p.zc.push(f/2),p.Ac.push(f),f*=2}this.Bc=r[this.size].Bc,this.Cc=r[this.size].Cc,this.zc=r[this.size].zc,this.Ac=r[this.size].Ac}return l.prototype.px=function(u,f){if(h(f)){var p=this.size*Math.pow(2,f),d=p/2,v=p/360,m=p/(2*Math.PI),y=p,g=Math.min(Math.max(Math.sin(n*u[1]),-.9999),.9999),w=d+u[0]*v,_=d+.5*Math.log((1+g)/(1-g))*-m;return w>y*this.expansion&&(w=y*this.expansion),_>y&&(_=y),[w,_]}else{var d=this.zc[f],g=Math.min(Math.max(Math.sin(n*u[1]),-.9999),.9999),w=Math.round(d+u[0]*this.Bc[f]),_=Math.round(d+.5*Math.log((1+g)/(1-g))*-this.Cc[f]);return w>this.Ac[f]*this.expansion&&(w=this.Ac[f]*this.expansion),_>this.Ac[f]&&(_=this.Ac[f]),[w,_]}},l.prototype.ll=function(u,f){if(h(f)){var p=this.size*Math.pow(2,f),d=p/360,v=p/(2*Math.PI),m=p/2,y=(u[1]-m)/-v,g=(u[0]-m)/d,w=s*(2*Math.atan(Math.exp(y))-.5*Math.PI);return[g,w]}else{var y=(u[1]-this.zc[f])/-this.Cc[f],g=(u[0]-this.zc[f])/this.Bc[f],w=s*(2*Math.atan(Math.exp(y))-.5*Math.PI);return[g,w]}},l.prototype.bbox=function(u,f,p,d,v){d&&(f=Math.pow(2,p)-1-f);var m=[u*this.size,(+f+1)*this.size],y=[(+u+1)*this.size,f*this.size],g=this.ll(m,p).concat(this.ll(y,p));return v==="900913"?this.convert(g,"900913"):g},l.prototype.xyz=function(u,f,p,d){d==="900913"&&(u=this.convert(u,"WGS84"));var v=[u[0],u[1]],m=[u[2],u[3]],y=this.px(v,f),g=this.px(m,f),w=[Math.floor(y[0]/this.size),Math.floor((g[0]-1)/this.size)],_=[Math.floor(g[1]/this.size),Math.floor((y[1]-1)/this.size)],b={minX:Math.min.apply(Math,w)<0?0:Math.min.apply(Math,w),minY:Math.min.apply(Math,_)<0?0:Math.min.apply(Math,_),maxX:Math.max.apply(Math,w),maxY:Math.max.apply(Math,_)};if(p){var x={minY:Math.pow(2,f)-1-b.maxY,maxY:Math.pow(2,f)-1-b.minY};b.minY=x.minY,b.maxY=x.maxY}return b},l.prototype.convert=function(u,f){return f==="900913"?this.forward(u.slice(0,2)).concat(this.forward(u.slice(2,4))):this.inverse(u.slice(0,2)).concat(this.inverse(u.slice(2,4)))},l.prototype.forward=function(u){var f=[o*u[0]*n,o*Math.log(Math.tan(Math.PI*.25+.5*u[1]*n))];return f[0]>a&&(f[0]=a),f[0]<-a&&(f[0]=-a),f[1]>a&&(f[1]=a),f[1]<-a&&(f[1]=-a),f},l.prototype.inverse=function(u){return[u[0]*s/o,(Math.PI*.5-2*Math.atan(Math.exp(-u[1]/o)))*s]},l}();i.exports=e})(js);var Rc=js.exports,Dc=Ie(Rc);function qs(i,t){t||(t={x:0,z:0});const e=kc(t,i);return Math.sqrt(e.x*e.x+e.z*e.z)}function Zs(i){const t=qs(i);return{x:i.x/t,z:i.z/t}}function Bc(i,t){return i||(i={x:0,z:0}),Uc(Math.atan2(-t.z+i.z,t.x-i.x)*180/Math.PI,2)}function kc(i,t){return{x:i.x-t.x,z:i.z-t.z}}function Uc(i,t=0){const e=Math.pow(10,t);return Math.round(i*e)/e}function ki(i){const t=St(i),e=k.Clipper.GetBounds(t);return{x:e.left,x2:e.right,z:e.top,z2:e.bottom,length:e.right-e.left,width:e.bottom-e.top}}function Hr(i){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Union failed, empty Array")}else throw new Error("Union failed, input not Array");const t=St(i),e=[t[0]],r=t.slice(1),n=new k.Clipper;n.AddPaths(e,k.PolyType.ptSubject,!0),n.AddPaths(r,k.PolyType.ptClip,!0);var s=new k.Paths;return n.Execute(k.ClipType.ctUnion,s,k.PolyFillType.pftNonZero,k.PolyFillType.pftNonZero),ei(s)}function Ke(i,t=.1,e,r){if(e===void 0&&(e=k.EndType.etClosedPolygon),i=r?i:Qs(i),!i.length||!i[0].length)return[];t=t&&typeof t=="number"?t:.1;const n=St(i),s=new k.ClipperOffset(2),o=new k.Paths;return s.AddPaths(n,k.JoinType.jtMiter,e),s.Execute(o,t),ei(o)}function Xc(i,t,e,r){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Difference failed, empty Array")}else throw new Error("Difference failed, input not Array");const n=St(i),s=St(e?Ke(t,e):t),o=new k.Clipper;o.AddPaths(n,k.PolyType.ptSubject,!r),o.AddPaths(s,k.PolyType.ptClip,!0);var a=r?new k.PolyTree:new k.Paths;o.Execute(k.ClipType.ctDifference,a,k.PolyFillType.pftNonZero,k.PolyFillType.pftNonZero);var h=r?k.Clipper.PolyTreeToPaths(a):a;return ei(h)}function Js(i=[],t=[],e=!1){if(Array.isArray(i)){if(!i.length||!i[0])throw new Error("Intersection failed, empty Array")}else throw new Error("Intersection failed, input not Array");const r=St(i),n=t.length&&St(t),s=n?r:[r[0]],o=n||r.slice(1),a=new k.Clipper;a.AddPaths(s,k.PolyType.ptSubject,!e),a.AddPaths(o,k.PolyType.ptClip,!0);var h=k.PolyFillType.pftNonZero,l=k.PolyFillType.pftNonZero,u=k.ClipType.ctIntersection,f=e?new k.PolyTree:new k.Paths;a.Execute(u,f,h,l);var p=e?k.Clipper.PolyTreeToPaths(f):f;return ei(p)}function Fe(i,t,e=[]){const r=new k.FPoint(i[0],i[1]),n=St([t])[0];let s=k.Clipper.PointInPolygon(r,n);return e.forEach(o=>{let a=Fe(i,o);a===1?s=0:a===-1&&(s=-1)}),s}function le(i){let t=St([i]);return k.JS.AreaOfPolygon(t[0])}function ti(i){return Math.abs(le(i))}function Qs(i,t=.01){let e=St(i);const r=k.Clipper.CleanPolygons(e,t);return ei(r)}function Ks(i,t=.01){return Qs([i],t)[0]}function St(i=[]){let t=[];for(var e=0;e<i.length;e++){var r=i[e]||[];t[e]=[];for(var n=0;n<r.length;n++){var s=r[n];Number.isFinite(s[0])&&Number.isFinite(s[1])?t[e][n]={X:s[0],Y:s[1]}:console.warn("invalid number",s[0],s[1])}}const o=[];for(const a of t)a.length?o.push(a):console.warn("empty polygon");if(!o.length)throw new Error("empty polygon invalid input");return o}function ei(i){let t=[];for(var e=0;e<i.length;e++){var r=i[e]||[];t[e]=[];for(var n=0;n<r.length;n++){var s=r[n];t[e][n]=[s.X,s.Y]}}return t}function Gc(i){let t=[1/0,1/0],e=[-1/0,-1/0];return i.forEach(r=>{r[0]<t[0]&&(t[0]=r[0]),r[1]<t[1]&&(t[1]=r[1]),r[0]>e[0]&&(e[0]=r[0]),r[1]>e[1]&&(e[1]=r[1])}),{min:t,max:e}}function Yc(i,t=!0){let e=0;const r=t?i.length:i.length-1;for(var n=0;n<r;n++){let s={x:i[n][0],z:i[n][1]},o={x:i[n<i.length-1?n+1:0][0],z:i[n<i.length-1?n+1:0][1]};e+=qs(s,o)}return e}function Hc(i){const{min:t,max:e}=Gc(i);return[t[0]+(e[0]-t[0])/2,t[1]+(e[1]-t[1])/2]}function to(i,t=[]){return ti(i)<.1?Hc(i):Ac([i,...t],.1)}function Wr(i,t,e=!1){let r=0,n=t.x,s=t.z;if(t.controlLine&&t.w&&(r=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),r){let v=t.ry/180*Math.PI;n-=r*Math.sin(v),s-=r*Math.cos(v)}const o=i.ry||0,a=t.ry||0,h=Bi(i.x,i.z),l=Bi(n,s),u=-a*Math.PI/180;let f=zs(),p=Di();Nc(f,l),Oc(f,f,u),$s(p,h,f);const d={x:p[0],z:p[1],y:i.y+t.y||0,ry:o+a};return e?Object.assign(i,d):Object.assign({},i,d)}function Wc(i,t,e=!1){let r=0,n=t.x,s=t.z;if(t.controlLine&&t.w&&(r=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),r){let m=t.ry/180*Math.PI;n-=r*Math.sin(m),s-=r*Math.cos(m)}const o=i.ry||0,a=t.ry||0,h=Bi(i.x,i.z),l=Bi(n,s),u=a*Math.PI/180;let f=zs(),p=Di(),d=Di();Fc(d,l),Mc(f,u),Lc(f,f,d),$s(p,h,f);const v={x:p[0],z:p[1],y:i.y-t.y||0,ry:o-a};return e?Object.assign(i,v):Object.assign({},i,v)}function zc(i){if(typeof i!="object")throw new Error("Get el data, invalid type");let{x:t,z:e,l:r,ry:n}={...i},s=i.type==="a:helper:spaceDivider";if(!s&&!Number.isFinite(i.w)||!Number.isFinite(r)||!Number.isFinite(t)||!Number.isFinite(e)){let x={type:i.type,id:i.id,x:t,z:e,l:r,ry:n,w:i.w};throw new Error(`Get el vectors, params missing ${JSON.stringify(x)}`)}let o,a,h,l,u,f,p,d,v,m,y,g,w,_,b;return o=n/180*Math.PI,a=i.barCounter?i.w+.25:i.w,s&&(a=0),u={x:a*Math.sin(o),z:a*Math.cos(o)},f=s?u:Zs(u),p={x:r*Math.cos(o),z:-r*Math.sin(o)},d=Zs(p),h=i.barCounter?t+f.x*-.25:t,l=i.barCounter?e+f.z*-.25:e,b=0,i.controlLine==="front"?b=-i.w:i.controlLine==="center"&&(b=-i.w/2),w={x:h,z:l},_={x:h+p.x,z:l+p.z},v={x:w.x+f.x*b,z:w.z+f.z*b},m={x:v.x+p.x,z:v.z+p.z},y={x:v.x+u.x,z:v.z+u.z},g={x:m.x+u.x,z:m.z+u.z},{l1:w,l2:_,p1:v,p2:m,p3:y,p4:g,w:u,l:p,nW:f,nL:d}}function $c(i){if(i.type!=="column")return;let t=[];if(i.shape==="square"){let e=i.l/2;t=[[-e,-e],[e,-e],[e,e],[-e,e]],t=At(i,t)}else if(i.shape==="circle"){const e=Math.PI*2/25;let r=0,n=i.l/2;for(let s=0;s<25;s++)t.push([i.x-n*Math.cos(r),i.z+n*Math.sin(r)]),r+=e}else i.shape==="polygon"&&(t=At(i,i.polygon));return t}function zr(i){let t,e,r;return i.type==="column"?e=$c(i):(t=zc(i),i.type==="a:helper:spaceDivider"?r=[t.l1,t.l2]:r=[t.p1,t.p2,t.p4,t.p3],e=r.map(n=>[n.x,n.z])),e}function At(i,t){return t.map(e=>{let r=Wr({x:e[0],z:e[1]},i);return[r.x,r.z]})}const $r=(i,t={})=>{let e={};const r=t.keepTransient;return Object.keys(i).forEach(n=>{let s=n.slice(0,1)==="_";if(n==="_ryOrg"){e.ry=i[n];return}else{if(s&&!r||i[n]===null||i[n]===void 0)return;n!=="children"&&(e[n]=i[n])}}),i.children?e.children=i.children.map(n=>$r(n,t)):e.children=[],e};function Vc(i,t){const e=[],r=i.map(ti),n=t.map(ti);for(let o=0;o<i.length;o++){let a=i[o];for(let h=0;h<t.length;h++)if(r[o]>n[h]+.1&&Fe(t[h][0],a))if(e[h]){const l=r[e[h]],u=r[o];l>u&&(e[h]=o)}else e[h]=o}const s=[];return e.forEach((o,a)=>{s[o]||(s[o]=[]),s[o].push(t[a])}),s}function jc(i){let t=i.filter(r=>le(r)>0),e=i.filter(r=>le(r)<0);return{counterClockwise:t,clockwise:e}}function qc(i){let t=[...i];return le(t)<0?t:t.reverse()}function Zc(i){let t=[...i];return le(t)>0?t:t.reverse()}function eo({uuid:i,scene:t,node:e}){if(e=e||t.nodesById[i],!e)return[];let r=e.getWorldPosition();if(!r.polygon||!r.polygon.length)throw new Error("Invalid space"+JSON.stringify(r,null,2));let n=Zc(r.polygon);if(n=Ks(n),!n||!n.length)return[];let s=r.polygonHoles||[];s=s.map(h=>{let l=qc(h);return Ks(l)}).filter(h=>h.length),s=s.filter(h=>h.length);let o=At(r,n),a=s.map(h=>At(r,h));return[o,...a]}function Jc(i){let t=$r(i);return Pe(t)}function io(i,t="",e=!1,r,n){const s={"a:helper:spaceDivider":["plan","level","group"],wall:["plan","level","group"],interior:["plan","level","interior","group","level"],window:["plan","level","wall"],door:["plan","level","wall"],polyfloor:["plan","level"],group:["plan","level","group"]};let o=e?Jc(i):i;var a=[],h;if(e&&r&&(o=Wr(o,r)),!n&&o.type===t)a.push(o);else if(n&&o.id===n)return[o];let l=0;if(o.children&&(!s[t]||s[t].includes(o.type)))for(var u=0;u<o.children.length;u++){const f=o.children[u];f.type==="level"&&l++,!(l>1)&&(h=io(f,t,e,o,n),a=a.concat(h))}return a}function ro(i,t){return io(i,t,!0)}const Ui=["a:helper:spaceDivider","a:reference:externalId","a:reference:ifcElement","a:reference:ifcFile","a:relation:wall","a:settings:display","a:settings:generatedGroup","box","camera-bookmark","closet","column","curtain","door","floor","floorplan","floorplanDxf","group","interior","kitchen","level","object","pic","plan","polybox","polyfloor","railing","stairs","tag","wall","window"],no=()=>Ui.reduce((i,t)=>({...i,[t]:[]}),{}),so=(i,t)=>{if(!t||!t.properties){console.warn(`schema is missing for type ${i}`);return}const e={};return Object.keys(t.properties).forEach(r=>{const n=t.properties[r],s=n.const||n.default;s!==void 0&&(e[r]=s)}),i==="interior"&&!e.src&&(e.src="!7dddc882-1def-4497-80e3-d1de834a1a7b"),Pe(e)};function Qc(i,t={}){const e=oo(i,{});return ho(i,null,null,e),t.exportIdMap&&(i.idMap=e),i}function oo(i,t){return i.id!==void 0&&(t[i.id]=se()),i.children.forEach(e=>oo(e,t)),t}const ao=i=>Object.prototype.toString.call(i)==="[object Object]",Kc=i=>Object.prototype.toString.call(i)==="[object Array]";function ho(i,t,e,r){typeof i=="string"?(t!==void 0&&e!==void 0&&r[i]&&(t[e]=r[i]),typeof e=="string"&&t!==void 0&&e!==void 0&&r[e]&&(t[r[e]]=i,delete t[e])):(ao(i)||Kc(i))&&(ao(i)&&i.type&&i.id===void 0&&(i.id=se()),Object.entries(i).forEach(([n,s])=>ho(s,i,n,r)))}const tp={properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"},ry:{type:"number"},id:{type:"string"}}},ep=(i,t,e,r)=>{let n=e;if(typeof e=="string"&&(n=Number(n),console.log(i.type+"."+t,"converted from string to number")),!Number.isFinite(n))throw new Error(`${i.type}.${t} = ${e} is invalid`);const{minimum:s,maximum:o}=r,a=Number.isFinite(s)&&n<s,h=Number.isFinite(o)&&n>o;if(a||h){let l=a?"min:"+s:"max:"+o;throw new Error(`${i.type}.${t} = ${n} is out of range ${l}`)}return n},ip=(i,t,e,r)=>{if(typeof e!="string")throw new Error(`${i.type}.${t} = '${e}' is invalid`);if(r.enum&&!r.enum.includes(e))throw new Error(`${i.type}.${t} = '${e}' is invalid`);return e},rp=(i,t,e,r)=>r.type==="number"?ep(i,t,e,r):r.type==="string"?ip(i,t,e,r):e,lo=(i,t,e)=>{const{properties:r}=e||tp;for(const n in t){const s=r?.[n],o=e&&!s,a=n.startsWith("_");if(o&&!a){delete t[n];continue}i[n]=rp(i,n,t[n],s||{type:void 0}),a&&!i[n]&&delete i[n]}return i};function np({uuid:i,polygons:t,scene:e,interiors:r}){let n;t&&t.length?n=t:n=eo({uuid:i,scene:e});let s=n[0],o=n.slice(1);return s=Ke([s],.05)[0],r||(r=e.nodesByType.interior.map(a=>a.getWorldPosition())),{interiors:r.filter(a=>{if(!(!a.src||!a.x||!a.z))return Fe([a.x,a.z],s,o)})}}const sp=i=>{var t;return((t=i.src)==null?void 0:t.substring(1))||""},uo={colorDiffuse:{type:"array"},colorSpecular:{type:"array"},wireframeColor:{type:"array"},size:{type:"array"},specularCoef:{type:"number"},opacity:{type:"number"},wireframeOpacity:{type:"number"},wireframeThickness:{type:"number"},wireframeThresholdAngle:{type:"number"},lightEmissionCoef:{type:"number"},bsdfType:{type:"string"},wrap:{type:"string"},receiveRealTimeShadows:{type:"boolean"},hideAfterBaking:{type:"boolean"},castRealTimeShadows:{type:"boolean"},no2dOutline:{type:"boolean"},mapDiffuse:{type:"string"},mapDiffusePreview:{type:"string"},mapDiffuseSource:{type:"string"},mapDiffuseKey:{type:"string"},mapSpecular:{type:"string"},mapSpecularPreview:{type:"string"},mapSpecularSource:{type:"string"},mapSpecularKey:{type:"string"},mapNormal:{type:"string"},mapNormalPreview:{type:"string"},mapNormalSource:{type:"string"},mapNormalKey:{type:"string"},mapAlpha:{type:"string"},mapAlphaPreview:{type:"string"},mapAlphaSource:{type:"string"},mapAlphaKey:{type:"string"}},fo=i=>{let t=typeof i;return i===null?"null":t==="object"&&Array.isArray(i)?"array":t==="number"&&!Number.isFinite(i)?"undefined":t},op=Object.keys(uo),ap=i=>{const t=fo(i),e=t==="string",r=t==="object"&&Object.keys(i).every(n=>{var s;const o=op.includes(n),a=o&&fo(i[n])===((s=uo[n])==null?void 0:s.type);return o&&a});return e||r};function co(i,t){let e=hp(i.materials,t?.colours);return e&&po(i.materials[e])}function po(i){return!i||typeof i!="string"?"":i.toLowerCase().replace(/[()+&!?;,:_)]/g,"").replace(/\s+/g,"-")}function hp(i={},t=[]){let e=t?.length&&t[0].split(":")[0],r=Object.keys(i);return e&&e!=="default"&&(r=r.filter(n=>n===e)),r.length===1?r[0]:r.filter(n=>!n.toLowerCase().includes("base"))[0]}function lp(i,t){let e=sp(i),r=co(i,t);return r?r="_"+r:r="",e+r}const up={group:"a:settings:generatedGroup"};class fp{}class mi extends fp{constructor({node:t,parent:e,scene:r,emitter:n,options:s={}}){var o;if(super(),typeof t!="object")throw new Error("node has to be type object: "+t);if(!t.type)throw new Error("node invalid, type is missing: "+JSON.stringify(t));s.setDefaults===void 0&&(s.setDefaults=!1),s.regenerateIds===void 0&&(s.regenerateIds=!1),this._scene=r,this._emitter=n;const a=t.children||[];t.children=[],!t.id||s.setDefaults||s.regenerateIds?this._update(cp(t,this.schema,s)):this._update(t),this._parent=e,e&&e.children.push(this),(o=this._scene)!=null&&o.registerNode&&this._scene.registerNode(this);const h="add-child";this._emitter&&this._emitter.emit(h,{node:e,args:this,options:s,event:h}),a.filter(l=>(l.type||console.warn("Prevent import from scene structure: Invalid type",l.type+""),l.type)).forEach(l=>this.addChild(l,s))}get parent(){return this._parent}get scene(){return this._scene}get schema(){var t;return(t=this._scene)==null?void 0:t.schema}_update(t={}){var e,r;lo(this,t,(r=(e=this._scene)==null?void 0:e.schema)==null?void 0:r[this.type])}set(t={},e={}){if(this.locked&&!e.force){let n=[];for(let s in t)switch(s){case"locked":case"_highlight":case"_isSelected":n.push(s)}if(n.length>0){let s={};for(const o of n)s[o]=t[o];t=s}else{console.log(`Node ID ${this.id} is locked and cannot be altered.`);return}}t.id&&delete t.id,t.src&&delete t.src,t.children&&delete t.children;let r={};for(let n in t)r[n]=this[n];try{this._update(t)}catch(n){console.warn(n.message);return}if(this._emitter){let n=0,s=0;for(let a in t)switch(t[a]===r[a]&&(delete t[a],delete r[a]),n++,a){case"x":case"y":case"z":case"ry":s++;break}const o=s===n?"set-transform":"set";Object.keys(t).length&&this._emitter.emit(o,{node:this,args:t,prevState:r,options:e,event:o})}}setTransform({x:t,y:e,z:r,ry:n}={},s={}){if(this.locked&&!s.force){console.log(`Node ID ${this.id} is locked and cannot be altered.`);return}let o={},a={};if(t!==void 0){let l=Number(t);this.x!==l&&Number.isFinite(l)&&(a.x=this.x,o.x=this.x=l)}if(e!==void 0){let l=Number(e);this.y!==l&&Number.isFinite(l)&&(a.y=this.y,o.y=this.y=l)}if(r!==void 0){let l=Number(r);this.z!==l&&Number.isFinite(l)&&(a.z=this.z,o.z=this.z=l)}if(n!==void 0){let l=Number(n);this.ry!==l&&Number.isFinite(l)&&(a.ry=this.ry,o.ry=this.ry=l)}const h="set-transform";this._emitter&&Object.keys(o).length&&this._emitter.emit(h,{node:this,args:o,prevState:a,options:s,event:h})}setMaterials(t={},e={}){if(this.locked&&!e.force){console.log(`Node ID ${this.id} is locked and cannot set materials.`);return}let r=0,n={};for(let a in t){const h=t[a];ap(h)&&(n[a]=(this.materials||{})[a],t[a],r++)}if(r<1){console.log("no valid material definitions in",t);return}const s={...this.materials||{},...t};try{this._update({materials:s})}catch(a){console.warn(a.message);return}const o="set-materials";this._emitter&&this._emitter.emit(o,{node:this,args:t,prevState:n,options:e,event:o})}setTransient(t={},e={}){let r={},n=0,s={};for(let a in t)a[0]==="_"&&(s[a]=this[a],r[a]=t[a],n++);if(n<1){console.log("no transient values in",t,"use underscore");return}try{this._update({...r})}catch(a){console.warn(a.message);return}const o="set-transient";this._emitter&&this._emitter.emit(o,{node:this,args:t,prevState:s,options:e,event:o})}setHighlight(t={},e={}){let r={_highlight:this._highlight};const{fill:n,fillOpacity:s,outline:o,outlineWidth:a}=t;let h;n&&Array.isArray(n)&&(h={fill:n,fillOpacity:s}),o&&Array.isArray(o)&&(h={...h||{},outline:o,outlineWidth:a});const l={_highlight:h};try{this._update(l)}catch(f){console.warn(f.message);return}const u="set-transient";this._emitter&&this._emitter.emit(u,{node:this,args:l,prevState:r,options:e,event:u})}find(t={}){if(!t.id&&(!t.type||typeof t.type!="string"||!Ui.includes(t.type)))return console.warn("type missing or invalid"),null;let e;return this.traverse(r=>{e||(t.id&&r.id===t.id||t.type&&r.type===t.type)&&(e=r)}),e}findAll(t={}){if(!t.type||typeof t.type!="string"||!Ui.includes(t.type))return console.warn("type missing or invalid"),[];let e=[];return this.traverse(r=>r.type===t.type&&e.push(r)),e}addChild(t,e={}){var r,n,s;if(!t.type||typeof t.type!="string"||!Ui.includes(t.type)){console.warn("type missing or invalid");return}else if(this.locked&&!["level","plan"].includes(this.type)&&!e.force){console.log(`Node ID ${this.id} is locked and cannot add children.`);return}if(t.id&&(n=(r=this.scene)==null?void 0:r.nodesById)!=null&&n[t.id]&&!e.regenerateIds){console.warn(`Node with id ${t.id} already exists and can not be added - use options.regenerateIds = true`);return}const o=e.setDefaults!==!1;let a;if(o){const h=(s=this.schema)==null?void 0:s[t.type],l=so(t.type,h)||{};a=lo(l,t,h)}else a=t;return new mi({node:a,parent:this,scene:this._scene,emitter:this._emitter,options:{...e,setDefaults:o}})}removeChild(t,e={}){var r;if(t.id){if(this.locked&&!["level","plan"].includes(this.type)&&!e.force){console.log(`Node ID ${this.id} is locked and cannot remove children.`);return}}else{console.error("not valid");return}let n;for(let a=0;a<this.children.length;a++)if(this.children[a].id===t.id){n=a;break}if(!Number.isFinite(n)){console.warn("Node does not exist or is already removed",t);return}let s=t.children||[];for(let a=s.length-1;a>=0;a--)t instanceof mi&&s[a]&&t.removeChild(s[a],e);(r=this._scene)!=null&&r.unregisterNode&&this._scene.unregisterNode(t),this.children.splice(n,1);const o="remove-child";this._emitter&&this._emitter.emit(o,{node:this,args:t,options:e,event:o}),(t!=null&&t.getReferringNodes?t.getReferringNodes():[]).forEach(a=>a.remove(e))}remove(t){if(this.locked&&!t.force){console.warn(`Node ID ${this.id} is locked and cannot be removed.`);return}else this.parent.removeChild(this,t)}getReferringNodes(){var t,e;let r=[],n=(t=this._scene)==null?void 0:t.nodesByType["a:relation:"+this.type];n&&n.forEach(a=>{var h;(h=a?.nodeIds)!=null&&h.hasOwnProperty(this.id)&&r.push(a)});let s=up[this.type]||"a:settings:"+this.type,o=(e=this._scene)==null?void 0:e.nodesByType[s];return o&&o.forEach(a=>{a?.nodeId==this.id&&r.push(a)}),r}getWorldPosition(){return vo(this)}getLocalPositionFromWorld(t){const e=this.getParents();return e!=null&&e.length&&e.reverse().forEach(r=>{t=Wc(t,r)}),t}getParents(){return yo(this)}toJson(t={}){let e=$r(this,t),r=Pe(e);return t.regenerateIds&&Qc(r,t),r}traverse(t){typeof t=="function"&&(t(this),this.children.forEach(e=>{e.traverse(t)}))}}const vo=(i,t)=>{const e=t?t.parent:i.parent;if(!e)return console.warn("no parent found"),i;let r=Wr(i,e);return e.parent&&(r=vo(r,e)),r},yo=i=>{let t=[];const e=i.parent;return e&&t.push(e),e!=null&&e.parent&&(t=t.concat(yo(e))),t},cp=(i,t,{setDefaults:e,regenerateIds:r})=>{if(!t&&e)throw new Error("schema is missing");if(!i)throw new Error("node missing");const n=t&&t[i.type];let s;if(n&&e){if(s=so(i.type,n),!s)throw new Error("no defaults found")}else s={};let o=Object.assign({},s,i);if(!o)throw new Error("applying defaults failed");return(!i.id||r)&&(o.id=se()),o};var yt=(i=>(i.residential="residential",i.office="office",i.parking="parking",i.lightIndustrial="lightIndustrial",i))(yt||{});const Xi={work:{name:"Work",isHidden:!0,description:"space for individual head-down work",spaceUsage:{privateOffice:{name:"Private office",category:["office"]},focusRoom:{name:"Focus room",category:["office"]},openWorkspace:{name:"Open workspace",category:["office"]},enclosedWorkspace:{name:"Enclosed workspace",category:["office"]},closedWorkspace:{name:"Closed workspace",isDeprecated:!0,category:["office"]},executiveOffice:{name:"Executive office",isDeprecated:!0,category:["office"]}}},meet:{name:"Meet",isHidden:!0,spaceUsage:{meetingRoom:{name:"Meeting room",category:["office"]},hub:{name:"Hub",category:["office"]},assembly:{name:"Assembly",category:["office"]},boardRoom:{name:"Board room",category:["office"]},trainingRoom:{name:"Training room",category:["office"]},collaboration:{name:"Collaboration",isDeprecated:!0,category:["office"]}}},live:{name:"live",isHidden:!0,spaceUsage:{living:{name:"Living",category:["residential"]},dining:{name:"Dining",category:["residential"]},dining_living:{name:"Living & Dining",category:["residential"]},homeOffice:{name:"Home office",category:["residential"]},bedroom:{name:"Bedroom",category:["residential"]}}},socialize:{name:"Socialize",isHidden:!0,spaceUsage:{lobby:{name:"Lobby",category:["office","residential"]},reception:{name:"Reception",category:["office"]},lounge:{name:"Lounge",category:["office"]},cafe:{name:"Cafe",category:["office"]},canteen:{name:"Canteen",category:["office"]},pantry:{name:"Pantry",category:["office"]},terrace:{name:"Terrace",isOutdoor:!0,category:["office","residential"]},balcony:{name:"Balcony",isOutdoor:!0,category:["office","residential"]},rooftop:{name:"Rooftop",isOutdoor:!0,category:["office","residential"]},courtyard:{name:"Courtyard",isOutdoor:!0,category:["office","residential"]},garden:{name:"Garden",isOutdoor:!0,category:["residential"]},common:{name:"Common",isDeprecated:!0,category:["office"]}}},support:{name:"Support",isHidden:!0,spaceUsage:{serviceKitchen:{name:"Service kitchen",category:["office"]},printStation:{name:"Print station",category:["office"]},storage:{name:"Storage",category:["lightIndustrial","residential","office","parking"]},mailRoom:{name:"Mail room",category:["office"]},operationalRoom:{name:"Operational room",category:["lightIndustrial","office","parking"]},serviceRoom:{name:"Service room",category:["office"]},laundryRoom:{name:"Laundry room",category:["residential"]},loadingDock:{name:"Loading dock",category:["lightIndustrial"]},operate:{name:"Operate",isDeprecated:!0,category:["office"]},services:{name:"Services",isDeprecated:!0,category:["office","residential"]}}},care:{name:"Care",isHidden:!0,spaceUsage:{kitchen:{name:"Kitchen",category:["residential"]},wellnessRoom:{name:"Wellness room",category:["lightIndustrial","office"]},restroom:{name:"Restroom",category:["lightIndustrial","office","parking"]},bathroom:{name:"Bathroom",category:["residential"]},shower:{name:"Shower",category:["lightIndustrial","office","residential"]},toilet:{name:"Toilet",category:["residential"]}}},circulate:{name:"Circulate",isHidden:!0,spaceUsage:{corridor:{name:"Corridor",category:["lightIndustrial","residential","office","parking"]},foyer:{name:"Foyer",category:["lightIndustrial","residential","office","parking"]},staircase:{name:"Staircase",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},elevator:{name:"Elevator",isVertical:!0,category:["lightIndustrial","residential","office","parking"]}}},drive:{name:"Drive",isHidden:!0,spaceUsage:{parkingSpot:{name:"Parking spot",category:["parking"]},driveway:{name:"Driveway",category:["parking"]},garage:{name:"Garage",category:["residential"]}}},produce:{name:"Produce",isHidden:!0,spaceUsage:{productionArea:{name:"Production area",category:["lightIndustrial"]}}},void:{isHidden:!0,name:"Void",spaceUsage:{shaft:{name:"Shaft",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},buildingOpening:{name:"Building opening",isVertical:!0,category:["lightIndustrial","residential","office","parking"]},floorOpening:{name:"Floor opening",isVertical:!0,category:["lightIndustrial","residential","office","parking"]}}},undefined:{isHidden:!0,spaceUsage:{undefined:{name:"Undefined",category:["residential","office"],isHidden:!0}}}},ue={};Object.keys(Xi).forEach(i=>{const t=Xi[i];ue[i]={name:t.name,type:"program",category:[]},t.isHidden&&(ue[i].isHidden=t.isHidden);const e={};Object.keys(Xi[i].spaceUsage).forEach(r=>{const n=Xi[i].spaceUsage[r];ue[r]={...n,type:"space",program:i},n.category.forEach(s=>{e[s]=!0})}),ue[i].category=Object.keys(e)});const mo=(i="")=>{i==="officeWorking"?i="work":i==="officeMeeting"&&(i="meet");let t=ue[i];return t?t.name:""},Gi=(i="")=>{const t=ue[i];let e;return t&&(e=t.type==="program"?i:t.program),e};function go({scene:i,uuid:t}){let e=i.nodesByType.polyfloor;t&&(e=e.filter(n=>n.id===t));const r=i.nodesByType.interior.map(n=>n.getWorldPosition());return e.map(n=>{let s=eo({node:n});if(!s.length)return;const o=Math.abs(s.reduce((u,f)=>u+le(f),0)),a=to(s[0],s.slice(1)),h=ki(s),{interiors:l}=np({polygons:s,scene:i,interiors:r});return{node:n,boundingBox:h,id:n.id,usage:n.usage,usageName:mo(n.usage),program:Gi(n.usage),polygons:s,interiors:l,area:o,center:a,customId:n.customId,name:n.name}}).flatMap(n=>n?[n]:[])}const Vr=(i,t=!0,e=!1)=>{const r=i.nodesByType.column.map(f=>f.getWorldPosition()),n=i.nodesByType.wall.map(f=>f.getWorldPosition()),s=.001,o=[...n,...r].map(f=>{let p=zr(f);if(t&&(p=Ke([p],s)[0]),e)return[p];let d=ro(f,"window"),v=ro(f,"door"),m=d.concat(v);if(m=m.map(y=>(y.w=f.w,y)),m!=null&&m.length){let y=m.map(zr);return Xc([p],y,s*2)}else return[p]}).reduce((f,p)=>f.concat(p),[]),a=o.length?Hr(o):[],{counterClockwise:h,clockwise:l}=jc(a),u=Vc(h,l);return h.map((f,p)=>[f,...u[p]||[]])},pp={spaceContourAreaThreshold:.1};class dp{constructor({schema:t,options:e={}}={}){this.sceneId=null,this.node=null,this._apiVersion="3.7.0",this.nodesById={},this.nodesByType=no(),this.nodesByName={},this.options={...pp,...e},this._schema=t||{},this._emitter=new Yr}get emitter(){return this._emitter}get schema(){return this._schema}set schema(t){typeof t=="object"&&(this._schema=t)}loadSceneStructure(t,e={}){if(this._emitter.emit("scene-structure-loading",this),!t||t.type!=="plan")throw new Error("invalid sceneStructure");this.nodesById={},this.nodesByType=no(),this.node=null;let r=Pe(t);return Number.isFinite(e.planRotation)&&(r._ryOrg=t.ry,r.ry=e.planRotation),this.node=new mi({node:r,scene:this,emitter:this.emitter,options:e}),this.setSpaceCategories(),this._emitter.emit("scene-structure-loaded",this),this.node}setSceneType(){this.setSpaceCategories()}_setSceneType(){const t=this.node.class;if(t!=null&&t.length)t.includes(yt.residential)?this.type=yt.residential:t.includes("commercial")||t.includes(yt.office)?this.type=yt.office:t.includes(yt.parking)&&(this.type=yt.parking);else{const e=this.nodesByType.polyfloor.map(r=>r.usage);e.includes("bedroom")?this.type=yt.residential:(e.includes("work")||e.includes("meetingRoom")||e.includes("openWorkspace"))&&(this.type=yt.office)}}setSpaceCategories(){let t=[];const e=this.node.class;if(e!=null&&e.length)t=Array.from(e.reduce((r,n)=>(n==="commercial"?r.add(yt.office):yt[n]&&r.add(yt[n]),r),new Set));else{const r=this.nodesByType.polyfloor.map(n=>n.usage);r.includes("bedroom")&&t.push(yt.residential),(r.includes("work")||r.includes("meetingRoom")||r.includes("openWorkspace"))&&t.push(yt.office)}this.spaceCategories=t,this._setSceneType()}getFloorArea(){const t=go({scene:this}).reduce((e,r)=>r.program==="void"?e:e+r.area,0);return Math.round(t*10)/10}registerNode(t){this.nodesById[t.id]&&console.error("Duplicate id",t.id),this.nodesById[t.id]=t,this.nodesByType[t.type]=this.nodesByType[t.type]||[],this.nodesByType[t.type].push(t),t.name&&(this.nodesByName[t.name]=this.nodesByName[t.name]||[],this.nodesByName[t.name].push(t))}unregisterNode(t){t.id&&delete this.nodesById[t.id];const e=(r,n)=>{if(r[t[n]]){let s=r[t[n]].findIndex(o=>o.id===t.id);Number.isFinite(s)&&r[t[n]].splice(s,1)}};e(this.nodesByType,"type"),e(this.nodesByName,"name")}on(t,e,r){t&&e?this._emitter.on(t,e,r):console.log("invalid event listener")}once(t,e,r){t&&e?this._emitter.once(t,e,r):console.log("invalid event listener")}off(t,e){t?this._emitter.off(t,e):console.log("invalid request")}emit(t,e,r,n,s){this._emitter.emit(t,e,r,n,s)}get apiVersion(){return this._apiVersion}}function vp(i){let t=[];return i.shape==="square"?t.push({type:"rectangle",position:[-i.l/2,-i.l/2],dimensions:[i.l,i.l]}):i.shape==="circle"?t.push({type:"circle",position:[0,0],radius:i.l/2}):i.shape==="polygon"&&t.push({type:"polygon",points:i.polygon}),t}function yp(i,t){const e=i.doorType||"singleSwing",r=i.l,n=t.w;let s=[],o=i.doorAngle;const a=i.hinge==="right",h=i.side==="back",l=t.controlLine==="front"?-n:t.controlLine==="center"?-n/2:0;if(o<20&&(o=20),e==="singleSwing"){let u=o*Math.PI/180,f,p,d,v;h?(f=a?0:180-o,p=a?o:180,d=a?[0,l]:[r,l],v=[d[0]+r*Math.cos(u)*(a?1:-1),d[1]+-r*Math.sin(u)]):(f=a?-180:360-o,p=a?-180+o:360,d=a?[r,n+l]:[0,n+l],v=[d[0]+r*Math.cos(u)*(a?-1:1),d[1]+r*Math.sin(u)]),s.push({type:"arc",radius:r,position:d,startAngle:f,endAngle:p},{type:"line",start:d,end:v})}else if(e==="doubleSwing"){const u=o*Math.PI/180;let f,p,d,v,m,y,g,w;h?(f=0,p=o,d=[0,l],v=[d[0]+r/2*Math.cos(u),d[1]+-r/2*Math.sin(u)],g=[r,l],w=[g[0]+-r/2*Math.cos(u),g[1]+-r/2*Math.sin(u)],m=180-o,y=180):(f=360-o,p=360,d=[0,n+l],v=[d[0]+r/2*Math.cos(u),d[1]+r/2*Math.sin(u)],g=[r,n+l],w=[g[0]+-r/2*Math.cos(u),g[1]+r/2*Math.sin(u)],m=180,y=180+o),s.push({type:"arc",radius:r/2,position:d,startAngle:f,endAngle:p},{type:"line",start:d,end:v}),s.push({type:"arc",radius:r/2,position:g,startAngle:m,endAngle:y},{type:"line",start:g,end:w})}return s.push({type:"rectangle",position:[0,l],dimensions:[i.l,n]}),s}function mp(i){let t=[];const e=/90$/g.test(i.cooktopType),r=gp(i),n=_p(i,r,e),s=xp(i,n),o=wp(i,n),a=Pp(i,n),h=.25,l=.6;t.push(Re([0,i.barCounter?-h:0],i.l,i.barCounter?i.w+h:i.w)),n.forEach(f=>{t.push(Tt([f,i.w],[f,i.w-.075]))}),r&&i.barCounter&&t.push(Tt([i.highCabinetLeft*i.elementLength,0],[i.l-i.highCabinetRight*i.elementLength,0]));for(let f of s){const p=n[f],d=p-l;t.push(Tt([d||0,i.w],[d||0,0]),Tt([d||0,0],[p,i.w]),Tt([d||0,i.w],[p,0]),Tt([p,i.w],[p,0]))}const u={fill:!1};if(o&&n[o-2]){let f={type:"group",position:[n[o-2],0],children:[Re([.05,i.w-.5],i.sinkType!=="double"?.5:1.1,.45,u),Re([.1,i.w-.4],i.sinkType!=="double"?.4:.35,.3,u),Re([i.sinkType!=="double"?i.elementLength/2-.02:.48,i.w-.45],.04,.18,u)]};i.sinkType==="double"&&f.children.push(Re([.55,i.w-.4],.35,.3,u),Tt([.95,i.w-.4],[.95,i.w-.1]),Tt([1,i.w-.4],[1,i.w-.1]),Tt([1.05,i.w-.4],[1.05,i.w-.1]),Tt([1.1,i.w-.4],[1.1,i.w-.1])),t.push(f)}if(a&&n[a-2]){let f={type:"group",position:[n[a-2],0],children:[Re([.05,i.w-.55],e?.8:.5,.5,u)]};e?f.children.push(Gt([.225,i.w-.4],.08,u),Gt([.675,i.w-.4],.08,u),Gt([.45,i.w-.3],.08,u),Gt([.225,i.w-.2],.08,u),Gt([.675,i.w-.2],.08,u)):f.children.push(Gt([.2,i.w-.4],.08,u),Gt([.4,i.w-.4],.08,u),Gt([.2,i.w-.2],.08,u),Gt([.4,i.w-.2],.08,u)),t.push(f)}return r&&i.wallCabinet&&t.push(Tt([i.highCabinetLeft*i.elementLength,i.wallCabinetWidth],[i.l-i.highCabinetRight*i.elementLength,i.wallCabinetWidth])),t}function gp(i){const t=i.elementLength,e=i.highCabinetLeft*t,r=i.highCabinetRight*t;return Math.max(0,i.l-e-r)}function _p(i,t,e){const r=i.elementLength,n=.9,s=i.highCabinetLeft*r;let o,a=[],h=0,l=0;for(o=0;o<i.highCabinetLeft;o++){let u=i.l-h;h+=u>r?r:u,a[o]=h,l++}for(;h+r<s+t;){let u=l===i.cooktopPos-1&&i.cooktopType!=="none"&&e;h+=u?n:r,l++,a.push(h)}for(o=i.highCabinetRight;o>0;o--)h=i.l-r*o+r,a.push(h);return a=a.map(u=>Math.round(u*10)/10),a}function xp(i,t){let e,r=[];for(e=0;e<i.highCabinetLeft;e++)r.push(e);for(e=0;e<i.highCabinetRight;e++)r.push(t.length-1-e);return r}function wp(i,t){return typeof i.sinkPos=="number"&&i.sinkPos>i.highCabinetLeft&&i.sinkPos<=t.length-i.highCabinetRight&&i.sinkType!=="none"?i.sinkPos:null}function Pp(i,t){return typeof i.cooktopPos=="number"&&i.cooktopPos>i.highCabinetLeft&&i.cooktopPos<=t.length-i.highCabinetRight&&i.cooktopType!=="none"?i.cooktopPos:null}function Tt(i,t){return{type:"line",start:i,end:t}}function Re(i,t,e,r){return{type:"rectangle",position:i,dimensions:[t,e],style:r}}function Gt(i,t,e){return{type:"circle",position:i,radius:t,style:e}}function bp(i){let t;return i.controlLine==="center"?t=-i.w/2:i.controlLine==="front"?t=-i.w:t=0,[{type:"rectangle",position:[0,t],dimensions:[i.l,i.w]}]}function ii(i,t,e=.5){let r=[t[0]-i[0],t[1]-i[1]];return[i[0]+r[0]*e,i[1]+r[1]*e]}function Tp(i,t,e,r=5){const n=[];let s,o,a,h=0;for(let l=0;l<=r;++l)h=l/r,s=ii(i,t,h),o=ii(t,e,h),a=ii(s,o,h),n.push(a);return n}const Cp=48,Ip=12,Ep=100,_o=(i,t)=>{const e=Math.ceil(Cp/(Math.PI*2)*i*t),r=Math.ceil(Ip/(Math.PI*2)*i);return Math.min(Ep,Math.max(r,e))},xo=i=>{const t={type:"polygon",points:[]};switch(i.type){case"circle":const e=i.radius,r=_o(Math.PI*2,e),n=i.position,s=Math.PI*2/r;let o=0;for(let h=0;h<r;h++)t.points.push([e*Math.cos(o)+n[0],-e*Math.sin(o)+n[1]]),o+=s;break;case"polygon":t.points=i.points;break;case"rectangle":const a=i.dimensions;t.points=[[0,0],[0,a[1]],[a[0],a[1]],[a[0],0]];break;case"composite":for(const h of i.segments){let l=jr(h);t.points.push(...l.points)}break}return t},jr=i=>{const t={type:"polyline",points:[]};switch(i.type){case"line":t.points=[i.start,i.end];break;case"arc":const e=i.startAngle/180*Math.PI,r=i.endAngle/180*Math.PI-e,n=i.radius,s=_o(Math.abs(r),n),o=i.position,a=r/s;let h=e;for(let l=0;l<s+1;l++)t.points.push([n*Math.cos(h)+o[0],-n*Math.sin(h)+o[1]]),h+=a;break;case"polyline":t.points=i.points;break;case"quadraticBezier":t.points.push(i.points[0]);for(let l=0;l<=i.points.length-3;l++){let u=i.points[l],f=i.points[l+1],p=i.points[l+2],d=l===0?u:ii(u,f),v=l===i.points.length-3?p:ii(f,p),m=Tp(d,f,v);t.points.push(...m.slice(1))}break}return t};function Sp(i,t={}){const e="straight",r=t.style!=="labelled",n=i.circulation==="left",s=.3;let o=i.stairType||e,a=i.l;const h=i.stepWidth;i.stairType==="straightLanding"?a=i.l-1:i.stairType==="lShaped"?a=i.l+i.w-2*h:i.stairType==="winder"?a=i.l+i.w-h:i.stairType==="halfLanding"?a=(i.l-h)*2:i.stairType==="2QuarterLanding"?a=(i.l-h)*2+i.w-h*2:i.stairType==="doubleWinder"&&(a=i.l*2+i.w-h*2);const l=(a/i.h+1.2321)/.10357/100,u=Math.round(a/l),f=!n&&i.railing==="left"||n&&i.railing==="right"||i.railing==="both",p=!n&&i.railing==="right"||n&&i.railing==="left"||i.railing==="both",d=.05;let v=a/u,m={shape:[],runs:[],railings:[]},y,g,w;switch(o){case"straight":case"straightLanding":m.shape=[[0,0],[i.l,0],[i.l,i.w],[0,i.w]];break;case"lShaped":case"winder":m.shape=[[0,0],[i.l,0],[i.l,i.w],[i.l-h,i.w],[i.l-h,h],[0,h]];break;case"halfLanding":case"2QuarterLanding":case"doubleWinder":m.shape=[[0,0],[i.l,0],[i.l,i.w],[0,i.w],[0,i.w-h],[i.l-h,i.w-h],[i.l-h,h],[0,h]];break}if(m.railings=Lp(m.shape,d,f,p),r)switch(o){case"straight":m.runs=[{type:"straight",data:[0,0,u,v,0]}];break;case"straightLanding":y=Math.ceil(u/2),g=u-y,m.runs=[{type:"straight",data:[0,0,y,v,0]},{type:"straight",data:[y*v+1,0,g,v,0]}];break;case"lShaped":y=Math.floor((i.l-h)/v),g=u-y,m.runs=[{type:"straight",data:[0,0,y,(i.l-h)/y,0]},{type:"straight",data:[i.l,h,g,(i.w-h)/g,-90]}];break;case"winder":g=2*Math.round((h/2+s)/v),y=Math.round((i.l-h-s)/v),w=u-y-g,m.runs=[{type:"straight",data:[0,0,y,(i.l-h-s)/y,0]},{type:"winder",data:[i.l-h-s,0,g,0]}],w>0&&m.runs.push({type:"straight",data:[i.l,h+s,w,(i.w-h-s)/w,-90]});break;case"halfLanding":y=u/2,g=u/2,m.runs=[{type:"straight",data:[0,0,y,v,0]},{type:"straight",data:[y*v,i.w,g,v,180]}];break;case"2QuarterLanding":y=Math.round((i.l-h)/v),w=y,g=u-y*2,v=(i.l-h)/y,m.runs=[{type:"straight",data:[0,0,y,(i.l-h)/y,0]},{type:"straight",data:[i.l,h,g,(i.w-h*2)/g,-90]},{type:"straight",data:[y*v,i.w,w,(i.l-h)/y,180]}];break;case"doubleWinder":g=4*Math.round((h/2+s)/v),w=Math.round((i.w-(h+s)*2)/v),y=Math.round((u-g-w)/2),m.runs=[],y>0&&m.runs.push({type:"straight",data:[0,0,y,(i.l-h-s)/y,0]}),m.runs.push({type:"winder",data:[i.l-h-s,0,g/2,0]}),w>0&&m.runs.push({type:"straight",data:[i.l,h+s,w,(i.w-(h+s)*2)/w,-90]}),m.runs.push({type:"winder",data:[i.l,i.w-h-s,g/2,-90]}),y>0&&m.runs.push({type:"straight",data:[i.l-h-s,i.w,y,(i.l-h-s)/y,180]});break}let _,b=[];if(t.style!=="labelled"){let I=[[v/2-.06,h/2+.12],[v/2+.06,h/2],[v/2-.06,h/2-.12]];b.push({type:"polyline",points:I})}if(o!=="spiral")_={type:"polygon",points:m.shape},m.runs.forEach(I=>{I.type==="straight"?b=b.concat(Ap(...I.data,h)):I.type==="winder"&&(b=b.concat(Op(...I.data,h,s)))});else if(o==="spiral"){const I=i.w,N=I-h,C=N+h/2;let E=i.l/C;const F=E/u;E>2*Math.PI&&(E=2*Math.PI-.01);let O=[0,i.w],R=E/Math.PI*180-90;_={type:"composite",segments:[{type:"arc",radius:I,position:O,startAngle:-R,endAngle:90},{type:"arc",radius:N,position:O,startAngle:90,endAngle:-R}]},m.railings=[];const H=I-d,S=N+d;if(f&&m.railings.push({type:"arc",radius:H,position:O,startAngle:-R,endAngle:90}),p&&m.railings.push({type:"arc",radius:S,position:O,startAngle:-R,endAngle:90}),r){let A=0;for(var x=0;x<u&&!(A>=E);x++){const D=[Math.sin(A)*I,Math.cos(A)*I-I],it=[Math.sin(A)*N,Math.cos(A)*N-I];b.push({type:"polyline",points:[[D[0],-D[1]],[it[0],-it[1]]]}),A+=F}}}let P=[_,...b,...m.railings];return n&&(P=P.map(I=>(I.type==="composite"&&(I=xo(I)),I.type==="arc"&&(I=jr(I)),(I.type==="polygon"||I.type==="polyline")&&I.points.forEach(N=>{N[1]=-N[1]+i.w}),I))),P}function Ap(i,t,e,r,n=0,s){n=n||0;const o=[];for(var a=0;a<e;a++){let h=[[a*r,0],[a*r,s]];h=At({x:i,z:t,ry:n},h),o.push({type:"polyline",points:h})}return o}function Op(i,t,e,r,n,s){let o=0,a=0;r=r||0;const h=[];let l=s,u=e/2,f=(n+l)/u,p=l/u,d=0,v=0;for(var m=0;m<u;m++){let y=[[o+d,a+n],[o+v,a]];y=At({x:i,z:t,ry:r},y),h.push({type:"polyline",points:y}),d+=p,v+=f}for(o+=d,d=0,v=0,m=0;m<u;m++){let y=[[o,a+n+d],[o+n,a+v]];y=At({x:i,z:t,ry:r},y),h.push({type:"polyline",points:y}),d+=p,v+=f}return h}function Lp(i,t,e,r){const n=[];if(!e&&!r)return[];let s=[];i.length===4?s=i.map((h,l)=>[h[0],h[1]+(l<2?t:-t)]):i.length===6?s=i.map((h,l)=>{let u=[...h];return l<2?u[1]+=t:l>3&&(u[1]-=t),l===1||l===2?u[0]-=t:(l===3||l===4)&&(u[0]+=t),u}):i.length===8&&(s=i.map((h,l)=>{let u=[...h];return l<2||l>3&&l<6?u[1]+=t:(l<4||l>5)&&(u[1]-=t),(l===1||l===2)&&(u[0]-=t),(l===5||l===6)&&(u[0]+=t),u}));const o=s.slice(0,s.length/2),a=s.slice(s.length/2,s.length);return e&&n.push({type:"polyline",points:o}),r&&n.push({type:"polyline",points:a}),n}new Dc({size:256});function qr(i){return new Promise((t,e)=>{i.oncomplete=i.onsuccess=()=>t(i.result),i.onabort=i.onerror=()=>e(i.error)})}function wo(i,t){const e=indexedDB.open(i);e.onupgradeneeded=()=>e.result.createObjectStore(t);const r=qr(e);return(n,s)=>r.then(o=>s(o.transaction(t,n).objectStore(t)))}let Zr;function Po(){return Zr||(Zr=wo("keyval-store","keyval")),Zr}function Mp(i,t=Po()){return t("readonly",e=>qr(e.get(i)))}function Np(i,t,e=Po()){return e("readwrite",r=>(r.put(t,i),qr(r.transaction)))}const G={new_york:"#0c1829",stone:"#4d586b",warsaw:"#929baa",oslo:"#72849e",athens:"#e8ebef",gray:"#cfd5de",stone_08:"#f1f2f3",whisper:"#f7f8fa",white:"#ffffff",zurich:"#bdd8ff",zurich_48:"#dfecff",blue_ribbon:"#3355ff",flamingo:"#ef5533"},Yt={api:{productDataCacheAge:24*3600*1e3,productContourCacheAge:10*24*3600*1e3},hideElements:[],panZoom:!0,planRotation:0,preserveViewbox:"center-center",roomStampSize:null,showCeilingLamps:!1,xrayMode:!1,destroyOnDomRemove:!1,ui:{scale:!0,coordinates:!1},spaceLabelMapping:{},theme:{fontFamily:"Avenir, Verdana, sans-serif",background:{color:G.whisper,showGrid:!1},wallContours:!1,showAssetTextures:!1,elements:{floorPlan:{grayscale:!1},roomStamp:{showArea:!0,showUsage:!0}}},units:{system:"metric",areaDecimals:0,lengthDecimals:3,roomDimensions:"area"},zoomRange:[3,300]},Fp=i=>"publishableToken"in i?(console.warn("token.publishableToken is deprecated, please use the token.publishableAccessToken option"),Ys({publishableAccessToken:i.publishableToken,...i})):Ys(i);let Jr="archilogic/product",Yi="https://storage.archilogic.com";const Rp=i=>{i&&typeof i=="object"&&(Yt.api={...Yt.api,...i})};async function Dp(i,t){return gc("GET",`/v2/floor/${i}/scene-structure?includeMetadata=true`,{},t)}function Bp(i){return To(`${Yi}/${Jr}/outline/${i}.json`)}function bo(i){return`${Yi}/${Jr}/thumb/${i}.png`}function kp(i){return To(`${Yi}/${Jr}/json/${i}.json`)}function To(i){return fetch(i).then(t=>{if(t.ok)return t.json();throw Error(t.statusText)})}function Up(i){const t=document.createElement("div"),e=document.createElement("div"),r=document.createElement("div"),n=document.createElement("div");return t.classList.add("fpe-err"),e.classList.add("fpe-err__box"),r.classList.add("fpe-err__title"),n.classList.add("fpe-err__msg"),i.append(t),t.append(e),e.append(r),e.append(n),r.textContent="Something went wrong",i.append(t),i}function Xp(i,t="Floor plan engine couldn't load properly on this page. For technical details check the browser console."){const e=document.getElementById(i),r=e.querySelector(".fpe-err")??Up(e);r.querySelector(".fpe-err__msg").textContent=t}function Gp(i){var t;(t=document.querySelector(`#${i} .fpe-err`))==null||t.remove()}const Yp="al-kvs",Hp="al-keyval",Qr=typeof window>"u"||typeof process<"u",Co=!Qr&&wo(Yp,Hp);let Io=!0;async function Eo(i,t,e){if(Qr)return Promise.resolve();e=e||30*24*3600*1e3;try{const r={timeStamp:new Date().getTime(),content:t,maxAge:e};return Io&&await Np(i,r,Co),i}catch{return}}async function So(i,t){if(Qr)return Promise.resolve();const e=t||30*24*3600*1e3,r=new Date().getTime();let n;try{Io&&(n=await Mp(i,Co));const s=r-n.timeStamp,o=Math.min(n.maxAge,e);if(s>o)return;if(n.content)return n.content}catch{return}}function Wp(i){const t={10:["ceilingLight","wallLight"],9:["modularMeetingRoom","phoneBooth"],8:["floorLamp","tableLamp","deskDivider","cushion","plant","officeSupply","tableware","decoration","laundry","electronics","kitchen","car"],7:["shelf","cabinet","wardrobe","storageCombination","outdoor","bicycle","people","sink"],6:["highTable","diningTable","conferenceTable","desk"],5:["sofa","armchair","loungeChair","ottoman","sideboard","pedestal"],4:["taskChair","diningChair","conferenceChair","stool","barStool","bench"],3:["shower"],2:["singleBed","doubleBed","daybed","toilet","bathtub"],1:["sideTable","coffeeTable","radiator","nightstand"],0:["rug"]};let e=0;return i.subCategories.forEach(r=>{Object.keys(t).forEach(n=>{let s=parseInt(n);t[n].includes(r)&&s>e&&(e=s)})}),e===1&&i.categories.includes("tables")&&i.boundingBox.height>.6&&(e=6),e}const Ao={kitchen:mp,column:vp,stairs:Sp,wall:bp,door:yp};function zp(i,t,e){if(Ao[i.type])return Ao[i.type](i,t);if(Kr[i.type])return Kr[i.type](i,t,e)}const Kr={box:i=>ri(i),curtain:i=>{const t=Math.min(Math.max(i.folds||10,Math.round(i.l*5)),Math.max(1,Math.round(i.l*15))),e=.05,r=i.w,n=i.l/t;let s=[],o=[];var a,h,l,u=0,f=r/2,p=e/2;let d=i.id.replace(/-/gi,""),v=d.length;for(var m=0;m<t;m++){h=p,l=f;let y=parseInt(d[m%v],16)/20;p=e/2+y*e/2*(m%2===0?-1:1),f=r/2+y*r/2*(m%2===0?-1:1),a=u,u=n*(m+1),o.push([a,l]),s.push([a,h]),m===t-1&&(o.push([u,f]),s.push([u,p]))}return[{type:"composite",segments:[{type:"quadraticBezier",points:s},{type:"quadraticBezier",points:o.reverse()}]}]},railing:i=>ri(i),floor:i=>ri(i),window:(i,t)=>ri(i,t),closet:i=>ri(i),interior:(i,t,e)=>{if(!e)return[{type:"circle",position:[0,0],radius:.01}];if(e=e.sort((r,n)=>ti(r)>ti(n)?-1:1),!(!e||!e.length))return[{type:"polygon",points:e[0],holes:e.slice(1)}]},polyfloor:i=>[{type:"polygon",points:i.polygon,holes:i.polygonHoles||[]}],polybox:i=>[{type:"polygon",points:i.polygon}],"a:helper:spaceDivider":i=>[{type:"rectangle",position:[0,-.02],dimensions:[i.l,.04]}],floorplan:i=>[{type:"rectangle",position:[-i.l/2,-i.w/2],dimensions:[i.l,i.w],style:{fill:!1}}]};function ri(i,t){let e=0,r=i.w;return i.type==="wall"&&(e=i.controlLine==="front"?i.w:i.controlLine==="center"?i.w/2:0),i.type==="window"&&(r=t.w,e=t.controlLine==="front"?t.w:t.controlLine==="center"?t.w/2:0),[{type:"polygon",points:[[0,0-e],[i.l,0-e],[i.l,r-e],[0,r-e]]}]}const fe=i=>{var t;return((t=i.src)==null?void 0:t.substring(1))||""},$p="fpe-pr1-",Oo="fpe-dc2-";var De=(i=>(i[i.None=0]="None",i[i.Default=1]="Default",i[i.Grayscale=2]="Grayscale",i))(De||{});let Vp=class extends Yr{constructor(t,e){var r,n,s;super(),this.productQueue={},this.textureQueue={},this.promiseCache=new Map,this.loadStages={product:!0,productContour:!0,productTexture:!1},this.isSceneStructureLoaded=!1,this.initialLoading=!0,this._loadCounter=0,this.resources=t,this.productContourCacheAge=(r=e.api)==null?void 0:r.productContourCacheAge,this.productDataCacheAge=(n=e.api)==null?void 0:n.productDataCacheAge,this.loadStages.productTexture=!!((s=e.theme)!=null&&s.showAssetTextures)&&e.loadTextures!==!1,this.on("product-load-stage",this.loadStatus,this)}loadStatus({args:t}){const e=Object.values(this.textureQueue).reduce((s,o)=>s+o.nodes.size,0),r=Object.values(this.productQueue).reduce((s,o)=>s+o.nodes.size,0),n=e+r;this._loadCounter++,this.emit("loading-status",{totalCount:n,doneCount:this._loadCounter}),n===this._loadCounter&&this.emit("loading-done",{totalCount:n})}reset(){this.resources.spaces=[],this.resources.assets=[],this.resources.products={},this.resources.productContours={},this.resources.productBoundingBoxes={},this.textureQueue={},this.productQueue={},this._loadCounter=0,this.promiseCache=new Map,this.initialLoading=!0}};async function jp(i,t){if(t.promiseCache||(t.promiseCache=new Map),!i||!i.src)return;const e=fe(i);t.productQueue[e]||(t.productQueue[e]={loadStage:0,nodes:new Set}),t.productQueue[e].nodes.add(i),t.productQueue[e].loadStage<1&&await td(e,t),t.loadStages.productContour&&qp(i,t)}async function qp(i,t){const e=fe(i),r=t.resources.products[e];if(!r||!t.productQueue[e])return;const n=lp(i,r);if(Kp(t.resources,i),!t.textureQueue[n]){const s=bo(n);t.textureQueue[n]={productId:e,loadStage:0,nodes:new Set,textureUrl:s,applyFilter:1},t.loadStages.productTexture&&t.emit("product-load-texture",{textureId:n,productData:r})}if(t.textureQueue[n].nodes.add(i),t.textureQueue[n].loadStage===2){t.emit("product-load-stage",{node:i,args:{_loadStage:3,_textureId:n}});return}t.resources.productBoundingBoxes[e]||(t.resources.productBoundingBoxes[e]=Zp(r),t.productQueue[e].loadStage=2),t.productQueue[e].loadStage===2&&t.emit("product-load-stage",{node:i,args:{_loadStage:2}}),t.resources.productContours[e]||Jp(r,t).then(()=>{var s,o;((s=t.textureQueue[n])==null?void 0:s.loadStage)===1||(o=t.textureQueue[n])!=null&&o.error?t.emit("product-contour",n):t.loadStages.productTexture||t.emit("product-load-stage",{node:i,args:{_loadStage:3}})})}const Zp=i=>{const t=i.boundingPoints;let e;if(t)return e=[[t.min[0],t.min[2]],[t.min[0],t.max[2]],[t.max[0],t.max[2]],[t.max[0],t.min[2]]],i._loadStage=1,[e]},Jp=async(i,t)=>{const{productId:e}=i,r=Oo+e,n=t.promiseCache.get(r);if(n)return n;const s=ed(e,t).then(o=>{const a=o;t.resources.productContours[e]=a,t.resources.products[e]._shapes=Kr.interior({type:"interior"},null,a),t.productQueue[e].loadStage=3}).catch(()=>{});return t.promiseCache.set(r,s),s};function Qp(i){if(!i)return;const t=i.subCategories.includes("ceilingLight"),e=i.subCategories.includes("rug"),r=i.productResourceId,n=bo(r);return{preview:i.preview,manufacturer:i.manufacturer,productId:r,name:i.productDisplayName,fileKey:i.fileKey,tags:i.tags,categories:i.categories,subCategories:i.subCategories,boundingPoints:i.boundingPoints,boundingBox:i.boundingBox,seatCapacity:i.seatCapacity,texture:n,materials:[],matColors:i.matColors,colours:i.colours,order:Wp(i),isCeilingLamp:t,isCarpet:e,createdAt:i.createdAt,updatedAt:i.updatedAt,link:i.link}}function Kp(i,t){if(!t||t.type!=="interior")return;let e=fe(t);if(!e)return;let r=co(t,i.products[e]);r&&!i.products[e].materials.includes(r)&&i.products[e].materials.splice(0,0,r)}function td(i,t){const e=t.productDataCacheAge,r=e||24*3600*1e3;if(!i)return Promise.reject("product id missing");const n=$p+i,s=t.promiseCache.get(n);if(s)return s;const o=So(n,e).then(a=>!a||!a.matColors?kp(i).then(h=>(h.matColors={},h.colours&&h.colours.length&&h.colours.forEach(l=>{if(!l.includes(":"))return;let u=l.split(":"),f=po(u[1]);h.matColors[f]=u[2]}),Eo(n,h,r),h)):a).then(a=>{const h=Qp(a);t.resources.products[i]=h,t.productQueue[i].loadStage=1,t.emit("product-data",{productId:i,data:h})}).catch(a=>{console.warn(a.message)});return t.promiseCache.set(n,o),o}function ed(i,t){const e=t.productContourCacheAge,r=e||10*24*3600*1e3;if(!i)return Promise.reject("product id missing");const n=Oo+i,s=t.promiseCache.get(n);if(s)return s;const o=So(n,e).then(a=>a||Bp(i).then(h=>(Eo(n,h,r),h))).catch(a=>{console.warn(a)});return t.promiseCache.set(n,o),o}function Lo(i,t){const{node:e,...r}=t;return{...r,resourceType:i,setHighlight:n=>{e.setHighlight(n)},node:e}}function id(i){return Lo("space",i)}function rd(i){return Lo("asset",i)}const Mo=i=>{const t=i.scene.nodesByType.interior;return Promise.all(t.map(e=>jp(e,i.loader).catch(r=>console.error(r)))).then(()=>{i.resources.assets=t.map(e=>{const r=od(e,i.resources);return r&&rd(r)}).filter(e=>e)})};function nd(i,t){!i||t.type!=="polyfloor"||(i.usage=t.usage,i.usageName=mo(t.usage),i.program=Gi(t.usage),i.name=t.name,i.customId=t.customId)}function sd(i,t){if(!i)return null;const e=fe(i),r=t.products[e];if(!r)return null;const{boundingPoints:n}=r;if(n){const{min:s,max:o}=n,a=[[s[0],s[2]],[s[0],o[2]],[o[0],o[2]],[o[0],s[2]]];return At(i.getWorldPosition(),a)}return null}function od(i,t){if(!i)return;const e=fe(i),r=t.products[e];if(!r){console.error("no productData",e,i);return}const n=i.getWorldPosition(),s=sd(i,t),o=s&&ki([s]);return{id:i.id,node:i,polygon:s,boundingBox:o,name:r.name,manufacturer:r.manufacturer,productId:e,tags:r.tags,categories:r.categories,subCategories:r.subCategories,dimensions:r.boundingBox,seatCapacity:r.seatCapacity,position:{x:n.x,y:n.y,z:n.z},rotation:n.ry}}const No=class{constructor({options:t={},scene:e}={}){this.settings=Pe(Yt),this.fpeId="fpe-"+Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,3),this.resources={spaces:[],assets:[],products:{},productContours:{},productBoundingBoxes:{}},this.computed={wallContours:[],relations:{spaces:[]},snapPoints:[],snapMargin:0},this.isBrowser=typeof process!="object"&&typeof window<"u",this.location={latitude:0,longitude:0},this._emitter=new Yr,this.set(t),this.loader=new Vp(this.resources,this.settings),this.scene=e||new dp,e&&this.initScene(e),this.utils={polygonOffset:Ke,polygonIntersection:Js,pointInPolygon:Fe,polygonUnion:Hr},this.scene.on("scene-structure-loading",()=>{this.loader.isSceneStructureLoaded=!1}),this.scene.on("scene-structure-loaded",this.initScene,this)}on(t,e,r){return this._emitter.on(t,e,r),this}once(t,e,r){return this._emitter.once(t,e,r),this}off(t,e){return this._emitter.off(t,e),this}emit(t,...e){return this._emitter.emit(t,...e),this}initScene(t){this.loader.initialLoading||this.loader.reset(),this.scene||(this.scene=t),this.loader.isSceneStructureLoaded=!0,this.settings.theme.wallContours&&(this.computed.wallContours=Vr(this.scene)),this.getSpaces(),this.loader.emit("spaces-loaded",!0),Mo(this).then(()=>{const e=this.settings.hideElements.includes("interior"),r=this.scene.nodesByType.interior.length===0;this.loader.emit("assets-loaded",!0),(e||r)&&this.loader.emit("loading-done",{totalCount:0})}),this.loader.initialLoading=!1}loadScene(t,e=this.settings.api){return new Promise((r,n)=>{(!t||typeof t!="string")&&n(`Expected non-empty string sceneId parameter instead got: "${t}"`);let s;try{s=Fp({...e,sdkVersion:No.version})}catch(o){n(o)}return this.loader.once("assets-loaded",r),Dp(t,s).then(o=>{var a;Gp(this.fpeId);let h=(a=o.metadata)==null?void 0:a.postalAddress;return h!=null&&h.latitude&&(this.location.latitude=h.latitude,this.location.longitude=h.longitude),this.scene.loadSceneStructure(o.structure,{planRotation:this.settings.planRotation})}).catch(o=>{const a=typeof o=="string"?o:o&&o.message;n(a)})}).catch(r=>{throw Xp(this.fpeId,r),r})}getSpaces(){let t=go({scene:this.scene});this.resources.spaces=t.map(e=>{let r=e.interiors;return delete e.interiors,id({...e,assets:r.map(n=>n.id)})})}set(t={}){var e,r,n,s,o,a,h;const l=(e=this.settings.hideElements)==null?void 0:e.includes("interior");let u=Pe(t);u.theme&&(u.theme=Kn(Yt.theme,u.theme)),u.ui&&(u.ui={...Yt.ui,...u.ui}),u.api&&(u.api={...Yt.api,...u.api}),u.units&&(u.units={...Yt.units,...u.units});const f=!((r=u.hideElements)!=null&&r.includes("interior"));for(let p in u)this.settings[p]=u[p];if((o=(s=(n=this.settings.theme)==null?void 0:n.elements)==null?void 0:s.space)!=null&&o.program){const p=this.settings.theme.elements.space.program,d={wash:"care",operate:"support",common:"socialize"};Object.keys(p).forEach(v=>{Object.keys(d).includes(v)&&(p[d[v]]=p[v],delete p[v])})}this.scene&&this.scene.node&&(l&&f&&Mo(this),(a=u.theme)!=null&&a.wallContours&&!((h=this.computed.wallContours)!=null&&h.length)&&(this.computed.wallContours=Vr(this.scene)),this.scene.node.ry!==u.planRotation&&Number.isFinite(u.planRotation)&&(this.scene.node.set({ry:u.planRotation}),this.computed.wallContours&&(this.computed.wallContours=Vr(this.scene))),this.getSpaces()),this.emit("update-settings",this.settings)}getResourcesFromPosition(t){const e=this.resources.spaces.filter(n=>Fe(t,n.polygons[0],n.polygons.slice(1))),r=[];return e.forEach(n=>{let s=this.resources.assets.filter(o=>n.assets.includes(o.id)).filter(o=>{var a;if(!((a=this.resources.products[o.productId])!=null&&a.isCeilingLamp&&!this.settings.showCeilingLamps)&&!(!o.polygon||!o.polygon.length))return Fe(t,o.polygon)});r.push(...s)}),{spaces:e,assets:r}}getElementBoundingBox(t,e=0){if(!t)return;let r,n;if(t instanceof mi?n=t.getWorldPosition():typeof t=="string"&&(r=this.scene.nodesById[t].find({id:t}),n=r&&r.getWorldPosition()),!n)return;let s;if(n.type==="interior"&&n.src){let a=fe(n),h=this.resources.productBoundingBoxes[a]||this.resources.productContours[a];s=h&&At(n,h[0])}else n.type==="polyfloor"?s=At(n,n.polygon):n.type!=="group"?s=zr(n):s=[[n.x-2,n.z-2],[n.x+2,n.z-2],[n.x+2,n.z+2],[n.x-2,n.z+2]];const o=ki([s]);return{x:o.x-e,z:o.z-e,x2:o.x2+e,z2:o.z2+e,length:o.length+e*2,width:o.width+e*2}}destroy(){delete this.scene,delete this.resources,delete this.settings,delete this.utils}};let Fo=No;Fo.version="4.4.1";const Ro=(i,t,e=.15)=>{let r,n,s;for(const o of t)if(r=Math.abs(i[0]-o[0]),!(r>e)&&(n=Math.abs(i[1]-o[1]),r<e&&n<e)){s=o;break}return s};function ad(i,t,e){const r=new MutationObserver(()=>{function n(s){return s.parentNode===t?!1:s.parentNode===null?!0:n(s.parentNode)}n(i)&&(r.disconnect(),e())});r.observe(t,{childList:!0,subtree:!0})}function hd(i,t,e){let{x:r,z:n,x2:s,z2:o,length:a,width:h}=i;const l=t/e;if(a/h>l){const u=h;h=a/l;const f=(u-h)/2;n+=f,o-=f}else{const u=a;a=h*l;const f=(u-a)/2;r+=f,s-=f}return{x:r,x2:s,z:n,z2:o,length:a,width:h}}function ld(i,t){var e,r;if(Gi(i.usage)==="void")return[];let{showUsage:n,showArea:s,roomStampDisplay:o}=((e=t.theme.elements)==null?void 0:e.roomStamp)||{};const a=t.spaceLabelMapping||{};let h;a[i.usage]!==void 0&&(h=a[i.usage]),a[i.id]!==void 0&&(h=a[i.id]);let l;switch(t.units.roomDimensions){case"area":l=Jn(i.area,t.units.system,t.units.areaDecimals);break;case"boundingBox":const{length:p,width:d}=i.boundingBox;l=`${We(p,t.units.system,t.units.lengthDecimals)} x ${We(d,t.units.system,t.units.lengthDecimals)}`;break;default:l="";break}let u=i.usageName;if(!u&&i.usage!=="undefined"&&(u=hh(i.usage||"")),h!==void 0&&(typeof h!="string"?console.warn("space label mapping has to be a string"):h.length>50?console.warn("space label mapping has to be less than 50 characters"):u=h),!o){const p=((r=t.theme.elements)==null?void 0:r.roomStamp)!==!1,d=n!==void 0||s!==void 0;o=[],p&&d?(n&&o.push("usage"),s&&o.push("area")):p&&o.push("usage","area")}const f=[];return o.forEach(p=>{var d,v;switch(p){case"name":(d=i.node)!=null&&d.name&&f.push(i.node.name);break;case"customId":(v=i.node)!=null&&v.customId&&f.push(i.node.customId);break;case"usage":f.push(u);break;case"area":f.push(l);break}}),f}function Do(i,t=0){return({door:31,window:31,column:30,wall:30,closet:20,railing:20,curtain:20,kitchen:20,group:12,box:11,polybox:11,interior:10,"a:helper:spaceDivider":5,stairs:5,floor:1,polyfloor:1,floorplan:0,floorplanDxf:0}[i]||0)+t}/*!
|
|
35
35
|
* @pixi/extensions - v6.5.9
|
|
36
36
|
* Compiled Wed, 25 Jan 2023 05:01:45 UTC
|
|
37
37
|
*
|