/* eslint-disable */ (function(){function l(a,b,c){e.biginteger_used=1;null!=a&&("number"==typeof a&&"undefined"==typeof b?this.fromInt(a):"number"==typeof a?this.fromNumber(a,b,c):null==b&&"string"!=typeof a?this.fromString(a,256):this.fromString(a,b))}function r(){return new l(null,void 0,void 0)}function Y(a,b,c,d,f,g){for(;0<=--g;){var h=b*this[a++]+c[d]+f;f=Math.floor(h/67108864);c[d++]=h&67108863}return f}function Z(a,b,c,d,f,g){var h=b&32767;for(b>>=15;0<=--g;){var k=this[a]&32767,m=this[a++]>>15,q=b*k+m*h;k=h* k+((q&32767)<<15)+c[d]+(f&1073741823);f=(k>>>30)+(q>>>15)+b*m+(f>>>30);c[d++]=k&1073741823}return f}function aa(a,b,c,d,f,g){var h=b&16383;for(b>>=14;0<=--g;){var k=this[a]&16383,m=this[a++]>>14,q=b*k+m*h;k=h*k+((q&16383)<<14)+c[d]+f;f=(k>>28)+(q>>14)+b*m;c[d++]=k&268435455}return f}function T(a,b){var c=J[a.charCodeAt(b)];return null==c?-1:c}function A(a){var b=r();b.fromInt(a);return b}function K(a){var b=1,c;0!=(c=a>>>16)&&(a=c,b+=16);0!=(c=a>>8)&&(a=c,b+=8);0!=(c=a>>4)&&(a=c,b+=4);0!=(c=a>>2)&& (a=c,b+=2);0!=a>>1&&(b+=1);return b}function C(a){this.m=a}function D(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<=z;++z)J[v++]=z;v=97;for(z= 10;36>z;++z)J[v++]=z;v=65;for(z=10;36>z;++z)J[v++]=z;C.prototype.convert=function(a){return 0>a.s||0<=a.compareTo(this.m)?a.mod(this.m):a};C.prototype.revert=function(a){return a};C.prototype.reduce=function(a){a.divRemTo(this.m,null,a)};C.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};C.prototype.sqrTo=function(a,b){a.squareTo(b);this.reduce(b)};D.prototype.convert=function(a){var b=r();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);0>a.s&&0>15)*this.mpl&this.um)<<15)&a.DM;c=b+this.m.t;for(a[c]+=this.m.am(0,d,a,b,0,this.m.t);a[c]>=a.DV;)a[c]-=a.DV,a[++c]++}a.clamp();a.drShiftTo(this.m.t,a);0<=a.compareTo(this.m)&&a.subTo(this.m,a)};D.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};D.prototype.sqrTo= function(a,b){a.squareTo(b);this.reduce(b)};l.prototype.copyTo=function(a){for(var b=this.t-1;0<=b;--b)a[b]=this[b];a.t=this.t;a.s=this.s};l.prototype.fromInt=function(a){this.t=1;this.s=0>a?-1:0;0a?this[0]=a+this.DV:this.t=0};l.prototype.fromString=function(a,b){if(16==b)var c=4;else if(8==b)c=3;else if(256==b)c=8;else if(2==b)c=1;else if(32==b)c=5;else if(4==b)c=2;else{this.fromRadix(a,b);return}this.s=this.t=0;for(var d=a.length,f=!1,g=0;0<=--d;){var h=8==c?a[d]&255:T(a,d);0>h? "-"==a.charAt(d)&&(f=!0):(f=!1,0==g?this[this.t++]=h:g+c>this.DB?(this[this.t-1]|=(h&(1<>this.DB-g):this[this.t-1]|=h<=this.DB&&(g-=this.DB))}8==c&&0!=(a[0]&128)&&(this.s=-1,0>d|h,h=(this[k]&f)<=this.t)b.t=0;else{var d=a%this.DB, f=this.DB-d,g=(1<>d;for(var h=c+1;h>d;0>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d-=a.s}b.s=0>d?-1:0;-1>d?b[c++]=this.DV+d:0=b.DV&&(a[c+b.t]-=b.DV,a[c+b.t+1]=1)}0=d.t)){var f=this.abs();if(f.t>this.F2:0),q=this.FV/m;m=(1<h&&l.ZERO.subTo(c,c)}}}};l.prototype.invDigit=function(){if(1>this.t)return 0;var a=this[0];if(0==(a&1))return 0;var b=a&3;b=b*(2-(a&15)*b)&15;b=b*(2-(a&255)*b)&255;b=b*(2-((a&65535)*b&65535))&65535;b=b*(2-a*b%this.DV)%this.DV;return 0a)return l.ONE;var c=r(),d=r(),f=b.convert(this),g=K(a)-1;for(f.copyTo(c);0<=--g;)if(b.sqrTo(c,d),0<(a&1<this.s)return"-"+this.negate().toString(a);if(16==a)a=4;else if(8==a)a=3;else if(2==a)a=1;else if(32==a)a=5;else if(4==a)a=2;else return this.toRadix(a);var b=(1<>h)&&(d=!0,f="0123456789abcdefghijklmnopqrstuvwxyz".charAt(c));0<=g;)h>(h+=this.DB-a)):(c=this[g]>>(h-=a)&b,0>=h&&(h+=this.DB,--g)),0this.s?this.negate():this};l.prototype.compareTo=function(a){var b= this.s-a.s;if(0!=b)return b;var c=this.t;b=c-a.t;if(0!=b)return 0>this.s?-b:b;for(;0<=--c;)if(0!=(b=this[c]-a[c]))return b;return 0};l.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+K(this[this.t-1]^this.s&this.DM)};l.prototype.mod=function(a){var b=r();this.abs().divRemTo(a,null,b);0>this.s&&0a||b.isEven()?new C(b):new D(b);return this.exp(a,c)};l.ZERO=A(0);l.ONE=A(1);G.prototype.convert= W;G.prototype.revert=W;G.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c)};G.prototype.sqrTo=function(a,b){a.squareTo(b)};E.prototype.convert=function(a){if(0>a.s||a.t>2*this.m.t)return a.mod(this.m);if(0>a.compareTo(this.m))return a;var b=r();a.copyTo(b);this.reduce(b);return b};E.prototype.revert=function(a){return a};E.prototype.reduce=function(a){a.drShiftTo(this.m.t-1,this.r2);a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m.multiplyLowerTo(this.q3, this.m.t+1,this.r2);0>a.compareTo(this.r2);)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);0<=a.compareTo(this.m);)a.subTo(this.m,a)};E.prototype.mulTo=function(a,b,c){a.multiplyTo(b,c);this.reduce(c)};E.prototype.sqrTo=function(a,b){a.squareTo(b);this.reduce(b)};var y=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311, 313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],da=67108864/y[y.length-1];l.prototype.chunkSize=function(a){return Math.floor(Math.LN2* this.DB/Math.log(a))};l.prototype.toRadix=function(a){null==a&&(a=10);if(0==this.signum()||2>a||36m?"-"==a.charAt(k)&&0==this.signum()&& (f=!0):(h=b*h+m,++g>=c&&(this.dMultiply(d),this.dAddOffset(h,0),h=g=0))}0a)this.fromInt(1);else for(this.fromNumber(a,c),this.testBit(a-1)||this.bitwiseTo(l.ONE.shiftLeft(a-1),O,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(b);)this.dAddOffset(2,0),this.bitLength()>a&&this.subTo(l.ONE.shiftLeft(a-1),this);else{c=[];var d=a&7;c.length= (a>>3)+1;b.nextBytes(c);c[0]=0>=this.DB;if(a.t>=this.DB;d+=this.s}else{for(d+=this.s;c>=this.DB;d+=a.s}b.s=0>d?-1:0;0d&&(b[c++]=this.DV+d);b.t=c;b.clamp()};l.prototype.dMultiply=function(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()};l.prototype.dAddOffset=function(a,b){if(0!=a){for(;this.t<=b;)this[this.t++]=0;for(this[b]+=a;this[b]>=this.DV;)this[b]-= this.DV,++b>=this.t&&(this[this.t++]=0),++this[b]}};l.prototype.multiplyLowerTo=function(a,b,c){var d=Math.min(this.t+a.t,b);c.s=0;for(c.t=d;0=a)return 0;var b=this.DV%a,c=0>this.s?a-1:0;if(0=c)return!1;var d=b.shiftRight(c);a=a+1>>1;a>y.length&&(a=y.length);for(var f=r(),g=0;gthis.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24};l.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<< 16>>16};l.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1};l.prototype.toByteArray=function(){var a=this.t,b=[];b[0]=this.s;var c=this.DB-a*this.DB%8,d,f=0;if(0>c)!=(this.s&this.DM)>>c&&(b[f++]=d|this.s<c?(d=(this[a]&(1<>(c+=this.DB-8)):(d=this[a]>>(c-=8)&255,0>=c&&(c+=this.DB,--a)),0!=(d&128)&&(d|=-256),0==f&&(this.s&128)!=(d&128)&&++f,0this.compareTo(a)?this:a};l.prototype.max=function(a){return 0a?this.rShiftTo(-a,b):this.lShiftTo(a,b);return b};l.prototype.shiftRight=function(a){var b=r();0>a?this.lShiftTo(-a,b):this.rShiftTo(a,b);return b};l.prototype.getLowestSetBit=function(){for(var a=0;a>=16,c+=16);0==(a&255)&&(a>>=8,c+=8);0==(a&15)&&(a>>=4,c+=4);0==(a&3)&&(a>>=2,c+=2);0==(a&1)&&++c;a=c}return b+ a}return 0>this.s?this.t*this.DB:-1};l.prototype.bitCount=function(){for(var a=0,b=this.s&this.DM,c=0;c=this.t?0!=this.s:0!=(this[b]&1<=c)return d;var f=18> c?1:48>c?3:144>c?4:768>c?5:6;var g=8>c?new C(b):b.isEven()?new E(b):new D(b);var h=[],k=3,m=f-1,q=(1<=m)var w=a[p]>>c-m&q;else w=(a[p]&(1<>this.DB+c-m);for(k=f;0==(w&1);)w>>=1,--k;0>(c-=k)&&(c+=this.DB,--p);if(n)h[w].copyTo(d),n=!1;else{for(;1--c&&(c=this.DB-1,--p)}return g.revert(d)};l.prototype.modInverse=function(a){var b=a.isEven();if(this.isEven()&&b||0==a.signum())return l.ZERO;for(var c=a.clone(),d=this.clone(),f=A(1),g=A(0),h=A(0),k=A(1);0!=c.signum();){for(;c.isEven();)c.rShiftTo(1,c),b?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(a,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(a,g),g.rShiftTo(1,g);for(;d.isEven();)d.rShiftTo(1,d),b?(h.isEven()&&k.isEven()||(h.addTo(this, h),k.subTo(a,k)),h.rShiftTo(1,h)):k.isEven()||k.subTo(a,k),k.rShiftTo(1,k);0<=c.compareTo(d)?(c.subTo(d,c),b&&f.subTo(h,f),g.subTo(k,g)):(d.subTo(c,d),b&&h.subTo(f,h),k.subTo(g,k))}if(0!=d.compareTo(l.ONE))return l.ZERO;if(0<=k.compareTo(a))return k.subtract(a);if(0>k.signum())k.addTo(a,k);else return k;return 0>k.signum()?k.add(a):k};l.prototype.pow=function(a){return this.exp(a,new G)};l.prototype.gcd=function(a){var b=0>this.s?this.negate():this.clone();a=0>a.s?a.negate():a.clone();if(0>b.compareTo(a)){var c= b;b=a;a=c}c=b.getLowestSetBit();var d=a.getLowestSetBit();if(0>d)return b;c a.compareTo(b)?!0:!1};l.op_Addition=function(a,b){return(new l(a,void 0,void 0)).add(new l(b,void 0,void 0))};l.op_Subtraction=function(a,b){return(new l(a,void 0,void 0)).subtract(new l(b,void 0,void 0))};l.Int128Mul=function(a,b){return(new l(a,void 0,void 0)).multiply(new l(b,void 0,void 0))};l.op_Division=function(a,b){return a.divide(b)};l.prototype.ToDouble=function(){return parseFloat(this.toString())};v=function(a,b){var c;if("undefined"===typeof Object.getOwnPropertyNames)for(c in b.prototype){if("undefined"=== typeof a.prototype[c]||a.prototype[c]===Object.prototype[c])a.prototype[c]=b.prototype[c]}else for(var d=Object.getOwnPropertyNames(b.prototype),f=0;fa||2147483647a?Math.ceil(a):Math.floor(a):~~a}:Q&&"function"===typeof Number.toInteger?function(a){return Number.toInteger(a)}:ca||S?function(a){return parseInt(a,10)}:u?function(a){return-2147483648>a||2147483647a?Math.ceil(a):Math.floor(a):a|0}:function(a){return 0>a?Math.ceil(a): Math.floor(a)};e.Clear=function(a){a.length=0};e.PI=3.141592653589793;e.PI2=6.283185307179586;e.IntPoint=function(){var a=arguments,b=a.length;this.Y=this.X=0;e.use_xyz?(this.Z=0,3===b?(this.X=a[0],this.Y=a[1],this.Z=a[2]):2===b?(this.X=a[0],this.Y=a[1],this.Z=0):1===b?a[0]instanceof e.DoublePoint?(a=a[0],this.X=e.Clipper.Round(a.X),this.Y=e.Clipper.Round(a.Y),this.Z=0):(a=a[0],"undefined"===typeof a.Z&&(a.Z=0),this.X=a.X,this.Y=a.Y,this.Z=a.Z):this.Z=this.Y=this.X=0):2===b?(this.X=a[0],this.Y=a[1]): 1===b?a[0]instanceof e.DoublePoint?(a=a[0],this.X=e.Clipper.Round(a.X),this.Y=e.Clipper.Round(a.Y)):(a=a[0],this.X=a.X,this.Y=a.Y):this.Y=this.X=0};e.IntPoint.op_Equality=function(a,b){return a.X===b.X&&a.Y===b.Y};e.IntPoint.op_Inequality=function(a,b){return a.X!==b.X||a.Y!==b.Y};e.IntPoint0=function(){this.Y=this.X=0;e.use_xyz&&(this.Z=0)};e.IntPoint0.prototype=e.IntPoint.prototype;e.IntPoint1=function(a){this.X=a.X;this.Y=a.Y;e.use_xyz&&(this.Z="undefined"===typeof a.Z?0:a.Z)};e.IntPoint1.prototype= e.IntPoint.prototype;e.IntPoint1dp=function(a){this.X=e.Clipper.Round(a.X);this.Y=e.Clipper.Round(a.Y);e.use_xyz&&(this.Z=0)};e.IntPoint1dp.prototype=e.IntPoint.prototype;e.IntPoint2=function(a,b,c){this.X=a;this.Y=b;e.use_xyz&&(this.Z="undefined"===typeof c?0:c)};e.IntPoint2.prototype=e.IntPoint.prototype;e.IntRect=function(){var a=arguments,b=a.length;4===b?(this.left=a[0],this.top=a[1],this.right=a[2],this.bottom=a[3]):1===b?(a=a[0],this.left=a.left,this.top=a.top,this.right=a.right,this.bottom= a.bottom):this.bottom=this.right=this.top=this.left=0};e.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};e.IntRect0.prototype=e.IntRect.prototype;e.IntRect1=function(a){this.left=a.left;this.top=a.top;this.right=a.right;this.bottom=a.bottom};e.IntRect1.prototype=e.IntRect.prototype;e.IntRect4=function(a,b,c,d){this.left=a;this.top=b;this.right=c;this.bottom=d};e.IntRect4.prototype=e.IntRect.prototype;e.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3};e.PolyType={ptSubject:0, ptClip:1};e.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};e.JoinType={jtSquare:0,jtRound:1,jtMiter:2};e.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};e.EdgeSide={esLeft:0,esRight:1};e.Direction={dRightToLeft:0,dLeftToRight:1};e.TEdge=function(){this.Bot=new e.IntPoint0;this.Curr=new e.IntPoint0;this.Top=new e.IntPoint0;this.Delta=new e.IntPoint0;this.Dx=0;this.PolyTyp=e.PolyType.ptSubject;this.Side=e.EdgeSide.esLeft;this.OutIdx=this.WindCnt2= this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null};e.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new e.IntPoint0};e.MyIntersectNodeSort=function(){};e.MyIntersectNodeSort.Compare=function(a,b){var c=b.Pt.Y-a.Pt.Y;return 0c?-1:0};e.LocalMinima=function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};e.Scanbeam=function(){this.Y=0;this.Next=null};e.Maxima=function(){this.X=0;this.Prev=this.Next= null};e.OutRec=function(){this.Idx=0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};e.OutPt=function(){this.Idx=0;this.Pt=new e.IntPoint0;this.Prev=this.Next=null};e.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new e.IntPoint0};e.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null;this.m_edges=[];this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1;this.m_ActiveEdges=this.m_PolyOuts=this.m_Scanbeam=null};e.ClipperBase.horizontal= -9007199254740992;e.ClipperBase.Skip=-2;e.ClipperBase.Unassigned=-1;e.ClipperBase.tolerance=1E-20;e.ClipperBase.loRange=47453132;e.ClipperBase.hiRange=0xfffffffffffff;e.ClipperBase.near_zero=function(a){return a>-e.ClipperBase.tolerance&&ab.X===a.Xb.Y===a.Yb.X===a.Xb.Y===a.Ye.ClipperBase.hiRange||a.Y>e.ClipperBase.hiRange||-a.X>e.ClipperBase.hiRange||-a.Y>e.ClipperBase.hiRange)&&e.Error("Coordinate outside allowed range in RangeTest().");else if(a.X>e.ClipperBase.loRange||a.Y>e.ClipperBase.loRange||-a.X>e.ClipperBase.loRange||-a.Y>e.ClipperBase.loRange)b.Value=!0,this.RangeTest(a, b)};e.ClipperBase.prototype.InitEdge=function(a,b,c,d){a.Next=b;a.Prev=c;a.Curr.X=d.X;a.Curr.Y=d.Y;e.use_xyz&&(a.Curr.Z=d.Z);a.OutIdx=-1};e.ClipperBase.prototype.InitEdge2=function(a,b){a.Curr.Y>=a.Next.Curr.Y?(a.Bot.X=a.Curr.X,a.Bot.Y=a.Curr.Y,e.use_xyz&&(a.Bot.Z=a.Curr.Z),a.Top.X=a.Next.Curr.X,a.Top.Y=a.Next.Curr.Y,e.use_xyz&&(a.Top.Z=a.Next.Curr.Z)):(a.Top.X=a.Curr.X,a.Top.Y=a.Curr.Y,e.use_xyz&&(a.Top.Z=a.Curr.Z),a.Bot.X=a.Next.Curr.X,a.Bot.Y=a.Next.Curr.Y,e.use_xyz&&(a.Bot.Z=a.Next.Curr.Z));this.SetDx(a); a.PolyTyp=b};e.ClipperBase.prototype.FindNextLocMin=function(a){for(var b;;){for(;e.IntPoint.op_Inequality(a.Bot,a.Prev.Bot)||e.IntPoint.op_Equality(a.Curr,a.Top);)a=a.Next;if(a.Dx!==e.ClipperBase.horizontal&&a.Prev.Dx!==e.ClipperBase.horizontal)break;for(;a.Prev.Dx===e.ClipperBase.horizontal;)a=a.Prev;for(b=a;a.Dx===e.ClipperBase.horizontal;)a=a.Next;if(a.Top.Y!==a.Prev.Bot.Y){b.Prev.Bot.Xc.Next.Top.X&&(c=d.Prev)}for(;a!==c;)a.NextInLML=a.Next,a.Dx===e.ClipperBase.horizontal&&a!==f&&a.Bot.X!==a.Prev.Top.X&&this.ReverseHorizontal(a),a=a.Next;a.Dx===e.ClipperBase.horizontal&& a!==f&&a.Bot.X!==a.Prev.Top.X&&this.ReverseHorizontal(a);c=c.Next}else{for(;c.Top.Y===c.Prev.Bot.Y&&c.Prev.OutIdx!==e.ClipperBase.Skip;)c=c.Prev;if(c.Dx===e.ClipperBase.horizontal&&c.Prev.OutIdx!==e.ClipperBase.Skip){for(d=c;d.Next.Dx===e.ClipperBase.horizontal;)d=d.Next;if(d.Next.Top.X===c.Prev.Top.X||d.Next.Top.X>c.Prev.Top.X)c=d.Next}for(;a!==c;)a.NextInLML=a.Prev,a.Dx===e.ClipperBase.horizontal&&a!==f&&a.Bot.X!==a.Next.Top.X&&this.ReverseHorizontal(a),a=a.Prev;a.Dx===e.ClipperBase.horizontal&& a!==f&&a.Bot.X!==a.Next.Top.X&&this.ReverseHorizontal(a);c=c.Prev}return c};e.ClipperBase.prototype.AddPath=function(a,b,c){e.use_lines?c||b!==e.PolyType.ptClip||e.Error("AddPath: Open paths must be subject."):c||e.Error("AddPath: Open paths have been disabled.");var d=a.length-1;if(c)for(;0d||!c&&1>d)return!1;for(var f=[],g=0;g<=d;g++)f.push(new e.TEdge);var h=!0;f[1].Curr.X=a[1].X;f[1].Curr.Y=a[1].Y; e.use_xyz&&(f[1].Curr.Z=a[1].Z);var k={Value:this.m_UseFullRange};this.RangeTest(a[0],k);this.m_UseFullRange=k.Value;k.Value=this.m_UseFullRange;this.RangeTest(a[d],k);this.m_UseFullRange=k.Value;this.InitEdge(f[0],f[1],f[d],a[0]);this.InitEdge(f[d],f[0],f[d-1],a[d]);for(g=d-1;1<=g;--g)k.Value=this.m_UseFullRange,this.RangeTest(a[g],k),this.m_UseFullRange=k.Value,this.InitEdge(f[g],f[g+1],f[g-1],a[g]);for(g=a=d=f[0];;)if(a.Curr!==a.Next.Curr||!c&&a.Next===d){if(a.Prev===a.Next)break;else if(c&&e.ClipperBase.SlopesEqual4(a.Prev.Curr, a.Curr,a.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr,a.Curr,a.Next.Curr))){a===d&&(d=a.Next);a=this.RemoveEdge(a);g=a=a.Prev;continue}a=a.Next;if(a===g||!c&&a.Next===d)break}else{if(a===a.Next)break;a===d&&(d=a.Next);g=a=this.RemoveEdge(a)}if(!c&&a===a.Next||c&&a.Prev===a.Next)return!1;c||(this.m_HasOpenPaths=!0,d.Prev.OutIdx=e.ClipperBase.Skip);a=d;do this.InitEdge2(a,b),a=a.Next,h&&a.Curr.Y!==d.Curr.Y&&(h=!1);while(a!==d);if(h){if(c)return!1; a.Prev.OutIdx=e.ClipperBase.Skip;b=new e.LocalMinima;b.Next=null;b.Y=a.Bot.Y;b.LeftBound=null;b.RightBound=a;b.RightBound.Side=e.EdgeSide.esRight;for(b.RightBound.WindDelta=0;;){a.Bot.X!==a.Prev.Top.X&&this.ReverseHorizontal(a);if(a.Next.OutIdx===e.ClipperBase.Skip)break;a=a.NextInLML=a.Next}this.InsertLocalMinima(b);this.m_edges.push(f);return!0}this.m_edges.push(f);h=null;e.IntPoint.op_Equality(a.Prev.Bot,a.Prev.Top)&&(a=a.Next);for(;;){a=this.FindNextLocMin(a);if(a===h)break;else null===h&&(h= a);b=new e.LocalMinima;b.Next=null;b.Y=a.Bot.Y;a.Dxa.X===b.Xa.Y===b.Y=this.m_MinimaList.Y)a.Next=this.m_MinimaList,this.m_MinimaList=a;else{for(var b=this.m_MinimaList;null!==b.Next&&a.Ythis.m_Scanbeam.Y){var b=new e.Scanbeam;b.Y=a;b.Next= this.m_Scanbeam;this.m_Scanbeam=b}else{for(b=this.m_Scanbeam;null!==b.Next&&a<=b.Next.Y;)b=b.Next;if(a!==b.Y){var c=new e.Scanbeam;c.Y=a;c.Next=b.Next;b.Next=c}}};e.ClipperBase.prototype.PopScanbeam=function(a){if(null===this.m_Scanbeam)return a.v=0,!1;a.v=this.m_Scanbeam.Y;this.m_Scanbeam=this.m_Scanbeam.Next;return!0};e.ClipperBase.prototype.LocalMinimaPending=function(){return null!==this.m_CurrentLM};e.ClipperBase.prototype.CreateOutRec=function(){var a=new e.OutRec;a.Idx=e.ClipperBase.Unassigned; a.IsHole=!1;a.IsOpen=!1;a.FirstLeft=null;a.Pts=null;a.BottomPt=null;a.PolyNode=null;this.m_PolyOuts.push(a);a.Idx=this.m_PolyOuts.length-1;return a};e.ClipperBase.prototype.DisposeOutRec=function(a){this.m_PolyOuts[a].Pts=null;this.m_PolyOuts[a]=null};e.ClipperBase.prototype.UpdateEdgeIntoAEL=function(a){null===a.NextInLML&&e.Error("UpdateEdgeIntoAEL: invalid call");var b=a.PrevInAEL,c=a.NextInAEL;a.NextInLML.OutIdx=a.OutIdx;null!==b?b.NextInAEL=a.NextInLML:this.m_ActiveEdges=a.NextInLML;null!==c&& (c.PrevInAEL=a.NextInLML);a.NextInLML.Side=a.Side;a.NextInLML.WindDelta=a.WindDelta;a.NextInLML.WindCnt=a.WindCnt;a.NextInLML.WindCnt2=a.WindCnt2;a=a.NextInLML;a.Curr.X=a.Bot.X;a.Curr.Y=a.Bot.Y;a.PrevInAEL=b;a.NextInAEL=c;e.ClipperBase.IsHorizontal(a)||this.InsertScanbeam(a.Top.Y);return a};e.ClipperBase.prototype.SwapPositionsInAEL=function(a,b){if(a.NextInAEL!==a.PrevInAEL&&b.NextInAEL!==b.PrevInAEL){if(a.NextInAEL===b){var c=b.NextInAEL;null!==c&&(c.PrevInAEL=a);var d=a.PrevInAEL;null!==d&&(d.NextInAEL= b);b.PrevInAEL=d;b.NextInAEL=a;a.PrevInAEL=b;a.NextInAEL=c}else b.NextInAEL===a?(c=a.NextInAEL,null!==c&&(c.PrevInAEL=b),d=b.PrevInAEL,null!==d&&(d.NextInAEL=a),a.PrevInAEL=d,a.NextInAEL=b,b.PrevInAEL=a,b.NextInAEL=c):(c=a.NextInAEL,d=a.PrevInAEL,a.NextInAEL=b.NextInAEL,null!==a.NextInAEL&&(a.NextInAEL.PrevInAEL=a),a.PrevInAEL=b.PrevInAEL,null!==a.PrevInAEL&&(a.PrevInAEL.NextInAEL=a),b.NextInAEL=c,null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=b),b.PrevInAEL=d,null!==b.PrevInAEL&&(b.PrevInAEL.NextInAEL= b));null===a.PrevInAEL?this.m_ActiveEdges=a:null===b.PrevInAEL&&(this.m_ActiveEdges=b)}};e.ClipperBase.prototype.DeleteFromAEL=function(a){var b=a.PrevInAEL,c=a.NextInAEL;if(null!==b||null!==c||a===this.m_ActiveEdges)null!==b?b.NextInAEL=c:this.m_ActiveEdges=c,null!==c&&(c.PrevInAEL=b),a.NextInAEL=null,a.PrevInAEL=null};e.Clipper=function(a){"undefined"===typeof a&&(a=0);this.m_PolyOuts=null;this.m_ClipType=e.ClipType.ctIntersection;this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges= this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null;this.m_ExecuteLocked=!1;this.m_SubjFillType=this.m_ClipFillType=e.PolyFillType.pftEvenOdd;this.m_GhostJoins=this.m_Joins=null;this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1;e.ClipperBase.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null;this.m_IntersectList=[];this.m_IntersectNodeComparer=e.MyIntersectNodeSort.Compare;this.m_UsingPolyTree=this.m_ExecuteLocked=!1;this.m_PolyOuts=[];this.m_Joins= [];this.m_GhostJoins=[];this.ReverseSolution=0!==(1&a);this.StrictlySimple=0!==(2&a);this.PreserveCollinear=0!==(4&a);e.use_xyz&&(this.ZFillFunction=null)};e.Clipper.ioReverseSolution=1;e.Clipper.ioStrictlySimple=2;e.Clipper.ioPreserveCollinear=4;e.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),e.ClipperBase.prototype.Clear.call(this))};e.Clipper.prototype.InsertMaxima=function(a){var b=new e.Maxima;b.X=a;if(null===this.m_Maxima)this.m_Maxima=b,this.m_Maxima.Next= null,this.m_Maxima.Prev=null;else if(a=c.Next.X;)c=c.Next;a!==c.X&&(b.Next=c.Next,b.Prev=c,null!==c.Next&&(c.Next.Prev=b),c.Next=b)}};e.Clipper.prototype.Execute=function(){var a=arguments,b=a.length,c=a[1]instanceof e.PolyTree;if(4!==b||c){if(4===b&&c){b=a[0];var d=a[1];c=a[2];a=a[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=c;this.m_ClipFillType=a;this.m_ClipType= b;this.m_UsingPolyTree=!0;try{(f=this.ExecuteInternal())&&this.BuildResult2(d)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return f}if(2===b&&!c||2===b&&c)return b=a[0],d=a[1],this.Execute(b,d,e.PolyFillType.pftEvenOdd,e.PolyFillType.pftEvenOdd)}else{b=a[0];d=a[1];c=a[2];a=a[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&e.Error("Error: PolyTree struct is needed for open path clipping.");this.m_ExecuteLocked=!0;e.Clear(d);this.m_SubjFillType=c;this.m_ClipFillType=a;this.m_ClipType= b;this.m_UsingPolyTree=!1;try{var f=this.ExecuteInternal();f&&this.BuildResult(d)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return f}};e.Clipper.prototype.FixHoleLinkage=function(a){if(null!==a.FirstLeft&&(a.IsHole===a.FirstLeft.IsHole||null===a.FirstLeft.Pts)){for(var b=a.FirstLeft;null!==b&&(b.IsHole===a.IsHole||null===b.Pts);)b=b.FirstLeft;a.FirstLeft=b}};e.Clipper.prototype.ExecuteInternal=function(){try{this.Reset();this.m_Maxima=this.m_SortedEdges=null;var a={},b={};if(!this.PopScanbeam(a))return!1; for(this.InsertLocalMinimaIntoAEL(a.v);this.PopScanbeam(b)||this.LocalMinimaPending();){this.ProcessHorizontals();this.m_GhostJoins.length=0;if(!this.ProcessIntersections(b.v))return!1;this.ProcessEdgesAtTopOfScanbeam(b.v);a.v=b.v;this.InsertLocalMinimaIntoAEL(a.v)}var c;var d=0;for(c=this.m_PolyOuts.length;da.Top.Y?b.Top.Xe.Clipper.TopX(b,a.Top.Y):b.Curr.Xa.WindCnt2}case e.ClipType.ctUnion:switch(c){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===a.WindCnt2;case e.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}case e.ClipType.ctDifference:if(a.PolyTyp=== e.PolyType.ptSubject)switch(c){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===a.WindCnt2;case e.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}else switch(c){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0!==a.WindCnt2;case e.PolyFillType.pftPositive:return 0a.WindCnt2}case e.ClipType.ctXor:if(0===a.WindDelta)switch(c){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===a.WindCnt2; case e.PolyFillType.pftPositive:return 0>=a.WindCnt2;default:return 0<=a.WindCnt2}}return!0};e.Clipper.prototype.SetWindingCount=function(a){for(var b=a.PrevInAEL;null!==b&&(b.PolyTyp!==a.PolyTyp||0===b.WindDelta);)b=b.PrevInAEL;if(null===b)b=a.PolyTyp===e.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType,a.WindCnt=0===a.WindDelta?b===e.PolyFillType.pftNegative?-1:1:a.WindDelta,a.WindCnt2=0,b=this.m_ActiveEdges;else{if(0===a.WindDelta&&this.m_ClipType!==e.ClipType.ctUnion)a.WindCnt=1;else if(this.IsEvenOddFillType(a))if(0=== a.WindDelta){for(var c=!0,d=b.PrevInAEL;null!==d;)d.PolyTyp===b.PolyTyp&&0!==d.WindDelta&&(c=!c),d=d.PrevInAEL;a.WindCnt=c?0:1}else a.WindCnt=a.WindDelta;else a.WindCnt=0>b.WindCnt*b.WindDelta?1b.WindDelta*a.WindDelta?b.WindCnt:b.WindCnt+a.WindDelta:0===a.WindDelta?1:a.WindDelta:0===a.WindDelta?0>b.WindCnt?b.WindCnt-1:b.WindCnt+1:0>b.WindDelta*a.WindDelta?b.WindCnt:b.WindCnt+a.WindDelta;a.WindCnt2=b.WindCnt2;b=b.NextInAEL}if(this.IsEvenOddAltFillType(a))for(;b!==a;)0!==b.WindDelta&& (a.WindCnt2=0===a.WindCnt2?1:0),b=b.NextInAEL;else for(;b!==a;)a.WindCnt2+=b.WindDelta,b=b.NextInAEL};e.Clipper.prototype.AddEdgeToSEL=function(a){null===this.m_SortedEdges?(this.m_SortedEdges=a,a.PrevInSEL=null,a.NextInSEL=null):(a.NextInSEL=this.m_SortedEdges,a.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=a)};e.Clipper.prototype.PopEdgeFromSEL=function(a){a.v=this.m_SortedEdges;if(null===a.v)return!1;var b=a.v;this.m_SortedEdges=a.v.NextInSEL;null!==this.m_SortedEdges&&(this.m_SortedEdges.PrevInSEL= null);b.NextInSEL=null;b.PrevInSEL=null;return!0};e.Clipper.prototype.CopyAELToSEL=function(){var a=this.m_ActiveEdges;for(this.m_SortedEdges=a;null!==a;)a.PrevInSEL=a.PrevInAEL,a=a.NextInSEL=a.NextInAEL};e.Clipper.prototype.SwapPositionsInSEL=function(a,b){if(null!==a.NextInSEL||null!==a.PrevInSEL)if(null!==b.NextInSEL||null!==b.PrevInSEL){if(a.NextInSEL===b){var c=b.NextInSEL;null!==c&&(c.PrevInSEL=a);var d=a.PrevInSEL;null!==d&&(d.NextInSEL=b);b.PrevInSEL=d;b.NextInSEL=a;a.PrevInSEL=b;a.NextInSEL= c}else b.NextInSEL===a?(c=a.NextInSEL,null!==c&&(c.PrevInSEL=b),d=b.PrevInSEL,null!==d&&(d.NextInSEL=a),a.PrevInSEL=d,a.NextInSEL=b,b.PrevInSEL=a,b.NextInSEL=c):(c=a.NextInSEL,d=a.PrevInSEL,a.NextInSEL=b.NextInSEL,null!==a.NextInSEL&&(a.NextInSEL.PrevInSEL=a),a.PrevInSEL=b.PrevInSEL,null!==a.PrevInSEL&&(a.PrevInSEL.NextInSEL=a),b.NextInSEL=c,null!==b.NextInSEL&&(b.NextInSEL.PrevInSEL=b),b.PrevInSEL=d,null!==b.PrevInSEL&&(b.PrevInSEL.NextInSEL=b));null===a.PrevInSEL?this.m_SortedEdges=a:null===b.PrevInSEL&& (this.m_SortedEdges=b)}};e.Clipper.prototype.AddLocalMaxPoly=function(a,b,c){this.AddOutPt(a,c);0===b.WindDelta&&this.AddOutPt(b,c);a.OutIdx===b.OutIdx?(a.OutIdx=-1,b.OutIdx=-1):a.OutIdxb.Dx){var d=this.AddOutPt(a,c);b.OutIdx=a.OutIdx;a.Side=e.EdgeSide.esLeft;b.Side=e.EdgeSide.esRight;var f=a;a=f.PrevInAEL===b?b.PrevInAEL:f.PrevInAEL}else d=this.AddOutPt(b, c),a.OutIdx=b.OutIdx,a.Side=e.EdgeSide.esRight,b.Side=e.EdgeSide.esLeft,f=b,a=f.PrevInAEL===a?a.PrevInAEL:f.PrevInAEL;if(null!==a&&0<=a.OutIdx&&a.Top.Ya.OutIdx){var c=this.CreateOutRec(); c.IsOpen=0===a.WindDelta;var d=new e.OutPt;c.Pts=d;d.Idx=c.Idx;d.Pt.X=b.X;d.Pt.Y=b.Y;e.use_xyz&&(d.Pt.Z=b.Z);d.Next=d;d.Prev=d;c.IsOpen||this.SetHoleState(a,c);a.OutIdx=c.Idx}else{c=this.m_PolyOuts[a.OutIdx];var f=c.Pts,g=a.Side===e.EdgeSide.esLeft;if(g&&e.IntPoint.op_Equality(b,f.Pt))return f;if(!g&&e.IntPoint.op_Equality(b,f.Prev.Pt))return f.Prev;d=new e.OutPt;d.Idx=c.Idx;d.Pt.X=b.X;d.Pt.Y=b.Y;e.use_xyz&&(d.Pt.Z=b.Z);d.Next=f;d.Prev=f.Prev;d.Prev.Next=d;f.Prev=d;g&&(c.Pts=d)}return d};e.Clipper.prototype.GetLastOutPt= function(a){var b=this.m_PolyOuts[a.OutIdx];return a.Side===e.EdgeSide.esLeft?b.Pts:b.Pts.Prev};e.Clipper.prototype.SwapPoints=function(a,b){var c=new e.IntPoint1(a.Value);a.Value.X=b.Value.X;a.Value.Y=b.Value.Y;e.use_xyz&&(a.Value.Z=b.Value.Z);b.Value.X=c.X;b.Value.Y=c.Y;e.use_xyz&&(b.Value.Z=c.Z)};e.Clipper.prototype.HorzSegmentsOverlap=function(a,b,c,d){if(a>b){var f=a;a=b;b=f}c>d&&(f=c,c=d,d=f);return a=g&&d>=c||f>=g&&f>=c};e.Clipper.prototype.GetBottomPt=function(a){for(var b=null,c=a.Next;c!==a;)c.Pt.Y>a.Pt.Y?(a=c,b=null):c.Pt.Y===a.Pt.Y&&c.Pt.X<=a.Pt.X&& (c.Pt.Xd.Pt.Y?a:c.Pt.Yd.Pt.X?b:c.Next===c?b:d.Next===d?a:this.FirstIsBottomPt(c, d)?a:b};e.Clipper.prototype.OutRec1RightOfOutRec2=function(a,b){do if(a=a.FirstLeft,a===b)return!0;while(null!==a);return!1};e.Clipper.prototype.GetOutRec=function(a){for(a=this.m_PolyOuts[a];a!==this.m_PolyOuts[a.Idx];)a=this.m_PolyOuts[a.Idx];return a};e.Clipper.prototype.AppendPolygon=function(a,b){var c=this.m_PolyOuts[a.OutIdx],d=this.m_PolyOuts[b.OutIdx];var f=this.OutRec1RightOfOutRec2(c,d)?d:this.OutRec1RightOfOutRec2(d,c)?c:this.GetLowermostRec(c,d);var g=c.Pts,h=g.Prev,k=d.Pts,m=k.Prev; a.Side===e.EdgeSide.esLeft?b.Side===e.EdgeSide.esLeft?(this.ReversePolyPtLinks(k),k.Next=g,g.Prev=k,h.Next=m,m.Prev=h,c.Pts=m):(m.Next=g,g.Prev=m,k.Prev=h,h.Next=k,c.Pts=k):b.Side===e.EdgeSide.esRight?(this.ReversePolyPtLinks(k),h.Next=m,m.Prev=h,k.Next=g,g.Prev=k):(h.Next=k,k.Prev=h,g.Prev=m,m.Next=g);c.BottomPt=null;f===d&&(d.FirstLeft!==c&&(c.FirstLeft=d.FirstLeft),c.IsHole=d.IsHole);d.Pts=null;d.BottomPt=null;d.FirstLeft=c;f=a.OutIdx;g=b.OutIdx;a.OutIdx=-1;b.OutIdx=-1;for(h=this.m_ActiveEdges;null!== h;){if(h.OutIdx===g){h.OutIdx=f;h.Side=a.Side;break}h=h.NextInAEL}d.Idx=c.Idx};e.Clipper.prototype.ReversePolyPtLinks=function(a){if(null!==a){var b=a;do{var c=b.Next;b.Next=b.Prev;b=b.Prev=c}while(b!==a)}};e.Clipper.SwapSides=function(a,b){var c=a.Side;a.Side=b.Side;b.Side=c};e.Clipper.SwapPolyIndexes=function(a,b){var c=a.OutIdx;a.OutIdx=b.OutIdx;b.OutIdx=c};e.Clipper.prototype.IntersectEdges=function(a,b,c){var d=0<=a.OutIdx,f=0<=b.OutIdx;e.use_xyz&&this.SetZ(c,a,b);if(!e.use_lines||0!==a.WindDelta&& 0!==b.WindDelta){if(a.PolyTyp===b.PolyTyp)if(this.IsEvenOddFillType(a)){var g=a.WindCnt;a.WindCnt=b.WindCnt;b.WindCnt=g}else a.WindCnt=0===a.WindCnt+b.WindDelta?-a.WindCnt:a.WindCnt+b.WindDelta,b.WindCnt=0===b.WindCnt-a.WindDelta?-b.WindCnt:b.WindCnt-a.WindDelta;else this.IsEvenOddFillType(b)?a.WindCnt2=0===a.WindCnt2?1:0:a.WindCnt2+=b.WindDelta,this.IsEvenOddFillType(a)?b.WindCnt2=0===b.WindCnt2?1:0:b.WindCnt2-=a.WindDelta;if(a.PolyTyp===e.PolyType.ptSubject){var h=this.m_SubjFillType;var k=this.m_ClipFillType}else h= this.m_ClipFillType,k=this.m_SubjFillType;if(b.PolyTyp===e.PolyType.ptSubject){var m=this.m_SubjFillType;g=this.m_ClipFillType}else m=this.m_ClipFillType,g=this.m_SubjFillType;switch(h){case e.PolyFillType.pftPositive:h=a.WindCnt;break;case e.PolyFillType.pftNegative:h=-a.WindCnt;break;default:h=Math.abs(a.WindCnt)}switch(m){case e.PolyFillType.pftPositive:m=b.WindCnt;break;case e.PolyFillType.pftNegative:m=-b.WindCnt;break;default:m=Math.abs(b.WindCnt)}if(d&&f)0!==h&&1!==h||0!==m&&1!==m||a.PolyTyp!== b.PolyTyp&&this.m_ClipType!==e.ClipType.ctXor?this.AddLocalMaxPoly(a,b,c):(this.AddOutPt(a,c),this.AddOutPt(b,c),e.Clipper.SwapSides(a,b),e.Clipper.SwapPolyIndexes(a,b));else if(d){if(0===m||1===m)this.AddOutPt(a,c),e.Clipper.SwapSides(a,b),e.Clipper.SwapPolyIndexes(a,b)}else if(f){if(0===h||1===h)this.AddOutPt(b,c),e.Clipper.SwapSides(a,b),e.Clipper.SwapPolyIndexes(a,b)}else if(!(0!==h&&1!==h||0!==m&&1!==m)){switch(k){case e.PolyFillType.pftPositive:d=a.WindCnt2;break;case e.PolyFillType.pftNegative:d= -a.WindCnt2;break;default:d=Math.abs(a.WindCnt2)}switch(g){case e.PolyFillType.pftPositive:f=b.WindCnt2;break;case e.PolyFillType.pftNegative:f=-b.WindCnt2;break;default:f=Math.abs(b.WindCnt2)}if(a.PolyTyp!==b.PolyTyp)this.AddLocalMinPoly(a,b,c);else if(1===h&&1===m)switch(this.m_ClipType){case e.ClipType.ctIntersection:0=d&&0>=f&&this.AddLocalMinPoly(a,b,c);break;case e.ClipType.ctDifference:(a.PolyTyp===e.PolyType.ptClip&&0=d&&0>=f)&&this.AddLocalMinPoly(a,b,c);break;case e.ClipType.ctXor:this.AddLocalMinPoly(a,b,c)}else e.Clipper.SwapSides(a,b)}}else if(0!==a.WindDelta||0!==b.WindDelta)a.PolyTyp===b.PolyTyp&&a.WindDelta!==b.WindDelta&&this.m_ClipType===e.ClipType.ctUnion?0===a.WindDelta?f&&(this.AddOutPt(a,c),d&&(a.OutIdx=-1)):d&&(this.AddOutPt(b,c),f&&(b.OutIdx=-1)):a.PolyTyp!==b.PolyTyp&&(0!==a.WindDelta||1!==Math.abs(b.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!== b.WindCnt2?0!==b.WindDelta||1!==Math.abs(a.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!==a.WindCnt2||(this.AddOutPt(b,c),f&&(b.OutIdx=-1)):(this.AddOutPt(a,c),d&&(a.OutIdx=-1)))};e.Clipper.prototype.DeleteFromSEL=function(a){var b=a.PrevInSEL,c=a.NextInSEL;if(null!==b||null!==c||a===this.m_SortedEdges)null!==b?b.NextInSEL=c:this.m_SortedEdges=c,null!==c&&(c.PrevInSEL=b),a.NextInSEL=null,a.PrevInSEL=null};e.Clipper.prototype.ProcessHorizontals=function(){for(var a={};this.PopEdgeFromSEL(a);)this.ProcessHorizontal(a.v)}; e.Clipper.prototype.GetHorzDirection=function(a,b){a.Bot.X=g.Top.X&&(k=null)}else{for(;null!==k.Next&&k.Next.Xp.Curr.X;)0<=a.OutIdx&&!f&&this.AddOutPt(a,new e.IntPoint2(k.X, a.Bot.Y)),k=k.Prev;if(c===e.Direction.dLeftToRight&&p.Curr.X>b||c===e.Direction.dRightToLeft&&p.Curr.Xc.Top.Y&& e.ClipperBase.SlopesEqual3(a,c,this.m_UseFullRange)?(t=this.AddOutPt(c,a.Bot),this.AddJoin(m,t,a.Top)):null!==n&&n.Curr.X===a.Bot.X&&n.Curr.Y===a.Bot.Y&&0!==n.WindDelta&&0<=n.OutIdx&&n.Curr.Y>n.Top.Y&&e.ClipperBase.SlopesEqual3(a,n,this.m_UseFullRange)&&(t=this.AddOutPt(n,a.Bot),this.AddJoin(m,t,a.Top)))):this.UpdateEdgeIntoAEL(a):(0<=a.OutIdx&&this.AddOutPt(a,a.Top),this.DeleteFromAEL(a))};e.Clipper.prototype.GetNextInAEL=function(a,b){return b===e.Direction.dLeftToRight?a.NextInAEL:a.PrevInAEL}; e.Clipper.prototype.IsMinima=function(a){return null!==a&&a.Prev.NextInLML!==a&&a.Next.NextInLML!==a};e.Clipper.prototype.IsMaxima=function(a,b){return null!==a&&a.Top.Y===b&&null===a.NextInLML};e.Clipper.prototype.IsIntermediate=function(a,b){return a.Top.Y===b&&null!==a.NextInLML};e.Clipper.prototype.GetMaximaPair=function(a){return e.IntPoint.op_Equality(a.Next.Top,a.Top)&&null===a.Next.NextInLML?a.Next:e.IntPoint.op_Equality(a.Prev.Top,a.Top)&&null===a.Prev.NextInLML?a.Prev:null};e.Clipper.prototype.GetMaximaPairEx= function(a){a=this.GetMaximaPair(a);return null===a||a.OutIdx===e.ClipperBase.Skip||a.NextInAEL===a.PrevInAEL&&!e.ClipperBase.IsHorizontal(a)?null:a};e.Clipper.prototype.ProcessIntersections=function(a){if(null===this.m_ActiveEdges)return!0;try{this.BuildIntersectList(a);if(0===this.m_IntersectList.length)return!0;if(1===this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch(b){this.m_SortedEdges=null,this.m_IntersectList.length=0,e.Error("ProcessIntersections error")}this.m_SortedEdges= null;return!0};e.Clipper.prototype.BuildIntersectList=function(a){if(null!==this.m_ActiveEdges){var b=this.m_ActiveEdges;for(this.m_SortedEdges=b;null!==b;)b.PrevInSEL=b.PrevInAEL,b.NextInSEL=b.NextInAEL,b.Curr.X=e.Clipper.TopX(b,a),b=b.NextInAEL;for(var c=!0;c&&null!==this.m_SortedEdges;){c=!1;for(b=this.m_SortedEdges;null!==b.NextInSEL;){var d=b.NextInSEL,f=new e.IntPoint0;b.Curr.X>d.Curr.X?(this.IntersectPoint(b,d,f),f.Ya?Math.ceil(a-.5):Math.round(a)};Q=function(a){return 0>a?Math.ceil(a-.5):Math.floor(a+.5)};R=function(a){return 0>a?-Math.round(Math.abs(a)):Math.round(a)};S=function(a){if(0>a)return a-=.5,-2147483648>a?Math.ceil(a):a|0;a+=.5;return 2147483647b.Top.Y)return c.Y=a.Top.Y,c.X=e.Clipper.TopX(b,a.Top.Y),c.Xa.Curr.Y&&(c.Y=a.Curr.Y,c.X=Math.abs(a.Dx)>Math.abs(b.Dx)?e.Clipper.TopX(b,c.Y):e.Clipper.TopX(a,c.Y))}};e.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(a){for(var b=this.m_ActiveEdges;null!==b;){var c=this.IsMaxima(b, a);c&&(c=this.GetMaximaPairEx(b),c=null===c||!e.ClipperBase.IsHorizontal(c));if(c){this.StrictlySimple&&this.InsertMaxima(b.Top.X);var d=b.PrevInAEL;this.DoMaxima(b);b=null===d?this.m_ActiveEdges:d.NextInAEL}else{this.IsIntermediate(b,a)&&e.ClipperBase.IsHorizontal(b.NextInLML)?(b=this.UpdateEdgeIntoAEL(b),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),this.AddEdgeToSEL(b)):(b.Curr.X=e.Clipper.TopX(b,a),b.Curr.Y=a);e.use_xyz&&(b.Curr.Z=b.Top.Y===a?b.Top.Z:b.Bot.Y===a?b.Bot.Z:0);if(this.StrictlySimple&&(d=b.PrevInAEL, 0<=b.OutIdx&&0!==b.WindDelta&&null!==d&&0<=d.OutIdx&&d.Curr.X===b.Curr.X&&0!==d.WindDelta)){var f=new e.IntPoint1(b.Curr);e.use_xyz&&this.SetZ(f,d,b);c=this.AddOutPt(d,f);d=this.AddOutPt(b,f);this.AddJoin(c,d,f)}b=b.NextInAEL}}this.ProcessHorizontals();this.m_Maxima=null;for(b=this.m_ActiveEdges;null!==b;)this.IsIntermediate(b,a)&&(c=null,0<=b.OutIdx&&(c=this.AddOutPt(b,b.Top)),b=this.UpdateEdgeIntoAEL(b),d=b.PrevInAEL,f=b.NextInAEL,null!==d&&d.Curr.X===b.Bot.X&&d.Curr.Y===b.Bot.Y&&null!==c&&0<=d.OutIdx&& d.Curr.Y===d.Top.Y&&e.ClipperBase.SlopesEqual5(b.Curr,b.Top,d.Curr,d.Top,this.m_UseFullRange)&&0!==b.WindDelta&&0!==d.WindDelta?(d=this.AddOutPt(ePrev2,b.Bot),this.AddJoin(c,d,b.Top)):null!==f&&f.Curr.X===b.Bot.X&&f.Curr.Y===b.Bot.Y&&null!==c&&0<=f.OutIdx&&f.Curr.Y===f.Top.Y&&e.ClipperBase.SlopesEqual5(b.Curr,b.Top,f.Curr,f.Top,this.m_UseFullRange)&&0!==b.WindDelta&&0!==f.WindDelta&&(d=this.AddOutPt(f,b.Bot),this.AddJoin(c,d,b.Top))),b=b.NextInAEL};e.Clipper.prototype.DoMaxima=function(a){var b=this.GetMaximaPairEx(a); if(null===b)0<=a.OutIdx&&this.AddOutPt(a,a.Top),this.DeleteFromAEL(a);else{for(var c=a.NextInAEL;null!==c&&c!==b;)this.IntersectEdges(a,c,a.Top),this.SwapPositionsInAEL(a,c),c=a.NextInAEL;-1===a.OutIdx&&-1===b.OutIdx?(this.DeleteFromAEL(a),this.DeleteFromAEL(b)):0<=a.OutIdx&&0<=b.OutIdx?(0<=a.OutIdx&&this.AddLocalMaxPoly(a,b,a.Top),this.DeleteFromAEL(a),this.DeleteFromAEL(b)):e.use_lines&&0===a.WindDelta?(0<=a.OutIdx&&(this.AddOutPt(a,a.Top),a.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(a), 0<=b.OutIdx&&(this.AddOutPt(b,a.Top),b.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(b)):e.Error("DoMaxima error")}};e.Clipper.ReversePaths=function(a){for(var b=0,c=a.length;bf)){for(var g=Array(f),h=0;hf||!d.IsOpen&&3>f)){this.FixHoleLinkage(d);var g=new e.PolyNode;a.m_AllPolys.push(g);d.PolyNode=g;g.m_polygon.length=f;d=d.Pts.Prev;for(var h=0;h b.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight;d=c.Pt.X>d.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight;if(h===d)return!1;if(h===e.Direction.dLeftToRight){for(;a.Next.Pt.X<=f.X&&a.Next.Pt.X>=a.Pt.X&&a.Next.Pt.Y===f.Y;)a=a.Next;g&&a.Pt.X!==f.X&&(a=a.Next);b=this.DupOutPt(a,!g);e.IntPoint.op_Inequality(b.Pt,f)&&(a=b,a.Pt.X=f.X,a.Pt.Y=f.Y,e.use_xyz&&(a.Pt.Z=f.Z),b=this.DupOutPt(a,!g))}else{for(;a.Next.Pt.X>=f.X&&a.Next.Pt.X<=a.Pt.X&&a.Next.Pt.Y===f.Y;)a=a.Next;g||a.Pt.X===f.X||(a= a.Next);b=this.DupOutPt(a,g);e.IntPoint.op_Inequality(b.Pt,f)&&(a=b,a.Pt.X=f.X,a.Pt.Y=f.Y,e.use_xyz&&(a.Pt.Z=f.Z),b=this.DupOutPt(a,g))}if(d===e.Direction.dLeftToRight){for(;c.Next.Pt.X<=f.X&&c.Next.Pt.X>=c.Pt.X&&c.Next.Pt.Y===f.Y;)c=c.Next;g&&c.Pt.X!==f.X&&(c=c.Next);d=this.DupOutPt(c,!g);e.IntPoint.op_Inequality(d.Pt,f)&&(c=d,c.Pt.X=f.X,c.Pt.Y=f.Y,e.use_xyz&&(c.Pt.Z=f.Z),d=this.DupOutPt(c,!g))}else{for(;c.Next.Pt.X>=f.X&&c.Next.Pt.X<=c.Pt.X&&c.Next.Pt.Y===f.Y;)c=c.Next;g||c.Pt.X===f.X||(c=c.Next); d=this.DupOutPt(c,g);e.IntPoint.op_Inequality(d.Pt,f)&&(c=d,c.Pt.X=f.X,c.Pt.Y=f.Y,e.use_xyz&&(c.Pt.Z=f.Z),d=this.DupOutPt(c,g))}h===e.Direction.dLeftToRight===g?(a.Prev=c,c.Next=a,b.Next=d,d.Prev=b):(a.Next=c,c.Prev=a,b.Prev=d,d.Next=b);return!0};e.Clipper.prototype.JoinPoints=function(a,b,c){var d=a.OutPt1,f;new e.OutPt;var g=a.OutPt2,h;new e.OutPt;if((h=a.OutPt1.Pt.Y===a.OffPt.Y)&&e.IntPoint.op_Equality(a.OffPt,a.OutPt1.Pt)&&e.IntPoint.op_Equality(a.OffPt,a.OutPt2.Pt)){if(b!==c)return!1;for(f=a.OutPt1.Next;f!== d&&e.IntPoint.op_Equality(f.Pt,a.OffPt);)f=f.Next;f=f.Pt.Y>a.OffPt.Y;for(h=a.OutPt2.Next;h!==g&&e.IntPoint.op_Equality(h.Pt,a.OffPt);)h=h.Next;if(f===h.Pt.Y>a.OffPt.Y)return!1;f?(f=this.DupOutPt(d,!1),h=this.DupOutPt(g,!0),d.Prev=g,g.Next=d,f.Next=h,h.Prev=f):(f=this.DupOutPt(d,!0),h=this.DupOutPt(g,!1),d.Next=g,g.Prev=d,f.Prev=h,h.Next=f);a.OutPt1=d;a.OutPt2=f;return!0}if(h){for(f=d;d.Prev.Pt.Y===d.Pt.Y&&d.Prev!==f&&d.Prev!==g;)d=d.Prev;for(;f.Next.Pt.Y===f.Pt.Y&&f.Next!==d&&f.Next!==g;)f=f.Next; if(f.Next===d||f.Next===g)return!1;for(h=g;g.Prev.Pt.Y===g.Pt.Y&&g.Prev!==h&&g.Prev!==f;)g=g.Prev;for(;h.Next.Pt.Y===h.Pt.Y&&h.Next!==g&&h.Next!==d;)h=h.Next;if(h.Next===g||h.Next===d)return!1;c={Left:null,Right:null};if(!this.GetOverlap(d.Pt.X,f.Pt.X,g.Pt.X,h.Pt.X,c))return!1;b=c.Left;var k=c.Right;c=new e.IntPoint0;d.Pt.X>=b&&d.Pt.X<=k?(c.X=d.Pt.X,c.Y=d.Pt.Y,e.use_xyz&&(c.Z=d.Pt.Z),b=d.Pt.X>f.Pt.X):g.Pt.X>=b&&g.Pt.X<=k?(c.X=g.Pt.X,c.Y=g.Pt.Y,e.use_xyz&&(c.Z=g.Pt.Z),b=g.Pt.X>h.Pt.X):f.Pt.X>=b&&f.Pt.X<= k?(c.X=f.Pt.X,c.Y=f.Pt.Y,e.use_xyz&&(c.Z=f.Pt.Z),b=f.Pt.X>d.Pt.X):(c.X=h.Pt.X,c.Y=h.Pt.Y,e.use_xyz&&(c.Z=h.Pt.Z),b=h.Pt.X>g.Pt.X);a.OutPt1=d;a.OutPt2=g;return this.JoinHorz(d,f,g,h,c,b)}for(f=d.Next;e.IntPoint.op_Equality(f.Pt,d.Pt)&&f!==d;)f=f.Next;if(k=f.Pt.Y>d.Pt.Y||!e.ClipperBase.SlopesEqual4(d.Pt,f.Pt,a.OffPt,this.m_UseFullRange)){for(f=d.Prev;e.IntPoint.op_Equality(f.Pt,d.Pt)&&f!==d;)f=f.Prev;if(f.Pt.Y>d.Pt.Y||!e.ClipperBase.SlopesEqual4(d.Pt,f.Pt,a.OffPt,this.m_UseFullRange))return!1}for(h= g.Next;e.IntPoint.op_Equality(h.Pt,g.Pt)&&h!==g;)h=h.Next;var m=h.Pt.Y>g.Pt.Y||!e.ClipperBase.SlopesEqual4(g.Pt,h.Pt,a.OffPt,this.m_UseFullRange);if(m){for(h=g.Prev;e.IntPoint.op_Equality(h.Pt,g.Pt)&&h!==g;)h=h.Prev;if(h.Pt.Y>g.Pt.Y||!e.ClipperBase.SlopesEqual4(g.Pt,h.Pt,a.OffPt,this.m_UseFullRange))return!1}if(f===d||h===g||f===h||b===c&&k===m)return!1;k?(f=this.DupOutPt(d,!1),h=this.DupOutPt(g,!0),d.Prev=g,g.Next=d,f.Next=h,h.Prev=f):(f=this.DupOutPt(d,!0),h=this.DupOutPt(g,!1),d.Next=g,g.Prev= d,f.Prev=h,h.Next=f);a.OutPt1=d;a.OutPt2=f;return!0};e.Clipper.GetBounds=function(a){for(var b=0,c=a.length;bd.right&&(d.right=a[b][f].X),a[b][f].Yd.bottom&&(d.bottom=a[b][f].Y);return d};e.Clipper.prototype.GetBounds2=function(a){var b= a,c=new e.IntRect;c.left=a.Pt.X;c.right=a.Pt.X;c.top=a.Pt.Y;c.bottom=a.Pt.Y;for(a=a.Next;a!==b;)a.Pt.Xc.right&&(c.right=a.Pt.X),a.Pt.Yc.bottom&&(c.bottom=a.Pt.Y),a=a.Next;return c};e.Clipper.PointInPolygon=function(a,b){var c=0,d=b.length;if(3>d)return 0;for(var f=b[0],g=1;g<=d;++g){var h=g===d?b[0]:b[g];if(h.Y===a.Y&&(h.X===a.X||f.Y===a.Y&&h.X>a.X===f.X=a.X)if(h.X>a.X)c=1-c;else{var k=(f.X-a.X)* (h.Y-a.Y)-(h.X-a.X)*(f.Y-a.Y);if(0===k)return-1;0f.Y&&(c=1-c)}else if(h.X>a.X){k=(f.X-a.X)*(h.Y-a.Y)-(h.X-a.X)*(f.Y-a.Y);if(0===k)return-1;0f.Y&&(c=1-c)}f=h}return c};e.Clipper.prototype.PointInPolygon=function(a,b){var c=0,d=b,f=a.X,g=a.Y,h=b.Pt.X,k=b.Pt.Y;do{b=b.Next;var m=b.Pt.X,q=b.Pt.Y;if(q===g&&(m===f||k===g&&m>f===h=f)if(m>f)c=1-c;else{h=(h-f)*(q-g)-(m-f)*(k-g);if(0===h)return-1;0k&&(c=1-c)}else if(m>f){h=(h-f)*(q-g)-(m-f)*(k-g);if(0=== h)return-1;0k&&(c=1-c)}h=m;k=q}while(d!==b);return c};e.Clipper.prototype.Poly2ContainsPoly1=function(a,b){var c=a;do{var d=this.PointInPolygon(c.Pt,b);if(0<=d)return 0b)return 0;for(var c=0,d=0,f=b-1;dMath.abs(a.Y-b.Y)?a.X>b.X===a.Xa.X===b.Xb.Y===a.Ya.Y===b.Yc&&(c=0);var g=Array(c);for(f=0;fd)){var f=new e.PolyNode;f.m_jointype=b;f.m_endtype=c;if(c===e.EndType.etClosedLine||c===e.EndType.etClosedPolygon)for(;0f.m_polygon[b].Y||a[h].Y===f.m_polygon[b].Y&&a[h].Xg)&&(this.m_polyNodes.AddChild(f),c===e.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest=new e.IntPoint2(this.m_polyNodes.ChildCount()-1,b);else if(a=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],f.m_polygon[b].Y>a.Y||f.m_polygon[b].Y=== a.Y&&f.m_polygon[b].X=this.ArcTolerance?e.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(a)*e.ClipperOffset.def_arc_tolerance?Math.abs(a)*e.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(a));this.m_sin=Math.sin(e.ClipperOffset.two_pi/ d);this.m_cos=Math.cos(e.ClipperOffset.two_pi/d);this.m_StepsPerRad=d/e.ClipperOffset.two_pi;0>a&&(this.m_sin=-this.m_sin);for(b=0;b=a&&(3>f||c.m_endtype!==e.EndType.etClosedPolygon))){this.m_destPoly=[];if(1===f)if(c.m_jointype===e.JoinType.jtRound){c=1;f=0;for(var g=1;g<=d;g++){this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[0].X+c*a), e.ClipperOffset.Round(this.m_srcPoly[0].Y+f*a)));var h=c;c=c*this.m_cos-this.m_sin*f;f=h*this.m_sin+f*this.m_cos}}else for(f=c=-1,g=0;4>g;++g)this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[0].X+c*a),e.ClipperOffset.Round(this.m_srcPoly[0].Y+f*a))),0>c?c=1:0>f?f=1:c=-1;else{for(g=this.m_normals.length=0;gMath.abs(this.m_sinA*this.m_delta)){if(0this.m_sinA&&(this.m_sinA=-1);if(0> this.m_sinA*this.m_delta)this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_normals[b].X*this.m_delta),e.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_normals[b].Y*this.m_delta))),this.m_destPoly.push(new e.IntPoint1(this.m_srcPoly[a])),this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_normals[a].X*this.m_delta),e.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_normals[a].Y*this.m_delta)));else switch(c){case e.JoinType.jtMiter:c= 1+(this.m_normals[a].X*this.m_normals[b].X+this.m_normals[a].Y*this.m_normals[b].Y);c>=this.m_miterLim?this.DoMiter(a,b,c):this.DoSquare(a,b);break;case e.JoinType.jtSquare:this.DoSquare(a,b);break;case e.JoinType.jtRound:this.DoRound(a,b)}return a};e.ClipperOffset.prototype.DoSquare=function(a,b){var c=Math.tan(Math.atan2(this.m_sinA,this.m_normals[b].X*this.m_normals[a].X+this.m_normals[b].Y*this.m_normals[a].Y)/4);this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_delta* (this.m_normals[b].X-this.m_normals[b].Y*c)),e.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_delta*(this.m_normals[b].Y+this.m_normals[b].X*c))));this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[a].X+this.m_delta*(this.m_normals[a].X+this.m_normals[a].Y*c)),e.ClipperOffset.Round(this.m_srcPoly[a].Y+this.m_delta*(this.m_normals[a].Y-this.m_normals[a].X*c))))};e.ClipperOffset.prototype.DoMiter=function(a,b,c){c=this.m_delta/c;this.m_destPoly.push(new e.IntPoint2(e.ClipperOffset.Round(this.m_srcPoly[a].X+ (this.m_normals[b].X+this.m_normals[a].X)*c),e.ClipperOffset.Round(this.m_srcPoly[a].Y+(this.m_normals[b].Y+this.m_normals[a].Y)*c)))};e.ClipperOffset.prototype.DoRound=function(a,b){for(var c=Math.max(e.Cast_Int32(e.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(Math.atan2(this.m_sinA,this.m_normals[b].X*this.m_normals[a].X+this.m_normals[b].Y*this.m_normals[a].Y)))),1),d=this.m_normals[b].X,f=this.m_normals[b].Y,g,h=0;hb)return a;c||(a=[a]);for(var d=a.length,f,g,h,k,m,q,p,n=[],t=0;tf)h=g,n.push(h);else{h=g;k=b*b;m=g[0];for(p=q=1;pb)return e.JS.Clone(a);var c=a[0]instanceof Array;c||(a= [a]);var d,f,g,h=a.length,k=b*b,m=[];for(d=0;dg;g++){var n=[];p=q.length;if(q[p-1].X!==q[0].X||q[p-1].Y!==q[0].Y){var t=1;q.push({X:q[0].X,Y:q[0].Y});p=q.length}else t=0;var w=[];for(f=0;fg)return 0;b&&(a[g]=a[0],g++);for(;--g;){var h=a[g];var k=h.X;h=h.Y;var m=a[g-1];var q=m.X;m=m.Y;f+=d((k-q)*(k-q)+(h-m)*(h-m))}b&&a.pop();return f/ c};e.JS.PerimeterOfPaths=function(a,b,c){c||(c=1);for(var d=0,f=0;f